
C++
murphy0626
河出伏流,其道大光
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Lucene为什么采用FST?为了模糊查询
对于Term词典,其实规模并没有大到当前的内存空间不能接受。英文词汇量一共也就几万,中文也类似,所占有的存储空间并不大。dragonToolkit是用有序链表存储Term词典的。这个确实是没有FST查询效率高的。Lucene为什么采用FST结构呢?为了满足模糊查询的要求。满足前缀查询、模糊查询、正则表达式查询。...原创 2020-04-03 16:24:19 · 437 阅读 · 0 评论 -
redis分析-SDS
redis仅仅在表示字符串常量时候使用C字符串 字符串的表示: struct sdshdr { // 记录buf数组中已使用字节的数量 // 等于SDS所保存字符串的长度 unsigned int len; // 记录buf数组中未使用字节的数量 unsigned int free; // 字节数组,用于保存字符串 char buf[]; }; 优点:1,保留长度,不用每次读原创 2015-08-05 22:09:29 · 731 阅读 · 0 评论 -
zeromq学习
1.zmq传输的底层字符串尾部没有空格 2.如果发布方没有订阅方,它会简单的丢掉所有消息。 3.问题:pubsub实现机制以及对网络的影响? 4.订阅方很慢,消息在发布方排队,使用高水位来避免该问题。 5.先,建 立允许你学习并测试你的设计不同部分的原型。不断给它们加压,直到他们崩溃掉,这样 你就知道你的设计有多强壮了。第二,投入到(investment)你的测试中。意思是建立测 试框架,确原创 2015-08-20 21:59:46 · 421 阅读 · 0 评论 -
zmq数据发布
现有一个利用zmq的数据发布API,传入发布数据时,加锁将数据放置到链表中,然后设置信号量。 另有一个线程一直循环,获取信号量,加锁链表,然后将数据发送出去。该种设计是否与zmq本身的设计理念不符合?替换方案1:传入发布数据,然后查看链表是否为空;如果链表不为空,则尝试将链表中数据发送,成功则持续发送直到链表为空,然后将传入的数据发送。如果链表为空时则将数据放入链表末端。if (list.empt原创 2015-09-30 09:33:13 · 711 阅读 · 0 评论 -
一种理性的设计过程:如何为何要复制
1.寻找哲学家的石头(ps:哲学家的石头,真善美结合体,此处意思应为,对完美的追求?):为何我们想要一个理性的设计过程 一个完美的理性人是他做的每一件事情都由一个好的理由。他采取的每一步都可以被证明是达成一个设计好的目标的最好的方式。我们大多数人都倾向于认为自己是理性的专家。但是,对大多数研究者来说,通常的软件设计过程表现的相当非理性。软件设计者开始时并没有对期望的行为和实现约束有一个明确翻译 2015-09-10 22:58:31 · 659 阅读 · 0 评论 -
C++API设计
虽然在平常的软件开发中,比较少开发API。但是应为确实做过一个有关API的项目,所以遇到相关的书籍也就大概过了一遍。其实平常的软件开发中,软件内部的接口也应该用到API设计的一些典型方法与建议。书中提到的API应该尽量隐藏实现的细节,看到这个就想到,学习类的时候。类的主要功能是封装,封装就是要避免暴漏细节。但是有时候,为了使用模板,确实会放开一些细节。另外很重要的一点就是不要将变量设置原创 2015-11-07 17:01:17 · 1174 阅读 · 0 评论 -
zeromq高水位
高水位的默认值设置为1000,单位为消息个数原创 2015-09-08 18:54:37 · 2799 阅读 · 0 评论 -
负载均衡(load balance)
vector::size_type为unsigned int型 采用轮询调度(Round-Robin Scheduling)算法 添加后将管道放置到活动的位置,并且增加活动的管道数目。原创 2015-10-15 22:33:26 · 433 阅读 · 0 评论 -
glibc detected
开发程序时候遇到以下问题: * glibc detected malloc(): memory corruption: 0x087cc298 ** 最终发现依赖的一个动态库已经编译了protobuf的静态库(编译时添加fPIC),又重新依赖protobuf的动态库时,出现该问题。删除对protobuf的动态库的依赖,解决该问题(或者,依赖编译时增加fPIC选项的动态库)。问题出现的过程如下:原创 2016-02-15 19:12:19 · 931 阅读 · 0 评论 -
那些年,我们一起泄露的内存
进程结束后,从堆上申请的内存,会不会自动释放?我们通常认为,进程存在,泄露的内存会一直处于未释放的状态。但是进程不存在了,这块内存释放还是未释放呢?答案是: 先看内存占用情况图: 代码如下: 运行后效果如下: 然后,然关闭进程,内存如下: 神啊,又多释放出来一些…… 至少,从这里获得的答案是,内存已经释放。但是在编程中,堆中申请的资源自己释放,是良好的编程习惯。原创 2016-02-04 19:30:41 · 302 阅读 · 0 评论 -
在HP-UX 11.11用swinstall安装gcc 4.2.3
标签: gccpath2009-05-23 15:10 8170人阅读 评论(0) 收藏 举报1.下载软件包(我从http://hpux.connect.org.uk/下载,更新版本的可以在http://hpacxx.external.hp.com/gcc/下载)gcc-4.2.3-hppa-11.11.depot.gzgettext-0.17-hppa-11.11.d转载 2017-03-30 12:45:44 · 1185 阅读 · 0 评论 -
编码大全-控制循环
1.如果必须在循环中从循环中跳出的条件,就使用while?? 2.把循环当做黑盒处理,使用者只了解控制条件就可以了。 3.避免利用循环下标的最终取值原创 2015-09-02 07:35:06 · 456 阅读 · 0 评论 -
代码大全-个人性格
分解问题,将子程序编写的尽量小,以减轻大脑负荷。基于问题而不是底层细节来编程。代码走查,复查,单元测试,功能测试。编写没有bug的代码。通过各种各样的规范使思路从相对从相对繁琐的编程事务中解放出来。求知欲在开发过程中建立自我意识。如果在工作中学不到什么,就换一份工作吧。试验:通过试验来学习。在行动之前做分析和计划。学习成功项目的开发经验为调试错误设置de原创 2015-08-17 22:06:29 · 3698 阅读 · 0 评论 -
以二进制位表示信息
#include #include #include using namespace std;//以二进制方式表示信息,每一个位或为0或为1表示信息真假const int featureCount =8;const unsigned Framed=1;const unsigned Bordered=2;const unsigned StdMenu=4;const转载 2014-07-21 08:26:14 · 860 阅读 · 0 评论 -
c.vim使用
1.\+p" 头文件包含,修改include 与' ” ‘ 的距离修改.vim/c-support/templates/c.preprocessor.template中的距离原创 2014-12-18 18:52:36 · 692 阅读 · 0 评论 -
ZeroMQ安装及使用
on steroids (吃了药的,更牛,更健壮)程序的工作原理类似社会。编译zeromq,在/usr/local/zermq文件夹下,从网上下载https://github.com/zeromq/cppzmqzmq.hpp 放在/usr/local/include目录下server路径:https://github.com/imatix/zguide/blob/master/ex...原创 2015-03-14 15:29:22 · 1217 阅读 · 0 评论 -
使用boost::function错误
给函数赋值时,绑定的参数个数不够原创 2015-05-08 18:46:55 · 581 阅读 · 0 评论 -
C++学习
不要使用虚函数作为动态库的接口。可以考虑,pimp,最好采用bind+function的方式。原创 2015-08-04 21:56:59 · 368 阅读 · 0 评论 -
gdb调试学习
1.查看现有程序运行情况 获取现有程序运行进程号码 gdb进入调试模式 attach pid 调试进程 info thread 显示各线程情况 t(hread) 3 进行线程切换 bt显示当前线程运行的代码 local 显示局部变量 1.1 在有.symbol文件下进行调试 gdb * –se .sybmol 其中代表程序,–se代表从指定文件读取信息原创 2015-08-24 22:15:29 · 381 阅读 · 0 评论 -
编程之道学习-自说明代码
(变量名)如果能够传递更多的信息,理解起来就会更容易。 正常的处理位于if而非else中。 学习伪代码编程 不要对单行代码进行行尾注释。可用于1.数据声明,2,标记块尾 注释代码着眼于如何做而不是怎么做。原创 2015-08-28 07:52:22 · 372 阅读 · 0 评论 -
你的代码很烂
1.未经测试如果没有经过测试,怎么确信你的代码能够符合你的预期。就算你相信,你让别人怎么相信。2.不可测试那么,你怎么经过测试3.代码不可读不可读的情况下,你让怎么维护。效率没有可读重要,提升可读性比提高效率困难。4.代码重复如果改一个地方,其他地方改不改?你怎么确定你记得改?转载 2015-08-13 21:53:26 · 420 阅读 · 0 评论 -
boost使用出现问题
usr/include/boost/bind/bind.hpp: In member function ‘void boost::_bi::list3::operator()(boost::_bi::type, F&, A&, int) [with F = boost::_mfi::mf2, boost::_bi::list2, boost::arg > >, char>, A = boost::原创 2015-08-03 19:31:11 · 940 阅读 · 0 评论 -
Linux C++判断端口是否被占用
在端口被占用的情况下,启动系统是会产生异常的。所以想再启动系统绑定端口前查看端口是否已经被占用。看了网上许多资料,使用的都是netstat或losf,还有一些是使用socket绑定下看能不能成功。这些都不太符合我的需要。我想要的是在C++中判断端口是否被占用,如果未被占用,调用CZMQ的接口建立socket或者代理。原创 2015-08-16 21:38:00 · 4244 阅读 · 0 评论 -
C++ 文件读入写出
#include #include using namespace std;const int IOFAIL=1; //读取失败标志int outputToFile();//输出到文件int getContentFromFile(); //从文件中获取内容int addContentToExistedFile();//以追加方式写入文件i原创 2014-07-21 08:14:18 · 876 阅读 · 0 评论