自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Java集合源码剖析】ArrayList源码剖析

ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。 ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。 ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了R

2014-06-30 08:02:49 25480 23

原创 【Java集合源码剖析】Java集合框架

Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。 从上图中可以看出,集合类主要分为两大类:Collection和Map。 Collection是List、Set等集合高度抽象出来的接口,它包含了这些集合的基本操作,它主要又分为两大部分:List和

2014-06-29 12:48:55 25497 16

原创 【算法拾遗】二分查找递归非递归实现

本篇博文没太多要说的,二分查找很简单,也是常见常考的查找算法,一下是递归非递归的实现。 非递归实现:

2014-06-24 12:45:59 4620 2

原创 【网络协议】TCP的拥塞控制机制

前言计算机网络中的带宽、交换节点中的缓存和处理机等,都是网络的资源,在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫做拥塞。所谓拥塞控制,就是防止过多的数据注入到网络中,从而使网络中的路由器或链路不致过载。要注意用拥塞控制与流量控制的区别,拥塞控制是一个全局性的过程,涉及到所有的额主机、路由器,以及与降低网拥塞控制的算法有:慢开始、拥塞避免、快重传、快恢复四种。 慢开始和拥塞避免发送方维持一个拥塞窗口的状态变量,其大小取决于网络的拥塞程度

2014-06-21 00:54:02 15304 2

原创 【网络协议】TCP中的四大定时器

前言 对于每个TCP连接,TCP一般要管理4个不同的定时器:重传定时器、坚持定时器、保活定时器、2MSL定时器。 重传定时器 很明显重传定时器是用来计算TCP报文段的超时重传时间的(至于超时重传时间的确定,这里涉及到一大堆的算法,书上有说,我这里不细谈了)。每发送一个报文段就会启动重传定时器,如果在定时器时间到后还没收到对该报文段的确认,就重传该报文段,并将重传定时器复位,重新计算;如果在规定时间内收到了对该报文段的确认,则撤销该报文段的重传定时器。 坚持定时器

2014-06-20 08:30:05 8067 2

原创 【网络协议】TCP的流量控制机制

一般来说,我们总是希望数据传输的更快一些,但如果发送方把数据发送的很快,而接收方来不及接收,这就可能造成数据的丢失。流量控制就是让发送方的发送速率不要太快,让接收方来得及接收。 对于成块数据流,TCP利用滑动窗口机制来实现流量的控制,对于交互数据流,TCP利用捎带ACK和Nagle算法来实现流量的控制。 后两种就不说了,上篇博文中将已经写得比较清楚了,对于滑动窗口机制,上篇博文中也又说到,只是没有刻意提到用滑动窗口来实现流量的控制。下面就详细说下利用滑动窗口机制来实现流量控制的机制,先看下图

2014-06-20 08:29:34 10696

原创 【网络协议】TCP的交互数据流和成块数据流

前言 建立在TCP协议上的应用层协议有很多,如FTP、HTTP、Telnet等,这些协议根据传输数据的多少可以分为两类:交互数据类型和成块数据类型。 交互数据类型,如:Telnet,这类协议一般只做小流量的数据交换,比如每按下一个键,要回显一些字符。 成块数据类型,如:FTP,这类协议需要传输的数据比较多,一般传输的数据量比较大。 针对这两种不同的情况,TCP采用不同的策略进行数据传输。 交互数据流 针对交互性要求比较高的应用,比如Rlogin远程登录中,需

2014-06-20 08:29:27 7145 3

原创 【网络协议】TCP协议简介

本文只是对TCP协议做个简要的介绍。 TCP协议,即传输控制协议,与UDP协议同处于传输层,同样使用相同的网络层,但TCP提供了一种可靠的、面向连接的数据传输服务,它会在两个使用TCP的应用之间建立一个TCP连接,在该连接上进行数据的传输。 TCP通过以下方式提供可靠性: 1、应用程序被分割成TCP认为最合适发送的数据块。这点与UDP完全不同,应用程序产生的UDP数据报长度将保持不变,加上IP首部后,才会进行IP分片。 2、当TCP发出一个报文段后,它会启动一个定时器,等待目

2014-06-18 08:29:50 5758 1

原创 看世界杯应该看到一种精神

看世界杯应该看到一种精神,一种锲而不舍、四年磨一剑的精神。 平时很少看足球,但这两届世界杯,阿根廷的比赛是必看的,因为有梅西。 梅西带给我的更多的是一种精神上的感动。 现在已经不习惯在QQ空间发表说说了,四年前的一条说说:

2014-06-16 13:20:45 3656 5

原创 【网络协议】UDP协议

UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都会产生一个UDP数据报,并组装成一份待发送的IP数据报,这与面向字符流的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系(主要是在传输层就进行分段了,因此不会受IP分片的影响)。 UDP的首部一共8个字节,很简单,可以参考书上,这里也不再详说。 UDP的校验和 至于UDP的校验和,这里注意下区别就好了,UDP对首部和数据部分都进行校验,而IP首部的校验和仅对IP的首部进行校验,顺带提下T

2014-06-13 00:00:19 5949 8

原创 【网络协议】TCP分段与IP分片

我们在学习TCP/IP协议时都知道,TCP报文段如果很长的话,会在发送时发生分段,在接受时进行重组,同样IP数据报在长度超过一定值时也会发生分片,在接收端再将分片重组。 我们先来看两个与TCP报文段分段和IP数据报分片密切相关的概念。 MYU(最大传输单元) MTU前面已经说过了,是链路层中的网络对数据帧的一个限制,依然以以太网为例,MTU为1500个字节。一个IP数据报在以太网中 传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据

2014-06-12 08:20:45 31757 12

原创 【网络协议】ICMP协议、Ping、Traceroute

ICMP协议 ICMP经常被认为是IP层的一个组成部分,它是网络层的一个协议,它传递差错报文以及其他需要注意的信息,ICMP报文通常被IP层或更高层(TCP、UDP等)使用,它是在IP数据报内传输的。 ICMP报文大致分为两类:查询报文和差错报文。 先来看差错报文。当传送IP数据报发生错误时(比如主机不可达、网络不可达等),ICMP协议将会发送一个ICMP差错报文给源主机,好让主机做出相应的处理,也因此IP层以上的一些协议有可能做到可靠传输。书中给出了ICMP差错报文中的一些组合(类

2014-06-12 08:20:34 11158

原创 【网络协议】IP协议、ARP协议、RARP协议

前20字节和紧接其后的选项部分是IP数据报的首部,前20个字节是固定的,选项可有可无。首部的每一行是一个32位字的单位,最高位在左边,为0bit,最低位在右边,为31bit。4字节的32bit值按照以下次序传输:首先0-7bit,其次8-15比特,然后16-23bit,最后是24-31bit,这种传输次序称为big endian字节序(我们在C语言写位操作的算法时常用到该词)。TCP/IP首部中的所有二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序,其他形式存储的二进制数据,如little

2014-06-11 00:04:02 8508 2

原创 【网络协议】数据链路层

数据链路层主要有三个目的:为IP模块发送和接受IP数据报;为ARP模块发送ARP请求和接受ARP应答;为RARP发送RARP请求和RARP应答。 这里的ARP协议主要用来将32bit的IP地址解析为对应48bit(以太网中)的MAC地址(硬件地址)。而RARP协议则是将硬件地址解析为IP地址,这两个协议位于网络层,和IP数据报一样,都具有各自的以太网数据帧类型(即传入到以太网中要加上对应的MAC帧)。局域网中的ARP攻击是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的AR

2014-06-11 00:03:57 4922

原创 【网络协议】TCP连接的建立和释放

TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项。因此TCP报文段的最小长度为20个字节。 首部固定部分的各字段的意义如下: 1、源端口和目的端口:加上IP首部的源IP地址和目的IP地址,确定唯一的一个TCP连接。另外通过目的端口来决定TCP将数据报交付于那个应用程序,从而实现TCP的分用功能。 2、序号:占4个字节,序号的范围为[0,4284967296]。由于TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,首部中的序号字

2014-06-09 08:16:50 24541 7

原创 【算法拾遗】子数组的最大乘积

给定一个长度为N的整数数组,只允许使用乘法,不能使用除法,计算任意N-1个数的组合乘积的最大值。 这道题目重点要注意数组中有负数、0的情况。最直观的做法就是把所有可能的N-1个数的组合找出来,分别计算他们的乘积,并比较大小。找出所有组合需要O(N)时间,计算每个组合的乘积需要O(N)时间,因此该算法的时间复杂度为O(N*N)。 编程之美上给出了两种O(N)的解法。 第一种比较直观,假设去掉第i个元素后的剩下的N-1个元素的成绩为p[i],则从左向右扫描数组,计算第0到第i-1个元素

2014-06-08 08:33:03 5643

原创 【算法拾遗】最大数和最小数

求一个数组中的最大值和最小值,我们一般的做法是扫描一遍数组求的最大值,扫描一遍数组求最小值,这样做需要比较2N次才能求解。而实际上我们可以比较1.5N次即可得到结果。考虑如下几种方法。 方法一: 我们可以把数组分成两部分,首先按照顺序将数组中的相邻的两个数分在同一组,接着比较同一组中奇数位上的值和偶数位上的值,将较大的放在偶数位上,较小的放在奇数位上,这样经过0.5N次比较后,最大数肯定在偶数位上,最小的数肯定在奇数位上,而后分别扫描一遍数组的偶数位和奇数位,便可得到最大值和最小值。这样,

2014-06-06 00:07:29 5742

原创 【算法拾遗】最大公约数

求两个正整数的最大公约数是一个很古老且很基本的问题,欧几里得在其著作《几何原本》中给出了高效的解法——辗转相除法,也叫做欧几里得算法。下面我们来看下求最大公约数的一些方法。方法一 我们先来看欧几里得的辗转相除法。原理很简单,假设用f(x,y)表示x和y的最大公约数,我们令x>y,则有x=ky+b,如果一个数能够同时整除x和y,则必能同时整除b和y,而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数相同,因此二者的最大公约数也相同,则有f(x,y)=f(y,x%y),一

2014-06-05 00:44:58 3448 3

原创 【算法拾遗】阶乘

前言 主要看两道题,我们通过这两道题目引伸出一些结论。题目一:N!末尾0的个数 找末尾0出现的个数,那我们就要找产生0的乘数,即哪些数相乘会得到10。我们需要对N!进行质因数分解,由于10 = 2*5,因此0的个数至于N!中2和5出现的的对数有关,而能被2整除的数出现的频率比能被5整除的数要多得多,因此我们找出N!中质因数5出现的个数,即为N!末尾0的个数。

2014-06-04 00:48:44 2753

原创 五月份小结

转眼间进入六月份了,校招也越来越近了,虽然心里还是没底,但是学习的动力却依然很足。虽然现在一切都不确定,但我始终坚信,付出总会有所回报的!生活上 五月份虽然依然有些不顺心的事,但相比四月份,算是好多了。整个四月份发生了太多不顺心的事,其中对我打击最大的莫过于外公的突然离世,为此我整整一周没怎么学习,一想到外公的样子,想到小时候他经常带着我玩,眼泪就控制不住,一个人跑到楼顶大哭,哭完后洗把脸,回实验室。再后来,一次次地告诫自己,不能总是停留在悲伤中,要尽快调整过来,无论发生什么,生活总还要继续,

2014-06-04 00:02:34 6295 34

原创 【剑指offer】把数组排成最小的数

题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。输入的第二行包括m个正整数,其中每个正整数不超过10000000。输出:对应每个测试案例,输出m个数字能排成的最小数字。

2014-06-03 08:38:23 12233 4

原创 【剑指offer】最近公共祖先

这类的题目,方法蛮多的,思路也不难理解,基本都是各种遍历的变种,主要是写代码,尤其基于递归的代码。 首先如果是二叉排序树自然不用说了,判断的一句就是该节点的值是否位于输入的这两个节点之间,可以用前序遍历来做。 如果是普通的树或者二叉树,解题思路是一样的,可以考虑前序遍历,得到两个路径,用链表或数组保存起来,然后找出两条路径的最后一个公共节点即可。也可以后序遍历的方式,遍历到输入的节点时,将该节点及其后面遍历到的节点都保存到一个链表或数组中,然后找出两条路径的第一个公共机节点即可。

2014-06-03 08:36:26 7386 2

原创 【剑指offer】字符串转整数

关于这道题目,题目本身还是不错的,真正核心的代码也就那么两行,大部分代码基本都在做非法输入的检查。 最近做这几道题目,对九度后台的测试用例有点无语了,这道题目的测试用例应该有问题,我写的代码自己测试了很多种不同的非法输入以及合法输入,都没问题,但是在九度OJ上只有第四条测试用例通过,其他四条全部WA,害的我搞了一个晚上,后来下了个别人AC的代码,拿来测试了下,结果各种非法的输入都没处理,很多非法的输入,得到的都是些莫名奇妙的答案。 先贴上代码,大家帮我看下有木有没考虑到的地方:

2014-06-02 08:52:32 6021 2

原创 【剑指offer】不用加减乘除做加法

题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。输入:输入可能包含多个测试样例。对于每个测试案例,输入为两个整数m和n(1<=m,n<=1000000)。输出:对应每个测试案例,输出m+n的值。

2014-06-02 08:52:24 8023 1

原创 【剑指offer】无聊的1+2+...+n

题目描述:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个整数n(1<= n<=100000)。输出:对应每个测试案例,输出1+2+3+…+n的值。样例输入:

2014-06-02 08:50:44 5798 11

原创 【剑指offer】约瑟夫环问题

题目描述:每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为JOBDU的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为1的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续1...m报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到JOBDU名贵的“名侦探柯南”典藏版(名额有限哦!!^_^

2014-06-02 08:50:34 9319 3

原创 【剑指offer】扑克牌的顺子

九度上把这道题目改成了一副扑克牌有4张大小王,这里姑且不管它最多几个0,就题目来说,不严谨,很含糊,比如这里没有对顺子给出比较严谨的定义,5个以下的连续数字算是顺子吗?现实中要至少5个才算顺子的,而且如果假设3个牌也算顺子,那如果输入的是3个0呢,这有点太牵强了!看论坛里面好多人吐槽。总之,不管那么多,这道题目无论它怎么坑爹,用剑指offer上的思路写的代码AC是没问题的,因为这里不管你0有多少个(只要不大于数组的长度就可)都OK。 我之前想避开排序,或者开辟哈希数组,就遍历一遍求出最大值,最小值,

2014-06-01 00:00:52 4943

原创 【剑指offer】和为定值的连续正数序列

题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输入:输入有多组数据。每组数据仅包括1个整数S(S<=1,000,000)。如果S为负数时,则结束输入。输出:对应每组数据,若不存在和为S的连续正

2014-06-01 00:00:36 4210

字典树求公共前缀字符串数目

字典树求具有公共前缀的字符串数目, 对应的博客地址:http://blog.csdn.net/ns_code/article/details/21183495

2014-03-13

哈希表相关操作实现

哈希表相关操作实现。对应讲解的博客地址:http://blog.csdn.net/ns_code/article/details/20763801

2014-03-08

九大内部排序算法打包下载

源码包括:冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序、计数排序、基数排序等,没有实现桶排序。 每一种排序算法在我的博客中都有对应的讲解.

2014-03-05

优化冒泡排序和选择排序

冒泡排序和选择排序均用两种方法实现,原始方法和在原始方法上的改进和优化,对应博客地址:http://blog.csdn.net/ns_code/article/details/20065107

2014-02-27

插入排序和希尔排序的多种实现方法

插入排序采用三种方法实现,希尔排序根据插入排序采用的方法不同,也有三种,但是又通过改进得到一种最为简介的实现方式。所有方法的实现在博客中:http://blog.csdn.net/ns_code/article/details/20043459中有详细的讲述

2014-02-27

模式匹配—BF算法和KMP算法

模式匹配—从BF算法优化到KMP算法,含有详细注释,对应的讲述该算法的博文地址:http://blog.csdn.net/ns_code/article/details/19286279

2014-02-19

两种遍历方法实现赫夫曼编码

对之前的代码做了些改进,并增加了一种无栈非递归求赫夫曼编码的方法。加入了更详细的注释。。

2014-02-15

赫夫曼树的构建及赫夫曼编码(C语言源代码,代码中含详细注释)

C语言实现赫夫曼树的构建及赫夫曼编码的源代码,配合我的CSDN博客:http://blog.csdn.net/ns_code/article/details/19174553中的讲解,帮助你掌握Huffman编码的算法实现

2014-02-15

百度2014校园招聘笔试题

百度2014校园招聘深圳站移动软件研发岗笔试题

2013-10-05

Matlab 实例程序百例

很多实用的程序,可以拿来现用,或者稍作修改来用。很好,很实用。。。。。

2010-06-01

大学生职业生涯规划书

本人作品,可以作为模板,曾获校级十佳规划之星,并吧被推选为省级参赛作品,但因时间关系,最终放弃省赛。。

2010-06-01

简易洗衣机设计—基于Multism

实现了实验要求的全部功能,并提供了详细的论文和仿真电路图

2010-05-22

2009年全国大学生数学建模竞赛A题论文

本论文只含有论文内容,不含该题目的数据,数据可以自行在官网上下载

2010-05-22

空空如也

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

TA关注的人

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