- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 初见zookeeper
作为一个资深C++程序员, 第一次用java写zookeeper客户端程序, 我完全被震撼到了.用Eclipse创建Maven工程,规范性地填写你的代码组织(groupId),还有工程名称(artifactId). 很容易地创建了一个helloworld的java工程. 从maven仓库(https://mvnrepository.com/) 查找zookeeper的索引信息往pom.xml文件...
2019-03-19 18:50:59 140
原创 具体数学笔记 第3章高德纳数的证明与取模二元运算
高德纳数的证明:假设有一个高德纳数,定义为递归式(3.16)K0=1Kn+1=1+min(2K⌊n/2⌋,3K⌊n/3⌋),n⩾0\tag{3.16}\begin{aligned}K_0 &= 1\\K_{n_+1} &= 1 + min(2K_{\lfloor n/2 \rfloor} ,3K_{\lfloor n/3 \rfloor}), n \...
2019-01-27 22:25:25 511
原创 具体数学笔记 番外篇 数学书中的水平
数学书中出现的水平其实可以分为两大类:一类是已知某种性质, 让你证明*一个对象符合这个已知性质*一群对象符合这个已知性质*一群对象符合,或者不符合这个性质*寻找让这个性质为真的充要条件给你一群对象, 让你自己去探寻这群对象的性质.水平1 给定一个显式对象xxx和一个显式性质 P(x)P(x)P(x),证明 P(x)P(x)P(x)为真.这里的问题在于对所宣称的某个事实寻求一个证...
2019-01-26 23:16:06 363
原创 具体数学笔记. 3.1,3.2 整值函数及顶和底的应用
整数是离散数学的支柱, 我们常常需要将分数或者任意的实数转换成整数. 本章的目的就是熟悉并熟练掌握这样的转换.本篇笔记并不是单纯抄书上的公式. 对例题的推演增加自己的理解步骤.3.1 顶和底对于所有的实数,有如下定义:(3.1)⌊x⌋小于或者等于x的最大整数;⌈x⌉大于或者等于x的最小整数;\tag{3.1}\lfloor x \rfloor {\footnotesize 小于或者等于...
2019-01-24 23:22:37 595
原创 具体数学笔记2.6
这小节的内容用微积分∫\int∫类比累加∑\sum∑, 读起来天马星空. 于是根据我自己的理解重新写了这篇笔记. 记号里和书中的有些许不同在第二章的前几节中,已经学习了多种直接处理合适的方法, 现在需要用更加广阔的视野,从更高的层次来审视求和问题.从微分说起, 微分是指f(x) 在x足够小时,函数值的变化量:即:limΔx→0f(x+Δx)−f(x)Δx\lim_{\Delta x ...
2019-01-10 22:08:43 332
原创 具体数学第2章笔记
2.1 记号本小节引入了和式的记号∑\sum∑具体有:∑k=1nak\displaystyle\sum_{k=1}^n a_kk=1∑nak表示a1+a2+...+ana_1+a_2 + ...+ a_na1+a2+...+an还可以写成一般形式∑1⩽k⩽nak\sum_{\mathclap{1\leqslant k \leqslant n}} a_{k}1⩽k⩽n∑...
2019-01-09 19:50:13 254
原创 具体数学笔记 第一章
约瑟夫问题。依然从研究小的情况开始人数(n)123456幸存者编号J(n)113135可得数学表达式:(1.8)J(1)=1;J(2n)=2J(n)−1;J(2n+1)=2J(n)+1.\tag{1.8}\begin{aligned}J(1)& = 1;\\ J(2n)& = 2J(n) -1;\\J(...
2019-01-04 21:21:48 360
原创 初见mongodb: find命令源码一撇
在上周尽管磕磕碰碰地完成了一次查mongo询任务,但总想一谈工具背后的真相,即为什么Mongodb不支持sql?虽然我知道它是NoSQL系列的, 但还是好奇着它的查询是怎么实现的. 上网找了mongodb的代码,最新版的是4.0.5. https://fastdl.mongodb.org/src/mongodb-src-r4.0.5.zip 匆匆一瞥,尽管Mongodb的源码有超过一万个C...
2018-12-26 10:05:16 853 1
原创 Tail_queue分析
起标题时在犹豫着要不要沿用“libevent源代码分析”,犹豫的原因是tail_queue其实是率属于linux的源代码。它在/usr/local/include/sys/queue.h中。但是我却是在看libevent的时候才发现它的。tail_queue这个名字很奇怪,是个queue却冠以tail前缀。貌似是个新的数据结构,但是一路跟下来却更像是一个双向链表。队列允许中间插值吗?但它可是提
2013-12-26 23:22:01 1484 1
原创 Libevent源代码分析笔记二,初始化
event_base是libevent的核心对象,它代表了libevent的事件处理框架。在libevent的官方网站上,它号称支持 /dev/poll, kqueue(2), event ports, POSIX select(2), Windows select(), poll(2), 跟epoll(4).
2013-12-25 20:34:41 1166
原创 Libevent源代码分析笔记一,初见libevent
项目当中用到了libevent,遂分析之。libevent是一个网络库,在分析它之前,先小结一下服务端网络编程架构:int main(int argc,char** argv) { //Socket初始化 .... //Create epoll .... for(;;) { epoll_wait(epollfd,events,MAXEVENTS,-1)
2013-12-24 23:10:19 757
原创 线程的数量
在计算密集型的程序中,最佳线程数就是CPU的核数*个数。这是因为在SMP(对称多处理器)环境下,每个CPU都有一个可执行队列(run_queue)。如果一个进程处于TASK_RUNNING状态(可执行状态)则它会被加入到其中一个run_queue(且同一时刻仅会被加入到一个run_queue),以便让调度程序安排它在这个run_queue对应的CPU上面运行。一个进程一旦被安排在某个CPU上运
2013-12-17 22:12:02 633
原创 Socket编程中常见的错误
(一) accept句柄耗尽:服务器每次accept一个链接之后,都会分配新的socket资源。Linux下对每个进程所能使用的文件句柄数是有限制的,默认是1024。扣除stdin,stdout,stderr,只有1021个句柄可用。一旦出现了accept的连接数超过了这个限制后就会很尴尬:accept返回-1,errno = 24,即EMFILE。如果采用Select、poll 或者epo
2013-12-11 12:50:51 3079
原创 轻松应对C10k问题
传统的、教科书里的I/O复用等待函数select/poll在处理数以万计的客户端连接时,往往出现效率低下甚至完全瘫痪,,这被称为C10K 问题。本文尝试着以一个最简单的单线程epoll程序为基础,轻松应对收发数据不频繁的过万客户端并发连接。并以此回顾C10K问题,介绍应对C10K问题的本质方法,线程模式的选择,介绍服务器编程流行的Reactor模式。 顺带介绍怎么应对socket句柄耗尽。
2013-12-08 19:18:00 1086
原创 一步异步Socket---Linux服务器编程入门之非阻塞IO简介
写惯客户端的人总觉得服务器开发高深而又神秘。纵观服务器编程,大概可分为异步I/O线程模式(如几个线程处理SOCKET,几个线程处理计算,线程个数限制等),锁及数据共享,内存池等。本文尝试着客户端程序员的角度为起点,介绍服务端编程的基础---异步I/O。对于客户端程序来讲,Socket是个很简单的东西。阻塞的API,操作完成后才会返回。完全可以像编写本地程序一样的编写网络程序。尤其是VC的C
2013-12-06 21:14:04 855
Debug.Hacks中文版_深入调试的技术和工具
2013-12-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人