为Javascript开发者而准备的Go文档

通常,开发者在某个时间段都会同时使用多个编程语言。经常在语言之间的上下文也有可能导致发生错误的结果。例如,如果你在Python和Javascript之间来回切换,很有可能你会错误地评估一个空数组array是true还是false。同样的,如果你在Go与Javascript之间来回切换,有可能你会错误地评估switch声名的默认行为是往下走还是跳过。总结语言之间的差异可以帮助你解决这些潜在问题,并且可以更容易地在多个语言来回切换 这个文档是 Golang (or "Go") and ECMAScript (or "Javascript" / "JS")两个编程语言之间的比较。这两个都是很流行的编程语言。但它们并不相似。Javascript是事件驱动,动态类型的解释性语言,Go是静态类型编译性语言 »

将shadowsocks转换为HTTP代理

很多的软件都是仅支持http协议的代理,sock5协议的在软件方面支持还是比较少。而我们使用的fq工具最常用的就是shadowsocks(一个基于SOCKS5协议的代理工具),因此将shadowsocks转换一个http代理还是非常的有必要,现在已有一个工具可以实现这个功能,它就是polipo Polipo Polipo是一个Web缓存代理,它支持从sock5协议中获取数据返回,而且还支持其它类型的科学上网工具工具作为后台,并且可以缓存数据来加速网页打开速度 安装 Ubuntu/Debian sudo apt-get install polipo -y Redhat/Centos sudo yum install polipo »

Docker的OOM事件

OOM(Out Of Memory)内存不足,通常是由于某些不稳定的进程占用过多的内存造成,在Docker中称为OOM事件,当容器使用的内存过多时就会发生OOM事件,这个事件是由Linux内核的内存管理机制发起,并将是使用占用内存过多的容器Kill掉,保证系统的可持续运行。Linux内核为了保证系统的稳定性而将内存划分为两大部分用户空间与内核空间 用户空间是提供给用户进程所使用的内存空间。内核空间是仅提供给内核运行的空间。用户的进程是无法访问内核空间,而内核是可以访问用户空间与内核空间。在Linux内存管理机制中还存在一个定时任务,检查计算机的内存是否足够使用,分别收集以下几个指标 Total page cache as page cache is »

构建自己的对象存储

对象存储是一种计算机数据存储架构,它是把数据作为对象来管理,恰好与文件系统的存储相反,在文件系统中,数据的管理是通过扇区与磁道对数据进行管理,而且还有文件大小与目录数量的限制(每个分区的innode是有限的),当文件不断增加时读取速度也会变慢。在对象存储的架构中,每个对象通常会包含数据自己本身,文件的元数据(metadata),以及全局唯一的标识符,提供api提供给应用直接使用,并且可以很简单实现分布式数据存储 别说自己找不到对象,这时后宫三千都不止 构建自己的对象存储服务 使用Nginx+MongoDB+GridFS构建存储方案 Minio 是一个开源的对象存储服务并兼容Amazon S3 API Nginx+ »

使用Nginx作为Websocket代理

使用代理服务器主要是解决两个问题:1.多个websocket服务器的负载均衡。2.解决浏览器端跨域的问题。 浏览器端跨域 众所周知浏览器有个同源策略的机制,因此在Webscoekt,Ajax,Fetch在对不同的域发起请求时都会被限制,WebSocket协议与HTTP协议是不一样的,但是WebSocket的握手兼容HTTP协议的方式,使用Proxy指令的HTTP Upgrade参数的让HTTP协议升级到WebSocket协议,这样WebSocket就可以嵌入已有的基础设施,比如,和标准的HTTP协议共同使用80与443端口 多Websocket服务器高可用与性能 可以在中间在加入一个代理服务器Nginx,HAProxy,下面是使用Nginx的upstream指令 http { map $http_upgrade $connection_ »