代理的基本原理和多线程的基本原理

简介: 代理的基本原理和多线程的基本原理

爬虫时我们不到一杯茶的功夫就出现了403.打开网页一看会说您的IP访问频率太高,出现这种情况是因为网站采取了一些反爬虫措施,限制某个IP在一定时间内的请求次数,如果超过一定的阈值就直接拒绝提供服务并返回错误信息。我们可以通过伪装IP的方式,让服务器识别不出请求是我们本机发出的。

爬虫代理

使用代理来隐藏真实的IP,让服务器以为是代理服务器在请求自己,这样在爬取过程中不断的更换代理,就可以避免被封禁的情况。
我们通常对代理进行一些分类,可以根据协议来分为FTP代理服务器,主要用于访问FTP服务器,一般有上传,下载,缓存,端口一般为21,2121.
HTTP代理服务器:主要用于访问网页。一般有过滤和缓存,端口一般为80,8080,3128.
SSL/TLS主要用于访问加密网站,一般有SSL加密功能,端口一般为443。等等
根据代理的匿名程度,也可以分为高度匿名代理(会将数据包原封不动的转发,使服务器看来是一个普通的客户端在访问,记录的IP则是代理服务器的IP)普通匿名代理(会对数据包进行一些改动,服务端可能会发现是一个代理的服务器) 透明代理(直接告诉真实IP)间谍代理(由个人或者组织创建代理服务器用于记录用户传送的数据,对其进行记录,研究,监控)

常见代理

最好使用高度匿名代理,使用付费代理更为好用比免费强很多。

并发和并行

处理器同一时刻只能处理一条指令,并发是指对多个线程的指令被快速轮换的执行,例如处理器先执行线程a的指令一段时间,再执行b,再换回a。
并行是指同一时刻有多条指令在多个处理器上执行,这意味者必须有多个处理器。

Python中的多进程和多线程

Python中的GIL 限制导致不论是在单核还是多核条件下同一时刻只能运行一个线程,使得python多线程无法发挥多核并行的优势。GIL为全局解释器锁,在Pyhthon多线程下每个线程被分为三步,获取GIL,执行对应的线程代码,释放。相当于每个GIL就是一个通行证,总体来看Python的多进程会比多线程更有优势。

相关文章
|
3月前
|
安全 Java 数据库
一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这篇文章是关于Java面试题的笔记,涵盖了线程池复用原理、Spring框架基础、AOP和IOC概念、Bean生命周期和作用域、单例Bean的线程安全性、Spring中使用的设计模式、以及Spring事务的实现方式和隔离级别等知识点。
|
3月前
|
编解码 网络协议 API
Netty运行原理问题之Netty的主次Reactor多线程模型工作的问题如何解决
Netty运行原理问题之Netty的主次Reactor多线程模型工作的问题如何解决
|
2月前
|
存储 缓存 Java
什么是线程池?从底层源码入手,深度解析线程池的工作原理
本文从底层源码入手,深度解析ThreadPoolExecutor底层源码,包括其核心字段、内部类和重要方法,另外对Executors工具类下的四种自带线程池源码进行解释。 阅读本文后,可以对线程池的工作原理、七大参数、生命周期、拒绝策略等内容拥有更深入的认识。
138 29
什么是线程池?从底层源码入手,深度解析线程池的工作原理
|
1月前
|
Java 编译器 程序员
【多线程】synchronized原理
【多线程】synchronized原理
59 0
|
1月前
|
Java 应用服务中间件 API
nginx线程池原理
nginx线程池原理
32 0
|
2月前
|
存储 缓存 Java
JAVA并发编程系列(11)线程池底层原理架构剖析
本文详细解析了Java线程池的核心参数及其意义,包括核心线程数量(corePoolSize)、最大线程数量(maximumPoolSize)、线程空闲时间(keepAliveTime)、任务存储队列(workQueue)、线程工厂(threadFactory)及拒绝策略(handler)。此外,还介绍了四种常见的线程池:可缓存线程池(newCachedThreadPool)、定时调度线程池(newScheduledThreadPool)、单线程池(newSingleThreadExecutor)及固定长度线程池(newFixedThreadPool)。
|
3月前
|
存储 NoSQL Java
线程池的原理与C语言实现
【8月更文挑战第22天】线程池是一种多线程处理框架,通过复用预创建的线程来高效地处理大量短暂或临时任务,提升程序性能。它主要包括三部分:线程管理器、工作队列和线程。线程管理器负责创建与管理线程;工作队列存储待处理任务;线程则执行任务。当提交新任务时,线程管理器将其加入队列,并由空闲线程处理。使用线程池能减少线程创建与销毁的开销,提高响应速度,并能有效控制并发线程数量,避免资源竞争。这里还提供了一个简单的 C 语言实现示例。
|
3月前
|
存储 Java
线程池的底层工作原理是什么?
【8月更文挑战第8天】线程池的底层工作原理是什么?
117 8
|
2月前
|
安全 Java API
Java线程池原理与锁机制分析
综上所述,Java线程池和锁机制是并发编程中极其重要的两个部分。线程池主要用于管理线程的生命周期和执行并发任务,而锁机制则用于保障线程安全和防止数据的并发错误。它们深入地结合在一起,成为Java高效并发编程实践中的关键要素。
31 0
|
4月前
|
监控 Java 开发者
深入理解Java并发编程:线程池的原理与实践
【5月更文挑战第85天】 在现代Java应用开发中,高效地处理并发任务是提升性能和响应能力的关键。线程池作为一种管理线程的机制,其合理使用能够显著减少资源消耗并优化系统吞吐量。本文将详细探讨线程池的核心原理,包括其内部工作机制、优势以及如何在Java中正确实现和使用线程池。通过理论分析和实例演示,我们将揭示线程池对提升Java应用性能的重要性,并给出实践中的最佳策略。

热门文章

最新文章