![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 77
chenzehe
这个作者很懒,什么都没留下…
展开
-
Java对象序列化
1、对象序列化 对象序列化就是将一个Java 对象转换为二进制的数据流,如果一个对象想要实现序列化,则该对象所在的此必须实现 Serializable 接口。此接口中没有任何方法,此接口只是一个标识,表示本类的对象具有了序列化的功能。 2、 如果对象想完成序列化功能,则依靠ObjectOutputStream 类和 ObjectInputStream 类,前者实现...原创 2012-05-06 23:08:04 · 69 阅读 · 0 评论 -
同步工具类之CyclicBarrier循环的barrier
CyclicBarrier在java.util.concurrent包下,是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。Cyclic...原创 2013-01-11 15:39:40 · 110 阅读 · 0 评论 -
同步工具类之Exchanger
Exchanger<V>,java.util.concurrent包下,用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据,V - 可以交换的对象类型。构造方法public Exchanger()创建一个新的 Exchanger。 方法摘要 V e...原创 2013-01-11 17:11:12 · 94 阅读 · 0 评论 -
Executor框架和线程池
简介 在JDK5后主要提供的多线程处理都在java.util.concurrent包中,多线程的主要抽象不是Thread,而是Executor,Executor为接口,定义在java.util.concurrent包下,只定义了一个方法:public interface Executor { void execute(Runnable command);}它提供...原创 2013-01-15 21:08:25 · 115 阅读 · 0 评论 -
线程池的使用
线程池实现类ThreadPoolExecutor ExecutorService接口扩展了Executor接口,添加了一些用于生命周期的管理方法,ThreadPoolExecutor继承了AbstractExecutorService,而AbstractExecutorService又实现了ExecutorService接口。 ThreadPoolExecutor的通...原创 2013-01-17 18:23:17 · 72 阅读 · 0 评论 -
携带结果的任务Callable和Future
Executor框架使用Runnable作为基本的任务表示形式,但是Runnable有一定的局限性:不能返回一个值或抛出一个受检查的异常。实际中很多任务都是存在延迟的,如执行数据库查询、从网络上获取资源或执行复杂计算先进,对于这样的任务,Callable是一种更好的抽象:它认为入口(call)将返回一个值并并可能抛出一个异常。Callable 定义:package j...原创 2013-01-21 21:37:38 · 92 阅读 · 0 评论 -
Java集合框架
集合是Java中是最常用的包,最常见的有Collection和Map两个接口的实现,Collection用于存放多个单对象,而Map用于存放Key-Value形式的键值对。 Collection中常见的又分两种常见类型的接口:List和Set,List支持存放重复的对象,而Set则不支持。List接口中常见的实现类有:ArrayList、LinkedList、Vector、和...原创 2013-01-25 20:19:50 · 61 阅读 · 0 评论 -
Java集合框架 Collection接口
1、ArrayListArrayList是List接口最常见的实现,其实现是基于数组的方式实现,无容量的限制,ArrayList是非线程安全的。如下代码为ArrayList的构造函数,当没有确定的容量大小时,默认长度为10:private transient Object[] elementData; public ArrayList(int initialCapacit...原创 2013-01-29 17:49:07 · 93 阅读 · 0 评论 -
Java集合框架 Map接口
1、HashMapHashMap是Map接口最常见的实现,HashMap是非线程安全的,其内部实现是一种基于一个数组和链表的结合体,如下table为HashMap中存储数据的字段:transient Entry[] table; static class Entry<K,V> implements Map.Entry<K,V> { f...原创 2013-01-30 18:34:48 · 70 阅读 · 0 评论 -
Java读取文件中单词进行排序并写到另一个文件中
支持 http://ifeve.com/tao-code-match-1/ ,用fork-join来实现读取一个文件中的单词(使用BufferedReader按行读取),排序(使用fork-join框架快速排序),写到另一个文件中(使用BufferedWriter進行寫入)代码在github上:https://github.com/chenzehe/wordsorter-javaSo...2013-12-04 11:12:13 · 843 阅读 · 0 评论 -
Comparable Comparator 的区别
注:本文为转载当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。 一、Comparator public interface Comparator<T> { /** * @return o1小于、等于或大于o2,分别返回负整数、零或正整数。 */ ...原创 2013-09-03 14:34:13 · 78 阅读 · 0 评论 -
Java NIO 使用实例
在JDK1.4之前,Java OutputStream的write方法、InputStream的Read方法和ServerSocket的accept()方法都是阻塞方法,JDK1.4之前Java引入了新的输入输出系统(New Input/Out,NIO),非阻塞是Java NIO实现的重要功能之一 。 1、Buffer缓冲区,传输数据使用,本质是一个数组,Channel...原创 2013-09-23 20:47:08 · 168 阅读 · 0 评论 -
Hadoop IPC RPC类中对请求的客户端缓存类ClientCache问题
Hadoop IPC RPC类中对请求的客户端缓存类ClientCache,是一个用HashMap进行对象缓存的类,但是对缓存操作时都使用synchronized关键字来加锁,如果使用ConcurrentHashMap进行进行缓存,在存取时会有更好的性能。ConcurrentHashMap是基于分段的锁分离技术实现,而且使用JUC中的显示锁来保证同步,多线程方面性能比HashM...2013-09-24 19:52:59 · 205 阅读 · 0 评论 -
用反射解析jar文件并执行里面Java代码
1、使用JarFile类读取jar包MANIFEST.MF中的Main-Class,如果没有设置Main-Class则调用方法中指定执行函数2、解压jar文件3、设置classPath4、利用反射取得class和method,并运行该method如下代码Run.java将被打包到jar文件中,使用Maven构建并打包: package com.chenzehe.runj...2013-10-30 23:25:36 · 499 阅读 · 0 评论 -
同步工具类之CountDownLatch倒数计数器
CountDownLatch类在java.util.concurrent包下,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。犹如倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当计数到达0时,则所有等待者或单个等待者开始执行。这直接通过代码来说明CountDownLatch的作用,可以实现一个人(也可以是多个人...原创 2013-01-10 20:59:51 · 160 阅读 · 0 评论 -
同步工具类之Semaphore 信号量
Semaphore可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。 Semaphore实现的功能就类似厕所有5个坑,假如有十个人要上厕所,那么同时能有多少个人去上厕所呢?同时只能有5个人能够占用,当5个人中的任何一个人让开后,其中在等待的另外5个人中又有一个可以占用了。另外等待的5个人...原创 2013-01-10 17:24:34 · 108 阅读 · 0 评论 -
Java泛型
1、 泛型为JDK1.5 之后出现的新特性,类中的属性类型由外部定义,而且在声明类的时候应该采取下面形式: class 类名称 < 泛型类型,泛型类型, ...>{ }如下类Point : package com.chenzehe.test;public class Point<T> { // T为泛型类型,也可以由其它字母声明...原创 2012-05-06 23:22:59 · 206 阅读 · 0 评论 -
Java IO 基础
Java IO之File类Java IO中所有的操作类跟接口都放在java.io包中,主要的类和接口有File、InputStream、OutputStream、Reader、Writer、Serialzable接口。 1、File类File类在整个IO中是独立的类,此类的主要功能是与平台无...原创 2012-06-04 20:51:27 · 101 阅读 · 0 评论 -
Java多线程基础
Java编写的程序都运行在 Java 虚拟机 (JVM) 中,在 JVM 的内部,程序的多任务是通过多线程来实现的。每用 java 命令启动一个 java 应用程序,就会启动一个 JVM 进程。在同一个 JVM 进程中,有且只有一个进程,就是它自己。在这个 JVM 环境中,所有程序代码的运行都是以线程来运行。 对于一个进程中的多个线程来说,多个线程共享进程的内存块,当...原创 2012-06-04 20:57:01 · 67 阅读 · 0 评论 -
Java 反射
1、 什么是反射 反射指程序在运行期间可以访问、检测、修改其自身的状态和行为的一种能力。 Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说 “ 自审 ” ,并能直接操作程序的内部属性和方法 。 允许程序于执行期 Reflection APIs 取得任何已知名称之 class 的內部信息,包括 packag...原创 2012-04-01 20:00:06 · 65 阅读 · 0 评论 -
JRebel使用
1、下载JRebel包 2、 Run — >Run As — >Run Configuration — > 选择相应的启动服务器— >JRE — > 在 VM arguments 输入如下参数: -noverify -javaagent:E:/chenzehe/workspace_b2b_3th/jrebel.jar-Drebel.sprin...原创 2012-04-09 14:28:57 · 68 阅读 · 0 评论 -
Java 注解 Anonotation
1、什么是注解Annotation表示一种注释的语法,在Java中最早提倡的是程序与配置相分离,而最新的理论是把所有配置直接写入到代码中,如果想完成这样的功能,则使用Annotation。 2、系统内建的Annotation 2.1 @Override重写父类的方法 2.2 @Deprecate...原创 2012-04-17 11:20:29 · 195 阅读 · 0 评论 -
JVM常量池和八种基本数据及字符串
常量池(constant_pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量和符号引用。运行时常量池是方法区的一部分。 在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储...原创 2012-11-15 18:57:00 · 324 阅读 · 0 评论 -
内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包
JavaBean JavaBean主要用于传递数据信息,其方法用于访问私有变量,且方法名符合某种规则。如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(Value Object),或“VO”。方法比较少。这些信息储存在类的私有变量中,通过set()、get()获得。 内省主要是对JavaBean进行操作。JavaBean内部的方...原创 2012-04-19 08:14:22 · 74 阅读 · 0 评论 -
java.util.concurrent.atomic原子操作类包
这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择一个另一个线程进入,这只是一种逻辑上的理解。实际上是借助硬件的相关指令来实现的,不会阻塞线程(或者说只是在硬件级别上阻塞了)。可以...原创 2013-01-04 20:04:53 · 243 阅读 · 0 评论 -
非阻塞同步机制与CAS操作
锁的劣势 Java在JDK1.5之前都是靠synchronized关键字保证同步的,这种通过使用一致的锁定协议来协调对共享状态的访问,可以确保无论哪个线程持有守护变量的锁,都采用独占的方式来访问这些变量,如果出现多个线程同时访问锁,那第一些线线程将被挂起,当线程恢复执行时,必须等待其它线程执行完他们的时间片以后才能被调度执行,在挂起和恢复执行过程中存在着很大的开销。锁还存在着其它一些...原创 2013-01-05 21:20:22 · 94 阅读 · 0 评论 -
Java级联调用方法的类设计
在Java方法设计时返回当前对象的引用(this),可以实现级联调用的设计,如StringBuilder类中的append方法: public StringBuilder append(String str) { super.append(str); return this; } 使用时可以sb.append("a")....原创 2013-11-13 14:10:07 · 753 阅读 · 0 评论 -
Java 枚举使用实例
Lucene Field类中使用枚举如下:声明抽象方法,在枚举实例中重写该方法。public final class Field extends AbstractField implements Fieldable, Serializable { public static enum Store { YES { @Override pub...原创 2013-07-01 15:30:31 · 154 阅读 · 0 评论 -
Java锁机制
内置锁 Java提供了一种内置的锁机制来支持原子性:同步代码块(synchronized 关键字 ),同步代码块包含两部分:一个作为锁的对象的引用,一个作为由这个锁保护的代码块。synchronized { //代码块} 每个Java对象都可以用做一个实现同步的锁,这些锁被秒为内置锁(Intrinsic Lock)或监视锁(Monitor Loc...原创 2013-01-09 20:26:11 · 206 阅读 · 0 评论 -
RPC框架简单实现
/* * Copyright 2011 Alibaba.com All right reserved. This software is the * confidential and proprietary information of Alibaba.com ("Confidential * Information"). You shall not disclose ...原创 2014-11-24 21:47:15 · 123 阅读 · 0 评论