随笔分类 -  Java

摘要:在 java7之前,java的异常处理结构是 try catch finally , try代码块里打开的资源,它们的关闭都得放到finally里,挺繁琐的一个语法规则,相信被广大开发者吐槽过。 阅读全文
posted @ 2016-10-30 15:47 li.zhiliang 阅读(220) 评论(2) 推荐(0)
摘要:其实大部分页面都是这种模板,只是改动某一块或者几块,但是每个ftl文件,都得包含这些内容,万一有改动,得全部ftl做修改,比较麻烦。 假设自定义三个指令parent, layout, content ,可能会方便很多。 阅读全文
posted @ 2016-08-18 21:30 li.zhiliang 阅读(730) 评论(0) 推荐(0)
摘要:freemarker是一款模板引擎,自己定义了很多指令。 阅读全文
posted @ 2016-08-18 21:27 li.zhiliang 阅读(318) 评论(0) 推荐(0)
摘要:通常,程序中的对象在多线程下,数据都是竞争共享的。但是,有一个类例外,他生成的实例是线程私有的,ThreadLocal。ThreadLocal生成的对象,线程私有,这是怎么做到的呢? 阅读全文
posted @ 2016-08-16 21:40 li.zhiliang 阅读(208) 评论(0) 推荐(0)
摘要:在java应用中,对于访问频率比较高,又不怎么变化的数据,常用的解决方案是把这些数据加入缓存。相比DB,缓存的读取效率快好不少。java应用缓存一般分两种,一是进程内缓存,就是使用java应用虚拟机内存的缓存;另一个是进程外缓存,现在我们常用的各种分布式缓存。相比较而言,进程内缓存比进程外缓存快很多,而且编码也简单;但是,进程内缓存的存储量有限,使用的是java应用虚拟机的内存,而且每个应用都要存储一份,有一定的资源浪费。进程外缓存相比进程内缓存,会慢些,但是,存储空间可以横向扩展,不受限制。 阅读全文
posted @ 2016-08-03 21:08 li.zhiliang 阅读(14647) 评论(0) 推荐(0)
摘要:HotSpot JVM是java中最常用的java虚拟机。在java8 HotSpot JVM 中,虚拟机的内存模型做了修改调整。以前HotSpot JVM的内存模型分为新生代,老年代,永久代;在java8 HotSpot JVM中,把永久代移除了。永久代中存放的类加载信息移到直接内存区存放。 阅读全文
posted @ 2016-07-31 11:29 li.zhiliang 阅读(492) 评论(0) 推荐(0)
摘要:java动态代理是一个挺有意思的东西,他有时候可以被使用的很灵活。像rpc的调用,调用方只是定义的一个接口,动态代理让他匹配上对应的不同接口;mybatis内部的实现,编码时,只是实现了mapper层的接口和sql的xml的配置,动态代理把他们连起来。记得之前在一家公司,他们使用thrift做rpc的解决方案,每个项目都得管理thrift的连接和关闭,代码考来考去,在spring下还得不断new对象。后来参照mybatis的实现方式,使用动态代理,做成spring注入的方式,方便很多,程序员只需要加些配置就好了。 阅读全文
posted @ 2016-07-12 21:13 li.zhiliang 阅读(1198) 评论(0) 推荐(0)
摘要:以前Synchronised关键字加锁效率问题,经常受到吐槽。后来java的开发团队进行了优化,引入了偏向锁、自旋锁、轻量锁,性能有了很大的提升。下面我们来分析下这里面的过程和原理。 阅读全文
posted @ 2016-07-07 20:29 li.zhiliang 阅读(1294) 评论(0) 推荐(0)
摘要:我们都知道,jvm执行的代码,都是通过jvm加载系统加入的。加载系统的第一步是通过ClassLoader加载class二进制信息,jvm规范中并没有规定class的来源类型,这就给jvm的实现这块很大的灵活。可以放在数据库里,可以放在网络的其他地方(以前的applet),zip文件等。现在大多数都是放在zip包里,我们引入其他class都是通过引入zip包的形式。 阅读全文
posted @ 2016-07-03 08:27 li.zhiliang 阅读(173) 评论(0) 推荐(0)
摘要:Java nio 称为Java new IO ,对Java io而言的。他有两个主要的概念:缓存、通道。 阅读全文
posted @ 2014-03-24 22:29 li.zhiliang 阅读(172) 评论(0) 推荐(0)
摘要:任何程序都有io部分,io是对程序来说数据流的输入和输出。这里说的流,是指有字节组成的列,不断输入程序,或者从程序中输出,我们形象称为流。Java的io流有两种,一种叫字节流,最原始的;一种叫字符流。 阅读全文
posted @ 2014-03-16 10:50 li.zhiliang 阅读(287) 评论(0) 推荐(0)
摘要:对每个程序来说,不管用什么语言开发出来的,他的功用分为三种:1、接收输入流;2、处理数据;3、传出输出流 阅读全文
posted @ 2014-03-14 22:33 li.zhiliang 阅读(171) 评论(0) 推荐(0)