05 requests模块进阶

1. 基于requests模块的代理IP操作 - 爬虫中为什么需要使用代理   一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会会禁止这个IP的访问。所以我们需要设置一些代理IP,每隔一段时间换一个代理IP,就算IP被禁止,依然可以换个IP继续爬取。 - 代理的分类:   正向代理:代理客户端获取数据。正向代理是为了保护客户端防止被追究责任。   反向代理:代理服务器提供数据。反向代理是为了保护服务器或负责负载均
分类: 其他 发布时间: 08-23 20:20 阅读次数: 0

openresty使用http模块

OpenResty默认没有提供Http客户端,需要使用第三方提供的插件 我们可以从github上搜索相应的客户端,比如https://github.com/pintsized/lua-resty-http 安装方法:将 lua-resty-http/lib/resty/ 目录下的 http.lua 和 http_headers.lua 两个文件拷贝到 /usr/local/openresty/lualib/resty 目录下即可 (假设 OpenResty 安装目录为 /usr/
分类: 其他 发布时间: 08-23 20:20 阅读次数: 0

给定数字N,输出小于10^N的所有整数

讲起来比较简单,从0到N遍历输出就行了,但是如果N非常大,就涉及整数溢出问题,很明显是一个全排列问题,也就是输出N,代表N位上所有的数字取值是0-9,做一个全排列,还需要考虑的就是对于0001,0068,0977类似这种前面有0的情况输出的时候需要去除掉。 就是一个基础的递归求全排列问题,当然也可以不用递归用栈来解决,这里给出了一个递归的java版本。 public class Test { public static void recur(int[] arr, int inde
分类: 其他 发布时间: 08-23 20:20 阅读次数: 0

JS中99乘法表

<script> // 打印99乘法表: for (var i = 1; i < 10; i++) { // document.write("第" + i + "次循环应该打印从1到" + i); document.write("</br>"); for (var j = 1; j <= i; j++) { document.write(j + "*" + i + "=" + i * j + "&nbsp;&nbsp;&nbsp;"); } document.write("</br>"); }
分类: 其他 发布时间: 08-23 20:20 阅读次数: 0

python 使用[[v]*n]*m遇到的问题

需求:想通过python生成m行n列的矩阵 方式1:(有问题) data = [[0]*3]*4 #4行3列 data   输出 [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]   修改data[0][0]元素的值 data[0][0] = 1 data   输出 [[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]]   哇,是不是对结果很迷,为啥改变一个值会对列为0的所有元素改变呢? 解析:
分类: 其他 发布时间: 08-23 20:20 阅读次数: 0

C#中的有限状态机

最近在做一些怪物AI,发现之前写的状态机维护性不是很优秀,自己稍微改动了一下 所谓有限状态机就是决定我们游戏对象的当前状态和状态间的切换,状态机最终只能指向一个结果,由这个结果指向这个状态的行为,也就是执行的函数 之前的状态机将所有的状态逻辑写到了状态类中,但是如果新添加逻辑需要回到状态中写,或者创建新的状态类,在代码的可读行上有点欠缺 而这次做出的改动的主要思想就是将状态中执行的逻辑和状态类进行一个分离,将状态中的逻辑单独封装成类,这个类写在对应的游戏对象所挂的脚本的文件中,这样就能在保正维
分类: 其他 发布时间: 08-23 20:20 阅读次数: 0

平衡二叉树--AVL树 自平衡方式--旋转 自平衡方式--旋转

关键字:AVL、插入、删除 前言:   平衡二叉树和AVL树这两个概念的区分:平衡二叉树是对这样一种数据结构的定义,是一种描述;而AVL树则是对这样子一种数据结构的实现。同红黑树和B树等一样,都是对这样一种结构的实现,同时都是具有自平衡特性的。   AVL树是最早的被发明的自平衡二叉树。 1、定义:   ①左子树和右子树都是AVL树;   ②左子树和右子树的高度差不能超过1。 2、性质:   ①一棵n个结点的AVL树的其高度保持在0(log2(n)),不会超过3/2log2(n+1);   ②
分类: 其他 发布时间: 08-23 20:20 阅读次数: 0

Confluence 6 删除一个附加的文件

你需要具有 删除附件(Delete Attachment)的空间权限来删除一个附加的文件。 希望删除一个附加文件的所有版本: 进入含有附件的页面中。 Go to > Attachments 选择你希望删除文件的后面的 删除(Delete)按钮。 选择 删除(Delete)来确定你的操作。 删除的文件可以从垃圾箱中进行恢复,你需要具有空间管理员的权限才能进行这个操作。 空间管理员可以删除一个附件的特定版本: Go to > Attachments 单击附件名边上的扩展箭头来查看附件的所有版本。
分类: 其他 发布时间: 08-23 20:20 阅读次数: 0

暑假考试题2:聚会party(类拓扑+tarjan)

题目: 分析: 如果没有:每个被邀请的人都直接认识另外至少d个被邀请的人 这个限制的话,就直接跑tarjan求最大的连通块。 加了这个限制之后,明显有些点是不符合的,我们可以考虑删掉这些点后再跑tarjan。 一个点的入度小于d,就是不满足的,就将与其相连的边都删掉。但这样又会导致与其相连的点因为与它这条边被删去而同样不满足条件,又需要删去。 于是就可以用一个队列保存需要被删的点,是不是很熟悉,没错,就很像拓扑,只是拓扑只将入度为0的入队,而这里将入度小于d的入队 #include<bits/
分类: 其他 发布时间: 08-23 20:20 阅读次数: 0

朴素贝叶斯python代码实现(西瓜书)

朴素贝叶斯python代码实现(西瓜书) 摘要: 朴素贝叶斯也是机器学习中一种非常常见的分类方法,对于二分类问题,并且数据集特征为离散型属性的时候, 使用起来非常的方便。原理简单,训练效率高,拟合效果好。 朴素贝叶斯 贝叶斯公式: 朴素贝叶斯之所以称这为朴素,是因为假设了各个特征是相互独立的,因此假定下公式成立: 则朴素贝叶斯算法的计算公式如下: 在实际计算中,上面的公式会做如下略微改动: 由于某些特征属性的值P(Xi|Ci)可能很小,多个特征的p值连乘后可能被约等于0。可以公式两边取log然
分类: 企业开发 发布时间: 08-23 20:20 阅读次数: 0

shell 1~100求和

1.新建shell脚本文件cat>sum1to100.sh<<EOF#/bin/bash/sum=0foriin`seq1100`;dosum=$[$sum+$i]doneecho"Total="$sum2.修改shell脚本文件具有执行权限chmod+xsum1to100.sh2.执行shell脚本./sum1to100.sh
分类: 企业开发 发布时间: 08-23 20:13 阅读次数: 0

RAID磁盘整列之RAID1

前言RAID1通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1可以提高读取性能。RAID1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。RAID1是将一个两块硬盘所构成RAID磁盘阵列,其容量仅等于一块硬盘的容量,因为另一块只是
分类: 企业开发 发布时间: 08-23 20:13 阅读次数: 0

vtk demo(二) marchingCubes

1 #include<vtkSmartPointer.h> 2 #include<vtkRenderWindow.h> 3 #include<vtkRenderer.h> 4 #include<vtkRenderWindowInteractor.h> 5 #include<vtkInteractorStyleTrackballCamera.h> 6 #include<vtkCylinderSource.h> 7 #include<vtkPolyDataMapper.h>
分类: 其他 发布时间: 08-23 20:04 阅读次数: 0

C++——虚继承(不要使用,会导致二义性)

如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的名字进行访问时,可能产生二义性 总结: 如果一个派生类从多个基类派生,而这些基类又有一个共同 的基类,则在对该基类中声明的名字进行访问时,可能产生 二义性 如果在多条继承路径上有一个公共的基类,那么在继承路径的某处 汇合点,这个公共基类就会在派生类的对象中产生多个基类子对象 要使这个公共基类在派生类中只产生一个子对象,必须对这个基类 声明为虚继承,使这个基类成为虚基类。 虚继承声明使用关键字 virtual #in
分类: 其他 发布时间: 08-23 20:04 阅读次数: 0

Android PorterDuff.Mode

16个模式如下: 1.PorterDuff.Mode.CLEAR 所绘制不会提交到画布上。 2.PorterDuff.Mode.SRC 显示上层绘制图片 3.PorterDuff.Mode.DST 显示下层绘制图片 4.PorterDuff.Mode.SRC_OVER 正常绘制显示,上下层绘制叠盖。 5.PorterDuff.Mode.DST_OVER 上下层都显示。下层居上显示。 6.PorterDuff.Mode.SRC_IN 取两层绘制交集。显示上层。 7.PorterDuff.Mode
分类: 其他 发布时间: 08-23 20:04 阅读次数: 0

vim基础命令,查找和替换

vim 基本命令查找和替换 vim简单的命令用着还好。比如插入,删除,查询。但替换就用的比较少。所以,还是需要用的时候拿出来对照者看。 使用vim编辑文件: vim xxx 进入之后的界面叫做命令模式界面。可以修改文件编辑的时候叫做插入模式。 (命令模式)冒号+指令 在vim命令模式界面想要退出,需要输入冒号和指令 :wq 保存并退出 :q 维修改退出 :q! 强制退出并不保存 (命令模式)移动光标 在vim界面,命令模式下光标移动方法 1、使用上下左右方向键 2、命令模式下: h
分类: 其他 发布时间: 08-23 20:04 阅读次数: 0

暑假考试题2:History(可持久化并查集)

题目: 分析: 求历史两个点之间是否连通->可持久化并查集。 注意:点的标号从0开始,主席树的范围应该是:0~n-1 #include<bits/stdc++.h> using namespace std; #define mid ((l+r)>>1) #define N 9000005 int ndnum=0,lc[N],rc[N],fa[N],dep[N],ed[N],n,m; void build(int s,int l,int r) { if(l==r) { fa
分类: 其他 发布时间: 08-23 20:04 阅读次数: 0

POJ-2240(floyd算法简单应用)

Arbitrage poj-2240 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> #include<map> using namespace std; map<string,int>ma; int n; int m; float graph[32][32]; float d[32][32]; void floyd(){
分类: 其他 发布时间: 08-23 20:04 阅读次数: 0

8月23日 课设个人小结(double-H)

当天完成的任务: 1.与组员讨论墨刀原型的完善与改进。并交流下一步的课设方案。 2.了解getlab如何使用以及如何上传代码。 3.下载微信小程序开发软件,并向组员学习如何书写有关代码。 4.下午去院办答辩 第二天的计划: 1.学习有关微信小程序开发的基础操作以及代码的书写。 2.与组员讨论沟通接下来的计划以及分工。 3.编写一些基础的代码来完成一些基本操作以及网络爬虫的学习。 个人总结: 今天我与组员去院办答辩,在老师的帮助下,以及向其他同学的学习,我们认识到了自己的一些不足,希望可以在接下
分类: 其他 发布时间: 08-23 20:04 阅读次数: 0

require.context

带表达式的 require 语句 如果你的 require参数含有表达式(expressions),会创建一个上下文(context),因为在编译时(compile time)并不清楚具体是哪一个模块被导入 require("./template/" + name + ".ejs"); webpack 解析 require() 的调用,提取出来如下这些信息: Directory: ./template Regular expression: /^.*\.ejs$/   则会返回templat
分类: 其他 发布时间: 08-23 20:04 阅读次数: 0