java
文章平均质量分 89
10年新兵
路虽远,行者将至。事虽难,做则必成。
展开
-
JNDI 的理解
JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之中的一个,不少专家觉得,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。 那么,JNDI究竟起什么作用?//带着问题看文章是最有效的 要了解JNDI的作用,我们能够从“假设不用JNDI我们如何做?用了JNDI后我们又将如何做?”...转载 2018-04-18 17:08:58 · 127 阅读 · 0 评论 -
Java clone方法深拷贝浅拷贝完全解析
Java中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?1 使用new操作符创建一个对象2 使用clone方法复制一个对象那么这两种方式有什么相同和不同呢? new操作符的本意是分配内存。程序执行到new操作符时...转载 2018-04-23 11:10:57 · 169 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别|线程安全与线程不安全
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字...转载 2018-04-13 17:33:59 · 294 阅读 · 0 评论 -
JAVA常量池
java常量池技术 java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,常量池存在于方法区中。String类也是java中用得多的类,同样为了创建String对象的方便,也实现了常量池的技术。测试代码如下:public class Test{pub...转载 2018-04-13 17:39:59 · 312 阅读 · 0 评论 -
由装饰者模式来深入理解Java I/O整体框架
前言Java里面的I/O这一部分看过很多遍,每次看完之后特别混乱,又是输入流,又是输出流,又是字符流,又是字节流,还有什么过滤流,缓冲流。每次看得我如入云里雾里,直到后面看了设计模式这一块,才算真正的对Java I/O这一块有了整体的了解,理解起Java流也就容易许多。这篇博客先介绍装饰者模式,然后结合Java流看看装饰者模式如何应用到Java流中的。装饰者模式装饰者模式:动态地将责任附加到对象上...转载 2018-04-23 16:26:58 · 215 阅读 · 0 评论 -
Callable接口解析
1.接口的定义:public interface Callable<V> { V call() throws Exception; } 12342.Callable和Runnable的异同先看下Runnable接口的定义public interface Runnable { public abstract void run();}123Callabl...转载 2018-04-23 17:09:34 · 341 阅读 · 0 评论 -
Java堆结构PriorityQueue完全解析
在堆排序这篇文章中千辛万苦的实现了堆的结构和排序,其实在Java 1.5版本后就提供了一个具备了小根堆性质的数据结构也就是优先队列PriorityQueue。下面详细了解一下PriorityQueue到底是如何实现小顶堆的,然后利用PriorityQueue实现大顶堆。PriorityQueue的数据结构PriorityQueue的逻辑结构是一棵完全二叉树,存储结构其实是一个数组。逻辑结构层次遍历...转载 2018-04-23 17:34:02 · 212 阅读 · 0 评论 -
异常、堆内存溢出、OOM的几种情况
1、堆内存溢出【情况一】: java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: < jvm-arg>-Xms3062m < / jvm-arg> < jvm-arg>-X...转载 2018-04-19 16:04:00 · 304 阅读 · 0 评论 -
内存泄露、内存溢出
内存泄露是指你的应用使用资源之后没有及时释放,导致应用内存中持有了不需要的资源,这是一种状态描述而内存溢出是指你的应用的内存已经不能满足正常使用了,堆栈已经达到系统设置的最大值,进而导致崩溃,这事一种结果描述而且通常都是由于内存泄露导致堆栈内存不断增大,从而引发内存溢出。...转载 2018-04-19 16:09:13 · 155 阅读 · 0 评论 -
Java内存溢出(OOM)异常排查指南
这也许是目前最为完整的Java OOM异常的解决指南。1、java.lang.OutOfMemoryError:Java heap spaceJava应用程序在启动时会指定所需要的内存大小,它被分割成两个不同的区域:Heap space(堆空间)和Permgen(永久代):JVM内存模型示意图这两个区域的大小可以在JVM(Java虚拟机)启动时通过参数-Xmx和-XX:MaxPermSize设置,...转载 2018-04-19 16:27:19 · 1454 阅读 · 0 评论 -
Struts2与SpringMVC区别
1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restfulurl,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标...转载 2018-04-12 17:14:35 · 142 阅读 · 0 评论 -
cron表达式
Cron 表达式包括以下 7 个字段:· 秒· 分· 小时· 月内日期· 月· 周内日期· 年(可选字段)特殊字符Cron 触发器利用一系列特殊字符,如下所示:· 反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。· 问号(?)...转载 2018-04-12 17:13:25 · 181 阅读 · 0 评论 -
23种设计模式详解
一、设计模式定义: 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。二、设计模式分类:(1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。(2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...转载 2018-04-11 15:20:56 · 153 阅读 · 0 评论 -
常用正则表达式
只能输入1个数字 表达式 ^\d$ 描述 匹配一个数字 匹配的例子 0,1,2,3 不匹配的例子 只能输入n个数字 表达式 ^\d{n}$ 例如^\d{8}$ 描述 匹配8个数字 匹配的例子 12345678,22223334,12344321 不匹配的例子 只能输入至少n个数字 表达式 ^\d{n,}$ 例如^\d{8,}$ 描述 匹配最少n个数字 匹配...原创 2018-04-11 15:28:42 · 142 阅读 · 0 评论 -
透彻理解NIO、BIO、AIO框架的原理
概述同步: 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。异步: 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API)。阻塞: ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才返回)。非阻塞: 柜台取款,取个号,然后坐...转载 2018-04-11 15:46:32 · 830 阅读 · 1 评论 -
Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
tomcat 的Connector 有三种模式:bio,nio.apr;下面来说一下他们各自的特性:Java BIO、NIO、AIO同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API...转载 2018-04-11 16:04:21 · 195 阅读 · 0 评论 -
SSO单点登录
SSO单点登录SSO英文全称Single Sign On.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。 SSO技术实现机制 当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中...转载 2018-04-11 16:05:17 · 107 阅读 · 0 评论 -
Java多线程问题总结
1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都转载 2018-04-12 17:04:35 · 174 阅读 · 0 评论 -
关于InstantiationException错误的原因
could not initialization Dammanage:com.ibatis.dao.client.DaoException: Errorwhile configuring DaoManager. Cause: com.ibatis.dao.client.DaoException: Error configuringDAO. Cause: java.lang.Instantiat...转载 2018-04-12 17:06:27 · 16716 阅读 · 0 评论 -
GET、POST提交参数获取
1. get方式 get方式提交的话,表单项都保存在http header中,格式是 http://localhost:8080/hello.do?name1=value1&name2=value2这样的字符串。server端通过request.getParameter是可以取到值的。 2.post方式(enctype为缺省的application/x-www-form-urlenc...转载 2018-04-12 17:10:48 · 669 阅读 · 0 评论 -
double-checked locking
publicstatic HttpClient getInstance() { try{ if(httpClient == null) { synchronized(_lock) { ...原创 2018-04-12 17:11:57 · 107 阅读 · 0 评论 -
SPRING循环依赖(circular reference)的解决方法
循环依赖,就是说类A依赖与B,而B又依赖于A,这种情况本不应该发生,发生这种情况是因为我在项目中使用的工厂模式,用一个工厂来生产一些管理器类,而某一管理器要需要另一管理器提供支持所以就要引用工厂类,而这个管理器和这个工厂就出现了循环依赖(项目中实际的逻辑比这个更复杂,因为我在项目中实现的了一个工作流数据POJO类延迟加载的功能像hibernate 那样在调用一个类的集合属性时才到要shark中去查...转载 2018-08-02 09:59:27 · 3168 阅读 · 0 评论