异或
基本概念
异或:不同为1,相同为0
也可以理解为无进位相加。1+1=0,不进位,与相同为0同样的效果。
性质
1、0与任何数N异或都是N,任何一个数与自己异或都是0
120 ^ N = N N ^ N = 0
2、异或运算满足交换律或结合律
12a ^ b = b ^ a(a ^ b) ^ c = a ^ (b ^ c)
3、同样一批数,与异或的顺序无关,谁先异或不影响最终结果
应用
1、交换两个变量的值
根据上述性质可以使用异或方法,在不额外开辟空间的情况下,来交换两个变量的值:
1234567// swap: 使用异或交换两个变量的值func swap(a, b int) (int, int) { a = a ^ b // 将 a = a ^ b 带入下面的式子 b = a ^ b // b = (a ^ b) ^ b = a a = a ^ b // a = (a ^ b) ^ a = b return a, b}
当然,这样做也有一个前提,即a和b在内存里是两块独立的区域。什么意思呢?a可以等于b的值,但是a的地址和b的地址不同,如果内存是一块东西 ...
如何在Chrome98版本更改cookies
背景
春节后第一天上班,打开电脑Chrome自动更新为了98版本,测试过程中发现无法像以往那样直接在F12--application--cookies菜单下更改cookies,如图,编辑cookies失效,且被标记为红色:
解决
由于长期保持Chrome为最新版本,可以推测此次不能编辑cookies是Chrome新版本的原因,根据Chrome提交记录这一次提交的评论信息,可以看到大概是与分区cookies有关(虽然我也不知道这是什么T_T),那么打开这个东西就好了。
打开 chrome://flags 并将Partitioned Cookies的值设置为Enable并重新启动浏览器,如图:
之后红色行没有出现,可以像以前一样设置 cookie:
还是建议稳定一个版本吧,一直用最新的软件确实会遇到很多问题。
Django如何获取某一列的字段值
背景
使用Django查询需要查询数据库某一列的所有值,通过查阅官方文档发现values()、values_list()是符合我要求的。
values()
返回一个 QuerySet,它返回的是字典。其中每一个字典都代表一个对象,键与模型对象的属性名相对应。
values() 方法接受可选的位置参数 *fields,它指定了 SELECT 应该被限制的字段名。如果你指定了字段,每个字典将只包含你指定字段的字段键/值。如果不指定字段,每个字典将包含数据库表中每个字段的键和值。
1234>>> Blog.objects.values()<QuerySet [{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]>>>> Blog.objects.values('id', 'name' ...
windows下安装gcc
背景
安装gorm包时,出现gcc报错:
123456D:\Project\Go\GinDemo\15gin_file>go get -u gorm.io/driver/sqlitego: downloading gorm.io/driver/sqlite v1.1.4go: downloading github.com/mattn/go-sqlite3 v1.14.5go: downloading github.com/mattn/go-sqlite3 v1.14.6# github.com/mattn/go-sqlite3cgo: exec gcc: exec: "gcc": executable file not found in %PATH%
解决
可以在MinGW-w64下载离线安装包。
下载了x86_64-posix-sjlj的压缩包,如图所示,然后解压缩便得到了mingw64。
直接将bin路径添加到环境变量中即可。
在系统变量中,新增:GCC_HOME:C:\Program Files\mingw-w64\x86_64-8.1.0-pos ...
python发送request提示can't encode character
背景
以一个python的request的demo为例,访问百度首页并打印百度首页文本信息:
12345import requestsurl = "https://baidu.com"response = requests.get(url)print(response.text)
会存在如下报错信息:
12345C:\Users\liu.ziyi\AppData\Local\Programs\Python\Python38\python.exe E:/Python/httpRunnerDemo/kom/kom_session2.pyTraceback (most recent call last): File "E:/Python/httpRunnerDemo/kom/kom_session2.py", line 8, in <module> print(r.text)UnicodeEncodeError: 'gbk' codec can't encode character '\xa ...
python+requests请求双向认证网站
背景
以一个python的request的demo为例,访问双向认证的网站并打印其首页文本信息:
12345import requestsurl = "https://pro6.aishu.cn"response = requests.get(url)print(response.text.encode("GBK", "ignore"))
会报如下错误:
123456789C:\Users\liu.ziyi\AppData\Local\Programs\Python\Python38\python.exe E:/Python/httpRunnerDemo/kom/kom_session.py<html><head><title>400 No required SSL certificate was sent</title></head><body><center><h1>400 Bad Request</h1>< ...
Flask项目启动报错cannot import name cached_property from werkzeug
背景
启动Flask项目时存在如下报错:
12345C:\Users\lzy\AppData\Local\Programs\Python\Python38\python.exe D:/Python/FlaskDemo/main.pyTraceback (most recent call last): File "D:/Python/FlaskDemo/main.py", line 1, in <module> ...ImportError: cannot import name 'cached_property' from 'werkzeug' (C:\Users\lzy\AppData\Local\Programs\Python\Python38\lib\site-packages\werkzeug\__init__.py) ...
解决
1、显示导入原因:是因为werkzeug新版本里需要显式导入该模块。
在如下文件中加入:
1from werkzeug.utils import cached_prop ...
如何去除Pipeline中参数化构建时参数的头尾空格
背景
现在一般都会使用Jenkins的Pipeline进行构建,那么不可避免要使用参数化构建,在使用参数化构建时,用户的输入都是不可靠的,自然填入的string参数可能会携带空格从而导致构建失败,那么应该如何处理这个问题?
探索
Jenkinsfile如下:
1234567891011121314151617pipeline { agent { label 'k8s' } parameters { string(name: 'Branch', defaultValue: '', description: '请指定需要构建的分支!') } stages { stage('Source') { steps { echo "${params.Branch}" } } & ...
python+allure2生成测试报告
安装allure-pytest
allure-pytest是python的一个第三方库。用于连接pytest和allure,使它们可以配合在一起使用。allure-pytest基于pytest的原始执行结果生成适用于allure的json格式结果。该json格式结果可以用于后续适用allure生成html结果。
命令行或者终端中输入 pip install allure-pytest 即可进行安装:
1$ pip install allure-pytest
allure安装可参考定制化报告插件allure2安装。
实例
基于pytest写个测试文件
1234567891011121314151617181920def func(x): return x + 3def test_func_0(): src = 0 expect = 3 assert func(src) == expectdef test_func_1(): src = 0.1 expect = 3.1 assert func(src) == expectdef test_func_2(): src = -1 exp ...
Jenkins升级
背景
在Jenkins 主页面总是提示有最新版本,要下载更新,看着很烦人
为了更好的使用最新的系统插件,更新是必要的
步骤
查看war包所在的目录:
1234567[root@lemonlzy ~]# find / -name jenkins.war/usr/lib/jenkins/jenkins.war[root@lemonlzy ~]# cd /usr/lib/jenkins/[root@lemonlzy jenkins]# lsjenkins.war
停止Jenkins 服务:
1systemctl stop jenkins
备份war包:
12cd /usr/lib/jenkins/mv jenkins.war jenkins.war.bak
在/usr/lib/jenkins/目录下下载最新war包(可在官网下载通过ftp上传,或者直接wget下载,但是需要知道具体的版本号,这里以2.263为例):
1wget https://updates.jenkins-ci.org/download/war/2.263/jenkins.war
启动Jenkins 服务:
1 ...