October 22, 2013
golang日志模块测试
"package main import ( \u0026#34;fmt\u0026#34; \u0026#34;log\u0026#34; \u0026#34;os\u0026#34; ) func main(){ logfile,err := os.OpenFile(\u0026#34;d:/workspace/golang/test.log\u0026#34;,os.O\\_RDWR|os.O\\_CREATE|os.O_APPEND,0); if err!=nil { fmt.Printf(\u0026#34;%s\\r\\n\u0026#34;,err.Error()); os.Exit(-1); } defer logfile.Close(); logger := log.New(logfile,\u0026#34;\\r\\n\u0026#34;,log.Ldate|log.Ltime|log.Llongfile); logger.Println(\u0026#34;hello\u0026#34;); logger.Println(\u0026#34;oh….\u0026#34;); logger.Fatal(\u0026#34;test\u0026#34;); logger.Fatal(\u0026#34;test2\u0026#34;); } 这里打开日志文件的时候,同时使用 …"
October 11, 2013
Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
"在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,\n执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。\n如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。\n因为在 ~/.bash_profile文件中一般会有下面的代码:\nif [ -f ~/.bashrc ] ; then . ./bashrc fi ~/.bashrc中,一般还会有以下代码:\nif [ -f /etc/bashrc ] ; then . /etc/bashrc fi 所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。\n执行顺序为: /etc/profile -\u0026gt; (~/.bash_profile | ~/.bash_login | ~/.profile) -\u0026gt; …"
October 7, 2013
php框架–php框架的连贯查询实现原理
"如果你是一名使用过多种框架的php程序员,你一定见过这样的查询语句:\n$result = $mysqlDb-\u0026gt;limit(’0,10′)-\u0026gt;order(‘id desc’)-\u0026gt;findall(); 上面的查询语句,连续使用-\u0026gt;操作符进行操作,并最终返回一个查询结果,那么这是如何实现的呢。\n我们来简单分析一下:\n-\u0026gt;操作符用来访问对象,上面的语句一共使用了3次-\u0026gt;操作符,而最后一次返回的是查询结果,这说明,前2次-\u0026gt;访问后,返回的应该是一个对象,因为在php中,如果你对一个非对象使用-\u0026gt;操作符是不可能的。这告诉我们,$mysql实例中的limit和order方法都返回一个对其所在类自身的引用即 return $this,了解了这一点,那么我们就可以实现连贯查询了。请看站长写的示例代码:\n/* *类功能:实现数据库的连贯查询操作 */ class mysql_query{ var $tbl=’user’;//要操作的表名 var $limit=”;//存储limit语句的变量 var $order=”;//存储order语句的变量 var …"
October 7, 2013
[翻译]绝妙的 channel
"在编写 golang 程序的过程中,channel 会经常使用。本文对 channel 的使用的确很特别,同时也非常实用。\n原文在此: http://dave.cheney.net/2013/04/30/curious-channels\n在编写 golang 程序的过程中,channel 会经常使用。本文对 channel 的使用的确很特别,同时也非常实用。\n原文在此:http://dave.cheney.net/2013/04/30/curious-channels\n翻译:http://mikespook.com/2013/05/%E7%BF%BB%E8%AF%91%E7%BB%9D%E5%A6%99%E7%9A%84-channel/#more-1635"
October 4, 2013
VIM编辑器下go语法高亮显示
"Go in Vim The standard Go distribution includes a Go syntax file for Vim in go/misc/vim/.\nInstallation Instructions Place $GOROOT/misc/vim/syntax/go.vim in ~/.vim/syntax/ and put the following in ~/.vim/ftdetect/go.vim:\n在go的安装目录里有/misc/vim/syntax 他 /misc/vim/ftdetect 两个目录,将里面的文件复制到~/.vim/相应的目录里即可。\nau BufRead,BufNewFile *.go set filetype=go\nExtras and Alternative Files An alternative indent file for Vim by Alecs King can be found here.\nAutocompletion The gocode daemon by nsf includes a vim script …"
October 3, 2013
ZeroMQ的模式-Publish-Subscribe[转]
"Publish-subscribe Pattern:发布订阅模式。\n现实中,并不是所有请求都期待答复,而不期待答复,自然就没有了状态。所以相对于REQ-REP,PUB-SUB模式容易理解也简单得多。广播听过吧?收音机用过吧?就这个意思。\n相应地,该模式下的socket也就两种:ZMQ_PUB \u0026amp; ZMQ_SUB。 分别对应电台和收音机。\nZMQ_PUB ZMQ_PUB主要用来让消息发布者用来散发消息的。所有连接上的peer都能收到由它散发的消息。 zmq_recv(3) 这个API是不能用在这个socket上的,原因显而易见。而zmq_send作用在该socket上时是永远不会阻塞的,如果订阅者异常,发出的消息则会被丢弃。\nSummary of ZMQ_PUB characteristics\nCompatible peer sockets ZMQ_SUB Direction\nUnidirectional\nSend/receive pattern\nSend only\nIncoming routing strategy\nN/A\nOutgoing routing strategy …"
October 3, 2013
ZeroMQ的模式-综述
"通过对 Guide 的阅读,可以发现ZeroMQ对这个世界中消息传输的模式进行了很好的抽象。为了描述模式,0mq定义了不同的socket。 0mq socket是0mq世界的东西,跟传统世界的socket是不一样的。\n我们知道,传统的socket其实就是访问下面两种(TCP \u0026amp; UDP)对象的同步的接口:\n面向连接的可靠字节流(SOCK_STREAM) 无连接的不可靠的数据报文(SOCK_DGRAM) 所以你可以说传统socket传输的是字节流或者独立的报文。\n而0mq的socket传输的是消息(Message)。它是对异步_消息_队列(MQ)的一种抽象。官方的原话是:\nØMQ sockets present an abstraction of an asynchronous message queue, with the exact queueing semantics depending on the socket type in use.\n异步的意思在这里指的是物理连接的创建、销毁、重连、传输对于用户来说都是透明的,这些东西都由0mq组织好了。它传输的是独立的**消 …"
October 3, 2013
ZeroMQ的模式-Requset-Reply[转]
"我们先来看看第一种模式:Request-Reply Pattern。 请求应答模式。\nRequest-Reply这个名字很直白,口语点说就是一问一答。可以使同步的遵循请求序的一问一答,也可以是异步的不按请求序的一问一答;其中也可以包含各种不同的路由策略——让谁来回答。zeromq定义的为这个模式服务的socket有:ZMQ_REQ, ZMQ_REP, ZMQ_ROUTER以及ZMQ_DEALER. 用他们进行合理的组合,就可以实现现实世界中各种不同的请求应答模式。\n分别来看:\nZMQ_REQ ZMQ_REQ做的事情就是发问,然后收答。发、收必须是严格按序进行。请求时对对端进行Round Robin,遇到异常则阻塞。官方对这个socket的总结如下:\nSummary of ZMQ_REQ characteristics\nCompatible peer sockets ZMQ_REP Direction\nBidirectional\nSend/receive pattern\nSend, Receive, Send, Receive, …\nOutgoing routing strategy …"
October 3, 2013
ZeroMQ的模式-Pipeline[转]
"Pipeline pattern 管道模式。\n这种模式描述的场景是数据被散布到以管道方式组织的各个节点上。管道的每一步都连接一个或多个节点,连接多个节点时数据以RR方式往下流。\n注意是流,意味着数据跟发布模式一样是单向的。这个模式对应的socket是ZMQ_PUSH和ZMQ_PULL.\nZMQ_PUSH 用来向下游节点发消息。下游多个节点时采取RoundRobin分发,_zmq_recv()_对于这个socket也是无效的。\n与Pub不同的是,当下游节点达到高水位(HWM)或者根本没有下游节点时,_zmq_send()_就阻塞了,消息并不丢失。\nSummary of ZMQ_PUSH characteristics\nCompatible peer sockets ZMQ_PULL Direction\nUnidirectional\nSend/receive pattern\nSend only\nIncoming routing strategy\nN/A\nOutgoing routing strategy\nRound-robin\nZMQ_HWM option action\nBlock …"
October 2, 2013
gozmq的安装与使用教程(zeromq分布式消息队列+golang)
"实现功能:用go实现消息队列的写入与读取(打算用在发送邮件服务)\n环境工具: Centos 64X 6.4 zeromq 3.2.4: zeromq.org golang: http://golang.org/\n一.安装golang( http://golang.org/doc/install) 这一步很简单,只需要从 http://code.google.com/p/go/downloads 下载到服务器,解压到/usr/local/go目录,再设置一下系统变量就可以了.\nwget https://go.googlecode.com/files/go1.1.2.linux-amd64.tar.gz tar -C /usr/local -xzf go1.1.2.linux-amd64.tar.gz 设置系统变量GOROOT\nAdd /usr/local/go/bin to the PATH environment variable. You can do this by adding this line to your /etc/profile (for a system-wide …"