项目问题记录
文章平均质量分 91
项目中遇到的问题
~青萍之末~
弱者总有弱者的理由
展开
-
HTTP服务器项目面试题
原创 2019-09-03 11:13:52 · 1292 阅读 · 0 评论 -
Jenkins和PC-Lint的使用
文章目录一、Jenkins简介二、PC-Lint简介一、Jenkins简介 Jenkins主要是用于搭建持续集成环境,最后达到的效果是每天可以定时地构建、测试和打包一次工程。二、PC-Lint简介 PC-Lint是一个C/C++软件代码静态分析工具,不仅可以检查一般的语法错误,还可以检查潜在的错误,比如数组访问越界、内存泄漏、使用未初始化变量、使用空...转载 2019-08-11 11:15:59 · 2491 阅读 · 4 评论 -
Source Insight使用教程
1.打开Source Insight。2.Project->New Project->输入工程名,OK,输入源码所在的目录(也就是能包含完所有源码文件的最底层的一个文件夹)。点击Add All,勾上图中所圈的地方,OK,”确定“,然后可以关闭上上图的窗口,就完成了代码的导入。【问题】1、无法搜索到工程里的文件解决方法:Recursively add lower...转载 2019-07-31 16:40:00 · 297 阅读 · 0 评论 -
Git常用命令
【git init】:把当前目录变成git可以管理的仓库。【git clone -b Release-3.4.0.8 URL】:拉取分支代码到本地。【git checkout dev】 :创建并切换分支。【git checkout --(也可以是git log的commit id) file】:拉取暂存区的文件,并将其替换成工作区文件。【git add file】 :把文件添加到暂存...转载 2019-07-29 22:55:57 · 255 阅读 · 0 评论 -
SVN上传、更新、添加、删除文件、版本回退
文章目录1、本地建立仓库(Create )2、下载已有仓库(Checkout )3、更新本地仓库(Update)4、添加文件(add )5、删除文件(delete)6、版本回退(Show log + revert)1、本地建立仓库(Create ) 在本地新建文件夹,右键 —> TortoiseSVN —> Create repository here。2、下载已有仓库(Che...转载 2019-06-04 16:14:00 · 16833 阅读 · 0 评论 -
项目中关于QT的常见问题
一、信号与槽详解 QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展等特点。信号与槽是QT自行定义的一种对象通信机制,是QT的核心机制。 信号与槽实际上是回调函数的一种体现。1、信号 当对象改变其状态时,信号就由该对象发射 (emit) 出去,而且对象只负责发送信号,它不知道另一端是谁在接收这个信号。当一个信号被发射时,与其相关联的槽将被立刻执...原创 2019-05-26 21:40:32 · 734 阅读 · 0 评论 -
记项目中的一次内存泄漏问题
最近在使用QT开发一个大型项目,内存占用可能有点多,其中在vector.push_back()的时候报了一个segment fault错误,感到很奇怪。 因为平时遇到段错误,大多数情况下都是数组越界(使用[]访问元素),而vector的push_back()函数,在添加元素时,如果空间不足,会先向内存申请原来空间的两倍大小的新的空间,然后把原来空间的元素拷贝到新空间。 所以这个时候问题...原创 2019-05-22 16:38:52 · 792 阅读 · 0 评论 -
安装python3.5并在QT中配置使用
一、安装32位的python3.5及各种库链接:https://pan.baidu.com/s/1q94_Vo3XDhfZ_hmssPjz6w提取码:zotf 先在dos环境下输入python,如果显示版本则表示python安装成功,安装库文件的时候,在dos环境下进入whl文件所在的目录,然后使用pip install ***-whl。如果提示pip版本过低,则按照提示更新pip。二、...原创 2019-05-22 16:17:55 · 1496 阅读 · 3 评论 -
在QT中安装dlib库
一、下载并安装相关软件包1、cmake链接:https://pan.baidu.com/s/1g57OuGMad_idSQAzkkpm4w提取码:02322、QT链接:https://pan.baidu.com/s/1j8X7z3iHG-0IQVnjlAAtIQ提取码:hl8w3、dlib链接:https://pan.baidu.com/s/1DA1vHmt1Tx6cFp0Y2gC...原创 2019-05-05 15:18:33 · 3266 阅读 · 3 评论 -
Web服务器项目中常问的开放性问题
1、为什么要做静态http服务器? 了解基本网络服务器的开发过程,熟悉reactor模式、基本的网络编程方法、TCP/IP协议和HTTP协议、C++的语法、多线程以及Linux下的各种工具的使用。2、 【Note】:...原创 2019-04-11 16:50:57 · 2158 阅读 · 0 评论 -
Web服务器项目详解
文章目录一、新连接到来的处理流程二、Channel、TcpConnection、TcpServer、Poller、EventLoop类详解1、Channel类2、TcpConnection类3、TcpServer类4、Poller类5、EventLoop类三、这几个类之间的关系一、新连接到来的处理流程 一个新的连接到来后,首先被MainReactor接收,然后通过轮询调度的方式(避免了惊群...原创 2019-03-30 20:22:28 · 960 阅读 · 0 评论 -
HTTPS原理详解
文章目录一、HTTPS简介二、对称加密和非对称加密1、对称加密(DES)2、非对称加密(RSA)3、RSA的原理三、一个HTTPS请求的流程一、HTTPS简介 HTTPS的本质就是在HTTP连接发起之前,先使用SSL/TLS协议,协调客户端和服务端,在两端各自生产一个对称加密算法的秘钥,然后以RSA(对之前生成的密钥进行非对称加密)的方式安全地传输数据。因为对称加密算法的秘钥是安全的,所以...转载 2019-03-26 19:37:56 · 4316 阅读 · 0 评论 -
常见的并发网络服务程序设计方案
文章目录一、IO复用1、select模型2、poll模型3、epoll模型二、单线程Reactor三、Reactor + ThreadPool四、Multiple Reactors(one loop per thread)一、IO复用 目前常用的IO复用模型有三种:select,poll,epoll。1、select模型 说的通俗一点就是各个客户端连接的文件描述符也就是套接字,都被放到...原创 2019-03-26 15:53:39 · 319 阅读 · 0 评论 -
HTTP协议详解
文章目录一、什么是HTTP协议二、什么是无状态协议?怎么解决?1、Cookie简介2、Cookie和Session的区别三、常用的HTTP方法有哪些?四、GET方法与POST方法的区别五、HTTP请求报文与响应报文格式六、常见的HTTP响应状态码七、HTTP的缺点与HTTPS八、HTTP优化九、HTTP1.0, HTTP1.1和 HTTP2.0的区别一、什么是HTTP协议 HTTP(超文本传...转载 2019-03-26 15:36:41 · 324 阅读 · 0 评论 -
应用层缓冲区的设计
文章目录一、TCP分包问题1、长连接和短连接2、长连接和短连接的分包方法3、长连接和短连接的应用场景二、TCP粘包问题三、Buffer类的设计与使用1、为什么需要应用层buffer?2、如何设计并使用应用层Buffer?3、Buffer类的设计一、TCP分包问题 在TCP这种字节流协议上做应用层分包是网络编程的基本要求。分包是指在发生一个消息(message)或者一帧(frame)数据时,通...原创 2019-03-26 10:23:14 · 2082 阅读 · 0 评论 -
智能指针详解
文章目录一、智能指针背后的设计思想二、普通指针存在的问题三、shared_ptr类1、make_shared函数2、shared_ptr的拷贝和赋值3、shared_ptr自动销毁所管理的对象4、使用动态内存的原因:5、使用shared_ptr的一个例子:四、shared_ptr的实现和循环引用问题五、weak_ptr类1、weak_ptr详解2、weak_ptr的实现六、unique_ptr类七...原创 2019-03-26 10:21:09 · 636 阅读 · 0 评论 -
线程间通信和异步唤醒
文章目录一、eventfd1、工作机制2、线程间通信demo3、使用eventfd的好处二、管道三、为什么要异步唤醒?一、eventfd man手册中的解释:eventfd()创建了一个“eventfd对象”,通过它能够实现用户态线程之间的等待/通知机制。eventfd的缓冲区只有8个字节。#include <sys/eventfd.h>int eventfd(unsigne...转载 2019-03-25 22:42:23 · 916 阅读 · 0 评论 -
高效定时器的设计
文章目录一、定时器的概念二、排序链表三、最小堆(优先队列)四、时间轮(环形队列+双向链表)五、红黑树(std::set自动排序)一、定时器的概念 网络编程中应用层的定时器是很有必要的,这可以让服务端主动关闭时间很久的非活跃连接。另外一种解决方案是TCP的keepalive,但它只能检测真正的死连接,即客端主机断电,或者网线被拔掉这种情况。如果客端连接上,但什么都不做,keepalive是毫无...转载 2019-03-25 21:40:33 · 1324 阅读 · 0 评论 -
ET和LT模式详解
文章目录一、rdlist不空的途径1、文件描述符状态的改变2、文件描述符的事件位events置1二、通过demo分析LT模式和ET模式1、ET模式读和LT模式读(途径1)2、LT模式读(途径2)3、ET模式写和LT模式写(途径1)4、LT模式写(途径2)三、ET模式下的读写注意事项1、解决方法(非阻塞模式)2、上述方法中写操作的改进四、ET模式下的accept注意事项五、多路IO复用accept为...转载 2019-03-24 15:21:30 · 11866 阅读 · 3 评论 -
epoll源码重要部分详解
一、epoll相关的数据结构 最重要的两个数据结构是红黑树和就绪链表,红黑树用于管理所有的文件描述符fd,就绪链表用于保存有事件发生的文件描述符。 当向系统中添加一个fd时,就创建一个epitem结构体。eventpoll用于管理所有的epitem。struct epitem { struct rb_node rbn; // 用于主结构管理的红黑树 s...转载 2019-03-24 12:29:14 · 1538 阅读 · 0 评论 -
select/poll/epoll的相关面试题
文章目录一、文件描述符与IO模型二、端口和地址复用三、select四、poll五、epoll六、相关面试题一、文件描述符与IO模型 文件描述符:当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。 IO多路复用是一种同步IO模型,实现一个进程可以监视多个文件描述符,一旦某个描述符就绪,就能够通知程序进行相应的读写操作。 IO多路复用相比于多线程的优势在于系统的...原创 2019-03-22 10:51:46 · 8702 阅读 · 2 评论 -
RPC(远程过程调用)详解
文章目录一、RPC是什么二、RPC需要解决的问题1、Call ID映射2、序列化和反序列化3、网络传输4、RPC的调用流程图三、常用的RPC框架一、RPC是什么 RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。二、RPC需要解决的问题1、C...转载 2019-03-16 11:59:47 · 22726 阅读 · 2 评论 -
SignalR详解
一、什么是SingalR? SingalR是一种能够让客户端和服务端实时通信,服务端可以主动推送消息到客户端的技术。以往的十几年里,客户端要想实时与服务器通信,只有通过长轮询和AJAX,服务器永远是被动的。二、SingalR是怎么实现的? 首先SignalR提供客户端和服务端之间的持久连接,其次在SignalR中,服务端代码使用远程过程调用(RPC)调用浏览器中的客户端代码,而不是请求-...转载 2019-03-15 22:21:46 · 4672 阅读 · 0 评论 -
双缓冲异步日志(Async Logging)
一、日志系统简介 日志通常用于故障诊断和追踪(trace),也可用于性能分析。日志通常是分布式系统中事故调查时的唯一线索, 用来追寻蛛丝马迹, 查出原凶。【日志需要记录的内容】:收到每条内部消息的ID(还可以包括关键字段、长度、hash等);收到的每条外部消息的全文;发出每条消息的全文, 每条消息都有全局唯一的id;关键内部状态的变更, 等等。【一个日志文件可分...原创 2019-01-16 17:16:30 · 5946 阅读 · 8 评论 -
多线程服务器的适用场合与编程模型
一、进程与线程1、进程的概念 直观来说,一个进程是”内存中正在运行的程序”。每个进程都有自己独立的地址空间。操作系统会以进程为单位,分配系统资源,所以我们也说,进程是资源分配的最小单位。进程切换时,耗费资源较大,效率要差一些。2、关于进程的一个形象比喻(人)每个人都有自己的记忆(memory) 。人与人通过谈话来交流(消息传递) 。谈话可以是面谈(同一个服务器),也可以在...原创 2018-12-31 17:01:06 · 602 阅读 · 0 评论 -
HTML、PHP、MySQL之间的联系和常见问题
文章目录一、input中name和id的区别1、name在以下用途是不能替代的:2、以下情况只能用id:3、input中name/id/class的作用:二、HTML前端注册的Demo三、PHP表单提交时获取不到post数据四、PHP调试时显示详细错误信息五、PHP获取post数据后写入MySQL的Demo一、input中name和id的区别 表单里面input标签有id和name,ID就像...原创 2018-12-06 21:56:04 · 1647 阅读 · 0 评论 -
Ubuntu搭建Apache和PHP环境
一、软件安装安装 Apache2:sudo apt-get install apache2安装PHP模块:sudo apt-get install php5安装Mysqlsudo apt-get install mysql-server其他模块安装:sudo apt-get install libapache2-mod-php5sudo apt-get install...转载 2018-12-06 21:20:45 · 8262 阅读 · 1 评论 -
Linux下阻塞与非阻塞,同步与异步的关系及IO模型
一、阻塞与非阻塞,同步与异步的关系1、同步 同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是说事情必须一件一件地做,等前一件做完了才能做下一件事。2、异步 异步,就是在发出一个功能调用时,调用者不会立刻得到结果。实际处理这个调用的部件是在调用发出后,通过状态、通知来通知调用者,或通过回调函数处理这个调用。 3、阻塞 阻塞调用是指调用结果返回之前,当前线程...转载 2018-11-11 15:41:29 · 1259 阅读 · 0 评论