0%

log的一个典型应用场景就是实现log分级,比如线上环境不需要记录DEBUG的log信息。今天介绍一下glog。先看一个glog的简单例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//file name: glog.go
package main

import (
"flag"
"github.com/golang/glog"
)

func main() {
flag.Parse() // 1

glog.Info("This is a Info log") // 2
glog.Warning("This is a Warning log")
glog.Error("This is a Error log")

glog.V(1).Infoln("level 1") // 3
glog.V(2).Infoln("level 2")

glog.Flush() // 4
}
Read more »

介绍一下golang如何记log。

log

首先是golang自带的package log。使用godoc查看,godoc -http=:8001,然后就可以在localhost:8001/pkg/log就可以查看了。

最重要的是SetOutput这个函数,原型是func SetOutput(w io.Writer),决定了log应该输出到什么地方,默认是标准输出。下面是把log输出到文件的一个简单代码示例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main

import (
"log"
"os"
)

func main() {
f, err := os.OpenFile("logfile.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("file open error : %v", err)
}
defer f.Close()
log.SetOutput(f)
log.Println("This is a test log entry")
}
Read more »

C++11标准开始支持正则表达式,语法包括ECMAScript、basic、extended、awk、grep和egrep,其中ECMAScript是默认的语法,下面简要介绍一下。

Read more »

go的内存管理和tcmalloc(thread-caching malloc)很像,不妨先看看tcmalloc的实现。

tcmalloc是什么

tcmalloc是google推出的一种内存分配器,常见的内存分配器还有glibc的ptmalloc和google的jemalloc。相比于ptmalloc,tcmalloc性能更好,特别适用于高并发场景。

Read more »

公司最近在将Memcached替换成Aerospike,整理了一下学习笔记。

Aerospike是什么

Aerospike是一个高性能的分布式Key-Value NoSQL数据库,可基于行随机存取,索引存放在内存中。数据存取可以在内存中或者SSD。

Read more »

先给结论:中间人攻击(man in the middle attack),下面在展开说。

1. HTTPS

HTTPS是一种安全的构建在http基础上的安全传输协议。HTTPS由两部分组成:HTTPS和TLS。HTTP大家都很熟悉,全称是Hyper Text Transfer Protocal,超文本传输协议。HTTP的问题是数据是明文传输的,明文传输的问题在于HTTP整个传输过程中任意一个环节出问题都会导致信息的泄露以及篡改,比如一到年底就很常见的运营商流量劫持,这里就不展开细说了。

Read more »

在上一篇的go泛型编程里面简单地介绍了一下interface的使用,下面继续。

函数传参slice

先从一个问题开始:

有一个函数的输入参数是slice,但是slice里面的元素类型未知,如何来定义这个函数?

听上去很简单,很多人可能会写出下面的代码。

1
2
3
4
func MethodTakeinSlice(in []interface{}){...}
...
slice := []int{1,2,3}
MethodTakeinSlice(slice)
Read more »

开始文章之前我们要先弄清楚什么是『泛型编程』。

In the simplest definition, generic programming is a style of computer programming in which algorithm are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provided as parameters. – From Wikipedia.

简单来说就说,我们编写的代码不是针对特定的类型(比如适用于int, 不适用于string)才有效,而是大部分类型的参数都是可以工作的。

Read more »

Basic

解决什么问题

主要是缓解数据库压力

应用场景

许多Web应用都将数据保存到RDBMS(关系数据库管理系统,Relational Database Management System)中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等影响。

Read more »

周末看了关于Aaron Swartz的一些东西:一部电影 互联网之子 和一个web框架 webpy,这里写一下webpy的源码的简单分析。

webpy安装

webpy安装使用python的软件包管理工具(easy_install或者pip)安装就可以了。

1
sudo easy_install webpy
Read more »