<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[phonycat的博客]]></title><description><![CDATA[c]]></description><link>https://blog.youkuaiyun.com/phonycat</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; phonycat]]></copyright><item><title><![CDATA[Linux---进程间关系和守护进程]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/88963339</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/88963339</guid><author>phonycat</author><pubDate>Tue, 02 Apr 2019 09:31:40 +0800</pubDate><description><![CDATA[进程间关系
进程组

进程组是一个或多个进程的集合
每个进程除了有一个进程ID之外，还属于一个进程组
这些进程通常与同一作业相关联，可以接受来自同一终端的各种信号
每个进程组有唯一进程组ID，每个进程组可以有一个组长进程，其进程ID和进程组ID一致
组长进程可以创建一个进程组，创建该组中进程，然后终止
只要某个进程组中有一个进程存在，该进程组就存在，与组长进程是否终止无关
从进程组的创建到最后一个...]]></description><category></category></item><item><title><![CDATA[Linux---kill及kill -9的用法及如何实现进程的优雅退出]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/88935647</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/88935647</guid><author>phonycat</author><pubDate>Sun, 31 Mar 2019 21:12:26 +0800</pubDate><description><![CDATA[转载自[https://blog.youkuaiyun.com/slvher/article/details/8977338]
如何在shell中终止一个后台进程？
一个后台服务进程如何实现优雅退出？
kill与signals
我们这里所说的kill是指作为shell command的那个kill（相对的，Linux系统中还有个叫做kill的system call，man 2 kill可查看其功能及用法），s...]]></description><category></category></item><item><title><![CDATA[C++---智能指针]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/88844927</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/88844927</guid><author>phonycat</author><pubDate>Wed, 27 Mar 2019 14:54:31 +0800</pubDate><description><![CDATA[在代码中经常忘记释放动态开辟的内存资源，造成内存泄露，并且在操作时要小心谨慎，避免内存泄露，因此产生了只能指针来动态的管理指针所指向的动态资源释放
auto_ptr：管理权的转移操作，存在缺陷
scoped_ptr：一种粗暴模式的防拷贝
shared_ptr：在需要拷贝的地方增加了引用计数功能
weak_ptr：具有弱指针功能，主要配合解决shared_ptr循环引用
auto_ptr
作用：是一...]]></description><category></category></item><item><title><![CDATA[单例模式]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/87938432</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/87938432</guid><author>phonycat</author><pubDate>Tue, 26 Feb 2019 16:54:53 +0800</pubDate><description><![CDATA[ 单例模式是一种软件设计模式，在它的核心结构中只包含一个被称为单例类的特殊类，通过单例模式可以保证系统中一个类只有一个实例，而且该实例易于外界访问，从而方便对实例个数的控制并节约系统资源
 如何保证一个类只有一个实例并且这个实例易于被访问？定义一个全局变量可以确保对象随时都可以被访问，但不能防止我们实例化多个对象。更好的办法是让类自身负责保存它的唯一实例，这个类可以保证没有其他实例被创建，并且它提...]]></description><category></category></item><item><title><![CDATA[malloc的一点点东西]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/87631656</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/87631656</guid><author>phonycat</author><pubDate>Mon, 18 Feb 2019 17:22:17 +0800</pubDate><description><![CDATA[提问：malloc是不是线程安全的？
提问：malloc是如何实现的？
线程安全：需要解决多个线程调用函数时访问共享资源的冲突
可重入：需要不再函数内部使用静态或全局数据，不反悔静态或全局数据，也不调用不可重入函数
malloc函数线程安全但不可重入
  malloc函数在用户空间要自己管理各进程共享的内存链表，由于有共享资源访问，本身会造成线程不安全。为了做到线程安全，加锁保护。递归锁，如果当程...]]></description><category></category></item><item><title><![CDATA[c++---多态和虚函数]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/87558468</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/87558468</guid><author>phonycat</author><pubDate>Sun, 17 Feb 2019 21:22:36 +0800</pubDate><description><![CDATA[一、多态
 c++有三大特性：封装，继承，多态
 多态是面向对象程序设计的一个重要特征，多态就是一个东西有多重状态，具有不同功能的函数可以用一个函数名，这样就可以用一个函数名实现不同的功能
 静态多态和动态多态静态多态是利用重载实现的，在程序编译时确定要调用的是哪个函数，也称为编译时多态。动态多态是利用虚函数实现的，在程序执行期间才动态的确定操作所指对的对象，也称为运行时多态
 动态多态：当一个基...]]></description><category></category></item><item><title><![CDATA[C++---模拟实现list]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/84675478</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/84675478</guid><author>phonycat</author><pubDate>Sat, 01 Dec 2018 17:07:11 +0800</pubDate><description><![CDATA[#include&amp;lt;iostream&amp;gt;
#include&amp;lt;assert.h&amp;gt;

using namespace std;

typedef int DataType;

struct ListNode
{
	ListNode *_next;
	ListNode *_prev;
	ListNode  _data;
	ListNode(DataType x)
		:_data(x...]]></description><category></category></item><item><title><![CDATA[C++---模拟实现vector]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/84674661</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/84674661</guid><author>phonycat</author><pubDate>Sat, 01 Dec 2018 16:08:30 +0800</pubDate><description><![CDATA[#include&amp;lt;iostream&amp;gt;
#include&amp;lt;assert.h&amp;gt;

typedef int DataType;

using namespace std;

class Vector
{
public:
	Vector()
		:_first(NULL)
		,_finish(NULL)
		,_endofstorage(NULL)
	{}
	Vector(con...]]></description><category></category></item><item><title><![CDATA[Linux的stat命令下的三个时间]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/83041731</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/83041731</guid><author>phonycat</author><pubDate>Sat, 13 Oct 2018 20:12:21 +0800</pubDate><description><![CDATA[man手册里，对stat的描述是[display file or file system status]，描述文件和文件属性信息，inode信息

stat命令显示出来的信息：

File：文件名
Size：文件大小
Blocks：文件使用的数据块数
IO Block：IO块大小
regular file：文件类型为常规文件
Device：设备编号
Inode：inode号
Links：链接数
A...]]></description><category></category></item><item><title><![CDATA[Linux---进程间通信IPC之共享内存]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/81542490</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/81542490</guid><author>phonycat</author><pubDate>Sat, 01 Sep 2018 15:00:07 +0800</pubDate><description><![CDATA[共享内存]]></description><category></category></item><item><title><![CDATA[Linux---进程间通信IPC之信号量]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/81509887</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/81509887</guid><author>phonycat</author><pubDate>Wed, 08 Aug 2018 15:58:14 +0800</pubDate><description><![CDATA[SYSTEM V信号量，这是信号量值的集合，不是单个的信号量，相关的信号量操作函数由“sys/ipc.h”引用，这篇主要描述了这个信号量集 
信号量 
也称信号灯，主要用来控制多个进程对共享资源的访问，信号量是进程通信的一种重要方法，但其本身并不进行数据交换，和管道、消息队列不同，而是以同步，互斥，协调于各个进程之间，协调进程对共享资源的访问，共享内存的使用就要用到信号量。把多个执行流能够访问到的...]]></description><category></category></item><item><title><![CDATA[Linux---进程间通信IPC之管道]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/81457234</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/81457234</guid><author>phonycat</author><pubDate>Mon, 06 Aug 2018 20:40:38 +0800</pubDate><description><![CDATA[进程间通信（IPC）：是指在不同进程之间传播或交换信息。  
IPC的方式：通常有管道（无名管道、命名管道）、消息队列、信号量、共享存储、Socket、Streams等（Socket和Streams支持不同主机上的两个进程IPC）  
进程间通信的目的：  
1.数据传输：一个进程需要将它的数据发给另一个进程  
2.资源共享：多个进程之间共享同样的资源  
3.通知事件：一个进程需要向另一个或一...]]></description><category></category></item><item><title><![CDATA[new和malloc的你来我往--区别]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/81393174</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/81393174</guid><author>phonycat</author><pubDate>Fri, 03 Aug 2018 19:24:35 +0800</pubDate><description><![CDATA[操作符与函数

new是一个操作符，malloc是一个函数

分配内存的位置

new 在自由存储区，malloc在堆上 
自由存储区是c++对new的一个抽象概念，可以是堆，也可以是静态存储区，看operator new在哪给分配内存

内存分配成功的返回值

new返回对象类型指针，malloc返回void* ,根据需要强转类型 
new内存分配成功的时候，返回的是对象类型的指针，不需要进行类...]]></description><category></category></item><item><title><![CDATA[哈希扩展【位图，布隆】，海量数据处理]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/81321746</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/81321746</guid><author>phonycat</author><pubDate>Wed, 01 Aug 2018 16:25:41 +0800</pubDate><description><![CDATA[位图： 
它是用一个byte位来标识一个整数存在或者不存在，一般用于大数据的简单确认是否存在 
类似于哈希的直接定址法，只不过位图定在了一个位上，哈哈...]]></description><category></category></item><item><title><![CDATA[哈希表的基本操作]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/81286828</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/81286828</guid><author>phonycat</author><pubDate>Mon, 30 Jul 2018 16:06:49 +0800</pubDate><description><![CDATA[理想的搜索方式：可以不经过任何比较，一次直接从表中得到要搜索的元素，构造一种结构，通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系，那么查找时就能通过函数一下找到该元素



哈希


本质上是一个数组，通过哈希函数使元素关键码和元素存储位置有一定的映射关系
搜索某一元素时，通过哈希函数计算出元素存储位置，在数组中按此位置取元素比较，相等即存在
插入，通过哈希函数计算出元素的存储...]]></description><category></category></item><item><title><![CDATA[数据结构的八大排序]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/80397341</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/80397341</guid><author>phonycat</author><pubDate>Mon, 21 May 2018 20:29:00 +0800</pubDate><description><![CDATA[
直接插入排序，希尔排序
选择排序，堆排序
冒泡排序，快速排序
归并排序
计数排序




直接插入排序

 
关键元素tmp前面的元素已经是排好序的，把tmp放到合适的地方



void InsertSort(int* a,size_t n)
{
    assert(a);
    for(size_t i=0;i&amp;amp;amp;lt;n-1;++i)
    {
        int end=i;
 ...]]></description><category></category></item><item><title><![CDATA[c++---继承]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/80298137</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/80298137</guid><author>phonycat</author><pubDate>Sun, 13 May 2018 12:00:23 +0800</pubDate><description><![CDATA[c++—目录索引（知识小渠道）



1.继承

继承概念 
 继承是面向对象复用的重要手段，通过继承定义一个类，继承是类型之间的关系建模，共享共有的

访问限定符和继承关系 
 private：私有，在父类里，成员为私有限定，意味着不管是什么继承，这个成员就是不让你看，就算你是从我这继承的

 protect：保护，父类成员受保护，说明访问还是可以让你访问的，但只能是子类在自己的内部访问，不可以...]]></description><category></category></item><item><title><![CDATA[c++---模板]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/80294528</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/80294528</guid><author>phonycat</author><pubDate>Sat, 12 May 2018 20:16:13 +0800</pubDate><description><![CDATA[模板是泛型编程的基础，不支持分离编译(定义和声明只能在一个文件中) 
 泛型编程就是编写与类型无关的逻辑代码，是一种复用的方式 
 编译器调用模板参数函数时，编译器会根据传递的参数自动推演出模板的形参的类型，自动生成对应代码。 
模板的分离编译  
模板实现在一个.cpp文件，模板的调用在main函数的.cpp文件，main函数去其他.cpp找模板实现，但实现函数的.cpp因为没有在文件内调用并不...]]></description><category></category></item><item><title><![CDATA[Linux---目录索引（知识小渠道）]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/80151261</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/80151261</guid><author>phonycat</author><pubDate>Mon, 30 Apr 2018 19:07:00 +0800</pubDate><description><![CDATA[
无法打开虚拟机
readonly option is ret
make及小程序进度条
编写自主shell，及两次fork
进程间通信IPC之消息队列
]]></description><category></category></item><item><title><![CDATA[c++---目录索引（知识小渠道）]]></title><link>https://blog.youkuaiyun.com/phonycat/article/details/80151108</link><guid>https://blog.youkuaiyun.com/phonycat/article/details/80151108</guid><author>phonycat</author><pubDate>Mon, 30 Apr 2018 18:39:35 +0800</pubDate><description><![CDATA[重载和缺省参数
引用和指针
类和对象
默认成员函数
实现日期类
const成员函数，内联函数，友元函数，static成员，构造函数的优化
new/delete以及this指针
模拟实现String类（深拷贝）
模拟实现String类（浅拷贝）
...]]></description><category></category></item></channel></rss>