目录 一.Collection接口简介 二.Collection源码分析 三.Collection的子类以及子类的实现 3.1 List extend Collection 3.2 Set extend Collection 3.3 Queue extend Collection 四.Collection和Map的辨析 五.Collection和Collections的辨析 六.总结 一.Collection接口简介 collection在java集合中,算是顶级接口,它继承了iterable接…
0.使用线程池的必要性 在生产环境中,如果为每个任务分配一个线程,会造成许多问题: 线程生命周期的开销非常高.线程的创建和销毁都要付出代价.比如,线程的创建需要时间,延迟处理请求.如果请求的到达率非常高并且请求的处理过程都是轻量级的,那么为每个请求创建线程会消耗大量计算机资源. 资源消耗. 活跃的线程会消耗系统资源,尤其是内存.如果可运行的线程数量多于处理器数量,那么有些线程会闲置.闲置的线程会占用内存,给垃圾回收器带来压力,大量线程在竞争CPU时,还会产生其他的性能开销. 稳定性. 如果线程数…
java集合树状结构及源码 最近一直想看一下java集合的源码,毕竟平时用的比较多,但总是感觉是跟着习惯new出来一个对象,比如ArrayList,HashMap等等,所以就简单的看了一下,了解了一下各个集合的实现的基本原理,看源码还挺费劲的,也是了解个大概意思吧,做了一下归纳和重点,留着以后看看: 集合树状结构,上图, Collection: Map: 大家自己要看的话,建议按照这个顺序来看,一个一个的去研究这些类, 自己在看的过程中做了几个word,是源码+一些重点提示,需要的看一下,有什么…
数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接如下,可点击跳转: 链接:https://blog.csdn.net/pjh88/article/details/107166950 什么是数组与动态数组? 数组 数组是相同数据类型的元素按照一定的顺序排列的集合,若将有限个类型相同的变量的集合命名,那么这个名称称为数组名,组成数组的各个变量称为数组…
简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository 层中解耦出来,除了这些基本功能外,它还提供了动态 sql.延迟加载.缓存等功能. 相比 Hibernate,Mybatis 更面向数据库,可以灵活地对 sql 语句进行优化. 针对 Mybatis 的分析,我拆分成使用.源码分析.生成器等部分,已更新5篇博客,都放在 Mybatis 这个系列里,内容…
简介 这是 Mybatis 系列博客的第四篇,我本来打算详细讲解 mybatis 的配置.映射器.动态 sql 等,但Mybatis官方中文文档对这部分内容的介绍已经足够详细了,有需要的可以直接参考.所以,我将扩展一些其他特性或使用细节,掌握它们可以更优雅.高效地使用 mybatis. 这里补充一点,本文的所有测试例子都是基于本系列 Mybatis 第一篇文章的项目,其他相关博客如下: Mybatis源码详解系列(一)--持久层框架解决了什么及如何使用Mybatis Mybatis源码详解系列(…
Shiro 登录认证源码详解 Apache Shiro 是一个强大且灵活的 Java 开源安全框架,拥有登录认证.授权管理.企业级会话管理和加密等功能,相比 Spring Security 来说要更加的简单. 本文主要介绍 Shiro 的登录认证(Authentication)功能,主要从 Shiro 设计的角度去看这个登录认证的过程. 一.Shiro 总览 首先,我们思考整个认证过程的业务逻辑: 获取用户输入的用户名,密码: 从服务器数据源中获取相应的用户名和密码: 判断密码是否匹配,决定是否…
目录 Activiti架构分析及源码详解 引言 一.Activiti设计解析-架构&领域模型 1.1 架构 1.2 领域模型 二.Activiti设计解析-PVM执行树 2.1 核心理念 2.2 ActivitiImpl与作用域 2.3 ExecutionEntity 三.代码解析-流程启动 3.1 流程说明 3.2 额外补充 四.代码解析-原子操作 4.1 说明 4.2 AbstractEventAtomicOperation 4.3 AtomicOperationActivityExecut…
什么是logback logback 用于日志记录,可以将日志输出到控制台.文件.数据库和邮件等,相比其它所有的日志系统,logback 更快并且更小,包含了许多独特并且有用的特性. logback 被分成三个不同的模块:logback-core,logback-classic,logback-access. logback-core 是其它两个模块的基础. logback-classic 模块可以看作是 log4j 的一个优化版本,它天然的支持 SLF4J. logback-access 提供…
简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 druid 一样,HikariCP 也支持监控功能. HikariCP 是目前最快的连接池,就连风靡一时的 BoneCP 也停止维护,主动让位给它,SpringBoot 也把它设置为默认连接池. 看过 HikariCP 源码的同学就会发现,相比其他连接池,它真的非常轻巧且简单,有许多值得我们学习的地方,尤其性能提…