-
爬虫进阶之Scrapy(十) scrapy引擎核心之twisted框架
发布时间:2021-02-18 11:26Scrapy是一个内置使用了Python的Twisted框架的抓取应用。Twisted是事件驱动的,它里面的大部分方法和api都是异步非阻塞的。现在我们抛开scrapy,假设我们自己开发一个爬虫,我们
-
爬虫进阶之Scrapy(九) 使用pybloom布隆过滤器优化scrapy_redis的去重策略
发布时间:2021-02-18 10:08Python实现BloomFilter(布隆过滤器) 有关布隆过滤器的原理和用途,可以看看这篇文章: 深入Redis之 redis布隆过滤器(十一) http
-
爬虫进阶之Scrapy(八) scrapy_redis模块实现分布式爬虫及原理分析
发布时间:2021-02-10 10:49Scrapy分布式爬虫的原理很简单,它依赖于scrapy的一个组件scrapy-redis。大致为: 将scrapy代码部署到多台工作机器(简称为服务器W),将redis服务部署到另一台服务器(
-
Go并发编程系列(八)互斥锁, 读写锁, 条件变量, Waitgroup, Once, 临时对象池Pool和原子操作
发布时间:2021-02-06 09:34一、互斥锁和读写锁关于锁相信大家都很熟悉了,因此这里不再对锁进行过多的描述,只是简单的带过一下。如果读者们想了解互斥锁和读写锁的基本使用和例子,可以看看这篇文章:《Go入门系列(十七) go并发之基于
-
Go并发编程系列(七)channel通道及其原理
发布时间:2021-02-05 13:54在Go语言中,channel通道用于多个goroutine间通信。 有关goroutine和channel的基本概念和使用在本人的《Go入门系列 go并
-
Go并发编程系列(六)go并发机制之goroutine调度和goroutine阻塞
发布时间:2021-02-05 12:07Go调度程序(Go调度器) Go调度器本质上也是一个结构体。Go调度器并不是运行在某个专用内核线程中的程序,调度程序会运行在若干已存在的M(或者说内核线程)之中。换句话说,运行时系统中几乎所有的
-
Go并发编程系列(五) go并发机制之MPG模型
发布时间:2021-02-05 11:17Go并发机制 在操作系统提供的内核线程之上,Go搭建了一个特有的两级线程模型。Go的独立控制流不是内核级线程而是goroutine协程。Go不推荐用共享内存的方式传递数据,而推荐使用channe
-
Go并发编程系列(四) 多线程基本概念与线程模型
发布时间:2021-02-05 09:32多线程 一个进程至少会包含一个线程,因为其中至少会有一个控制流持续运行。因而,一个进程的第一个线程会随着这个进程的启动而创建,这个线程称为该进程的主线程。 当然,一个进程也可以包含多个线程
-
Go并发编程系列(三) 多进程编程与进程同步之Socket编程
发布时间:2021-02-05 08:59socket socket,常译为套接字,也是一种IPC方法。但是与其他IPC方法不同的是,它可以通过网络连接让多个进程建立通信并相互传递数据,这使得通信双方是否在同一台计算机上变得无关紧要。
-
Go并发编程系列(二) 多进程编程与进程同步之Signal信号量
发布时间:2021-02-04 19:46信号 signal操作系统信号(signal,以下简称信号)是IPC中唯一一种异步的通信方法,它的本质是用软件来模拟硬件的中断机制。信号用来通知某个进程有某个事件发生了。例如,在命令行终端按下某些快捷
-
Go并发编程系列(一) 多进程编程与进程同步之Pipe管道
发布时间:2021-02-04 18:43关于多进程和多线程的基本概念以及基本操作本人在以下系列文章已经介绍。 ”浅谈操作系统原理” http://zbpblog.com/blog-175.html“pyth
-
Go入门系列(十九)io编程和文件操作
发布时间:2021-01-18 15:19Go 语言将 I/0 操作封装在以下几个包中。 io :为IO原语提供基本的接口,在 io 包中最重要的是两个接口-一-Reader 和 Writer 接口。本章所提到的各种包,都和这两个接口有
-
Go入门系列(十八) 反射、包和测试工具
发布时间:2021-01-17 13:24反射 reflect 反射在go中是一个包,包名为reflect,其作用是可以查看一个变量的具体类型和值。 反射这个包提供了两种接口类型 Type 和 Value,分别用于记录一
-
Go入门系列(十七) go并发之基于共享变量的并发
发布时间:2021-01-17 00:29上一章介绍了基于channel的并发,这一章介绍基于共享变量的并发。 简介基于共享变量的并发 我们知道如果多个线程或者协程并发的对一个变量进行修改,会出现数据不一致的问
-
Go入门系列(十六) go并发编程之Goroutine与channel(下)
发布时间:2021-01-12 12:07使用select处理多个channel 以一个例子开始。这个例子模拟火箭倒计时发射,并且用户可以在标准输入流终止这个倒计时功能。 // 未加终止功能的火箭发射 func main()