项目地址:http://github.com/jhao104/proxy_pool
该项目是基于redis的,所以我们首先需要一个redis,这里我还是选择用docker快速启动一个
docker run -d --name redis -p 6380:6379 redis --requirepass yourpassword
docker run -d --name redis redis --requirepass yourpassword
如果你第一步中选择了映射,呢么就可以直接跳到0x03 启动项目 中直接运行了,如果不是,那么你就需要知道启动的实例的内网ip,但是当我们docker exec
进去的时候会发现并没有相关的ip addr
的环境,懒得安装了,直接在本机用如下命令
docker inspect redis
这里的redis是容器的name,在结果中找到如下所示即为容器内网ip(可与本机通信)
本机可以ping通
直接替换密码,ip以及响应的端口即可,选择映射出来的话再开放防火墙策略就可以通过公网ip访问了
docker run -d --env DB_CONN=redis://:yourpassword@172.17.0.2:6379/0 -p 5010:5010 jhao104/proxy_pool:latest
启动web服务后, 默认配置下会开启 http://127.0.0.1:5010 的api接口服务:
api | method | Description | params |
---|---|---|---|
/ | GET | api介绍 | None |
/get | GET | 随机获取一个代理 | 可选参数: ?type=http 过滤支持http的代理 |
/pop | GET | 获取并删除一个代理 | 可选参数: ?type=http 过滤支持http的代理 |
/all | GET | 获取所有代理 | 可选参数: ?type=http 过滤支持http的代理 |
/count | GET | 查看代理数量 | None |
/delete | GET | 删除代理 | ?proxy=host:ip |
如果要在爬虫代码中使用的话, 可以将此api封装成函数直接使用,例如:
import requests
def get_proxy():
return requests.get("http://127.0.0.1:5010/get/").json()
def delete_proxy(proxy):
requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy))
# your spider code
def getHtml():
# ....
retry_count = 5
proxy = get_proxy().get("proxy")
while retry_count > 0:
try:
html = requests.get('http://www.example.com', proxies={"http": "http://{}".format(proxy)})
# 使用代理访问
return html
except Exception:
retry_count -= 1
# 删除代理池中代理
delete_proxy(proxy)
return None
剩下具体的可以去github看文档
后续的话可以使用docker-compose,然后编写yml文件等等操作来实现更“自动化”
预计,到2025年末,新型储能在电力系统中的装机规模达到3000万千瓦以上,有效支撑清洁低碳、安全高效的能源体系建设。“十四五”期间,将继续坚持市场主导、政策驱动,强调统筹规划、多元发展,鼓励创新示范、先行先试,推动新型储能规模化、产业化、市场化发展。我国现有电力系统是基于大型火电、水电、核电等可控电源设计建设的,接受和消纳大规模高比例风电、光伏发电,亟需提高电力系统的灵活性调节能力。图扑软件依托自主研发的HTforWeb引擎,搭建出一套面向大型风力发电机管理的数字孪生系统。涉及风轮、发电机(包括装置)、调向器(尾翼)、塔架、限速安全机构和储能装置等零部件的监控和运行管理。生产监测1-7月份,全国发电设备累计平均利用2132小时,比上年同期减少84小时。其中,火电2476小时,比上年同期减少118小时;核电4340小时,比上年同期减少192小时;风电1304小时,比上年同期减少68小时。风力发电机是将风能转换为机械功,机械功带动转子旋转,最终输出交流电的电力设备。通过图扑软件1:1还原风机的外部结构以及主要部件,并通过对接物理传感器的实时数据,还原风机各个部件的关键数据,构建风电场机组
xss题目一共20题难度也在递增吧写一部分自己的解题过程后面题目厉害了慢慢更新(太菜不会做)题目payload不唯一呦level1没有任何过滤Payload<script>alert("xss")</script>复制level2记得以前xss这里曾请教过国光哥一些姿势先输入<imgsrc=1onerror=alert("xss")>复制查看源码发现value的值里使用了双引号所以想到闭合前面的双引号。Payload"><imgsrc=1onerror=alert("xss")>复制涉及基础img为图片标签src应该填写图片地址如果图片地址不存在就会触发onerror事件弹出xsslevel3试探性输入<imgsrc=1onerror=alert("xss")>复制查看源代码发现两端括号被实体化了换个姿势onclick=alert(1)复制右键源代码发现本身并没有被过滤但是value里面使用了单引号闭合就好Payload‘>o
今天写创建文件夹的时候,怎么创建都不会,反复修改,确定错误是出在了string类型的变量上面。看下面代码 //这个一个函数中的代码,函数参数是stringfileurl_s intlen=fileurl_s.length(); std::stringfileurl_s_cy; for(inti=0;i<len;i++) { fileurl_s_cy[i]=fileurl_s[i]; if(fileurl_s_cy[i]=='/'||fileurl_s_cy[i]=='\\') { if(0!=access(fileurl_s_cy.c_str(),0)) { mkdir(fileurl_s_cy.c_str(),0);//返回0表示创建成功,-1表示失败 } } }复制这个代码实现的功能是创建文件夹,以及子文件夹,根据参数来做,有则略过,无则创建但是我发现根本创建不了文件夹我试着输出循环中的fileurl_s_cy[i],能够正常输出我想要的字符但是当我输出fileurl_s_cy的时候出了问题,fileurl_s_cy至始至终为空,长度
异常dockgeddon导致cpu100%问题描述1,收到钉钉告警,提示机器cpu使用率超过90%image-202104261642041412,然后登录监控找到对应的机器image-20210426164445498确实是CPU使用率到达百分之百了。3,查看容器监控确定是哪个容器产生了问题(因为我这个机器上就运行了docker)image-20210426164645245如果没有容器监控也可以使用dockerstats来检查各个容器的资源消耗情况。4,找到出问题的容器,发现并不是我们业务的容器,于是开始分析分析出问题的docker查看docker的启动命令,发现他启动是执行内部的一个脚本#!/bin/bash RATE_TO_SCAN=500000 iftypeapt-get2>/dev/null1>/dev/null;thenapt-getupdate--fix-missing2>/dev/null1>/dev/null;apt-getinstall-ywgetcurljqbashmasscanlibpcap-dev;fi iftypeyum2>
关注「前端向后」微信公众号,你将收获一系列「用心原创」的高质量技术文章,主题包括但不限于前端、Node.js以及服务端技术写在前面为了解决数据库层的扩展问题,我们已经讨论了两种方案:Replication:从单库扩展到多库,以承载更多的请求量Partitioning:把单库(表)拆分成多库(表),打破单库的性能瓶颈在(多机)多库多表的加持下,激增的请求量、数据量已经不再是难题,然而,除却数据量外,还有一个极其影响单库性能的因素——数据的组织方式例如,在关系型数据库中,数据实体用二维表格(称为实体表)来描述:实体之间的复杂关联关系(多对多)也通过二维表格(称为关系表)来描述: 因而经常需要多表联查才能得到目标信息,关系越复杂,读取性能越差,并最终像数据量一样成为单库性能瓶颈,制约着数据库层的可扩展性 那么,对于关系型数据库,有办法进一步提升数据读取性能吗?有,(在一定程度上)改变数据的组织方式,即反范式化(Denormalization)一.范式化在讨论反范式化之前,有必要先明确什么是范式化,要反的东西是什么?Databasenormalizationistheprocessofstru
ABAP740的新语法:上图的代码相当于:DATA:ls_dataLIKELINEOFit_data. READTABLEit_dataINTOls_dataWITHKEYobject_ext=cl_crm_prodil_bo_names=>gc_prod_root. CALLMETHODadd_data EXPORTING ir_child_object=ir_root_object is_data=ls_data.复制由此可见新语法比较简洁,能少写3行代码。但是这样有一个缺陷,在新语法下如果it_data内表内不存在object_ext的值为cl_crm_prodil_bo_names=>gc_prod_root的记录,就会终止程序执行,抛出异常CX_SY_ITAB_LINE_NOT_FOUND.针对这种情况,ABAP也有对应的解决方案。下图的第17行会抛出异常,而19行不会,从语义上容易理解:如果内表lt_data里不存在name为Spring2的记录,则返回开发者使用DEFAULT关键字指定的一个结构作为默认值。在Java8也有类似机制。为了避免臭名昭著的NullP
疑惑一开发应用主要用什么语言?其实这个问题很多工作的,看到都觉得这个问的有点没有头绪,但是对于初学者来说还是希望更多的了解点这方面的,所谓应用开发就是处于底层语言之上,不同的平台,不同的领域应用级的开发也是很多,目前可能安卓或者ios太火热搞的大家都觉得应用开发都是java似的,在嵌入式领域应用级别的开发很多是c/c++,网页应用开发,所需要的语言就更加多了html,css,JavaScript都有涉及,至于选择什么语言,是由各种条件客观条件决定的,没法一概而论,相对来说用底层语言开发语言,在开发效率上面稍微有点偏低,但是不代表写不了,现在社会效率还是放在第一位,有更快的为啥要选择慢的,当然在不同的环境选择的方式也不尽一样。疑惑二语言学到一半,突然觉得别的语言更加合适,咋办?很多初学者经常犯得的毛病,看到别的小伙伴学别的语言很有劲头,就觉得自己学的不行,这山看着那山高,对于初学者来说选择哪一门语言固然显得很重要,但是既然好不容易学了一段时间了,咬紧牙关学到头,也算是对一种语言有个完整的感知,即时真的学的语言不行了,回过头来学习另外的一种新的语种都会觉得没有初学那么困哪了,即时做不到触类
大家好,又见面了,我是你们的朋友全栈君。后期修图中有一个非常关键而且不可或缺的步骤,那就是磨皮磨皮的方法有很多种但最方便快捷就能达到大片级效果的方法莫过于使用磨皮插件了但是目前市面上磨皮插件众多该如何选择呢?经过多次磨皮效果对比评选出了最方便用户覆盖率最高的磨皮插件Portraiture磨皮插件支持PS2015–2021版本WIN&MAC系统皆可兼容含独家安装教程+使用教程哦Portraiture是一款PS磨皮滤镜,减少了人工选择图像区域的重复劳动。它能智能地对图像中的皮肤材质、头发、眉毛、睫毛等部位进行平滑和减少疵点处理,效果相当优秀;是不是看起来就很好用!01独家安装教程含WIN&MAC版本的教程小白也能轻松完成安装02汉化的使用界面WIN&MAC版本均为汉化版03详细的使用教程以2.0版本为例的教程为中文版以3.0版本为例的教程为英文版下载链接:https://mdl.ink/HNY18g发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162986.html原文链接:https://javaforall.cn
一、查看导致CPU飙升的线程 首先需要定位到是服务里的那些线程导致CPU飙升的。具体查找方法: 1、在服务器上通过jps-l可以查到服务的进程号。 2、查到对应的进程号,通过top-H-p$pid,可以看到具体是哪个线程占用了CPU,记下该线程的id。 二、查看对应线程的java堆栈信息 根据找到的线程,可以去查看对应的java堆栈信息,来进一步定位是哪一段代码出现了问题。 通过jstack-l$pid可以查看java进程的堆栈信息,这里的pid是进程号。 在堆栈信息中nid指的就是线程id,但是这里的线程id是16进制,我们之前获取的线程id是10进制的,需要转换一下,比如我查到线程id是14533,转换后是38c5,所以在jstack-l结果中查看38c5这个线程。 去代码里一看原因其实很简单,多线程环境下使用了非线程安全HashMap,导致了这个问题,但是使用HashMap怎么会跑满CPU呢?去查了一下才知道,HashMap在多线程环境下reHash时,可能会导致死循环,具体的分析这
工具类 packagecom.liunan.okhttpdemo3post.Utils; importjava.io.IOException; importokhttp3.MediaType; importokhttp3.OkHttpClient; importokhttp3.Request; importokhttp3.RequestBody; importokhttp3.Response; importokhttp3.ResponseBody; /** *CreatedbyAdministratoron2016-03-27. */ publicclassHttpUtils{ OkHttpClientclient=newOkHttpClient(); publicstaticfinalMediaTypeJSON =MediaType.parse("application/json;charset=utf-8"); publicStringlogin(Stringurl,Stringjson)throwsIOException{ //把请求的内容
避免出现闪烁 1.控件的使用尽量以纯色为主,尽量不使用背景图,或者把大图改成小图,或者图片不缩放绘制,或者直接用不透明的纯色背景色(Winform控件透明是伪透明,是通过截取父容器背景来实现的,所以效率比较低,而且有时候会有延迟。而且多个透明控件叠加的时候不能分层显示出各个控件的透明效果) 2.自定义控件中使用双缓冲。 3.窗体边框最好不要设置为None,保留窗体最大化最小化动画,可以避免最小化恢复时候的界面闪烁。可能会有人说我的窗体是自定义美化的,边框为None了。其实可以通过拦截消息重绘非客户区,实现边框不为None的时候重绘整个窗体的。 自定义控件开发: 1、控件重绘的时候尽可能的处理e.ClipRectangle,减少不必要的绘图操作; 2、标准重绘都应该在Paint事件里处理,用事件里的e.Graphics。而不是在随便个地方就用CreateGraphics()来绘制 3、需要刷新的时候调用Invalidate()如果能计算重绘区域最好 减少
这是《从产品角度学EXCEL》系列第三篇。 前言请看: 0 为什么要关注EXCEL的本质 1 excel是怎样运作的 或者你可以去微信公众号@尾巴说数获得连载目录。 本文仅由尾巴本人发布于特定网站。不接受任何无授权转载,如需转载,请先联系我,非常感谢。 2EXCEL里的树形结构 这段时间,上海街边的树上陆陆续续长出了嫩芽,放眼望去有各种层次的绿色,格外好看。我们今天的话题,恰好也与树有关。只不过,树都是往天空伸展枝叶的,而我们这里讨论的‘树’,却是由根部出发,逐行逐行往下延展、伸展。 还记得上一个章节里,我们对一个excel文件解压缩后,发现了若干个xml文件吗? xml本质上是一种使用树形结构存储信息的文档。它由一个根节点root开始,逐层逐层长枝节,并给每一层都打了个标签,让xml解析器可以快速定位信息的内容。而每一层以及每一个底部的节点,都是这些信息的一个分类属性。我们了解了它们的属性和层级,也就了解这颗结构树长成什么样子。 正因为xml的结构与层级是如此重要,在进一步讲单元格之前,我们很有必要先剖析看看excelxml树的结构,从大体上再来理解一下excel
前言 本文整理自慕课网《Python开发简单爬虫》,将会记录爬取百度百科“python”词条相关页面的整个过程。 抓取策略 确定目标:确定抓取哪个网站的哪些页面的哪部分数据。本实例抓取百度百科python词条页面以及python相关词条页面的标题和简介。 分析目标:分析要抓取的url的格式,限定抓取范围。分析要抓取的数据的格式,本实例中就要分析标题和简介这两个数据所在的标签的格式。分析要抓取的页面编码的格式,在网页解析器部分,要指定网页编码,然后才能进行正确的解析。 编写代码:在网页解析器部分,要使用到分析目标得到的结果。 执行爬虫:进行数据抓取。 分析目标 1、url格式 进入百度百科python词条页面,页面中相关词条的链接比较统一,大都是/view/xxx.htm。 2、数据格式 标题位于类lemmaWgt-lemmaTitle-title下的h1子标签,简介位于类lemma-summary下。 3、编码格式 查看页面编码格式,为utf-8。 经过以上分析,得到结果如下: 代码编写 项目结构 在sublime下,新建文件夹baike-spider,作为项目根目录。 新
Web服务器的基本操作如图下图所示: 这个系统由两个对象组成:一个Web浏览器和一个Web服务器。它们之间需要通信连接。Web浏览器向服务器发出请求、服务器返回一个响应。这种架构非常适合服务器发布静态页面。而分发一个基于数据库的网站架构则要复杂一些。 一个典型的Web数据库事务包含下列步骤,这些步骤上图已经标出。1)用户的Web浏览器发出HTTP请求,请求特定Web页面。例如,results.php。 2)Web服务器收到results.php的请求,获取该文件,并将它传到PHP引擎,要求它处理。 3)PHP引擎开始解析脚本。脚本中有一条连接数据库的命令,还有执行一个查询的命令。PHP打开通向MySQL数据库的连接,发送适当的查询。 4)MySQL服务器接受数据库查询并处理。将结果返回到PHP引擎。 5)PHP引擎完成脚本运行,通常,这包括将查询结果格式化成HTML格式。然后再将输出的HTML返到Web服务器。 6)Web服务器将HTML发送到浏览器。这样用户就可看到处理结果。 这个过程基本上与脚本引擎和数据库服务器无关。通常,Web服务器软件,PHP引擎和数据库服务器都在同一台机
OPT:Omni-PerceptionPre-TrainerforCross-ModalUnderstandingandGeneration 2021-07-21 20:23:07 Paper: https://arxiv.org/pdf/2107.00249.pdf Code:Notavailableyet 1.BackgroundandModel: 本文提出一种联合三个模态的预训练模型,以取得更好的结果。模型OPT的示意图如下所示,该模型是一个大型语料库上进行学习的,包含了language-vision-audio三元组。可以通过多任务学习的方式进行学习,可以有效地适应到下游任务,给定单个,双流,甚至三个模态的输入。模型包含三个single-modalencoders,across-modalencoder,twocross-modaldecoders. 跨模态理解需要对齐输入,从细粒度符号级别到粗粒度样本级别。工作的方式就是跨模态的翻译,cross-modalge
在上一篇中介绍了在idea中创建springboot工程及使用web工程输出“helloworld”到前端页面,本文学习在springboot工程中读取属性文件中的属性值。 一自定义属性 在application.properties文件中添加属性配置项 myapp.name=helloworld 可以使用@Value注解来读取,在之前的helloworld工程的控制器中添加属性并读取,如下 @RestController publicclassHelloController{ @Value("${myapp.name}") privateStringname; @RequestMapping("/hello") publicStringhello(){ System.out.println("myappname:"+name); return"helloworld"; } }复制 @Value注解会去application.properties文件中配置属性为myapp.name的属性,并将值赋值给name属性。访问hello方法,可以看
文章来源:Slark.NET-博客园http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-httphelper-part1.html 上一节:MVC5+EF6+Bootstrap3(7)Bootstrap的栅格系统 下一节:MVC5+EF6+Bootstrap3(9)HtmlHelper用法大全(下) 源码下载:点我下载 目录: HtmlHelper简介 准备工作 链接 ActionLink链接 RouteLink链接 input控件 TextBox输入框 Hidden隐藏域 Password密码输入框 CheckBox勾选框 RadioButton单选按钮 列表框 DropDownList下拉菜单 ListBox多选框 添加属性 结尾 HtmlHelper简介 在ASP.NETMVC5的View页面中,HtmlHelper被用来输出HTML代码。更官方点的描述,System.Web.Mvc.HtmlHelper对象,该对象用于呈现HTML元素。如下图所示。 HtmlHelper中的每一个