java开发
youxin2012
这个作者很懒,什么都没留下…
展开
-
tomcat 热加载
tomcat 热部署原创 2015-02-10 15:21:15 · 2256 阅读 · 0 评论 -
threadLocal 原理与使用
目标:用于每个线程资源的隔离.当工作于多线程中的对象使用ThreadLocal 维护变量时,ThreadLocal 为 每个使用该变量的线程分配一个独立的变量副本。每个线程独立改变自己的副本,而不影响其他线程所对应的变量副本。不同于线程同步:线程同步用于解决一个变量同一时刻被多个线程共享的问题(共享一个变量)。 threadLocal 使得一个变量在多个线程中各自拥有自己的副本(实现资源的隔离)。原创 2015-12-06 00:15:46 · 2653 阅读 · 1 评论 -
spring mvc 简介与例程
老生常谈的spring mvc 再来啰嗦一遍。spring mvc模型简介: spring mvc 模型,dispatchServlet 充当中央控制器,对http请求做转发处理(mapping),由对应的控制器做相应处理,充当 C (control)。各控制器做相应的业务处理,其中数据处理、业务逻辑等构成M (model),处理器完成数据的处理,经返回给dispatchServlet , 由其交原创 2015-12-07 14:47:47 · 1941 阅读 · 1 评论 -
装饰者模式
通过对已有类的包装,使新类在增加功能的同时,实现对已有类的复用。装饰者模式 实现代码复用较 继承的优点:在类之间没有明确的is-a关系的提前下 利用继承,后续代码维护较难。例 Duck extends Bird ,虽然Duck目前 完全可以复用 Bird中的方法eat, drink, 然而后期需要为Bird添加 fly() 方法时,Duck 就自然而然的继承了这个不该有的方法,so Duck被污染原创 2016-01-10 22:41:08 · 1205 阅读 · 1 评论 -
异常的使用-checked or unchecked
较之于unix系统和c-based系统中以返回值表示子程序的成功与否,其中返回值包括异常码与正常返回码(常用 负数 表示不同异常,0表示正常结束)。java提供了专门的异常机制,可以发生异常与程序返回值做分离。异常的抛出,可以让我们及时采用正确的策略做处理。 java中异常有两类:受检异常(checked exception)和非受检异常(uncchecked exception)。在实现原创 2016-02-21 23:06:47 · 1204 阅读 · 1 评论 -
transient与序列化
transient的作用:修饰实力域,使其从一个类的默认序列化形式中省略(即默认序列化方式不对该字段做写与读 存取操作)应用场景:业务需要,不宜做序列化如银行密码等 信息不希望在网络和磁盘等地方存储,所以可以用 transient 声明,从而保证相应信息无法从磁盘读取。(此例源于网上观点,个人不太赞同)默认的序列化方式不适合,采用自定义序列化的方式例hashMap中对元素的存储。java 7中ha原创 2016-02-22 23:00:52 · 1743 阅读 · 1 评论 -
hashMap源码分析
以下hashMap源码为java 7 1. 存储结构 结点Entrystatic class Entry<K,V> implements Map.Entry<K,V> { final K key; V value; Entry<K,V> next; int hash; /** * Creates ne原创 2016-02-23 13:37:11 · 1130 阅读 · 1 评论 -
volatile 的使用
volatile, java中最轻量级的同步机制。虽然常用于线程同步中,然而并不意味着volatile修饰的变量操作时具有原子性,请注意“volatile修饰的变量”操作时真的不具备原子性,实例如下:public class VolatileTest { public static volatile int race = 0; public static void increa原创 2016-04-18 00:51:32 · 4535 阅读 · 0 评论 -
jvm 性能监控与分析工具
1. jpsjvm 进程状态统计 -l 输出对应应用主方法的完整包名或者jar的完整路径名 (常用于确定 所观察应用的lvmid, 性能分析的第一步) -m 输出传递给主方法的参数 -v 输出 jvm参数2. jinfo查看/设置进程的系统参数及jvm 参数(人工设置与默认设置) 例:查看lvmid的gc详情,使用如下命令为运行中的程序配置jvm参数(功能同在 应用启动前做jvm原创 2016-04-24 15:54:57 · 7286 阅读 · 0 评论 -
jdk8带来了哪些新特性
jdk8距离发布已经有些时间了,集团内部也在大力推广,恰值新项目也选用了jdk8做开发,查阅下资料做个小结。较之与前几个版本,jdk8最大的改变莫过于引入了lambda表达式以及stream机制。新特性如下:1. 语言层面1)lambda表达式与函数接口lambda表达式(闭包)允许将一个函数当作方法的数据(传递函数)或者说把代码当作数据。代码更加简洁紧凑。 详细示例后文描述。函数接口:为兼容现有原创 2017-02-11 21:53:30 · 526 阅读 · 0 评论 -
java 常用测试框架
1. 常用单元化测试框架 junit4 , TestNG可以通过注解 @Before @After @BeforeClass @AfterClass 分别作方法与类级的初始化与结束动作。 testNG示例:public class TestngAnnotation { // test case 1 @Test public void testCase1() { System原创 2015-12-19 22:05:50 · 3114 阅读 · 1 评论 -
数据库操作分层结构总结
在持久化数据的读写操作中常常要涉及到 数据库与缓存 的操作,同时由于业务需要常常要对多表进行事务操作。基于结构层次化设计的思想我们常常需要对这一系列操作进行分层设计。各层的主要职责,以及发生异常如何处理,是向上继续抛出,还是在该层对异常做转换等处理,以及事务中发生异常时缓存的处理等需要一些思考。以个人的经验为例: 常常将持久化操作分为3层:dao层,manager层,service层 其中 d原创 2015-12-31 00:05:27 · 3228 阅读 · 1 评论 -
JDBC编程小结
(1) JDBC API调用流程:1. 加载驱动String driveName = "com.mysql.jdbc.Driver"; // mysqlClass.forName(driveName);2. 利用 DriverManager 获取 Connection对象(数据库连接对象,代表一个物理连接)Connection conn = DriverManager.getConnection原创 2015-01-07 18:14:42 · 1254 阅读 · 0 评论 -
java中equals与==的对比
==(1)用于 基本类型(int, float等)的比较时,返回数值 意义/大小 是否相同的结果(2)用于对象比较时(Interger,String, 库对象、自定义对象等),返回 两对象 地址是否相同的结果equals(1)不能用于基本类型,只能作为对象的方法被调用(2)java中所有对象继承于Object对象, 其中Object 的 equals 表示 两个对象的地址空间是否相同,所以如果 子原创 2015-01-19 18:55:57 · 1068 阅读 · 0 评论 -
java 相对路径获取 -- getResource的应用
(一)函数: (1) Class.getResource(String path) (2) Class.getClassLoader.getResource(String path)其中(2)中 path不能以'/'开头(1)中path 开头有无'/' 均可,含义不同(二)测试目录结构:|--project |--src |--myte原创 2015-03-02 14:46:27 · 2832 阅读 · 0 评论 -
java反编译工具jad及jadclipse
java源码学习中常用到的工具jad反编译.class 文件下载地址及使用(详见压缩包中的readme)http://varaneckas.com/jad/如果用eclipse 可以配合 jadclipse插件 http://sourceforge.net/projects/jadclipse/?source=typ_redirecteclipse中 jadclipse插件配置需用到jad配置使用原创 2015-05-01 21:36:41 · 1271 阅读 · 0 评论 -
eclipse应用技巧
最近发现eclipse作为ide还是有很多值得探索的使用技巧的,转载一下他人整理好的资源以做分享。快捷键的使用,加速开发 codestype配置,规范代码风格原创 2015-05-01 23:39:08 · 896 阅读 · 0 评论 -
java中三种常见内存溢出错误的处理方法
好的基础知识要转载,原文链接此处相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation sp转载 2015-06-27 07:40:28 · 1292 阅读 · 0 评论 -
java中访问修饰符
较之c++ 中 public,proctected, private 三种访问控制, java多了默认访问控制。 java中四种访问控制权限 简单描述为一下四句: 1)private 仅本类可见 (同c++) 2)默认 对本包可见/包内访问 (c++没有) 3)protected 对本包和所有子类可见 (c++中没有本包概念,较 默认访问 可原创 2015-06-11 00:13:34 · 1196 阅读 · 0 评论 -
java中单例模式singleton
单例模式:在上下文中只有一个对象的实例。 应用场景:线程池,缓存等一个系统只需要一个的场景。三种常见单例模式: 1. 延迟单例模式public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance原创 2015-06-14 14:16:17 · 1140 阅读 · 0 评论 -
JVM中GC日志查看与内存结构
jvm gc日志查看与内存结构原创 2015-11-15 23:04:44 · 4247 阅读 · 0 评论 -
jdk8中的lambda表达式
什么是lambda表达式?lambda表达式又称闭包,允许将一个函数当作方法的参数来传递(传递函数)或者说把代码当作数据来传递。 长啥样?如下两个示例,示例1为非lambda表达式实现的形态(多行代码),示例2为使用lambda表示式后的样子(1行代码)。功能:实现一个过滤符合指定条件的人群示例1:interface CheckPerson { //步骤1.定义接 boolean test原创 2017-02-12 00:10:15 · 500 阅读 · 0 评论