java高性能反射及性能对比

2018-11-11
阅读 7 分钟
8.8k
java编程中,使用反射来增强灵活性(如各类框架)、某些抽象(如各类框架)及减少样板代码(如Java Bean)。因此,反射在实际的java项目中被大量使用。

源码|jdk源码之Object及装箱类型分析

2018-09-12
阅读 5 分钟
1.6k
jdk源码读到现在这里,重要的集合类也读了一部分了。集合类再往下读的话,就要涉及到两个方向。第一,是比较典型的但是不常用的数据结构,这部分我准备将数据结构复习、回顾后再继续阅读。第二,是并发相关的集合,这部分我准备留到和并发相关的类一起阅读。

源码|jdk源码之栈、队列及ArrayDeque分析

2018-09-09
阅读 6 分钟
2.5k
栈、队列、双端队列都是非常经典的数据结构。和链表、数组不同,这三种数据结构的抽象层次更高。它只描述了数据结构有哪些行为,而并不关心数据结构内部用何种思路、方式去组织。本篇博文重点关注这三种数据结构在java中的对应设计,并且对ArrayDeque的源码进行分析。

源码|jdk源码之LinkedHashMap分析

2018-09-07
阅读 6 分钟
2k
HashMap作为一种经典的数据结构,其根据key定位元素能达到平均O(1)的时间复杂度。 但是,存储于HashMap中的元素显然是无序的,遍历HashMap的顺序得看脸。。。那如何使得HashMap里的元素变得有序呢?一种思路是,将存放HashMap元素的节点,使用指针将他们串起来。换言之,就像在HashMap里面“嵌入”了一个链表一样。实际上...

spring中的统一异常处理

2018-09-01
阅读 5 分钟
3.4k
在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码。

源码|jdk源码之HashMap分析(二)

2018-07-17
阅读 7 分钟
1.8k
接上一篇博文,来吧剩下的部分写完。总体来说,HashMap的实现内部有两个关键点,第一是当表内元素和hash桶数组的比例达到某个阈值时会触发扩容机制,否则表中的元素会越来越挤影响性能;第二是保存hash冲突的链表如果过长,就重构为红黑树提升性能。

源码|jdk源码之HashMap分析(一)

2018-07-13
阅读 10 分钟
2.5k
hash表是应用最广泛的数据结构,是对键值对数据结构的一种重要实现。 它能够将关键字key映射到内存中的某一位置,查询和插入都能达到平均时间复杂度为O(1)的性能。 HashMap是java对hash表的实现,它是非线程安全的,也即不会考虑并发的场景。

源码|jdk源码之LinkedList与modCount字段

2018-07-11
阅读 6 分钟
2.8k
链表是对上一篇博文所说的顺序表的一种实现。 与ArrayList思路截然不同,链表的实现思路是: 不同元素实际上是存储在离散的内存空间中的。 每一个元素都有一个指针指向下一个元素,这样整个离散的空间就被“串”成了一个有顺序的表。 从链表的概念来讲,它可以算是一种递归的数据结构,因为链表拿掉第一个元素剩下的部分,...

源码|jdk源码-ArrayList与Vector源码阅读

2018-07-10
阅读 10 分钟
1.9k
毕业两个星期了,开始成为一名正式的java码农了。一直对偏底层比较感兴趣,想着深入自己的java技能,看书、读源码、总结、造轮子实践都是付诸行动的方法。说到看源码,就应该由简入难,逐渐加深,那就从jdk的源码开始看起吧。

浅谈java中的并发控制

2018-07-05
阅读 4 分钟
4.6k
首先线程是什么?线程是由OS抽象并实现的,我们知道OS的职责是管理并合理分配硬件资源,那么OS为了更好的管理、分配CPU资源,同时也为了满足同时执行任务这一需求,设计了线程这一概念。

封装BeanMap以及java的反射和内省

2018-07-03
阅读 4 分钟
2.7k
这个BeanMap的功能是将一个Bean包装成Map来使用。对调用者来说,是以操作Map的方式来操作BeanMap,但是,实际上的数据是存储在被包装的Bean对象中的。

java同步非阻塞IO

2018-07-02
阅读 6 分钟
5.3k
异步IO编程在javascript中得到了广泛的应用,之前也写过一篇博文进行梳理。js的异步IO即是异步的,也是非阻塞的。非阻塞的IO需要底层操作系统的支持,比如在linux上的epoll系统调用。

java动态代理及RPC框架介绍

2018-07-02
阅读 4 分钟
2.3k
所谓动态代理,指的是语言提供的一种语法,能够将对对象中不同方法的调用重定向到一个统一的处理函数中来。python重写__getattr__函数能够做到这一点,就连世界上最好的语言也提供称为魔术方法的__call。这种语法除了能更好的实现动态代理外,还是RPC框架实现原理的一部分。<!--more-->