<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Holy_666的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Holy_666</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Holy_666]]></copyright><item><title><![CDATA[redis 使用到的位域]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/86566590</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/86566590</guid><author>Holy_666</author><pubDate>Sun, 20 Jan 2019 21:32:19 +0800</pubDate><description><![CDATA[redis 使用到的位域

今天在看redis源码的时候在3.0版本的redis.h 文件中发现了这样的几行代码，看了有趣，研究了一番,才发现这个东西就是c语言中的位域。
/*
 * redisObject Redis对象
 */ 
typedef struct redisObject {

	unsigned type : 4; // 类型

	unsigned encoding : 4; //...]]></description><category></category></item><item><title><![CDATA[触发connect超时事件]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/86547608</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/86547608</guid><author>Holy_666</author><pubDate>Fri, 18 Jan 2019 22:51:24 +0800</pubDate><description><![CDATA[触发connect超时事件

有关于如何触发connect超时事件，之前相当然的认为在服务器程序accpet函数前阻塞一段事件就好了，这个思路是完全错误的！
这是我犯了的一个错误，没有严格的验证自己的程序就将其发布了出来，被小组的小伙伴提问时才发现了这个问题，在这里深表歉意！！！同时也非常感谢我的哪位小伙伴！下边是那篇文章，现已更正。
高性能定时器(一)

代码还是以前的代码
#include &amp;amp;...]]></description><category></category></item><item><title><![CDATA[彻底理解mmap()]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/86532671</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/86532671</guid><author>Holy_666</author><pubDate>Thu, 17 Jan 2019 22:51:27 +0800</pubDate><description><![CDATA[彻底理解mmap()

最近起的标题总是这么标题党！
什么是 mmap()
mmap, 从函数名就可以看出来这是memory map, 即地址的映射, 是一种内存映射文件的方法, (其他的还有mmap()系统调用，Posix共享内存，以及系统V共享内存，这些我们有机会在后续的文章讨论，今天的男主角是mmap）,将一个文件或者其它对象映射到进程的地址空间，实现文件磁盘地址和进程虚拟地址空间中一段虚拟...]]></description><category></category></item><item><title><![CDATA[进程池]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/85681383</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/85681383</guid><author>Holy_666</author><pubDate>Thu, 03 Jan 2019 10:46:49 +0800</pubDate><description><![CDATA[进程池
进程池的使用场景
当我们需要并行的处理大规模任务的时候，需要使用到多进程，多线程技术，比如说服务器处理大量客户端的任务，我在大一的时候写过一个C/S＋mysql架构的聊天室，大概是这样处理的，每当有客户端发出连接请求时，服务器accept成功以后就去fork一个进程去处理关于这个客户端的所有请求，经过后来的一系列的学习，这显然是极其不科学的，狂开进程浪费资源且不说，效率也极低。

动态创建...]]></description><category></category></item><item><title><![CDATA[彻底理解 fork 之写时复制 《一》]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/85336387</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/85336387</guid><author>Holy_666</author><pubDate>Sat, 29 Dec 2018 11:31:33 +0800</pubDate><description><![CDATA[彻底理解fork之写时复制&amp;amp;lt;一&amp;amp;gt;
一直以来都对操作系统都比较感兴趣，这篇文章呢就主要研究一下当我们调用fork系统掉用所用到的写时复制技术(copy-on-write)。
下图是fork系列函数的调用过程

&amp;amp;lt;摘自网络 侵删&amp;amp;gt;
写时复制，其实在很多地方都会用到，我们先来看看关于字符串使用写时复制的例子吧。
	写时拷贝故名思意：是在写的时候（即改变字符串的时候）才会真正的开辟...]]></description><category></category></item><item><title><![CDATA[高性能定时器(一)]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/85270319</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/85270319</guid><author>Holy_666</author><pubDate>Wed, 26 Dec 2018 23:03:01 +0800</pubDate><description><![CDATA[高性能定时器(一)

先来三句口号
我们通常所说的定时器是定时器容器，是容器类数据结构。
定时器是容器内容纳的一个对象，是对定时器的封装。
我们通常所说的定时器是定时器容器，是容器类数据结构。
定时器是容器内容纳的一个对象，是对定时器的封装。
我们通常所说的定时器是定时器容器，是容器类数据结构。
定时器是容器内容纳的一个对象，是对定时器的封装。

前几日学习了一下定时器
首先吐槽一下，最近学的东西...]]></description><category></category></item><item><title><![CDATA[统一事件源的实现]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/85079895</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/85079895</guid><author>Holy_666</author><pubDate>Tue, 18 Dec 2018 21:16:11 +0800</pubDate><description><![CDATA[统一事件源的实现

我们在编写高性能服务器的代码时，通常会需要处理很多的信号，如下所示

时间事件
信号
数据读
数据写
网络异常
为了程序的性能，鲁棒以及代码的优化，通常会将所有的这些需要处理的任务包装成事件添加至多路复用函数的事件集中处理。
一般信号处理时会将一些信号屏蔽，为了不屏蔽这些信号太久，同时也不至于主逻辑被冲散，一种解决方案是：信号处理函数只是简单的通知主循环（用于处理I/O事件）并...]]></description><category></category></item><item><title><![CDATA[关于用指针交换两个数]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/85001245</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/85001245</guid><author>Holy_666</author><pubDate>Fri, 14 Dec 2018 12:08:30 +0800</pubDate><description><![CDATA[关于用指针交换两个数
西邮Linux 兴趣小组又到了纳新季，作为一个老学长，面试学弟学妹们的时候，必然要然他们感受到小组的关怀(受尽折磨)，这一届孩子还是挺强的，但是一到指针上就栽了坑，在加上我们小组的陈年老题swap屡试不爽。所以在这里总结一下关于用一级 二级指针交换两个数字的问题。

一级指针交换
#include&amp;amp;lt;stdio.h&amp;amp;gt;

int swap(int *c , int *...]]></description><category></category></item><item><title><![CDATA[源代码到可执行文件之旅]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/84976549</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/84976549</guid><author>Holy_666</author><pubDate>Wed, 12 Dec 2018 17:31:14 +0800</pubDate><description><![CDATA[你写的源代码是如何一步一步变化可执行文件的

昨天看了 &amp;amp;amp;lt;&amp;amp;amp;lt;深入理解计算机系统&amp;amp;amp;gt;&amp;amp;amp;gt; 这本神书 “CSAPP” ， 初看第一章漫游部分就让人大乎过瘾，其中提到了如何源代码是如何从文本文件编程可执行的二进制文件，整个章节是从软件以及硬件两个层面分别解析的。那么接下来我先从软件层面来解释一下其中步骤。

正常情况下是这样的  gcc -o hello hello.c
在这里,gc...]]></description><category></category></item><item><title><![CDATA[Redis源码阅读笔记 ----数据结构部分 sds]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/84967117</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/84967117</guid><author>Holy_666</author><pubDate>Wed, 12 Dec 2018 10:44:08 +0800</pubDate><description><![CDATA[壹、sds
(SDS)Simple Dynamic String, 从字面意思上来简单理解就是简单的动态字符，其为具有动态增加空间的能力，扩容不需要使用者担心。
好的咱们来看一下他的数据结构吧
这个版本是黄所注释的3.0版本
typedef char *sds;      //注意，sds其实不是一个结构体类型，而是被typedef的char*，好处见下文

struct sdshdr {
   ...]]></description><category></category></item><item><title><![CDATA[Fix some issue]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81605375</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81605375</guid><author>Holy_666</author><pubDate>Sun, 12 Aug 2018 12:27:36 +0800</pubDate><description><![CDATA[August  6, 2018

Fix some issue



#18 Fix crash when users serach last 3 days log

bug tracker

Thread 1 &quot;gnome-logs&quot; received signal SIGSEGV, Segmentation fault.
0x00007ffff595f5b4 in g_date_time_to...]]></description><category></category></item><item><title><![CDATA[Dispaly the new row entry !!!]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81569216</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81569216</guid><author>Holy_666</author><pubDate>Fri, 10 Aug 2018 20:03:04 +0800</pubDate><description><![CDATA[July 29, 2018



Dispaly the new row entry !!!

During GUADEC, my mentors told me that I needed to complete the project before ui freeze. It took only two weeks to calculate the time. So I dare not st...]]></description><category></category></item><item><title><![CDATA[Really Get Correct log entries from journal! && GUADEC]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81512695</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81512695</guid><author>Holy_666</author><pubDate>Wed, 08 Aug 2018 17:48:25 +0800</pubDate><description><![CDATA[Really Get Correct log entries from journal! &amp;amp;&amp;amp; GUADEC

July, 10, 2018

The most memorable thing about this period is to participate in GUADEC–2018. Since there will be a blog dedicated to wha...]]></description><category></category></item><item><title><![CDATA[Recieve new log messages in gl-journal-model.c]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81460742</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81460742</guid><author>Holy_666</author><pubDate>Mon, 06 Aug 2018 20:29:05 +0800</pubDate><description><![CDATA[For the past two weeks, according to my previous plan, I made progress in the gl-journal-model.c file. In this place, I set up a function that receives the signal and a function that processes the sig...]]></description><category></category></item><item><title><![CDATA[Passed the First Evaluations]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81202774</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81202774</guid><author>Holy_666</author><pubDate>Wed, 25 Jul 2018 14:49:27 +0800</pubDate><description><![CDATA[Passed the First Evaluations  
I was very fortunate that I passed the First Evaluations and I got the first internship salary in my life. I am very grateful to my two mentor. They have given me a lot ...]]></description><category></category></item><item><title><![CDATA[A new start]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81171770</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81171770</guid><author>Holy_666</author><pubDate>Mon, 23 Jul 2018 17:43:44 +0800</pubDate><description><![CDATA[A new start 
Because I have been looking for shortcuts to deal with the problem, I have delayed a lot of time, but it is a bit of a harvest.

Recently, I talked with my tutors about many solutions to ...]]></description><category></category></item><item><title><![CDATA[GUADEC-2018]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81149940</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81149940</guid><author>Holy_666</author><pubDate>Sat, 21 Jul 2018 22:21:11 +0800</pubDate><description><![CDATA[GUADEC2018 
I remembered the day when I leave from Xi’an, the rain was very heavy. I remembered that every time I went out to the door this year, I started on a rainy day, but the rain of that day was...]]></description><category></category></item><item><title><![CDATA[I am getting closer to success.]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81147531</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81147531</guid><author>Holy_666</author><pubDate>Sat, 21 Jul 2018 18:06:03 +0800</pubDate><description><![CDATA[In the past two weeks, I found that when I switched the category, I found that the log messages were automatically organized and displayed perfectly in the model. 
I was very happy about this, so I wa...]]></description><category></category></item><item><title><![CDATA[Start coding]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81147290</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81147290</guid><author>Holy_666</author><pubDate>Sat, 21 Jul 2018 17:47:10 +0800</pubDate><description><![CDATA[It’s time to show my code. a word , talk is cheap, show me your code . 
Happily I have to start writing code, I am looking forward to it, facing my project, GNOME-LOGS. This is a cool program. 
 
Logs...]]></description><category></category></item><item><title><![CDATA[ENJOY  community binding]]></title><link>https://blog.youkuaiyun.com/Holy_666/article/details/81146564</link><guid>https://blog.youkuaiyun.com/Holy_666/article/details/81146564</guid><author>Holy_666</author><pubDate>Sat, 21 Jul 2018 16:53:56 +0800</pubDate><description><![CDATA[During the community binding period. I got an exciting news, that is, as an intern, we can go to GUADEC.


  The GUADEC, the GNOME Users And Developers European Conference, is an 
  annual conference ...]]></description><category></category></item></channel></rss>