博文

Software(2012-02-05 13:57:00)

摘要:Network:
wireshark 



Linux:
gnu make
Cygwin/miniGW 这样可以接触到GNU Make......

阅读全文(1027) | 评论:0

MSTC 笔记(2)(2012-02-05 13:21:00)

摘要:From 陈正梁 (do-0b)
Being Digital


增强现实 augmented reality
虚拟现实 virtual reality
(3dx, 第六感技术)

SOLOMO : Social Local Mobile

Microsoft Courier Pad

门户 :看
搜索引擎:找

社会化

电影:<永无止境>
病毒视频
......

阅读全文(1234) | 评论:0

SICP学习计划_1(2012-02-02 17:56:00)

摘要:SICP确实是句句金句,只可惜实在买不起英文原版,现在在读的是裘宗燕的中译本。
很多用心读完了SICP并且无私地共享了笔记或者习题解法的都是高手,在网上查资源的时候发现很多这样的人,有大陆的有宝岛的,有日本的,有以色列的。着实让人激奋。
这个博客不错,收了。
_http://www.cppblog.com/cuigang/category/6355.html__......

阅读全文(1261) | 评论:0

语法糖、语法盐及其他(2012-02-02 11:43:00)

摘要:语法糖、语法盐及其他 在Wiki上看Peter Landin的介绍,看到syntactic sugar原来是出自这位仁兄 :) 当然是贬义的说。意思是在现有语法上抹了一层糖,实际上没本质区别。但是,量变到一定程度可能就是质变了,而且,任何大的改变最初可能都是从小的改变开始的,所以,恐怕也不能对语法糖衣一概不屑一顾。 比如,C++的类,从根上说,完全可以用C现有的机制实现,那么它是不是syntactic sugar呢? 还有一个有趣的比喻,说:其实如果脚板足够结实,完全可以不用鞋,但现在的鞋恐怕不能视作脚板的“语法糖衣”了,因为鞋有了更多的附加功能了。 再说syntactic salt,是指那些为避免容易犯的语法错误加上的额外语法限制。比如类型检查,再比如,有人建议在用end if, end while等代替现在的统一的end。当然,你要是非常仔细、小心,这些语法盐可能就是多余的,但谁敢夸这个口呢? 批评者开玩笑说:喜欢语法盐的同志们,一定都是受虐狂 :) 自己没事找事给自己下套玩 :) 语法糖精(Syntactic saccharin),是指语法上没必要的迭屋架床,根本没有带来使用的便利。 语法海洛因(Syntactic saccharin),是指过于喜欢操作符重载,表面上程序紧凑了,但最后程序可能成天书了

来源:(http://blog.sina.com.cn/s/blog_3eda66df01000afk.html) ......

阅读全文(2615) | 评论:0

模拟排序算法的过程(2012-02-02 00:07:00)

摘要:http://maven.smith.edu/~thiebaut/java/sort/
一个用Java虚拟机模拟排序过程的网站......

阅读全文(1261) | 评论:0

浮点数的比较(2012-02-02 00:05:00)

摘要:(摘自 http://blog.csdn.net/quickbasic411/article/details/5921420)

首先,这个不算原创,原文是洋文的,我翻译了一下 写这个文章的人绝对是个大师,虽然知识并不是很深奥,不过想法真的很不错,值得学习 两个月前忽然看见的这篇文章,昨天仔细读了一遍,翻译了一下,原文在此   http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm     这是我翻译的,里面有些地方翻译的不太对,有些地方我也不懂,你们谁要是看懂了就告诉我      浮点数的比较 Bruce Dawson 两数完全相等 整型数是精确的,浮点数并不是那样。举个简单的例子,0.2这个数无法用二进制的浮点数精确表示,并且有限的精度意味着微小的误差在经过多次操作后会改变结果。不同的编译器和CPU架构使用不同的精度存储临时数据,所以计算结果取决于你的运行环境。所以当你计算出结果并与你预期的结果进行比较时,会发现它们也许大不一样。   换句话说,如果你在计算中做如下比较: if (result == expectedResult) 这个比较的结果几乎不可能为真。如果结果确实为真,那说明这个结果是不稳定的——输入数据、编译器、CPU的微小改变也许会使程序产生截然不同的结果。 比较e-绝对误差 既然浮点数的计算引入了一点点不确定性,那么我们忽略它,方法就是判断两个数是否足够近。不管是通过什么方法(误差分析、测试、甚至是瞎蒙),如果你认为两个数只要相差不到0.00001就算相等的话,你可以将程序改成这样: if (fabs(result - expectedResult) < 0.00001) 这个最大的误差值称为(epsilon)   绝对误差可能有点用处,不过大家不常用它。大部分时候,误差是指的一个百分比。大家不用绝对误差的原因是,一个1.0的误差,你不知道结果是一百万还是0.1。   对于有限精度的浮点数还有一个更杯具的问题,就是如果绝对误差太小的话,有限的精......

阅读全文(11169) | 评论:4

数据结构之概念介绍(2012-02-02 00:02:00)

摘要:摘抄
由于原网页已不存在,图片失效         数据结构是计算机科学与技术专业的专业基础课,是十分重要的核心课程。所有的计算机系统软件和应用软件都要用到各种类型的数据结构。因此,要想更好地运用计算机来解决实际问题,仅掌握几种计算机程序设计语言是难以应付众多复杂的课题的。要想有效地使用计算机、充分发挥计算机的性能,还必须学习和掌握好数据结构的有关知识。打好“数据结构”这门课程的扎实基础,对于学习计算机专业的其他课程,如操作系统、编译原理、数据库管理系统、软件工程、人工智能等都是十分有益的。  为什么要学习数据结构   在计算机发展的初期,人们使用计算机的目的主要是处理数值计算问题。当我们使用计算机来解决一个具体问题时,一般需要经过下列几个步骤:首先要从该具体问题抽象出一个适当的数学模型,然后设计或选择一个解此数学模型的算法,最后编出程序进行调试、测试,直至得到最终的解答。例如,求解梁架结构中应力的数学模型的线性方程组,该方程组可以使用迭代算法来求解。   由于当时所涉及的运算对象是简单的整型、实型或布尔类型数据,所以程序设计者的主要精力是集中于程序设计的技巧上,而无须重视数据结构。随着计算机应用领域的扩大和软、硬件的发展,非数值计算问题越来越显得重要。据统计,当今处理非数值计算性问题占用了90%以上的机器时间。这类问题涉及到的数据结构更为复杂,数据元素之间的相互关系一般无法用数学方程式加以描述。因此,解决这类问题的关键不再是数学分析和计算方法,而是要设计出合适的数据结构,才能有效地解决问题。下面所列举的就是属于这一类的具体问题。  例一:学生信息检索系统。当我们需要查找某个学生的有关情况的时候;或者想查询某个专业或年级的学生的有关情况的时候,只要我们建立了相关的数据结构,按照某种算法编写了相关程序,就可以实现计算机自动检索。由此,可以在学生信息检索系统中建立一张按学号顺序排列的学生信息表和分别按姓名、专业、年级顺序排列的索引表,如图1.1所示。由这四张表构成的文件便是学生信息检索的数学模型,计算机的主要操作便是按照某个特定要求(如给定姓名)对学生信息文件进行查询。  诸如此类的还有电话自动查号系统、考试查分系统、仓库库存管理系统等。在这类文档管理的数学模型中,计算机处理的对象之间通常存在着的是一种简......

阅读全文(2370) | 评论:3

数据类型和抽象数据类型(2012-02-02 00:00:00)

摘要: 摘抄
还是不太明白 首先我们回顾一下在程序设计语言中出现的各种数据类型。   数据类型   数据类型是和数据结构密切相关的一个概念。它最早出现在高级程序设计语言中,用以刻划程序中操作对象的特性。在用高级语言编写的程序中,每个变量、常量或表达式都有一个它所属的确定的数据类型。类型显式地或隐含地规定了在程序执行期间变量或表达式所有可能的取值范围,以及在这些值上允许进行的操作。因此,数据类型(Data Type)是一个值的集合和定义在这个值集上的一组操作的总称。   在高级程序设计语言中,数据类型可分为两类:一类是原子类型,另一类则是结构类型。原子类型的值是不可分解的。如C语言中整型、字符型、浮点型、双精度型等基本类型,分别用保留字int、char、float、double标识。而结构类型的值是由若干成分按某种结构组成的,因此是可分解的,并且它的成分可以是非结构的,也可以是结构的。例如,数组的值由若干分量组成,每个分量可以是整数,也可以是数组等。在某种意义上,数据结构可以看成是“一组具有相同结构的值”,而数据类型则可被看成是由一种数据结构和定义在其上的一组操作所组成的。          抽象数据类型   抽象数据类型(Abstruct Data Type,简称ADT)是指一个数学模型以及定义在该模型上的一组操作。抽象数据类型的定义取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。   抽象数据类型和数据类型实质上是一个概念。例如,各种计算机都拥有的整数类型就是一个抽象数据类型,尽管它们在不同处理器上的实现方法可以不同,但由于其定义的数学特性相同,在用户看来都是相同的。因此,“抽象”的意义在于数据类型的数学抽象特性。   但在另一方面,抽象数据类型的范畴更广,它不再局限于前述各处理器中已定义并实现的数据类型,还包括用户在设计软件系统时自己定义的数据类型。为了提高软件的重用性,在近代程序设计方法学中,要求在构成软件系统的每个相对独立的模块上,定义一组数据和施于这些数据上的一组操作,并在模块的内部给出这些数据的表示及其操作的细节,而在模块的外部使用的只是抽象的数据及抽象的操作。这也就是面向对象的程序设计方......

阅读全文(1094) | 评论:0

Round Number 辑合(2012-02-01 23:58:00)

摘要:之一  From C-FAQ  Question 14.6 How do I round numbers?
http://c-faq.com/fp/round.html
The simplest and most straightforward way is with code like (int)(x + 0.5)C's floating to integer conversion truncates (discards) the fractional part, so adding 0.5 before truncating arranges that fractions >= 0.5 will be rounded up. (This technique won't work properly for negative numbers, though, for which you could use something like (int)(x < 0 ? x - 0.5 : x + 0.5), or play around with the floor and ceil functions.)You can round to a certain precision by scaling: (int)(x / precision + 0.5) * precision Handling negative numbers, or implementing even/odd rounding, is slightly trickier.Note that because truncation is otherwise the default, it's usually a good idea to use an explicit rounding step when converting floating-point numbers to integers. Unless you're careful, it's quite possible......

阅读全文(1148) | 评论:0

Round Or Omit(2012-02-01 23:57:00)

摘要:float aver; int sum, n; aver=sum/n;
We get the omit one.
float aver; int sum, n; aver=(float)sum/n;  //(In fact , it is ' (float)(sum) / n; ')
We get the round one.

Assign value directly -> omit int a; float b; b=3.51; a=b; print a and we get 3
And  '(int)float_number' also get the omitted one
!!! But use '%.f' we get the round one!!!  According to the C-FAQ 14.6, the simplest and most straightforward way to round number is to use this: ' (int)(x+0.5); ' However, it can be used to round number for positive numbers but not for negative ones. So a better one is: ' (int)(x<0? x-0.5 : x+0.5) '
To round to a certain precision by scaling: ' (int)(x / precision + 0.5)*precision
......

阅读全文(1193) | 评论:0