自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Spring中一些工具类

一、ClassUtils1、forName方法创建Class对象,但不是直接创建。如果是一些常见的类,如float、int、short就直接返回对应的class,如果是某些数组,也会返回对应的类型。如果都不是,就会Class.forName创建该类,第一次创建失败后,会把类名转成内部类创建,如果还失败,就抛出异常public static Class<?> forName(String name, @Nullable ClassLoader classLoader) thro

2020-06-11 22:25:54 89

原创 《从零开始带你成为JVM实战高手》 笔记八

一、常见导致OOM的原因1、递归、循环调用导致虚拟机栈内存溢出举例:找出D盘下文件名中含有txt的文件,D盘下有很多文件夹,每个文件夹下又有很多文件夹,如果使用递归可能导致栈溢出,如何解决?2、 堆内存放不下过多对象...

2020-10-14 10:59:13 54 1

原创 《从零开始带你成为JVM实战高手》 笔记七

一、第五十课 jstat指令1、命令jstat -gc [PID] 间隔时间 次数 每隔多少时间打印一次JVM内存状况,总共打印指定次数二、第五十一课 jmap、jhat指令分析大对象1、使用jmapjmap -dump:live,format=b,file=dump.hprof [PID] 将堆内存快照放到dump.hprof文件中,这个是二进制文件,不能直接打开2、使用jhatjhat dump.hprof -port 7000 启动jhat服务器,指...

2020-10-14 10:54:36 37

原创 《从零开始带你成为JVM实战高手》 笔记六

一、第四十三课 模拟young gc编写测试代码 public static void main(String[] args) { byte[] array1 = new byte[1024 * 1024]; array1 = new byte[1024 * 1024]; array1 = new byte[1024 * 1024]; array1 = null; byte[] array2 = new byte[1024 * 1024 * 2]; }设置JV

2020-10-07 17:33:27 53

原创 《从零开始带你成为JVM实战高手》 笔记五

一、第二十九课 G1收集器简介1、可以同时回收新生代和老年代。将Java堆内存拆分成多个大小相等的Region,G1页也有新生代和老年代的概念,不过是逻辑上的概念。也就是说,一个Region可以先作为新生代,在被回收后,又作为老年代了2、设置垃圾回收的预期停顿时间比如可以指定,G1垃圾回收时,在1小时内由于回收导致的Stop the World不超过1分钟3、G1会追踪每个Region里的回收价值即每个Region中的内存大小,回收它们要多少时间,以此在垃圾回收时进行控制,这就是G.

2020-10-04 13:48:07 36

原创 《从零开始带你成为JVM实战高手》 笔记四

一、第二十二课 ParNew工作机制

2020-10-03 16:06:07 34

原创 《从零开始带你成为JVM实战高手》 笔记三

一、第十五课 JVM中的对象什么情况下会被回收1、可达性算法对每个对象分析有谁在引用,然后一层一层往上判断,看是否有一个GC Roots。一般将局部变量和静态变量看作GC Roots,即只要对象被方法的局部变量、类的静态变量引用了,就不会回收它们2、引用类型强引用:绝对不会被垃圾回收 软引用:正常的垃圾回收后内存还是不够,就会回收软引用 弱引用 :发生垃圾回收,就会被回收3、finalize一个对象要被回收时,还是可以拯救的。可以通过重写Object类的finalize方法,让某个

2020-10-02 22:44:07 34

原创 《从零开始带你成为JVM实战高手》 笔记二

一、第八课 聊聊年轻代、老年代年轻代:创建和使用完后立马就要回收的对象放在里面老年代:需要一直存在的对象放在里面如图所示思考题问题:方法区内会不会进行垃圾回收回答:在以下几种情况下,方法区里的类会被回收1)首先该类的所有实例对象都已经被回收2)加载这个类的classloader已经被回收3)对该类的class对象没有任何引用二、第九课 对象在JVM内存中如何分配如果一个实例对象在新生代中,成功的在15次垃圾回收之后,还没被回收掉,就会被转移到老年代中总

2020-10-01 15:12:23 53

原创 《从零开始带你成为JVM实战高手》 笔记一

一、Java是如何运行起来的写好的java文件会被编译成class文件,类加载器会将class类加载到JVM中,JVM会基于自己的字节码执行引擎,来执行加载到内存中的那些类二、JVM的类加载机制1、类加载过程一个类从加载到使用会经历下面的这个过程加载、验证、准备、解析、初始化、使用、卸载验证阶段:校验加载进来的class文件是否符合规范准备阶段:给加载进来的类分配内存空间、类变量(static修饰的)分配内存空间、赋予初始值准备阶段给类变量赋值,只会赋予初始值,例如p..

2020-09-20 19:33:52 47

原创 DBLE源码解读二 ServerConfig初始化

上一章描述了cluster.cnf和bootstrap.cnf的初始化过程,主要注意ParameterMapping.mapping方法,接下来就开始看DbleServer类中的startup方法。startup方法第一步就是创建ServerConfig对象,源码如下 public ServerConfig() { //加载 sharding.xml,db.xml and user.xml confInitNew = new ConfigInitializer(f

2020-09-18 17:38:34 14

原创 DBLE源码解读一 cluster.cnf和bootstrap.cnf初始化

cluster.cnf在ClusterController.loadClusterProperties方法中初始化,bootstrap.cnf在SystemConfigLoader.initSystemConfig方法中初始化首先看一下loadClusterProperties,源码如下 public static void loadClusterProperties() throws InvocationTargetException, IllegalAccessException {

2020-09-16 17:11:54 13

原创 XXL-JOB研究二 调度中心

111

2020-08-29 21:49:47 88

原创 XXL-JOB研究 一 执行器启动流程

执行器启动,初始化路口在XxlJobSpringExecutor类的afterSingletonsInstantiated方法中,源码如下 @Override public void afterSingletonsInstantiated() { // 从Spring上下文中获取所有类,遍历类,获取所有添加了XxlJob注解的方法 // 然后调用registJobHandler将这些方法注册到缓存中 initJobHandlerMethodRe

2020-07-31 22:21:27 162

原创 XXL-JOB研究 序章 初探XXL-JOB

一、创建简单调度任务根据官方文档,我们基于Bean(类)模式创建一个调度任务public class MyJobHandler1 extends IJobHandler { @Override public ReturnT<String> execute(String param) throws Exception { System.out.println(new Date() + " MyJobHandler1启动"); return null; }}在启

2020-07-23 23:25:25 68

原创 SpringCloud 启动流程 preInstantiateSingletons

preInstantiateSingletons方法会创建对象,是很重要的一个方法,首先看一下源码 @Override public void preInstantiateSingletons() throws BeansException { if (logger.isTraceEnabled()) { logger.trace("Pre-instantiating singletons in " + this); } List<String> beanNames

2020-07-16 23:41:10 72

原创 SpringCloud 启动流程三 run方法之prepareEnvironment

执行完listeners的starting方法,触发完监听器的方法后,就要进入prepareEnvironment方法,源码如下: private ConfigurableEnvironment prepareEnvironment(SpringApplicationRunListeners listeners, ApplicationArguments applicationArguments) { ConfigurableEnvironment environment = getO

2020-07-03 10:06:52 103

原创 SpringCloud 启动流程二 run方法之getRunListeners

构造方法完成后,就会进入SpringApplication.run方法,代码如下: public ConfigurableApplicationContext run(String... args) { //开始计时 StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; Collection&l

2020-06-23 16:50:04 102

原创 AnnotationAwareOrderComparator.sort 排序规则

我们先看一下AnnotationAwareOrderComparator的关键源码public class AnnotationAwareOrderComparator extends OrderComparator { protected Integer findOrder(Object obj) { // Check for regular Ordered interface Integer order = super.findOrder(obj); if (order != nu

2020-06-18 20:05:36 380

原创 SpringCloud 启动流程一 SpringApplication构造函数

调用SpringApplication.run方法后,第一步会进入到SpringApplication的构造方法中。构造方法源码如下: public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { this.resourceLoader = resourceLoader; Assert.notNull(primarySources, "PrimarySources m

2020-06-18 19:29:24 80

原创 Cassandra数据源动态切换

一、背景 项目以cassandra作为非关系型数据库,并根据租户分库,程序查询时需要根据租户信息查询对应的数据库,因子需要程序可以切换数据源。二、SpringBoot集成cassandra1、导入pom依赖<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-cassandra</ar...

2020-05-18 17:56:06 248

原创 SQLServer创建视图,并且只能访问该视图

1、创建视图create view [视图名] as XXXXX2、创建服务器角色exec sp_addrole [角色名]3、给角色授予访问的视图GRANT SELECT ON [视图名] TO [角色名]4、添加只允许访问指定库的用户exec sp_addlogin [用户名],[用户密码],[数据库名]5、给用户添加只允许访问指定视图exec sp_add...

2020-03-18 09:55:01 47

原创 redis笔记

一、redis五大类型1、String:一个key对应一个value2、List:底层是链表,可以添加一个元素到列表的左右两边,没有值时key会消失3、Hash(类似Map<String,Map<String,Object>>):K-V模式不变,但V又是一个K-V,适合存储对象4、Set5、Sorted Set(有序Set):每个元素都会关联一个doub...

2020-03-09 23:12:45 28

原创 Linux操作,安装docker,mysql,canal,DBLE等流程

一、Linux操作1、更新安装包 yum update2、切换Root su root3、修改root密码 passwd root4、安装vim yum -y install vim(不打-y的话,还需要确认y还是n)5、安装jdk 将jdk解压到usr/java文件夹下 修改环境变量 vim /etc/...

2019-11-17 21:45:54 460

原创 AQS类源码详解

一、简介 AbstractQueuedSynchronizer类是一个极其重要的类,Lock.new Condition()返回的Condition对象就是AQS中的内部类。CyclicBarrier、CountDownLatch等类中的await方法就是调用的AQS类中的方法。 AQS有独占(只能一个线程运行,如ReentrantLock)和共享模式(多个线程...

2019-08-15 22:03:12 112

原创 CyclicBarrier源码分析

1、构造函数public CyclicBarrier(int parties, Runnable barrierAction) { if (parties <= 0) throw new IllegalArgumentException(); //指定多少个线程需要调用await方法 this.parties = parties; ...

2019-06-17 22:40:44 27

原创 HashMap详解

一、jdk1.7中HashMap的底层实现       HashMap中数据是以数组+链表的形式存储的。它会把数据封装到内部类Entry类型的数组中。transient Entry&lt;K,V&gt;[] table = (Entry&lt;K,V&gt;[]) EMPTY_TABLE;static class Entry&lt;K,V&gt; implements Map....

2018-07-27 17:34:21 63

转载 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore

一.CountDownLatch用法  CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。  CountDownLatch类只提供了一个构造器: 1 public CountDo...

2018-07-27 13:54:52 36

原创 深入理解java虚拟机(第2版)读后笔记-虚拟机类加载机制

一、类的加载过程包括以下几个阶段。1、加载:在加载阶段,虚拟机需要完成以下3件事情:    (1)通过类的全限定名获取类的二进制字节流。    (2)将该字节流所代表的静态存储结构转化为方法区的运行时数据结构    (3)在内存中生成一个代表该类的Class对象,作为方法区这个类的各种数据的访问入口2、验证:确保Class文件的字节流中包含的信息符合当前虚拟机的要求,且不会危害虚拟机自身的安全。 ...

2018-05-15 14:24:41 72

转载 详解CSS选择器、优先级与匹配原理

给一个p标签增加一个类(class),可是执行后该class中的有些属性并没有起作用。通过Firebug查看,发现没有起作用的属性被覆盖了。这个时候突然意识到了CSS选择器的优先级问题,这里就CSS选择器的优先级问题做了一些总结。51CTO推荐阅读:巧妙地使用CSS选择器选择器种类严格来讲,选择器的种类可以分为三种:标签名选择器、类选择器和ID选择器。而所谓的后代选择器和群

2016-06-29 13:52:05 166

转载 java代码实现图片压缩

public class Demo { public static String zipImageFile(String oldFile, int width, int height, float quality, String smallIcon) { if (oldFile == null) { return null; } String newImage = null;

2016-04-18 14:15:20 298

转载 ClassLoader().getResourceAsStream()和Class.getResourceAsStream()的区别

Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致。     例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.test.mycode包下查找相应的资源。     如果这个name是以 '/' 开头的,那么就

2016-03-23 13:45:38 149

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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