java
文章平均质量分 79
「已注销」
这个作者很懒,什么都没留下…
展开
-
纪要
博客迁移到csdn原创 2020-03-25 19:41:15 · 130 阅读 · 0 评论 -
java 内存区域划分
堆(Heap)和非堆(Non-heap)内存按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,...原创 2013-10-30 11:39:32 · 104 阅读 · 0 评论 -
将博客搬至CSDN
很多人都认为 finally 语句块是肯定要执行的,其中也包括一些很有经验的 Java 程序员。可惜并不像大多人所认为的那样,对于这个问题,答案当然是否定的,我们先来看下面这个例子。清单 1. 1 public class Test { 2 public static void main(String[] args) { 3 Syste...原创 2020-03-26 20:13:50 · 140 阅读 · 0 评论 -
dubbo框架
alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo、hsf),jms消息服务(napoli、notify),KV数据库(tair)等。这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西来解决这些问题。 基本原理如图: 在我们的系统中,经常会有一些跨系统的调用,如在A系统中要调用B系...原创 2013-10-29 20:58:23 · 81 阅读 · 0 评论 -
java线程基础
ConcurrentHashMap是HashMap的线程安全版本,ConcurrentSkipListMap是TreeMap的线程安全版本在HashMap中首先由一个对象数组table是不可避免的,修饰符transient只是表示序列号的时候不被存储而已。size描述的是Map中元素的大小,threshold描述的是达到指定元素个数后需要扩容,loadFactor是扩容因子(loadFac...原创 2013-10-24 23:06:01 · 133 阅读 · 0 评论 -
java 动态代理 cglib
AOP有三种植入切面的方法:其一是编译期织入,这要求使用特殊的Java编译器,AspectJ是其中的代表者;其二是类装载期织入,而这要求使用特殊的类装载器,AspectJ和AspectWerkz是其中的代表者;其三为动态代理织入,在运行期为目标类添加增强生成子类的方式,Spring AOP采用动态代理织入切面。Spring AOP使用了两种代理机制,一种是基于JDK的动态代理,另一种是基于...原创 2013-10-24 22:58:02 · 69 阅读 · 0 评论 -
java 字符串split
使用StringTokenizer比使用Spring.split()提高接近一倍的性能。要是用indexOf来逐步查找,性能还能进一步提高25%左右。很显然,越接近底层的方法性能越得到满足。不过,这个只是在于对性能要求高的需求底下才有真正的意义。普通应用,String.split()足以 补充一点:使用String.indexOf()去扫描的时候,如果使用ArrayList或...原创 2013-10-24 08:23:57 · 78 阅读 · 0 评论 -
java队列
在JDK 5之前LinkedList就已经存在,而且本身实现都是一种双向队列。所以到了JDK 5以后就将LinkedList同时实现Deque接口,这样LinkedList就又属于Queue的一部分了。通常情况下Queue都是靠链表结构实现的,但是链表意味着有一些而外的引用开销,如果是双向链表开销就更大了。所以为了节省内存,一种方式就是使用固定大小的数组来实现队列。在这种情况下队列的大小是...原创 2013-10-22 13:56:51 · 64 阅读 · 0 评论 -
java线程池
在没有Future之前我们检测一个线程是否执行完毕通常使用Thread.join()或者用一个死循环加状态位来描述线程执行完毕。现在有了更好的方法能够阻塞线程,检测任务执行完毕甚至取消执行中或者未开始执行的任务。newSingleThreadExecutor:创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会...原创 2013-10-22 13:56:31 · 60 阅读 · 0 评论 -
java线程间通信
进程间通信的方法主要有以下几种: (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。 (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关 系 进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。 (3...原创 2013-10-18 00:24:20 · 494 阅读 · 0 评论 -
spring mvc PK struts2
Spring MVC PK Struts2 我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外)。Spring MVC和Struts2的区别:1. 机制:spring mvc的入口是servlet,而struts2是filter(这里要指出,filt...原创 2013-10-17 22:58:10 · 76 阅读 · 0 评论 -
java LRU实现
LRU缓存:LRU缓存利用了这样的一种思想。LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,也就是说,LRU缓存把最近最少使用的数据移除,让给最新读取的数据。而往往最常读取的,也是读取次数最多的,所以,利用LRU缓存,我们能够提高系统的performance.实现:要实现LRU缓存,我们首先要用到一个类 LinkedHashMap。 用这个类有...原创 2013-10-17 16:26:38 · 225 阅读 · 0 评论 -
spring中的线程池
多线程并发处理起来通常比较麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了。spring封装了java的多线程的实现,你只需要关注于并发事物的流程以及一些并发负载量等特性,具体来说如何使用spring来处理并发事务: 1.了解 TaskExecutor接口Spring的TaskExecutor接口等同于java.util.concurrent.Executor接口...原创 2013-10-17 11:24:02 · 94 阅读 · 0 评论 -
java泛型
Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多...原创 2013-10-15 19:49:37 · 43 阅读 · 0 评论 -
struts2异常日志记录
struts2配合log4j打印异常栈信息关于配置struts2全局异常后控制台无法打印异常信息问题[html] view plaincopy <global-results> <result name="error">/exception/error.jsp</result> </glob...原创 2013-10-14 20:40:22 · 380 阅读 · 0 评论 -
java程序里运行外部程序
使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序。 1. exec(String command) 2. exec(String command, String envp[], File dir) 3. exec(String cmd, String envp[]) 4. exec(String cmdarray[]) 5. exec(St...原创 2013-10-12 20:05:05 · 82 阅读 · 0 评论 -
Redis 集群方案
根据一些测试整理出来的一份方案:1. Redis 性能对于redis 的一些简单测试,仅供参考:测试环境:Redhat6.2 , Xeon E5520(4核)*2/8G,1000M网卡Redis 版本:2.6.9 客户端机器使用redis-benchmark 简单GET、SET操作:1. 1单实例测试1. Value大小:10Byte~1390Byte...原创 2013-10-12 07:34:32 · 65 阅读 · 0 评论 -
Arraylist Vector
ArrayList和Vector都是继承了相同的父类和实现了相同的接口。如下 Java代码 public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializ...原创 2014-01-15 11:46:08 · 189 阅读 · 0 评论 -
java future模式
Future介绍用过Java并发包的朋友或许对Future (interface) 已经比较熟悉了,其实Future 本身是一种被广泛运用的并发设计模式,可在很大程度上简化需要数据流同步的并发应用开发。 Future模式可以简单的看成是 Proxy 模式 与 Thread-Per-Message 模式 的结合,在Proxy模式中,用一个Proxy来代替真正的目标(Subject)生成,目...原创 2013-11-11 10:58:12 · 81 阅读 · 0 评论