随笔分类 -  c/c++

1 2 下一页

C/C++ 的学习过程及总结
深入理解 epoll 原理
摘要:从网卡如何接收数据说起 CPU 如何知道接受了数据? 进程阻塞为什么不占用 CPU 资源? 工作队列 等待队列 唤醒进程 内核接收网络数据全过程 同时监视多个 socket 的方法 select 的监听流程 select 的唤醒流程 select 的缺点 epoll 的设计思路 epoll 的原理和 阅读全文

posted @ 2023-01-08 18:55 爱笑的张飞 阅读(444) 评论(0) 推荐(0) 编辑

select, poll, epoll 学习笔记
摘要:摘要 在学习 Redis 的过程中,发现 Redis 底层是复用了现成的 I/O多路复用模型(evport, epoll, kqueue, select),本篇博客就总结一下 Linux 内核中提供的三种模型。 select fd_set select()函数主要是建立在fd_set类型的基础上的。 阅读全文

posted @ 2020-06-15 19:01 爱笑的张飞 阅读(299) 评论(0) 推荐(0) 编辑

malloc 底层实现及原理
摘要:摘要:偶尔看到面试题会问到 malloc 的底层原理,今天就来记录一下,毕竟学习要“知其所以然”,这样才会胸有成竹。 注:下面分析均是基于 linux 环境下的 malloc 实现。步骤是:先总结结论,再逐步展开 结论 1)当开辟的空间小于 128K 时,调用 brk()函数,malloc 的底层实 阅读全文

posted @ 2019-05-04 16:57 爱笑的张飞 阅读(25794) 评论(6) 推荐(17) 编辑

C++---拷贝构造函数和赋值构造函数
摘要:摘要:最近看了一道面试题问:C++ 中拷贝赋值函数的形参能否进行值传递?我知道一般来说,拷贝构造函数的形参必须是自身类型的引用(《面向对象程序设计--C++语言描述(第二版)》这本书中有叙述),但是拷贝赋值函数的形参通常也是自身类型的引用,那么我们到底能不能将它们的形参改为值传递呢? 1,拷贝构造函 阅读全文

posted @ 2019-05-04 15:01 爱笑的张飞 阅读(3409) 评论(0) 推荐(0) 编辑

C++---类成员变量定义为引用
摘要:摘要:类成员变量是可以定义为引用类型的,但是我们需要注意一下用法 note1:在类中定义引用变量, 必须要在初始化列表中初始化该成员变量(const 类型数据成员也必须在初始化列表中进行初始化) note2:初始化后的引用变量所占用的内存空间和普通变量相同 阅读全文

posted @ 2019-05-03 22:51 爱笑的张飞 阅读(12333) 评论(0) 推荐(1) 编辑

如何在 main() 执行之前先运行其它函数
摘要:摘要:我们知道 C++ 的全局对象的构造函数会在 main 函数之前先运行,其实在 c 语言里面很早就有啦,在 gcc 中可以使用 __attribute__ 关键字指定如下(在编译器编译的时候就绝决定了) 在 C 语言中 用 __attribute__ 关键字 在 C++ 中用全局对象构造函数 阅读全文

posted @ 2019-05-03 16:57 爱笑的张飞 阅读(3921) 评论(0) 推荐(4) 编辑

i++ 和 ++i 的区别和实现
摘要:++i 和 i++ ++i 和 i++ 的区别 1)i++ 返回的是 i 的值,++i 返回的是 i+1 的值 2)i++ 不能用作左值,++i 可以用作左值 左值和右值的区别是什么? 根本区别是:能否允许用取地址符号 & 来获取相应的内存地址 ++i 和 i++ 的实现 阅读全文

posted @ 2019-05-03 15:44 爱笑的张飞 阅读(2966) 评论(0) 推荐(0) 编辑

c++ 中的智能指针实现
摘要:摘要:C++11 中新增加了智能指针来预防内存泄漏的问题,在 share_ptr 中主要是通过“引用计数机制”来实现的。我们今天也来自己实现一个简单的智能指针: 1 // smartPointer.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 阅读全文

posted @ 2019-04-19 21:47 爱笑的张飞 阅读(222) 评论(0) 推荐(0) 编辑

c++ 中的数字和字符串的转换
摘要:理由:一直忘记数字型的字符串和数字之间的转换,这次总结一下,以便后面再次用到。 其实 C++ 已经给我们写好了相应的函数,直接拿来用即可 QA1:如何把一个数字转换为一个数字字符串?(这个不是很常用) 函数:to_string(C++11) 函数原型:string to_string(int val 阅读全文

posted @ 2019-04-04 14:39 爱笑的张飞 阅读(4982) 评论(0) 推荐(0) 编辑

C++ 实现 split 操作
摘要:理由:由于 C++ 标准库里面没有字符分割函数 split ,这可太不方便了,我们利用 STL 来实现自己的 split 函数: 原型:vector<string> split(const string& s, const string& seperator); 阅读全文

posted @ 2019-04-02 21:58 爱笑的张飞 阅读(7126) 评论(0) 推荐(0) 编辑

c++中的类(class)-----笔记(类模板)
摘要:1,一个类模板至少具有一个类参数,类参数是个符号以表示将要被某个确定数据类型代替的类型。 1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 template <class T> 7 class Array { 8 阅读全文

posted @ 2019-03-06 17:19 爱笑的张飞 阅读(1400) 评论(0) 推荐(0) 编辑

c++中的类(class)-----笔记(类多态)
摘要:1,多态是一种运行期绑定机制,通过这种机制,实现将函数名绑定到函数具体实现代码的目的。一个函数的名称与其入口地址是紧密相连的,入口地址是该函数在内存中的起始地址。如果对一个函数的绑定发生在运行时刻而非编译时刻,我们就称该函数是多态的。 2,C++多态的三个前提条件:(a)必须存在一个继承体系结构;( 阅读全文

posted @ 2019-03-04 20:28 爱笑的张飞 阅读(2589) 评论(0) 推荐(0) 编辑

c++中的类(class)-----笔记(类继承)
摘要:1,派生类继承了基类的所有成员函数和数据成员(构造函数、析构函数和操作符重载函数外)。 2,当不指明继承方式时,默认为私有继承。 3,基类的私有成员仅在基类中可见,在派生类中是不可见的。基类的私有成员可以由派生类继承,但在派生类中不可见。尽管在派生类中不能直接访问基类的私有成员,但可以通过间接的方式 阅读全文

posted @ 2019-03-02 20:42 爱笑的张飞 阅读(2082) 评论(0) 推荐(0) 编辑

c/c++ 中的重要函数
摘要:1,strtod: 函数原型: 1 #include <cstdlib> 2 double strtod(const char *nptr, char **endptr); 名称含义: strtod(将字符串转换成浮点数) 相关函数: strtof(float),strtol(long int),s 阅读全文

posted @ 2019-03-01 15:24 爱笑的张飞 阅读(332) 评论(0) 推荐(0) 编辑

c++中的类(class)-----笔记(类简介)
摘要:1, class 和 struct 都可以定义一个类,区别是两者在所支持的 默认信息隐藏方式不同:c++ 中默认为 private 类型,而 struct 中默认为 public 类型。 2,类的私有成员具有 类范围 性质,仅能由类的成员函数访问。 3,类成员函数的定义有两种方式:(a)在类声明的时 阅读全文

posted @ 2019-02-26 18:59 爱笑的张飞 阅读(1000) 评论(0) 推荐(0) 编辑

C library:<cctype>(ctype.h)
摘要:1, isalnum(): check whether c is either a decimal digit or an uppercase or lowercase letter. 2, isalpha 3, isblank(c++11) 4, iscntrl : check whether c 阅读全文

posted @ 2019-02-25 20:05 爱笑的张飞 阅读(459) 评论(0) 推荐(0) 编辑

STL::string
摘要:Iterators begin: end: rbegin: rend: cbegin: cend: crbegin: crend: Capacity size: length: max_size: resize: capacity: 返回实际分配的存储空间的大小,一般大于等于 size 。这样能优化 阅读全文

posted @ 2019-01-31 23:58 爱笑的张飞 阅读(272) 评论(0) 推荐(0) 编辑

STL::bitset
摘要:bitset: A bitset stores bits。大小通过参数传递,在编译时确定。可变的可参考 vector<bool>。 constructor default: integer value: 传入 unsigned long long val。 string: C_string: 1 / 阅读全文

posted @ 2019-01-30 15:47 爱笑的张飞 阅读(161) 评论(0) 推荐(0) 编辑

STL::unordered_map/unordered_multimap
摘要:unordered_map: 和 unorder_set 相似,该容器内部同样根据 hash value 把键值对存放到相应的 bucket(slot)中,根据单个 key 来访问 value 的速度很快。 unordered_multimap: 操作和 unorder_map 相同,不同点是 ke 阅读全文

posted @ 2019-01-30 14:47 爱笑的张飞 阅读(845) 评论(0) 推荐(0) 编辑

STL::map/multimap
摘要:map: 默认根据 key 排序(从小到大),能够通过 backet operator(operator [ ]) 来获取元素,内部由二叉搜索树来实现(binary search trees)。 multimap: 操作和 map 相同,不同点只是 key 可以相同。 Iterators begin 阅读全文

posted @ 2019-01-30 14:14 爱笑的张飞 阅读(185) 评论(0) 推荐(0) 编辑

1 2 下一页

导航

点击右上角即可分享
微信分享提示