笔记
文章平均质量分 61
GrantHe2761
感谢所有摸黑的一路上亮起的灯 ,当我发光的时候希望也可以为你照亮
展开
-
【C++音视频】mediasoup-demo部署
mediasoup-demo部署webrtc基础C++音视频入门原创 2022-05-11 16:29:23 · 1386 阅读 · 6 评论 -
【C++】常函数可以定义为虚函数
因此常函数和虚函数并不冲突,可以将常函数定义为虚函数原创 2022-04-30 19:21:48 · 1300 阅读 · 0 评论 -
【C++】必须使用初始化列表初始化的的四种情况--实例
一个类(假设上例中的B)的构造函数执行顺序是:**虚拟基类的构造函数****基类的构造函数(上例中的A)****成员对象的构造函数(上例中的C)****自己的构造函数(B自己)**因此需要在B的构造函数后面用初始化列表直接初始化A和C的对象。需要注意的是:在初始化列表中构造C类的对象时应该用B类自己的数据成员对象的名字--attention而不是用C。原创 2022-04-27 10:07:19 · 1124 阅读 · 0 评论 -
【C++】new创建对象数组的初始化问题
事实上在C++11有了列表初始化之后new创建对象数组也可以使用自定义的构造函数进行初始化了,方法和基本数据类型也一样。原创 2022-04-26 17:42:07 · 5080 阅读 · 3 评论 -
【MySQL】数据库的并发控制--行级锁与事务COMMIT的关系
在各种存储引擎中都有自己的**行级锁**:可以最大程度支持并发处理,但是也带来了最大的锁开销。以默认的InnoDB为例,基于预设的**隔离级别**(默认是可重复读),存储引擎会对**事务**施加**行级锁**,保证事务的**ACID特性**。和表锁一样,存储引擎会自动进行行级锁的加锁和锁定,但是也可以在SQL语句中进行**显式锁定**(显式锁定不属于SQL规范)。总之,对于数据的操作涉及到的行,存储引擎会自动使用行级锁来进行并发控制,防止出现脏读和死锁等,==无论这个进行操作的事务是否已经提交。原创 2022-04-12 16:41:00 · 491 阅读 · 0 评论 -
【C++】右值引用可以绑定左值?---自动类型推断时可能出现的情况
通常情况下,右值引用不能绑定左值,如果想绑定左值,需要用std::move()将左值转为将亡值。int main(){ int a = 10; int && b = move(a);//没有move()则:error: cannot bind 'int' lvalue to 'int&&'| cout<<a<<" "<<b<<endl; return 0;}输出10 10;特殊情况下&& t发生原创 2022-02-26 16:51:39 · 1678 阅读 · 0 评论 -
【C++】类中几种变量的初始化方式
普通成员变量用初始化列表或者构造函数中赋值或者普通函数赋值普通成员常量和引用型变量用初始化列表赋值静态成员变量用类内声明,类外初始化静态成员常量当且仅当const、static、且为integer类型,可以直接类内初始化;其余类型同样是类内声明,类外初始化示例A.h#ifndef A_H#define A_Hclass A{public: virtual ~A(); A(int p1,int p2,int p3):a(p1),b(p2),c(p3){};原创 2022-02-24 15:32:03 · 1564 阅读 · 0 评论 -
Reactor模式-----基于Epoll实现
文章目录Reactor模式-----基于Epoll实现Reactor模式基于Epoll的实现Reactor模式-----基于Epoll实现Reactor模式该模式要求主线程只负责监听文件描述符上是否有事件发生,有的话就立即将该事件通知工作线程。除此之外,主线程不做任何实质性的工作。读写数据,接受新的连接以及处理客户请求均在工作线程中完成。使用同步I/O模型(以epoll_wait为例)实现的Reactor模式的工作流程是:主线程往epoll内核时间表中注册socket上的读就绪事件。主线程调用原创 2021-12-06 21:40:48 · 526 阅读 · 0 评论 -
【C/C++】如何理解void*与int之间的类型转换--以pthread_create为例
要理解void*和int之间地转换首先理解int和int*之间的转换一般我们将int*理解为存放着某个地址的指针,地址所指的内容是一个int类型的值。如果我们将int*存放的内容通过*取出来,输出到屏幕上如下所示:int main(){ int t = 10; int *p = &t; printf("%d\n",*p); return 0;}而实际上,int*存的就是个地址而已,我们可以将地址打印出来:int mai原创 2021-11-14 21:43:38 · 10033 阅读 · 4 评论 -
【Python+C+Golang】在Go中使用go-python调用python模块--内部借助Python/C API 来调用Python
本文记录debug经验APIPyObject* PyImport_ImportModule(const char *name)//Return value: New reference. 返回__import__(name)使用此API在Go中导入Python的模块。Python代码如下:hello.py:import numpyimport sklearna=10def b(xixi): return xixi+"haha"print("calling py原创 2021-11-18 23:53:58 · 1499 阅读 · 1 评论 -
【进程间通信IPC之RPC】技术演化:RPC-SOAP-REST-gRPC/Thrift/GraphQL
进程间通信技术演化传统的RPCSOAPRESTgRPC的起源gRPC的优势gRPC的劣势ThriftThrift vs gRPCGraphQLGraphQL vs gRPC原创 2021-10-23 14:26:00 · 1610 阅读 · 0 评论 -
【入门嵌入式系统】基础知识梳理总结
嵌入式系统的概念定义一 定义二嵌入式系统的分类嵌入式微处理器嵌入式微控制器即单片机嵌入式 DSP处理器嵌入式片上系统嵌入式微控制器的架构常见的嵌入式(实时RTOS)操作系统嵌入式 Linux Win CE VxWorks特点 OSE Nucleus eCos μC/OS-II (读作:miu cos two) 的特点ARM体系结构原创 2021-10-20 15:45:56 · 17852 阅读 · 0 评论 -
【C++】 fstream 读写二进制文件没法正常读写正确的数据--文件读写中string的问题
# 为什么使用fstream读写二进制文件没法正常读写?# 可能的问题一如果没有关闭ofstream就新建一个ifstream,此时无法正常读取出数据。要注意及时关闭文件流,否则无法正常读写# 可能的问题二文件读写时要注意不要使用string类型的数据string类中有一个成员指针 char * ,该指针指向存储字符串的空间,当我们把string类的数据存储到文件中再读出来时,不能保证指针有效。string 开辟的空间如果大于 16 个字节,就在堆区,否则在栈区:原创 2021-10-19 22:25:30 · 3199 阅读 · 3 评论 -
【C++】多态----动态绑定(动态联编)、虚函数的梳理小结
目录1.多态的定义与作用广义上的多态狭义上的多态多态的作用2.静态类型与动态类型静态类型动态类型两者的关系3. 动态多态(运行时多态、动态联编、晚绑定)例子1解释1例子2解释2去掉virtual的时候有virtual的时候向上类型转换(upcasting)4.虚函数虚函数的原理--虚函数表区分【virtual覆盖基类函数】与【派生类隐藏基类同名函数】隐藏(重定义)、覆盖、重载隐藏的规则覆盖的条件重载的条件原创 2021-10-15 22:01:56 · 1446 阅读 · 0 评论 -
【C++】关于左移运算符<<重载、cout、endl的思考总结
这里为啥用cout和out效果相同?为啥重载函数的ostream的参数是引用?如何实现连续地输出cout<<m<<endl;? endl本质是啥?和'\n'有什么不同?为什么endl作为一个内联函数可以被用在<<的右边?原创 2021-10-10 22:15:09 · 2072 阅读 · 3 评论 -
【C++】拷贝构造函数中的形参是const引用类型的,为何需要引用且为const引用?
根本原因在c++中,传值时就是形参是实参的一份拷贝,传引用时形参和实参是一个东西。直接原因由于(根本原因)形参是实参的一份拷贝,如果直接传递值给拷贝构造函数而不是传引用,那么形参对象会拷贝实参对象,这个拷贝过程又调用拷贝构造函数(第二次),在第二次调用拷贝构造函数时,形参对象继续拷贝实参对象,继续调用拷贝构造函数(第三次)…陷入死循环。因此需要传引用给拷贝构造函数。为何需要const引用?在这里没有太复杂的原因,就是为了表明拷贝构造函数中没有对传递进来的对象做任何修改,也是防止拷贝构造函数对对象原创 2021-10-10 17:45:45 · 1565 阅读 · 0 评论 -
【C++---const引用】数组进行指针引用传递给函数error: non-const lvalue reference of type ‘int*&‘ to an rvalue
【const引用】数组进行指针引用传递给函数时出错 error: cannot bind non-const lvalue reference of type ‘int*&’ to an rvalue of type ‘int*’|`关于临时量关于常量引用(const的引用)const引用的对象不是不能被修改了吗,这里为什么被修改了?不是说是const引用吗?为什么又变成了引用所绑定的指针的【顶层const】?事实上:不使用常量引用会极大限制函数所能接受的实参类型,(因为我们)不能把const对象、原创 2021-09-10 15:37:15 · 1851 阅读 · 0 评论 -
【Linux】init服务脚本和systemd服务管理机制的区别
1. Centos6以前用的都是init来启动服务; Centos7开始默认使用了systemd管理服务; 3. init**串行**启动所有服务; systemd**并行**启动所有服务,充分利用多内核架构。 4. init启动的服务分两类:**独立启动模式(stand alone)**和**超级守护进程(super daemon)**; systemd将所有服务定义为不同类型的服务单位(unit),类型有:**service、socket、target、path、snapshot、timer原创 2021-07-27 21:49:33 · 1091 阅读 · 3 评论 -
【Linux(vim)】下编辑却显示readonly的解决方法 E325: ATTENTION E45: ‘readonly‘ option is set (add ! to override)
自查一下是不是按了[crtl]+z导致vim窗口关闭,当再次打开时出现了这个错误。如果是这样导致出现的错误,应当意识到开启vim之后[crtl]+z实际上把vim暂停并扔到了后台(任务管理的命令)。此时可以使用 jobs -l查看后台状态,可以看到被暂停的任务。每个任务还有±号,+号表示最近被放到后台的任务,-号表示最近第二个被放到后台的任务。此时如果想继续编辑,使用fg 即可将+号的任务拿到前台;使用fg -可以取出-号的任务。若加: %任务号 则可以取出指定的任务...原创 2021-07-26 19:55:19 · 1637 阅读 · 2 评论 -
【Linux】中root就是万能的吗?
不是例子:bash只能管理自己的任务而不能管理其他bash的任务,所以即使是root也不能够将别人bash下面的任务拿来执行。原创 2021-07-26 19:30:49 · 121 阅读 · 0 评论 -
【Linux】将占据屏幕正常输出的服务移至后台
screen数据流重定向supervisor原创 2021-07-26 19:24:55 · 105 阅读 · 0 评论 -
【Linux(bash)】中容易被忽略但又超好用的命令【持续更新】
Linux容易被忽略但又超好用的命令汇总原创 2021-07-21 22:14:07 · 147 阅读 · 1 评论