自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql连接报错Communications link failure

Mysql连接报错Communications link failure

2022-10-31 17:48:09 528 1

原创 Spring Boot 中实现代理

功能:定义一个功能,使指定的方法执行前后输出日志信息。1、定义一个注解,添加的方法上具有该功能,或者添加到类上,类下的所有方法都具有该功能@Target( {ElementType.TYPE, ElementType.METHOD })@Retention(RetentionPolicy.RUNTIME)public @interface LogAround {}2、实现PointCut接口,找出标注注解的方法或类// 这里是直接继承了一个便捷基类,实现 match 方法public c

2021-08-13 18:51:00 1711

原创 怎么防止反射、序列化问题,实现一个完美的单例?

1、编码实现的单例静态内部类方式(JVM类加载实现)public class Singleton { private Singleton() {} private static class SingleTonHolder { static final Singleton INSTANCE = new Singleton(); } // 调用 getInstance 方法,才获取加载 SingleTonHolder,JVM保证只会有一个线程对类进行加载

2021-04-22 18:05:28 240

原创 Spring 的 SmartInitializingSingleton 接口

在查看 Application 的refresh 方法中,最后实例化所有的bean,其中单独处理了SmartInitializingSingleton ,记录下。一、源码相关 // DefaultListableBeanFactory // 确保所有非延迟初始单例都实例化。 @Override public void preInstantiateSingletons() throws BeansException { if (logger.isTraceEnabled()) {

2021-04-13 18:06:21 620

原创 spring 中 ApplicationContext 的 refresh 方法做了什么

refresh 方法可以说是Spring中核心的一个方法了,通过这个方法可以获取bean的定义、创建添加bean到spring容器中一个其它扩展功能。记录下相关内容。有个问题:refresh方法为什么要叫 refresh,其实从下文中就可以看出来为什么要叫refresh。方法文档说明加载或刷新配置的持久化表示形式,这个配置可以是java 代码的配置,也可以是xml文件、properties文件一个关系型数据库样式或者其它文件格式。由于这是一种启动方法,因此,如果失败,则应销毁已创建的单例,以避免悬挂

2021-04-13 14:39:07 1112

原创 Spring 在 META-INF 下放了哪些文件

待完成。。。spring.factoriesspring-autoconfigure-metadata.propertiesspring.handlers

2021-04-12 15:56:36 566

原创 都是类找不到,ClassNotFoundException和NoClassDefFoundError有什么区别?

在开发部署时,启动出现了这个问题。有java.lang.NoClassDefFoundError 和 java.lang.ClassNotFoundException ,看名字都大概是类找不到,那他们它们有什么区别?ClassNotFoundExceptionClassNotFoundException 从后缀可以看出是Exception 的子类。javadoc说明:当应用程序尝试使用其字符串名称通过其字符串名称加载类时抛出,但是找不到指定类名对应的类定义,包括1、Class 的 forName

2021-04-12 11:33:29 143

原创 Spring - BeanPostProcessor 接口

最近在查看Spring Boot启动源码,学习重要的 AbstractApplicationContext 中refresh() 方法,发现其中有个关于 bean 创建时拦截的知识点。一、接口定义先查看 BeanPostProcessor接口定义。// 允许自定义修改一个bean 的实例化的工厂钩子// 注册:ApplicationContext 获取 BeanPostProcessor 的 bean,并且应用于之后的所有 bean 的创建// 排序:BeanPostProcessor 根据实现

2021-04-08 12:44:26 189

原创 Spring 中的 Aware 相关接口

查看Spring相关源码,会发现很多类都实现了各种 xxxAware 接口。为什么实现 Aware 接口,作用是什么?先看Aware 接口的文档说明简单翻译一下,实现Aware接口的bean可以被Spring 容器通过回掉方式处理,但是这个接口只是一个标记接口,类似于java.io.Serializable 用于标记对象可序列化,java.util.RandomAccess 表明支持快速访问。需要使用子接口来完成功能。继续看下 Aware接口的子接口有哪些有两个比较熟悉的子接口,Applicat

2021-03-31 11:17:51 196

原创 HashMap遍历顺序在JDK7和JDK8中的不同

起源于看到一篇文章HashMap的为啥用尾插法?HashMap使用存储对象的hash值来确定在hash表中的存放位置,会遇到hash冲突的情况,即两个不同的对象所计算的hash值相同。JDK7使用链表结构解决hash冲突,JDK8使用链表和红黑树(只有冲突的hash链表长度大于8且hash表长度大于64才会转化)解决hash冲突。虽然相同点都是使用了链表来解决冲突,但是链表插入数据的方法却不同。JDK7使用了头插法,即对象添加都链表的头部;JDK8使用了尾插发,对象添加到链表的尾部。HashMap的遍

2021-03-31 09:35:54 362

原创 Spring Cloud简单笔记

spring boot下的配置文件application.yaml中属性spring.application.name=xxx在spring cloud中会被注册为服务名高可用:减少不提供服务的时间1. 服务治理主要用来实现各个微服务实例的自动化注册与发现 [1-39]服务注册在服务治理框架中,会有一个注册中心,每个服务单元向注册中心登记自己提供的服务。通过注册中心互相注册可组成高可用集群。服务发现在服务治理框架下,服务间的调用不再通过具体指定的实例地址来实现,而是通过服务名发起请求.

2021-03-30 14:36:14 535

原创 SpringBoot简单使用笔记

项目结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KefEFxpz-1617086101760)(./SpringBoot项目结构.bmp)]SpringBoot默认两种配置文件方式 .properties和 .yml,其中properties配置文件的优先级高于 .yml入口类需要放在包的最外层,以便能够扫描到所有子包中的类@SpringBootApplication 是一个组合注解,包含 @EnableAutoConfiguration、@..

2021-03-30 14:35:12 340

原创 Redis笔记

docker 命令docker run -d -p 6379:6379 --name myredis redis:latest通过redis-cli或者redis client连接redis,视图化工具有RedisDesktopManagerredis-cli连接本地docker exec -it [ContainerID] redis-cli连接远程docker exec -it [ContainerID] redis-cli -h [Ip Address] -p [Port]

2021-03-30 14:34:00 119

原创 Prometheus笔记

https://blog.csdn.net/luanpeng825485697/article/details/82318204https://www.cnblogs.com/yangxiaoyi/p/7398156.htmlPrometheus 实战1. 简介主要功能多维数据模型 (时序由 metric 名字和 k/v 的 labels 构成)灵活的查询语句(PromQL)无依赖存储,支持 local 和 remote 不同模型采用 http 协议,使用 pull 模式,拉取数据,简单易

2021-03-30 14:33:04 266

原创 ElasticSearch合集

《Elasticsearch 权威指南》中文版]安装kibana权威指南windows下安装详细教程springboot整合elasticsearchElasticsearch Java Rest Client APIcentos7安装elasticsearch启动/usr/local/elaticsearch/elasticsearch6.5.1/bin./elaticsearch -d # 后台运行查看所有索引curl 'localhost:9200/_cat/indice

2021-03-30 14:30:07 85

原创 ElastAlert笔记

ElastAlert官方文档安装参考curl -H 'Content-Type: application/json' -X POST "http://192.168.254.128:9200/logstash-2017.08.28/test" -d '{"@timestamp": "2017-08-28T10:54:41.000Z","field": "value"}'curl -H 'Content-Type: application/json' -X POST "http://192.

2021-03-30 14:26:12 733

原创 Docker笔记

Docker的三大核心概念镜像(Image)、容器(Container)、仓库(Respository)镜像( Image )和容器( Container )的关系,就像是面向对象程序设计中的 类 和 实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。Docker镜像 *镜像是运行容器的前提获取镜像docker [image] pull NAME[:TAG]NAME:镜像仓库名称(用来区分镜像)TAG:镜像的标签(表示版本信.

2021-03-30 14:25:07 195

原创 Spring Oauth2

链接Oauth2 简介相关名词Resource owner(资源拥有者):拥有该资源的最终用户,他有访问资源的账号密码;Resource server(资源服务器):拥有受保护资源的服务器,如果请求包含正确的访问令牌,可以访问资源;Client(客户端):访问资源的客户端,会使用访问令牌去获取资源服务器的资源,可以是浏览器、移动设备或者服务器;Authorization server(认证服务器):用于认证用户的服务器,如果客户端认证通过,发放访问资源服务器的令牌。四种授权

2021-03-30 14:20:54 212

原创 jenkins升级对jenkins api影响以及解决办法

目前jenkins使用版本 2.174,会遇到安装使用其它插件或使用某些较新的功能,无法在2.174版本上兼容使用,主要原因是jenkins版本过低。因此,测试其它高版本(>2.174)jenkins是否可以在对接使用且功能不受影响。jenkins使用docker方式部署,且目录/var/jenkines_home挂载到了主机上,原有数据不会随着容器删除而消失。因此测试升级原有数据是否会影响以及jenkins api 是否可以正常调用。jenkins容器启动命令docker run -u roo

2021-03-30 14:04:56 471

原创 java security

查看@Bean(destroyMethod="xxx")等同于DisposableBean的destroy(),用于bean销毁后的后置操作。查看相关调用,发现DisposableBeanAdapter 中调用if (System.getSecurityManager() != null) { AccessController.doPrivileged((PrivilegedExceptionAction<Object>) () -> { ((DisposableB

2021-03-26 13:56:49 585

原创 MyBatis cache-ref @CacheNamespaceRef

查看关于mybatis中cache相关内容,发现其中有一个cache-ref的信息。了解下具体作用。这里 cache-ref 等同于 @CacheNamespaceRef,cache-ref是mapper的xml文件中标签,@CacheNamespaceRef是 mapper接口的注解。先查看官方文档介绍。表明在mapper接口中既使用了注解,又使用了xml两种方式。那么接口就不会使用二级缓存。需要使用 cache-ref 指定namespace来指定。待完成…...

2021-03-19 17:51:17 976

原创 Mybatis 拦截器原理查看和使用方法

Mybatis中Mapper接口注册到Spring容器中的Bean是通过MapperProxyFactory类中的动态代理实现。而Mapper中具体接口方法对应MapperMethod实例,MapperMethod中执行又执行到了SqlSessionTemplate,SqlSessionTemplate 中委托给自己的一个SqlSession动态代理类,SqlSession实例是由sessionFactory的指定执行器的openSession方法创建。这里开始从代码查看。DefaultSqlSessi

2021-03-19 13:06:07 711

原创 Mysql unique索引注意点

mysql unique key为复合索引,包含多个字段时,当某个字段值为空值,可以多次重复插入,不会判断是否有重复。建议:unique key 包含字段需要设定一个默认值

2021-03-18 09:17:52 179

原创 Mybatis-Spring:从源码上简单查看启动执行全过程

相关依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version></dependency>通过MATA-INF目录下的这两个文件进行自动装配。这两个文件如何自动装配,不是本

2021-03-17 17:45:26 208

原创 通过源码简单查看@FeignClient注解如何实现微服务间请求

FeignClient实现服务间请求1、EnableFeignClients通过@Import注解导入FeignClientsRegistrar@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)public @interface EnableFeignClients { //...}2、FeignClientsRegi

2021-03-05 16:50:02 542

原创 Mysql-explain-Impossible WHERE noticed after reading const tables

测试mysql中的最左匹配原则时,出现这样一条提示信息没有表明type(ref/All)是否使用索引等信息,因此了解一下。上图是没有匹配到相关数据,贴一张匹配到数据的信息展示,发现type是const表结构如下:CREATE TABLE `runtime_image_used` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `image_name` varchar(512) DEFAULT NULL , `image_tag` va

2020-12-07 18:06:33 316

原创 leetcod-初级-加一

题目加一按题目应该分为两种情况,数值为9和其它数字,因为9+1=10需要考虑到进位。按照个、十、百等等的特性。应该按照倒叙便利,并判断加一后是否等于10。这里是利用了标识位,默认为1进行相加,如果相加后等于10,当前为变为0,标识位仍为1,继续循环。当不等于10时,后续操作不需要在进行,直接返回。当数组遍历完成后,还没有返回,说明时是 9,99,999等的情况,直接生成一个新的原长度+1的数组,首位为1后返回。class Solution { public int[] plusOne(in

2020-12-06 20:30:41 96

原创 leetcod-初级-存在重复元素

题目:存在重复元素题目要求是查找是否存在重复出现的元素。第一想法是通过两重循环查找对比。优化点:内层循环只需要查找外层循环角标后面的元素。class Solution { public boolean containsDuplicate(int[] nums) { for(int i =0; i< nums.length; i++) { for(int j = i + 1; j < nums.length; j++) {

2020-12-01 20:56:13 115

原创 关于 String

String是java中常用的类之一,属于不可变的类。java规范中对String类型也进行了特殊的处理。先从例子开始:String str = "kanshan";String str1 = "kan" + "shan"; //1String prefix= "kan"; String str2 = prefix + "shan"; //2System.out.println(str == str1);System.out.println(str == str2);结果为:

2020-11-26 22:30:57 89

原创 Configuration Full模式与Lite模式

Configuration Full模式与Lite模式

2020-11-26 20:55:09 526

原创 ThreadLocal解析搬运

ThreadLocal的原理、作用、使用弱引用原因、应用举例

2020-10-26 14:54:17 35

原创 ArrayList遍历删除方式调试

fori 方式(错误的遍历方式)fori 方式是通过获取ArrayList的底层数组通过下标进行遍历。这种方法进行遍历删除指定元素,虽然不会报错,但是元素数据有误。List<Integer> list = CollUtil.newArrayList(1, 2, 3, 4, 5); @Test public void testList() { for (int i = 0; i< list.size(); i++) { list.

2020-09-05 16:27:19 151

原创 spring boot中慎用@EnableWebMvc - 因使用拦截器开始

在SpringBoot环境中使用拦截器,继承自HandlerInterceptor,进行注册时,实现WebMvcConfigurer接口,重写 addInterceptors() 方法,添加@Component注解添加到Spring容器来注册拦截器。但是注意到WebMvcConfigurer上有个@EnableWebMvc的提示,文档说明添加此注解可以实现自定义的Spring Mvc 配置。想...

2020-04-09 16:57:00 902

原创 Spring下的Util - InstanceFilter

记录Spring下的Util - InstanceFilter位于org.springframework.util包下;Spring 文档介绍一个简单的实例过滤器,它根据包含和排除元素的集合检查给定实例是否匹配。 子类可能需要覆盖 match 方法来提供自定义匹配算法。类中方法构造函数只有一个三个参数的构造函数/** * includes:被比较的元素希望存在的集合 * ...

2020-04-09 14:26:49 169

转载 docker容器非正常关闭造成启动失败处理

转载自docker镜像container非正常关闭造成启动失败处理非正常关闭,如 systemctl stop docker 、systemctl restart docker 等操作。例如容器id为 3c252b492c5cdocker stop 3c252b492c5c 停止失败 强制结束,此时显示运行中却无法登录报错如下Error response from daemon: m...

2020-01-06 10:28:10 4999 2

原创 SpringBoot项目获取ApplicationContext

直接使用@Autowired注入@Autowiredprivate ApplicationContext ctx;实现ApplicationContextAware接口,重写setApplicationContext方法(推荐)@Componentpublic class ApplicationContextProvider implements ApplicationContextA...

2019-08-28 17:15:31 330

原创 java中@Repeatable的理解

@Repeatable是jdk8中新增的注解,使用如Spring中的@ComponentScan注解。在没有@Repeatable注解的的注解中,在同一个地方使用相同的注解会报错,有了此元注解注解的注解,就可以在同一个地方使用相同的注解。其官方文档如下The annotation type {@code java.lang.annotation.Repeatable} is used to ...

2019-08-16 16:24:39 20385 4

原创 java中retry的使用

在查看线程池ThreadPoolExecutor源码时,发现其中addWorker方法中出现了retry:。之前没有见过,因此了解下。// ThreadPoolExecutor中部分源码 private boolean addWorker(Runnable firstTask, boolean core) { retry: for (;;) { ...

2019-08-16 15:00:53 351

原创 Spring中@Configuration与@Bean的用法

@Configuration需要与@Bean配合使用,单独使用不会加载在Spring容器

2019-08-14 14:12:51 119

原创 调用solr查询,将结果转为实体类,属性为null的情况

调用solr查询,将结果转为实体类,属性为null的情况在实体类的属性上加上solr的注解 @Field

2019-04-07 15:37:23 506

空空如也

空空如也

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

TA关注的人

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