Loading

邢栋博客

nginx负载均衡 - 根据url做一致性hash

实现前奏 目标:按照指定的参数(如分类/商品编号)做一致性hash,从而保证相同数据到一台机器上 先说下nginx里$request_uri和$uri的区别 $request_uri This variable is equal to the original request URI as received from the client including the args. It cannot be modified. Look at $uri for the post-rewrite/altered URI. Does not include ho...

大小端模式

不同机器内部对变量的字节存储顺序不同,有的采用大端模式(big-endian),有的采用小端模式(little-endian)。 大端模式是指高位字节数据存放在低地址处,低位字节数据放在高地址处,也称为高尾端 小端模式是指低位字节数据存放在低地址处,高位字节数据放在高地址处,也称为低尾端 在网络上传输数据时,由于数据传输的两端可能对应不同的硬件平台,采用的存储字节顺序也可能不一致,因此 TCP/IP 协议规定了在网络上必须采用网络字节顺序(也就是大端模式)。 通过对大小端的存储原理分析可发现,对于 char 型数据,由于其只占一个字节,所以不存在这个问题...

vim常用操作笔记

普通模式下 w 跳转到下个符号或者单词 b 跳转到上个符号或者单词,对应的大写的WB,跳转的尺度会更大些,比如 I'm 小写会默认是三个,大写会默认为一个 x 删除当前字母 dw 删除下个符号或者单词 db 删除上个符号或者单词 dt+字母 df+字母 删除到某个字母 复制 ctrl+v,然后用鼠标选择要复制的,然后 y,然后p进行粘贴 替换 :s/java/php 替换当前行第一个java为php :s/java/php/g 替换当前行所有的java为php :1,$s/java/php 替换第一行开始到最后一行的第一个java为php :1,...

Linux之awk命令

1.awk行处理方式与格式 awk一次处理一行内容 awk对每行可以切片处理 awk '{print $1}' //输出首个单词 uname -a | awk '{print $1}' 命令行格式 awk [options] 'command' file(s) 脚本格式 awk -f awk-script-file file(s) command1:pattern {awk操作命令} 操作命令:内置函数: print() printf() getline() 控制指令: if(){...}else{} while(){...} awk 内置变量 (...

php之stream_get_line()和fget()读取文件

php之stream_get_line函数和fget函数读取文件 1.txt内容如下 1111111111111111111112111111111111111111111211111111111111233333333333333 stream_get_line示例 <?php $file_path = './1.txt'; $fp = fopen($file_path, 'r') or die("open file failure!"); $line = 0; if ($fp) { while ($info = stream_...

关于栈内存和堆内存

数据结构中的栈和堆 栈:是一种连续储存的数据结构,具有先进先出的性质。通常的操作有入栈(压栈)、出栈和栈顶元素,就要将之前的所有元素出栈才能完成。类比现实中的箱子一样。 堆:是一种非连续的树形储存结构,每个节点有一个值,整棵树是经过排序的。特点是根节点的值最小(或最大),且根节点的两个子树也是一个堆。常用来实现优先队列,存取随意。 内存中的栈区和堆区 一般说的内存,指的是计算机的随机储存器(RAM),程序都在这里面运行。 栈内存:由程序自动向操作系统申请分配以及回收,速度快,使用方便,但程序员无法控制。若分配失败,则提示栈溢出错误。注意,const局部变...

golang声明通道struct{}

sign := make(chan struct{}, 3) sign <- struct{}{} <-sign 声明通道sign的时候以chan struct{}作为其类型的。其中的类型字面量struct{}有些类似于空接口类型interface{},它代表了既不包含任何字段也不拥有任何方法的空结构体类型。 struct{}类型值的表示方法只有一个,即:struct{}{}。并且,它占用的内存空间是0字节。确切的说,这个值在整个go程序中永远都只会存一份。虽然我们无数次的使用这个值的字面量,但是用到的却都是同一个值。 当我们仅仅把通道当做传...

go语句及其执行规则(goroutine)

go语言不但有着独特的并发编程模型,以及用户级线程goroutine,还拥有强大的用于调度goroutine、对接系统线程的调度器。 这个调度器是go语言运行时系统的重要组成部分,它主要负责统筹调配go并发编程模型中的三个元素,即:G(gotoutine的缩写),P(process的缩写)和M(machine的缩写)。 其中M指代的是系统级线程。而P指的是一种可以承诺若干个G,而且能够使这些G适时地与M进行对接,并得到真正运行的中介。 demo: package main import ( "fmt" //"time" ) func ma...

关于golang值的内存寻址

go语言哪些值不可以寻址 1.常量的值。 2.基本类型值的字面量。 3.算术操作的结果值。 4.对各种字面量的索引表达式和切片表达式的结果值。不过有一个例外,对切片字面量的索引结果值却是可寻址的。 5.对字符串变量的索引表达式和切片表达式的结果值 6.对字典变量的索引表达式的结果值。 7.函数字面量和方法字面量,以及对它们的调用表达式的结果值。 8.结构体字面量的字段值,也就是对结构体字面量的选择表达式的结果值。 9.类型转换表达式的结果值。 10.类型断言表达式的结果值。 11.接收表达式的结果值。 总结:不可变的、临时结果和不安全的 1.不可变的值不...

golang笔记之Printf函数

package main import "fmt" import "os" type point struct { x, y int } func main() { //Go 为常规 Go 值的格式化设计提供了多种打印方式。例如,这里打印了 point 结构体的一个实例。 p := point{1, 2} fmt.Printf("%v\n", p) // {1 2} // 如果值是一个结构体,%+v 的格式化输出内容将包括结构体的字段名。 fmt.Printf("%+v\n", p) // {x:1 y:...