自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot maven管理本地jar包

Spring Boot maven管理本地jar包

2023-01-10 15:26:15 433

原创 Spring5学习笔记08--Scope

scope类型、scope失效分析及解决方案介绍

2022-09-11 17:45:00 510

原创 Spring5学习笔记07--Bean 初始化与销毁

Spring Bean 初始化与销毁

2022-09-09 18:30:00 284

原创 Spring5学习笔记06--Aware 接口和 InitializingBean 接口

Aware 接口和 InitializingBean 接口

2022-09-08 05:15:00 419

原创 Spring5学习笔记05--BeanFactory后处理器

BeanFactory 后处理器的作用: 为 BeanFactory 提供扩展 ,分析 ConfigurationClassPostProcessor 后处理器

2022-09-07 18:39:48 181

原创 Spring5学习笔记04--Bean后处理器

Bean后处理器以及常见的Bean后处理器介绍

2022-09-04 17:30:00 150

原创 Spring5学习笔记03--Bean的生命周期

Spring Bean 生命周期各个阶段,模版方法设计模式

2022-09-02 17:25:51 200

原创 Spring5学习笔记02--BeanFactory 与 ApplicationContext 容器实现

BeanFactory 和 ApplicationContext 容器实现

2022-08-30 18:29:03 291

原创 Spring5学习笔记01--BeanFactory 与 ApplicationContext

Spring5学习笔记-第一讲-BeanFactory 与 ApplicationContext

2022-08-23 14:20:56 194

原创 Spring - @Qualifier 学习

@Qualifier 学习官方解释: This annotation may be used on a field or parameter as a qualifier for candidate beans when autowiring. It may also be used to annotate other custom annotations that can then in turn be used as qualifiers.简单的理解就是:(1)在使用@Autowire自

2022-05-19 18:37:43 166

原创 k8s的就绪探针和存活探针

k8s的就绪探针和存活探针就绪探针和存活探针探针的作用就绪探针:一个应用往往需要一段时间来预热和启动,比如一个后端项目的启动需要连接数据库执行数据库迁移等等,一个Spring项目的启动也需要依赖Java虚拟机。即使该过程已启动,您的服务在启动并运行之前也无法运行。应用在完全就绪之前不应接收流量,但默认情况下,Kubernetes会在容器内的进程启动后立即开始发送流量。通过就绪探针探测,直到应用程序完全启动,然后才允许将流量发送到新副本。存活探针:让我们想象另一种情况,当我们的应用在成功启动以后因为

2021-06-18 14:45:05 2772

原创 @Conditional学习

@Conditional学习概要在构建Spring Boot应用程序时,我们有时希望仅在满足某些条件时才将bean或模块加载到应用程序上下文中,可以在测试期间禁用某些bean,也可以对运行时环境中的某个属性做出反应。Spring 应用程序上下文包含了应用程序在运行时需要的所有Bean对象,Spring 4.0引入了@Conditional注释,它的主要作用就是根据条件给容器注入bean,简称条件注解。@Conditional注释允许我们定义自定义条件,以适用于应用程序上下文的某些部分。Spring

2021-06-02 15:38:20 173 1

原创 @EnableAsync注解说明

@EnableAsync注解说明@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AsyncConfigurationSelector.class)public @interface EnableAsync { Class<? extends Annotation> annotation() default Annotation.class; boolean proxyT

2021-04-23 15:20:10 7598

原创 理解、学习与使用JAVA中的OPTIONAL

理解、学习与使用JAVA中的OPTIONAL原文:https://www.oschina.net/translate/understanding-accepting-and-leveraging-optional-in?lang=chs&p=1https://dzone.com/articles/understanding-accepting-and-leveraging-optional-in从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的

2021-04-20 19:06:31 129

原创 【代码小技巧】加载classpath下的文件资源

加载classpath下的文件资源方式1: Class.getResourceAsStream(name)指定要加载的资源路径与当前类所在包的路径一致, 如果这个name是以 '/'开头的,那么就会从classpath的根路径下开始查找private void loadResource() { try (InputStream inputStream = this.getClass().getResourceAsStream("/" + FILE_NAME);) { String stri

2021-04-01 15:05:31 717

原创 Spring DefaultListableBeanFactory

DefaultListableBeanFactory是整个bean加载的核心部分,是Spring注册及加载bean的默认实现整体类图如下AliasRegistry:定义对alias的简单增删改等操作SimpleAliasRegistry: 主要是用map作为alias等缓存,并对接口AliasRegistry进行实现【代码很优雅,可以学习一下】SingletonBeanRegistry: 定义对单例单注册及获取BeanFactory: 定义获取 bean 及 bean 的各种属性Def

2021-04-01 11:56:37 199 1

原创 Spring @Async执行异步方法的简单使用

Spring @Async执行异步方法的简单使用1.开启Spring的异步处理支持配置类,使用@EnableAsync注解来开启异步处理@Configuration@EnableAsyncpublic class SpringAsyncConfig {}2.@Async注解使用业务类,@Async注解标明异步执行的方法@Slf4j@Servicepublic class UserServiceImpl implements UserService { // 不带返回值的异步

2021-03-26 18:36:11 217

原创 单元测试入门用法

单元测试入门用法本篇主要介绍在Spring Boot项目中使用JUnit5框架、Mockito框架进行单元测试,使用jacoco统计单元测试代码覆盖率单元测试做什么接口功能测试:保证接口功能正确性,确保接口被正常调用,并输出有效数据局部数据结构检测:保证数据结构的正确性边界条件测试所有独立代码测试:语句覆盖、分支覆盖、条件覆盖、路径覆盖异常模块测试:产生异常是否会影响结果引入依赖<!-- jacoco版本 --><properties> <jacoc

2021-03-22 11:42:49 1032

原创 mock静态方法指引

mock静态方法指引mockito 在3.4.0版本开始支持mock static method文档:https://wttech.blog/blog/2020/mocking-static-methods-made-possible-in-mockito-3.4.0/1. 升级Maven依赖<!-- mockito --><dependency> <groupId>org.mockito</groupId> <artifact

2021-03-15 13:06:02 15454 3

原创 【JVM】jstack命令

jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,一般在出现高CPU的问题需要定位具体是哪个线程耗费CPU时使用1、jstack命令基本概述jstack命令主要用于调试java程序运行过程中的线程堆栈信息,可以用于检测死锁,进程耗用cpu过高报警问题的排查。> jstackUsage: jstack [-l] <pid> (to connect to running process) jstack -F

2021-01-07 18:03:06 538

转载 【JVM】jmap命令详解

【JVM】jmap命令详解jmap命令详解原文linux获取java进程PID查看当前运行的所有的java进程ps -ef | grep javaJmap —— 查看内存使用详情1、jmap命令基本概述jmap命令是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。Usage: jmap [option] <pid> (to

2021-01-06 20:20:52 1945

原创 SpringBoot Validation校验参数

SpringBoot Validation校验参数目录SpringBoot Validation校验参数依赖约束性注解(简单)说明自定义注解1. 创建自定义注解2. 编写校验器 实现注解的校验3. 自定义注解的使用枚举类型校验1. 创建枚举类2. 创建自定义注解&编写校验器3. 测试依赖<dependency> <groupId>javax.validation</groupId> <artifactId>validation-a

2021-01-04 19:41:07 116

原创 SpringBoot中的异步请求

SpringBoot中的异步请求特点:可以先释放容器分配给请求的线程与相关资源,减轻系统负担,释放了容器所分配线程的请求,其响应将被延后,可以在耗时处理完成(例如长时间的运算)时再对客户端进行响应。一句话:增加了服务器对客户端请求的吞吐量(实际生产上我们用的比较少,如果并发请求量很大的情况下,我们会通过nginx把请求负载到集群服务的各个节点上来分摊请求压力,当然还可以通过消息队列来做请求的缓冲)。原文分享参考方法1: Servlet实现Servlet 3.0异步请求运作机制的部分原理a.Se

2020-12-16 21:26:03 633

原创 分布式ID生成方式

分布式ID生成方式什么是分布式ID拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。分布式ID需要满足的条件全局唯一:这个是最基

2020-10-27 20:42:18 682

原创 分库分表

分库分表什么是分库分表分库分表是两个概念 :分库和分表目的:为了解决由于库、表数据量过大,而导致数据库性能持续下降的问题做法:按照一定的规则分库:将原本数据量大的数据库拆分成多个单独的数据库分表:将原本数据量大的表拆分成若干个数据表目标:是单一的库、表 性能达到最优的效果(响应速度快),以此提升整体数据库性能如何分库分表核心理念:切分(Sharding)& 切分后对数据快速定位和查询结果整合方式:垂直(纵向)切分和 水平(横向)切分垂直切分垂直分库核心理念:

2020-10-27 16:58:28 200 1

原创 Spring小细节

1. spring bean 三种初始化方法顺序,优先到后@PostConstructInitializingBean(afterPropertiesSet)@Bean(initMethod)MyBean 类import javax.annotation.PostConstruct;import org.springframework.beans.factory.InitializingBean;public class MyBean implements InitializingB

2020-10-09 18:30:50 100

原创 Jackson使用——JsonUtil

JsonUtilimport com.fasterxml.jackson.annotation.JsonInclude.Include;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.DeserializationFeature;import co.

2020-10-09 17:13:45 422

原创 MacOS Docket 安装及核心中间件环境搭建

1. MacOS Docker 安装安装教程:菜鸟教程 MacOS Docker安装推荐使用第二种方式,直接下载手动下载安装

2020-10-09 11:07:08 219

原创 HttpDNS与传统DNS

什么是DNSDNS(Domain Name System,域名系统),DNS 服务用于在网络请求时,将域名转为 IP 地址。能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 IP 数串。传统的基于 UDP 协议的公共 DNS 服务极易发生 DNS 劫持,从而造成安全问题。DNS 域名系统结构Root 域名:DNS 域名使用时,规定由尾部句号来指定名称位于根或更高级别的域层次结构Top Level 顶级域名:用来指示某个国家、地区或组织使用的名称的类型名称。如 .comSecond

2020-06-29 22:51:52 361

原创 负载均衡的简单实现

负载均衡接口类/** * 负载均衡 * */public interface LoadBalancing { String selectOne(List<String> serverList); String selectOneWithWeight(List<String> serverList, List<Integer> weightList);}随机(Random)法/** * 随机(Random)法 * */public c.

2020-05-28 17:23:02 229

转载 对称加密与非对称加密

在互联网中,信息防护主要涉及两个方面:信息窃取和信息篡改。对称/非对称加密算法能够避免信息窃取,而消息摘要算法能够避免信息篡改。对称加密算法:加密和解密使用同一把密钥发送方和接收方需要持有同一把密钥,发送消息和接收消息均使用该密钥。相对于非对称加密,对称加密具有更高的加解密速度,但双方都需要事先知道密钥,密钥在传输过程中可能会被窃取,因此安全性没有非对称加密高。非对称加密算法:公钥加密,私钥解密接收方在发送消息前需要事先生成公钥和私钥,然后将公钥发送给发送方。发送放收到公钥后,将待发送数

2020-05-22 11:56:08 294

原创 ThreadLocal源码分析

get

2020-05-08 20:30:56 118

Java线程池

1.线程池状态ThreadPoolExecutor 使用核心线程数 + 救急线程数 = 最大线程数Typora

2020-05-05 16:13:46 93

原创 类加载器

类加载器在jdk8中:名称中文加载类路径说明Bootstrap ClassLoader启动类加载器JAVA_HOME/jre/lib无法直接访问Extension ClassLoader扩展类加载器JAVA_HOME/jre/lib/ext上级是BootstrapApplication ClassLoader应用程序类加载器classpath...

2020-05-04 12:08:47 69

原创 【Java并发】volatile关键字

参考【死磕Java并发】-----深入分析volatile的实现原理Java并发编程:volatile关键字解析java修饰词CS-NotesJava面试热点——synchronized原理剖析与优化

2020-05-01 11:02:18 120

原创 单例模式的八种实现方式

单例模式一个类只有一个对象实例实现的基本思路将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例;在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。1、懒汉式(静态常量)【可用】publi...

2020-04-30 23:24:24 173

原创 【Java并发】synchronized优化

CASCAS的全称是 Compare And Swap(比较相同再交换),是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令作用:CAS可以将比较和交换转换为原子操作,这个原子操作直接由CPU保证,CAS可以保证共享变量赋值时的原子操作CAS操作依赖三个值:内存中的值V、旧的预估值X、要修改的新值B,如果内存中的值V = 旧的预估值X,就将新值B保存到内存中。CAS原理...

2020-04-30 22:02:25 119

原创 Redis学习(三)——删除策略

删除策略过期数据Redis是一个内存级数据库,所有数据都存放在内存中,内存中的数据可以通过TTL指令获取其状态XX:具有时效性数据-1:永久有效的数据-2:已经过期的数据,或者 被删除的数据,或者 未定义的数据过期数据真的删除了吗?时效性数据的存储结构数据删除策略三种删除策略定时删除惰性删除定期删除数据删除策略目标在内存占用和CPU占用之间寻找一种...

2020-04-30 13:24:04 143

原创 Redis学习(二)——事务

文章目录事务什么是事务事务的基本操作事务工作流程事务的注意事项手动进行事务回滚具有特定条件的事务执行锁业务场景业务分析解决方案——锁分布式锁业务场景业务分析解决方案——分布式锁分布式锁改良业务场景业务分析解决方案——分布式锁改良事务什么是事务Redis事务就是一个命令执行的队列,将一系列预定义的命令包装成一个整体(一个队列),当执行时,一次性按照添加顺序依次执行,不会被干扰或打断一个队列...

2020-04-29 13:19:03 118

原创 Redis持久化学习

Redis持久化持久化的两种方式RDB:将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据AOF:将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程RDB启动方式命令执行:save保存当前数据的快照信息,会生成dump.rdb文件后台执行自动执行save配置实际后台执行的命令还是bgsave...

2020-04-29 10:24:00 116

空空如也

空空如也

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

TA关注的人

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