<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SYP35的专栏]]></title><description><![CDATA[有一种落差是，你配不上自己的野心，也辜负了所受的苦难。]]></description><link>https://blog.youkuaiyun.com/SYP35</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SYP35]]></copyright><item><title><![CDATA[C++类的构造函数可以私有吗？]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/103138427</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/103138427</guid><author>SYP35</author><pubDate>Tue, 19 Nov 2019 11:18:14 +0800</pubDate><description><![CDATA[通常我们都将构造函数的声明置于public区段，假如我们将其放入private区段中会发生什么样的后果？没错，我也知道这将会使构造函数成为私有的，这意味着什么？

我们知道，当我们在程序中声明一个对象时，编译器为调用构造函数(如果有的话)，而这个调用将通常是外部的，也就是说它不属于class对象本身的调用，假如构造函数是私有的，由于在class外部不允许访问私有成员，所以这将导致编译出错。

你于...]]></description><category></category></item><item><title><![CDATA[在Ubuntu 16.04下安装MySQL]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/90672878</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/90672878</guid><author>SYP35</author><pubDate>Wed, 29 May 2019 16:07:51 +0800</pubDate><description><![CDATA[1，首先执行下面三条命令：

执行第一条命令：

sudo apt-get install mysql-server

如下图：



输入 y ，下载安装时会出现要求设置密码的界面：



输入自己想设置的密码，之后再次输入确认密码。

完成之后如下图：



执行第二条命令：

sudo apt-get install mysql-client

如下图：



接着执行第三条命令：

sud...]]></description><category></category></item><item><title><![CDATA[libevent源码深度剖析]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/90267289</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/90267289</guid><author>SYP35</author><pubDate>Thu, 16 May 2019 17:01:57 +0800</pubDate><description><![CDATA[第一章

1，前言

Libevent是一个轻量级的开源高性能网络库，使用者众多，研究者更甚，相关文章也不少。写这一系列文章的用意在于，一则分享心得；二则对libevent代码和设计思想做系统的、更深层次的分析，写出来，也可供后来者参考。

附带一句：Lib...]]></description><category></category></item><item><title><![CDATA[select poll epoll简单比较]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/90266673</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/90266673</guid><author>SYP35</author><pubDate>Thu, 16 May 2019 16:41:09 +0800</pubDate><description><![CDATA[select
select最早于1983年出现在4.2BSD中，它通过一个select()系统调用来监视多个文件描述符的数组，当select()返回后，该数组中就绪的文件描述符便会被内核修改标志位，使得进程可以获得这些文件描述符从而进行后续的读写操作。
select目前几乎在所有的平台上支持，其良好跨平台支持也是它的一个优点，事实上从现在看来，这也是它所剩不多的优点之一。
select的一个缺点在...]]></description><category></category></item><item><title><![CDATA[Linux最大文件句柄（文件描述符）限制和修改]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/90167395</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/90167395</guid><author>SYP35</author><pubDate>Mon, 13 May 2019 09:57:34 +0800</pubDate><description><![CDATA[转自：http://jameswxx.iteye.com/blog/2096461



写这个文章是为了以正视听，网上的文章人云亦云到简直令人发指。到底最大文件数被什么限制了？too many open files错误到底可以通过什么参数控制？网上的很多文章说的大致步骤是没有错的，大致如下：
shell级限制
通过ulimit -n修改，如执行命令ulimit -n 1000，则表示将当前s...]]></description><category></category></item><item><title><![CDATA[事件驱动模型和异步IO多路复用]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/89880969</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/89880969</guid><author>SYP35</author><pubDate>Mon, 06 May 2019 13:43:10 +0800</pubDate><description><![CDATA[事件驱动模型

协程：遇到IO操作就切换。
但什么时候切回去呢？怎么确定IO操作完了？








很多程序员可能会考虑使用“线程池”或“连接池”。“线程池”旨在减少创建和销毁线程的频率，其维持一定合理数量的线程，并让空闲的线程重新承担新的执行任务。“连接池”维持连接的缓存池，尽量重用已有的连接、减少创建和关闭连接的频率。

这两种技术都可以很好的降低系统开销，都被广泛应用很多大型系统，如...]]></description><category></category></item><item><title><![CDATA[Linux五大网络IO模型图解]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/89713730</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/89713730</guid><author>SYP35</author><pubDate>Tue, 30 Apr 2019 17:41:02 +0800</pubDate><description><![CDATA[对于一个应用程序即一个操作系统进程来说，它既有内核空间(与其他进程共享),也有用户空间(进程私有)，它们都是处于虚拟地址空间中。用户进程是无法访问内核空间的，它只能访问用户空间，通过用户空间去内核空间复制数据，然后进行处理。

阻塞io(同步io)：

　　发起请求就一直等待，直到数据返回。好比你去商场试衣间，里面有人，那你就一直在门外等着。(全程阻塞)

　　

非阻塞io(同步io)：

　　...]]></description><category></category></item><item><title><![CDATA[守护进程]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/88863298</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/88863298</guid><author>SYP35</author><pubDate>Thu, 28 Mar 2019 10:30:38 +0800</pubDate><description><![CDATA[什么是守护进程？
守护进程（Daemon Process），也就是通常说的 Daemon 进程（精灵进程），是 Linux 中的后台服务进程。它是一个生存期较长的进程，通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。

守护进程是个特殊的孤儿进程，这种进程脱离终端，为什么要脱离终端呢？之所以脱离于终端是为了避免进程被任何终端所产生的信息所打断，其在执行过程中的信息也不在任何终端...]]></description><category></category></item><item><title><![CDATA[ar nm ldd 静态库 动态库]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/88121207</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/88121207</guid><author>SYP35</author><pubDate>Mon, 04 Mar 2019 16:02:08 +0800</pubDate><description><![CDATA[一、ar的基本用法

　　ar命令可以用来创建、修改库，也可以从库中提出单个模块。库是一单独的文件，里面包含了按照特定的结构组织起来的其它的一些文件（称做此库文件的member）。原始文件的内容、模式、时间戳、属主、组等属性都保留在库文件中。

　　下面是ar命令的格式：

　　ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive...]]></description><category></category></item><item><title><![CDATA[cin.get与cin.peek]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/85095560</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/85095560</guid><author>SYP35</author><pubDate>Wed, 19 Dec 2018 14:10:06 +0800</pubDate><description><![CDATA[输入原理：

程序的输入都建有一个缓冲区，即输入侧缓冲区。一次输入过程是这样的，当一次键盘输入结束时会将输入的数据存入输入缓冲区，而CIN函数直接从输入缓冲区中取数据。正因为CIN函数是直接从缓冲区取数据的，所以有时候当缓冲区中有残留数据时，CIN函数会直接取得这些残留数据而不会请求键盘输入

一：cin.peek


#include &amp;lt;iostream&amp;gt;
using namespa...]]></description><category></category></item><item><title><![CDATA[C++中的类所占内存空间总结]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/82976361</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/82976361</guid><author>SYP35</author><pubDate>Tue, 09 Oct 2018 01:14:51 +0800</pubDate><description><![CDATA[最近在复习c++的一些基础，感觉这篇文章很不错，转载来，大家看看！

类所占内存的大小是由成员变量（静态变量除外）决定的，成员函数（这是笼统的说，后面会细说）是不计算在内的。

摘抄部分：

成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面，同一个类的多个对象共享函数代码。而我们访问类的成员...]]></description><category></category></item><item><title><![CDATA[虚函数表]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/80651430</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/80651430</guid><author>SYP35</author><pubDate>Mon, 11 Jun 2018 14:08:08 +0800</pubDate><description><![CDATA[C ++的虚函数（虚函数）是通过一张虚函数表（虚拟表）来实现的。简称为V-Table。在这个表中，主要是一个类的虚函数的地址表，这张表解决了继承，覆盖（覆盖）的问题，保证其能真实的反应实际的函数。这样，​​在有虚函数的类的实例中这张表被分配在了这个实例的内存中，所以当我们用父类的指针操作一个子类的时候，这张虚函数表就显得尤为重要了，他就像一个地图一样，指明了实际所应该调用的函数。


说明：虚函数...]]></description><category></category></item><item><title><![CDATA[数据结构__树]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/80623402</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/80623402</guid><author>SYP35</author><pubDate>Fri, 08 Jun 2018 15:05:04 +0800</pubDate><description><![CDATA[树是最优美的形状（世间万物皆有其树结构）①树的基本概念树（Tree）是n（n&amp;gt;=0）个结点的有限集。在任意一棵非空树中：（1）有且仅有一个特定的称为根（Root）的结点；（2）当n&amp;gt;1时，其余结点可分为m（m&amp;gt;0）个互不相交的有限集T1，T2，...，Tn，其中每个集合本身又是一棵树，并称为根的子树（SubTree）层次                     树  1     ...]]></description><category></category></item><item><title><![CDATA[C++ const]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/80270694</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/80270694</guid><author>SYP35</author><pubDate>Thu, 10 May 2018 17:09:29 +0800</pubDate><description><![CDATA[看到const关键字，C ++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const定义常量，那么相当于把火药仅用于制作鞭炮.const更大的魅力是它可以修饰函数的参数，返回值，甚至函数的定义体。const是constant的缩写，“恒定不变”的意思。被const修饰的东西都受到强制保护，可以预防意外的变动，能提高程序的健壮性。所以很多C ++程序设计书籍建议：“Us...]]></description><category></category></item><item><title><![CDATA[linux应用程序中，内存布局]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/80161305</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/80161305</guid><author>SYP35</author><pubDate>Wed, 02 May 2018 00:42:21 +0800</pubDate><description><![CDATA[1.linux应用程序内存布局从低地址到高地址分别为：代码段，数据段，BSS段，堆，栈对向高内存地址生长，栈想低内存地址生长Linux的中所有的应用程序都是这个布局，每个应用程序都是从0x80480000这个地址开始的，这样冲突吗？不冲突，因为这个地址是一个虚拟地址，LINUX中每个应用程序都有自己的虚拟地址空间。2.2。查看的Linux中应用程序内存布局方法：通过查看应用程序进程中的进程地址映射...]]></description><category></category></item><item><title><![CDATA[字符型char和整型int之间的关系]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/80161205</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/80161205</guid><author>SYP35</author><pubDate>Wed, 02 May 2018 00:04:01 +0800</pubDate><description><![CDATA[在C语言中并没有char类型的常量（但是在C++中却有，字符常量都是char类型），其实是用int表示char，字符型与整型相比只是更加节省内存。（在所有数据类型中，char类型占用的内存空间最少） 
有符号的字符表示-128~127，无符号字符表示0~255。char相当于signed char还是unsigned char取决于编译器。 
字符型数据在内存中是以二进制形式存放的，并不是真正的把...]]></description><category></category></item><item><title><![CDATA[内存地址分布]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/80008680</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/80008680</guid><author>SYP35</author><pubDate>Thu, 19 Apr 2018 18:02:39 +0800</pubDate><description><![CDATA[看下面一段代码[CPP]查看普通复印＃包括&amp;lt;比特/ STDC ++小时。&amp;gt;使用命名空间std; int main（）{int a，b; //栈的printf（“％X \ n％X \ n”，＆一个，和b）; int * c = new（int）; //堆的printf（“％X \ n”个，C）; }运行结果：我也有这样的疑问，记得学习的计算机组成原理上都说栈在高地址往低处增长，堆在低地址...]]></description><category></category></item><item><title><![CDATA[sed命令详解]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/79710331</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/79710331</guid><author>SYP35</author><pubDate>Tue, 27 Mar 2018 11:18:52 +0800</pubDate><description><![CDATA[sed命令详解1 命令功能    sed是一个相当强大的文件处理编辑工具，sed用来替换，删除，更新文件中的内容。sed以文本行为单位进行处理，一次处理一行内容。首先sed吧当前处理的行存储在临时的缓冲区中（称为模式空间pattern space），接着处理缓冲区中的行，处理完成后，吧缓冲区的内容输出到屏幕。sed处理完一行就将其从临时缓冲区删除，然后将下一个行读入，进行处理和显示，这样不断重复直...]]></description><category></category></item><item><title><![CDATA[Ubuntu 16.04 下 Vim安装及配置]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/79701678</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/79701678</guid><author>SYP35</author><pubDate>Mon, 26 Mar 2018 18:01:46 +0800</pubDate><description><![CDATA[Ubuntu 16.04 下安装Vim默认已经安装了VIM-tinylinuxidc@linuxidc:~$ locate vi | grep 'vi$' |xargs ls -al
lrwxrwxrwx 1 root root   17 12月  9 21:12 /etc/alternatives/vi -&amp;gt; /usr/bin/vim.tiny
lrwxrwxrwx 1 root root...]]></description><category></category></item><item><title><![CDATA[在linux环境下编译C++ 程序]]></title><link>https://blog.youkuaiyun.com/SYP35/article/details/79642180</link><guid>https://blog.youkuaiyun.com/SYP35/article/details/79642180</guid><author>SYP35</author><pubDate>Wed, 21 Mar 2018 16:40:22 +0800</pubDate><description><![CDATA[单个源文件生成可执行程序下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码： 单个源文件生成可执行程序/* helloworld.cpp */
#include &amp;lt;iostream&amp;gt;
int main(int argc,char *argv[])
{
    std::cout &amp;lt;&amp;lt; &quot;hello, world&quot; &amp;lt;&amp;lt; std:...]]></description><category></category></item></channel></rss>