什么是单元测试
相信我们做程序员的,对单元测试都不陌生。单元测试一般是用来测试我们的代码逻辑有没有问题,有没有按照我们期望的运行,以保证代码质量。
大多数的单元测试,都是对某一个函数方法进行测试,以尽可能的保证没有问题或者问题可被我们预知。为了达到这个目的,我们可以使用各种手段、逻辑,模拟不同的场景进行测试。
这里我们在package main里定义一个函数Add,求两个数之和的函数,然后我们使用单元测试进行求和逻辑测试。
相信我们做程序员的,对单元测试都不陌生。单元测试一般是用来测试我们的代码逻辑有没有问题,有没有按照我们期望的运行,以保证代码质量。
大多数的单元测试,都是对某一个函数方法进行测试,以尽可能的保证没有问题或者问题可被我们预知。为了达到这个目的,我们可以使用各种手段、逻辑,模拟不同的场景进行测试。
这里我们在package main里定义一个函数Add,求两个数之和的函数,然后我们使用单元测试进行求和逻辑测试。
|
|
有时mysql服务器在远端,我们无法接触到慢查询日志,这时可以借助php慢请求日志来进行排查优化
|
|
默认的 request_slowlog_timeout 是0,php的慢脚本日志是关闭的,因此设置为大于0的n,表示执行时间超过n的脚本将记录进入slowlog里。
“调用栈”(call stack)既可以指具体实现,也可以指一种抽象概念——由“栈帧”(stack frame)或者叫“活动记录”(activation record)构成的栈。这里说说抽象概念的角度。函数调用的局部状态之所以用栈来记录是因为这些数据的存活时间满足“后入先出”(LIFO)顺序,而栈的基本操作正好就是支持这种顺序的访问。举例说,假如有下面程序:
假设现在有100000条从0到10000且从大到小排列的整型数据,1条数据的大小假设(真的只是假设)是1KB,操作系统的每次I/O数据块(页)大小是8KB。
如果现在我要查找其中 50001 这个数据值,有如下几个方式:
1.最蠢的方式,遍历,每次遍历到一个值,就用这个值跟目标值做对比,如果不等于那么查找下一个。这样的话那么每次I/O是8条数据,目标数据在50001/8 约6600多次I/O 才能找到目标数据。
2.二分查找,最好一次性将100000条数据全部读到内存,这样查找也是很快的。
对于了解一门语言来说,会关心我们在函数调用的时候,参数到底是传的值,还是引用?
其实对于传值和传引用,是一个比较古老的话题,做研发的都有这个概念,但是可能不是非常清楚。对于我们做Go语言开发的来说,也想知道到底是什么传递。
那么我们先来看看什么是值传递,什么是引用传递。
尝试在php中fork出多个进程,然后多个进程公用一个model对象,总是会莫名其妙的错误
不要公用redis、mysql连接。必须每个进程单独创建Redis、MySQL、PDO连接,其他的存储客户端也同样如此。原因是如果公用一个连接,那么返回的结果无法保证被哪个进程处理。持有连接的进程理论上都可以对这个连接进行读写,这样数据就发生错乱了。
所以正确的做法是在子进程内部创建连接对象
不知大家有没遇到过像“横放着的金字塔”一样的if else嵌套:
|
|