自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (8)
  • 收藏
  • 关注

原创 算法学习笔记----快速排序

一、算法描述  快速排序是一种最坏情况时间复杂度为Θ(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好:它的期望时间复杂度为Θ(nlgn),而且Θ(nlgn)中隐含的常数因子非常小。另外,它还能原址排序,甚至在虚存环境中也能很好地工作。算法步骤如下所示:1、将源数组A[p..r]划分为两两个子数组A[p..q-1]和A[

2013-02-24 16:28:27 1474

原创 Linux中listen()系统调用的backlog参数分析

这篇文章是对上一篇博客网络编程常用接口的内核实现----sys_listen()的补充,上篇文章中我说listen()系统调用的backlog参数既是连接队列的长度,也指定了半连接队列的长度(不能说等于),而不是《Unix网络编程》中讲到的是半连接队列和连接队列之和的上限,也就是说这个说法对Linux不适用。这篇文章中通过具体的代码来说明这个结论,并且会分析如果连接队列和半连接队列都满的话,内核会

2013-02-23 10:13:18 6469 5

原创 网络编程常用接口的内核实现----sys_listen()

listen()函数仅在TCP服务器端调用,它做两个事情:将套接字转换到LISTEN状态和设置套接上的最大连接队列。listen()对应的内核实现为sys_listen(),下面开始对其实现作具体的分析。一、sys_listen()函数  sys_listen()的源码实现及分析如下所示:/* * Perform a listen. Basically, we allow the

2013-02-21 22:07:52 3651 2

原创 网络编程常用接口的内核实现----sys_bind()

bind()系统调用是给套接字分配一个本地协议地址,对于网际协议,协议地址是32位IPv4地址或128位IPv6地址与16位的TCP或UDP端口号的组合。如果没有通过bind()来指定本地的协议地址,在和远端通信时,内核会随机给套接字分配一个IP地址和端口号。bind()系统调用通常是在网络程序的服务器端调用,而且是必须的。如果TCP服务器不这么做,让内核来选择临时端口号而不是捆绑众所周知的端口,

2013-02-20 16:02:55 3417

原创 算法学习笔记----堆排序

堆是一个数组,可以看成一个近似的完全二叉树,除了最底层外,其余各层都是充满的,而且是从左到右填充。假设数组A[1..A.hep_size]是一个对,给定一个结点的下标i,很容计算出其父节点、左孩子和右孩子的下标,如下所示(这里的数组下标是从1开始):  在C语言中数组下标是从0开始的,因此在计算父节点、左右子节点时的公式和上图中有所不同,如下图所示:  二叉堆可以分为两种形

2013-02-03 20:26:15 3258 1

原创 算法学习笔记----用主方法求解递归式

以下内容来自《算法导论》,做个记录,便于查阅。  主方法为如下形式的递归式提供了一种“菜谱”式的求解方法,如下所示其中a≥1和b>1是常数,f(n)是渐近正函数。为了使用主方法,需要牢记三种情况,但随后你就可以很容易地求解很多递归式,通常不需要纸和笔的版主。  主方法依赖于下面的定理。  定理4.1(主定理)    令a≥1和b>1是常数,f(n)是一个函数,T(n)是定义

2013-02-03 10:58:29 8907

原创 算法学习笔记----最大子数组问题

题目:给定义数组A,长度为n,找出数组A中的最大子数组,例如数组A={-23,18,20,-7,12},则最大子数组为{18,20,-7,12}。解题思路:  ①很容易想到的方案是简单地尝试每对可能的组合,然后从这些组合中找出最大的子数组。从数组中选择一个数A(i),然后计算以A(i)开始的所有子数组的和,计算的次数为(n-i),选择的次数为n,因此该算法的时间复杂度为Θ(n^2),该算法

2013-02-02 17:33:24 1444

原创 网络编程常用接口的内核实现----sys_socket()

最近在开发一个内核模块,主要的功能是在集群的节点之间迁移TCP连接,从而实现基于内容的调用。因此,花了很多时间和精力研究linux的网络协议栈,但是还是有很多地方没有串起来。网络协议栈是为用户层的应用开发服务的,因此决定从用户层常用的编程接口入手,通过学习这些接口的实现,来理清整个过程,加深对网络协议栈的理解。  网络编程通常是基于客户端-服务端模型。首先启动服务器,稍后的某个时刻启动客户,它

2013-02-01 21:53:04 4338

深入理解计算机系统

国外经典教程, 经典的讲解操作系统底层原理的好书!

2013-01-15

SQL语句经典大全SQL语句经典大全SQL语句经典大全

SQL语句经典大全 SQL语句经典大全 SQL语句经典大全

2011-04-22

Linux_C高级程序员指南.pdfLinux_C高级程序员指南.pdf

Linux_C高级程序员指南.pdf Linux_C高级程序员指南.pdf Linux_C高级程序员指南.pdf

2011-04-19

经典算法大全,学习算法的好东东

经典的算法大全,对于初学者很好哦。经典的算法大全,对于初学者很好哦。经典的算法大全,对于初学者很好哦。

2011-04-14

C#读取配置文件详细教程

用C#读取配置文件,很详细的哦,而且使用的方法也是比较优化的

2011-04-14

进程线程的概念,讲的很详细

介绍进程线程很详细的资料哦,对学习编程语言很有帮助。面试的时候也会经常被问到这样的问题

2011-04-14

用C#操作数据库用C#操作数据库,很多很全哦

用C#操作数据库,很多很全哦 用C#操作数据库,很多很全哦 用C#操作数据库,很多很全哦

2011-04-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除