从零学习redis(0)--- 初识

Redis 全称是 Remote Dictionary Server,是一个使用C编写的开源、支持网络、基于内存、可选持久化的键值对存储系统。可以别用作数据库、缓存和消息中间件。 Redis支持的数据结构及基本命令展示 这里只是展示最基本的操作,更多内容请参考redis文档 string string类型是redis支持的最基本的数据类型,string类型的值可以是任何类型的字符串(包括二进制数据),例如你可以在一个建里保存一张jpeg图片。值的长度最大不能超过512MB。 set命令基本展示 127.0.0.1:6379> SET hello world // 设置一个值 OK 127

redis
发布于 6年前

[转]Golang中JSON使用小技巧

临时忽略掉struct中空字段 type User struct { Email string `json:"email"` Password string `json:"password"` } 当我们把用户信息返回给前端的时候显然需要忽略调Password 字段,则可以这样做: json.Marshal(struct{ *User Password bool `json:"password,omitempty"` }{ User:user, }) 临时添加额外字段 type User struct { Email string `json:"

go
发布于 6年前

git同时push代码到github、码云等多个平台

前提 我们一般为代码添加远程仓库一般是: git remote add <name> <url> 比如以我的一个代码库为例: git remote add origin git@github.com:yushuailiu/go-algorithm.git 这样我们就可以向github提交代码了。但是有时候我们可能想要把代码同时提交到gitee上,那么我们可以像上面一样添加一个新的仓库 git remote add gitee git@gitee.com:liuyushuai/go-algorithm.git 然后如果我们有代码更新我们需要同时更新origin和gitee

工具
发布于 6年前

创建最小的运行Go程序的Image

我们首先编写一个简单的Golang服务 package main import "net/http" func main() { http.HandleFunc("/", hello) http.ListenAndServe(":8001", nil) } func hello(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello world!")) } 运行服务 $ go run main.go 访问 http://127.0.0.1:8001 页面返回 Hello world! 构建运

go
发布于 6年前

Nginx 路由匹配

模式 含义 location = /uri = 表示精确匹配只有完全相等才会匹配成功 location ^~ /uri ^~ 表示对路由进行前缀匹配 location ~ /uri ~ 表示对路由进行正则匹配 location ~* /uri ~* 表示对路由进行不区分大小写的正则匹配 location /uri 不带任何修饰符也表示前缀匹配 location / 默认匹配,任何没有匹配到的uri 多个 location 配置的情况下匹配顺序为(匹配到某一等级就结束,同一规则时匹配长度长的优先): 首先精确匹配 = 其次前缀匹配 ^~ 其次是按文件中顺

Nginx
发布于 6年前

Go 条件编译

Go语言的条件编译是由go/build包支持的,通过条件编译我们可以实现根据不同的参数编译包里不同的文件。 Go是怎么支持条件编译的 Go通过在源代码里添加编译标签(build tag)实现条件编译的。编译标签是以// +build开始,并且出现在代码文件的最开始。构建选项规则如下: 以逗号分割的选项是并的关系 以空格分割的选项是或的关系 条件项的名字用字母+数字表示,!表示否定的意思 构建标签后必须留一行空行 例如如下的例子: // +build linux,386 darwin,!cgo 对应的布尔表达式就是 (linux AND 386) OR (darwin AND (NOT cg

go
发布于 6年前

网络七层模型和四层模型

网络模型历史 在网络刚开始发展的时候,网络协议是由各个互联网公司自己定义的,各家协议不能互通。这大大限制了网络的发展,为了解决这个问题,国际标准化组织1984年提出了标准模型OSI(Open Systems Interconnection Model)标准。这只是一个标准,TCP/IP协议是基于此设计的。 OSI模型 OSI模型是从上而下的,越底层越接近硬件,越往上越接近软件。七层模型依次是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。这种分层是思想是计算机科学中常用的方法,分层的好处就是各层只需要按照规定的接口和其他层交互,不需要管各层的具体实现,这样当需要某一层需要做调整时也

网络
发布于 6年前

Linux命令file

file介绍 file命令用来探测文件的类型 用法 -b:列出辨识结果时,不显示文件名称; -c:详细显示指令执行过程,便于排错或分析程序执行的情形; -f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称; -L:直接显示符号连接所指向的文件类别; -m<魔法数字文件>:指定魔法数字文件; -v:显示版本信息; -z:尝试去解读压缩文件的内容。 file源码编译安装 github库 以安装5.25为例 wget https://github.com/file/file/archive/FILE5_25

Linux
发布于 6年前

GO内存对齐

内存对齐的作用 平台原因(移植):不是所有的硬件平台都可以访问任意位置上的任意数据的,有些硬件只能在特定位置取特定数据。 性能问题:经过内存对齐,CPU的内存访问速度会提升。因为对齐的元素只需要一次内存访问,未对齐的需要两次。 性能问题 一般程序员会认为内存如下图所示,是有一个个的字节组成,而CPU却不是这样看待的。 CPU把内存当作一块一块的,块的大小可以是2、4、8、16字节大小,因此CPU读取内存是一块一块读取的。(块的大小称为内存读取粒度) 假设CPU要读取一个int型4字节大小的数据,分两种情况讨论: 数据从0字节开始 数据从1字节开始 假设内存读取粒度为4

go
发布于 6年前

PHP官方属性访问错误示例

PHP 可变属性的官方中文版Exampl1例子是错误的 官方地址 Example 1 <?php class foo { var $bar = 'I am bar.'; var $arr = array('I am A.', 'I am B.', 'I am C.'); var $r = 'I am r.'; } $foo = new foo(); $bar = 'bar'; $baz = array('foo', 'bar', 'baz', 'quux'); echo $foo->$bar . "\n"; echo $foo->$baz[1]

PHP
发布于 6年前