自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sunface撩技术

大道至简,技术如歌,欢迎来到Sunface的博客,https://im.dev

  • 博客(13)
  • 收藏
  • 关注

转载 [Golang]OS系统调用浅析

上回讲Goroutine状态变换的时候,遗留了一部分关于Syscall处理的内容,这次打算把Go语言对Syscall的处理机制系统的总结一下,放在今天这篇文章中。Go 语言库对Syscall的封装我们知道Go是一门面向系统级开发的Native编程语言,与C/C++ 类似,Go的编译器会直接将程序编译、链接成本地可执行文件。理论上,它可以完成任何C/C++语言能完成的。作为支撑该特性的重要方面,Go

2015-12-11 15:26:32 8071

转载 Golang和Erlang消息传递机制对比

上一篇文章介绍了 Go 和 Erlang 在调度器的实现,本文将简要介绍这两种并发语言的消息传递机制简要对比Erlang和Go虽然在实现及功能上差异较大,但是都支持高并发的轻量级用户任务(Erlang的轻量进程,Go的Goroutine), 并且都采用了消息传递的方式作为任务间交互的方式。在Erlang中,采用了一种比较纯粹的消息传递机制,进程间几乎没有任何形式的数据共享,只能通过彼此间发送消息进

2015-12-11 15:25:22 5763 1

转载 Golang和Erlang的IO调度浅析

之前关于调度器的对比分析的文章,在结束时遗留了一些问题:当系统出现高并发的IO访问时,如一个网络服务器通常要并发处理成百上千的链接,每个链接可能都是由一个用户任务执行的,那么将会出现大量阻塞的IO操作,如果为每个阻塞操作都单独分配一个OS线程,那么系统很容易就会退化成多OS线程的系统,轻量任务的优势将无从谈起。本文试图回答这个问题,通过分析Go和Erlang对于IO、特别是网络IO的优化机制,了解

2015-12-11 15:24:17 3357

转载 Golang和Erlang的并发调度浅析

Go 语言和 Erlang 都是面向并发应用的语言,都采用轻量级线程和消息传递模型。尽管Go在语法上也支持共享,但必须以通信的方式同步方能保证其正确性。Erlang则是完全不支持进程间的共享,状态信息完全需要依靠消息彼此传递。从底层来看,在 Google 官方编译器中,Go 语言的 Goroutine 是一种类似协程的结构,由于采用了定制的C编译器来构建,因此其上下文切换的效率要高于C库的 cor

2015-12-11 15:23:06 6866

原创 [Erlang]通用的erlang优化设置

设置是我在多个项目中通用的,不过根据应用场景的不同,还会有其它细调,就不在这一一说明了。  - Sunface    +K true 开启epoll调度,在linux中开启epoll,会大大增加调度的效率+A 100        异步线程池,为某些port调用服务+P 1024000 最大进程数+Q 65535 最大port数+sbt db 绑定调度器,绑定后调度器的任务队列不会在各个CPU线程

2015-12-10 15:11:32 6851

翻译 用消息系统实现分布式事务的简单设想

前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。  上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?!在搜索广告系统中,当用户点击某广告后,除了在

2015-12-09 15:56:12 3349 1

原创 简单易懂的空间坐标索引12

第一篇讲到了传统的索引如B树不能很好的支持空间数据,比如点(POI等)、线(道路、河流等)、面(行政边界、住宅区等)。本篇将对空间索引进行简单分类,然后介绍网格索引。(深入浅出空间索引1:http://www.cnblogs.com/LBSer/p/3392491.html)一、空间索引有哪几种?  传统索引使用哈希和树这两类最基本的数据结构。空间索引虽然更为复杂,但仍然发展于这两种数据结构。因此

2015-12-09 15:52:58 3653

转载 简单易懂的空间坐标索引1

一、问题  先思考个常见的问题:如何根据自己所在位置查询来查询附近50米的POI(point of interest,比如商家、景点等)呢(图1a)?  每个POI都有经纬度信息,我用图1b的SQL语句在mySQL中建立了POI_spatial的表,其中lat和lng两个字段来代表纬度和经度。为后续分析方便起见,我人造了40万个POI数据。 二、传统的解决思路方法一:暴力方法  该方法的思路很直接

2015-12-09 15:52:07 3699 1

原创 TCP参数调优详解

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+AC

2015-12-09 15:25:05 18167 1

原创 GeoHash算法详解

引子机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西。某一天机机到北海公园游玩,肚肚饿了,于是乎打开手机地图,搜索北海公园附近的餐馆,并选了其中一家用餐。饭饱之后机机开始反思了,地图后台如何根据自己所在位置查询来查询附近餐馆的呢?苦思冥想了半天,机机想出了个方法:计算所在位置P与北京所有餐馆的距离,然后返回距离机机的计算思想很朴素,就是通过过滤的方法来减小参与计算的餐

2015-12-07 19:40:49 9502 2

原创 [Golang] groupcache的简单例子

在网上查了挺多groupcache的相关信息,但是搜出来大部分都是copy,实际的例子也没有,所以就看了下源码,也在golang-nuts上问了,github上搜索了一些groupcache的使用例子,在此作个总结,目前对这个缓存库还仅处于了解状态大概介绍其实关于groupcache的介绍网上非常的多,搜索出来清一色都是说的介绍,当然也有配图如何部署,但是文字与配图完全不在一个时空,图也是copy

2015-12-07 17:21:46 6176 2

原创 [Golang]优秀开源库剖析

1.blelve 地址:https://github.com/blevesearch/bleve        介绍: 现代化的文本索引库,可以做多种形式的索引及搜索查询,对于缓存内容索引应该是非常好用的.2.cockroach 地址:https://github.com/cockroachdb/cockroach 介绍: 是新型的分布式SQL数据库,支持事务处理,具有强一致性的特点。主要目标

2015-12-07 15:23:26 5520

原创 TCP如何能正常关闭连接?

一、TCP连接关闭的几种方式:1、“正常”关闭:调用close()关闭socket、没close但进程正常结束(当然这是不应该的做法)、进程core掉、在shell命令行中kill掉进程,都可抽象成“正常”关闭。因为即使core掉,内核也会马上帮应用程序回收(close)socket文件描述符。     “正常”关闭,默认情况下(非默认即设置Linger下面会介绍),关闭端即客户端TCP层会发FI

2015-12-01 17:28:43 6203

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除