随笔 - 130  文章 - 4  评论 - 11  阅读 - 49万 
09 2018 档案
读写锁 与 互斥锁
摘要:读写锁特点: 1)多个读者可以同时进行读 2)写者必须互斥(只允许一个写者写,也不能读者、写者同时进行) 3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者) 互斥锁特点: 一次只能一个线程拥有互斥锁,其他线程只有等待 互斥锁 读写锁 条件变量 条件变量(Condtion Var 阅读全文
posted @ 2018-09-30 17:15 Love流浪的猪 阅读(4902) 评论(1) 推荐(0) 编辑
accept发生在三次握手之后
摘要:accept发生在三次握手之后 阅读全文
posted @ 2018-09-30 17:15 Love流浪的猪 阅读(336) 评论(0) 推荐(0) 编辑
观察者模式的优点和缺点
摘要:观察者模式的效果有以下的优点: 第一、观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。 由于被观察者和观察者没有紧密地耦合在一起,因此它们可 阅读全文
posted @ 2018-09-30 08:24 Love流浪的猪 阅读(10270) 评论(0) 推荐(1) 编辑
TCP可靠传输:校验和,重传控制,序号标识,滑动窗口、确认应答
摘要:Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输 应答码:ACK TCP的滑动窗口机制 TCP这个协议是网络中使用的比较广泛,他是一个面向连接的可靠的传输协议。既然是一个可靠的传输协议就需要对数据进行确认。 TCP协议里窗口机制有2种:一种是固定的窗口大小;一种是滑动的窗口。 窗 阅读全文
posted @ 2018-09-29 00:19 Love流浪的猪 阅读(1623) 评论(0) 推荐(0) 编辑
各种变量在内存中的高地址低地址
摘要:先确认一下这里“低地址高地址”的定义,这里并不是指的大端小端中的地址高低,而是内存中的地址 1、全局变量 先定义的全局变量位于低地址,后定义的位于高地址。 2、栈中变量 (栈中变量指的是由编译器自动分配释放的变量) 由于栈是往低地址生长的,所以先声明的变量位于高地址。 3、堆中变量 (堆中变量指的是 阅读全文
posted @ 2018-09-29 00:14 Love流浪的猪 阅读(1274) 评论(0) 推荐(1) 编辑
Windows消息机制
摘要:Windows消息机制详解 消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Wind 阅读全文
posted @ 2018-09-28 21:01 Love流浪的猪 阅读(290) 评论(0) 推荐(0) 编辑
new和malloc的区别
摘要:0、属性 new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。 1. 参数 使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。 而malloc则需要显式地指出所需内存的尺寸。 2. 返回类型 new操作符内存分配成功时, 阅读全文
posted @ 2018-09-28 12:01 Love流浪的猪 阅读(308) 评论(0) 推荐(0) 编辑
map的key 为指针
摘要:STL中map的key能否用char *呢?当然可以! STL中map的key能否用char *呢?当然可以! 在程序中需要用到一个map,本来是这样写的,map<string, int> mapStr; 为了追求效率,把string改成了char *,map<char *, int> mapStr 阅读全文
posted @ 2018-09-28 11:09 Love流浪的猪 阅读(1000) 评论(0) 推荐(0) 编辑
MFC消息机制(与C中全局回调函数的区别)
摘要:MFC消息机制: 阅读全文
posted @ 2018-09-28 11:02 Love流浪的猪 阅读(264) 评论(0) 推荐(0) 编辑
派生类时使用private的目的 《私有派生》
摘要:第一:继承方式是public的情况下: 当成员是public的时候,派生类对象可以直接调用基类的这个方法和数据, 当数据是private的时候,派生类的对象不能直接调用之,可以通过调用基类的方法来访问该数据, 当数据是protect的时候,派生类对象可以直接调用之 第二、继承方式是private的时 阅读全文
posted @ 2018-09-28 10:02 Love流浪的猪 阅读(560) 评论(0) 推荐(1) 编辑
C++11之 std::atomic (不用锁实现线程互斥)
摘要:std::atomic_flag是一个原子的布尔类型,可支持两种原子操作: test_and_set, 如果atomic_flag对象被设置,则返回true; 如果atomic_flag对象未被设置,则设置之,返回false clear. 清楚atomic_flag对象 std::atomic_fl 阅读全文
posted @ 2018-09-27 21:40 Love流浪的猪 阅读(38003) 评论(1) 推荐(2) 编辑
C++11 并发之std::thread std::mutex
摘要:https://www.cnblogs.com/whlook/p/6573659.html (https://www.cnblogs.com/lidabo/p/7852033.html) C++:线程(std::thread) 1.创建一个线程 创建线程比较简单,使用std的thread实例化一个线 阅读全文
posted @ 2018-09-27 21:35 Love流浪的猪 阅读(3521) 评论(0) 推荐(0) 编辑
信号量如何实现线程同步
摘要:Windows Linux 阅读全文
posted @ 2018-09-27 21:30 Love流浪的猪 阅读(710) 评论(0) 推荐(0) 编辑
单例模式优缺点
摘要:优点 (1) 由于单例模式在内存中只有一个实例,减少内存开支,特别是一个对象需要频繁地创建销毁时,而且创建或销毁时性能又无法优化,单例模式就非常明显了 (2) 由于单例模式只生成一个实例,所以,减少系统的性能开销,当一个对象产生需要比较多的资源时,如读取配置,产生其他依赖对象时,则可以通过在应用启动 阅读全文
posted @ 2018-09-27 20:36 Love流浪的猪 阅读(15995) 评论(0) 推荐(0) 编辑
hash与平衡二叉树的区别
摘要:哈希表的定义:哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方 https://blog.csdn.net/duan19920101/article/details/51579136 阅读全文
posted @ 2018-09-27 20:24 Love流浪的猪 阅读(561) 评论(0) 推荐(0) 编辑
static与全局变量区别
摘要:作用域不同: 全局变量是不显式用static修饰的全局变量,但全局变量默认是动态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。 全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用e 阅读全文
posted @ 2018-09-27 16:43 Love流浪的猪 阅读(1342) 评论(0) 推荐(0) 编辑
shell 脚本语言
摘要:shell 脚本语言: 阅读全文
posted @ 2018-09-27 00:09 Love流浪的猪 阅读(95) 评论(0) 推荐(0) 编辑
Mysql
摘要:Mysql 技巧: 阅读全文
posted @ 2018-09-27 00:08 Love流浪的猪 阅读(88) 评论(0) 推荐(0) 编辑
Curl
摘要:Curl 使用: 阅读全文
posted @ 2018-09-27 00:07 Love流浪的猪 阅读(102) 评论(0) 推荐(0) 编辑
ASIO
摘要:ASIO 使用: 阅读全文
posted @ 2018-09-27 00:07 Love流浪的猪 阅读(101) 评论(0) 推荐(0) 编辑
Qt
摘要:qt笔记: 阅读全文
posted @ 2018-09-27 00:07 Love流浪的猪 阅读(74) 评论(0) 推荐(0) 编辑
windbg 定位崩溃问题
摘要:三板斧如下: 等待完毕,最后打开 d:\a.log ,查找"KiUserExceptionDispatcher", 并记录下第二个地址xxxxxxxx, 最后 “.cxr xxxxxxxx”,就可以看到异常点了。 有时候我们会遇到这样的情况,软件突然崩溃了,而这时候我还没开调试器呢,怎么办? 比如如 阅读全文
posted @ 2018-09-27 00:06 Love流浪的猪 阅读(1674) 评论(0) 推荐(0) 编辑
虚函数表
摘要:(https://www.cnblogs.com/vipchenwei/p/7466018.html?utm_source=debugrun&utm_medium=referral) 一、 VPTR指针:虚指针(含有虚函数的类对象中都有一个需指针) 虚函数表:含有虚函数的类对象中都有一个虚函数表 这 阅读全文
posted @ 2018-09-26 16:47 Love流浪的猪 阅读(622) 评论(0) 推荐(0) 编辑
数据库事务的一致性和原子性
摘要:事务四大特征:原子性,一致性,隔离性、持久性(ACID) https://blog.csdn.net/u014079773/article/details/52808193/ Transaction 也就是所谓的事务了,通俗理解就是一件事情。从小,父母就教育我们,做事情要有始有终,不能半途而废。 事 阅读全文
posted @ 2018-09-25 19:40 Love流浪的猪 阅读(805) 评论(0) 推荐(0) 编辑
仿函数
摘要:仿函数的通俗定义:仿函数(functor)又称为函数对象(function object)是一个能行使函数功能的类。 仿函数的语法几乎和我们普通的函数调用一样,不过作为仿函数的类,都必须重载operator()运算符, 函数(functor)又称之为函数对象(function object),其实就 阅读全文
posted @ 2018-09-20 16:06 Love流浪的猪 阅读(2583) 评论(0) 推荐(0) 编辑
窗口子类化、超类化
摘要:1. 窗口子类化 是创建一个新的窗口函数代替原来的窗口函数。 2. 窗口超类化 是要创建一个新的窗口类,窗口函数调用一个已注册类的窗口函数,就像子类窗口函数调用原始窗口函数一样。新类叫做超类。 不同之处:超类可以截取窗口创建之初的若干消息,而子类不行。 简单说来,子类化是靠拦截Windows系统中的 阅读全文
posted @ 2018-09-20 13:15 Love流浪的猪 阅读(834) 评论(0) 推荐(0) 编辑
监控注册表,监控文件,监控进程
摘要:一、监控注册表 二、监控文件 三、监控进程 阅读全文
posted @ 2018-09-20 12:46 Love流浪的猪 阅读(292) 评论(0) 推荐(0) 编辑
IO模型
摘要:四种常用IO模型 1) 同步阻塞IO(Blocking IO)2) 同步非阻塞IO(Non-blocking IO)3) IO多路复用(IO Multiplexing)4) 异步IO(Asynchronous IO) (https://www.cnblogs.com/myJavaEE/p/67211 阅读全文
posted @ 2018-09-20 12:44 Love流浪的猪 阅读(134) 评论(0) 推荐(0) 编辑
智能指针
摘要:https://blog.csdn.net/gettogetto/article/details/66968307 http://blog.csdn.net/zy19940906/article/details/50470087 本次讨论:c++11之前的auto_ptr; c++11新加的uniq 阅读全文
posted @ 2018-09-20 12:42 Love流浪的猪 阅读(260) 评论(0) 推荐(0) 编辑
五大常用算法
摘要:https://blog.csdn.net/beyond59241/article/details/50728614 https://blog.csdn.net/changyuanchn/article/details/51476281 据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算 阅读全文
posted @ 2018-09-17 22:01 Love流浪的猪 阅读(7271) 评论(0) 推荐(1) 编辑
sql命令
摘要:一、SQL 事务(Transaction) 访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。由多个sql语句组成,必须作为一个整体向系统提交,要么都执行、要么都不执行 语法步骤:开始事务:BEGIN TRANSACTION --开启事务 ......其他命令s事务提交:COMMIT 阅读全文
posted @ 2018-09-17 21:58 Love流浪的猪 阅读(158) 评论(0) 推荐(0) 编辑
decltype的参数是左值时,得到一个引用类型
摘要:int* a = new int(10); decltype(*a) 得到的是引用类型:int& 阅读全文
posted @ 2018-09-17 21:57 Love流浪的猪 阅读(313) 评论(0) 推荐(0) 编辑
HTTP上传数据 :表单,二进制数据(multipart/form-data application/octet-stream boundary)
摘要:使用WinINet 一个较简单的例子:上传头像 较麻烦的实例:上传简历文件,及各项参数 阅读全文
posted @ 2018-09-17 21:57 Love流浪的猪 阅读(3610) 评论(0) 推荐(0) 编辑
研究Duilib的实现结构
摘要:第一步:调用RegisterClassEx(); 第二步:调用CreateWindowEx() 第三步:调用ShowWindow(),同时启动消息循环 说明: 1、RegisterClass,RegisterClassEx 作用:向Windows操作系统注册窗口类型 WNDCLASSEX结构体中的W 阅读全文
posted @ 2018-09-17 21:56 Love流浪的猪 阅读(763) 评论(0) 推荐(0) 编辑
SQLite 剖析
摘要:由于sqlite对多进程操作支持效果不太理想,在项目中,为了避免频繁读写 文件数据库带来的性能损耗,我们可以采用操作sqlite内存数据库,并将内存数据库定时同步到文件数据库中的方法。 实现思路如下: 1、创建文件数据库; 2、创建内存数据库(文件数据库、内存数据库的内部表结构需要一致); 3、在内 阅读全文
posted @ 2018-09-16 20:12 Love流浪的猪 阅读(757) 评论(0) 推荐(0) 编辑
内存数据库
摘要:关系模型,网状模型、层次模型 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。 主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、SQLite DBM 阅读全文
posted @ 2018-09-16 13:47 Love流浪的猪 阅读(774) 评论(0) 推荐(0) 编辑
什么时候调用:拷贝构造函数、赋值运算符
摘要:在默认情况下(用户没有定义,但是也没有显式的删除),编译器会自动的隐式生成一个拷贝构造函数和赋值运算符。 但用户可以使用delete来指定不生成拷贝构造函数和赋值运算符,这样的对象就不能通过值传递,也不能进行赋值运算。 Person(const Person& p) = delete; 注意:拷贝构 阅读全文
posted @ 2018-09-16 00:55 Love流浪的猪 阅读(2378) 评论(0) 推荐(0) 编辑
类成员初始化顺序
摘要:说明:成员被初始化的顺序,与初始化列表里面的顺序没有关系,只和成员的声明顺序有关。先声明的,先初始化。 运行结果: 1.内置数据类型,复合类型(指针,引用) 在成员初始化列表中初始化,和在构造函数体内赋值,性能和结果完全一样。2.用户定义类型(类类型) 结果上相同,但是性能上存在很大的差别。因为类类 阅读全文
posted @ 2018-09-16 00:09 Love流浪的猪 阅读(880) 评论(0) 推荐(0) 编辑
HTTP、TCP、UDP的区别
摘要:TCP、UDP的区别 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 Tcp通过校验和,重传控制,序号标识,滑动窗 阅读全文
posted @ 2018-09-13 23:06 Love流浪的猪 阅读(2154) 评论(0) 推荐(0) 编辑
进程和线程的区别
摘要:1、根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 2、包含关系:一个进程可以拥有多个线程,但一个线程只能属于一个进程。没有线程的进程可以看做是单线程的,线程是进程的一部分,所以线程也被称为轻量级进程。 3、在开销方面: 每个进程都有独立的代码和数据空间(程序上下文), 阅读全文
posted @ 2018-09-13 22:58 Love流浪的猪 阅读(1387) 评论(0) 推荐(1) 编辑
C++中类的静态成员与实例成员的区别
摘要:C++中类的静态成员与实例成员的区别 1、有static修饰的成员变量或成员函数称为静态成员。 2、在内存中,类的静态数据成员占有一块特定的内存空间,被该类的所有实例(对象)共享。而同一个类的不同对象的实例数据成员相互独立,占有各自的存储空间。 3、静态变量不能在构造函数中初始化,必须在类外的文件作 阅读全文
posted @ 2018-09-13 22:45 Love流浪的猪 阅读(1252) 评论(0) 推荐(0) 编辑
设计模式
摘要:设计模式的原则: (https://www.cnblogs.com/dolphin0520/p/3919839.html) 1、单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引 阅读全文
posted @ 2018-09-13 00:32 Love流浪的猪 阅读(209) 评论(0) 推荐(0) 编辑
const函数
摘要:1、const函数 和 非const函数 是重载函数; 2、调用的时候怎么确认调用的是哪一个呢? (1)非const对象,优先调用的是非const函数,如果非const函数不存在,则调用const函数 (2)const对象,只能调用const函数。 const成员函数内部,不能调用非const成员函 阅读全文
posted @ 2018-09-12 23:11 Love流浪的猪 阅读(2634) 评论(0) 推荐(0) 编辑
函数后面跟throw
摘要:1、函数后面跟throw(),表示该函数不会抛出异常 2、函数后面跟throw(...),表示该函数可能会抛出任何形式的异常 3、函数后面跟throw(int),表示该函数只抛出int类型的异常 阅读全文
posted @ 2018-09-12 22:51 Love流浪的猪 阅读(329) 评论(0) 推荐(0) 编辑
构造函数、析构函数抛出异常
摘要:一、构造函数抛出异常 1、通知对象构造失败的唯一方法,就是在构造函数中抛出异常 2、构造函数抛出异常后,该对象的析构函数将不被执行;如果其有基类,则基类的析构函数会被执行;、 构造函数的执行顺序:基类 ——> 子类 析构函数的执行顺序:子类 ——> 基类 二、析构函数抛出异常 1、类的成员函数如果出 阅读全文
posted @ 2018-09-12 22:48 Love流浪的猪 阅读(851) 评论(0) 推荐(0) 编辑
TCP/IP报文 三次握手 四次挥手
摘要:1、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占 阅读全文
posted @ 2018-09-12 22:10 Love流浪的猪 阅读(233) 评论(0) 推荐(0) 编辑
socket 编程
摘要:服务器端: WSAStartup socket bind listen accept {recv。。。send} closesocket WSACleanup(); 客户端: WSAStartup socket connect send。。。recv closesocket WSACleanup() 阅读全文
posted @ 2018-09-12 21:24 Love流浪的猪 阅读(196) 评论(0) 推荐(0) 编辑
出现线程死锁的几种情况
摘要:原因大致有以下几种: 1、所属线程忘了释放锁, 建议使用 autolock (封装类的构造函数中上锁,析构函数中释放锁) 2、线程中使用了嵌套锁(2个或2个以上的锁) 3、owningthread 被动的原因无法释放锁,比如 1)、使用开源库,异常时直接ExitThread。 2)、使用了 __tr 阅读全文
posted @ 2018-09-12 00:10 Love流浪的猪 阅读(987) 评论(0) 推荐(0) 编辑

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