匿名函数在 PHP 5.3 中被引入,可以将一个函数赋值给一个变量。先来个例子:
<?php $func = function(){ echo "Hello"; }; $func();
今天看Laravel框架。看见一个很奇怪的写法。就是$this->{ 。当时很奇怪。后来发现可以让方法名是变量,同样对对象的属性也可行。这个太酷了。 继续阅读
Cond在Locker的基础上增加的一个消息通知的功能。但是它只能按照顺序去使一个goroutine解除阻塞。
Cond有三个方法:Wait,Signal,Broadcast。
Wait添加一个计数,也就是添加一个阻塞的goroutine。
Signal解除一个goroutine的阻塞,计数减一。
Broadcast接触所有wait goroutine的阻塞。 继续阅读
golang的多线程固然好用,但是有时候需要对数据进行上锁,防止数据被其它线程更改。那么sync包下的Mutex非常好用。
Mutex是一个互斥锁。可以作为struct的一部分,这样这个struct就会防止被多线程更改数据。
继续阅读
刚才看golang的sync的包,看见一个很有用的功能。就是WaitGroup。
先说说WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。 继续阅读
golang sync包下的Once是多线程开始之前先执行,并且仅执行一次的方法。可以考虑用来做一些初始化操作。 继续阅读
注意:在操作之前,要先备份好数据库。
默认情况下,MySql的数据库文件位于/var/lib/mysql下。于是想着把现在的数据库文件移动到挂载的硬盘上。找了一些办法,例如一起移动socket,datadir等等。但是移动完成后不能启动。最终找到了一个很完美的方案。 继续阅读
最近总是感觉晚上睡觉有点凉,可能是被子太薄了。不过这个暖气确实是不太给力。这么大的屋子,才一组暖气片。有点少。突然想着要是在铺个电褥子,或许好些。正好周末是正月十六,十五上班回不去,十六回去也好。也好能吃上父母亲手做的汤圆。 继续阅读
workbench是mysql功能现在的官方IDE。功能很强大。不过用着有一个bug。这个bug经常出现。估计开发出来,测试的不到位。 继续阅读
最近两天可以说与这个too many open files是较上劲了。前段时间,redis服务器出现这个错误,更改了服务器的ulimit的限制。最近go开发的API的服务器也是出现了同样的错误。整的很郁闷啊。不过总得来说,还是学到了很多知识。在此做一个总结。 继续阅读
最近两天服务器总是会出现too many open files的错误。真的很是头疼。在本地开发环境中,也用了压力测试,发现问题不存在。但是为什么服务器会出现这种错误,有些闹不明白。本来想用ulimit更改一下打开文件的描述符。但这样子觉得并不解决问题。好吧,那就查一下更本的原因。 继续阅读
最近公司的API总是莫名其妙的报告一些redis 打开文件太多的错误。今天老板终于下定决心,必须解决这个bug。经过测试,问题终于出现了。
原因是因为在linux下面ulimit命令限制了可以打开文件描述符的最大数量。默认是1024.而redis的最大连接数maxclients却远远大于这个数量。 继续阅读
在编写shell中,很少有脚本是顺序操作,大部分的时候需要进行逻辑判断。
先看一个简单的格式:
if command then commands fi
bash shell会运行if后面的命令。如果该命令的退出状态码是0,then后的命令就会执行。否则不执行。 继续阅读
shell脚本中的反引号“`”,这个符号通常在tab键的上面那个键,同时按住shift输入。在shell中反引号,可以讲命令的输出赋给变量。在shell编程中,很多时候,shell 命令的输出需要作为下面命令的参数。那这个反引号就会排上用场了。
这个例子很简单,就是按照年月日,创建文件夹。 继续阅读
在开始编写复杂的shell脚本时,有时候你会发现在编写很多重复的代码。bash shell支持用户定义的函数。可以将shell脚本的代码进行封装。方便以后多次使用和维护。 继续阅读