2016-08-29 ruki
New features Add wait multi-processes interface Add uuid generator Add hash library module Add __tb_deprecated__ keyword and option Changes Move some utils interfaces to the hash module Rewrite random generator Bugs fixed Fix stdout compatibility issue for vs2015 Fix process arguments length limit 继续阅读 »
2017-02-21 Borg
Sharding & Data Distribution shard key 用于决定文档存于哪个 shard, 分为 range based 和 hash based。以 range based 为例,一个[min, max]范围形成一个chunk,取一个中间的数字将原来的区块分为两个(splite),再把新分出来的区块发送(migration)给其它shard。 继续阅读 »
2016-10-17 Alex Sun
参考文章 iOS学习笔记——HTTPS原理篇 HTTPS工作原理和TCP握手机制 图解SSL/TLS协议 How to Use SSL/TLS with Node.js 在上一篇博文《Node核心模块之crypto》中,提到了加密(摘要,加密解密,签名等)的四种常见类型: Hash(哈希) HMAC(基于哈希的消息认证码) 加密,解密 签名,验证 HTTPS的整个过程和以上几种方法密切相关。 CA证书 CA 即 Certificate Authority (数字证书认证机构),CA证书的签发以及验证包含以下三方: CA Server Client 过程包括: Server生成一对公钥和私钥 Server将公钥以及域名等信 继续阅读 »
2016-02-04 ruki
TBOX的线程池通过在每个worker中批量一次拉取多个task,对锁的竞争进行了优化。 由于每个task的函数实现不会太多,所以可以根据每个task的函数地址做hash,统计出每个task执行所花费的平均时间。然后根据这个平均值来动态计算每个worker一次拉取的task的数量,TBOX里面默认每个worker一次拉取10s的task量,这样可以尽可能的避免worker间锁的频繁抢占。 所有从等待队列被拉取出来的task,都会被放到pending队列中去,如果等待队列中的task都被取完了,某个worker处于了空闲状态,就会尝试去pending中,重新拉取其他worker还没有执行到的task, 这样可以解决某些task耗时 继续阅读 »
2015-12-31 浩阳
content {:toc} 起因 起因是这样的,在尝试前后端分离的这条道路上,我自己也在不断摸索,感觉要把大部分的坑都踩踩了。目前我用的技术是: webpack 自动构建 AMD 模块化 js Sass 预处理 CSS 使用前端模板引擎 handlebars 解决动态操作将 html 拼接在 js 中的问题 但最近写了一个项目类似知乎这样的多页网站。前端 url 的处理让我觉得不够优雅。我使用的是 hash 的方式处理动态 url 的,为此我专门在知乎上提了一个问题:前端如何处理动态url? 继续阅读 »
2015-07-20 veryyoung
tomcat-redis-session-manager 用tomcat默认的方式来管理session是很有问题的,比如项目重启tomcat,用户会话就会丢失,这样用户体验非常糟糕。应用只要稍微上点规模或者需要多机负载,这是必须做的工作了。 web server自带解决方案有2: tomcat有自带的session共享方式cluster,多个tomcat实时复制session。缺点是服务器之间会频繁的进行数据同步,如果在不同机器上网络开销会非常大,而且数据同步会有延迟的,这可能导致数据不一致,还有缺点就是session在每台机器都保有一份,太浪费资源了! ngnix有基于ip hash转发的策略,用这个来保证每个IP每次 继续阅读 »
2014-08-23 veryyoung
以下内容是基于HashMap源码注视的翻译 Hash表是基于Map接口的实现,这种实现提供了所有原始map的操作,允许null value和null key。 HashMap类大致相当于HashTable,只是它是不同步,并允许使用空值。 此类对map秩序的维护不做任何保证;尤其是,它并不保证顺序随着时间的推移,将保持恒定。 此实现提供常数时间复杂度的get和put操作,假设散列函数妥善分散桶与桶之间的元素。 迭代集合视图需要的时间复杂度与HashMap实例 的 "capacity"(存储桶的数目)再加上它的key-value 映射的数量 成正比, 因此如果迭代性能重要的话,非常重要的事情是一定不要把Map的初始容量设置得太高或 继续阅读 »
2016-02-05 ruki
New features Add automaticlly check libc interfaces Support custom allocator Add trace for allocator in the debug mode Add static_pool module Add stream interfaces for reading all data to string Add adler32 hash algorithm Add tb_memmem interface Add regex module with pcre, pcre2 or posix regex Changes Optimize stre 继续阅读 »
2016-02-05 ruki
新特性 自动检测所有系统libc接口,优先使用系统版本 支持自定义内存分配器,并且能够在debug模式下,获取每次分配的代码位置信息,用于自定义追踪 增加轻量级static_pool来维护整块buffer的内存分配,适合局部管理部分内存,pool虽然也能维护,但是底层基于large_pool,比较重量级,适合全局管理内存 增加stream快速读取全部数据到string的接口 增加adler32 hash算法 增加tb_memmem接口 采用pcre/pcre2/posix regex实现正则表达式库 改进 优化stream,支持对字符设备文件的读写 修改tb_init接口,增加allocator自定义内存分配器参数,实现用户的侵 继续阅读 »