随笔分类 - C++
摘要:linux 环境有提供好的pthread_cond_wait() 和 phread_signal()、pthread_broadcast() windows需要自己封装,利用semophore控制线程等待和释放,先简单谈一下设计好后api该 如何使用。 假设我们封装好条件变量等待函数名字叫做wait
阅读全文
摘要:semophore是信号量的意思,常用于PV操作,所谓PV操作就是pend(等待,直到有资源可用,并且消耗资源) V就是释放资源。 semophore和mutex区别,mutex本意为互斥,用于线程独占资源,常用于临界区访问锁住mutex, 当线程A对mutex加锁后,其他线程不能反问临界资源,也不
阅读全文
摘要:一:windows创建锁接口 创建互斥锁的方法是调用函数CreateMutex HANDLE CreateMutex( LPSECURITY_ATTRIBUTESlpMutexAttributes, // 指向安全属性的指针 BOOLbInitialOwner, // 初始化互斥对象的所有者 LPC
阅读全文
摘要:一windows多线程接口: 1 创建线程 CreateThread 与 _beginthreadex都可以实现创建线程,两个函数的参数 相同, 函数说明: 第一个参数表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。 第二个参数表示线程栈空间大小。传入0表示使用默认大小(1MB)。 第
阅读全文
摘要:一. C++类的引用成员,类的常量成员,类的static成员的初始化方式 类的引用成员和常量成员初始化放在初始化列表里,因为初始化只有一次,需要在构造函数之前进行初始化, 写在类的构造函数会出错。 类的static变量要放在类声明的外边定义,因为static变量属于整个类,而不是类对象,所以不能放在
阅读全文
摘要:最近自己的服务器做到序列化这一步了,在网上看了下,序列化的工具有boost 和google的protocol buffer, protocol buffer的效率和使用程度更高效一些,就自己琢磨下把他加到自己的服务器里。 所以这里我先弄一个小的demo去测试如何使用和配置protocol buffe
阅读全文
摘要:C++单例模式主要用途就是整个程序中只实例化一个对象,之后获取到的都是该对象本身进行处理问题。 单例模式一般都是在函数中采用局部静态变量完成的,因为局部的静态变量生命周期是随着程序的生命周期 一起结束,所以不用担心会失效。另外局部的静态变量作用域仅限于该函数内部,别的函数不会直接使用。 第三点就是局
阅读全文
摘要:TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket, 因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,
阅读全文
摘要:C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域。 从作用域看: 全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包括全局变量定义的源文件需要用extern关键字再次声
阅读全文
摘要:最近使用C++模板,虽然工作几年了,但是模板用的很少,确切的说自己实现的机会很小。 昨天写了一个代码maxheap.h 中实现了类模板的声明,我将实现写在maxheap.cpp中, 当在main.cpp中引用maxheap中的接口时,提示链接错误。网上提供了几个解决方案, 第一种方式是将maxhea
阅读全文
摘要:大根堆的定义:1 大根堆是一个大根树 2 大根堆是一个完全二叉树 所以大根堆用数组表示是连续的,不会出现空白字段。 对于大根堆的插入 对于大根堆的插入,可以在排序前确定大根堆的形状,可以确定元素5从位置6插入,那么比较元素5和位置3的元素2, 元素5比元素2大,将2下移。接着比较元素5和元素20,一
阅读全文
摘要:C++ 有stringstream这个工具可以方便的进行数据类型的转换 使用时包含 #include <sstream.h> using namespace std; 当需要将一个整形的数转换为字符串 如果需要将一个字符串转化为整形数 再次使用mystream需要清除之前的状态位 调用 mystre
阅读全文
摘要:想着把每一个基础的知识点搞清,趁着早晨凉快就先写一些总结 函数指针,基本结构是 函数返回类型(* 函数指针名字)(函数参数1,函数参数2,...); 这种指针用于指向一个函数的地址,可以通过函数指针回调同类型的不同函数,实现类似于事件回调机制的功能。 先写一个简单的测试程序 编译后看看有什么结果 p
阅读全文
摘要:redis字符串可以实现通过地址偏移找到所在结构体的首地址,struct sdshdr *sh = (void *)(s - (sizeof(struct sdshdr))) 也就是通过buf地址可以找到sdshdr的地址,这个我一直不理解,写了代码测试下 地址一次间隔4,结构体总大小为8,最后一个
阅读全文