- 浏览: 21934 次
- 性别:
- 来自: 长沙
-
最新评论
文章列表
学习android也有一段时间了,之前由于各种原因停了一段时间,回来再继续学的时候发现有些东西就生疏了,所以决定把自己学习的历程纪录下来,一方面加深理解,一方面便于以后再回来看。
如下图就是android的系统构架
从图中我们可以看到android系统是依靠linux提供的核心服务,这包括安全、内存管理、进程管理、网络、硬件驱动等等与硬件相关的服务。
我们再从底层往上看,可以看到存在于linux内核之上的是程序库和android的运行程序。libraries即是程序库,它们主要通过Android应用程序框架为开发者提供服务和支持。核心库有:
引用• 系统C 库- ...
在正文开始之前先贴上一张图片吧
这就是在上课时候讲的创建一个文档在里面写上任意字符,然后将后缀改为class编译的结果。
Java虚拟机的类装载就是指将包含在类文件中的字节码装载到JVM中, 并使其成为JVM一部分的过程。JVM的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块, 而不影响系统其他功能模块的正常运行。
举个简单的例子来说,大家都应该玩过魔兽争霸这款游戏,它的模式就很像类装载了,魔兽争霸的引擎就相当于JVM,而其中大量丰富的地图就类似于各种类文件,在我们游戏的过程中通过装载不同的地图而使我们得到的游戏体验也不尽相同。
JVM中类 ...
本来已经躺在床上准备呼呼大睡了,突然想到hash表的博客还没发表,于是大半夜爬了起来发了这篇文章,希望没有扰人清梦就好了。本来一直以为是早就发了的,然后今天晚上躺在床上才忽然意识到还没有发,最近过的有点浑浑噩噩的,悲剧啊。
这个代码是自己模拟哈希表实现的一个简单的学生统计系统,具体是实现的散列表中的开散列,即用数组保存一组数据,这一组数据中通过链表连结彼此,于是达到增加,查找,替换,删除的功能。
hash的预映射算法比较简单,即将学生学号的各个位相加,得到的个位数数值即为散列值,因为个位数所以数组大小为10.
private int handdata(Student stu) {
...
想想已经好久没写点什么了,前几天看TCP/IP协议看到了关于路由器和网桥可以构成局域网的相关内容,但是总是感觉路由器与网桥是差不多的东西,于是上网查了一些资料,了解了一下,今天就稍微写一下我对于这些的一些 ...
- 2011-09-19 22:21
- 浏览 1144
- 评论(0)
经过几天的努力终于把霍夫曼压缩弄好了,其中几经波折,2度误删,幸好每一天的备份都在,并不是重头再来。
霍夫曼压缩是根据霍夫曼编码,将源文件中的字节编码重组的压缩。即将所有字节通过霍夫曼树转化为01串,由于霍夫曼树的特性,频数多的字节必定只有很短的霍夫曼编码,所以文件得以压缩。它的压缩效率主要在于你的压缩信息文件的大小和文件自身。
霍夫曼压缩基于前篇文章的二叉树类编写,故部分代码略去。
根据映射建立霍夫曼树的方法
public void creatHuffmanTree(HashMap<Byte,Integer> hmap) {
if (hmap.isEm ...
主要使用自己上一篇文章中的自定义二叉树类实现了霍夫曼树,霍夫曼编码和讲一个数学算式建成树。
1.霍夫曼树和霍夫曼编码
霍夫曼树即最优二叉树,因为它每个叶子结点到根结点的距离与叶子结点的权值有关,往往此权值越大,它的路径越短,即带权路径长度要保持最小,所以叫它最优二叉树。
引用 (1)设给定的一组权值为{W1,W2,W3,……Wn},据此生成森林F={T1,T2,T3,……Tn},F 中的每棵二叉树只有一个带权为Wi的根节点(i=1,2,……n)。
算法思想为:
(2)在F中选取两棵根节点的权值最小和次小的二叉树作为左右构造一棵新的二叉树,新二叉树根节点的权值为其左、右子 ...
今天学习的是二叉树的相关知识。二叉树是树的一种,因为他每个结点最多只有2个子结点,所以叫做二叉树。链表实际上很像是树的特殊情况。二叉树有很多种,其中著名的就有二叉查找树和霍夫曼树。
引用二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于2。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。
以下是我的二叉树的结点类代码:
public class TNode {
private Object obj;
...
今天学习了链表的相关知识,并在此基础上写了一个自定义的双向结点类和链表类。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的结点之间的引用链接实现的。相比于线性表顺 ...
最近学习了多线程的相关知识,并基于多线程制作了一个2人对战的小游戏。在做这个的过程中对线程和线程之间的联系有了一个更深刻的认识,而且对键盘监听器和双缓冲也有了一定的认识。
废话不多说,下面是我的游戏(界面略难看,大家请忽略)
人物可以左右移动和跳跃,按向下键则是防御,减少30点伤害。
跳跃和自由落体的代码(使用线程)
public void Activity() {
if (KListener.command2 == KeyEvent.VK_UP) {
if (Jnum > 0) {
// 擦除之前的位置
g.setColor(Color ...
今天在昨天的基础上新增加了一些线程的知识,包括:线程的监听和线程的控制。
线程的监听即是在开始start()主要运行的线程之前,先开始一个监听的线程,类似鼠标监听器。在监听线程中可以设置小球间的碰撞。
以下是程序代码:
1.界面类中的代码
// 创建监听器对象(匿名内部类)
ActionListener alis = new ActionListener() {
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
// 启动监视 ...
今天学习的是线程的有关知识。在了解线程之前我们应该先了解进程是什么,进程就是进程是操作系统结构的基础,是一个正在执行的程序。而线程则是包含在进程之中的,线程之间可以交互数据,且一个进程中可以包含多个线程。
单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。而多线程程序则不然,它只会先通知一个线程开始执行,然后再依次通知下一个,并不会理会线程是否完成。
要使一个程序实现线程有两种方法:一种方法是将类声明为 Thread 的子类,该子类应重写 Thread 类的 run 方法。另一种方法是声明实现 Runnable 接口的类,该类然后实现 run 方 ...
这几天学习的是将画板中的画保存在文件中,并且可以用自制的画板读取。通过数据输入输出流用2种方法实现了这个功能,分别是通过直接保存各个形状的对象到队列和伪BMP的方式实现。
1.通过队列保存
这种方法比较直接,即将画出的每个图形,依次保存到队列中,并将此队列用流输出到文件中,由于形状对象和写入格式都是自己定义的,所以保存到文件中后也只能通过自制的画板读取图像。
储存的核心代码:
public void saveStudents(String path, QueueRealize<shape> list) {
try {
// /创建一个文件输出流
java.i ...
异常是在程序执行时发生的一种错误,它会打断指令的正常流程。
下图是java的API文档中各个异常相关的类的继承图:
上图中的强制异常是需要我们用try-catch语句来使其正常运行的。
最常见的强制异常是:FileNotFoundException,就是在创建文件或文件io流对象时路径不一定存在的问题。
其他的常见的有:NullPointerException,ArrayIndexOutOfBoundsException和OutOfMemoryError等等。
try-catch语句:
1.try {
} catch (Exception ef) {
...
今天继续学习了文件的简单操作,而今天得内容主要集中在I/O流的操作。
1.java.io.FileInputStream
它是从文件系统中的某个文件中获得输入字节,从而对这些数据进行操作的类。类本身只是简单地重写那些将所有请求传递给所包含输入流的InputStream的所有方法。
2.java.io.FileOutputStream
文件输出流是用于将数据写入File或FileDescriptor的输出流,而且某些平台一次只允许一个 FileOutputStream(或其他文件写入对象)打开文件进行写入。
3.IO流的简单应用:文件复制器
1复制文件的类
/**
* 复制文件的 ...
今天学习了java中关于文件的简单操作(主要是java.io.File类)。
1下面就是对于这个类中一些基本方法的简单试用:
//开始测试方法
//1.判断应用程序是否可以执行此抽象路径名表示的文件的方法
Boolean b =file.canExecute();
System.out.pr ...