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

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

通常,开发者在某个时间段都会同时使用多个编程语言。经常在语言之间的上下文也有可能导致发生错误的结果。例如,如果你在Python和Javascript之间来回切换,很有可能你会错误地评估一个空数组array是true还是false。同样的,如果你在Go与Javascript之间来回切换,有可能你会错误地评估`switch`声名的默认行为是往下走还是跳过。总结语言之间的差异可以帮助你解决这些潜在问题,并且可以更容易地在多个语言来回切换

  • huangyanxiong
    huangyanxiong
13 min read
将shadowsocks转换为HTTP代理
Shadowsocks

将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 -y 配置 sudo echo "socksParentProxy = localhost:

  • huangyanxiong
    huangyanxiong
1 min read
Docker的OOM事件
Docker

Docker的OOM事件

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

  • huangyanxiong
    huangyanxiong
2 min read
对象存储

构建自己的对象存储

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

  • huangyanxiong
    huangyanxiong
3 min read
使用Nginx作为Websocket代理

使用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_upgrade { default upgrade; '' close; } upstream websocket

  • huangyanxiong
    huangyanxiong
2 min read
认识ServerLess架构
serverless

认识ServerLess架构

ServerLess是一种架构,我们可以成称它为"无服务器架构",它不是真的不需要服务器,而是基于FaaS(Function as a Service,函数即服务)的基础衍生出来的应用的架构方式,在认识serverLess架构之前我们先可以理解FaaS,这样我们对ServerLess就会有更好的理解。 FaaS是一种云计算服务,允许客户在不构建一个复杂的基础设施的情况下开发,运行和管理应用程序。在2014年10月先由hook.io提供给业界,接着AWS推出Lambda,2016年Google Cloud Functions,Microsoft Azure Functions对外提供服务,接下来IBM的OpenWhisk并开源 ServerLess架构相对与传统的架构有以下这些优点 降低运营成本 Serverless是非常简单的外包解决方案。它可以让您委托服务提供商管理服务器、数据库和应用程序。

  • huangyanxiong
    huangyanxiong
3 min read
vue组件间的通讯

vue组件间的通讯

vue组件间通讯主要有两种,一种使用事件总线的方式,两种是使用外部状态管理器vuex 事件总线 这种方式的缺点就是不适合开发大型的应用,主要工作原理是使用事件,当应用逐渐长大,开发人员越来越多,定义的事件名称就会可能出现重复,导致应用不能正常工作,通常构建大型应用不建议使用这种通讯方式,适合个人短期的小应用,其优点就是简单,快速构建应用 Bus 创建事件总线中介 import Vue from 'vue' export default new Vue(); Items <template> <div> <ul&

  • huangyanxiong
    huangyanxiong
3 min read
教你怎么使用破屏手机

教你怎么使用破屏手机

不下心就把手机跌破屏,还等着手机上网的,那些没有回到消息,很抱歉,在这里说声"对不起"。逼不得已,想到勉强能用办法,就是通过笔记本来控制手机,虽然不能离开笔记本,也只能迁就了 安装基础软件工具 在安装stf之前需要先安装一些基础接口和库 Node.js Node.js是基于Chrome's V8 JavaScript 引擎,使用事件驱动,非阻塞式I/O,轻量级编程语言 curl -sL https://deb.nodesource.com/setup_

  • huangyanxiong
    huangyanxiong
3 min read
在Laravel的中间件获取路由参数

在Laravel的中间件获取路由参数

由于要做文件的上传到OSS,上传后要删除本地文件,并且响应客户端下载这个文件,如果把调用删除操作写在控制器,则无法响应客户端下载操作,因此使用Laravel的终止中间件来做个操作,下面整个处理流程 还有一个问题就是Laravel中间件获取参数的问题,下面是解决方式 public function handle($request, Closure $next) { echo $request->route('id'); return $next($request); }

  • huangyanxiong
    huangyanxiong
1 min read

使用supervisor管理进程

Supervisor是一个C/S架构的软件,允许其用户在类UNIX操作系统上控制多个进程,类似与systemd,但没有systemd那么强大,由supervisord作为服务端,supervisorctl提供CLI方式进行管理,提供Web Server服务组建进行远程管理和验证 安装Supervisor Debian/Ubuntu ➜ sudo apt-get install supervisor RedHat/Fedora ➜ yum install python-simplevisor.noarch supervisor 配置说明 配置远程管理http_server ; http server config [inet_http_server] port=

  • huangyanxiong
    huangyanxiong
3 min read

Docker可信注册

Docker Trusted Registry (简称DTR),中文Docker可信注册表,通俗的理解就是Docker镜像的仓库,Docker的企业级的镜像存储解决方案,你可以将它安装在防火墙之后,使用它来管理应用镜像,内置基于角色RABC访问控制系统 DTR架构 你可以把它部署到本地服务器或者云服务器中来管理和存储应用镜像,也可以把它部署到swarm集群woker Node中 DTR内部组件 Name Description dtr-api-<replica_id> 执行DTR的业务逻辑,为APi和web应用服务 dtr-etcd-<replica_id> 使用etcd key-value 持久化存储配置信息 dtr-jobrunner-&

  • huangyanxiong
    huangyanxiong
2 min read

sass基础与扩展

Sass是CSS的扩展,为基本语言增添了更为强大的特性。 它允许您使用变量,嵌套规则,混合,内联导入等等,并提供sass,scss两种的语法选择,具有完全CSS兼容的语法,Sass可以很好的帮助你组织好大型样式表,特别是在Compass样式库的帮助下,接下来我们可以体验Sass的特性 变量 可以使用$来定义变量,就像PHP,他可以存储任何你想重用的信息,比如字体,颜色;然后可以在样式表中引用这个变量 // 定义变量 $font-stack: Helvetica, sans-serif $master-color: #333 body font: 100% $font-stack //use font var

  • huangyanxiong
    huangyanxiong
4 min read

欢迎订阅