随笔分类 -  Java

摘要:二、依赖倒转原则 1.依赖倒转原则定义 i. 高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。 ii. 要针对接口编程,不要针对实现编程。 2. 依赖倒转原则分析a) 简单来说,依赖倒转原则就是指:代码要依赖于抽象的类,而不要依赖于具体的类;要针对接口或抽象类编程,而不是针对具体类编程。b) 实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要手段。c) 依赖倒转原则的常用实现方式之一是在代码中使用抽... 阅读全文
posted @ 2012-06-03 10:02 hnrainll 阅读(525) 评论(0) 推荐(0)
摘要:五、接口隔离原则1. 定义 i. 客户端不应该依赖那些它不需要的接口。 ii. 一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。2.分析 i. 接口隔离原则是指使用多个专门的接口,而不使用单一的总接口。每一个接口应该承担一种相对独立的角色,不多不少,不干不该干的事,该干的事都要干。 ii. 使用接口隔离原则拆分接口时,首先必须满足单一职责原则,将一组相关的操作定义在一个接口中,且在满足高内聚的前提下,接口中的方法越少越好。 iii. 可以在进行系统设计时采用定制服务的方式,即为不同的客户端提供宽窄不同的接口,只提供... 阅读全文
posted @ 2012-06-03 10:02 hnrainll 阅读(402) 评论(0) 推荐(0)
摘要:花絮 每天都在和面向对象打交道,但是我们在应用面向对象的时候感觉自己的面向对象技术应用的很合理?理解的很到位?应用的很到位?用的时候恰到好处?用的是否符合软件的发展趋势? 上面很多一连串的问题,没有把你搞晕吧!我想说的面向对象的应用也有面向对象的原则,一个程序员的编程素质从一个小例子几十行代码就可以展现出来。面向对 象编程是是面向对象的基础中的基础,废话不多说,你要遵循下面向对象的原则编程,那你的编程水平才会大幅度提高!思考 大家可以想象为什么你去面试的是时候一般会给你一小段程序让你去编写?这样的有什么意义?主考官的出题目的是什么?我们应该怎么显示自己代码素质? 我想这... 阅读全文
posted @ 2012-06-03 10:01 hnrainll 阅读(1051) 评论(0) 推荐(0)
摘要:常用快捷键:Ctrl+1 快速修复Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)Shift+Ctrl+Enter 在当前行插入空行(原理同上条)C 阅读全文
posted @ 2012-05-30 09:16 hnrainll 阅读(559) 评论(0) 推荐(2)
摘要:JNI介绍Java 本机接口(Java Native Interface (JNI))是一个本机编程接口,它是 Java 软件开发工具箱(Java SoftwareDevelopment Kit (SDK))的一部分。JNI允许 Java 代码使用以其它语言(譬如 C 和 C++)编写的代码和代码库。Invocation API(JNI 的一部分)可以用来将 Java 虚拟机(JVM)嵌入到本机应用程序中,从而允许程序员从本机代码内部调用 Java 代码。环境需求JNI 最常见的两个应用:从 Java 程序调用 C/C++,以及从 C/C++ 程序调用 Java 代码需要下列工具与组件:Jav 阅读全文
posted @ 2012-05-13 14:37 hnrainll 阅读(361) 评论(0) 推荐(0)
摘要:最近在研究android HAL层的一些相关内容,需要了解一些jni的知识,趁机研究了一下,这里跟大家分享一下:纯java下jni编程学习:1、java jni简介2、windows下java JNI编程技巧——JAVA调用c/c++(0)3、windows下java JNI编程技巧——JAVA调用c/c++(1)4、windows下java JNI编程技巧——JAVA调用c/c++(2)5、windows下java JNI编程技巧——JAVA调用c/c++(3)6、windows下java JNI编程技巧——JAVA调用c/c++(4)7、从 C/C++ 程序调用 Java 代码参考文章:h 阅读全文
posted @ 2012-05-11 12:12 hnrainll 阅读(309) 评论(0) 推荐(0)
摘要:Eclipse提供了一个可扩展插件的开发系统。这就使得Eclipse在运行系统之上可以实现各种功能。这些插件也不同于其他的应用(插件的功能是最难用代码实现的)。拥有合适的Eclipse插件是非常重要的,因为它们能让Java开发者们无缝的开发基于J2EE和服务的应用程序。Eclipse的插件也能帮助他们开发不同应用架构上的程序。下面列出来的是25个最好的免费Eclipse插件,可以让开发者更高效的工作 。提高代码质量的插件1. FindBugsFindBugs可以帮你找到Java代码中的bug,它使用Lesser GNU Public License的自由软件许可。2. CheckstyleCh 阅读全文
posted @ 2012-04-11 08:26 hnrainll 阅读(583) 评论(0) 推荐(0)
摘要:装饰模式(Decorator)1.装饰模式(Decorator)的定义:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。2.装饰模式以对客户端透明的方式动态的给一个对象附加上更多的责任。换言之客户端并不会觉的对象在装饰前和装饰后有什么区别。3.装饰模式可以在不创造更多的子类的模式下,将对象的功能加以扩展。4.装饰模式与类继承的区别:1)装饰模式是一种动态行为,对已经存在类进行随意组合,而类的继承是一种静态的行为,一个类定义成什么样的,该类的对象便具有什么样的功能,无法动态的改变。2)装饰模式扩展的是对象的功能,不需要增加类的数量,而类继承扩 阅读全文
posted @ 2012-03-23 19:24 hnrainll 阅读(14159) 评论(0) 推荐(1)
摘要:说明:装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点;(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象的索引(reference)(3) 装饰对象接受所有的来自客户端的请求。它把这些请求转发给真实的对象。(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。下表格列举了装饰模式和继 阅读全文
posted @ 2012-03-23 18:39 hnrainll 阅读(616) 评论(0) 推荐(0)
摘要://UDP发送import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class UdpSend { public static void main(String args[]) throws Exception{ //发送数据的套接字变量 DatagramSocket ds = null; //UDP的数据包变量 DatagramPacket dp = null; //实例化UD... 阅读全文
posted @ 2012-03-23 11:07 hnrainll 阅读(5459) 评论(0) 推荐(0)
摘要:import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;public class ThreadServer { public static void main(String args[]){ ServerSocket server = null; Socket client = null; try{ ... 阅读全文
posted @ 2012-03-23 09:04 hnrainll 阅读(766) 评论(0) 推荐(0)
摘要:字节流和字符流的相互转换1、从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。2、从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换。 阅读全文
posted @ 2012-03-22 22:02 hnrainll 阅读(6736) 评论(0) 推荐(0)
摘要:笔者在开发过程中,常常碰到过下面这些错误的用法:1,错误用法一:if (name == "") { //do something }2,错误用法二: if (name.equals("")) { //do something }3,错误用法三: if (!name.equals("")) { //do something } 我们来解说一下: 上述错误用法1是初学者最容易犯,也最不容易被发现的错误,因为它们的语法本身没问题,Java编译器编译时不报错。但这种条件可能在运行时导致程序出现bug,永远也不会为true,也就是时说,if块里 阅读全文
posted @ 2012-03-22 21:54 hnrainll 阅读(29404) 评论(0) 推荐(0)
摘要:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Test { public static void main (String args[]){ //实例化一个流,用于获取键盘输入 BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String theLine = null; ... 阅读全文
posted @ 2012-03-22 17:53 hnrainll 阅读(577) 评论(0) 推荐(0)
摘要:EchoClient.javaimport java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;public class EchoClient { public static v... 阅读全文
posted @ 2012-03-22 17:51 hnrainll 阅读(2292) 评论(0) 推荐(0)
摘要:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/27069Java多线程编程总结下面是Java线程系列博文的一个编目:Java线程:概念与原理Java线程:创建与启动Java线程:线程栈模型与线程的变量Java线程:线程状态的转换Java线程:线程的同步与锁Java线程:线程的交互Java线程:线程的调度-休眠Java线程:线程的调度-优先级Java线程:线程的调度-让步Java线程:线程的调度-合并Java线程:线程的调度-守护线程Java线程:线程的同步-同步方法J 阅读全文
posted @ 2012-03-13 09:58 hnrainll 阅读(523) 评论(0) 推荐(0)
摘要:相关读书笔记、心得文章列表 Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换。字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。( 一 )以字节为导向的 stream------InputStream 阅读全文
posted @ 2012-01-18 17:57 hnrainll 阅读(457) 评论(0) 推荐(0)
摘要:【案例1】创建一个新文件importjava.io.*; classhello{ publicstaticvoidmain(String[]args){ Filef=newFile("D:\\hello.txt"); try{ f.createNewFile(); }catch(Exceptione){ e.printStackTrace(); } } }【运行结果】:程序运行之后,在d盘下会有一个名字为hello.txt的文件。【案例2】File类的两个常量importjava.io.*; classhello{ publicstaticvoidmain(String[] 阅读全文
posted @ 2012-01-18 17:50 hnrainll 阅读(388) 评论(0) 推荐(0)
摘要:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Test{ public static void main(String args[]){ System.out.print("请输入内容:"); /* * 获取键盘输入方法一 Scanner input = new Scanner(System.in); String s = input.nextLin... 阅读全文
posted @ 2012-01-18 17:02 hnrainll 阅读(5512) 评论(0) 推荐(0)
摘要:本文将告诉你学习Java需要达到的25个目标,希望能够对你的学习及找工作有所帮助。对比一下自己,你已经掌握了这25条中的多少 条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该了解UML,尤其是 class,object,interaction以及statediagrams。 2.你需要学习Java语言的基础知识以及它的核心类库 (collections,serialization,streams,networking,?multithreading,reflection,event,handling,NIO,localizati 阅读全文
posted @ 2012-01-17 22:20 hnrainll 阅读(739) 评论(0) 推荐(0)