2012年12月18日
摘要: Linux的初学者常常混淆Linux中的硬链接(hard link)与符号链接(symbol link)的概念,分不清楚它们的区别。因此,本文将向读者全面介绍硬链接与符号链接,给予读者以全面的认识。1.Linux下的文件系统 1.1 Ext2文件系统结构 为了能够从本质上理解硬链接与符号链接,我们必须要对Linux下的文件系统有一定的认识。这一小节将向读者简要地介绍Linux下的文件系统(以Ext2文件系统为例)知识作为背景。 Ext文件系统是对minix文件系统的扩展,而Ext2文件系统是第二代扩展文件系统。磁盘分区大小可达4TB,磁盘布局采用了组块。 上图是Ext2文件系统结构示... 阅读全文
posted @ 2012-12-18 21:05 Chenny Chen 阅读(1451) 评论(4) 推荐(5) 编辑
摘要: 最长公共子序列 最长公共子序列(Longest Common Sequence,LCS)问题是典型的适用于动态规划求解的问题。LCS的定义是: 给定一个串,以及另外一个串,如果存在一个单调增的序列,对于所有,有,则称是的一个子序列。如果对于两个串,,既是的子序列,又是的子序列,那么就称是与的公共子序列,LCS就是指所有子序列中最长的那个子序列(可能有多个)。 使用动态规划求解LCS时,首先我们需要找出递推公式。令,,并设为它们的LCS。我们可以看到: (1)如果,并且,那么是与的LCS; (2)如果,并且,那么是与的LCS; (3)如果,并且,那么是与的LCS; 上述... 阅读全文
posted @ 2012-12-18 17:25 Chenny Chen 阅读(1272) 评论(2) 推荐(0) 编辑
  2012年12月11日
摘要: 题目:SHow that a full parenthesization of an n-element expression has exactly n-1 pairs of parentheses.解答:n个元素的表达式在完全没有括弧化之前,可以看成有n个独立元素。括弧化的结果是将原来两个独立的元素合并成一个独立的元素。那么n元素的表达式完全括弧化的操作,即让此具有n个独立元素的表达式,变成只有一个独立元素的表达式。一对括弧能够减少一个独立元素,因此,总共需要n-1对括弧。此解答为个人想法,如有错误,见谅。 阅读全文
posted @ 2012-12-11 16:11 Chenny Chen 阅读(989) 评论(0) 推荐(0) 编辑
  2012年12月10日
摘要: 文件stat结构体中st_size成员 对于所有的文件类型,st_size成员对其中的普通文件、目录以及符号链接有实在的意义。其中,对于普通文件而言,st_size记录了该文件的实际大小;对于目录而言,st_size的值为16或者512的倍数;对于符号链接而言,st_size的值为符号链接所指的路径的长度。例如lib->usr/lib,则st_size的值即为7。 在某些Unix系统中,st_size的值对pipe等文件也有意义,表示当前pipe中可以读取的字节数。Holes产生的原因 当我们使用lseek函数,在超出文件的原文件尾的某个位置处开始写入字节时,为了节省磁盘空间,它们之间未 阅读全文
posted @ 2012-12-10 21:08 Chenny Chen 阅读(3713) 评论(0) 推荐(0) 编辑
  2012年10月24日
摘要: 6.关联分析6.1.Problem Definition 关联分析(Association Analysis)是指从大量的数据集中,搜索出有强关联的规则(Rule),但是这个计算过程通常计算成本很高。建立关联规则的两个重要判据是:Support以及Confidence。Support简单地讲,就是指在数据集中,包含规则中所有Item的条目越多,Support越大,就越能够排除偶然因素的影响。而Confidence则是,当规则前件出现时,规则后件出现地越多,Confidence越大。我们在关联分析中所要做的工作,就是找出所有超过特定阈值的关联规则。 但是对于一个条目,它包含了许多个Item,.. 阅读全文
posted @ 2012-10-24 22:20 Chenny Chen 阅读(701) 评论(0) 推荐(0) 编辑
  2012年5月1日
摘要: 在我们写的socket程序中,一般都会使用网络套接字API,比如send()、accept()、receive()等函数,那么这些函数在Linux操作系统中是如何实现的呢?我们将通过分析代码对其进行深入的研究。本文中所使用的Glibc库版本为2.0.111,Linux内核版本为Linux 1.2.13。1.用户层代码 在程序中我们使用了accept()函数,这个函数的实现是在Glibc库,即GNU的C库中实现的。具体代码是:1 //glibc-2.0.111\sysdeps\unix\sysv\linux\accept.S2 #define socket accept3 #defi... 阅读全文
posted @ 2012-05-01 21:22 Chenny Chen 阅读(2685) 评论(1) 推荐(1) 编辑
  2012年4月12日
摘要: 上午 上午刚到实验室的时候,先写完了一个程序,在USACO上一次就pass,虽然比较水,但是还是很开心。然后又打电话跟女朋友沟通了一些感情上的问题,说完之后,感觉心情明显好得多了。要不然,可能今天一整天就会用写程序去打发它了。 之后阅读了>的single-source shortest paths章节中的两个算法:Bellman-Ford算法与Dijkstra算法。其中,Bellman-Ford算法的效率没有Dijkstra的效率高,但它可以去解决存在negative-edge的情况。 在Bellman-Ford算法中,首先需要initialize这个single source图。然后循 阅读全文
posted @ 2012-04-12 21:02 Chenny Chen 阅读(380) 评论(5) 推荐(0) 编辑
  2012年3月15日
摘要: Windows内核中执行体层负责各种与管理和策略相关的功能,而内核层(或微内核)实现了操作系统的核心机制。内核层的进程和线程对象 内核层中线程和进程中的数据结构分别是KPROCESS和KTHREAD。其中KPROCESS的定义为:typedef struct _KPROCESS { //这两个头部很少被使用 DISPATCHER_HEADER Header; //用于当该进程参与性能分析(profiling)时,作为一个节点加入到全局的性能分析进程列表(KiProfileListHead) LIST_ENTRY ProfileListHead; //上下文切换时会用到的字段 //第一项... 阅读全文
posted @ 2012-03-15 17:33 Chenny Chen 阅读(428) 评论(0) 推荐(0) 编辑
  2012年2月28日
摘要: 新建工程 我们按照上一节所说的办法,新建一个工程,工程名称命名为:First,即我们的第一个Qt应用程序。在弹出的“Qt GUI Project Wizard”中,我们直接下一步,在最后一步的时候,我们在Base Class一栏中,选择QWidget(基础窗口部件): 最后点击Finish,VS就为我们建立了新的工程,在Windows自带的解决方案资源管理器中,我们可以看到工程所包含的所有文件: 其中,First.ui文件可以被Qt Designer所打开,对其进行部件拖曳操作,可视化地对我们的窗口进行编辑,其所对应的文件是ui_first.h,一般地我们不能手动修改ui_first.h,而是 阅读全文
posted @ 2012-02-28 15:04 Chenny Chen 阅读(2231) 评论(3) 推荐(1) 编辑
  2012年2月27日
摘要: Qt是Nokia公司所开发的跨平台应用程序和UI开发框架,我们可以使用它很方便地开发出我们所需要的应用程序。最新的Qt已经是4.8.0版本了,本文以后将用VS2008+Qt来进行所有的应用程序开发。首先我们将介绍如何配置环境。 首先安装VS2008,最好安装完成之后打上SP1补丁,再安装上我们常用的VC助手(它可以给我们的编程带来很大的方便),之后可以从Nokia的官网上下载我们所需要的文件:http://qt.nokia.com/downloads 我们找到所需要的文件Qt libraries 4.8.0 for Windows (VS 2008, 273 MB)以及Qt Visual S. 阅读全文
posted @ 2012-02-27 21:25 Chenny Chen 阅读(5600) 评论(12) 推荐(2) 编辑