<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[darkfaker的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/darkfaker</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; darkfaker]]></copyright><item><title><![CDATA[当你敲下www.baidu.com后发生了什么 —Web前端与后端_网络基础/18/4/7]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/79842793</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/79842793</guid><author>darkfaker</author><pubDate>Sat, 07 Apr 2018 16:37:23 +0800</pubDate><description><![CDATA[从域名到页面  —— Web前端与后端



这个问题可归结为一个很形象的问题：


从你敲下www.baidu.com之后发生了什么？  
从全局角度可总结为一下几点： 
1，浏览器向DNS服务器查找输入URL对应的IP地址 
2，DNS服务器返回网站的IP地址 
3，浏览器根据IP地址与目标Web服务器在80端口上建立TCP 连接。 
4，浏览器获取客户端请求页面的HTML代码。 
5，浏览器...]]></description><category></category></item><item><title><![CDATA[IA32位Linux内核中的虚拟地址映射——上]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/79795964</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/79795964</guid><author>darkfaker</author><pubDate>Thu, 05 Apr 2018 14:02:00 +0800</pubDate><description><![CDATA[IA32位Linux内核中的虚拟地址映射——上


虚拟地址空间布局
CPU知识储备
Linux 内存管理的基本框架 
地址映射的基本过程 —— 


推荐书籍《Linux内核源代码情景分析》




1,在分析Linux32内存地址映射前，先看一段简单的C语言程序代码在32位和64位系统上运行的结果：




#include &amp;lt;stdio.h&amp;gt;
{
    unsigned lon...]]></description><category></category></item><item><title><![CDATA[Linux中ELF文件的装载过程_linux基础18/3/1]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/79411625</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/79411625</guid><author>darkfaker</author><pubDate>Thu, 01 Mar 2018 15:06:34 +0800</pubDate><description><![CDATA[前情提要


这片博客纯属为自己做个笔记，其中还有很多解释不到位的地方，特别是后面对底层源代码的分析，可能会有解释不恰当甚至不合理的地方。但我会在后面对源码有了更深层次的研究之后对这篇博客里的源码分析进行修改。还是一样，这篇博客还有很多的知识部分来自《程序员的自我修养》






Linux内核中的ELF文件装载过程之详解execve

———部分取材自《程序员的自我修养》           ...]]></description><category></category></item><item><title><![CDATA[函数调用约定及函数返回值_C底层18/2/26]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/79380516</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/79380516</guid><author>darkfaker</author><pubDate>Mon, 26 Feb 2018 18:54:16 +0800</pubDate><description><![CDATA[前情提要

这次的这篇关于函数约定及返回值的博客，并没写的很精髓，如果看到了就只做参考吧。这方面的知识还是推荐看《程序员的自我修养》。 
本文中有关于函数调用堆栈的内容可先浏览博客函数调用堆栈过程详解



一：函数调用约定


调用约定所规定的 
1）函数参数的传递顺序和方式 
这一项其实说的就是函数产生的参数入栈顺序会不同 
对于C中的三个约定_cdecl  _stdcall  _fastca...]]></description><category></category></item><item><title><![CDATA[函数调用堆栈_C底层18/2/25]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/79371231</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/79371231</guid><author>darkfaker</author><pubDate>Sun, 25 Feb 2018 20:19:13 +0800</pubDate><description><![CDATA[前情提要

函数是C语言的基本组成单位，相信平常使用函数也是觉得很easy的，但是有没有深入了解一下其具体实现过程呢？ 
这里将对函数调用堆栈的具体过程做一个疏通，虽然不能保证很深入，很有知识，但能保证对函数调用堆栈的过程有一个大概的了解。因为这本身就是对初学者适用的。



我们要了解函数堆栈，就必须得先知道栈是个什么东西。先给出理论：


栈 
栈在经典计算机中被定义为一个特殊的容器，用户可以...]]></description><category></category></item><item><title><![CDATA[链接过程中的符号重定位_C底层18/2/25]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/79370796</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/79370796</guid><author>darkfaker</author><pubDate>Sun, 25 Feb 2018 19:06:48 +0800</pubDate><description><![CDATA[前情提要


对于编译和链接的基本过程，这里只对链接过过程的符号重定位做了解释，因为个人认为在链接过程中符号的重定位是最重要的一步，也是其精华所在，知道了这一步的实现过程可以解决很多问题，包括面试中可能会问到的关于extern等的方面。所以这里只有对符号重定位进行了详细的说明，如果想了解更多可以参看《程序员的自我修养》第2，3，6 章节。里面有很详细的解释。 
如果对虚拟地址空间的内存分布还不够了...]]></description><category></category></item><item><title><![CDATA[8大排序_C算法_基础数据结构18/1/30]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/79209127</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/79209127</guid><author>darkfaker</author><pubDate>Sun, 04 Feb 2018 17:24:50 +0800</pubDate><description><![CDATA[前情提要

在数据结构的学习中，必不可少的基本算法就是排序。排序算法可以分为内部排序和外部排序


内部排序是数据记录在内存中进行排序 
外部排序是因排序的数据很大，一次不能容纳全部的排序记录，在排序过程中需要访问外存
常见的内部排序算法有：插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等


在基础数据结构中有8种必看的排序方法，这8中方法各有各的长处，也有其短板。...]]></description><category></category></item><item><title><![CDATA[C中数组与宏和const以及typedef的总结_VS_C_17/12/12]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/79168237</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/79168237</guid><author>darkfaker</author><pubDate>Fri, 26 Jan 2018 03:15:05 +0800</pubDate><description><![CDATA[在总结数组与const等区别之前，可以先给一个意见，把我在写这篇博客之前看的几本书介绍一下，对学习C基础很有帮助：  
1，《C程序设计语言第2版》  
2，《C程序设计第4版.谭浩强》 经典老书  
3，《C语言深度剖析》  
4，《高质量C/C++》  
5，《C和指针》

一：数组  
我们先给出一些概念：  
一维数组：  
1.1int str[] ;这样我们定义一个数组，注意它在定义时...]]></description><category></category></item><item><title><![CDATA[C的数组的扩充与指针的引入_VS_C_17/12/17]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/78829084</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/78829084</guid><author>darkfaker</author><pubDate>Sun, 17 Dec 2017 23:51:55 +0800</pubDate><description><![CDATA[数组在上一章已经做过一些解释，接下来对其做一个扩充。并探讨一下指针。 
提要： 
1，数组中左值与右值。 
2，柔性数组。 
3，定义指针的要点。 
4，void*空类型指针。 
5，const与指针的修饰关系。 
6，&amp;和*与指针和数组的关系。 
7，sizeof与数组的关系。



一：数组扩充, 
1.1左值与右值 
什么是左值与右值？



int x = 10;
int y = 20;]]></description><category></category></item><item><title><![CDATA[C中if与switch的区别_VS_C_17/11/22]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/78756376</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/78756376</guid><author>darkfaker</author><pubDate>Fri, 08 Dec 2017 22:54:50 +0800</pubDate><description><![CDATA[一：两种语句的区别

在讨论if与switch这两种语句的区别时，应该从它们最基础的层面开始。所以我们应该从它们的汇编实现开始探讨。而且应注意到它们都是C中最常用的选择语句，既然是选择语句就还得从它们的实现效率上讨论一番。
先看switch语句：
1，switch...case会生成一个跳转表来指示实际的case分支的地址，而这个跳转表的索引号与switch变量的值是相的。从而，switc]]></description><category></category></item><item><title><![CDATA[C中char和float在内存中的储存方式_VS_C_17/11/15]]></title><link>https://blog.youkuaiyun.com/darkfaker/article/details/78723762</link><guid>https://blog.youkuaiyun.com/darkfaker/article/details/78723762</guid><author>darkfaker</author><pubDate>Tue, 05 Dec 2017 19:18:44 +0800</pubDate><description><![CDATA[我们要想了解基本数据类型在内存中的储存方式就必须先要知道这些数据类型在内存在所占的字节数，但c的标准中并没有对此具体规定。而且这个也与操作系统和编译器有关，比如同样是int类型的数据在不同的编译器中有4和2两种字节储存方式。 
     虽然没有具体规定，但其有一定的原则： 
sizeof(short int)&lt;=sizeof(int) 
sizeof(int)&lt;=sizeof(long int)]]></description><category></category></item></channel></rss>