自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (4)
  • 收藏
  • 关注

原创 MapStruct踩坑笔记

在日常工作中经常遇到对象转换的问题,众所周知,利用反射的工具虽然很方便,但是在多次调用的情况下,性能会变得很低,反射代价太大,于是想尝试使用一下MapStruct工具。

2023-11-15 21:54:57 226

原创 MyBatis的自定义插件

*** 打印 sql 执行的时间插件*/// 指定拦截器拦截的对象、方法和参数类型// 注册到 Spring 容器,不是 Spring 环境的话可以用 mybatis 的 config 配置进去@Component@Override// 获取代理对象// 获取执行 sql// 此处简单处理一下,只打印参数替换前的 sql,目的是演示自定义插件try {效果如下。

2023-10-14 17:23:40 490

原创 MyBatis 缓存

MyBatis 是现在国内比较流行的 ORM 框架,在学习 MyBatis 的时候,不得不了解 MyBatis 的两级缓存,要了解 MyBatis 的缓存,先要了解 MyBatis 几个重要的对象。

2023-10-14 12:45:03 696

原创 springboot 集成 zookeeper 问题记录

遇到这样的问题起初还是很沮丧的,然后百度也给的那种版本不一致什么的答案,但是明显我这个是跑起来过的,于是只能自己摸索,花了大概 6 个多小时,终于成功解决这个问题,所以想着记录一下自己的解决过程curator 是 zookeeper 的一层封装,可以理解就是 mybatis 和 mysql 的关系。

2023-10-10 13:05:50 629

原创 elasticsearch 6.3.2 windows 安装

elasticsearch 6.3.2 windows 安装下载elasticsearch 下载网址还需要电脑有java8以上的环境.java8的下载地址无脑解压解压不解释启动进入到解压文件的bin目录下,直接双击 elasticsearch.bat 脚本运行.一般建议直接使用cmd命令将elasticsearch变成一个计算机服务,以后不用麻烦来开...

2021-01-03 01:09:13 1749

原创 Java 读取 sun 包的源码

Java 读取 sun 包的源码研究 Jdk 的时候,在查看 sun 包下面的代码时,总是没有 source,于是下载了在 github 上下载了 openjdk 的源码,然后关联上 IDE,就可以看到其源码,下面分享出来以 jdk8 的版本进行举例下载 OpenJDK 的源码到本地git clone https://gitclone.com/github.com/openjdk/jdk.gitcd jdkgit checkout jdk8-b120或者之前 openjdk 维护的镜像其中

2021-01-03 01:04:49 1002

原创 MyBatis的Mapper解析

MyBatis 的 Mapper 解析映射器既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。 但是首先我们需要告诉 MyBatis 到哪里去找到这些语句。 Java 在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括 file:/// 的 U...

2020-03-15 12:29:51 655

原创 MyBatis的MetaObject解析

Mybatis 的 MetaObject 解析MetaObject 源码源码部分public class MetaObject { private final Object originalObject; private final ObjectWrapper objectWrapper; private final ObjectFactory objectFact...

2020-03-15 12:29:14 3643 2

原创 MyBatis的DatabaseIdProvider解析

MyBatis 的 DatabaseIdProvider 解析数据库厂商标识MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句。 如果同时找到带有 databaseId 和不带 databaseId 的相同语句,...

2020-03-13 16:31:01 2988

原创 MyBatis的plugins解析

MyBatis 的 plugins 解析插件MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler ...

2020-03-13 16:30:26 663

原创 MyBatis的environments解析

MyBatis 的 environments 解析配置环境MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中 使用相同的 SQL 映射。有许多类似的使用场景每个 SqlSessionFactory 只能创建一种持有特定的环境...

2020-03-13 16:29:55 237

原创 MyBatis的ReflectorFactory配置

MyBatis 的 ReflectorFactory 配置反射工厂MyBatis 用于缓存 Reflector 的功能,其配置如下<reflectorFactory type="com.yczuoxin.reflectorFactory.MyReflectorFactory"/>ReflectorFactory 接口public interface ReflectorFac...

2020-03-13 16:28:59 1371

原创 MyBatis的ObjectWrapperFactory配置

MyBatis 的 ObjectWrapperFactory 配置对象加工工厂MyBatis 提供在构造对象的时候,对于指定的对象进行特殊的加工,其配置方式如下<objectWrapperFactory type="com.yczuoxin.objectwrapperfactory.MapWrapperFactory"/>ObjectWrapperFactory 接口pub...

2020-03-13 16:28:17 6699 5

原创 MyBatis的ObjectFactory配置

MyBatis 的 ObjectFactory 配置对象工厂MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以通过创建自己的对象工厂来实现,然后通过以下配置就可以使用了<obj...

2020-03-13 16:27:36 151

原创 MyBatis的TypeHandler配置

MyBatis 的 TypeHandler 配置类型处理器无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API)TypeHandler< T&...

2020-03-13 16:26:59 647

原创 MyBatis的Aliase配置

MyBatis 的 Aliase 配置类型别名配置方法有两种:使用别名和类的全限定名一一对应,当这样配置时,Blog 可以用在任何使用 domain.blog.Blog 的地方<typeAliases> <typeAlias alias="Author" type="domain.blog.Author"/> <typeAlias alias="B...

2020-03-13 16:26:13 2620

原创 MyBatis的settings配置

Mybatis 的 settings 配置设置这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为部分配置如下<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/&gt...

2020-03-13 16:25:38 1064

原创 MyBatis的properties配置

MyBatis 的 properties 配置属性这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。可以以 key - value 的形式存储这些配置,使用方法如下在构造函数中传入SqlSessionFactory factory = new SqlSessionFactoryBuilder().buil...

2020-03-13 16:24:46 5814

原创 MyBatis

MyBatis 源码源码版本 3.5.4源码地址中文官方文档核心类SqlSessionFactorySqlSessionConfigurationMapper(非必须)ExecutorSqlSessionFactory 的创建首先读取 MyBatis 配置文件并解析解析 MyBatis 主要配置的类是 org.apache.ibatis.builder.xml.XM...

2020-03-13 16:23:17 116

原创 CentOS下jenkins2安装文档

CentOS 下 jenkins2 安装文档下载首先在 jenkins官网 下载合适版本的 jenkins 2.x,我这里下载的是 jenkins-2.190.1-1.1.noarch.rpm安装下载的是一个 rpm 格式的文件,需要使用命令 rpm -ivh jenkins-2.190.1-1.1.noarch.rpm配置配置端口vim /etc/sysconfig/jenki...

2020-02-24 20:38:48 121

原创 反射使用

反射使用概念反射是计算机程序运行的时候,检查、自省、改变结构和行为的能力使用一般都是先获取 Class 类,然后根据要获取的操作信息,获取类的构造函数,方法,属性等,找到并调用相应的方法用例测试类父类 ReflectSuperBeanpackage com.yczuoxin.bean;public class ReflectSuperBean { public Boo...

2020-02-24 19:46:00 176

原创 Type 接口

Type 接口讨论版本为 JDK1.8java.lang.reflect.Type,所有类型的父接口,在 JDK1.5 引入,接口的源码如下public interface Type { /** * Returns a string describing this type, including information * about any type param...

2020-02-24 19:45:04 299

原创 泛型概述

泛型 Generic 概述什么是泛型泛型是 JDK1.5 引入的一种技术,用参数表示一个类型,如 T,K 等,在实例化的时候再指定其具体的类型,参数类型可以分为三种泛型类类定义时指定参数,即构成了泛型类,例如下面代码中就指定 T 为类型参数,那么在这个类里面就可以使用这个类型了。例如定义 T 类型的变量 name,申明 T 类型的形参 param 等操作泛型接口与泛型类相似...

2020-02-24 19:43:09 114

原创 Linux 下 Docker 安装

Linux 下 Docker 安装准备拥有一台 Linux 系统的机器,我这里使用的是 VMware 搭建的一个 CentOS 7 的操作系统,搭建过程可以参考官方文档卸载历史版本sudo yum remove docker \ docker-client \ docker-client-latest \ ...

2020-01-06 00:26:13 181

原创 安装虚拟机笔记

安装虚拟机准备工作先安装 VMware下载好 Linux 镜像,这边使用的 CentOS 7配置 Linux 环境首先尝试 ping 百度能不能 ping 通ping www.baidu.com发现返回指令ping www.baidu.com: Name or services not known查看 ip 地址ip addr先在 VMware 中找到分配的网卡到...

2020-01-05 14:57:12 186

原创 轻量级锁和重量级锁

轻量级锁和重量级锁必备知识了解轻量级锁,就必须先了解 CAS 指令CAS 指令概念CAS (Compare-And-Swap 或者 Compare-And-Set) 是一种系统原语,原语属于操作系统用语范畴,是由若干条指令组成的,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中不允许被中断,也就是说 CAS 是一条 CPU 的原子指令,不会造成所谓的数据不一致问题其...

2019-12-12 10:53:27 193

原创 Synchronized概述

Synchronized 概述概述synchronized 关键字是 Sun 公司封装的一个锁工具,其在 JDK 1.6 之前就是一把重量级锁,但是在 JDK 1.6 及之后, synchronized 关键字进行了升级,锁会不断地升级偏向锁轻量级锁重量级锁文档官方参考对象实例JVM 中,一个对象实例对应的 instanceOopDesc其中包括对象头(markOop)、元...

2019-12-12 10:53:08 146

原创 偏向锁详解

Synchronized 之偏向锁详解概述synchronized 关键字是 Sun 公司封装的一个锁工具,其在 JDK 1.6 之前就是一把重量级锁,但是在 JDK 1.6 及之后, synchronized 关键字进行了升级,锁会不断地升级偏向锁轻量级锁重量级锁文档官方参考对象实例JVM 中,一个对象实例对应的 instanceOopDesc其中包括对象头(mark...

2019-12-09 00:56:31 3466 4

原创 Spring5的源码构建之旅

Spring5的源码构建之旅最近在看 spring源码深度解析第二版,需要先构建 Spring 的源码,于是开始自己的构建之旅,在公司构建是一帆风顺,可是不知道为什么回家后,构建起来就是各种辛酸,查了很多资料,很多都不是很全面,所以自己写一篇笔记方便大家和自己以后遇到相同问题有地可寻,二话不说,先来说说构建的事吧环境准备Gradle反正我用的最新版应该是 3.0 之后的都没问题,网上教程...

2019-08-11 22:49:36 475

原创 一次mysql的重启失败

一次mysql的重启失败近期阿里云一直提示修复漏洞,然后重启了mysql,导致 mysql 无法启动,看到提示Can't connect to local MySQL server through socket '/tmp/mysql.sock'是否存在,去目录看,果真不在了,那么只能想法办重新构建一个 mysql.sock 文件了。解决方式重新启动 mysqlsudo /etc/i...

2019-07-25 16:52:45 325

原创 colaboratory使用笔记

Colaboratory使用笔记介绍Colaboratory 是 Google 开源出来的云端 IDE 工具来协助 AI 开发,它可以支持 Python2 和 Python3,并且支持 GPU 加速,但是必须在 Google 浏览器上运行使用步骤首先登陆谷歌云盘,免费的会有 15G 的硬盘在 我的云端硬盘 界面中先创建一个文件夹在文件夹中点击 右键 -> 更多 -> 关...

2019-05-08 10:25:53 1949 4

原创 PriorityBlockingQueue笔记

PriorityBlockingQueue笔记概述带优先级的阻塞队列,其底层是一个数组,该队列会自动扩容,默认会使用对象的 compareTo 方法进行比较,也可以自定义 comparator /** Default array capacity. */ private static final int DEFAULT_INITIAL_CAPACITY = 11; /...

2019-04-17 10:38:56 198

原创 LinkedBlockingQueue笔记

LinkedBlockingQueue笔记概述LinkedBlockingQueue 是一个利用独占锁(ReentrantLock)实现的阻塞队列,其底层是一个单向链表(静态内部类 Node),默认构造器中,其队列的长度为 int 的最大值,如果队列满了,后续插入节点阻塞,并视情况是否丢弃,该队列有两个独占锁,对头节点操作使用一个独占锁,对尾节点操作使用一个独占锁,来存放被阻塞的线程/** ...

2019-04-15 10:26:25 82

原创 ArrayBlockingQueue笔记

ArrayBlockingQueue笔记概述ArrayBlockingQueue 是一个利用独占锁(ReentrantLock)实现的阻塞队列,其底层是一个有界数组(Array),由于移动数组的位置代价过大,其利用 takeIndex 的移动来保证查找头节是理论上数组的队列头部,利用 putIndex 保证插入的节点位置理论上是数组队列队尾。此队列用了一个全局的独占锁,粒度大,性能差/** ...

2019-04-15 10:25:25 117

原创 CopyOnWriteList笔记

CopyOnWriteList笔记概述CopyOnWriteList 是一个写时复制的策略保证 list 的一致性,所以在其增删改的操作中都使用了独占锁 ReentrantLock 来保证某个时间只有一个线程能对 list 数组进行修改。其底层是对数组的修改,调用 Arrays.copyarray() 方法进行对数组的复制,在底层还是调用的 C++ 去进行的数组的复制 System.copya...

2019-04-13 16:28:55 5165

原创 ReentrantReadWriteLock笔记

ReentrantReadWriteLock笔记概述为了满足读多写少的场景,ReentrantReadWriteLock 应运而生,采用读写分离的策略,允许多线程同时获取读锁,读写锁内部维护了一个 ReadLock 和一个 WriteLock ,他们依赖 Sync 实现具体功能,Sync 继承字 AQS,并且也提供了公平和非公平的实现,可以近似的理解为书无级别为 Serializable 串行...

2019-04-13 16:28:10 141

原创 LinkedBlockingQueue笔记

LinkedBlockingQueue笔记概述LinkedBlockingQueue 是一个利用独占锁(ReentrantLock)实现的阻塞队列,其底层是一个单向链表(静态内部类 Node),默认构造器中,其队列的长度为 int 的最大值,如果队列满了,后续插入节点阻塞,并视情况是否丢弃,该队列有两个独占锁,对头节点操作使用一个独占锁,对尾节点操作使用一个独占锁,来存放被阻塞的线程/** ...

2019-04-13 16:26:58 124

原创 AQS笔记

AQS笔记概述AQS 是 AbstractQueueSynchronized 抽象同步队列的简称,它是实现同步器的基础组件,并发包中锁的底层就是使用 AQS 实现的。AQS 是一个 FIFO 的双向队列,其内部通过节点 head 和 tail 记录队首和队尾元素,队列元素的类型为 Node。源码state(字段)单一的状态信息,可以通过 getState()、setState()、c...

2019-04-11 10:04:21 353

原创 Mysql打卡第三天

Mysql打卡第三天MySQL表数据类型数值类型日期和时间类型字符串类型用SQL语句创建表语句解释CREATE TABLE table_name ( column1 datatyoe, column2 datatyoe, column3 datatyoe,);table_name -> 表名column -> 列名datatype -...

2019-04-04 11:53:14 155

原创 Mysql打卡第二天

Mysql打卡第二天导入示例数据库登录Mysqlmysql -uroot -p****创建数据库CREATE DATABASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;use yiibaidb;导入数据use yiibaidb;source D:/worksp/yiib...

2019-04-02 18:51:55 176

AspectJ-1.9.4安装文件.zip

AspectJ安装文件,官网下载速度惨不忍睹,在此方便大家进行下载安装

2019-08-11

Balasmiq_Mockups

打开bmpr的软件,分享出来也方便自己下载使用.如果需要自己下载.

2018-07-10

VC2015运行库64位

VC2015 C++ 运行库64位的压缩包,直接傻瓜式安装,安装成功后自动带有vcruntime140.dll

2018-07-04

VC2015运行库32位

VC2015 C++ 运行库32位的安装包,直接傻瓜式安装,安装成功后自动带有vcruntime140.dll

2018-07-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除