[置顶] ArrayDeque源码分析

了解特性,先看下体系结构: 如上所示,知道其支持 序列化,克隆,迭代器操作,队列特性。具体实现 除了实现以上接口外,扩展AbstractCollection 抽象类。大炮打苍蝇,还是鸟枪打野猪?工具应用要有场景: ArrayDeque 为双端队列,支持首部,尾部两端的操作,因此做双端操作可用于fifo或queue, 做单端操作可做为stack. 然而能做queue的还有linke...
阅读(1645) 评论(0)

[置顶] 快速排序 算法 详解 及 深度优化

下面简介经典算法  快速排序算法 实现及优化。 (欢迎大家指点,继续提出优化的方法,共同提高) 基本思想:(以按从小到大排序为例说明)通过多次的排序,每次的排序均将要排序的数组分为两部分,前一部分均比中间值小,后一部分均比中间值大,这样重复递归下去将每一部分按相同的思路进行分割,最终使整个数组达到从小到大有序排列。 较冒泡排序的优点:同为通过不断的比较和移位来得到有序数组,但快排增大了比较和移...
阅读(5766) 评论(5)

[置顶] 微软面试题 经典测试(推理题)

教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数    甲说:“我猜不出”    乙说:“我猜不出”    甲说:“我猜到了”    乙说:“我也猜到了”    问这两个数是多少          参考答案 见后文   http://blog.csdn.net/youxin2012/article/details...
阅读(5276) 评论(10)

jdk8中的lambda表达式

什么是lambda表达式?lambda表达式又称闭包,允许将一个函数当作方法的参数来传递(传递函数)或者说把代码当作数据来传递。 长啥样?如下两个示例,示例1为非lambda表达式实现的形态(多行代码),示例2为使用lambda表示式后的样子(1行代码)。功能:实现一个过滤符合指定条件的人群示例1:interface CheckPerson { //步骤1.定义接 boolean test...
阅读(119) 评论(0)

jdk8带来了哪些新特性

jdk8距离发布已经有些时间了,集团内部也在大力推广,恰值新项目也选用了jdk8做开发,查阅下资料做个小结。较之与前几个版本,jdk8最大的改变莫过于引入了lambda表达式以及stream机制。新特性如下:1. 语言层面1)lambda表达式与函数接口lambda表达式(闭包)允许将一个函数当作方法的数据(传递函数)或者说把代码当作数据。代码更加简洁紧凑。 详细示例后文描述。函数接口:为兼容现有...
阅读(216) 评论(0)

btrace使用

btrace  Java平台信息动态跟踪工具,官方介绍BTrace is a safe, dynamic tracing tool for the Java platform. BTrace can be used to dynamically trace a running Java program (similar to DTrace for OpenSolaris applications ...
阅读(7144) 评论(0)

jvm 性能监控与分析工具

1. jpsjvm 进程状态统计 -l 输出对应应用主方法的完整包名或者jar的完整路径名 (常用于确定 所观察应用的lvmid, 性能分析的第一步) -m 输出传递给主方法的参数 -v 输出 jvm参数2. jinfo查看/设置进程的系统参数及jvm 参数(人工设置与默认设置) 例:查看lvmid的gc详情,使用如下命令为运行中的程序配置jvm参数(功能同在 应用启动前做jvm...
阅读(6912) 评论(0)

volatile 的使用

volatile, java中最轻量级的同步机制。虽然常用于线程同步中,然而并不意味着volatile修饰的变量操作时具有原子性,请注意“volatile修饰的变量”操作时真的不具备原子性,实例如下:public class VolatileTest { public static volatile int race = 0; public static void increa...
阅读(4340) 评论(0)

hashMap源码分析

以下hashMap源码为java 7 1. 存储结构 结点Entrystatic class Entry implements Map.Entry { final K key; V value; Entry next; int hash; /** * Creates ne...
阅读(954) 评论(1)

transient与序列化

transient的作用:修饰实力域,使其从一个类的默认序列化形式中省略(即默认序列化方式不对该字段做写与读 存取操作)应用场景:业务需要,不宜做序列化如银行密码等 信息不希望在网络和磁盘等地方存储,所以可以用 transient 声明,从而保证相应信息无法从磁盘读取。(此例源于网上观点,个人不太赞同)默认的序列化方式不适合,采用自定义序列化的方式例hashMap中对元素的存储。java 7中ha...
阅读(1287) 评论(1)

异常的使用-checked or unchecked

较之于unix系统和c-based系统中以返回值表示子程序的成功与否,其中返回值包括异常码与正常返回码(常用 负数 表示不同异常,0表示正常结束)。java提供了专门的异常机制,可以发生异常与程序返回值做分离。异常的抛出,可以让我们及时采用正确的策略做处理。     java中异常有两类:受检异常(checked exception)和非受检异常(uncchecked exception)。在实现...
阅读(966) 评论(1)

装饰者模式

通过对已有类的包装,使新类在增加功能的同时,实现对已有类的复用。装饰者模式 实现代码复用较 继承的优点: 在类之间没有明确的is-a关系的提前下 利用继承,后续代码维护较难。例 Duck extends Bird ,虽然Duck目前 完全可以复用 Bird中的方法eat, drink, 然而后期需要为Bird添加 fly() 方法时,Duck 就自然而然的继承了这个不该有的方法,so Duck被污染...
阅读(1029) 评论(1)

数据库操作分层结构总结

在持久化数据的读写操作中常常要涉及到 数据库与缓存 的操作,同时由于业务需要常常要对多表进行事务操作。基于结构层次化设计的思想我们常常需要对这一系列操作进行分层设计。各层的主要职责,以及发生异常如何处理,是向上继续抛出,还是在该层对异常做转换等处理,以及事务中发生异常时缓存的处理等需要一些思考。以个人的经验为例: 常常将持久化操作分为3层:dao层,manager层,service层 其中 d...
阅读(1928) 评论(1)

java 常用测试框架

1. 常用单元化测试框架 junit4 , TestNG可以通过注解 @Before @After @BeforeClass @AfterClass 分别作方法与类级的初始化与结束动作。 testNG示例:public class TestngAnnotation { // test case 1 @Test public void testCase1() { System...
阅读(2454) 评论(1)

spring mvc 简介与例程

老生常谈的spring mvc 再来啰嗦一遍。spring mvc模型简介: spring mvc 模型,dispatchServlet 充当中央控制器,对http请求做转发处理(mapping),由对应的控制器做相应处理,充当 C (control)。各控制器做相应的业务处理,其中数据处理、业务逻辑等构成M (model),处理器完成数据的处理,经返回给dispatchServlet , 由其交...
阅读(1672) 评论(1)

threadLocal 原理与使用

目标:用于每个线程资源的隔离.当工作于多线程中的对象使用ThreadLocal 维护变量时,ThreadLocal 为 每个使用该变量的线程分配一个独立的变量副本。每个线程独立改变自己的副本,而不影响其他线程所对应的变量副本。不同于线程同步:线程同步用于解决一个变量同一时刻被多个线程共享的问题(共享一个变量)。 threadLocal 使得一个变量在多个线程中各自拥有自己的副本(实现资源的隔离)。...
阅读(2198) 评论(2)

JVM中GC日志查看与内存结构

jvm gc日志查看与内存结构...
阅读(3433) 评论(0)
136条 共10页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:659151次
    • 积分:6220
    • 等级:
    • 排名:第3831名
    • 原创:118篇
    • 转载:18篇
    • 译文:0篇
    • 评论:249条