摘要: java foreach 语法是在jdk1.5时加入的新特性,主要是当作for语法的一个增强,那么它的底层到底是怎么实现的呢?因为面试时被问到,所以在这边做一个记录。 首先来看看foreach能够使用的类型是什么: 编译器报错原因写的很清楚了,要求:数组或java.lang.Iterable。 看下 阅读全文
posted @ 2016-03-20 21:22 icodeit 阅读(10672) 评论(0) 推荐(1) 编辑
摘要: 前面两篇讲解了线程池中线程创建后的运行情况,其中有一系列的策略来保证线程正常运行。但是我们知道线程池是可以设置容量的,而且这容量的设置也是至关重要的,如果容量设置的太小,那么将会影响系统的运行效率,如果设置的过大,也可能造成无止尽的线程堆积,最终造成系统内存溢出。对于此,线程池也提供了一些设置来防止 阅读全文
posted @ 2016-03-20 13:31 icodeit 阅读(8888) 评论(0) 推荐(4) 编辑
摘要: 上一篇从整体上介绍了 接口,从上一篇我们知道了 框架的最顶层实现是 类, 工厂类中提供的 、`newFixedThreadPool newCachedThreadPool ThreadPoolExecutor ThreadPoolExecutor`线程池的运行过程。 1.线程池状态 既然要讲运行过程 阅读全文
posted @ 2016-03-17 00:25 icodeit 阅读(4175) 评论(2) 推荐(5) 编辑
摘要: Java是天生就支持并发的语言,支持并发意味着多线程,线程的频繁创建在高并发及大数据量是非常消耗资源的,因为java提供了线程池。在jdk1.5以前的版本中,线程池的使用是及其简陋的,但是在JDK1.5后,有了很大的改善。JDK1.5之后加入了java.util.concurrent包,java.u 阅读全文
posted @ 2016-03-14 23:26 icodeit 阅读(21196) 评论(5) 推荐(7) 编辑
摘要: NIO是jdk1.4加入的新功能,我们一般成为非阻塞IO,在1.4之前,JAVA中的都是BIO(堵塞IO),BIO有以下几个缺点: 没有数据缓冲区,I/O性能存在问题 没有C/C++中channel(通道)的概念,只有输入和输出流 同步阻塞式I/O(BIO),通常会导致线程被长时间阻塞 支持的字符集 阅读全文
posted @ 2016-02-22 16:35 icodeit 阅读(2016) 评论(1) 推荐(0) 编辑
摘要: git rebase是对commit history的改写。当你要改写的commit history还没有被提交到远程repo的时候,也就是说,还没有与他人共享之前,commit history是你私人所有的,那么想怎么改写都可以。而一旦被提交到远程后,这时如果再改写history,那么势必和他人的... 阅读全文
posted @ 2015-12-18 15:41 icodeit 阅读(2968) 评论(0) 推荐(2) 编辑
摘要: 上一篇中介绍了ShardedJedis的基本使用方法以及演示了一个简单的例子,在这一篇中我们来介绍了ShardedJedis的原理。1.ShardedJedis内部实现首先我们来看一下ShardedJedis的一个继承关系看完了图,那么我们一步一步跟着我们的代码调用来看,以我们最简单的 Sharde... 阅读全文
posted @ 2015-12-09 10:44 icodeit 阅读(16744) 评论(2) 推荐(9) 编辑
摘要: 原来项目中有用到Redis用作缓存服务,刚开始时只用一台Redis就能够满足服务,随着项目的慢慢进行,发现一台满足不了现有的项目需求,因为Redis操作都是原子性这样的特性,造成有时同时读写缓存造成查询效率的下降。但是由于我们现在用的还是2.X版本,还是没有集群功能的(Redis作者在3.0版本中已... 阅读全文
posted @ 2015-11-29 15:41 icodeit 阅读(25864) 评论(2) 推荐(8) 编辑
摘要: 最近IDE从eclipse改成IntelliJ IDEA 了,原因是公司大部分人都在用这个IDE,而且一直推荐用,所以尝尝鲜。换的第一天,就遇到了哪个IDE都会遇到的乱码问题,耗费了好多时间最终解决了,因此在这边记录一下解决方案,以供后面参考。总共有下面几种乱码的解决方案:工程乱码执行main函数时... 阅读全文
posted @ 2015-11-26 18:18 icodeit 阅读(49702) 评论(10) 推荐(19) 编辑
摘要: 作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的。 今天我们就介绍一些在linux上的文件系统结构和基本操作命令。命令:ls/chmod/chown/rm/find/ln/cat/mount/... 阅读全文
posted @ 2015-11-24 23:06 icodeit 阅读(2362) 评论(2) 推荐(1) 编辑