面向java--HashMap

这里写自定义目录标题面向基础之HashMap常见的面试题底层结构源码分析1. 构造方法合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...
分类: 其他 发布时间: 10-16 22:03 阅读次数: 0

面向基础之ThreadLocal

ThreadLocal在平时工作中还是比较常见的类,作为一个解决多线程问题的一个途径,还是值得去学习下的.它的工作原理,简单的说就是ThreadLocal为每个线程创建一个本地副本变量机制,实现与其他线程的隔离.源码解析1.set 方法 public T get() { // 获取当前线程 Thread t = Thread.currentThread(); ...
分类: 其他 发布时间: 10-16 22:03 阅读次数: 0

面向java--ArrayList

本文基于jdk1.8一.简介ArrayList底层是是数组结构,通过动态的扩容实现容量的增长.继承关系如下二.源码解析1.基本属性 /** * 默认初始容量 */ private static final int DEFAULT_CAPACITY = 10; /** * 空实例用于共享空数组, 有参构建时使用 */ pr...
分类: 其他 发布时间: 10-16 22:03 阅读次数: 0

面向java--CopyOnWriteArrayList

本文基于jdk1.8一.简介CopyOnWriteArrayList 是ArrayList是线程安全版本,它是通过重入锁实现线程安全.继承结构如下二.源码介绍1.基本属性 // 重入锁,用于保证线程安全 final transient ReentrantLock lock = new ReentrantLock(); // 存储数据, 内部方法通过调用getArray/...
分类: 其他 发布时间: 10-16 22:03 阅读次数: 0

面向java--ReentrantLock

本文基于jdk1.81.简介Reentrant 直译过来是"可重入",很直白的表明是个重入锁.继承关系如下锁的具体实现通过内部的sync,其关系如下AbstractQueuedSynchronizer 是一个抽象类,提供了模板方法,子类只需重写lock,tryAcquire之类的方法,即可实现锁的完成功能.AbstractQueuedSynchronizer使用CAS+state实现锁,双向链表的结构实现线程等待.二.源码解析1.基本属性 private final Sync sync;
分类: 其他 发布时间: 10-16 22:02 阅读次数: 0

面向java--ReentrantReadWriteLock

本文基于jdk1.81.简介在本文中与《面向java–ReentrantLock》中一致的方法,不在重复说明。ReentrantReadWriteLock出现是为了解决读多写少的场景出现的,在读读的场景下不互斥,从而提高并发效率。其继承关系如下二.源码解析1.基本属性 // 读锁 private final ReentrantReadWriteLock.ReadLock readerLock; // 写锁 private final ReentrantReadWriteLock.W
分类: 其他 发布时间: 10-16 22:02 阅读次数: 0

面向java--ConcurrentHashMap

本文基于jdk1.81.简介ConcurrentHashMap 是HashMap 的线程安全版本。底层跟HashMap类似,采用了数组+链表+红黑树的结构。其继承关系如下二.源码解析1.基本属性主要列出与HashMap不同的属性 // 最小转移分组大小 private static final int MIN_TRANSFER_STRIDE = 16; private static int RESIZE_STAMP_BITS = 16; // 最大扩容量
分类: 其他 发布时间: 10-16 22:02 阅读次数: 0

面向java--LinkedTransferQueue

本文基于jdk1.81.简介LinkedTransferQueue 底层使用一个双向队列。双向队列是指队列中存在两种节点,一种是数据节点,一种是非数据节点。取数据时,如果当前是数据节点则匹配,出队。否则向队列插入一个非数据节点。存数据时,如果当前是非数据节点则匹配,出队。否则向队列插入一个数据节点。其继承关系如下从继承关系可以看出,LinkedTransferQueue是一个堵塞队列。二.源码解析1.基本属性 // 队列头 transient volatile Node head;
分类: 其他 发布时间: 10-16 22:02 阅读次数: 0

SpringBoot 自定义Validation注解

最近新开了一个项目,虽然hibernate-validator很好用,但是有时不能满足稍微复杂一些的业务校验。为了不在业务代码中写校验逻辑,以及让代码更优雅,故而采用了自定义校验注解的方式。一. 场景说明本例注解应用场景: 填写表单时,某一项数据存在时,对应的一类数据都应存在,一同提交。二.源码1.类注解主注解用于标记要在校验的实体类@Target( { TYPE })@Retention(RUNTIME)@Constraint(validatedBy = RelateOtherValida
分类: 其他 发布时间: 10-16 22:01 阅读次数: 0

IDEA初始设置及常用插件

本文如题,介绍IDEA基础配置及常用插件。IDEA为2020.1.1版本。一.基础配置安装完idea,进入启动页面,选择setting进行默认配置,这样子不用每个项目都配置一遍。1.字体设置进入Editor菜单下选中 Font菜单,设置Size属性,调节字体大小。2.文件编码进入Editor菜单下选中 File Encodings菜单,设置Encoding属性,统一使用UTF-8,保证不乱码。3.自动导包进入Editor菜单,再点击General菜单,选中Auto Import菜单,勾
分类: 其他 发布时间: 10-16 22:01 阅读次数: 0

mybatis流程浅析

写了这么久的项目,都没怎么看过mybatis的源码。趁着周末,简单梳理了下。一.基本流程大体流程如图所示二.构建建议demo参照官方文件构建一个简易的demo,便于debug参看的源码信息。项目大体结构如下图,主要文件为图中已标出DO操作对象public class UserDO { private Long id; private String username; private Integer age; ....get/set}DAO对象publ
分类: 其他 发布时间: 10-16 22:01 阅读次数: 0

SpringBoot word文档转pdf

一.背景项目中有个需求大体意思是,上传一个word模板,根据word模板合成word文件,再将word文件转为pdf。二.方案选择Spire.Doc for Java方案Spire.Doc for Java这个是商用收费的,不过API文档丰富且集成简单,免费版仅支持3页转换。类似的还有ITEXT,这个商用也是受限制的。docx4j方案开源可商用,仅支持docx格式的word。jodconverter+LibreOffice 方案开源可商用,调用本地office服务,进行pdf转换
分类: 其他 发布时间: 10-16 22:01 阅读次数: 0

MyBatis-Plus 更新时间注入失败

项目中使用了MyBatis-Plus(version:3.3.2),为了自动注入时间,按照官方文档进行如下设置:@Componentpublic class CustomMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "gmtCreate"
分类: 其他 发布时间: 10-16 22:00 阅读次数: 0

springboot 接收LocalDateTime

本文基于jdk8。1.标准日期格式转换本类型是指前端传递类似"yyyy-MM-dd HH:mm:ss"格式字符串,后端以 LocalDateTime类型接收。spring默认的使用jackson,故添加maven依赖,可参考官方文档:<dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names
分类: 其他 发布时间: 10-16 22:00 阅读次数: 0

浅析@MapperScan原理

@MapperScan 是spring用于批量注入mybatis映射器(DAO接口)的注解。与之相对应@Mapper进行单个注册。源码如下:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(MapperScannerRegistrar.class)@Repeatable(MapperScans.class)public @interface MapperScan { // 指定
分类: 其他 发布时间: 10-16 22:00 阅读次数: 0

浅析MybatisAutoConfiguration流程

本文主要讲述springboot整合mybatis的自动配置流程。1. MybatisAutoConfigurationMybatisAutoConfiguration是一个配置类,主要是注入SqlSessionTemplate,SqlSessionFactory,以及注册@Mapper标注的类。 @Bean @ConditionalOnMissingBean public SqlSessionFactory sqlSessionFactory(DataSource
分类: 其他 发布时间: 10-16 22:00 阅读次数: 0

java 金额转为中文大写

网上没看到合适的,自己写了个。public class ChineseCapitalUtil { private final static String[] number = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; private final static String[] INTEGER_UNIT = {"拾", "佰", "仟"}; private final static String[] DECIMAL_UN
分类: 其他 发布时间: 10-16 21:59 阅读次数: 0

平安壹钱包2020笔试

平安壹钱包笔试师兄参加的平安壹钱包的笔试题 本人根据师兄的介绍制作的图 方便查看
分类: 其他 发布时间: 10-16 21:59 阅读次数: 0

java基础-容器专题-Collection-Map

容器目录 容器1.Collection:存储着对象的集合1. Set接口:**集,无序,不可重复**2. List接口:**序列,排列有序,可重复**3. Queue接口2.Map:存储着键-值对的映射表,能够实现key快速查找value3. 泛型4. Collection.sort() 对序列中的元素进行排序5. 代码测试实现学生类课程类Set接口的TestMap接口的TestList接口的Test泛型的TestCollections接口的Test测试1.Collection:存储着对象的集合1.
分类: 其他 发布时间: 10-16 21:59 阅读次数: 0

HashSet如何保证元素的唯一性?

HashSet如何保证元素的唯一性? HashSet存储自定义对象来保证唯一性。
分类: 其他 发布时间: 10-16 21:59 阅读次数: 0