- 博客(8)
- 资源 (5)
- 收藏
- 关注
原创 Redis实战之群设计
四类集合1、ID分配:string群ID分配:ids:chat消息ID分配:ids:msg:ChatID2、群内成员信息:zsetchat:ChatID 最后获取的群消息ID UserID3、群消息:zsetmsg:ChatID 群消息ID MsgInfo4、用户关注的群:zsetseen:UserID 最后获取的群消息ID ChatID操作:...
2018-02-13 15:30:34 336
原创 Python垃圾回收机制
采用引用计数来跟踪和回收垃圾,通过“标记-清除”解决容器对象可能产生的循环引用的问题,并结合“分代回收”以空间换取时间来进一步提高垃圾回收的效率。引用计数当一个对象被创建或复制时,引用计数加1;当一个对象被销毁时,引用计数减1;当引用计数为0时,就直接释放对象所占用的内存。优点: 1)实时性:一旦引用计数为0,内存被立即释放。缺点: 1)维护引用计数消耗资源。 2)循环引...
2018-02-12 15:21:03 218
原创 Redis一致性哈希算法
场景描述假设有N台缓存服务器,现在我们希望把3万张图片缓存到这些服务器上。目标:缓存尽可能均匀分布在各服务器上,以上它们能够平摊缓存压力。那么可以:无任何规律的将3万张图片平均缓存到所有服务器上。但当需访问某图片时,需要遍历所有服务器所有缓存项,效率太低、时间太长。hash(缓存项的KEY)%服务器的个数,决定缓存项被缓存到哪一台服务器上(缓存项KEY可取名字等)。查找的时候,同样根据...
2018-02-12 15:05:23 1175
原创 微信红包架构
业务场景分3个过程: 1. 发红包设置红包金额、数量从用户账号中扣除金额生成红包、发送抢红包链接2. 抢红包用户点击抢红包链接3. 拆红包用户拆红包修改红包剩余金额、剩余数量-1用户抢到红包用户的账户余额架构分析难点在于:大访问高并发。解决方法:请求过滤。这是因为:只有少数人可以抢到红包,大部分的请求都属于无效请求,因此要把大量无效的请求...
2018-02-12 14:48:03 615
原创 TCP/IP疑难点
序列号与确认号概念 序列号Seq:告诉对方自己本次发送的数据从*号开始。初始序列号ISN(initial sequence number),由发送端和接收端各自按照一定的算法随机生成。确认号Ack:自己上一次已经成功收到的数据字节序列号+1。用于告诉对方,该确认号之前的数据都已收到,自己下一次想接收字节序列号从该确认号开始的数据。初始序列号之所以采用随机方法产生,主要是从网络安全方...
2018-02-12 13:33:37 465
原创 求无序数组排序后相邻两个数的最大差值
方法一(位图法):遍历原数组,求出最大值Max和最小值Min;创建一个长度为k(k=Max-Min+1)的新数组Array;遍历原数组,把原数组每一个元素插入到新数组Array对应的位置,比如元素的值为n,则插入到Array[n-min]当中。此时Array的部分位置为空,部分位置填充了数值。遍历新数组Array,统计出Array中最大连续出现空值的次数+1,即为相邻元素最大差值。
2018-02-06 15:48:39 2304 1
原创 B+树
概念B+树,是B树的一种变形树。特性一棵m阶的B+树与m阶的B树的差异在于:若某节点有n个孩子,则该结点包含的关键字个数为n; (对于B树,节点包含的关键字个数为:n-1)B+树的数据(关键字及指向关键字记录的指针)都存储在叶子结点中,分支结点均为索引(其子树根结点中最大/最小关键字),且叶子结点是按关键字自小而大的顺序链接。 (对于B树,分支结点和叶子结点都存储数据)
2018-02-06 11:10:31 2141
原创 QPluginLoader 加载/卸载插件
最近在用QPluginLoader为server程序做一个打补丁的功能,即让server程序定时检索是否有最新的补丁包,若有则下载并替换原先的功能,从而使server程序在不退出的情况下实现不间断升级。 QPluginLoader的使用方法如下。接口定义接口类必须是虚基类,除构造函数、析构函数(最好定义为虚函数)外的成员函数都必须是纯虚函数。// 定义接口class SGISSvr
2018-02-05 20:29:57 9980 2
Windows Redis 集群搭建工具
2017-04-19
Win7 + VS2013 + FastCGI + gSOAP搭建 WebService
2017-01-06
Apache2.2 + FastCGI + gSOAP搭建 WebService工具
2017-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人