/images/avator.png

xingliuhua

不见其增,日有所长。

唯一id

UUID UUID是由一组32位数的16进制数字所构成,所以UUID理论上的总数为16^32=2^128。 以连字号分为五段,形式为8-4-4-4-1

go内存分配(上)

概述 为了方便自主管理内存,做法便是先向系统申请一块内存,然后将内存切割成小块,通过一定的内存分配算法管理内存。 预申请的内存划分为spans、

go内存分配(下)

栈 栈区的内存一般是由编译器自动进行分配和释放,其中存储着函数的入参及局部变量,这些参数会随着函数的创建而创建,函数的销毁而销毁。 堆 堆区的内存

go绝知—unsafe包

go中指针 先看下go中的指针,go中的指针与c语言中的指针有很大不同: go指针不支持运算 不同类型无法转换 不同类型指针不可比较 我们不难看出,g

docker-compose

配置文件 一份标准配置文件应该包含 version、services、networks 三大部分,其中最关键的就是 services 和 networks 两个部分。 version: '2' services: web: image: dockercloud/hello-world ports: -

git

快速入门 克隆仓库 git clone http://git.oschina.net/yiibai/git-start.git //如果想在克隆远程仓库的时候,自定义本地仓库的名字,可以使用如下命令: git clone http://git.oschina.net/yiibai/git-start.git mygit-start 在现有目录中初始化仓库 如果不克隆现有的

树结构

平衡二叉树 平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构。 特点 非叶子节点只能允许最多两个子节点存在。 每一个非叶子节点数据分

golang性能分析

概述 我们要想分析数据,首先需要拿到prof文件或者叫概要文件。 Go 语言为程序开发者们提供了丰富的性能分析 API,和非常好用的标准工具。 这些 API 主

golang zaplog使用

zap zap使用 uber开源,zap可以在控制台、文件甚至发送数据到其他系统中,以此来记录日志。我们可以指定日志的级别,支持json结构化,方便

go值传递

参数值传递 函数传递的总是原来这个东西的一个副本,一副拷贝。比如我们传递一个int类型的参数,传递的其实是这个参数的一个副本;传递一个指针类型

hash一致性

普通hash 假如现在需要向4个redis存取图片,以图片的名字为key,value为图片实际存放的路径,我们可以取到key的hash值,然后

linux

linux主要目录 /bin 放二进制文件,都是可以运行的 /lib 存放系统最基本的动态连接共享库 /dev 放置外接设备,光盘u判断等,外接设备是不能直接使用的,需要

linux io模型

用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核

linux-压缩命令

gzip 压缩单个文件 gzip命令的使用方式很简单,命令后直接跟输入文件即可,gzip命令压缩后默认会覆盖源文件,生成以.gz为后缀的文件。 命令加-

nsq消息队列

nsq消息队列 NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。 Features

rabbitMQ

简介 RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言的。 在我们

defer语句

defer语句 defer及defer函数的执行顺序分2步: 执行defer语句,计算函数的入参的值,并传递给函数,但不执行函数,而是将函数压入

认证鉴权

认证鉴权 HTTP协议是无状态的和Connection: keep-alive的区别: 无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端