- 博客(8)
- 收藏
- 关注
原创 golang sync mutex 互斥锁
golang的多线程固然好用,但是有时候需要对数据进行上锁,防止数据被其它线程更改。那么sync包下的Mutex非常好用。Mutex是一个互斥锁。可以作为struct的一部分,这样这个struct就会防止被多线程更改数据。来个例子:package mainimport ( "fmt" "sync" "time")type User struct { Nam
2014-05-07 13:44:33
8263
原创 golang sync WaitGroup
刚才看golang的sync的包,看见一个很有用的功能。就是WaitGroup。先说说WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。WaitGroup总共有三个方法:Add(delta int),Done(),Wait()。简单的说一下这三个方法的作用。Add:添加或者减少等待gorou
2014-05-06 20:18:48
1594
原创 too many open files
最近两天可以说与这个too many open files是较上劲了。前段时间,redis服务器出现这个错误,更改了服务器的ulimit的限制。最近go开发的API的服务器也是出现了同样的错误。整的很郁闷啊。不过总得来说,还是学到了很多知识。在此做一个总结。在linux服务器上,对于打开文件的描述符是有限制的。默认的1024。可以查看ulimit的设置。ulimit的讲述在网上很多了。可以
2014-01-15 07:58:32
869
原创 go 服务器出现too many open files的错误
最近两天服务器总是会出现too many open files的错误。真的很是头疼。在本地开发环境中,也用了压力测试,发现问题不存在。但是为什么服务器会出现这种错误,有些闹不明白。本来想用ulimit更改一下打开文件的描述符。但这样子觉得并不解决问题。好吧,那就查一下更本的原因。服务器是亚马逊,开发语言:golang,数据库:mongo,mysql。缓存:redis。测试脚
2014-01-15 07:42:54
7305
原创 Redis too many open files error
最近公司的API总是莫名其妙的报告一些redis 打开文件太多的错误。今天老板终于下定决心,必须解决这个bug。经过测试,问题终于出现了。
2014-01-09 20:54:56
4875
原创 shell结构化命令if-then-elif-fi
在编写shell中,很少有脚本是顺序操作,大部分的时候需要进行逻辑判断。先看一个简单的格式:if commandthen commandsfibash shell会运行if后面的命令。如果该命令的退出状态码是0,then后的命令就会执行。否则不执行。来个简单的例子:#!/bin/shworkPath=/Users/liguosong/work/shellif cd $work
2014-01-05 20:57:57
1634
原创 Shell 反引号 `
shell脚本中的反引号“`”,这个符号通常在tab键的上面那个键,同时按住shift输入。在shell中反引号,可以讲命令的输出赋给变量。在shell编程中,很多时候,shell 命令的输出需要作为下面命令的参数。那这个反引号就会排上用场了。这个例子很简单,就是按照年月日,创建文件夹。代码如下:#!/bin/shDATE=`date +%Y%m%d`mkdir $DATE
2014-01-04 14:40:33
1042
原创 Shell 函数
今天元旦,宅在家里,闲着看了看shell,下面将所学的分享一下。在开始编写复杂的shell脚本时,有时候你会发现在编写很多重复的代码。bash shell支持用户定义的函数。可以将shell脚本的代码进行封装。方便以后多次使用和维护。有两种方式可以创建bash shell的函数:方式一:采用关键字function,后面跟着函数名称。例如:#!/bin/bashfunction h
2014-01-01 19:46:27
712
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人