自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2.tcp/ip协议分析-IP协议、ARP协议和RARP协议

IP协议是TCP/IP协议族中最核心的协议,它提供不可靠、无连接的数据报传输服务。所以理解IP协议对于我们学习网络至关重要。IP首部重要字段介绍:4bit首部长度:以4字节为单位,决定了IP首部长度最大为15*4=60,一般的IP数据报首部长度为20,此时该字段为5.8bit的服务类型:包括一个3bit的优先权子字段(可以忽略),4bit的tos子字

2015-04-02 22:20:16 955 1

原创 1.tcp/ip 协议分析-综述

协议栈tcp/ip 分为四层,每一层负责不同的通信功能 (1)链路层 ,通常包括了操作系统的驱动程序和计算机的网络接口卡,负责处理物理接口的细节,常见的协议有slip,ppp等。(2)网络层,负责网络中两台主机的通信,以及处理分租在网络中的选路。在TCP/IP协议族中,包括有网际协议ip,icmp,igmp等(3)传输层,负责两台主机上应用程序提供端到端的通信。在tcp/i

2015-04-02 22:06:44 926

原创 BDS之数组与矩阵

数组是将相同数据类型的元素按照一定顺序

2014-05-28 08:58:06 759

原创 BDS之串的模式匹配

KMP算法是由Knuth(D.E.Knuth)、Morris(J.H.Morris)和Pratt(V.R.Pratt)三人设计的。

2014-05-26 09:35:23 711

原创 BDS之串

串是由零个或多个字符组成的有序

2014-05-26 09:33:19 571

原创 BDS之栈与队列

2014-05-19 13:02:28 661

原创 BDS之链表经典问题

这篇内容我

2014-05-14 15:34:15 1022

原创 MAT-中国剩余定理

中国剩余定理,又称孙子定理,中国

2014-05-14 15:31:41 780 1

原创 MAT-欧几里得及拓展欧几里得算法

111

2014-05-13 12:59:40 595

原创 BDS之链表

java jdk中关于链表的使用尤为广泛,经典的有LinkedList,

2014-05-10 11:26:45 693

原创 BDS之线性顺序表

线性顺序表(动态可变大小的数组存储)可以说是数据结构里最简单的模型了,但其重要性确不容忽视。Java中的ArrayList,Vector以及c++ vector , 我们都可以看线性顺序表的身影。它们都是基于线性顺序表的存储结构。那么,接下来,我们就结合类似的容器来了解线性顺序表。         首先让我们来看下java 中ArrayList的源码,这里我本机的jdk的版本为1.6.0_29

2014-05-05 13:41:32 631

原创 CSI-S1:程序的机器级表示~缓冲区溢出详解

CSI-S1:程序的机器级表示~缓冲区溢出详解           缓冲区溢出是一种非常普遍、非常危险的漏洞,在各个系统、应用软件中都广泛存在。因此,这也是一些hacker喜欢利用缓冲区溢出漏洞进行攻击的原因之一。另一方面,通过缓冲器溢出可以让攻击者很轻易地植入攻击代码并执行,从而获取到被控主机的控制权。当然,各个系统对于缓冲区溢出漏洞也引入了各自的防范机制,这让缓冲

2014-04-21 10:15:00 2423

原创 CSI-S4:动态存储器分配-malloc与GC

用户级存储器映射         之前我们介绍过关于程序加载的详细内容,我们知道在其加载执行之前要对程序进行存储器映射,Unix进程可以使用mmap函数来创建新的虚拟存储器区域,并将对象映射到这些区域。Mmap函数要求内核创建一个新的虚拟存储器区域,最好是从start开始的地址,并将文件描述fd标识对象的一个连续的片映射到这个新的区域。连续的对象片大小为length,从距文件开始处

2014-04-14 13:43:34 2548

原创 CSI-S3:虚拟存储器(二)-再谈hello程序

在CSI-IX一篇中,我们详细的介绍了虚拟存储器的相关概念和技术。但了解这些往往不能揭开我们心中的很多疑团。比如,程序的加载执行过程是怎么样,磁盘的可执行文件怎么虚拟存储器机制关联起来并运行于整个生命周期,虚拟存储机制如是如何组织虚拟页面?或许,学习完操作系统我们还并未完全理解虚拟存储器,或者,我们只记住了一大堆诸如页表,段式,页式存储的概念和一些页面置换的算法等等。不过,这些并不能完全归责于我们

2014-04-14 13:22:48 1492

原创 CSI-IX:虚拟存储器-走进系统内核

前言         如果别人问我,从开发人员的角度来讲,操作系统的哪部分内容是最为重要的,那么,我会毫不犹豫的说:虚拟存储器。可能从开始接触计算机系统到现在,我们对于虚拟存储器的概念和原理都还半知半解。甚至很多人,错误的以为理解虚拟存储器并不能给开发工作带来直接的好处,所以干脆放弃去了解虚拟存储器到底是什么样的,是如何贯穿整个系统层面。事实上,了解虚拟存储器如何工作是理解整个系统如何工作的关

2014-04-14 13:11:10 1660

原创 CSI-VIII:链接-程序构建

前言          或许,我们都曾为符号解析的问题困扰过,又或许,我们还并不清楚静态库和动态库到底是如何表现,如何和程序关联从而构建一个大型的项目。我们都希望自己开发的共享库能够为他人使用而表现良好。希望在构建大型程序的过程中,避免一些如缺少模块,缺少库或者不兼容的库版本引起的链接器错误。因此,在本篇中我们就将介绍和程序构建相关的重要内容-链接。

2014-04-14 12:42:32 993

原创 CSI-S2:编写高速缓存友好的代码

在CSI-VII一篇中,我们了解了存储器系统的层次结构,并知道了层次结构自上而下使用了缓存(cashing)技术,因此我们着重介绍了存储系统中高速缓存的工作原理。本篇内容,我们通过分析几个代码实例来分析告诉缓存如何影响程序,并提出如何编写高速缓存友好代码的方法。 代码实例 1.      首先让我们看第一个方法transpose,这是一个矩阵转置函数,定义如下:        

2014-04-10 14:01:01 3025

原创 CSI-VII:存储器层次结构-神秘“金字塔”

前言         我们大多数的编码者并不清楚存储器层次结构和编写程序到底如何联系起来,或者只是简单的以为程序的执行无非和内存或者磁盘有关系。的确,我们可以把程序的执行简单的理解为从磁盘加载,然后再到内存中执行。但我们通过第一篇(CSI-I)的内容应该已经知道,程序的执行其实贯通了整个存储器层次结构,如果我们理解了系统是如何将数据在存储器层上上下下移动的,这将对我们提高程序的性能有所帮助。因

2014-04-10 13:12:38 5443

原创 CSI-VI:程序性能优化-写出快速、高效代码

前言         我们常常关注程序的性能,而程序性能的一个重要参考就是:运行时间,同时,我们都知道,这也是衡量一个算法好坏的重要标准。在一个程序保证正确的前提下,其运行得快慢往往决定了其性能的好坏。当然,并不是所有的程序都有很严格的性能要求,往往这些程序更加倾向于保证程序的正确性及稳定性,性能是其次需要考虑的。但对于某些实时性要求比

2014-04-10 11:11:35 1426

原创 CSI-V:测试程序的执行时间

前言         人们经常会问:“程序X在机器Y上运行得有多快?”,而我们一般的回答都是给定一个可以估算出该程序执行时间的一个大概的描述,比如:程序在N分钟跑出了多少的数据;据此我们可以推测程序的运行性能。而很少有人去关注程序到底运行的准确时间,除非我们需要了解程序是否在优化后的性能提升程度,或者想比较两个相似算法的执行效率。这时我们可能需要测量出许多运行数据,来得到程序运行时的CPE

2014-04-10 09:19:58 1519

原创 CSI-IV:程序的机器级表示-反汇编基础

CSI:程序的机器级表示-反汇编基础前言         看到标题,可能你就失去了继续阅读的兴趣,反汇编?跟我的工作有关?汇编还记的?反正写程序用不到?的确,你可能几年都没碰过汇编,对于汇编指令记得更是寥寥无几,又或者你的工作永远也不会用到汇编了,所以很少去关注。但我想学习汇编并不是要求我们去从事跟其相关的领域,而是给了我们另一个从机器角度去看待程序的方式。这样,当下次处理我们程序中的

2014-04-09 16:07:34 981

原创 CSI-III:信息的表示与处理-数值陷阱(二)

CSI:信息的表示与处理-数值陷阱(二)前言本篇继续上一篇,进行浮点数的介绍,浮点数的表示并不像整型那样简单,其在计算机中的运算也会使用更多地时钟周期。我们都知道计算机并不能绝对正确的表示浮点数,都是在允许的精度范围内进行计算,这是由计算的信息表示方式(0和1)所决定的。所以,对于浮点数的误差,我们更应该谨慎和小心,这样才能够在编写的程序中避免可能的病态问题。 谈到浮点数,或许你能

2014-04-09 15:27:28 2060

原创 CSI-II:信息的表示与处理-数值陷阱(一)

CSI:信息的表示与处理-数值陷阱(一) 前言         在程序中,我们经常会涉及到数值计算操作,比如从最简单的数值的表示,到加、减、乘除,再到移位等等,而对于这些往往我们都信心十足,常常用直觉告诉自己:这么做没错!但是,计算机并不是靠直觉来感知数值的,它可是个很严谨的家伙,如果你只是用直觉告诉它你要做的事,那么它也会告诉你:哼!想要我帮你做事情,那么就按我的规则来吧! 

2014-04-09 09:56:24 1788 1

原创 CSI系列-读<深入理解计算机系统>

《深入理解计算机系统》是由作者

2014-04-08 14:57:34 862 1

原创 CSI-I:计算机系统漫游-由hello程序所联想到的问题

前言         这章内容是对整本书内容的概括和描述,你可以通过本篇文章快速的了解本书所涉及的内容,了解学习书中所列内容的必要性。之后你就会明白学习本书其实是非常有趣的历程,你会知道计算机是怎么工作,自己的写的程序是如何工作的,以及对如何对程序进行优化,同时对进程、线程、虚拟存储器也会有更加清楚的认识。         其次,我要说明的是每章内容并没有必要的联系,所以你完全可以随心所欲

2014-04-08 14:31:46 1156

dynamic memory allocator

动态存储分配器,基于隐式链表的malloc简单模拟实现。

2014-04-14

空空如也

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

TA关注的人

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