正则匹配
0x01 正则库re运用python自带的正则库
1import re
设置一个匹配对象
1member = re.compile('')
在单引号内写正则表达式。
还可以传入第二个参数,用来指定额外的条件。
123member = re.compile(r'', re.I) #忽略大小写member = re.compile('.*?', re.DOTALL) #句点匹配符匹配换行符member = re.compile('.*?', re.VERBOSE) #忽略正则表达式字符串中的空白符和注释
0x02 有关正则的python方法search()
找到第一个匹配的字符串并返回一个Match对象
1234member = re.compile(r'123')mo = member.search('123456')print(mo.group())#123
findall()
找到所有匹配的字符串并返回一个列表
1234member = re.compile(r& ...
爬虫理论笔记
web请求过程剖析服务器渲染服务器直接整合数据和html文件,并返回
客户端渲染服务器先返回一个html骨架,之后请求再次返回需要的数据,在浏览器客户端整合成页面(页面源代码没有数据)。
通过Network实时查看服务器对请求的返回,可以抓包到数据。
HTTP协议HTTP协议,Hyper Text Transfer Protocol(超文本传输协议),服务器和浏览器之间的数据交互遵守的就是HTTP协议。
请求:
123请求行 -> 请求方式(get/post) 请求URL地址 协议请求头 -> 服务器要使用的附加信息请求体 -> 一般是请求参数(例如搜索框输入的东西)
响应:
123状态行 -> 协议 状态码(404等)响应头 -> 放一些客户端要使用的附加信息(例如安全密钥,加密数据等)响应体 -> 服务器返回的真正的客户端要使用的内容(HTML, json等)
请求头中的常见重要内容:
1、User-Agent:请求载体的身份标识(用什么发送的请求)
2、Referer:防盗链( 这次请求是从哪个页面来的?反爬使用)
3、cookie:本 ...
git的基础使用
Git的下载安装windows版的git下载
我直接下载64位安装程序了,按需求下载。
之后就一直next就好了。
Git初始化配置配置用户名和邮箱12git config (可选) user.name "your name"git config (可选) user.email "your email"
可选选项指定了配置的范围:
省略(Local):本地配置,只对本地仓库有效
—global:全局配置,对所有仓库有效
—system:系统配置,对所有用户有效(一般不会使用这个)
保存用户名配置1git config --global credential.helper store
列出配置信息1git config --global --list
Git新建仓库本地创建选择一个空的文件夹来创建本地仓库:
(可以在命令末尾指定仓库名字,会新建一个文件夹来存放.git)
1git init
回显:
1Initialized empty Git repository in D:/learn-git/.git/
这里的.git是一个隐藏目录,用普通的l ...
分析Cache访存模式对系统性能的影响
分析Cache访存模式对系统性能的影响表1、普通矩阵乘法与及优化后矩阵乘法之间的性能对比
矩阵大小
100
500
1000
1500
2000
2500
3000
一般算法执行时间
0.005
0.622
5.177
25.763
51.578
116.024
193.515
优化算法执行时间
0.004
0.384
3.070
12.480
22.462
49.304
82.696
加速比speedup
1.337
1.620
1.686
2.064
2.296
2.353
2.340
加速比定义:加速比=优化前系统耗时/优化后系统耗时;
所谓加速比,就是优化前的耗时与优化后耗时的比值。加速比越高,表明优化效果越明显
分析原因:传统的矩阵乘法算法通过遍历结果矩阵 c 的每一行和每一列来计算每个元素的值。在这种访问模式下,矩阵 a 的访问步长为 1,表现出良好的空间局部性,即连续访问的内存地址相邻,有利于缓存命中。
然而,矩阵 b 的访问步长为 size,意味着每次访问的内存地址间隔较大,导致缓存命中率较低。
为了优化缓存性能,我们可以采用一种改进的 ...
配置docker和拉取镜像源
配置dockerdownload dockerdocker下载
配置docker hub mirror有时候可能因为网络波动导致拉取docker失败,可以尝试把镜像源换成国内的。
打开docker右上角的设置图标,然后选择docker Engine,将下面代码复制到框里:
123456789101112131415{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "features": { "buildkit": true }, "registry-mirrors": [ //这里放国内镜像源 ]}
这里有些暂时可以用的源,不过建议去网上 ...
动态规划刷题1
P1216 [USACO1.5] [IOI1994]数字三角形 Number Triangles该题的思路是,从底层数开始,逐渐向上更新。
例如: 1
2 3
5 6 7
经过一次更新后,从倒数第二层开始,对于2,它的两个孩子5和6中6更大,于是2更新为2+6=8,同理3更新为10之后就有:
1
8 10
5 6 7
层数向上移动一层,接着从第一层继续执行上述操作,1+10=11,所以有:
11
8 10
5 6 7
输出第一个数就是最大路径和,1 + 3 + 7 = 11
很容易发现,每一次更新,把被更新的数变成由它向下辐射的三角中的,最大路径和。例如上例中的三角3 6 7, 3经过更新后变成三角3 6 7的最大路径和,3 + 7 = 10。采用这种分治的思想,从小到大,递归得到由第一个数向下辐射的三角的最大路径和。
12345678910111213141516 ...