随笔分类 -  C/C++学习

Reactor反应器模式 (epoll)
摘要:1. 背景 最近在看redis源码,主体流程看完了。 在网上看到了reactor模式,看了一下,其实我们经常使用这种模式。 2. 什么是reactor模式 反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。 当客户端请求抵 阅读全文

posted @ 2018-08-12 18:44 旭东的博客 阅读(8235) 评论(0) 推荐(1) 编辑

C++ 中的不定参数与格式化字符串 # ## vsprintf
摘要:日志打印或者格式字符串时,可能会用到不定参数的使用,这里记录一下。 格式化字符串有很多方法: snprintf "std::stringstream" \ 的使用 \ 是一个连接符号,用于把参数连在一起 \ 是“字符串化”的意思,出现在宏定义中的 是把跟在后面的参数转换成一个字符串 并且 都只能出现 阅读全文

posted @ 2018-08-09 08:47 旭东的博客 阅读(1252) 评论(0) 推荐(0) 编辑

C++并发编程 条件变量 condition_variable,线程安全队列示例
摘要:1. 背景 c++11中提供了对线程与条件变量的更好支持,对于写多线程程序方便了很多。 再看c++并发编程,记一下学习笔记。 2. c++11 提供的相关api 3.1 wait wait用于无条件等待,其中Predicate表示校验条件,可以避免假唤醒。 3.2 wait for wait_for 阅读全文

posted @ 2018-06-23 23:49 旭东的博客 阅读(3528) 评论(0) 推荐(0) 编辑

C++ 并发编程,std::unique_lock与std::lock_guard区别示例
摘要:背景 平时看代码时,也会使用到std::lock_guard,但是std::unique_lock用的比较少。在看并发编程,这里总结一下。方便后续使用。 std::unique_lock也可以提供自动加锁、解锁功能,比std::lock_guard更加灵活。 std::lock_guard std: 阅读全文

posted @ 2018-06-20 08:03 旭东的博客 阅读(70081) 评论(0) 推荐(2) 编辑

goto语句引起的crosses initialization of XXX
摘要:1. 背景 goto语句虽然目前已经不提倡使用,但是用起来还是很方便,尤其是老代码中见的比较多。 在改动有goto语句的老代码时需要特别注意,是否跳过来资源的释放、有用变量的初始化等等。 很久之前写c程序时,有些提交系统要求变量必须在函数开始地方全部申明,最近遇到了"crosses initiali 阅读全文

posted @ 2018-06-14 07:49 旭东的博客 阅读(1986) 评论(0) 推荐(0) 编辑

C++11 多线程编程 使用lambda创建std::thread (生产/消费者模式)
摘要:要写个tcp server / client的博客,想着先写个c++11多线程程序。方便后面写博客使用。 目前c++11中写多线程已经很方便了,不用再像之前的pthread_create,c++11中已经有了std::thread库可以方便使用。 直接看代码(100个任务, 多个线程处理): 编译、 阅读全文

posted @ 2018-06-02 17:00 旭东的博客 阅读(5647) 评论(0) 推荐(0) 编辑

C++11 lambda表达式学习
摘要:最近在接手一个模块,看到了很多奇葩的语法,查了一下是lambda表达式,这块还真不了解。周末学习一下记录记录。 lambda表达式是C++11最重要也最常用的一个特性之一。lambda来源于函数式编程的概念,也是现代编程语言的一个特点。目前支持lamdba的语言不少,如python,C++11, J 阅读全文

posted @ 2018-05-13 10:55 旭东的博客 阅读(683) 评论(0) 推荐(0) 编辑

C++11 std::shared_ptr总结与使用
摘要:最近看代码,智能指针用的比较多,自己平时用的少,周末自己总结总结。方便后续使用。 std::shared_ptr大概总结有以下几点: (1) 智能指针主要的用途就是方便资源的管理,自动释放没有指针引用的资源。 (2) 使用引用计数来标识是否有多余指针指向该资源。(注意,shart_ptr本身指针会占 阅读全文

posted @ 2018-05-12 10:34 旭东的博客 阅读(63097) 评论(4) 推荐(3) 编辑

C++ 友元类使用 (friend)
摘要:C++中私有变量对外部类是不能直接访问的,也是不能继承的。 使用友元类可以访问类中的私有方法、私有变量,虽然对类的封装有一定的破坏,但是有时也是很实用的。 在实际中,在修改已有代码时,为了不大改动已有代码: (1) 对于没有继承关系的类,如果有关联,使用友元类还是比较方便的。 (2) 对于有继承关系 阅读全文

posted @ 2018-04-26 08:10 旭东的博客 阅读(14477) 评论(0) 推荐(0) 编辑

linux top命令看到的实存(RES)与虚存(VIRT)分析
摘要:近期在公司中解决程序使用的内存高问题,将一部分之前无法回收的内存进行了回收,实现降内存效果(降实存)。 在统计效果时, QA问是统计RES(实存)还是VIRT(虚存)。 在网上学习看了一些博客,这里自己总结一下RES和VIRT的区别。 1. 概念 VIRT: RES: SHR: 2. 测试 (1) 阅读全文

posted @ 2018-03-25 16:00 旭东的博客 阅读(60570) 评论(1) 推荐(4) 编辑

一次问题追查----短字符串签名算法引发的bug
摘要:近期开发代码, 出现了一些诡异现象。追查原因是公司使用的签名函数出现的问题。 问题: 代码使用的签名库函数, 对于<=4字节的字符串, 签名就是本身。 hash函数只是计算签名, 有时会有hash冲突导致实际不相等的字符串, 有相同的hash值。 如果要严格比较, 可以直接比较内存字节。 在严格场景 阅读全文

posted @ 2018-03-13 08:18 旭东的博客 阅读(437) 评论(0) 推荐(0) 编辑

C++ assert 断言使用
摘要:在研究corepattern需要让程序出core, 因此用到的assert, 记录一下。 写严谨代码时,也可以使用assert进行严格的条件判断。 函数原型: #include <assert.h> void assert( int expression ); C++ assert()宏的作用是现计 阅读全文

posted @ 2018-02-06 08:43 旭东的博客 阅读(15922) 评论(0) 推荐(2) 编辑

C++ 变量默认初始值不确定(代码测试)
摘要:C++ int变量默认初始值是不确定的,因此使用时初始化是很有必要的。 下面写个小程序测试一下int变量默认初始值。 编译并执行代码: 把注释行代码,取消注释后,编译并执行代码: 阅读全文

posted @ 2018-01-16 08:42 旭东的博客 阅读(734) 评论(0) 推荐(0) 编辑

C/C++ 二维数组
摘要:使用C语言用到了二维数组 输出: 阅读全文

posted @ 2017-10-14 18:01 旭东的博客 阅读(2113) 评论(0) 推荐(0) 编辑

C/C++ 分支预测(likely unlikely)
摘要:看一些代码时,会遇到likely unlikely, 查了查网上的资料,结合自己的理解记录一下。 1. 一些概念 指令周期是指执行一条指令所需要的时间,一般由若干个机器周期组成,是从取指令、分析指令到指令执行完所需的全部。 预取指令具体方法就是在不命中时,当数据从主存储器中取出送往CPU的同时,把主 阅读全文

posted @ 2017-08-12 10:02 旭东的博客 阅读(24692) 评论(1) 推荐(0) 编辑

C/C++ signal 信号处理函数
摘要:软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。 内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。 注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。 kill -l ##可以列举当前系统支持 阅读全文

posted @ 2017-08-07 07:55 旭东的博客 阅读(3666) 评论(1) 推荐(1) 编辑

C/C++ 指针函数 与 函数指针
摘要:指针函数是个函数,是返回指针类型到函数。 函数指针是个指针,是指向函数地址到指针。 区分两者的关键点是,函数名是否用*和括号“包围”起来。 就简单说明到这里吧, 看代码注释。^_^ 阅读全文

posted @ 2017-08-03 08:30 旭东的博客 阅读(491) 评论(0) 推荐(0) 编辑

pthread_create 报函数参数不匹配问题
摘要:pthread_create方法遇到类方法时总会报 argument of type ‘void* (Thread::)(void*)’ does not match ‘void* (*)(void*)’pthread_create方法第三个参数只能是C函数指针或者类到静态函数指针。下面记录一下解决 阅读全文

posted @ 2017-07-18 08:21 旭东的博客 阅读(3312) 评论(0) 推荐(0) 编辑

linux C++ 多线程使用pthread_cond 条件变量
摘要:1. 背景 多线程中经常需要使用到锁(pthread_mutex_t)来完成多个线程之间的互斥操作。 但是互斥锁有一个明显到缺点: 只有两种状态,锁定和非锁定。 而条件变量则通过允许线程阻塞并等待另一个线程发送唤醒信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。 2. 条件变量涉及到的主要函数 阅读全文

posted @ 2017-04-21 09:04 旭东的博客 阅读(13921) 评论(0) 推荐(1) 编辑

C++ 以对象管理资源
摘要:C++中使用到的资源可能很多,并且一些资源获取后还必须释放归还给系统, 列举几个如: 1. 打开的文件句柄 2. 数据库连接 3. 互斥锁 4. 动态分配new出来的内存 5. 网络socket连接 C++中有智能指针,比如shared_ptr,可以自动释放指针指向的资源。 这里不详细说shared 阅读全文

posted @ 2017-04-20 08:57 旭东的博客 阅读(1097) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示