<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[扎扎实实写代码的专栏]]></title><description><![CDATA[勤勤恳恳打基础，扎扎实实写代码。勿忘初衷。。。。]]></description><link>https://blog.youkuaiyun.com/qq_30968657</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_30968657]]></copyright><item><title><![CDATA[c++--学习笔记]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/73188200</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/73188200</guid><author>qq_30968657</author><pubDate>Tue, 13 Jun 2017 16:42:29 +0800</pubDate><description><![CDATA[1、c++编译链接模型 
2、c++二进制兼容性问题 
3、c++值语义和对象语义区别 
4、c++ 数据对象ADT 
5、闭包 
6、RVO和NRVO优化 
7、boost::noncopyable 
8、boost::asio 
9、对象 拷贝复制构造  问题]]></description><category></category></item><item><title><![CDATA[boost::circular_buffer的push_back简单分析]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/73087997</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/73087997</guid><author>qq_30968657</author><pubDate>Mon, 12 Jun 2017 10:16:04 +0800</pubDate><description><![CDATA[circular_buffer为了效率考虑，使用了连续内存块保存元素 
使用固定内存，没有隐式或者非期望的内存分配 
快速在circular_buffer头或者尾部插入，删除元素，并且是常量时间复杂度 
常量时间访问元素 
适合实时和对性能要求苛刻的应用 
可能适用的场景 
可存储最新接收到的samples，当更新的samples到来，覆写最老的元素 
可用作底层容器实现固定大小buffer 
可作]]></description><category></category></item><item><title><![CDATA[智能指针boost::weak_ptr 详解]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/73087982</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/73087982</guid><author>qq_30968657</author><pubDate>Mon, 12 Jun 2017 10:14:19 +0800</pubDate><description><![CDATA[1、boost::weak_ptr简介 
boost::weak_ptr属于boost库，定义在namespace boost中，包含头文件 #include<boost/weak_ptr.hpp>便可以使用。 
2、boost::weak_ptr详解 
智能指针boost::scope_ptr和智能指针boost::shared_ptr就完全可以解决所有单个对象内存的管理问题。 
这儿咋还多出一个]]></description><category></category></item><item><title><![CDATA[文章标题]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/72972040</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/72972040</guid><author>qq_30968657</author><pubDate>Fri, 09 Jun 2017 21:12:40 +0800</pubDate><description><![CDATA[详见：http://blog.youkuaiyun.com/liang13664759/article/details/1771246/]]></description><category></category></item><item><title><![CDATA[linux服务器之间传输文件的四种方式]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/72912070</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/72912070</guid><author>qq_30968657</author><pubDate>Thu, 08 Jun 2017 11:58:22 +0800</pubDate><description><![CDATA[转自：http://www.jb51.net/article/82608.htm本文为大家分享了linux服务器之间传输文件的四种方式，供大家参考，具体内容如下 
1. scp 
【优点】简单方便，安全可靠；支持限速参数  
【缺点】不支持排除目录 
【用法】 
scp就是secure copy，是用来进行远程文件拷贝的。数据传输使用 ssh，并且和ssh 使用相同的认证方式，提供相同的安全保证 。]]></description><category></category></item><item><title><![CDATA[c++-头文件编译]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/71169668</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/71169668</guid><author>qq_30968657</author><pubDate>Thu, 04 May 2017 13:40:20 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/walker19900515/article/details/46442777 
一、C++编译模式通常，在一个C++程序中，只包含两类文件——.cpp文件和.h文件。其中，.cpp文件被称作C++源文件，里面放的都是C++的源代码；而.h文件则被称作C++头文件，里面放的也是C++的源代码。C+ +语言支持“分别编译”（separate compil]]></description><category></category></item><item><title><![CDATA[muduo源码分析--线程池的实现]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/70677227</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/70677227</guid><author>qq_30968657</author><pubDate>Tue, 25 Apr 2017 10:39:43 +0800</pubDate><description><![CDATA[muduo线程池主要有3个类的实现：EventLoop,EventLoopThreadPool,EventLoopThread,和Thread. 
1.Thread为对一个线程的封装：class Thread : boost::noncopyable
{
 public:
  typedef boost::function<void ()> ThreadFunc;   //创建线程时，传递的函数]]></description><category></category></item><item><title><![CDATA[linux多线程编程关键字：__thread，__bulitin_expect]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/70229248</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/70229248</guid><author>qq_30968657</author><pubDate>Tue, 18 Apr 2017 15:53:38 +0800</pubDate><description><![CDATA[最近读代码的时候，看到有__thread这个东西，查了一下资料。表示为每个线程声明这样一个变量，并且线程与线程之间的这个变量毫无关联。__thread是GCC内置的线程局部存储设施，存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体，各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变，但是又不值得用全局变量保护的变量。 
     __thread使用规则：只能修饰PO]]></description><category></category></item><item><title><![CDATA[linux-muduo线程通信eventfd]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/70215874</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/70215874</guid><author>qq_30968657</author><pubDate>Mon, 17 Apr 2017 20:47:30 +0800</pubDate><description><![CDATA[eventfd 在内核版本，2.6.22以后有效。查看内核版本可以用命令 uname -r 
在看muduo源码时，项目中使用eventfd机制实现线程间的唤醒（通知）。觉得效率比较高，所以拿来学习下。其也可以实现父子进程间的通信。 
首先使用： man eventfd 
name:eventfd–创建一个用于事件通知的描述符SYNOPSIS：#include<sys/eventfd.h>  
in]]></description><category></category></item><item><title><![CDATA[muduo-源码分析2：注册监听socket和建立连接]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/70063079</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/70063079</guid><author>qq_30968657</author><pubDate>Tue, 11 Apr 2017 17:18:01 +0800</pubDate><description><![CDATA[阅读库源码时可以从库的接口层着手，看看关键功能是如何实现的。对于muduo而言，可以从TcpServer/TcpClient/EventLoop/TcpConnection这几个类着手。 
首先理解muduo如何注册监听socket建立连接，其函数调用时序图如图：]]></description><category></category></item><item><title><![CDATA[muduo源码分析2：整体框架]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/70055000</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/70055000</guid><author>qq_30968657</author><pubDate>Tue, 11 Apr 2017 16:16:37 +0800</pubDate><description><![CDATA[muduo简化类图： 
  
Channel 是selectable IO channel，负责注册与响应IO 事件，注意它不拥有file 
descriptor。它是Acceptor、Connector、EventLoop、TimerQueue、TcpConnection 
的成员，生命期由后者控制。 
 Socket 是一个RAII handle，封装一个file descriptor，并在析构]]></description><category></category></item><item><title><![CDATA[muduo-源码分析 1：基础概念准备]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/70054777</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/70054777</guid><author>qq_30968657</author><pubDate>Tue, 11 Apr 2017 16:04:44 +0800</pubDate><description><![CDATA[一 网络模型-Reactor模式 
1.什么是reator模式 
   Wikipedia上说：“The reactor design pattern is an event handling pattern for handling service requests delivered concurrently by one or more inputs. The service handler]]></description><category></category></item><item><title><![CDATA[muduo-源码分析（前言0）]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/70054322</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/70054322</guid><author>qq_30968657</author><pubDate>Tue, 11 Apr 2017 15:41:15 +0800</pubDate><description><![CDATA[前言0 
    个人高性能、高并发linux服务器端编程（网络编程）比较感兴趣，自己写过一些简单的tcp通信程序，用进程池实现简单CGI服务器，用线程池实现简单web服务器。熟悉c++编程语言，但是没有用c++参与过一个项目，所以想寻找一个开源项目，用c++自己实现一个相对完整的网络库，所以选择了muduo开源网络库作为学习的第一个系统。因为他的代码量比较小，书中提到了如何借助现成库来发挥C++的]]></description><category></category></item><item><title><![CDATA[c++--Singleton单例模式的实现]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/69261134</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/69261134</guid><author>qq_30968657</author><pubDate>Wed, 05 Apr 2017 16:25:43 +0800</pubDate><description><![CDATA[1.线程安全的懒汉单例模式 
 懒汉式的特点是延迟加载，比如配置文件，采用懒汉式的方法，顾名思义，懒汉么，很懒的，配置文件的实例直到用到的时候才会加载。。。。。。class Singleton{
public:
   static Singleton& GetInstance(void)
    {
        if(m_instance == nullptr)  //双重check,实现多线程]]></description><category></category></item><item><title><![CDATA[c++--静态成员变量]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/69228861</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/69228861</guid><author>qq_30968657</author><pubDate>Wed, 05 Apr 2017 10:51:46 +0800</pubDate><description><![CDATA[1.引言 
对象的内存中包含了成员变量，不同的对象占用不同的内存，这使得不同对象的成员变量相互独立，它们的值不受其他对象的影响。例如有两个相同类型的对象 a、b，它们都有一个成员变量 m_name，那么修改 a.m_name 的值不会影响 b.m_name 的值。 
可是有时候我们希望在多个对象之间共享数据，对象 a 改变了某份数据后对象 b 可以检测到。共享数据的典型使用场景是计数，以Studen]]></description><category></category></item><item><title><![CDATA[c++-静态成员函数和非静态成员函数的区别]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/69226931</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/69226931</guid><author>qq_30968657</author><pubDate>Wed, 05 Apr 2017 10:28:07 +0800</pubDate><description><![CDATA[1.virtual与静态函数 
C++中，静态成员函数不能被声明为virtual函数。 
例如，下面的程序会编译失败。#include<iostream>  
class Test  
{  
   public:  
      // 编译错误：static成员函数不能声明为virtual     
      virtual static void fun()  { }  
};  同样地，静态]]></description><category></category></item><item><title><![CDATA[9个offer,12家公司]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/68065677</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/68065677</guid><author>qq_30968657</author><pubDate>Wed, 29 Mar 2017 15:36:28 +0800</pubDate><description><![CDATA[转载自：到该找工作的时候了，今天辉爷给推荐了一篇牛人写的牛文，看完以后顿时觉得跟跟人家不是能量级的，感觉咱就是一线性的，人家整个一个NP hard~果断转载，在以后这一段找工作的日子里，看着这篇文章，每天鞭策自己！！！1， 简介 
毕业答辩搞定，总算可以闲一段时间，把这段求职经历写出来，也作为之前三个半月的求职的回顾。 首先说说我拿到的offer情况：1） 微软，3面->终面，搞定（+1）2） 百度]]></description><category></category></item><item><title><![CDATA[深度理解IO模型-同步异步，阻塞非阻塞]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/66477381</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/66477381</guid><author>qq_30968657</author><pubDate>Sun, 26 Mar 2017 17:31:54 +0800</pubDate><description><![CDATA[一、基础知识： 
 我们都知道linux将所有的设备都看作文件,那么我们对linux的设备操作都可以看做是文件操作.我们打开一个文件的时候内核会返回给我们一个文件描述符,那么我们对文件的操作都是文件描述符来操作的. 
    系统调用是如何完成IO操作的呢?网上有一个系列文章讲解一次IO操作的真实过程<一个IO的传奇一生>. 
     linux将内存分为内核区，用户区； linux内核给我们管理]]></description><category></category></item><item><title><![CDATA[linux-编译和添加库和头文件路劲]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/60468702</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/60468702</guid><author>qq_30968657</author><pubDate>Sun, 05 Mar 2017 16:44:38 +0800</pubDate><description><![CDATA[一、创建动态库和静态库 
     从源代码到可执行程序，通常要经过最重要的两大步是：编译，链接。编译就是将源文件生成中间文件的过程，在linux下就是生成  .obj 文件。链接就是用链接器将，这些个中间文件有序地”糅合“在一起，构成一个可执行文件。通常，一个.c文件或者.cpp源文件编译后，就会对应生成一个.obj文件。 
     那么库文件是什么东西呢？其实库文件就是将这些中间文件.obj进]]></description><category></category></item><item><title><![CDATA[TCP/IP协议--拥塞避免]]></title><link>https://blog.youkuaiyun.com/qq_30968657/article/details/57415713</link><guid>https://blog.youkuaiyun.com/qq_30968657/article/details/57415713</guid><author>qq_30968657</author><pubDate>Sun, 26 Feb 2017 15:42:55 +0800</pubDate><description><![CDATA[为了防止网络的拥塞现象，TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成，后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法，再后来在TCP NewReno中又对]]></description><category></category></item></channel></rss>