代码改变世界

现代计算机体系架构带来的挑战

2013-04-18 00:21 by zmkeil, 1072 阅读, 0 推荐, 收藏, 编辑
摘要:---数据处理算法优化 1.综述各种数据处理,如排序、聚集、连接、索引等都是支持数据库操作的核心,各个操作也都有相应成熟的算法。如今多核计算机已经是发展的趋势,原先在单核上的经典算法并不能免费移植到现代计算机系统中,并获得高性能。因此如何改进算法,使其能够充分挖掘现代计算机体系架构的优势会是一个热点。相应的改进也可能改变人们之前的认识,如针对某种操作,以前可能以某一种算法为最优的,但到了多核... 阅读全文

Linux系统下的开发基础

2013-04-18 00:17 by zmkeil, 1332 阅读, 0 推荐, 收藏, 编辑
摘要:针对linux的开发无非两种:用户级别、内核级别。用户级别的开发也就是应用程序的开发,各种各样的应用程序数不胜数,开发方法也多种多样,这里当然不会介绍应用程序的开发方法,而只是说明其底层基础,也就是应用程序是如何在操作系统上运行的,操作系统做了哪些我们看不见的工作,了解这些工作有时对开发应用程序会有帮助,尤其是最求性能时,更要结合OS底层的实现。内核级别的开发相比较难些,一方面,l... 阅读全文

STRAIGHT关键技术研究

2013-04-18 00:10 by zmkeil, 1823 阅读, 2 推荐, 收藏, 编辑
摘要:在straight模型中,F0被看成是瞬时频率,从1999年straight模型被提出,到目前的TANDEM-STRAIGHT等各个版本中,先后有4种语音信号基频提取方法, 1)基于AM-FM,利用滤波器使判别值最大(1999a);2)fixed-point法(1999b);3)YIN auto-correlation法(02、05);4)spectral division法(08,for... 阅读全文

滤波器设计概要

2013-04-18 00:07 by zmkeil, 1872 阅读, 0 推荐, 收藏, 编辑
摘要:在信号系统领域,基于傅里叶变换的谱分析和滤波器设计是两个最基本的问题。在模拟系统中,常常用电子元件逼近所需的传递函数,而在数字系统中,则是用差分方程法去逼近所需传递函数。在硬件实现上,主要是用FPGA中的若干和积门来完成。1.因果稳定系统首先还是来看一下系统的性质。这里我们只讨论线性时不变系统(其概念之前讲过),这种系统的性质可完全由其冲激响应决定。在数字系统中,我们用冲激响应h(... 阅读全文

操作系统小结-Linux0.11

2013-04-17 23:39 by zmkeil, 730 阅读, 0 推荐, 收藏, 编辑
摘要:第一部分 基础内容1.操作系统基础操作系统是计算机硬件系统与用户程序间重要环节,理解操作系统的原理是编写优秀代码的基础。教课书中阐述的操作系统一般由5部分组成。 一个最简单的操作系统,可以不需要文件,不需要网络,只要实现多进程,且进程间也不需要通信,相互独立。那么这样一个简单的OS仅需要两块内容:进程管理、内存管理。这两方面内容是相辅相成,不可分割的,因为现在计算机系统的基本架构仍是指令存... 阅读全文

Netfilter开发概况

2013-04-17 23:35 by zmkeil, 1894 阅读, 0 推荐, 收藏, 编辑
摘要:关于Netfilter的资料网上很多,这里仅描述一些概况,把流程讲清楚,具体的细节可以很方便地跟踪到代码中去看。这个模块是构建在网络栈的网络层的,与底层架构基本没多大关系,所以要做平台间的移植也基本不需要做修改。1.Netfilter框架简述1.1框架Netfilter框架的主要思想是:在网络层数据包的传递路径中,插入一些点,执行额外的功能。如下图所示: 在每个点上注册一串... 阅读全文

OpenWRT平台搭建及简单应用

2013-04-17 23:29 by zmkeil, 5157 阅读, 0 推荐, 收藏, 编辑
摘要:1.OpenWRT平台搭建1.1环境准备系统Ubuntu12.04,先安装一些必要的软件包:gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-d... 阅读全文

第一次倒腾一番

2013-04-17 22:38 by zmkeil, 428 阅读, 1 推荐, 收藏, 编辑
摘要:搞了快一个小时了,本来准备看个电影的。 主要把博客分一下类,其实就是把自己做过的,感兴趣的方向放过来。说到兴趣,本人还是比较丰富的,喜欢的东西很多。 1.算法,ITer应该都有兴趣,很好玩啊,疯狂刷online judge。 2.计算机架构,现在主流的多核CPU,通用GPU越来越流行了,计算机的架构也在不断更新,相对应的操作系统、软件设计、算法设计等都在不断变化。这个问题好像偏向学术一点,也曾经花时间去看过很多论文,现在越来越没时间了,还是希望以后在这个版块里多写写东西吧。 3.硬件设计,有没有!咱可是电子专业出身,高中就焊接过超外差收音机,曾经一个寒假就在倒腾一个功放有没有,对硬... 阅读全文

Linux下编译使用自己的动态链接库-详解

2013-04-17 22:03 by zmkeil, 708 阅读, 0 推荐, 收藏, 编辑
摘要:最原始的方法gcc -shared -fPIC -g -o libvector.so addvec.c #-share表示生成动态库, -fPIC表示使用相对位置 gcc -g -c main2.cgcc -g -o p2 main2.o -L. -lvector #-L. is for ldexport LD_LIBRARY_PATH=/home/zmkeil/TEST/lib/reload/3 #export is for excute./p2以上是把libxx.so放在当前文件夹中,所以编译时 -L. “.”告诉编译器,动态库当前目录下, 执行前要export LD_LIBRARY_PA 阅读全文

读《算法导论》总结

2013-04-17 21:02 by zmkeil, 762 阅读, 0 推荐, 收藏, 编辑
摘要:算法基础---读《算法导论》前2部分小结1.算法基础算法的概念就不必多讲了,这里要指出的是:一般情况下,我们讲算法是面向大数据量的,算法的优劣通常是由其执行的时间复杂度来决定的(当然实际中还包括编程复杂度、计算机资源限制等等)。举个例子,对n个数据进行排序操作,算法1需2n2条指令,算法2需50nlgn条指令,若n=8,显然算法1更好,若n=1000000,假设计算机执行速度为109条指令/s,则算法1需要时间 2*(106)2/109 = 2000s算法2需要时间 50*106*lg106/109 = 100s显然算法2的效率更高,一般在评价上述两算法时,肯定会认为算法2的时间复杂度更优,因 阅读全文