JAVA
itw_zhangzx02
这个作者很懒,什么都没留下…
展开
-
spring源码阅读--我们的第一个demo
如何写一个我们的demo?首先,新建一个模块module,使用maven构建。pom文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema...原创 2020-01-23 09:56:51 · 354 阅读 · 0 评论 -
Java设计原则及设计模式个人总结
七大设计原则1.开闭原则,开闭原则是总纲,我们做系统首先需要满足开闭原则。软件实体应对扩展开放,而对修改关闭。2.单一职责原则,用于控制类的粒度大小,就是我们重构时,将一个复杂的类拆分为多个类。尽可能地将一个类职责单一化。3.接口隔离原则,使用多个专门的接口,而不使用单 一的总接口,即客户端不应该依赖那些它不需要的接口。这个是关于接口定义时的指导方针,可以对比类的单一职责原则。就是要求将复...原创 2020-01-22 21:48:17 · 163 阅读 · 0 评论 -
spring源码阅读环境的搭建问题记录
首先,修改maven镜像 repositories { maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} maven { url "http://repo.springsource.org/plugins-release" } }不修改的化会出现下面问题:Could not resol...原创 2020-01-21 20:13:37 · 553 阅读 · 0 评论 -
Java8新特性---四大类型函数式接口
lambda表达式:将一段代码进行赋值,或入参。实质:佚名内部类Runnable接口就是一个函数式接口。常用的函数式接口:消费型接口 BiConsumer:俩个入参,无返回值Consumer :一个入参,无返回值package java.util.function;import java.util.Objects;@FunctionalInterfacepublic inte...原创 2020-01-14 22:45:57 · 580 阅读 · 0 评论 -
springBoot学习---从SSM的动态数据源到SpringBoot的动态数据源的实现方案二
和方案一区别:spring: datasource: primary: url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8 username: zhangzx password: 123 driverClassName: com.mysql.cj.jdbc.Dr...原创 2020-01-12 11:53:47 · 114 阅读 · 0 评论 -
springBoot学习---从SSM的动态数据源到SpringBoot的动态数据源的实现方案一
一共有俩中实现方案,最近方案一已经调通,记录如下:难点:如何将动态数据源的注入到sqlSessionFactory中。方案一的实现数据源的注入,依赖于注解@MapperScan,在这个注解中有下面的属性值,我们人为生成,然后注入进去。sqlSessionFactoryRef方案二的实现方式,学习我们的通用Mapper插件,采用实现接口ImportBeanDefinition...原创 2020-01-11 14:17:20 · 138 阅读 · 0 评论 -
springBoot整合通用Mapper插件的源码简单解读
本篇主要是简单讲解,通用Mapper的实现原理,不是整合教程。每次学习一个新的框架/插件的时候,我们一开始都是按照官方示例写代码,达到了会用的目的。等用一段时候之后,就应该学习源码,学习它是如何设计的,为啥,简简单单的一个配置就可以完成很多事情。示例代码来自插件自带的springBoot整合示例代码: //简单的依赖,一个starter,一个h2内存数据库 <dep...原创 2020-01-07 10:53:47 · 667 阅读 · 0 评论 -
SpringBoot源码阅读---整合mybatis
依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</versi...原创 2020-01-05 16:48:10 · 266 阅读 · 0 评论 -
SpringBoot源码阅读--自定义Starter
新建一个maven项目,引入相关依赖。然后在META-INF文件夹下新建文件 spring.factories。配置我们的自动配置类<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or...原创 2020-01-04 20:24:21 · 126 阅读 · 0 评论 -
SpringBoot源码阅读--配置文件详解
下面是官网的配置的优先级:(数字越小的,优先级越高)Spring Boot设计了一个非常特别的PropertySource顺序,以允许对属性值进行合理的覆盖,属性会以如下的顺序进行设值:home目录下的devtools全局设置属性(~/.spring-boot-devtools.properties,如果devtools激活)。 测试用例上的@TestPropertySource注解。...原创 2019-12-31 15:40:42 · 255 阅读 · 0 评论 -
jvm的性能调优
常规的参数设置:-Xms2048m -Xmx2048m -Xmm700m按照jvm规范,一般年轻代:老年代是 1:2年轻代中s:e为1:8.尽量将堆大小设置为固定值,不要使用浮动扩容。比如:-Xms2048m -Xmx4096m还有就是,堆大小不是越大越好,如果堆内存太大,到时候一次full gc可能需要好久才触发一次,这样每次full gc时将会造成很大的停顿时间。...原创 2019-12-27 23:26:13 · 265 阅读 · 0 评论 -
SpringBoot源码阅读--编写我们的HelloWorld
新建一个 module在我们的项目根目录下:一直下一步就可以了。建好的module后,修改pom文件:(这个可以参考官网,我这按官网操作的)<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w...原创 2019-12-23 22:42:18 · 105 阅读 · 0 评论 -
SpringBoot源码阅读--环境搭建
先在github上找到springBoot的仓库,如果直接clone或者先fork到自己的github,再执行clone都会失败。最后,折中的方法,直接下载源码包.zip文件,然后导入本地。直接到releases中找一个版本的,然后下载.zip文件。然后解压到你的任意位置。再用idea打开pom文件前,先记得将镜像地址配好了,配成阿里云的。配置你要使用的maven的配置文件,添加镜...原创 2019-12-23 16:26:11 · 497 阅读 · 0 评论 -
JAVA并发编程--ForkJoin的使用
思想:拆分归并1.任务拆分 fork()2.结果归并 join()package learn.ForkJoin;import java.util.concurrent.ForkJoinPool;public class ForkJoinTest { public static void main(String[] args) { test(); } ...原创 2019-12-22 16:30:27 · 140 阅读 · 0 评论 -
单例模式singleton--你真的会用吗?
作为23中设计模式中最简单的一种模式,网传有8中写法。我想说的是:会的多不如学的精,今天看了一个公众号推送的文章,上面直接说双重检查机制的单例是线程安全的。首先,从大类上分:饿汉和懒汉。就是要不要延迟实例化的问题?如果,你项目中的有配置类,构造类等,反正你迟早要用到,为了不出错,直接饿汉式就好了。写代码首先是安全,其次是性能,千万别学了点花把式就看不起基础的拳脚。package le...原创 2019-12-21 16:14:59 · 63 阅读 · 0 评论 -
Java的Stream流编程的排序sorted方法里参数o1,o2分别代表什么?
先说结论:在sorted方法中,o1是最后面的元素,o2是倒数第二个元素,以此类推,流是处理元素是从后面开始取值。package com.br.itwzhangzx02.learn;import org.junit.Test;import java.util.ArrayList;import java.util.List;import com.br.itwzhangzx02...原创 2019-12-21 10:29:24 · 8458 阅读 · 1 评论 -
JDK1.8动态代理源码分析
最近在学习MyBatis源码时,想要查看下JDK是如何自动生成的Mapper代理类。于是仔细看了源码,在这里做个记录。package com.br.itwzhangzx02.learn;import learn.User;import learn.UserMapper;import org.apache.ibatis.io.Resources;import org.apache.i...原创 2019-12-15 16:27:44 · 179 阅读 · 0 评论 -
MyBatis源码的学习(1)---mybatis源码的下载和学习
安装的mysql为5.7.28版本;需要修改时区和sql-mode。mysq的配置文件内容如下:其中后面的三个参数必须加上,不然会出问题。[mysql]# 设置mysql客户端默认字符集default-character-set=utf8 [mysqld]# 设置3306端口port = 3306 # 设置mysql的安装目录basedir=C:\Program Files...原创 2019-12-12 15:08:25 · 148 阅读 · 0 评论 -
jvm性能调优相关
模拟创建大量对象并被回收的情况,代码如下:public class Person { String id ; String name ; public Person(String id, String name) { super(); this.id = id; this.name = name; } public String getId()...原创 2019-12-02 16:53:00 · 67 阅读 · 0 评论 -
JAVA并发编程--共享锁Semaphore的使用
信号量:Semaphore查看代码,可以对比ReentrantLock的源码一起看。发现这俩个类代码好多是差不多的。唯一不同的是:Semaphore的获取许可操作,一定条件下会触发唤醒后续线程尝试获取许可的操作。还有就是,它是倒计数的方式。另外,如果我们一开始许可数设为1,其实就可以当做一个互斥的不可重入的锁的来使用。下面是自己写的一个小demo,做线程交替输出。impo...原创 2019-11-29 10:37:36 · 145 阅读 · 0 评论 -
使用JUC下Condition实现生产者消费者模型
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class BoundedBuffer { final Lock lock = new ReentrantLoc...原创 2019-11-22 14:53:04 · 166 阅读 · 0 评论 -
JAVA并发中的ReentrantLock锁的实现
public class ReentrantLock implements Lock, java.io.Serializable { private final Sync sync; abstract static class Sync extends AbstractQueuedSynchronizer { ... } sta...原创 2019-11-16 22:19:39 · 93 阅读 · 0 评论 -
JAVA并发相关的思维导图
这个图是来自王宝令老师的,只用于学习,图中的协作,实际就是线程通信。并发编程的三大问题根源:可见性(缓存导致),原子性(线程切换),有序性(编译优化,指令重排)。只要保证了这三个问题,那么就不会出现并发问题。比如:volatile变量只能保证可见性和有序性,没有保证原子性(互斥锁保证原子性)。所以并发包中的锁lock的核心就是volatile修饰公共资源(state),然后对公共资...原创 2019-11-16 20:21:04 · 161 阅读 · 0 评论 -
AQS中Condition接口实现的await方法的简单分析
最近,重读源码,想着做个笔记。这次重点读的是await方法的源码。 public final void await() throws InterruptedException { if (Thread.interrupted()) throw new InterruptedException(); Node no...原创 2019-11-06 15:48:35 · 411 阅读 · 0 评论 -
JAVA中的GPG加解密的一些使用填坑经验
第一个坑:生产上业务要求用的是子密钥加密文件。@SuppressWarnings("unchecked") public static PGPPublicKey readPublicKey(InputStream in) throws IOException, PGPException { PGPPublicKeyRingCollection ke...原创 2019-08-09 18:47:43 · 991 阅读 · 0 评论 -
java 校验四位或六位数字格式的验证码
工作需要,再次复习巩固下正则表达式。package com.bris.util;import java.util.Calendar;import java.util.HashMap;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;import org....原创 2019-05-31 15:20:48 · 2519 阅读 · 0 评论