August 9, 2013
go语言单元测试
"Go本身提供了一套轻量级的测试框架.符合规则的测试代码会在运行测试时被自动识别并执行.单元测试源文件的命名规则如平衡点:在需要测试的包下面创建以”_test”结尾的go文件,开如[^.]*_test.go\nGo单元测试函数分为两在类.功能测试函数和性能测试函数,分别以Test和Benchmark为函数名前缀并以*testing.T 和 *testing.B 为单一参数的函数。\nfunc TestAdd1(t *testing.T) func BenchmarkAdd1(t *testing.T) 测试工具会根据函数中的实际执行动作得到不同的测试结果。\n功能测试函数会根据测试代码执行过程中是否发生错误来反馈结果; 性能测试函数仅仅打印出来测试所花费时间,用来判断程序性能;\n准备 新建一个文件,命名为 go_test.go\npackage go_test import \u0026#34;testing\u0026#34; func Add(a, b int) int { return a + b } 功能测试 在go_test.go文件里添加以下代码\nfunc TestAdd1(t *testing.T) …"
August 8, 2013
Redis配置文件参数说明
"配置文件参数说明:\nRedis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no\n当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/run/redis.pid\n指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字 ** port 6379**\n绑定的主机地址 bind 127.0.0.1\n5.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能\ntimeout 300\n指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose loglevel verbose\n日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null …"
August 7, 2013
安装hg命令
"在使用golang开发的时候,有些时间github.com上面的包需要执行hg命令(hg命令简介).这个时候就需要安装一下才可以.\nLinux下安装Mercurial(hg):\n安装Mercurial 在进行后面的操作之前需要安装Mercurial( 百科)版本管理系统(可以输出hg名词检测是否安装)。输入以下命令安装:\nsudo easy_install mercurial 对于 Ubuntu/Debian 系统,easy_install 命令可以用\napt-get install python-setuptools python-dev build-essential 安装。 如果上述命令安装失败的话,还可以尝试去官方网站 下载\nWindows下安装\n国内国度网盘下载(32位): http://pan.baidu.com/share/link?shareid=3528053518\u0026amp;uk=2365864479\n(64位): http://pan.baidu.com/share/link?shareid=3560201274\u0026amp;uk=2365864479"
July 23, 2013
exec: “pkg-config”: executable file not found in %PATH% 的解决办法
"在windows下要用 golang 实现操作 zeromq 消息队列,发现在sublime下进行\ngo get -tags zmq_3_x github.com/alecthomas/gozmq\n操作的时候,提示\n# pkg-config –cflags libzmq libzmq libzmq libzmq exec: “pkg-config”: executable file not found in %PATH% exit status 2\n原因是因为没有安装pkg-config.需要手动安装,并设置一下环境变量.pkg-config下载地址: http://ftp.acc.umu.se/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip ( http://ftp.acc.umu.se/pub/gnome/binaries/win64/dependencies/pkg-config_0.23-2_win64.zip)\n如果无法下载,直接打开所在的目录,找到合适的软件包下载.然后将包里bin目录里 …"
July 23, 2013
用golang发送邮件
"配置文件 conf.json\n{ \u0026#34;Username\u0026#34;: \u0026#34;[email protected]\u0026#34;, \u0026#34;Password\u0026#34;: \u0026#34;123456\u0026#34;, \u0026#34;Smtphost\u0026#34;:\u0026#34;smtp.163.com:25\u0026#34; } 主程序 sendmail.go\npackage main import ( \u0026#34;encoding/json\u0026#34; \u0026#34;fmt\u0026#34; \u0026#34;io\u0026#34; \u0026#34;log\u0026#34; \u0026#34;net/smtp\u0026#34; \u0026#34;os\u0026#34; \u0026#34;strings\u0026#34; ) type cfgmail struct { Username string Password string Smtphost string } type cfg struct { Name, Text string } func main() { // 从json文件中读取发送邮件服务器配置信息 cfgjson := getConf() var cfg cfgmail dec := …"
July 14, 2013
nginx日志切割
"nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。\n第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。\n第二步向nginx主进程发送USR1信号。\nnginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。\n重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。\n工作进程立刻打开新的日志文件并关闭重名名的日志文件。\n然后你就可以处理旧的日志文件了。\nnginx日志按日期自动切割脚本如下 [shell] #nginx日志切割脚本 #author: http://www.nginx.cn #!/bin/bash #设置日志文件存放目录 logs_path=\u0026quot;/usr/local/nginx/logs/\u0026quot; #设 …"
July 10, 2013
mysql中innodb表的count优化
"作/译者:叶金荣(imysql#imysql.com\u0026gt;),来源: http://imysql.com,欢迎转载。\n起因:在innodb表上做count(*)统计实在是太慢了,因此想办法看能不能再快点。\n现象:先来看几个测试案例,如下\n一、 sbtest 表上的测试\nshow create table sbtest\\G *************************** 1. row *************************** Table: sbtest Create Table: CREATE TABLE `sbtest` ( `aid` bigint(20) unsigned NOT NULL auto_increment, `id` int(10) unsigned NOT NULL default \u0026#39;0\u0026#39;, `k` int(10) unsigned NOT NULL default \u0026#39;0\u0026#39;, `c` char(120) NOT NULL default \u0026#39;\u0026#39;, `pad` char(60) NOT NULL …"
July 8, 2013
Linux下安装php开发框架yaf
"https://github.com/laruence/php-yaf\nyaf框架中文手册:\nyaf手册:\n1.下载并安装yaf扩展 http://pecl.php.net/package/yaf\n#wget http://pecl.php.net/get/yaf-2.2.9.tgz #tar zxvf yaf-2.2.9.tgz #cd yaf-2.2.9 [root@bogon yaf-2.2.9]# whereis phpize phpize: /usr/bin/phpize /usr/share/man/man1/phpize.1.gz /usr/bin/phpize [root@bogon yaf-2.2.9]# /usr/bin/phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 #whereis php-config php-config: /usr/bin/php-config …"
June 25, 2013
centos 6关闭ipv6
"通过网卡属性查看\n命令:ifconfig\n注释:有 “inet6 addr:。。。。。。。“ 的表示开启了ipv6功能.使用下面的方法可以关闭ipv6\n1.修改/etc/modprobe.d/dist.conf\n[shell]#vi /etc/modprobe.d/dist.conf[/shell]\n添加下面两行内容\nalias net-pf-10 off alias ipv6 off\n保存退出,并且重新启动系统\n2.验证ipv6模块是否加载\n[shell]#lsmod|grep ipv6[/shell]\n4.开机不启动\n[shell]#chkconfig ip6tables off[/shell]\n重启 用命令“lsmod | grep v6”查看,是否启动加载!\n=======================================\n1.修改/etc/sysconfig/network,追加:\nNETWORKING_IPV6=no\n2.修改/etc/hosts文件,把ipv6的那句本地主机名解析的也注释掉:\n#::1 localhost localhost6 …"
June 18, 2013
测试golang中的多核多线程
"“并发 (concurrency)” 和 “并行 ( parallelism)” 是不同的。在单个 CPU 核上,线程通过时间片或者让出控制权来实现任务切换,达到 “同时” 运行多个任务的⺫的,这就是所谓的并发。但实际上任何时刻都只有一个任务被执行,其他任务通过某种算法来排队。\n多核 CPU 可以让同个进程内的 “多个线程” 做到真正意义上的同时运,它们之间不需要排队 (依然会发生排队,因为线程数量可能超出 CPU 核数量,还有其他的进程等等。这里说的是一个理想状况),这才是并行。除了多核,并行计算还可能是多台机器上部署运行。\npackage main import ( \u0026#34;fmt\u0026#34; \u0026#34;runtime\u0026#34; ) func test(c chan bool, n int) { x := 0 for i := 0; i \u0026lt; 1000000000; i++ { x += i } println(n, x) if n == 9 { c \u0026lt;- true } } func main() { runtime.GOMAXPROCS(1) //设置cpu的核的数量, …"