Golang import使用说明

我们在写Go代码的时候经常用到import这个命令用来导入包文件,而我们经常看到的方式参考如下:

import(
"fmt"
)

然后我们代码里面可以通过如下的方式调用

fmt.Println("hello world")

上面这个fmt是Go语言的标准库,他其实是去goroot下去加载该模块,当然Go的import还支持如下两种方式来加载自己写的模块:

1.相对路径

import “./model” //当前文件同一目录的model目录,但是不建议这种方式来import

2.绝对路径

import “shorturl/model” //加载gopath/src/shorturl/model模块

上面展示了一些import常用的几种方式,但是还有一些特殊的import,让很多新手很费解,下面我们来一一讲解一下到底是怎么一回事 Continue reading

安装zeromq时,出现 error while loading shared libraries: libzmq.so 错误的解决办法

Is this on Ubuntu? You'll need to add /usr/local/lib to ldconfig to be able to use ZeroMQ. Here's a web page with some info: http://ubuntuforums.org/showthread.php?t=420008

Here are the actual instructions:

Add /usr/local/lib to a new line in ld.so.conf:

$ sudo vi /etc/ld.so.conf

Rerun ldconfig:

$ sudo ldconfig

That should work (if I remember correctly). Let me know if you have any issues.

golang实现验证电子信箱和手机格式合法性(正则表达式)

邮箱验证

func checkEmail(email string) (b bool) {
 if m, _ := regexp.MatchString("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+", email); !m {
 return false
 }
 return true
 }

手机验证

package main
import (
 "regexp"
)

const (
 regular = "^(13[0-9]|14[57]|15[0-35-9]|18[07-9])\\d{8}$"
)

func validate(mobileNum string) bool {
 reg := regexp.MustCompile(regular)
 return reg.MatchString(mobileNum)
}

func main() {
 if validate("13888888888") {
 println("是手机号")
 return
 }

 println("不是手机号")
}

[必读]golang语言报错信息fatal error: all goroutines are asleep - deadlock!

出错信息fatal error: all goroutines are asleep - deadlock!
出错信息的意思是:
main goroutine线,期望从管道中获得一个数据,而这个数据必须是其他goroutine线放入管道的
但是其他goroutine线都已经执行完了(all goroutines are asleep),那么就永远不会有数据放入管道。
所以,main goroutine线在等一个永远不会来的数据,那整个程序就永远等下去了。
这显然是没有结果的,所以这个程序就说“算了吧,不坚持了,我自己自杀掉,报一个错给代码作者,我被deadlock了” Continue reading

golang日志模块测试

package main

import (
"fmt"
"log"
"os"
)

func main(){
logfile,err := os.OpenFile("d:/workspace/golang/test.log",os.O_RDWR|os.O_CREATE|os.O_APPEND,0);
if err!=nil {
fmt.Printf("%s\r\n",err.Error());
os.Exit(-1);
}
defer logfile.Close();
logger := log.New(logfile,"\r\n",log.Ldate|log.Ltime|log.Llongfile);
logger.Println("hello");
logger.Println("oh....");
logger.Fatal("test");
logger.Fatal("test2");
}

这里打开日志文件的时候,同时使用了""os.O_APPEND"这个,这样的话,日志会一直在文件最后面打印出来.

nginx为目录或网站加上密码认证 [转]

nginx可以为网站或目录甚至特定的文件设置密码认证。密码必须是crypt加密的。可以用apache的htpasswd来创建密码。

格式为:

htpasswd -b -c site_pass username password

site_pass为密码文件。放在同nginx配置文件同一目录下,当然你也可以放在其它目录下,那在nginx的配置文件中就要写明绝对地址或相对当前目录的地址。

如果你输入htpasswd命令提示没有找到命令时,你需要安装httpd。如果是centos可以执行如下来安装, Continue reading

Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程

在登录Linux时要执行文件的过程如下:
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,

执行的顺序为:~/.bash_profile~/.bash_login~/.profile

如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。

因为在 ~/.bash_profile文件中一般会有下面的代码:

if [ -f ~/.bashrc ] ; then
. ./bashrc
fi

~/.bashrc中,一般还会有以下代码:

if [ -f /etc/bashrc ] ; then
. /etc/bashrc
fi

所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。 Continue reading

sublime text 2.0.2 build 2221 注册码

----- BEGIN LICENSE -----
Andrew Weber
Single User License
EA7E-855605
813A03DD 5E4AD9E6 6C0EEB94 BC99798F
942194A6 02396E98 E62C9979 4BB979FE
91424C9D A45400BF F6747D88 2FB88078
90F5CC94 1CDC92DC 8457107A F151657B
1D22E383 A997F016 42397640 33F41CFC
E1D0AE85 A0BBD039 0E9C8D55 E1B89D5D
5CDB7036 E56DE1C0 EFCC0840 650CD3A6
B98FC99C 8FAC73EE D2B95564 DF450523
------ END LICENSE ------

php框架--php框架的连贯查询实现原理

如果你是一名使用过多种框架的php程序员,你一定见过这样的查询语句:

$result = $mysqlDb->limit(’0,10′)->order(‘id desc’)->findall();

上面的查询语句,连续使用->操作符进行操作,并最终返回一个查询结果,那么这是如何实现的呢。

我们来简单分析一下:

->操作符用来访问对象,上面的语句一共使用了3次->操作符,而最后一次返回的是查询结果,这说明,前2次->访问后,返回的应该是一个对象,因为在php中,如果你对一个非对象使用->操作符是不可能的。这告诉我们,$mysql实例中的limit和order方法都返回一个对其所在类自身的引用即 return $this,了解了这一点,那么我们就可以实现连贯查询了。请看站长写的示例代码: Continue reading