<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[work_msh的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/work_msh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; work_msh]]></copyright><item><title><![CDATA[protobuf 内存解读（从源码分析为什么省内存）]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/81534765</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/81534765</guid><author>work_msh</author><pubDate>Thu, 09 Aug 2018 16:09:48 +0800</pubDate><description><![CDATA[源码来自于 protobuf 3.5

//TestStruct.proto

message Pos{

uint32 x = 1;

uint32 y = 2;

}

Pos p;

p.set_x(1);

std::string s1 = p.SerializeAsString();

可以看到 s1.size() = 2

查看内存得到 十六进制为 0x 08 01 二进制位 0000...]]></description><category></category></item><item><title><![CDATA[面试题目整理 虚函数和多态]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/62417528</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/62417528</guid><author>work_msh</author><pubDate>Thu, 16 Mar 2017 10:09:51 +0800</pubDate><description><![CDATA[前言

C++中的虚函数的作用主要是实现了多态的机制。关于多态，简而言之就是用父类型别的指针指向其子类的实例，然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”，这是一种泛型技术。所谓泛型技术，说白了就是试图使用不变的代码来实现可变的算法。比如：模板技术，RTTI技术，虚函数技术，要么是试图做到在编译时决议，要么试图做到运行时决议。

关于虚函数的使用方法，我]]></description><category></category></item><item><title><![CDATA[面试题目整理 关于服务器TIME_WAIT和CLOSE_WAIT]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/62233813</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/62233813</guid><author>work_msh</author><pubDate>Wed, 15 Mar 2017 18:50:51 +0800</pubDate><description><![CDATA[关于TCP 三次握手和四次挥手下面这个图已经很清晰了（盗图）



我之前用asio碰到过 大量连接 CLOSE_WAIT 状态

现在想想是没调用 socket_.shutdown(tcp::socket::shutdown::shutdown_both,ec);就直接析构了socket_

具体原因是客户端请求关闭连接的时候 服务器在收到 FIN M 之后 没发送 ack M+1 和 FIN ...]]></description><category></category></item><item><title><![CDATA[面试题目整理 线程安全的单例模式]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/62080726</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/62080726</guid><author>work_msh</author><pubDate>Wed, 15 Mar 2017 12:52:54 +0800</pubDate><description><![CDATA[首先看看boost 的单例模式 
@ boost/thread/detail/singleton.hpp
template 
class singleton : private T
{
private:
    singleton();
    ~singleton();


public:
    static T &instance();
};
template]]></description><category></category></item><item><title><![CDATA[第四步 使用shell操作数据库，导入分析并将结果导出成txt文件]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/8474162</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/8474162</guid><author>work_msh</author><pubDate>Sun, 06 Jan 2013 18:33:59 +0800</pubDate><description><![CDATA[在上一步中我们成功将远程服务器上备份的数据保存到了本地接下来的这一步中我们将备份的数据导入到本地的数据库，进行数据分析并导出结果。说干就干
使用存储过程写数据分析函数然后使用存储过程导出，这个使用select语句就可以做到 不多说了。
这里我们写了一个存储过程 将上会保存的表drop掉，名字叫 auto_drop_tables,这个存储过程没有参数 那么我们可以这样调用 
mysql -ur]]></description><category></category></item><item><title><![CDATA[第三步 使用scp远程拷贝，自动输入用户名和密码]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/8473847</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/8473847</guid><author>work_msh</author><pubDate>Sun, 06 Jan 2013 18:00:34 +0800</pubDate><description><![CDATA[在有mysql数据库的主机上备份好数据表后，我们要将它远程拷贝到本地分析，毕竟大多数情况下数据分析不能影响项目运营。
 说到远程拷贝第一个想到的自然是scp，这个东西专为远程拷贝设计的 ，传送过程也使用了ssh加密，但是使用scp要手动输入用户名和密码 网上有很多解决的办法，这里我使用  的是expect这个软件，说道expect这个软件 自然是异常强大，这里我们也只是使用到冰山一角，不去详细讲]]></description><category></category></item><item><title><![CDATA[第二步 使用mysqldump 和 crontab定时任务定时备份数据库]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/8473526</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/8473526</guid><author>work_msh</author><pubDate>Sun, 06 Jan 2013 17:05:52 +0800</pubDate><description><![CDATA[（以下所有操作都是在root权限下！！！）
先来说说mysqldump这个工具 
这个工具是mysql提供的备份还原mysql数据库的工具先来讲讲备份 
mysqldump -uroot -h192.168.1.1 -p123456 mysql host user > /home/1.sql

解释下这句命令 使用username：root，password：123456 登陆数据库 m]]></description><category></category></item><item><title><![CDATA[第一步 mysql的安装配置，使用Navicat访问]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/8472332</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/8472332</guid><author>work_msh</author><pubDate>Sun, 06 Jan 2013 15:47:35 +0800</pubDate><description><![CDATA[以下系统均为centos，我使用cat /proc/vesion 获得的信息 Linux version 2.6.32-042stab061.2 (root@rh6-build-x64) 
网上有很多很详细的mysql安装教程 ，这里只是我自己安装做的笔记，我习惯使用最简单的方式完成需求
1.使用yum命令安装mysql客户端和服务端
  yum install mysql-server /]]></description><category></category></item><item><title><![CDATA[标题贴！！数据分析]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/8472156</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/8472156</guid><author>work_msh</author><pubDate>Sun, 06 Jan 2013 11:41:46 +0800</pubDate><description><![CDATA[接下来提出一个需求如下：
       我们在项目中有一mysql张表，用来统计数据 ，这张表是存储在远程服务器上。需求就是把这张表拷贝到本地服务器上，统计分析之后结果导出成.txt文件，我们将通过完成这个需求掌握mysql安装配置、svn安装配置 、远程拷贝、mysql数据导入导出、linux定时任务...  哈哈，让我们一步一步的完成它]]></description><category></category></item><item><title><![CDATA[linux SIGSEGV 信号捕捉，保证发生段错误后程序不崩溃]]></title><link>https://blog.youkuaiyun.com/work_msh/article/details/8470277</link><guid>https://blog.youkuaiyun.com/work_msh/article/details/8470277</guid><author>work_msh</author><pubDate>Sat, 05 Jan 2013 18:35:21 +0800</pubDate><description><![CDATA[在linux中编程的时候 有时候 try catch 可能满足不了我们的需求。因为碰到类似数组越界 ，非法内存访问之类的 ，这样的错误无法捕获。下面我们介绍一种使用捕获信号实现的异常 用来保证诸如段错误之类的错误发生时程序不会崩溃，而是跳过代码继续执行。首先我们来看看发生段错误之后系统的处理。发生段错误后系统会抛出 SIGSEGV 信号 ，之后 调用默认的信号处理函数 ，产生core文件 ，然后关]]></description><category></category></item></channel></rss>