java
haoshenwang
Alibaba大神
展开
-
java中"<<",">>",">>>"等左移右移符号辨析
java中有以下移位运算规则:"public class Test { public static void main(String[] args) { int a = -1; System.out.println(Integer.toBinaryString(a)); a <<= 2;//a左移两位 System.out.println(Integer.t原创 2013-10-23 22:21:53 · 1186 阅读 · 0 评论 -
图的所有简单算法实现
包括邻接链表、有向无向图、带权图、增删顶点和边、查找、连通、DFS和BFS等。这只是一个最初版本,有些复杂的算法还没有实现。package structure;//图的邻接链表的节点public class GraphListNode { private int vertex;//图的顶点 private int weight;//边的权重 private boolean vis原创 2014-06-08 12:54:02 · 1855 阅读 · 0 评论 -
Java 俄罗斯方块
参照网上小翼的教程做的。由于ps能力不足,所以没有实现换皮肤的功能,其他功能都实现了。下载地址:http://download.csdn.net/detail/woshiwanghao_hi/8542165原创 2015-03-28 17:06:12 · 1964 阅读 · 0 评论 -
Java 嵌套类和内部类示例<二>
package nested_inner_class;public class StaticNestedTest2 { public static void main(String[] args) { //不需要实例化外部类,可以直接创建内部类对象 Outer2.Nested1 nested1 = new Outer2.Nested1(); System.out.println原创 2015-07-12 15:50:45 · 942 阅读 · 0 评论 -
Java 嵌套类和内部类示例<一>
package nested_inner_class;public class StaticNestedTest1 { public static void main(String[] args) { //不需要实例化外部类,可以直接创建内部类对象 Outer1.Nested1 nested1 = new Outer1.Nested1(); System.out.println原创 2015-07-12 15:48:47 · 948 阅读 · 0 评论 -
Java 反射常用方法示例
import java.lang.reflect.Constructor;import java.lang.reflect.Method;class Point{ int x; int y; public Point(){ x = 1; y = 2; } public void setX(int x) { this.x = x; } public voi原创 2015-07-12 16:39:42 · 983 阅读 · 0 评论 -
Java 自定义注解释义
package annotation;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;//RUNTIME表示运行时Person注解也存在//@Retention(RetentionPolicy.CLASS)@Retention(RetentionPolicy.RUNTI原创 2015-07-12 17:50:47 · 832 阅读 · 0 评论 -
Java 嵌套类和内部类示例<三>
package nested_inner_class;public class StaticNestedTest3 { public static void main(String[] args) { //奇特的内部类实例化方法 Outer3 outer3 = new Outer3(); Outer3.Nested nested = outer3.new Nested();原创 2015-07-12 15:52:43 · 1088 阅读 · 0 评论 -
Java类加载器:静态变量初始化
先看两个例子:package wh;class Singleton{ public static Singleton singleton = new Singleton(); public static int a; public static int b = 0; private Singleton(){ a++; b++; } public static原创 2015-11-02 21:10:14 · 2780 阅读 · 0 评论 -
Java中finalize方法
1.finalize的工作原理:一旦垃圾回收器准备好释放对象占用的存储空间时,将首先调用其finalize方法,并且在下一次垃圾回收发生时,才会真正的回收对象占用的内存。2.之所以要有finalize方法,是由于在分配内存时可能采用了类似C语言的方法(一般是native method),此时需要在finalize方法中进行一些清理的工作。原创 2016-03-17 21:19:06 · 529 阅读 · 0 评论 -
java中普通变量、静态变量、静态代码块初始化的顺序辨析
1.普通变量的初始化看如下程序class Window{ public Window(int maker) { System.out.println("Window("+maker+")"); }}class House{ Window w1 = new Window(1); public House() { System.out.println("House(原创 2013-10-24 12:51:30 · 5959 阅读 · 3 评论 -
最简洁的Java垃圾回收总结
Java垃圾回收检查垃圾的方法:引用计数,引用链垃圾回收的方法:标记清除(只清除,不复制,不整理),标记复制(清除,复制到另一块内存),标记整理(清除,在同一块内存中进行碎片整理)虚拟机新生代使用标记复制,老年代使用标记整理原创 2016-09-30 17:32:10 · 468 阅读 · 0 评论 -
Java-Abstract Class and Interface
1.包含abstract抽象方法的类就是抽象类,此时抽象类必须使用abstract修饰,来表示它是抽象类。2.抽象类使用abstract来修饰,其中必须至少包含一个抽象方法。抽象类也可以包含自己的变量和具体实现方法。实际上,抽象类时类和接口的混合。3.继承抽象类必须实现抽象类中的abstract抽象方法。4.abstract是抽象类,它的方法可以不全是抽象方法,但必须包含抽象方法;而i原创 2016-10-01 11:17:58 · 373 阅读 · 0 评论 -
Java基本集合类关系图
原创 2016-10-01 22:22:06 · 840 阅读 · 0 评论 -
hashCode和equals方法辨析
首先理解HashSet里面的元素定位过程:1.首先调用元素的hashCode()方法来得到元素的哈希值,用来确定当前元素在哪个bucket里面(可以推出如果两个元素的hashCode不一样,则bucket不一样,则肯定不相等)。2.每个bucket是一个链表,用来存放所有具有相同hashcode的元素。接下来调用当前元素的equals()方法,在当前元素的hashcode对应的bucket原创 2016-10-01 23:42:15 · 487 阅读 · 0 评论 -
Java 强引用,软引用,弱引用,虚引用
从JDK1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4中级别由高到低依次为:强引用、软引用、弱引用和虚引用。强引用:是使用最普遍的引用。如果一个对象具有强引用,垃圾回收器绝不会回收它。软引用(SoftReference):如果内存空间足够,垃圾回收器就不会回收它;如果内存空间不足,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被原创 2016-10-02 13:22:04 · 438 阅读 · 0 评论 -
KMP算法(简单的说)
KMP算法的核心就是求解next数组,具体参考http://www.cnblogs.com/10jschen/archive/2012/08/21/2648451.htmlpackage algorithm;//字符串匹配类public class StringMatcher { //朴素字符串匹配,t:要匹配的目标字符串,pattern:匹配的模式字符串 public stati原创 2014-06-08 17:56:18 · 1032 阅读 · 0 评论 -
呕心沥血的java复杂项目(包括自定义应用层协议、CS多线程、多客户端登录、上下线提醒等等)
呕心沥血的java复杂聊天室(包括自定义应用层协议、CS多线程、多客户端登录、上下线提醒等等)建议大家先下源代码,导入到Eclipse,然后运行服务器和多个客户端,这样有个不错的体会。下载地址:http://download.csdn.net/detail/woshiwanghao_hi/7320927。原创 2014-05-09 12:26:40 · 4584 阅读 · 2 评论 -
c++和java中关于如何调用父类方法和子类方法的辨析
首先观察下面两个程序(分别使用vc6.0和myecllipse10测试)#include using namespace std;class A{public: void f() { cout<<"class A "<<endl; }};class B : public A{public: void f() { cout<<"class B "原创 2013-10-25 21:38:08 · 1587 阅读 · 0 评论 -
用java源代码学数据结构<一>: Collection , Iterator
曾经某位大神说过:学习编程的最好方法就是看源代码。集合类无疑是学习数据结构好的原材料。开始准备用c++的STL,由于本人能力有限,看了下vc的STL源代码,什么一重指针,二重指针,n重指针漫天都是,所以只好放弃。java没有指针,学习难度无疑大大降低,STL就只有等以后能力提高点再说了。 集合类的源代码都可以在jdk安装目录下的src.zip文件中找到,由于篇幅有限,删除了大量非必要原创 2013-10-26 21:55:30 · 1506 阅读 · 0 评论 -
用java源代码学数据结构<三>:ArrayList 详解
查看java文档可以知道,抽象类AbstractList有两个实现子类:Vector和ArrayList。二者的内部结构、基本方法大致相同.只不过Vector是线程安全的,ArrayList是不安全的。ArrayList相比于一般的Array,就是多了一个变长的功能,但相应的时间效率有所下降。 由于ArrayLIst和Vector很想,大部分代码基本一致,就不在提供详细的注释,可原创 2013-10-27 10:57:25 · 2251 阅读 · 0 评论 -
用java源代码学数据结构<二>: Vector 详解
/* 1.Vector可以随着用户插入或删除元素来改变自己的大小。 2.Vector类通过维护capacity(函数)和capacityIncrement(变量)来优化存储。 3.capacity总是至少和vector的size一般大(capacity>=size)。 4.通过在向vector插入元素之前增大capacity,可以减少很大的内存分配时间。*/package java.u原创 2013-10-27 00:15:39 · 2676 阅读 · 1 评论 -
用java源代码学数据结构<四>: LinkedList 详解
在数据结构中有基本数据类型:线性表。线性表又可以分为顺序表(数组表)和链表。java中典型顺序表有Vector和ArrayList,链表类就是LinkedList。 个人体会: 1.要想gc(垃圾回收器)回收对象,普通的对象只需要设置为null即可,而复合型对象(如Node),它包含两个指针对象和一个元素,必须全部设置为Null才能回收2.在链表节点进行prev、n原创 2013-10-28 10:37:45 · 2832 阅读 · 2 评论 -
用java源代码学数据结构<五>: Stack 详解
Stack类较为简单,它的主要基础是先进后出,注意Stack继承自Vector类,所以它的内部实现基本上都是直接调用Vector的方法,难度较小。package java.util;publicclass Stack extends Vector { //无参构造函数 public Stack() { } /** * Pushes a原创 2013-10-28 19:20:49 · 1387 阅读 · 2 评论 -
java中“0x”表示的含义
public class Test { public static void main(String[] args) { int a = 0x2f;//小写十六进制(等价于0x002f) System.out.println(Integer.toBinaryString(a)); int b = 0x2F;//大写十六进制 System.out.println(I原创 2013-10-23 22:37:19 · 28366 阅读 · 0 评论 -
java中"=="与"equals"辨析
首先看下面两个例子public class Test { public static void main(String[] args) { Integer n1 = new Integer(10); Integer n2 = new Integer(10); System.out.println(n1==n2); System.out.println(n1.equal原创 2013-10-23 21:24:22 · 900 阅读 · 0 评论 -
用java源代码学数据结构<六>: HashSet HashMap 详解
散列表是数据结构中的重要技术,散列表的最大优点在于便于查找,缺点在于插入删除较为麻烦。java中很多数据类型如hashMap,hashTable,hashSet基本实现就是采用散列表技术。原创 2013-10-29 12:56:52 · 2193 阅读 · 0 评论 -
用java源代码学数据结构<七>: BST
/* * 以int类为例 * 其它的类必须能够比较 * *///二叉搜索树的节点点 class BSTNode{ int item; BSTNode lc; BSTNode rc; BSTNode p; public BSTNode(int item){ this.item = item; } } public class BS原创 2013-10-29 15:01:00 · 1127 阅读 · 0 评论 -
jsp单页面数据库查询模板:支持分页、排序、简单搜索、设置每页显示页数功能
不多说,直接贴代码show.jsp(显示页面)<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%> ">原创 2014-04-15 17:39:53 · 5099 阅读 · 0 评论 -
java中利用反射机制绕开编译器对泛型的类型限制
首先看下面这个例子 public static void main(String[] args) { ArrayList al1 = new ArrayList(); al1.add(1); ArrayList al2 = new ArrayList(); al2.add("hello"); //int型链表和string型链表,结果为true System.out.p原创 2014-05-03 14:22:53 · 2394 阅读 · 0 评论 -
java反射机制简介
1.字节码。所谓的字节码就是当java虚拟机加载某个类的对象时,首先需要将硬盘中该类的源代码编译成class文件的二进制代码(字节码),然后将class文件的字节码加载到内存中,之后再创建该类的对象2.java反射的基础是Class类(注意不是小写的class),Class类实例代表着内存中的一份字节码。常见的获取Class类对象的方法如下(第一种为对象的方法,第二种为类的方法):原创 2014-05-03 14:06:37 · 1209 阅读 · 0 评论 -
java实现简单web服务器(分析+源代码)
在日常的开发中,我们用过很多开源的web服务器,例如tomcat、apache等等。现在我们自己实现一个简单的web服务器,基本的功能就是用户点击要访问的资源,服务器将资源发送到客户端的浏览器。为了简化操作,这里不考虑资源不存在等异常情况。web服务基于的是HTTP协议,用户在浏览器的地址栏输入要访问的地址,服务器如何得到该地址是个关键。先看下一般的HTTP请求和响应报文的一般格式:原创 2014-05-03 21:45:29 · 9409 阅读 · 3 评论 -
IDEA常用快捷键
IDEA 常用快捷键Run cmd + 4 Debug cmd + 5 Terminal option + F12 Distraction Free Mode cmd + shift + F12 Move the current line of code cmd + s...原创 2018-06-26 19:34:04 · 506 阅读 · 0 评论