Java进阶
文章平均质量分 84
单向街的夏天
每天进步一点点
展开
-
Object.clone()方法引申出的浅克隆、深克隆、java原型模式的实现、不可变类的实现
开发者在创建web程序和Web移动开发时应该不断的挑战自我,开发新技术。如今,触屏时代了终结了鼠标,大多数便携式应用改变了传统的台式机产品。为了帮助您快速的构建跨平台的移动应用和网页,本文收集了一些JavaScript框架。对此,你可以充分利用它。移动Web开发框架的主要特点:优化触屏设备:触屏设备代替了鼠标,给用户界面设计提供更多的挑战。移动Web开发框架给移动设备平台提供标准的原创 2012-07-13 22:46:19 · 1299 阅读 · 0 评论 -
关键字this、super、final、static、synchronized及 中断线程的方法
java中的this随处可见,用法也多,现在整理有四点:1 this是指当前对象自己。 当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中: public class Hello { String s = "Hello"; public Hello(String s){ Syste原创 2013-05-05 20:01:21 · 1433 阅读 · 1 评论 -
Reactor模式--VS--Proactor模式
一、 Reactor and ProactorIO读写时,多路复用机制都会依赖对一个事件多路分离器,负责把源事件的IO 事件分离出来,分别到相应的read/write事件分离器。涉及到事件分离器的两种模式分别就是 Reactor和Proactor,Reactor是基于同步IO的,Proactor是基于异步IO的。在Reactor模式中,事件分离者等待某个事件或者可应用或个操作的状态原创 2013-08-10 16:54:34 · 3304 阅读 · 0 评论 -
BIO--NIO-AIO(IOCP在Java7中的实现)
背景 在 Java 的早期,JVM 在解释字节码时往往很少或没有运行时优化。这就意味着,Java 程序往往拖得很长,其运行速率大大低于本地编译代码,因而对操作系统I/O 子系统的要求并不太高。 如今在运行时优化方面,JVM 已然前进了一大步。现在 JVM 运行字节码的速率已经接近本地编译代码,借助动态运行时优化,其表现甚至还有所超越。这就意味着,多数 Java 应用程序已不再受 CPU原创 2013-07-03 21:20:39 · 4888 阅读 · 3 评论 -
Java集合总结
一 前言:讲集合collection之前,我们先分清三个概念: colection 集合,用来表示一种数据结构(集合--逻辑结构的一种) Collection 集合接口,指的是 java.util.Collection接口,是 Set、List 和 Queue 接口的超类接口 Collections 集合工具类,指原创 2013-06-19 21:40:07 · 1142 阅读 · 0 评论 -
Java 项目中异常积累(持续更新)
1 org.hibernate.exception.DataException: Could not execute JDBC batch update 出现原因: 情况1: 将要插入到数据库中的字段内容长度超过了数据库中实际设置的长度。 情况2: 忘记写:request.setCharacterEncoding("UTF-8"); 自己原创 2013-06-21 20:33:01 · 2623 阅读 · 0 评论 -
Java虚拟机的深入研究(堆内存---栈内存 的分配浅析)
Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自原创 2013-07-10 17:16:36 · 1203 阅读 · 0 评论 -
代理模式与装饰模式的区别
一 概念理解 学习AOP时,教材上面都说使用的是动态代理,可是在印象中代理模式一直都是控制访问什么的,怎么又动态增加行为了,动态增加行为不是装饰器模式吗?于是 找了很多资料,想弄清楚这两者之间到底有什么区别。结果发现这一篇英文文章讲的很清晰,就翻译一下,供参考。 首先,让我们先看一下下面的这两个UML类图,他们分别描述了装饰器模式原创 2013-07-21 16:55:50 · 1029 阅读 · 0 评论 -
Map中根据value排序---输出value最大时所对应的Key
一 相关知识 Map內涵资料是Key -> Value的架构集合体,而Key是属于Set的架构集合体,也就是说Key的值是唯一的,而Value的值可以重复。 一般常用的子类是HashMap或TreeMap, 如果考虑效能的话,建议使用HashMap,原创 2013-05-23 12:02:01 · 3793 阅读 · 0 评论 -
Java是传值的
一示例理解 java程序只有传值,没有传引用,传地址的说法。但是传递的值可以是具体的数值,也可以是一个对象的引用。可以用这样一句话来描述“java函数是传值的,java函数传递的参数是对象的引用”。 我看到过几个解释这个问题的例子,不过个人感觉看过例子之后还是只知道是什么不知道为什么,停留在照猫画虎的水平上还是挺容易出问题的。所以举例子之前,先从jvm的实现原理上有个了解应当原创 2013-07-24 19:47:25 · 942 阅读 · 0 评论 -
Objetc中内部锁的应用及获取
一 内部锁概念及常见应用 JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的synchronized()方法类似于操作系统概念中的互斥内存块,在JAVA中的Object类型中,都是带有一个内存锁的,在有线程获取该内存锁后,其它线程无法访问该内存,从而实现JAVA中简单的同步、互斥操作。明白这个原理,就能理解为什么synchronize原创 2013-05-11 19:22:46 · 1123 阅读 · 0 评论 -
Java虚拟机的深入研究
1 Java技术与Java虚拟机说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:图1 Java四个方面的关系运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编原创 2012-12-01 12:22:32 · 683 阅读 · 0 评论 -
Object中 hashCode ---equals的完全理解
1 Java中equals()与hashcode()方法: hashcode看俩者是否“存放在同一个篮子里”,equals方法看二者内容是否一致(以拉链法来理解,数组中的元素是一个链表) a 如果俩个对象相同,即equals()方法,则二者hashcode()的值一定相同。 b 若俩个原创 2013-05-17 16:02:21 · 1216 阅读 · 0 评论 -
java中的null的剖析
(一) java中的null的学问剖析一、null是代表不确定的对象 Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。 但null值可以强制转换为任何java类类型。比如:int a = null;是错误的。Ojbect o = null是正确的。 Java中,变量的适用都遵循一原创 2013-06-15 00:47:26 · 3383 阅读 · 0 评论 -
JAVA虚拟机体系结构-------(深入Java虚拟机第五章总结)
JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。 Java虚拟机实例通过调用某个初始类的main()方法来运行原创 2013-07-06 16:39:38 · 878 阅读 · 0 评论 -
Java虚拟机的深入研究(堆区--vs--java方法栈)
1 java堆与栈的区别 栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和 multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内原创 2013-06-15 20:21:30 · 1586 阅读 · 0 评论 -
Java虚拟机的深入研究(内存管理---垃圾回收---JVM调优)
JVM学习笔记(一)------基本结构 从Java平台的逻辑结构上来看,我们可以从下图来了解JVM:从上图能清晰看到Java平台包含的各个逻辑模块,也能了解到JDK与JRE的区别对于JVM自身的物理结构,我们可以从下图鸟瞰一下:对于JVM的学习,在我看来这么几个部分最重要:Java代码编译和执行的整个过程JVM内存管理及垃圾回收机制下面将这两个部分进行详细原创 2013-07-05 10:42:48 · 1167 阅读 · 1 评论 -
Java性能优化篇
1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资源的目的;第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。2. 尽量避免随意使用原创 2013-06-27 22:26:18 · 820 阅读 · 0 评论 -
socket连接---多线程 线程池---TCP/IP半包、粘包、分包
一 ServerSocket工作原理: 客户端socket请求连接Serversocket的请求连接,按照请求顺序进入客户端连接请求队列(队列的容量是由操作系统完成的),ServerSocket的构造函数中的backlog就是用来指定请求队列的长度。 这个值会失效的三种情况:大于操作系统默认值|小于等于0|没有设置。 (见下面)原创 2013-05-11 19:03:47 · 7242 阅读 · 1 评论 -
Java中 bug注意
1 jvm整数和Integer.MAX_VALUE比较的bug[java] view plaincopyint max=Integer.MAX_VALUE; try{ max=Integer.valueOf(args[0]); }catch(Exception e){} while(readLine)原创 2013-07-03 23:30:51 · 1154 阅读 · 0 评论 -
Java分布式应用简介------I/O模型:阻塞与非阻塞、同步与异步
背景: 按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO,按照POSIX标准来划分只分为两类:同步IO和异步IO。如何区分呢?首先一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作,同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO服原创 2013-07-02 23:43:50 · 2431 阅读 · 0 评论