<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[godleading的专栏]]></title><description><![CDATA[关注Linux Kernel/网络协议栈]]></description><link>https://blog.youkuaiyun.com/godleading</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; godleading]]></copyright><item><title><![CDATA[git使用]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/79001053</link><guid>https://blog.youkuaiyun.com/godleading/article/details/79001053</guid><author>godleading</author><pubDate>Mon, 08 Jan 2018 12:21:11 +0800</pubDate><description><![CDATA[git使用
git clone时报如下错误
原因
解决方法


TortoiseGit clone时报错
问题原因
解决方法


git log使用
git回归代码






git使用

本文记录的是工作中git是使用问题，无脑模式，遇到什么记录什么，谨慎阅读。



git clone时报如下错误。



git@github.com:vim/vim.git
bash: git@github]]></description><category></category></item><item><title><![CDATA[字节序与比特序详解]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/78876639</link><guid>https://blog.youkuaiyun.com/godleading/article/details/78876639</guid><author>godleading</author><pubDate>Fri, 22 Dec 2017 20:43:06 +0800</pubDate><description><![CDATA[[TOC]字节序的定义字节序就是说一个对象的多个字节在内存中如何排序存放，比如我们要想往一个地址a中写入一个整形数据0x12345678，那么最后在内存中是如何存放这四个字节的呢？  
 0x12这个字节值为最高有效字节，也就是整数值的最高位(在本文中0x12=0x12000000)，0x78为最低有效字节。 
 这里就分为大端字节序和小端字节序 
 大端字节序：便是指最高有效字节落在低地址上的字节]]></description><category></category></item><item><title><![CDATA[C语言字节对齐问题详解]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/78403882</link><guid>https://blog.youkuaiyun.com/godleading/article/details/78403882</guid><author>godleading</author><pubDate>Tue, 31 Oct 2017 18:07:39 +0800</pubDate><description><![CDATA[C语言字节对齐]]></description><category></category></item><item><title><![CDATA[Linux进程间通信方式]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/78391159</link><guid>https://blog.youkuaiyun.com/godleading/article/details/78391159</guid><author>godleading</author><pubDate>Mon, 30 Oct 2017 11:09:40 +0800</pubDate><description><![CDATA[进程与进程通信的概念
进程通信的应用场景
进程通信的几种方式
管道
管道简介
管道原理
管道如何通信
管道如何创建
管道读写实现


管道api与用法
普通管道
流管道
命名管道
实现原理
api与应用




匿名管道和有名管道总结


信号
信号来源
信号生命周期和处理流程
api使用


消息队列
实现原理
api与应用以Posix为例


共享内存
实现原理
api和应用
system V]]></description><category></category></item><item><title><![CDATA[Linux内核中的各种锁]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/78259842</link><guid>https://blog.youkuaiyun.com/godleading/article/details/78259842</guid><author>godleading</author><pubDate>Tue, 17 Oct 2017 14:12:42 +0800</pubDate><description><![CDATA[Linux内核中的各种锁在现代操作系统里，同一时间可能有多个内核执行流在执行，因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上，更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制，这些同步机制包括：原子操作、信号量（semaphore）、读写信号量（rw_se]]></description><category></category></item><item><title><![CDATA[各种算法复杂度]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/53258156</link><guid>https://blog.youkuaiyun.com/godleading/article/details/53258156</guid><author>godleading</author><pubDate>Mon, 21 Nov 2016 14:27:35 +0800</pubDate><description><![CDATA[数据结构 
 
注解： 
Skip_List:跳跃表 
Cartesian_Tree:笛卡尔树是一种特定的二叉树数据结构，可由数列构造，在范围最值查询、范围top k查询（range top k queries）等问题上有广泛应用。
数组排序算法 图操作 堆操作 大O复杂度]]></description><category></category></item><item><title><![CDATA[Linux内核中的软中断、tasklet和工作队列详解]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/52971179</link><guid>https://blog.youkuaiyun.com/godleading/article/details/52971179</guid><author>godleading</author><pubDate>Sun, 30 Oct 2016 14:26:32 +0800</pubDate><description><![CDATA[[TOC] 
本文基于Linux2.6.32内核版本。引言软中断、tasklet和工作队列并不是Linux内核中一直存在的机制，而是由更早版本的内核中的“下半部”（bottom half）演变而来。下半部的机制实际上包括五种，但2.6版本的内核中，下半部和任务队列的函数都消失了，只剩下了前三者。 
介绍这三种下半部实现之前，有必要说一下上半部与下半部的区别。 
上半部指的是中断处理程序，下半部则指的]]></description><category></category></item><item><title><![CDATA[理解tcp关闭连接中的time_wait状态]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/50849253</link><guid>https://blog.youkuaiyun.com/godleading/article/details/50849253</guid><author>godleading</author><pubDate>Thu, 10 Mar 2016 19:16:56 +0800</pubDate><description><![CDATA[首先看一下tcp关闭连接时的四次握手过程：




1.Client向Server发送FIN包，表示Client主动要关闭连接，然后进入FIN_WAIT_1状态，等待Server返回ACK包。此后Client不能再向Server发送数据，但能读取数据。

2.Server收到FIN包后向Client发送ACK包，然后进入CLOSE_WAIT状态，此后Server不能再读取数据，但可以]]></description><category></category></item><item><title><![CDATA[Linux Shell参数]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/46411953</link><guid>https://blog.youkuaiyun.com/godleading/article/details/46411953</guid><author>godleading</author><pubDate>Mon, 08 Jun 2015 14:17:02 +0800</pubDate><description><![CDATA[在shell编程时.可以使用参数。Shell有位置参数和内部参数
1、 位置参数
　　由系统提供的参数称为位置参数。位置参数的值可以用$N得到，N是一个数字，如果为1，即$1.类似C语言中的数组，Linux会把输入的命令字符串分段并给每段进行标号，标号从0开始。第0号为程序名字，从1开始就表示传递给程序的参数。如$0表示程序的名字，$1表示传递给程序的第一个参数，以此类推。
2、 内部参数]]></description><category></category></item><item><title><![CDATA[Linux进程状态]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/45199081</link><guid>https://blog.youkuaiyun.com/godleading/article/details/45199081</guid><author>godleading</author><pubDate>Wed, 22 Apr 2015 19:06:16 +0800</pubDate><description><![CDATA[众所周知，现在的分时操作系统能够在一个CPU上运行多个程序，让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。
在linux系统中，每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理，以使它们在系统中“同时”运行。linux内核对进程的这种管理分两个方面：进程状态管理，和进程调度。
进程状态

在linux下，通过ps命令我们能够查看到系统中]]></description><category></category></item><item><title><![CDATA[IO多路复用总结]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/45042885</link><guid>https://blog.youkuaiyun.com/godleading/article/details/45042885</guid><author>godleading</author><pubDate>Tue, 14 Apr 2015 17:33:19 +0800</pubDate><description><![CDATA[本文基于Linux2.6.32内核版本。


一、基本概念

　　IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取，它就通知该进程。IO多路复用适用如下场合：

　　（1）当客户处理多个描述字时（一般是交互式输入和网络套接口），必须使用I/O复用。

　　（2）当一个客户同时处理多个套接口时，而这种情况是可能的，但很少出现。

　　（3）如果一个TCP服务器]]></description><category></category></item><item><title><![CDATA[组播MAC地址和各类IP地址]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/21385573</link><guid>https://blog.youkuaiyun.com/godleading/article/details/21385573</guid><author>godleading</author><pubDate>Mon, 17 Mar 2014 14:17:30 +0800</pubDate><description><![CDATA[MAC地址是以太网二层使用的一个48bit（6字节十六进制数）的地址，用来标识设备位置。MAC地址分成两部分，前24位是组织唯一标识符（OUI, Organizationally unique identifier），后24位由厂商自行分配。

    MAC地址有单播、组播、广播之分。单播地址(unicast address)表示单一设备、节点，多播地址或者组播地址(multicast ad]]></description><category></category></item><item><title><![CDATA[linux iptables实现]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/19978881</link><guid>https://blog.youkuaiyun.com/godleading/article/details/19978881</guid><author>godleading</author><pubDate>Wed, 26 Feb 2014 14:43:16 +0800</pubDate><description><![CDATA[Xtables提供的资源

 

struct  xt_af  xt[]结构数组
该数组用于挂载各个协议的match和target资源。由于写者（添加、删除）和读者（查找）都是在内核空间进程上下文执行，所以它们只需要用xt[n].mutex信号量进行互斥。读者（查找）在将规则关联上一个match或target时会增加它们所在模块的引用计数，在它释放这个引用计数之前该模块是不会被卸载的，所]]></description><category></category></item><item><title><![CDATA[Linux nf_conntrack连接跟踪的实现]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/19972253</link><guid>https://blog.youkuaiyun.com/godleading/article/details/19972253</guid><author>godleading</author><pubDate>Wed, 26 Feb 2014 12:07:30 +0800</pubDate><description><![CDATA[连接跟踪，顾名思义，就是识别一个连接上双方向的数据包，同时记录状态。下面看一下它的数据结构：
struct nf_conn {
        /* Usage count in here is 1 for hash table/destruct timer, 1 per skb, plus 1 for any connection(s) we are `master' for */
   ]]></description><category></category></item><item><title><![CDATA[Understanding a Kernel Oops]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/18817795</link><guid>https://blog.youkuaiyun.com/godleading/article/details/18817795</guid><author>godleading</author><pubDate>Mon, 27 Jan 2014 17:53:57 +0800</pubDate><description><![CDATA[Understanding a kernel panic and doing the forensics to trace the bug is considered a hacker’s job. This is a complex task that requires sound knowledge of both the architecture you are working on, an]]></description><category></category></item><item><title><![CDATA[程序的内存分配]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/18730945</link><guid>https://blog.youkuaiyun.com/godleading/article/details/18730945</guid><author>godleading</author><pubDate>Fri, 24 Jan 2014 11:34:45 +0800</pubDate><description><![CDATA[一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区（stack）—   由编译器自动分配释放   ，存放函数的参数值，局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区（heap）   —   一般由程序员分配释放，   若程序员不释放，程序结束时可能由OS回    收   。注意它与数据结构中的堆是两回事，分配方式倒是类...]]></description><category></category></item><item><title><![CDATA[进程栈和内核栈]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/18710953</link><guid>https://blog.youkuaiyun.com/godleading/article/details/18710953</guid><author>godleading</author><pubDate>Thu, 23 Jan 2014 17:40:34 +0800</pubDate><description><![CDATA[1.进程的堆栈

       内核在创建进程的时候，在创建task_struct的同时，会为进程创建相应的堆栈。每个进程会有两个栈，一个用户栈，存在于用户空间，一个内核栈，存在于内核空间。当进程在用户空间运行时，cpu堆栈指针寄存器里面的内容是用户堆栈地址，使用用户栈；当进程在内核空间时，cpu堆栈指针寄存器里面的内容是内核栈空间地址，使用内核栈。

2.进程用户栈和内核栈的切换（堆栈指]]></description><category></category></item><item><title><![CDATA[Linux用户进程内存空间]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/18705167</link><guid>https://blog.youkuaiyun.com/godleading/article/details/18705167</guid><author>godleading</author><pubDate>Thu, 23 Jan 2014 14:41:50 +0800</pubDate><description><![CDATA[经常使用top命令了解进程信息，其中包括内存方面的信息。命令top帮助文档是这么解释各个字段的。
VIRT , Virtual Image (kb)
RES, Resident size (kb)
SHR, Shared Mem size (kb)
%MEM, Memory usage(kb)
SWAP, Swapped size (kb)
CODE, Code size (kb)]]></description><category></category></item><item><title><![CDATA[Linux中的地址空间以及I/O地址空间]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/18702029</link><guid>https://blog.youkuaiyun.com/godleading/article/details/18702029</guid><author>godleading</author><pubDate>Thu, 23 Jan 2014 14:33:43 +0800</pubDate><description><![CDATA[解惑—Linux中的地址空间（一）

有这么一系列的问题，是否在困扰着你：
1. 用户程序编译连接形成的地址空间在什么范围内？
2. 内核编译后地址空间在什么范围内？
3. 要对外设进行访问，I/O的地址空间又是什么样的？
先回答第一个问题。Linux最常见的可执行文件格式为elf(Executable and Linkable Format)。在elf格式的可执行代码中，ld总是从0]]></description><category></category></item><item><title><![CDATA[Linux内核bridge浅析]]></title><link>https://blog.youkuaiyun.com/godleading/article/details/8961734</link><guid>https://blog.youkuaiyun.com/godleading/article/details/8961734</guid><author>godleading</author><pubDate>Wed, 22 May 2013 19:53:58 +0800</pubDate><description><![CDATA[Linux内核bridge浅析

　Linux网桥模型：
　　Linux内核通过一个虚拟的网桥设备来实现桥接的，这个设备可以绑定若干个以太网接口设备，从而将它们桥接起来。如下图所示：

　　网桥设备br0绑定了eth0和eth1。对于网络协议栈的上层来说，只看得到br0，因为桥接是在数据链路层实现的，上层不需要关心桥接的细节。于是协议栈上层需要发送的报文被送到br0，网桥设备的处理代码再]]></description><category></category></item></channel></rss>