![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
erlang
文章平均质量分 84
aaaajw
追求清晰的逻辑
展开
-
emysql 源码阅读
emysql 也是一个常用的erlang mysql数据库驱动。相比较erlang_mysql_driver,emysql的代码结构更加清晰。emysql的使用非常方便,先执行emysql:start、emysql:add_pool,然后调用emysql:fetch/execute就可以开始执行sql语句了。1 emysql的启动 emysql:start 以监督树进程的形式,启动了两个原创 2016-07-01 14:43:53 · 2678 阅读 · 0 评论 -
prim_inet:async_accept
gen_tcp:acceptAccepts an incoming connection request on a listen socket. Socket must be a socket returned from listen/2. Timeout specifies a timeout value in ms, defaults to infinity. gen_tcp模块提供的a原创 2016-06-21 12:58:30 · 4232 阅读 · 1 评论 -
erlang_mysql_driver 源码分析4
其实本来是要讲tcp粘包问题的,刚好erlang_mysql_driver里面就有关于这个问题的一种解决方式,所以干脆就以erlang_mysql_driver的源码为例吧。tcp 粘包问题mysql的协议包是建立在tcp的基础上的,而tcp协议是流协议,也就是在使用的时候可以保证按顺序收到,但是并不是对方发送多少次,我们就能接收多少次。这就是tcp粘包问题了, 网上关于tcp粘包问题的原创 2016-06-23 17:59:44 · 1144 阅读 · 0 评论 -
erlang 取整数的位或设置整数的位
经常会用到使用一个32位或64位的数来存储有两种状态的列表,(列表长度=比如使用2,二进制10,来表示第一位为0,第二位为1最终我们存储的时候,只需要存储一个32位的数就可以完成这个列表状态的存储了。当我们决定使用这种实现的时候,就需要经常使用到两个接口,get_pos_state(Pos, Num) -> 得出Num的Pos位的状态,返回0或1set_pos_state(Po原创 2016-02-21 21:18:03 · 1811 阅读 · 0 评论 -
erlang_mysql_driver 源码分析2
pool模型mysql:fetch 和 mysql_conn今天想起网络上的一片文章,说erlang_mysql_driver的连接池实际上是没有意义的。 大概意思是,我们使用mysql:fetch去执行sql语句,mysql:fetch会call一条消息到mysql_dispatcher进程中。而当我们同一时刻大量调用mysql:fetch的时候,mysql_dispatcher中就会有多条ca原创 2016-06-16 23:02:13 · 1602 阅读 · 9 评论 -
erlang_mysql_driver 源码分析3
mysql_conn和mysql_recv 前面我们讲了,mysql_conn与mysql_dispatcher的关系,mysql_dispatcher维护多个连接池,每个连接池里有多个mysl_conn进程。我们查询sql时,由mysql_dispathcer选择合适的mysql_conn执行sql。 接下来,关心的是mysql_conn是如何执行sql的?mysql_recvmysql_c原创 2016-06-17 16:03:56 · 994 阅读 · 0 评论 -
erlang_mysql_driver 源码分析1
erlang_mysql_driver 是个mysql的数据库驱动 源码主要包含 mysql mysql_conn mysql_recv mysql_auth 这几个模块 mysql模块提供给外部调用的接口,包括启动、添加连接、执行sql语句。 mysql模块的另一主要功能是维护mysql_conn连接池,在执行sql语句时,选择合适的mysql_conn进程进行sql处理。 mysql_c原创 2016-06-17 12:58:36 · 1263 阅读 · 0 评论