<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mojianc的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mojianc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mojianc]]></copyright><item><title><![CDATA[nginx源码分析--状态机执行]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/108539080</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/108539080</guid><author>mojianc</author><pubDate>Fri, 11 Sep 2020 17:56:47 +0800</pubDate><description><![CDATA[/**
 * 11个阶段处理HTTP请求
 */
void
ngx_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)]]></description><category></category></item><item><title><![CDATA[nginx源码分析--状态机模型]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/108528786</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/108528786</guid><author>mojianc</author><pubDate>Fri, 11 Sep 2020 10:46:43 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[nginx源码分析--多路复用epoll的初始化流程]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/108527237</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/108527237</guid><author>mojianc</author><pubDate>Fri, 11 Sep 2020 09:45:50 +0800</pubDate><description><![CDATA[NGX_EVENT_MODULE类型的module有两个：
（1）ngx_event_core_module
第一个事件类型模块，它的主要功能是负责解析事件类配置项，选择事件处理机制（select，poll，epoll还是kequeue机制），创建连接池，预分配读写事件池等。ngx_event_core_commands[] 中指定处理conf配置的关于sevents的配置项
（2）ngx_epoll_module
/**
 * 工作进程初始化
 */
static void
ngx_worker_proc]]></description><category></category></item><item><title><![CDATA[nginx源码分析--module模块的初始化]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/108444382</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/108444382</guid><author>mojianc</author><pubDate>Fri, 11 Sep 2020 08:58:59 +0800</pubDate><description><![CDATA[谈一下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]]></description><category></category></item><item><title><![CDATA[zeromq源码解析]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/108439659</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/108439659</guid><author>mojianc</author><pubDate>Mon, 07 Sep 2020 11:05:46 +0800</pubDate><description><![CDATA[zeromq源码解析
zmq是一款异步的高性能的消息队列中间件，有多种语言版本，目前本人看的是基于C++的版本，在研读zmq代码过程中由于大量的异步设计，使得代码的阅读性较低，所以将梳理的代码历程记录于此。
欢迎使用Markdown编辑器
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章，了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持，除了标准的Markdown编]]></description><category></category></item><item><title><![CDATA[刨根究底字符编码之零——前言]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/78703553</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/78703553</guid><author>mojianc</author><pubDate>Sun, 03 Dec 2017 19:50:34 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/benbenalin/p/6881980.html]]></description><category></category></item><item><title><![CDATA[QT中文乱码的解析]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/78536216</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/78536216</guid><author>mojianc</author><pubDate>Tue, 14 Nov 2017 22:57:07 +0800</pubDate><description><![CDATA[在使用QT过程中经常会遇到中文乱码问题，我们一般的解决办法是：
（1）QString str = QString::fromLocal8Bit("中文");
（2）QString str = QString（QStringLiteral("中文")）
这样确实解决问题，但是为什么这样就可以解决问题呢？
通过一段代码我们来解析这个问题。
#i]]></description><category></category></item><item><title><![CDATA[pdb文件小结]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/52584230</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/52584230</guid><author>mojianc</author><pubDate>Mon, 19 Sep 2016 11:28:17 +0800</pubDate><description><![CDATA[.pdb文件，是VS生成的用于调试的符号文件（program database），保存着调试的信息。在VS的工程属性，C/C++，调试信息格式，设置/Zi，那么VS就会在构建项目时创建PDB文件。

在这里要区分两种情况：

1、构建静态库时，可以在工程属性 –> C/C++ –> 输出文件 –> 程序数据库名 设置生成的pdb文件名称，如果不指定，默认是生成为VCx0.pdb，这里x是V]]></description><category></category></item><item><title><![CDATA[Qt中update()和repaint()的源码分析]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/51612851</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/51612851</guid><author>mojianc</author><pubDate>Wed, 08 Jun 2016 14:44:59 +0800</pubDate><description><![CDATA[Qt中update()和repaint()的源码分析]]></description><category></category></item><item><title><![CDATA[单元测试覆盖率生成网页报告----（五）邮件通知]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/47315243</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/47315243</guid><author>mojianc</author><pubDate>Thu, 06 Aug 2015 13:16:49 +0800</pubDate><description><![CDATA[当单元测试构建完成后需要通过邮件通知用户，这节我们来逐步配置邮件通知功能。
首先在系统配置中配置SMTP服务器：]]></description><category></category></item><item><title><![CDATA[单元测试覆盖率生成网页报告----（二）]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/47107997</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/47107997</guid><author>mojianc</author><pubDate>Tue, 28 Jul 2015 17:04:43 +0800</pubDate><description><![CDATA[在做测试报告时肯定涉及到代码的远程提交，我这里选择使用SVN，接下来演示如何一步一步配置SVN。很多内容参考：http://huihai.iteye.com/blog/1985238
svn是apache的一个开源项目，全称为subversion。是一个基于版本的项目管理软件，一般在多人开发的项目中使用，目前svn已经替代了原来的cvs。大多数情况下，svn服务安装在linux服务器上。下面简单]]></description><category></category></item><item><title><![CDATA[单元测试覆盖率生成网页报告----（四）]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/47107515</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/47107515</guid><author>mojianc</author><pubDate>Tue, 28 Jul 2015 16:57:02 +0800</pubDate><description><![CDATA[通过前几期的构建，我们已经可以在jenkins中对一个单独的exe执行文件进行测试并生成覆盖路报告。但是有两个问题：
        1、鉴于SVN管理源码，我们不可能每次要求用户将exe执行文件上传，如何能够在用户上传源码以后也能在远程实现重新的编译生成exe执行文件呢？
2、如果用户需要在job中可以同时构建多个工程，该如何实现？
3、如果用户上传了新的工程，如何在构建时自动检测并同以前]]></description><category></category></item><item><title><![CDATA[单元测试覆盖率生成网页报告----（三）]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/47087525</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/47087525</guid><author>mojianc</author><pubDate>Mon, 27 Jul 2015 17:20:27 +0800</pubDate><description><![CDATA[在QT Creater中可能只需要点击按钮就可以把把当前工程进行编译、链接、运行，但是当用户提交源码到远程服务器时，服务器要自动对源码进行编译和运行生成exe执行文件并通过openCppCoverage测试生成覆盖率报告，这样就需要使用Dos命令来自动执行。
具体步骤如下：
1、配置环境变量：
添加C:\Qt\Qt5.1.1\5.1.1\msvc2010\bin      （qmake）]]></description><category></category></item><item><title><![CDATA[C++回忆录：（二）inline内联函数]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/47068003</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/47068003</guid><author>mojianc</author><pubDate>Sun, 26 Jul 2015 15:24:57 +0800</pubDate><description><![CDATA[在C/C++语言中，函数调用会涉及到函数的入栈和出栈，比如下面的例子：
Void myprint()

{

Printf("%d",3);

}

Void main()

{

Int i;

For(i=0;i<100;i++)

Myprint(2);

}
在主函数中调用myprint函数打字2这个数字，我们就要调用函数100次，意味着这个函数要进栈100次，出栈100次，这样我们就]]></description><category></category></item><item><title><![CDATA[C++回忆录：（一）new和malloc的区别]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/47054131</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/47054131</guid><author>mojianc</author><pubDate>Sat, 25 Jul 2015 11:42:51 +0800</pubDate><description><![CDATA[new和malloc的区别，以前都是迷迷糊糊的用，今天在其他博客上看到了，就顺便整理过来。
内部数据类型是编译器本来就认识的，不需要用户自己定义；非内部数据类型不是编译器本来就认识的，需要用户自己定义才能让编译器识别。运算符使用是否正确，编译器在]]></description><category></category></item><item><title><![CDATA[单元测试覆盖率生成网页报告----（一）]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/47044681</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/47044681</guid><author>mojianc</author><pubDate>Fri, 24 Jul 2015 21:46:53 +0800</pubDate><description><![CDATA[在C++中单元测试的框架有很多，但是能够生成覆盖率报告的却很少，接下来带大家一步一步集成测试环境。]]></description><category></category></item><item><title><![CDATA[STL容器]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/46331681</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/46331681</guid><author>mojianc</author><pubDate>Tue, 02 Jun 2015 16:25:44 +0800</pubDate><description><![CDATA[STL的容器可以分为以下几个大类: 
一：序列容器，　有vector, list, deque, string.

二 : 关联容器,     有set, multiset, map, mulmap, hash_set, hash_map, hash_multiset, hash_multimap

三: 其他的杂项： stack, queue, valarray, bitset

]]></description><category></category></item><item><title><![CDATA[C++ const和#define区别]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/46316997</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/46316997</guid><author>mojianc</author><pubDate>Mon, 01 Jun 2015 21:38:39 +0800</pubDate><description><![CDATA[const定义常量和#define定义常量的区别
   答：(1)编译器处理方式不同
　　       #define宏是在预处理阶段展开。
　　       const常量是编译运行阶段使用。
(2)类型和安全检查不同
　　       #define宏没有类型，不做任何类型检查，仅仅是展开。
　       　const常量有具体的类型，在编译阶段会执行类型检查。
(3)存储方式]]></description><category></category></item><item><title><![CDATA[C++ 内存详解（二）]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/46009811</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/46009811</guid><author>mojianc</author><pubDate>Tue, 26 May 2015 16:38:57 +0800</pubDate><description><![CDATA[在本文中主要是介绍C++中类在实例化过程中在内存中的分配。
很多人都知道C++类是由结构体发展而来，所以他们的成员变量（C语言的结构体只有成员变量，C++的结构体和类基本相同，除了默认成员变量的属性，类成员变量默认私有，结构体成员变量默认公有，C++保留结构体主要是兼容C程序）的内存分配机制是一样的。下面我们以类来说明问题，如果类搞清楚了，结构体也就明白了。类分为成员变量和成员函数，我们先讨论成]]></description><category></category></item><item><title><![CDATA[C++ 内存详解（一）]]></title><link>https://blog.youkuaiyun.com/mojianc/article/details/46007597</link><guid>https://blog.youkuaiyun.com/mojianc/article/details/46007597</guid><author>mojianc</author><pubDate>Tue, 26 May 2015 14:28:37 +0800</pubDate><description><![CDATA[以前学过C++编程语言，但是只是学习一些基本概念性的知识，然后完成老师布置的简单的作业，仅限于此。在去年找工作时，突然发现很多公司非常注重C++的内存管理，自己也就临时抱佛脚，看了一下《程序员面试宝典》和《剑指Offer》，在网上查了一些资料，自己记了一些，对于C++有了一个新的认识。现在时隔半年多，马上快毕业了，突然意识到C++中内存的重要性，尤其是在接触QT以后，开始打算把C++的基础再夯实一]]></description><category></category></item></channel></rss>