<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[destory27的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/destory27</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; destory27]]></copyright><item><title><![CDATA[事件处理模式   Reactor----------Proactor]]></title><link>https://blog.csdn.net/destory27/article/details/81782366</link><guid>https://blog.csdn.net/destory27/article/details/81782366</guid><author>destory27</author><pubDate>Fri, 17 Aug 2018 19:27:17 +0800</pubDate><description><![CDATA[      服务器程序通常需要处理三类事件:I/O事件    信号     定时事件

      Reactor模式，它要求主线程（I/O处理单元）只负责监听文件描述符上是否有事件发生，有的话就立即将该事件通知工作线程（逻辑单元）。除此之外，主线程（I/O处理单元）不作任何其他实质性工作。读写数据，接收新的连接，以及处理客户请求均在工作线程（逻辑单元）完成。

使用同步I/O模型（以epoll_...]]></description><category></category></item><item><title><![CDATA[服务端开发框架]]></title><link>https://blog.csdn.net/destory27/article/details/81779194</link><guid>https://blog.csdn.net/destory27/article/details/81779194</guid><author>destory27</author><pubDate>Fri, 17 Aug 2018 16:11:05 +0800</pubDate><description><![CDATA[I/O处理单元是服务器管理客户连接的模块。它通常要完成以下工作:等待并接受新的客户连接，接收客户数据，将服务器响应数据返回给客户端。但是数据的收发不一定在I/O处理单元中执行，也可能在逻辑单元中执行，具体在何处执行取决于事件处理模式。对于一个服务器机群来说，I/O处理单元是一个专门的接入服务器。它实现负载均衡，从所用逻辑服务器中选取负荷最小的一台来为新客户服务。
	 ...]]></description><category></category></item><item><title><![CDATA[高性能定时器------------时间堆]]></title><link>https://blog.csdn.net/destory27/article/details/81774291</link><guid>https://blog.csdn.net/destory27/article/details/81774291</guid><author>destory27</author><pubDate>Fri, 17 Aug 2018 11:10:48 +0800</pubDate><description><![CDATA[    基于升序链表的定时器(https://blog.csdn.net/destory27/article/details/81748580)和时间轮定时器(https://blog.csdn.net/destory27/article/details/81750790)都是以固定的频率调用tick,并在其中依次检测到期的定时器,然而执行到定时器上的回调函数.设计定时器的另一种思路是:将所有的定...]]></description><category></category></item><item><title><![CDATA[高性能定时器-------时间轮]]></title><link>https://blog.csdn.net/destory27/article/details/81750790</link><guid>https://blog.csdn.net/destory27/article/details/81750790</guid><author>destory27</author><pubDate>Thu, 16 Aug 2018 23:50:43 +0800</pubDate><description><![CDATA[          基于排序链表的定时器(https://blog.csdn.net/destory27/article/details/81748580)存在一个问题:添加定时器的效率偏低。



         如图所示时间轮内,指针指向轮子上的一个槽,它以恒定的速度顺时针旋转，每旋转一步就指向先一个槽.该时间轮共有N个槽,旋转一周的时间是N*Si,每个槽指向一条定时器链表,没条链表上的定时...]]></description><category></category></item><item><title><![CDATA[基于升序链表的定时器 - 处理非活动连接]]></title><link>https://blog.csdn.net/destory27/article/details/81748580</link><guid>https://blog.csdn.net/destory27/article/details/81748580</guid><author>destory27</author><pubDate>Thu, 16 Aug 2018 20:51:59 +0800</pubDate><description><![CDATA[
	           服务器程序通常要定期处理非活动连接:给客户端发送一个重连请求,或者关闭该连接。利用alarm函数周期性的触发SIGALRM信号， 该信号的信号处理函数利用管道通知主循环执行定时器链表上的定时器任务---关闭非活动的连接。
	
	
	          采用升序双向链表实现定时器的功能，核心函数tick,它每隔一端固定时间就执行一次，以检测并处理到期的任务。判断定时器任务到...]]></description><category></category></item><item><title><![CDATA[IO多路复用-select]]></title><link>https://blog.csdn.net/destory27/article/details/80023948</link><guid>https://blog.csdn.net/destory27/article/details/80023948</guid><author>destory27</author><pubDate>Fri, 20 Apr 2018 21:06:13 +0800</pubDate><description><![CDATA[select系统调用的目的是：在一段指定时间内，监听用户感兴趣的文件描述符上的可读、可写和异常事件。poll和select应该被归类为这样的系统 调用，它们可以阻塞地同时探测一组支持非阻塞的IO设备，直至某一个设备触发了事件或者超过了指定的等待时间——也就是说它们的职责不是做IO，而是帮助 调用者寻找当前就绪的设备。#include &amp;lt;sys/select.h&amp;gt;
#inc...]]></description><category></category></item><item><title><![CDATA[I/O多路复用]]></title><link>https://blog.csdn.net/destory27/article/details/79999675</link><guid>https://blog.csdn.net/destory27/article/details/79999675</guid><author>destory27</author><pubDate>Thu, 19 Apr 2018 09:07:54 +0800</pubDate><description><![CDATA[参考：https://www.zhihu.com/question/28594409       I/O多路复用（multiplexing）的本质是通过一种机制（系统内核缓冲I/O数据），让单个进程可以监视多个文件描述符，一旦某个描述符就绪（一般是读就绪或写就绪），能够通知程序进行相应的读写操作。     与多线程和多进程相比，I/O 多路复用的最大优势是系统开销小，系统不需要建立新的进程或者线程...]]></description><category></category></item><item><title><![CDATA[私有数据--TSD]]></title><link>https://blog.csdn.net/destory27/article/details/79948840</link><guid>https://blog.csdn.net/destory27/article/details/79948840</guid><author>destory27</author><pubDate>Sun, 15 Apr 2018 14:11:28 +0800</pubDate><description><![CDATA[       在多线程环境下，进程内的所有线程共享进程的数据空间，因此全局变量为所有线程共有。在程序设计中有时需要保存线程自己的全局变量，这种特殊的变量仅在某个线程内部有效。如常见的变量errno，它返回标准的出错代码。errno不应该是一个局部变量，几乎每个函数都应该可以访问它；但它又不能是一个全局变量，否则在一个线程里输出的很可能是另一个线程的出错信息，这个问题可以通过创建线程的私有数据(TS...]]></description><category></category></item><item><title><![CDATA[Linux- 线程间同步]]></title><link>https://blog.csdn.net/destory27/article/details/79947256</link><guid>https://blog.csdn.net/destory27/article/details/79947256</guid><author>destory27</author><pubDate>Sun, 15 Apr 2018 11:07:02 +0800</pubDate><description><![CDATA[    线程是允许应用程序并发的执行多个任务的一种机制。一个进程可以有多个线程，如果每个线程执行不同的任务，通过对线程的执行顺序进行控制（调度）就可以实现任务的并发执行。当然了多进程也可以实现任务的并发处理，但是两者之间是有区别的。最大的区别就是拥有的资源不同。进程拥有自己的独立系统资源，而线程没有独立资源，只能和属于同一进程的其他线程共享进程的系统资源。单个资源在多个用户之间共享就会存在一致性的...]]></description><category></category></item><item><title><![CDATA[守护进程]]></title><link>https://blog.csdn.net/destory27/article/details/79882365</link><guid>https://blog.csdn.net/destory27/article/details/79882365</guid><author>destory27</author><pubDate>Tue, 10 Apr 2018 15:50:22 +0800</pubDate><description><![CDATA[守护进程	1.让进程在后台执行。方法是调用fork产生一个子进程，然后使得父进程退出。	2.调用setsid创建一个新会话。控制终端，登录会话和进程组通常是从父进程继承下来的，守护进程要摆脱它们，不受它们影响，其方法是调用setsid使进程成为一个会话组长。    Linux中的进程与控制终端，登录会话和进程组之间的关系：进程属于一个进程组，进程组号（GID）就是进程组长的进程号（PID）。登录会...]]></description><category></category></item><item><title><![CDATA[Linux  libconfig配置文件库读取]]></title><link>https://blog.csdn.net/destory27/article/details/79684275</link><guid>https://blog.csdn.net/destory27/article/details/79684275</guid><author>destory27</author><pubDate>Sun, 25 Mar 2018 10:30:29 +0800</pubDate><description><![CDATA[1 libconfig是什么？    Libconfig是一个结构化的配置文件库，它可以定义一些配置文件，例如test.cfg . 它比xml可读性更好，而且更简洁。而且不像xml，它是 type-aware类型自我感知的，因此不需要做string parsing (分词？). 而ini太弱。2 配置文件说明     libconfig支持结构化、层次化的配置。这些配置可以从文件中读取或写入文件，...]]></description><category></category></item><item><title><![CDATA[A星寻路算法]]></title><link>https://blog.csdn.net/destory27/article/details/79490045</link><guid>https://blog.csdn.net/destory27/article/details/79490045</guid><author>destory27</author><pubDate>Thu, 08 Mar 2018 21:17:00 +0800</pubDate><description><![CDATA[代码：http://download.csdn.net/download/destory27/10276243在游戏中，有一个很常见地需求，就是要让一个角色从A点走向B点，我们期望是让角色走最少的路。嗯，大家可能会说，直线就是最短的。没错，但大多数时候，A到B中间都会出现一些角色无法穿越的东西，比如墙、坑等障碍物。这个时候怎么办呢？ 是的，我们需要有一个算法来解决这个问题，算法的目标就是计算出两点...]]></description><category></category></item><item><title><![CDATA[试题库管理系统--数据库设计]]></title><link>https://blog.csdn.net/destory27/article/details/78918278</link><guid>https://blog.csdn.net/destory27/article/details/78918278</guid><author>destory27</author><pubDate>Thu, 28 Dec 2017 09:14:02 +0800</pubDate><description><![CDATA[一、概要设计
1.1 背景和意义
目前，许多高校绝大多数课程还采用考教统一的模式来完成教学过程，这种传统的考试模式在教学到实施考试的过程带有很大的主观随意性和不规范性。另外随着各高校近年来学生规模的扩大，教学任务日益繁重，教师的工作量相应的不断增加。迫切需要计算机辅助教学系统来打破这种传统的教学模式，减轻教师的工作负担，提高教学质量。因此，本文研究设计了一个试题库管理系统，来解决和缓解高校课程]]></description><category></category></item><item><title><![CDATA[使用qstandarditemmodel获取qtableview中复选框的数据]]></title><link>https://blog.csdn.net/destory27/article/details/78900824</link><guid>https://blog.csdn.net/destory27/article/details/78900824</guid><author>destory27</author><pubDate>Tue, 26 Dec 2017 12:12:30 +0800</pubDate><description><![CDATA[类QStandardItemModel负责保存数据，每个数据项被表示为类QStandardItem的对象。

当一个数据项被显示在视图中时，它往往包含一些文字、一个图标，还可能包含一个复选框。



 QStandardItemModel  *m_pModel = new QStandardItemModel(ui->tableView);



//为QTableView设置]]></description><category></category></item><item><title><![CDATA[C++11特性]]></title><link>https://blog.csdn.net/destory27/article/details/78484296</link><guid>https://blog.csdn.net/destory27/article/details/78484296</guid><author>destory27</author><pubDate>Wed, 08 Nov 2017 22:41:55 +0800</pubDate><description><![CDATA[0 简介
1 候选变更
2 C++核心语言的扩充
3 核心语言的运行期表现强化
3.1 右值引用和 move 语义
3.2 泛化的常数表示式
3.3 对POD定义的修正
4 核心语言建构期表现的加强
4.1 外部模板
5 核心语言使用性的加强
5.1 初始化列表
5.2 统一的初始化
5.3 类型推导
5.4 基于范围的 for 循环
5.5 Lambda函数与表达式
5.6 一种新的函数语法
5.7 对象建构的改良
5.8 显式虚函数重载
5.9 空指针常量
5.10 强类型枚举
5.11 右尖括号
5.]]></description><category></category></item><item><title><![CDATA[关系型数据库的设计范式 1NF 2NF 3NF BCNF]]></title><link>https://blog.csdn.net/destory27/article/details/78418924</link><guid>https://blog.csdn.net/destory27/article/details/78418924</guid><author>destory27</author><pubDate>Wed, 01 Nov 2017 21:28:55 +0800</pubDate><description><![CDATA[1NF是所有关系型数据库的最基本要求，
第二范式（2NF） 2NF在1NF的基础之上，
消除了非主属性对于码的部分函数依赖。
第三范式（3NF）
3NF在2NF的基础之上，消除了非主属性对于码的传递函数依赖。]]></description><category></category></item><item><title><![CDATA[SQL的四种连接-左外连接、右外连接、内连接、全连接]]></title><link>https://blog.csdn.net/destory27/article/details/78418621</link><guid>https://blog.csdn.net/destory27/article/details/78418621</guid><author>destory27</author><pubDate>Wed, 01 Nov 2017 21:01:03 +0800</pubDate><description><![CDATA[1、内联接（典型的联接运算，使用像 =  或 <> 之类的比较运算符）。包括相等联接和自然联接。     
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如，检索 students和courses表中学生标识号相同的所有行。   
    
2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。     
在 FROM子句中指定外联接时，可以由下列几组关键字中的一组指定：     

1）LEFT  JOIN或LEFT OUTER JOIN     
左向外联接的结果集包括  LEF]]></description><category></category></item><item><title><![CDATA[C++中 typename 和 class  的区别]]></title><link>https://blog.csdn.net/destory27/article/details/78009163</link><guid>https://blog.csdn.net/destory27/article/details/78009163</guid><author>destory27</author><pubDate>Sun, 17 Sep 2017 11:30:00 +0800</pubDate><description><![CDATA[问题：在下面的 template declarations（模板声明）中 class 和 typename 有什么不同？ 

·在声明 template parameters（模板参数）时，class 和 typename 是可互换的。

·用 typename 去标识 nested dependent type names（嵌套依赖类型名），在 base class lists（基类列表）中或在一个 member initialization list（成员初始化列表）中作为一个 base class i]]></description><category></category></item><item><title><![CDATA[error LNK2001: 无法解析的外部符号 Qt的moc机制]]></title><link>https://blog.csdn.net/destory27/article/details/78004486</link><guid>https://blog.csdn.net/destory27/article/details/78004486</guid><author>destory27</author><pubDate>Sat, 16 Sep 2017 16:27:54 +0800</pubDate><description><![CDATA[error LNK2001: 无法解析的外部符号 Qt的moc机制

error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall
MainWindowBottomWidget::metaObject(void)const " ()]]></description><category></category></item><item><title><![CDATA[简单静态库与动态库的创建以及Makefile基本使用]]></title><link>https://blog.csdn.net/destory27/article/details/70622923</link><guid>https://blog.csdn.net/destory27/article/details/70622923</guid><author>destory27</author><pubDate>Mon, 24 Apr 2017 17:37:26 +0800</pubDate><description><![CDATA[静态库的创建以及使用：
	
	gcc  -c  log.c                 |生成 log.o 文件
	ar  cr  libstatic.a  log.o     |创建静态库libstatic.a 并将 .o 问价链接到 .a 文件中
	gcc  main.c  -L.  libstatic.a  log.h  -o  out    |-L：链接库  .:表示当前目录 后跟要链接的库和头文件， 生成可执行程序out
动态库的创建以及使用：
        gcc -c -fPIC log]]></description><category></category></item></channel></rss>