`
Fhappy
  • 浏览: 68990 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
文章列表
Java有三大特性:封装、继承以及多态。很久以前,对于多态这一特性,我所了解的就是由方法的重载、重写所引起的。当一个对象调用一个方法时,我们会产生疑问,程序实际运行时调用的是哪一个方法?调用的是父类中的方法,还是子类本身的方法?如果一个类中有好几个重载方法,那么还涉及到选择调用哪一个重载方法版本。 现在从较深层次来理解Java的多态。 1、静态类型与实际类型 看下面的代码示例: package xmh0511; public class Test { public static void main(String[] args) { Test ...
  一、垃圾收集算法 1、最常见的判断对象是否存活的方法有引用计数法和根搜索算法。 (1) 引用计数法中,每一个对象都有一个引用计数器,当它被引用时,计数器+1,当一个引用释放时,计数器的值-1。引用计数法的特点是简单、高效,但是它解决不了对象间互相引用的问题。 (2) 根搜索算法:从根集合出发,根据引用关系,不断地往下搜索。搜索路径就构成了引用链,在引用链上的对象都是存活对象。而根集合通过引用链到达不了的对象(从图论的角度看,即是不可达的对象),就是不会再被使用的对象,可以被回收。 根集合包含的范围有: ① 虚拟机栈中的引用对象(栈帧中的本地变量表)。

[置顶] 密码技术

 
  数字化和网络化已成为当前技术和社会发展、进步的显著特征。Internet最大的特点就是开放性,网络中传输的字节流都是开放的,所以信息安全是很重要研究内容。 信息安全的内容涉及信息保密与认证、恶意软件与病毒、防火墙技术、网络安全、操作系统安全和数据库系统安全等方面的内容。 1.密码技术 为保密而采用密码技术,对重要机密信息进行加密以防止破译信息系统中的机密信息的技术手段。   1.1加密与解密 加密的办法就是使用数学方法重新组织数据或信息,使得除合法接收者外,其他任何人无法理解,或者在一定的时间内无法理解变化后的数据或信息。一般的,将加密前的数据或信息称为明文,而加密后的数据或信 ...
 数据库实体间多对多关系处理   数据库实体间有三种对应关系:一对一,一对多,多对多。 一对一关系示例:一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。 一对多关系示例:一个学生只属于一个班,但是一个学院有多名学生。 多对多关系示例:一个学生可以选择多门课,一门课也有多名学生。   这三种关系在数据库中逻辑结构处理分析:   1.一对多关系处理: 我们以学生和班级之间的关系来说明一对多的关系处理方法。
  数据库中主键与外键的理解   在关系型数据库中,数据结构有逻辑结构和物理结构。物理结构指存储在物理介质上的数据文件的结构。逻辑结构即关系,也就是一张张的二维表。表中的一列即为一个字段(属性),代表的是实体的一个属性。表中的一行即为一条记录。如:学生表中(学号,姓名,年龄,性别),在该表中有4个字段,代表学生实体的4个属性。表中的一行数据(001,张三,男,20),即一条记录,表示的是张三这个学生的信息。 在表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(主码),而主键包含的属性(字段)叫做主属性,其他的则为非主属性。 在这里说明一下,既然是“字段集”,那么 ...
哈夫曼编码压缩 压缩过程思路: 1、 统计文件中每个字节出现的次数,每一个字节由8bit组成,一个字节从0~255,分别统计每种字节的次数。 1、实现思路:创建一个长度为256的数组,数组的下标与byte的值对应,数组中的每一个数据元素表示一种字节出现的次数。  
  Android开发环境搭配 本博客介绍了在windows下搭配Android开发环境   一、下载Android SDK 1.在浏览器进入 http://code.google.com/android 网页,单击Android SDK链接,进入下载SDK。         二、为Eclipse安装Android开发插件
  Android开发:SQLite应用 SQLite是一个很小的关系型数据库,它虽然小,但是有比较全面的功能。也正是因为小,使用时占用的手机资源也就少,也就更加适用手机。 下面讲讲SQLite在Android开发中的简单应用: 在SQLite中的数据库为SQLiteDatabase类的对象,要得到一个SQLiteDatabase对象,一般需要借助SQLiteOpenHelper数据库辅助类。SQLiteOpenHelper是一个抽象类,使用时需要自定义一个类去继承该抽象类,同时要实现该抽象类中的抽象构造函数和抽象方法。 使用步骤如下:
今天把聊天系统的代码分析了一下,发现代码耦合度很高。各个类相互调用其中的方法,A类调用B类的方法,B类调用C类的方法,又发现C类还调用了A类的方法。如此带来的问题出现了,要想修改其中一个类,就得修改使用了该类的类,以致整个代码都需要修改,使人头昏脑胀。这样的高耦合的代码,可扩展性低,不可能做到增加一个新的功能而只需修改少量代码。我们不能只专注于代码本身,而是应该跳出代码,去思考和设计代码的结构。理想的模式是一个类去调用其他的各个类,增加一个新的功能时,只需增加新的类,原来的类也不用做太大修改。 设计代码结构的时候,可以考虑采用监听器模型。比如一个简单的聊天客户端程序,我们把通信模块和界面 ...
  异常处理有点像艺术性问题,没有标准的解决方案,只有靠平时的积累和经验总结。 有一点值得我们去琢磨,异常是由方法自己处理掉,还是将其抛给调用者。无论是选择异常都由自己处理掉,还是都抛给方法的调用者,都不是好的解决方案。 每个方法都有它的责任,都要尽量保证程序的健壮性。如何处理异常,要考虑到不能让自己崩溃,要避免因为自己处理掉异常,而给调用者造成死循环或者内存溢出等问题。   2.代码模块化 我们听说过契约式编程,一个方法就是一个承诺,只要按照规定的协议,有什么样的输入,就能得到与之对应的既定的输出。 一个方法要尽量的"单纯",它只是处理一个个的简单的问题。这样 ...
通信协议学习总结 在网络通信学习过程中,通信协议由消息格式和通信流程构成。 1.消息格式   XML语言,即可扩展文本标记语言。我们所熟悉的HTML语言(超文本标记语言)也是XML语言的一种。在通信过程中为什么要学习使用XML ...
1.Java中客服端的创建 1.语法格式:   java.net.Socket client = new java.net.Socket(String ip,int port); //其中参数ip为服务器的IP地址,port为服务器端口号。   然后是得到client的输入输出流对象。因为客户端读入数据时会出现阻塞,所以我们要将它放到一个独立的线程中去处理。 2.通信流程的重要性 在和同学的讨论过程中发现,通信流程很重要。程序有时候会出现这么一个问题,客户机在等待服务器发送来的消息,而服务器也在等待客户机发送来的消息。这个时候二者都阻塞而不能往下执行,导致程序就卡在 ...
网络通信,实际上就是在不同机器上的两个程序间的字节(本质上是二进制位)传输。 一般情况下,两个通信的程序中,一个是请求者,我们称之为客户端,另一个是等待被请求者,这就是服务器。 简单服务器创建格式比较简单,格式如下:   java.net.ServerSocket server = new java.net.ServerSocket(9090);   其中的参数9090,指的是创建服务器时所使用的端口号。 每台电脑上都有65536个端口号,服务器在指定的端口上等待客户机的连接进入。 创建好服务器对象后,接下来就是等待客户机连入: java.net.Soc ...
Java实现的坦克 设计思路: 坦克游戏主类:TankGame 控制自己坦克的类:MyTank 自己发出的炮弹的线程类:MyShell 敌人坦克运动线程类:EnemyTank 敌人炮弹线程类:Shell 监听敌人敌人炮弹队列的线程类:ShellThread
      一个程序中有多个线程在运行,我们需要监测各个线程的运行状态,看各个线程是否已经执行完成。如:要统计系统的各个根目录下的文件数目,一个统计线程去统计一个根目录下的文件数目。但是我们想让程序在所有统计线程统计完毕后再统一输出统计结果,这就需要用到"监视线程"模型。      下面一种"轮询"监视模型,把每一个统计类线程添加到一个队列中,用一个监视线程循环地询问队列中的线程,如果某一个线程已经执行完毕,则将它从队列中移除。       下面是统计文件的主类 import java.io.File; /** * 统计文件的主类 * @ ...
Global site tag (gtag.js) - Google Analytics