12 2021 档案
摘要:一、静态成员在Java8以前,我们要定义一些常量,一般会写一个类,类中都是final static的一些变量,如下: public class Constants { public static final int MAX_SERVICE_TIME = 100; } public class Hel
阅读全文
摘要:一、什么是Ioc/DI?IoC 容器:最主要是完成了完成对象的创建和依赖的管理注入等等。先从我们自己设计这样一个视角来考虑:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系
阅读全文
摘要:在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven
阅读全文
摘要:要理解它们的区别,首先我们需要明白的git的架构,它是分布式的版本管理系统。我画了张图,不仅仅涉及到git fetch和git pull,对整体理解也会很有帮助。如下: 上图展示了git的整体架构,以及和各部分相关的主要命令。先说明下其中涉及的各部分。工作区(working directory),简
阅读全文
摘要:Java 8对注解处理提供了两点改进:可重复的注解及可用于类型的注解重复注解:即允许在同一申明类型(类,属性,或方法)前多次使用同一个类型注解。在java8 以前,同一个程序元素前最多只能有一个相同类型的注解;如果需要在同一个元素前使用多个相同类型的注解,则必须使用注解“容器”。java8新增了重复
阅读全文
摘要:服务提供者初始化完成之后,对外暴露Exporter。服务消费者初始化完成之后,得到的是Proxy代理,方法调用的时候就是调用代理。服务消费者经过初始化之后,得到的是一个动态代理类,InvokerInvocationHandler,包含MockClusterInvoker,MockClusterInv
阅读全文
摘要:package com.springboot.study.tests.trees; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @Author: guodon
阅读全文
摘要:前言深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath First Search)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等,也频繁出现在 leetcode,高频面试题中。本文将会从以下几个方面来讲述深度优先遍
阅读全文
摘要:前言Unsafe是Java中一个底层类,包含了很多基础的操作,比如数组操作、对象操作、内存操作、CAS操作、线程(park)操作、栅栏(Fence)操作,JUC包、一些三方框架都使用Unsafe类来保证并发安全。Unsafe类在jdk 源码的多个类中用到,这个类的提供了一些绕开JVM的更底层功能,基
阅读全文
摘要:1、匹配任意类型的通配符在开发中对象的引用传递(向上向下传递)是最常见的,但是,在泛型的操作中,在进行引用传递的时候泛型类型必须匹配才可以传递,否则不能传递。例如,如下没有进行泛型类型匹配,一个是String,一个是Object类型。 package Thread1; class Info<T>{
阅读全文
摘要:Java集合中的泛型机制集合中之所以可以存放不同类型的数据是因为全部当作Object类型处理的,当从集合中取出元素并希望表达该数据最原始的类型时就需要进行强制类型转换,强制类型转换不仅使得代码更加繁琐而且可能导致类型转换异常的发生。为了避免上述问题的发生,从jdk1.5开始提供泛型机制,也就是在集合
阅读全文
摘要:一、深度分页方式from + sizees 默认采用的分页方式是 from+ size 的形式,在深度分页的情况下,这种使用方式效率是非常低的,比如我们执行如下查询: GET /student/student/_search { "query":{ "match_all": {} }, "from"
阅读全文
摘要:场景描述相信大家都了解 jps、jmap、jstack 等常用 java 堆栈输出命令,有过 dump、gc 分析的经验,面试中会经常被问到有关 JVM 问题,比如你是否了解你的程序在生产环境的基础配置,堆内存、栈内存怎么设置的,又是怎么估算的大小,或是垃圾回收器及回收垃圾算法的最佳使用策略。作为项
阅读全文
摘要:添加切面依赖 <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.5</version> </dependency> 注解代码: @Target({ElementTyp
阅读全文
摘要:处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。对于线上系统突然产生
阅读全文
摘要:Java 提供了很多服务提供者接口(Service Provider Interface,SPI),允许第三方为这些接口提供实现。常见的 SPI 有 JDBC、JCE、JNDI、JAXP 和 JBI 等。这些 SPI 的接口由 Java 核心库来提供,而这些 SPI 的实现代码则是作为 Java 应
阅读全文
摘要:G1介绍(Garbage first)G1主要面向的是服务端的垃圾回收器。在G1之前,JVM的主要垃圾回收器采用的是物理分代的思想,将内存区域严格的划分成年轻代(young GC)和老年代(major GC),然后针对于年轻代和老年代使用不同的垃圾回收器进行GC操作,直到G1,G1采用的是对整个堆进
阅读全文
摘要:MyBatis-plus是完全基于MyBatis开发的一个增强工具,是在MyBatis的基础上做增强的框架,为简化开发、提高效率而生。它在MyBatis原本的框架上增加了很多实用性功能,比如乐观锁插件、字段自动填充功能、分页插件、条件构造器、sql 注入器等等。使用 MyBatis-plus 可以完
阅读全文