- 博客(31)
- 资源 (17)
- 收藏
- 关注
原创 nginx源码分析--状态机执行
/** * 11个阶段处理HTTP请求 */voidngx_http_core_run_phases(ngx_http_request_t *r){ ngx_int_t rc; ngx_http_phase_handler_t *ph; ngx_http_core_main_conf_t *cmcf; cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module)
2020-09-11 17:56:47 190
原创 nginx源码分析--状态机模型
nginx在处理客户端发来的http数据,主要是通过11个阶段的处理,形成了状态机模式。typedef struct { ngx_array_t servers; /* ngx_http_core_srv_conf_t */ //http框架初始化后各个http模块构造的处理方法组成phase_engine,由下面各阶段处理方法构成的phase数组构建的阶段引擎才是流水式处理http请求的实际数据结构 ngx_http_phase_en
2020-09-11 10:46:43 461
原创 nginx源码分析--多路复用epoll的初始化流程
NGX_EVENT_MODULE类型的module有两个:(1)ngx_event_core_module第一个事件类型模块,它的主要功能是负责解析事件类配置项,选择事件处理机制(select,poll,epoll还是kequeue机制),创建连接池,预分配读写事件池等。ngx_event_core_commands[] 中指定处理conf配置的关于sevents的配置项(2)ngx_epoll_module/** * 工作进程初始化 */static voidngx_worker_proc
2020-09-11 09:45:50 225
原创 nginx源码分析--module模块的初始化
谈一下zeromq的整体架构:zeromq作为一种高性能的消息队列中间件,主要依赖于linux的异步机制,所有的操作全部在子线程中处理,不会阻塞主线程。具体对线程的封装类:(1)io_thread:class io_thread_t : public object_t, public i_poll_events { public: io_thread_t (zmq::ctx_t *ctx_, uint32_t tid_); // Clean-up
2020-09-11 08:58:59 451
原创 zeromq源码解析
zeromq源码解析zmq是一款异步的高性能的消息队列中间件,有多种语言版本,目前本人看的是基于C++的版本,在研读zmq代码过程中由于大量的异步设计,使得代码的阅读性较低,所以将梳理的代码历程记录于此。欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编
2020-09-07 11:05:46 620
原创 QT中文乱码的解析
在使用QT过程中经常会遇到中文乱码问题,我们一般的解决办法是:(1)QString str = QString::fromLocal8Bit("中文");(2)QString str = QString(QStringLiteral("中文"))这样确实解决问题,但是为什么这样就可以解决问题呢?通过一段代码我们来解析这个问题。#i
2017-11-14 22:57:07 1458
转载 pdb文件小结
.pdb文件,是VS生成的用于调试的符号文件(program database),保存着调试的信息。在VS的工程属性,C/C++,调试信息格式,设置/Zi,那么VS就会在构建项目时创建PDB文件。在这里要区分两种情况:1、构建静态库时,可以在工程属性 –> C/C++ –> 输出文件 –> 程序数据库名 设置生成的pdb文件名称,如果不指定,默认是生成为VCx0.pdb,这里x是V
2016-09-19 11:28:17 1302
原创 单元测试覆盖率生成网页报告----(五)邮件通知
当单元测试构建完成后需要通过邮件通知用户,这节我们来逐步配置邮件通知功能。首先在系统配置中配置SMTP服务器:
2015-08-06 13:16:49 958
原创 单元测试覆盖率生成网页报告----(二)
在做测试报告时肯定涉及到代码的远程提交,我这里选择使用SVN,接下来演示如何一步一步配置SVN。很多内容参考:http://huihai.iteye.com/blog/1985238svn是apache的一个开源项目,全称为subversion。是一个基于版本的项目管理软件,一般在多人开发的项目中使用,目前svn已经替代了原来的cvs。大多数情况下,svn服务安装在linux服务器上。下面简单
2015-07-28 17:04:43 809
原创 单元测试覆盖率生成网页报告----(四)
通过前几期的构建,我们已经可以在jenkins中对一个单独的exe执行文件进行测试并生成覆盖路报告。但是有两个问题: 1、鉴于SVN管理源码,我们不可能每次要求用户将exe执行文件上传,如何能够在用户上传源码以后也能在远程实现重新的编译生成exe执行文件呢?2、如果用户需要在job中可以同时构建多个工程,该如何实现?3、如果用户上传了新的工程,如何在构建时自动检测并同以前
2015-07-28 16:57:02 1824
原创 单元测试覆盖率生成网页报告----(三)
在QT Creater中可能只需要点击按钮就可以把把当前工程进行编译、链接、运行,但是当用户提交源码到远程服务器时,服务器要自动对源码进行编译和运行生成exe执行文件并通过openCppCoverage测试生成覆盖率报告,这样就需要使用Dos命令来自动执行。具体步骤如下:1、配置环境变量:添加C:\Qt\Qt5.1.1\5.1.1\msvc2010\bin (qmake)
2015-07-27 17:20:27 1702
原创 C++回忆录:(二)inline内联函数
在C/C++语言中,函数调用会涉及到函数的入栈和出栈,比如下面的例子:Void myprint(){Printf("%d",3);}Void main(){Int i;For(i=0;i<100;i++)Myprint(2);}在主函数中调用myprint函数打字2这个数字,我们就要调用函数100次,意味着这个函数要进栈100次,出栈100次,这样我们就
2015-07-26 15:24:57 500
原创 C++回忆录:(一)new和malloc的区别
new和malloc的区别,以前都是迷迷糊糊的用,今天在其他博客上看到了,就顺便整理过来。内部数据类型是编译器本来就认识的,不需要用户自己定义;非内部数据类型不是编译器本来就认识的,需要用户自己定义才能让编译器识别。运算符使用是否正确,编译器在
2015-07-25 11:42:51 551
原创 单元测试覆盖率生成网页报告----(一)
在C++中单元测试的框架有很多,但是能够生成覆盖率报告的却很少,接下来带大家一步一步集成测试环境。
2015-07-24 21:46:53 4297 1
原创 STL容器
STL的容器可以分为以下几个大类: 一:序列容器, 有vector, list, deque, string.二 : 关联容器, 有set, multiset, map, mulmap, hash_set, hash_map, hash_multiset, hash_multimap三: 其他的杂项: stack, queue, valarray, bitset
2015-06-02 16:25:44 329
原创 C++ const和#define区别
const定义常量和#define定义常量的区别 答:(1)编译器处理方式不同 #define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2)类型和安全检查不同 #define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3)存储方式
2015-06-01 21:38:39 348
原创 C++ 内存详解(二)
在本文中主要是介绍C++中类在实例化过程中在内存中的分配。很多人都知道C++类是由结构体发展而来,所以他们的成员变量(C语言的结构体只有成员变量,C++的结构体和类基本相同,除了默认成员变量的属性,类成员变量默认私有,结构体成员变量默认公有,C++保留结构体主要是兼容C程序)的内存分配机制是一样的。下面我们以类来说明问题,如果类搞清楚了,结构体也就明白了。类分为成员变量和成员函数,我们先讨论成
2015-05-26 16:38:57 419
原创 C++ 内存详解(一)
以前学过C++编程语言,但是只是学习一些基本概念性的知识,然后完成老师布置的简单的作业,仅限于此。在去年找工作时,突然发现很多公司非常注重C++的内存管理,自己也就临时抱佛脚,看了一下《程序员面试宝典》和《剑指Offer》,在网上查了一些资料,自己记了一些,对于C++有了一个新的认识。现在时隔半年多,马上快毕业了,突然意识到C++中内存的重要性,尤其是在接触QT以后,开始打算把C++的基础再夯实一
2015-05-26 14:28:37 1496
原创 Qt 关于Qt5中QPrinter问题
在用Qt做记事本的时候出现:QPrinter:no such file or directory 的错误,解决方法如下:在.pro文件中添加下面一行代码:qtHaveModule(printsupport): QT += printsupport就可以了,头文件不需要改。这是因为Qt 5中将所有打印的相关类都放到了Qt Print Support模块造成的。
2015-05-07 08:52:23 7917
原创 Qt OpenGL----纹理贴图
为了让三围图形看上去更真实,可以在三维物体上贴上纹理图像。纹理贴图能够保证当三围物体变换和渲染时,纹理能够表现出正确的行为。纹理通常是二维的,但它也可以是一维或者三维的。这里通过一个简单的例子来学习基本的纹理贴图功能。例子是对立方体每一面进行不同的纹理贴图并进行旋转。废话不多说,直接看代码:类定义:#ifndef MYGL_H_#define MYGL_H_#include #in
2015-05-04 16:26:08 4243
原创 Qt OpenGL----着色、3D和旋转
在本文中主要是通过绘制一个三角锥和立方体来介绍openGL中的着色、3D和旋转的应用。废话不多说,直接上代码:类定义:#ifndef MYGL_H_#define MYGL_H_#include #include class MyGLWidget : public QGLWidget{ Q_OBJECT public: MyGLWidget(QWidget * p
2015-05-04 15:45:26 1456
原创 Qt OpenGL----创建openGL窗口
为了满足高级绘图的需求,在Qt中支持OpenGL接口和矢量图形格式SVG。使用OpenGL可以完成3D绘图,SVG模块则可以绘制XML格式的矢量图形SVG。Qt还支持直接操作显存的QGLFramebufferObject对象。1、OpenGL是最开始在SGI公司推出的3D绘图编程接口,OpenGL具有绘制三维图形的各种函数,但不包括窗口系统或处理用户输入的函数。为了在Qt中使用OpenGL,Q
2015-05-04 14:32:51 1121
转载 Qt5.2中使用OpenGL的glu函数库无法使用的解决方案
在Window7使用Qt5.2学习OpenGL时,出现了以OpenGL中glu开头的函数库无法使用的错误,例如:'gluPerspective' was not declared in this scope.本文使用的QT版本是Qt 5.2.0 for Windows 32-bit (MinGW 4.8, OpenGL, 689 MB)(Info),我尝试了一下,最终在Window7
2015-04-24 15:18:31 3032
原创 QT 打开txt文件以及出现的乱码问题
在用QT实现记事本打开功能时,在导入txt文件后会出现乱码问题,这时需要对导入文件编码进行设置。代码如下:void MainWindow::open(){ QString fileName; //弹出打开文件对话框 fileName = QFileDialog::getOpenFileName(this, tr("打开文件"),
2015-04-22 19:54:58 6008 4
原创 QT 信号和槽需要注意的几点
connect(发出信号的对象指针,SIGNAL(信号函数原型), 响应信号的对象, SLOT(槽函数原型)); 这里先说说信号及槽与普通成员函数有什么区别,只是定义的区域不同而已.信号函数需要声明在头文件的signals:关键字后面,无需实现.而槽则需要定义在public/private slots:关键字后面,实现与正常函数一样,可以直接调用,当然调用权限与slots前面的范围控制关
2015-04-18 16:59:44 2055
原创 QT学习网站
近期开始学习QT,记录一下看到的比较好的网站:《Qt学习之路》 http://www.cnblogs.com/tornadomeet/tag/Qt%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/
2015-04-18 16:28:12 662
转载 字符编码详解
转载自:http://polaris.blog.51cto.com/1146394/377468/以前一直被编码问题困扰,然后专门抽出时间一探究竟,在网上看到文章《字符编码详解——彻底理解掌握编码知识,“乱码”不复存在》,但是篇幅略长,现进行总结以备后用。在此之前,先了解一些有用概念:“字符集”、“字符编码”和“内码”。1、字符集与字符编码字符是各种文字和符号的
2015-04-18 11:02:53 446
转载 QT 去掉标题栏和去掉标题栏后移动窗口
转自:http://www.2cto.com/kf/201302/191602.html最近公司在做一个C++项目,功能做的差不多了,现在是界面方面修改,要想做出好看的界面,标题栏是个问题,所以我选择把标题栏去掉,去掉标题栏方法比较简单,就一行代码this->setWindowFlags(Qt::FramelessWindowHint);去掉以后又发现一个问题,就是不能移动窗口
2015-04-18 10:26:59 6651 1
原创 c语言课程设计笔记
1. 在使用fwrite()函数时,必须同时伴随fclose()函数,否则,在文件写入的内容不会显示。2.在用#define定义文件名时,一定要注意,例如:#define FILE_DATA "data.dat" 在使用if((fp=fopen(FILE_DATA ,"wb+"))==NULL)进行判断时就会报错,但是如果改为:#define DATA_FILE "data.dat"
2013-12-12 19:46:10 845
glut.lib和glut32.lib库文件
2015-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人