2012年11月30日
摘要: 抽象过程 所有的编程语言都提供抽象机制。汇编语言是对底层机器语言的轻微抽象。C等面向过程语言是对汇编语言的抽象。这些语言所做的抽象仍要求在解决问题时要基于计算机的结构,而不是基于所要解决的问题的结构来考量。面向对象方式向程序员提供表示问题空间中的元素的工具。将问题空间中的元素及其在解空间的表示成为对象。这种思想的实质是,程序可以通过添加新类型的对象使自身适用于某个特定问题。这样,当你在阅读描述解决方案的代码时也是在阅读问题的描述。所以,面向对象OOP允许根据问题来描述问题,而不是根据运行解决方案的计算机来解决问题。 OOP的特性:(1)万物皆对象、(2)程序是对象的集合,它们通过对象发送... 阅读全文
posted @ 2012-11-30 22:08 husterchenji 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 问题描述一个文件中含有n个元素,只能遍历一遍,要求等概率随机取出其中之一。 先讲一个例子,5个人抽5个签,只有一个签意味着“中签”,轮流抽签,那么这种情况,估计这5个人都不会有异议,都觉得这种方法是公平的,这确实也是公平的,“抓阄”的方法已经有很长的历史了,要是不公平的话老祖先们就不干了。 或许有人觉得先抓的人中签的概率会大一些,因为要是前面的人中了,后面的中签概率就是0了,也可能有人会觉得后面抓的人更有优势,因为前面拿去了不中的签,后面中签的概率就大,那么我们就计算一下吧。问题分析 第一个人中签的概率是1/5, 第二个人中签的情况只能在第一个人未中时才有可能,所以他中的概率是4/5 X 1/ 阅读全文
posted @ 2012-11-30 20:10 husterchenji 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 实现线程最简单的做法是从java.lang.Thread继承,然后覆盖其run()方法。必须调用start()方法来启动线程。对于Thread对象,虽然在用户程序看来可能没有对它的引用,但这并不会使它成为垃圾回收器要回收的对象(其他的对象若没有引用会被回收),因为Thread对象需要注册自己(start函数作用),所以实际上在某个地方存在对它的引用垃圾回收器只有在线程离开了run()并且死亡之后才会把它清理掉。yield()方法可以在run()中用来暗示作出让步,但机制并不保证它一定会被采纳。sleep()使线程休眠给定的毫秒数时间。使用时必须放在try块中,因为sleep()可能会在休眠期间 阅读全文
posted @ 2012-11-30 14:31 husterchenji 阅读(168) 评论(0) 推荐(0) 编辑
摘要: Java流操作有关的类或接口:Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。处理对象 阅读全文
posted @ 2012-11-30 14:29 husterchenji 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 题目 有N件物品和一个容量为V的背包。第i件物品的重量是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。思路首先假设物品数 N = 6,容量 V = 10。容量数组 c 为:c[0]c[1]c[2]c[3]c[4]c[5]432324价值数组 w 为:w[0]w[1]w[2]w[3]w[4]w[5]129146813每种物品可以选择放或者不放。对于“将前 i 件物品放入容量为 v 的背包中”这个子问题,若只考虑第 i 件物品的策略(放或不放),那么就可以转化为一个只牵扯前 i-1 件物品的问题。如果不放第i件物品,那么问题就转化为“前i-. 阅读全文
posted @ 2012-11-30 14:05 husterchenji 阅读(158) 评论(0) 推荐(0) 编辑