OTP动态口令
如上图,是一种基于时间同步的OTP计算方式,是通过客户端和服务器持有相同的密钥并基于时间基数,服务端和客户端采用相同的Hash算法,计算出长度为六位的校验码。当客户端和服务端计算出的校验码相同是,那么验证通过。
python: memory_profiler包,记录代码内存使用情况,查找内存泄漏原因
前言最近用paddlepaddle,发现训练每个epoch时,内存都会增加几百兆,这明显就是出现了内存泄漏。python中内存泄露的原因比C++(一般就是动态内存分配)更加隐蔽,可以借助memory_profiler这个包监控python代码的内存使用。
安装直接pip安装就完事了
1pip install memory_profiler
简单使用只需要在.py文件中导入memory_profiler包中的profiler方法,然后作为某个函数的装饰器,就能够记录该函数内部代码的内存使用情况了:
12345678910111213141516171819# learn_mprof.pyfrom memory_profiler import profileimport numpy as np@profiledef count(): print('+++++++++++') a = 0; b = 1; c = a + b print('a+b=c') print('{}+{ ...
面试突击:说一下MySQL事务隔离级别?
MySQL 事务隔离级别是为了解决并发事务互相干扰的问题的,MySQL 事务隔离级别总共有以下 4 种:
READ UNCOMMITTED:读未提交。
READ COMMITTED:读已提交。
REPEATABLE READ:可重复读。
SERIALIZABLE:序列化。
1.四种事务隔离级别1.1 READ UNCOMMITTED读未提交,也叫未提交读,该隔离级别的事务可以看到其他事务中未提交的数据。该隔离级别因为可以读取到其他事务中未提交的数据,而未提交的数据可能会发生回滚,因此我们把该级别读取到的数据称之为脏数据,把这个问题称之为脏读。
1.2 READ COMMITTED读已提交,也叫提交读,该隔离级别的事务能读取到已经提交事务的数据,因此它不会有脏读问题。但由于在事务的执行中可以读取到其他事务提交的结果,所以在不同时间的相同SQL 查询中,可能会得到不同的结果,这种现象叫做不可重复读。
1.3 REPEATABLE READ可重复读,MySQL 默认的事务隔离级别。可重复读可以解决“不可重复读”的问题,但还存在幻读的问题。所谓的幻读指的是,在同一事务的不同时间使用相同SQ ...
一份测试代码囊括 go web 开发的主要 utils
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...
入门python,看完这个300行代码的例子,足矣~
https://blog.csdn.net/the_sangzi_home/article/details/105823432
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811 ...
生成器模式
https://refactoringguru.cn/design-patterns/builder
意图生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。
问题假设有这样一个复杂对象, 在对其进行构造时需要对诸多成员变量和嵌套对象进行繁复的初始化工作。这些初始化代码通常深藏于一个包含众多参数且让人基本看不懂的构造函数中; 甚至还有更糟糕的情况, 那就是这些代码散落在客户端代码的多个位置。
例如, 我们来思考如何创建一个 房屋House对象。 建造一栋简单的房屋, 首先你需要建造四面墙和地板, 安装房门和一套窗户,然后再建造一个屋顶。 但是如果你想要一栋更宽敞更明亮的房屋, 还要有院子和其他设施 (例如暖气、 排水和供电设备), 那又该怎么办呢?
最简单的方法是扩展 房屋基类, 然后创建一系列涵盖所有参数组合的子类。 但最终你将面对相当数量的子类。 任何新增的参数 (例如门廊类型)都会让这个层次结构更加复杂。
另一种方法则无需生成子类。 你可以在 房屋基类中创建一个包括所有可能参数的超级构造函数, 并用它来控制房屋对 ...
建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
1npm install --registry=https://registry.npmmirror.com
Docker镜像导出导入
通过容器查看当前容器1docker ps -a
导出镜像1docker export 容器id > image.tar
导入镜像1docker import 容器名 < image.tar
通过镜像查看镜像1docker images
导出镜像1docker save 镜像id > image.tar
导入镜像1docker load < image.tar
python pytest测试框架介绍 - 日志实时输出
在使用pytest进行自动化测试时,需要将实时日志打印出来,而不是跑完后才在报告中出结果。不过,好在pytest在3.3版本开始,就支持这一功能了,而不用再像nose一样,再去装第三方插件。网上也有相关实时的日志输入说明,但我尝试后,不是我想要的,比如:pytest输出Log所以,有两种方法解决
1.在当前文件夹下写pytest.ini或tox.ini或setup.cfg文件,然后将日志相关写在里面,如下:12345[pytest]log_cli = 1log_cli_level = INFOlog_cli_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)log_cli_date_format=%Y-%m-%d %H:%M:%S
这时就可以正常打印日志出来。
2.直接用pytest -o方式重写,这个功能在pytest 3.4之后才实现,如下pytest pytest_lean2.py -o log_cli=true -o log_cli_level=INFO