自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法-小红的ABC(最短回文子串)- [简单]

例如"abcca"的子串有"ab"、"bcca"等,但"aca"则不是它的子串。回文串只有两类 :xx 或者 xyx两种类型,以abccba为例,最短回文串长度不是6 ,而是 cc 2;小红拿到了一个只包含 'a' , 'b' , 'c' 三种字符的字符串。小红想知道,这个字符串最短的、长度超过 1 的回文子串的长度是多少?回文的定义:一个字符串正着读和倒着读都是相同的,那么定义它的回文的。一个只包含 'a' , 'b' , 'c' 三种字符的字符串。如果不存在长度超过1的回文子串,则输出-1。

2023-11-01 20:33:54 1185 1

原创 IDEA中查看Java反编译文件liblin

1. 命令行执行方式选中.class文件右键,open in Terminal (其他定位到文件目录的方法都可)javan -v xxxx2. 插件方式安装 jclasslib Bytecode viewer (安装后记得重启生效)使用时:- 定位到对应的.class文件打开- 点击 view / show Bytecode With Jclasslib- 出现...

2021-09-26 12:02:49 394

原创 获取线程返回值

主要方法:1. 主线程等待法;2. 通过调用Thread类的join方法阻塞当前线程以等待子线程处理完毕;3. 通过Callable接口实现:FutureTask / 线程池获取; (重点)1. 主线程等待法;public class MainThreadCycleWait implements Runnable { private String value; @Override public void run() { try { ..

2021-09-09 20:52:16 593

原创 源码角度分析:线程的start和run方法的区别

start()方法会启动一个新的线程并执行,而run()方法只是类的一个普通方法,不会创建新的线程代码演示调用run()时:public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(new Runnable() { @Override public void run() {

2021-09-09 19:44:41 224

原创 基于Netty实现HTTP服务器功能

实现效果:1. Netty服务启动对特定端口如:8081进行监听2. 在浏览器通过http://localhost:8081/aaaa发送请求,Netty服务可以进行相应响应到浏览器1. 引入netty依赖<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.42.Final</v..

2021-08-18 03:02:17 298

原创 基于Netty实现简单的群聊功能

实现逻辑:1. 提供一个Netty服务端,用于接收客户端连接,消息以及消息分发;2. 客户端用于接收消息,以及通过控制台发送消息(接收来自其他客户端发送的消息)1. 引入netty依赖<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.42.Final</versi

2021-08-18 02:23:21 278

原创 CPU缓存结构

CPU缓存结构 现代CPU为了提升执行效率,减少CPU与内存的交互(交互影响CPU效率),一般在CPU上集 成了多级缓存架构,常见的为三级缓存结构L1 Cache,分为数据缓存和指令缓存,逻辑核独占 L2 Cache,物理核独占,逻辑核共享 L3 Cache,所有物理核共享存储器存储空间大小:内存>L3>L2>L1>寄存器;存储器速度快慢排序:寄存器>L1>L2>L3>内存;缓存行:缓存是由最小的存储区块-缓存行(cacheli...

2021-08-14 23:08:20 1033

原创 全局唯一ID生成方案

文章目录 全局唯一id介绍 全局唯一id特点: 常见全局唯一id生成策略 数据库自增长序列或字段生成id UUID Redis生成ID zookeeper生成ID Twitter的snowflake算法 全局唯一id介绍系统唯一id是我们在设计阶段常常遇到的问题。在复杂的分布式系统中,几乎都需要对大量的数据和消息进行唯一标识。在设计初期,我们需要考虑日后数据量的级别,如果可能会对数据进行分

2021-08-09 14:29:46 97

原创 JDK源码环境搭建

1. 创建空项目jdk-resource2. 将JDK(我的版本是1.8.0_77)下的src.zip解压到jdk-resource 下的src目录3. 在IDEA的File/Project Structure/SDKs下新建SDK命名为:JDK-Resoucres.选择JDK的目录,引入本地的JDK(C:\Program Files\Java\jdk1.8.0_77);选择Sourcespath,剔除JDK自带的src.zip(C:\Program Files\Java\jdk1....

2021-08-08 14:50:17 386

原创 Nginx防盗链支持

可通过在Nginx中配置防盗链信息,使得当前网站的图片、文件等静态资源,禁止其他网站引用在nginx.conf配置文件中在server里面,在location之前配置#对源站点验证valid_referers *.kay.com;#非法引入会进入下方判断if ($invalid_referer) { return 403;}...

2021-08-07 13:51:57 59

原创 Nginx中解决跨域问题

从A域名,向B域名发起请求,会出现跨域资源共享问题(Cross-Origin Resource Sharing)允许浏览器向跨Origin的服务器发起js请求获取响应,可以使用的方式有 Jsonp, SpringBoot Cors, Nginx;

2021-08-07 13:36:23 463

原创 Nginx日志切割

本文主要内容1. Nginx日志切割脚本编写2. 使用crontabs定时器插件,定时切割日志nginx的日志默认都会存在access.log文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大不便于运维人员的查看,所有我们可以通过把这个大的日志文件切割成多份不同的小文件作为日志,切割规则可以以天为单位,也可以按照实际需求特殊设置,比如:如果每天有几白G或者几个T的日志的花,可以按照每半天或者每小时对日志进行切割1. Nginx日志切割脚本编写1. 创建一个shell 可

2021-08-07 00:07:27 864 1

原创 Redis知识点总结

本文主要介绍1. redis基本介绍(什么是Nosql,什么是分布式缓存)2. 缓存方案对比(Ehcache、Memache、Redis)3. Redis各数据类型API介绍(String,Hash,list,set,zset)1.Redis基本介绍1.什么是Nosql?关系型数据库:MySQL,SQLServer,OracleNoSql: not only Sql 可以存数据,做缓存;具有高可用(多节点) 高性能读取高可用:普通的数据库无法为大数据访问下并发查询 ...

2021-08-02 16:23:26 177

原创 SpringBoot 监控

本文主要内容1.Actuator介绍2. Spring Boot Admin1.Actuator介绍Actuator是Spring Boot的一个附加功能,可帮助你在应用程序生产环境时监视和管理应用程序。可以使用HTTP的各种请求来监管,审计,收集应用的运行情况。Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了SpringBoot应用的整个生命周期。特别对于微服务管理十分有意义。在 S..

2021-07-26 20:34:48 524

原创 SpringBoot部署

本文主要介绍1. 多环境配置2. SpringBoot项目打包方式(jar & war)1. 多环境配置1.多环境激活配置文件:spring.profiles.active=devspring: profiles: active: dev启动命令激活java -jar xxx.jar --spring.profiles.active=dev;2.注解@Profile / 多资源配置文件注解@Profile1...

2021-07-26 17:08:58 148

原创 Spring Boot 缓存实现

本文主要内容:1. Spring 缓存抽象定义及相关概念2. @Cacheable,@CachePut, @CacheEvict,@CacheConfig使用3.基于Redis的缓存实现1. Spring 缓存抽象定义及相关概念1.Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JavaCaching(JSR-107)注解..

2021-07-26 11:52:05 478

原创 SpringBoot整合MyBatis实现动态数据源切换

本文主要内容1. 动态数据源实现目标;2. AbstractRoutingDataSource类分析3. SpringBoot整合MyBatis动态数据源实现1. 动态数据源实现目标项目中存在多个数据源连接,根据不同接口,动态连接不同的数据源DataSources对象,根据不同的业务逻辑操作不同数据源2. AbstractRoutingDataSource类分析1.AbstractRoutingDataSource是由Spring提供的标准数据源public...

2021-07-25 12:33:33 1384

原创 SpringBoot整合Mybatis及自动装配源码分析

本文主要内容:1. SpringBoot整合MyBatis主要步骤;2. SpringBoot自动装配MyBatis源码分析;1. SpringBoot整合MyBatis主要步骤1. 引入数据库驱动(mysql为例)<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependenc..

2021-07-24 15:03:12 754 1

原创 Spring Boot数据源相关

本文主要介绍1. SpringBoot使用数据源配置方式;2. SpringBoot默认连接池及自动配置原理(HikariCP);3.SpringBoot替换默认连接池配置方式;4. SpringBoot整合Druid连接池;1. SpringBoot使用数据源配置方式1.配置数据库驱动(Mysql为例)<dependency> <groupId>mysql</groupId> <artifactId>mysq...

2021-07-23 18:35:25 611 1

原创 Spring Boot中SpringMVC自动装配原理

本文主要内容:1. SpringMVC核心类DispatcherServlet自动装配原理;2.Spring Boot中如何实现将DispatcherServlet注册到ServletContext中1. SpringMVC核心类DispatcherServlet自动装配原理在spring-boot-autoconfigure下的META-INF/spring.factories中key为 org.springframework.boot.autoconfigure.Enabl...

2021-07-23 14:15:45 507

原创 Spring Boot内置Tomcat启动源码分析

本文主要介绍1. Spring Boot内置Tomcat启动原理;2. 切换Spring Boot默认Servlet容器;1. Spring Boot内置Tomcat启动原理;1. Spring Boot默认支持Tomcat,Jetty,和Undertow作为底层容器;在无特殊配置时,底层容器默认为Tomcat(spring-boot-starter-web中默认依赖Tomcat, 具体见下文)在spring-boot-autoconfigure下的META-INF/spri..

2021-07-23 12:29:28 374

原创 Spring中条件注解

本文记录Spring中条件注解及使用说明@ConditionalOnBean仅仅在当前上下文中存在某个对象时,才会实例化一个Bean。@ConditionalOnClass某个class位于类路径上,才会实例化一个Bean。@ConditionalOnExpression当表达式为true的时候,才会实例化一个Bean。基于SpEL表达式的条件判断。@ConditionalOnMissingBean仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean。@Conditiona

2021-07-22 21:31:10 412

原创 自定义Spring Boot Starter

本文主要介绍如何自定义Spring Boot Start:查看Spring Boot Starter原理查看Spring Boot 自动装配原理SpringBoot的Spring Boot Start 机制,可以将繁复的配置,统一集成在一个Starter下,在使用时,使用端只需要引入对应的starter依赖,SpringBoot启动时,会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。Spring Boot提供的Starter命名为spring-boot-st..

2021-07-22 21:23:45 77

原创 Spring Boot自动装配原理

本文主要介绍1. Spring Boot是如何完成自动装配的2.Spring Boot核心启动类方法的执行流程1. Spring Boot是如何完成自动装配的概念自动装配:根据我们在POM中添加的jar依赖,Spring Boot会自动将一些配置类的bean注入到IOC容器中,在项目中,我们可以直接通过 @Autowired,@resourecs就可以直接使用Spring Boot主程序类会使用@SpringBootApplication进行标注如图可见@Spr..

2021-07-22 15:20:52 114

原创 Spring Boot Starter原理

本文主要介绍:1. Spring Boot 是如何进行Jar的版本管理(spring-boot-starter-parent);2. Spring Boot如何通过引入 Starter 引入所有功能相关的依赖(POM的依赖传递);1. Spring Boot 是如何进行Jar的版本管理所有Spring Boot项目,在创建时都必须依赖父项目.并定义父级依赖版本信息,如下为2.2.9.RELEASE(可修改)<parent> <groupId>org.

2021-07-22 13:16:56 83

原创 Spring Boot 日志介绍

本文主要介绍1. Spring Boot默认日志SFL4J + LogBack的使用2. 自定义日志输出;3.Spring Boot替换默认日志框架1. Spring Boot默认日志SFL4J + LogBack使用SpringBoot项目默认已经支持SFL4J + LogBack日志的使用,无需做任何的jar导入,就可以直接操作日志接口进行日志输出。Logger logger = LoggerFactory.getLogger(this.getClass());

2021-07-22 12:29:43 287

原创 日志框架介绍(SLF4J及其使用)

本文主要介绍1.日志框架基本介绍及Spring Boot中默认使用框架(SLF4J+LogBack);2.SLF4J的使用3. 项目中日志框架统一问题4.Spring Boot中如何实现日志框架统一问题(3的最佳实践)1.日志框架基本介绍一般情况下搭建日志框架时,搭建 日志抽象层(定义接口) + 日志实现层组合 ,项目代码中应该使用抽象层,不应该使用日志实现类;常见的日志框架包含:日志抽象层: JCL(2014年不再维护), SLF4J,jboss-logging日.

2021-07-21 22:30:40 327

原创 SpringBoot核心启动类逻辑图

本文主要介绍Spring Boot核心启动类启动逻辑图及自动装配原理未完待续....

2021-07-19 19:47:19 288

原创 Spring Boot 核心配置文件

本文主要介绍Spring Boot 全局核心配置文件相关概述1. Spring Boot默认加载主配置文件位置;2. Spring Boot默认加载主配置文件的加载顺序 (基于版本 2.5.2讨论);3. 指定加载 自定义名称/自定义位置的配置文件方式;1. Spring Boot默认加载主配置文件位置(基于版本 2.5.2讨论);Spring Boot 默认依次从项目的 根目录下的config目录 、 项目根目录 、 classpath 下的config目录 、classpath.

2021-07-16 21:24:49 483

原创 SpringBoot实现热部署及其原理

本文主要介绍1. SpringBoot实现热部署方法;2.SpringBoot热部署实现原理;3. 排除文件更改触发自动启动;1.SpringBoot实现热部署方法1. 引入spring-boot-devtools 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr...

2021-07-16 20:16:45 1799 2

原创 SSM框架整合(SpringMVC+Spring+MyBatis)

本文主要整理SSM框架整合的基本过程1.整合 Spring + MyBatis2.整合 springMVC + (Spring + MyBatis )0. 创建一个空的WEB项目1.整合 Spring + MyBatis1.1 引入spring\mybatis\mybatis-spring整合\mysql连接驱动\Druid连接池\junit测试 等依赖 <!--spring相关--> <dependency> &l.

2021-07-14 22:45:54 127

原创 SpringMVC处理请求流程

本文主要介绍在SpringMVC中,当一个URL请求发起后,SpringMVC如何根据URL将对应的请求分发到指定的Handler方法中(Controller中的指定方法)前端请求发起时,会进入 HttpServlet 及继承了HttpServlet的类,进入对应的doGet,doPost方法;HttpServlet及其实现类中,只有FrameworkServlet类中实现了doGet及doPost,而在这两个方法中,实际调用的是doService这个方法,而FrameworkServlet中的do

2021-07-14 22:25:46 498

原创 Spring Data JPA使用

本文从以下几个方面介绍Spring Data JPA入门使用1、Spring Data JPA环境搭建;2、简单增删改查;3、使用Example对象查询4、jpql查询;5、Specification实现单表单、多表动态查询;6、排序、分页查询7、Specification实现多表分页排序动态查询1. Spring Data JPA环境搭建1.spring data jpa(基于hibernate框架对JPA的实现、对接数据库为MYSQL、连接池使用druid)开发.

2021-07-14 18:05:09 704

原创 Gradle引入Tomcat

Gradle版本:5.6.3引入插件版本:gradle-tomcat-plugin:2.2.5buildscript { repositories { jcenter() } dependencies { classpath 'com.bmuschko:gradle-tomcat-plugin:2.2.5' }}plugins { id 'java' id 'war'}apply plugin: 'com

2021-07-13 11:18:01 943

原创 SpringMVC知识点总结

1.springMVC视图解析器配置 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>2.数据输出中Mo.

2021-07-12 20:43:24 134

原创 SpringMVC静态资源配置

1.springMVC自带的<mvc:resources />配置静态资源访问(推荐)2.<mvc:default-servlet-handler/> (静态资源请求交由web容器)1.springMVC自带的<mvc:resources />配置静态资源访问(推荐)在springMVC的配置文件中,使用resources配置<mvc:annotation-driven/> 会自动注册默认处理请求,参数和返回值的类 ;(如果只配置了<..

2021-07-11 18:49:59 563 2

原创 Spring中AOP简单使用

<!-- aop--> <aop:config><!-- 切面 aspect --> <aop:aspect id="aop1" ref="aopUtils"><!-- 增强方法 及切入点--><!-- 前置通知,方法执行前执行,可以传入JoinPoint对象,通过此对象可以获取传参信息--> <aop:poin.

2021-07-08 19:32:47 218

原创 Spring源码分析

spring容器初始化之BeanFactory及BeanDefinition的创建及加载注册流程重要类及方法AbstractApplicationContext.refresh() spring容器初始化AbstractApplicationContext.refreshBeanFactory BeanFactory初始化, XML解析,<bean>标签及相关属性封装到BeanDefinitionHolder中此对象调用getBeanDefinition可获取BeanDefinitio

2021-07-07 23:24:29 125

原创 SpringBean的生命周期

本文主要讨论, 从工厂类将xml文件中配置的Bean标签封装成的BeanDefinition对象后,Bean从创建到销毁的整个执行过程以下为声明Bean的作用范围为默认即:singleton 单例 情况下,SpringBean的执行顺序(单例bean的创建和管理、销毁由Spring统一负责); 而prototype多例情况下,spring框架只负责创建,不负责销毁;且在外部通过getBean调用时才会创建1. 单例下SpringBean的生命周期及执行顺序代码验证1.1. 定义实体类T.

2021-07-07 18:07:35 114

原创 Spring知识点总结

1. BeanFactory与AppicationContent区别?BeanFactory是Spring框架中IOC容器的顶层接口,定义了一些基本的功能接口及规范(基础容器);而AppicationContent(容器的高级接口)是BeanFactory的一个子接口,AppicationContent具备BeanFactory的全部功能,且较之有更丰富的功能,比如国际化功能,资源访问(XML,java配置类)等2.spring中xml方式实例化对象的三种方式A.通过 对象的无参构造创建对象

2021-07-07 13:36:14 152

空空如也

空空如也

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

TA关注的人

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