- 博客(23)
- 收藏
- 关注
原创 Redis内存淘汰机制
内存淘汰策略Redis作为内存缓存数据库,需要通过maxmemory参数限制最大内存使用,保证在缓存数据超出物理内存大小后依然可以正常服务。最新版本的Redis(6.0)支持8种淘汰策略:淘汰最久之前访问且设置超时的数据淘汰访问频率最低且设置超时的数据淘汰最近过期且设置超时的数据随机淘汰设置超时的数据淘汰最久之前访问的数据淘汰访问频率最低的数据随机淘汰数据不淘汰数据上述淘汰的源码宏定义如下(位于server.h)#define MAXMEMORY_VOLATILE_LRU ((0&
2020-07-12 15:56:09 292
原创 虚基类中的虚函数在部分虚函数表中为0
先上代码:#include <iostream>using namespace std;class B {public: virtual void fun0() { cout << "B" << endl; }};class B1 : public virtual B {public: virtual void fun1() { cou
2015-10-11 21:05:44 521
原创 小白鼠试毒酒的升级版
有9瓶酒,其中一瓶有毒,可以使用小白鼠进行试验,但是毒发需要8小时,问最少需要几只小白鼠才可以在16小时内知道哪瓶酒是毒酒。
2015-09-25 10:52:58 1945 2
原创 线程池中使用条件变量和信号量的性能比较
面试的时候经常被问到互斥量,条件变量和信号量之间的问题。比如前几天华为面试就被问到互斥量和信号量的区别,说到互斥量也可以使用一个二值信号量来实现,什么情况是只能使用互斥量而不能使用信号量的。这个问题当时我只回答出一种情况,想了解详情的可自行百度。如面试官所说,信号量可以实现互斥量,大部分情况下也可以实现条件变量。甚至使用信号量的实现远比其他实现更容易理解。然而很多时候使用信号量替换条件变量的可能会降低系统性能
2015-09-20 20:46:09 5829 1
原创 移动语义之我见
C++11中最晦涩难懂的特性大约就是移动语义了。我最早看到的移动语义是和右值引用一起说的,更有甚者几乎把两者混为一谈。我并不是一个学院派,不敢在此深究二者定义上的区别,但我以为右值引用只是触发移动语义的必要条件而已。 首先谈一谈为什么引入了移动语义,移动语义较以前的拷贝有什么优点?我想先用两个例子来说明这个问题:class Echo {public: Echo() { std::cout
2015-09-11 15:20:06 1497
转载 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-09-11 11:18:20 388
原创 sudo源码分析(一)
首先申明,sudo命令虽然很常用,不过以前使用的时候从来都不带任何参数,后面直接跟着想要得到root权限的命令。知道最近研究了下sudo源码后才知道sudo居然也有这么多参数。当时看源码时也被它处理各种参数以及各种情况的代码所困扰,本文尽量避开这些枯燥的代码,清晰明白地分析sudo是如何提升程序的权限的。首先看一下main函数主要做了些什么事:intmain(int argc, char
2015-09-09 15:43:11 2975
原创 模板给引用挖了个坑
事情发生于我实习期间,当时的代码将bind的函数类传给线程,然后线程就会执行该函数类。现在我希望得到其中一个参数执行后的值,然而目前参数是传值的。我没细想就把这个参数改为传引用。结果我得到的值缺不是与其的值。上面的描述经过我简化了,真实的程序是多个线程,有些复杂,所以一开始没往模板参数推导的问题上想,结果白白浪费了我半天时间。下面步入正题:首先,传值和传引用虽然又本质的区别,但是两者的
2015-08-23 21:27:30 502
原创 2015.4.3微软在线笔试第二题
题目链接笔试期间在这道题上陷的太深,直到最后也没来得及提交,结束后重新理了理思路,很快就改好了,但是无法提交验证,因此发这篇博客留作纪念吧!下附代码:#include #include #include #include #include #include using namespace std;class Signal {public: Signal(int
2015-04-04 13:11:05 451
原创 ini文件中动态数组的格式和QSetting的读写
有时候我们需要保存动态数组到ini文件中。QSetting提供了很方便的接口给用户进行ini文件的读写,这一点我们稍后说,首先看看动态数组在ini文件中的结构。首先给个例子简单说明动态数组的保存格式:struct User { string userName; string password;};User users[3];如果我们希望在ini文
2015-03-20 16:43:57 7502
原创 Qt编译Oracle数据库驱动
方法已经在网上被转载了很多次了。当时看到的都是基于MinGW的Qt编译的驱动,但是我使用的是基于MSVC的Qt,虽然方法大差不差,不过也是有些不同的。编译环境:首先需要安装Oracle数据软件;安装Qt 4.8.5(VS2010)VS2010编译步骤:打开Qt 4.8.5 Command Prompt;(可以在开始菜单-所有程序-Qt4.8.5下
2015-03-13 11:39:59 1154
原创 Nginx进程分析(master_process篇)
首先看Nginx的主进程,主进程从main函数开始运行:int ngx_cdecl main(int argc, char *const *argv){ ngx_int_t i; ngx_log_t *log; ngx_cycle_t *cycle, init_cycle; ngx_core_conf_t *
2014-11-22 01:56:38 3857
转载 no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
原文地址:http://ubuntuforums.org/showthread.php?t=2214042
2014-05-03 11:07:23 3289
转载 VNC连接Ubuntu14.04 远程桌面出现“No supported authentication methods”错误
原文地址:http://forum.ubuntu.org.cn/viewtopic.php?t=458710
2014-04-29 19:20:01 6047
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人