- 博客(19)
- 资源 (2)
- 收藏
- 关注
原创 Java集合框架源码分析 - RandomAccess
在JDK的源码里有一个RandomAccess接口,这个接口没有任何方法需要实现,那么它是干什么用的呢?public interface RandomAccess {}官方文档解释如下:接口RandomAccess被List实现用来指示它们支持快速的(通常是恒定的)随机访问。此接口的主要目的是允许通用算法改变其行为,以便在应用于随机或顺序访问列表时提供良好的性能。 用于处理随机
2018-01-31 21:25:07 474
原创 Java集合框架源码分析 - Collection接口
Collection是所有列表类容器的顶层接口,在Collection框架的位置如下图所示,没有类直接实现Collection接口的,Collection和真正的实现类中间会有其他接口或者抽象类存在,后面我们一个一个的讲。 Collection接口作为Collection框架的顶层接口,几乎声明了所有Collection型容器的所有方法,是否重复List和Set接口对它进行了补充,我们看下C
2018-01-31 16:28:44 286
原创 Java集合框架源码分析 - Iterable
上一篇文章我们讲了Java容器的概况包括Collection和Map框架,Collection最顶上的接口是java.lang.Iterable,Collection里的其他类和接口都是在java.util里,但是Iterable确实在java.lang下。Iterable翻译成中文就是可迭代的,就是说实现了Iterable接口的类必须是可迭代的类,Iterable声明了以下三个方法:
2018-01-30 16:03:33 254
原创 Java集合框架源码分析 - 概览
概况容器,顾名思义,就是可以容纳东西的器物,在Java语言中就是可以容纳其他Java对象的对象,优点有很多:降低编程难度提高程序性能提高API间的互操作性降低学习难度降低设计和实现相关API的难度增加程序的重用性Java容器里只能放对象,对于基本类型(byte, int, long, float, double等),需要将其包装成其对象类型后(Integer, Long,
2018-01-29 20:38:47 390
原创 记一次方案设计的前瞻性
方案设计一定要有前瞻性,要从方方面面考虑,比如性能、扩展性等,这个是开发人员必备的一个素质,但是这次方案设计却是关于存储容量的考虑。需求背景商品的信息比如价格、优惠券字段是通根据淘宝的api来更新,这个更新是个定时任务,一小时更新一次,由于偶尔会有商品的信息不符合要求,为了更好的排查类似这样的问题,一个月前产品提了一个需求,对所有的抓取信息添加抓取日志,并且可以在商品列表页定位到这个日
2018-01-26 11:31:47 957
原创 Spring MVC的数据流图
Spring 大多数是用来搭建web程序的,Spring的web框架帮我们做了很多事情,让我们可以更多的专注于我们的业务代码,接触过Spring MVC开发的都知道什么是MVC(Model、View、Controller),但是Spring MVC的请求过程是怎么样的,估计一部分人都不清楚,下图是SpringMVC的请求流程。 用户发起请求到Servlet,也就是Spring MVC的Di
2018-01-15 20:04:02 2070
原创 Spring AOP 和 AspectJ 详解
最近在看《Spring 实战》,说真的第四章《面向切面编程的Spring》讲的真心很烂,看了几遍都不清楚到底要表达什么,也没有讲清楚Spring AOP 和 AspectJ的区别关系,终于让我找到了一篇文章关于 Spring AOP (AspectJ) 你该知晓的一切,写的是真好,这里记录一下。接下来举个我自己项目代码的例子。 我们知道,很多时候,要判断当前用户是否已经登录,也就是进行鉴权,
2018-01-14 20:16:05 1125
原创 Java反射之java.lang.reflect.Constructor
我们知道每个类都至少有一个构造器,因为一个类如果没有显示定义一个构造器,编译器自动会自动生成一个默认无参的构造器,构造器作为一个类的入口方法,在使用类的成员变量和方法之前,类的构造器必须被调用,生成一个实例,另外构造器不能被继承,如果子类的构造器没有显示的调用父类的构造器,执行器会默认的调用父类的构造器。 说了这么多,我们该进入正题了,本文讲解一个反射中怎么获取一个构造器的声明、参数等信息,怎么
2018-01-14 10:42:24 5708
转载 Java中ReentrantLock和synchronized两种锁机制比较
原文出处: https://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 摘要新的锁定类提高了同步性 —— 但还不能现在就抛弃 synchronized。多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个
2018-01-12 08:37:19 332
原创 Spring高级装配之指定Bean
在我们使用@Autowired时,如果我们注入的Bean只有一个,那么自动装配会找到我们定义的那个Bean装配进去,如果我们定义了多个时,通过@Autowired装配时就会抛出异常,举个例子: 我们根据接口注入了一个Bean:@Autowiredprivate Dessert dessert;而我们声明了多个Bean:@Componentpublic class Cookie
2018-01-11 20:42:41 1600
原创 Spring高级装配之条件化装配
根据环境变量装配Bean 我们将了怎么使用@Profile来装配对应的Bean,现在有时候,我们需要更细的条件来判断是否要装配某个Bean,比如在应用的类路径下有特定的库,某个环境变量是我们要的值等等,该怎么做呢?@ConditionalSpring提供给了我们一个注解@Conditional来做到这个事情,我们举个例子,例子的逻辑是如果环境变量里有magic属性,我们才会创建Magi
2018-01-11 20:15:55 548
原创 Spring高级装配之Profile
很多情况下,我们需要在不同的环境下装配不同的Bean,比如数据库,测试环境我们想用嵌入式数据库,开发环境我们想用mysql,线上环境我们想用oracle,总不能每次上线都要改代码吧。 Spring提供给了我们@Profile来根据我们的环境确定我们要装配哪儿种Bean。JavaConfig中使用Profile直接上代码:@Configurationpublic class
2018-01-11 19:37:31 250
原创 Java中的语法糖
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。Java语法糖的种类java7(含)之前的语法糖主要包括以下语法:泛型 自动装箱和
2018-01-08 21:25:47 1182
原创 Java之常量折叠
常量折叠是Java在编译期做的一个优化,简单的来说,在编译期就把一些表达式计算好,不需要在运行时进行计算。 比如: int a = 1 + 2,经过常量折叠后就变成了int a = 3。 我们举个例子:public class Main { public static void main(String[] args) { String s1 = "a" + "b
2018-01-07 19:28:32 1636 2
原创 Java类加载机制(初始化顺序)
之前写过一篇关于Java中普通代码块和static代码块的区别,大致讲解了普通代码块和Static代码的区别,但是并没有讲它们的加载执行顺序,本章就细细的将一下类的加载机制(初始化顺序)。类生命周期类的字节码从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resoluti
2018-01-06 16:25:16 2367
原创 Spring装配Bean之XML装配Bean
上一篇文章我们讲了如何使用Java告诉Spring怎么装配Bean,这章讲解一下一个古老的方式,也就是通过XML装配Bean,为什么称它古老呢,因为最开始的Spring版本都是通过XML进行装配的,虽然古老,但是我们还是要讲解一下它,毕竟很多老项目都是使用了XML配置。XML配置规范在JavaConfig时,我们需要以@Configuration标识某个类作为我们的类,然后在这个类中定
2018-01-05 15:53:46 280
原创 Spring装配Bean之Java代码装配Bean
上一篇文章 我们介绍了怎么让Spring自动扫描并装配Bean,这一章,我们接着讲我们怎么显式的告诉Spring每个Bean该怎么装配,有两种方式,一种是基于Java代码的,一种是基于XML文件的。 由于基于Java代码的比较简单,也是仅次于自动装配我们推荐使用的,所以本章先讲解一下基于Java代码显式声明的。 pom.xml、Bean的class这里就不详细贴代码了,可以见上一章,只需要@Co
2018-01-02 20:59:11 346
原创 Spring装配Bean之自动化装配Bean
装配方式使用Spring就是要让Spring帮助我们管理这些Class的实例也就是这些Bean,但是作为开发人员,我们需要告诉Spring哪儿些bean需要装配和怎么装配到一起,Spring提供了三类装配机制:自动化发现和装配Bean。在Java代码中显示配置Bean。在XML里显示配置Bean。这些方式可以单独使用,也可以配合一起使用。 虽然Spring给了我们很多种方式,但是如果我们滥
2018-01-01 20:57:16 529
原创 spring之AOP初探
去面试Java绝对少不了的就是AOP(切面编程),我也纳闷,AOP就这么重要么,后来看了Spring实战之后发现,AOP就是Spring的很多特性的基础,日志记录,性能统计,安全控制,事务处理,异常处理等等。 这篇文章,我们简单的写一个demo体会一下AOP,后面我们再详细介绍。 还记得上一篇 讲了一个人类打电话的例子,既然是打电话,打之前少不了拨号的操作,打完之后少不了挂电话的操作。那我们就
2018-01-01 20:08:41 184
Visual Assist X破解
2013-08-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人