自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (18)
  • 收藏
  • 关注

原创 不要无脑使用SpringBoot的@ConditionalOnMissingBean

小小的一个注解,背后却有这么深的知识体系。多研究一下SpringBoot的源码,其实是最好的教材案例。

2024-03-21 15:54:51 935

原创 SpringBoot自定义Jackson注解,实现自定义序列化BigDecimal(增强JsonFormat注解)

通过这个注解,就可以很方便的实现对Bigdecimal的格式化控制,shape = JsonFormat.Shape.STRING 返回的json数据会是字符串类型,也就是说值会带引号,这一点需要注意。

2023-09-04 16:52:38 1729

原创 SpringBoot的静态文件资源文件名称大小写敏感问题研究

发生场景&问题描述:最近使用SpringBoot开发一个项目,项目的前端部分采用的不是前后端分离的模式,而是打成一个jar包,最后通过 java -jar 的形式运行的。前端的项目,在idea开发的时候,启动起来访问页面切正常,但是当我打成jar包后,通过 java -jar形式启动的时候,访问页面发现好多资源404,F12跟踪发现404的问题,是因为资源文件大小写造成的。比如:index.html 页面引用的css文件,写的是APP.css ,但是我们的css文件名称是app.css。

2022-01-24 00:17:27 2612 4

原创 解密MySQL产生幻读的根本原因(首次公开)

文章目录前言一、undo log前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。上一篇文章介绍了什么是脏读、不可重复复、幻读的概念和现象。这次我就来说一下Mysql是如何通过MVCC机制来解决脏读、不可重复的问题的。一、undo logMVCC机制的实现是基于undo log的,所以我们要先看一下undo log。undo log是Innodb存储引擎特有的日志,也是为了MV

2021-06-30 16:22:39 1163 4

原创 三张图片告诉你:啥是脏读、不可重复读、幻读

文章目录前言一、数据库事务的ACID是什么?二、使用步骤1.引入库2.读入数据总结前言一、数据库事务的ACID是什么?提到数据库事务,我们都知道有的四大特性 ACID,那么都分别是什么意思呢?原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,完全应用到数据库,要么全部失败回滚,不会对数据库产生任何影响。一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。换句话说,

2021-06-28 11:13:44 324

原创 Java中的线程休眠大法系列(总结)

文章目录前言一、通过一个表格,做对比二、回顾连接前言三篇文章介绍了三种休眠线程的方式,今天我们就把这三种方式放到一起,做一个对比。一、通过一个表格,做对比二、回顾连接Java中的线程休眠大法系列(一)Thread.sleep()Java中的线程休眠大法系列(二)Object.wait()Java中的线程休眠大法系列(三)LockSupport.park()欢迎点赞收藏!!...

2021-06-15 15:20:54 1393 1

原创 Java中的线程休眠大法系列(三)LockSupport.park()

文章目录前言一、看看JDK的代码注释二、案例1. 查看线程状态2.线程被打断,不抛异常2.是否会释放锁3.传递自定义数据总结前言Java的线程休眠我们从Thread.sleep到Object.wait(),都进行了逐一讲解,现在我们研究最后一种方式LockSupport.park()。一、看看JDK的代码注释 /** * Disables the current thread for thread scheduling purposes unless the * permit

2021-06-15 13:48:11 9552

原创 Java中的线程休眠大法系列(二)Object.wait()

目录前言一、看看JDK的注释上都说了什么二、案例1.一个案例说明全部问题总结前言上一篇文章说了Thread.sleep()背后的原理和各种案例,今天我们来研究一下java的另外一种使线程休眠的方法Object.wait()。一、看看JDK的注释上都说了什么/** * Causes the current thread to wait until another thread invokes the * {@link java...

2021-06-11 18:03:52 680 1

原创 Java中的线程休眠大法系列(一)Thread.sleep()

文章目录前言Thread.sleep()1.看看JDK中此方法上面的注释2.案例展示(线程状态:TIMED_WAITING)3.案例展示(InterruptedException异常会清除interrupted status)4.案例展示(sleep不会释放monitors锁)总结前言如果让一个线程进入休眠?我们第一个想到的就是Thread.sleep(long millis)方法吧!如果你对synchronized足够了解的话,那么你肯定还能想到Object.wait()方法。再如果你对jav

2021-06-11 13:41:54 9499

原创 通过<scope>system</scope>依赖本地jar包时,要注意了!

在使用Maven的时候,如果我们要依赖一个本地的jar包的时候,通常都会使用<scope>system</scope>和<systemPath></systemPath>来处理。例如://引用本地jar包<dependency> <groupId>com.mytest</groupId> <artifactId>test</artifactId> <version&

2021-04-15 18:17:12 22059 4

原创 ThreadLocal导致内存泄露这么大bug,JDK不解决?

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、演示一个OOM的案例二、分析原因1.直接说原因2.看源码找原因总结前言提到ThreadLocal,在网上你会看到很多说它有内存泄露的问题,提到的解决方案也很简单,就是用完ThreadLocal对象后,要调用remove();方法进行清除。那么这个问题是如何产生的呢?为什么remove就能解决呢?今天我们就来一探究竟!一、演示一个OOM的案例注意:修改JVM参数,设置小一点。-Xms20M -Xmx20M -Xmn

2021-03-31 23:39:39 312

原创 聊聊JDK原生RPC框架RMI

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、RMI是什么?二、RMI的通信交互图三、废话不多说,上代码,直观感受一下1.代码整体结构2.RegisterApp3.RmiServer4.RmiClient四、运行看看效果五、总结一下RMI的优缺点优点劣势六、补充前言随着系统复杂度的提升,分布式变得越来越普遍。那么随之出现的一个问题就是分布式之间应用通信的问题。RPC也渐渐地被大众所知。开始出现各种RPC实现方案。例如Spring Cloud、Dubbo(阿里巴

2021-03-30 00:19:56 412 6

原创 JVM 启动参数规则:-、-X、-XX、-D表示什么意思?

通过JVM运行一个java程序的时候,我们通常会用java -jar xxxx.jar 的命令,我们通常都会根据情况配置很多的运行参数。例如:/usr/local/java/jdk1.8.0_131/bin/java -jar -server -XX:+HeapDumpOnOutOfMemoryError -Djava.io.tmpdir=/data/kinyang/tmp/ -Xmx2G -Xms2G -XX:+DisableExplicitGC -verbose:gc

2021-03-25 20:09:26 3712 1

原创 在获取方法参数名方面,Spring真的就比Mybatis强?

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Spring是如何获取方法参数名称的?Spring获取参数名称的两种方式1、StandardReflectionParameterNameDiscoverer2、LocalVariableTableParameterNameDiscoverer两种方式对比二、Mybatis为什么没有向Spring学习?1、Mybatis要获取的是接口方法的参数名称三、总结2.读入数据总结前言在使用 Spring MVC 写Contro

2021-03-05 10:56:31 436 4

原创 Spring的@Value可以注入复杂类型吗?今天教你通过@value注入自定义类型

之前写了一篇关于Spring的@Value注入的文章《介绍两种SpringBoot读取yml文件中配置数组的方法》。里面列出了@Value和@ConfigurationProperties的对比,其中有一条是写的@value不支持复杂类型封装(数组、Map、对象等)。但是后来有小伙伴留言说他用@value测试的时候,是可以注入的数组和集合的。于是我就跟着做了一些测试,发现确实可以。但是只有在以,分割的字符串的时候才可以。为什么用,分割的字符串可以注入数组?于是我就去一步一步的断点去走了一遍@value

2020-12-19 01:26:32 6754 1

原创 从分析Spring Cloud OpenFeign源码过程学习SpringCloud集成组件的原理和流程

今天聊一下OpenFeign,想必使用过SpringCloud的都用过Feign这个组件吧。OpenFeign的github源码地址:https://github.com/OpenFeign/feignFeign有什么用?官方是这么说的:Feign makes writing java http clients easier!Feign is a Java to HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket. F

2020-11-21 19:18:25 492

原创 介绍两种SpringBoot读取yml文件中配置数组的方法

一直都在用Spring的@Value注解读取yml中的配置,这两天在读取配置的时候,想读取yml中配置的一个数组,通过@Vaule一直获取不到,通过一番资料的查询,才彻底清楚了@Vaule的使用情况。在Spring中读取配置文件的快捷方法常见的有两种,一个是通过@Vaule注解进行单一字段的注入,另外一种方法就是通过@ConfigurationProperties注解来进行批量注入。这两种注入方式各有自己的优势和使用场景。@Value@ConfigurationProperties

2020-09-26 19:37:41 28295 6

原创 手把手教你,Mac 编译OpenJDK 12

今天我们来编译一下JDK!网上编译jdk的教程有很多,但是等自己真正操作的时候,就会总有各种问题出现,在此仅仅记录一下自己的编译过程,希望对大家有所帮助。编译JDK其实大部分都是环境的问题,缺少依赖或者依赖版本不对。我的电脑是macOS Mojave10.14.6 ,本次编译的是 OpenJDK12。我们需要准备的环境:1、Bootstrap JDK ----- JDK11。因为OpenJDK有多个部分(Hotspot、JDK类库、JAXWS…)构成,其中一部分Hotspot代码使用C、C++编

2020-09-04 13:52:51 1596

原创 32位CPU最多支持4G内存是怎么算出来的?(解惑篇)

文章目录前言一、对 2^32^ = 4BG的疑惑二、聊一下内存1.内存的特性2.内存的基本结构3.内存地址的概念总结前言这两天在研究java指针压缩的原理,在研究过程中就涉及到了cpu寻址相关方面的知识,为了弄明白原理,所以又查了很多资料,在这个过程中收获了很多底层方面的知识,在这里进行一下分享。聊一聊JAVA指针压缩的实现原理(图文并茂,让你秒懂)一、对 232 = 4BG的疑惑32位最大支持4G内存,到底是怎么算出来的?去网上搜索答案,大部分都会甩给一个公式2^32 = 4GB我

2020-08-18 14:51:20 16899 24

原创 聊一聊JAVA指针压缩的实现原理(图文并茂,让你秒懂)

前言在网上大家很多都看到过这样一句话:“JVM内存最好不要超过32G”。今天我们就来分析一下为什么?32G到底是怎么算出来的。JAVA对象模型我们先了解一下,一个JAVA对象的存储结构。在Hotspot虚拟机中,对象在内存中的存储布局分为 3 块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。1、对象头(Header)对象头,又包括三部分:MarkWord、元数据指针、数组长度。下面图是64位系统下的对象头布局MarkWord:用于存储对象

2020-08-17 16:12:28 13371 27

原创 Eureka 的令牌桶算法RateLimiter

最近看Eureka的源码,看到InstanceInfoReplicator对象的onDemandUpdate方法中采用令牌桶算法,来对方法进行限流,防止服务状态频繁变化导致scheduler中的任务过多。这个令牌桶限流实现的非常简单,写得特别精简。默认的限流是每分钟4个任务。public boolean onDemandUpdate() {// burstSize = 2 /// a...

2020-04-26 13:38:26 515

原创 让你明白TCP建立连接的三次握手为什么比断开连接的四次挥手少一次?(小白可以看得懂版本)

我们知道TCP建立连接的时候需要进行三次握手,而结束连接的时候却需要四次挥手。那么为什么两次不一致?建立连接的时候为什么少一次?

2020-04-02 22:34:23 966 1

原创 synchronized锁原理分析(二、锁的膨胀过程--全网最完整流程图)

锁的初始状态案例1(无锁,不可偏向状态)import org.openjdk.jol.info.ClassLayout;public class Demo1 { public static void main(String[] args) throws InterruptedException { A a = new A(); /// 理论上说这里应...

2020-03-29 13:02:00 844

原创 synchronized锁原理分析(一、从Java对象头看synchronized锁的状态)

synchronized关键字"锁"的实现本质synchronized关键字实现的锁是依赖于JVM的,底层调用的是操作系统的指令集实现。Lock接口实现的锁不一样,例如ReentrantLock锁是基于JDK实现的,有Java原生代码来实现的。synchronized 锁的是什么?Object o = new Object();synchronized (o){ System.ou...

2020-03-27 16:57:56 1711

原创 Spring的日志模块-spring-jcl源码解析以及Java的日志框架

1、 spring-jcl模块结构可以看到,这个模块的包名是apache的commons.logging,因为这是spring团队对common.logging 进行了重写,所以包名还保留之前的apache.commons.logging。这个模块非常简单,对外其实就提供了一个LogFactory类,提供两个方法,得到 Log的接口的实例public abstract class LogF...

2020-03-20 20:35:00 2806

原创 Mac 使用 IDEA 2019.3 通过maven编译SpringBoot源码,进行源码调试学习

1、从GitHub拉取源码SpringBoot项目地址:https://github.com/spring-projects/spring-boot这里我们选择2.2.5Release版本进行编译点击Branch选择分支,下拉框里选择Tags,再选择v2.2.5Release,最后点击右侧clone or download。这里下载可能有会有点慢,耐心等待…我发现Spring Boot ...

2020-03-09 23:23:19 1657

原创 SpringMVC是如何消灭web.xml后还能加载到DispatchServlet的流程

SpringMVC能做到不需要web.xml是利用了Servlet3.0的其中的一个新特性涉及到的Servlet 3.0新特性1.ServletContext 对象的功能进行了加强,支持在运行时动态部署 Servlet、过滤器、监听器,以及为 Servlet 和过滤器增加 URL 映射等2.同时新增了一个ServletContainerInitializer 接口和一个@HandlesTy...

2020-02-06 21:55:17 328

转载 linux find 命令详解

常用的命令:查找目录:find /(查找范围) -name '查找关键字' -type d查找文件:find /(查找范围) -name '查找关键字' 详解:find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。语法find...

2020-01-10 19:14:49 132

原创 SpringBoot不读取bootstrap.yml/properties文件

今天写创建了一个SpringBoot项目,配置文件从其他项目拷贝了一份bootstrap.yml之前一直用的application.yml心想:application.yml 优先级没有bootstrap.yml 高,bootstrap配置文件肯定没问题项目一跑来,发现配置文件里面的内容没读取到。之后通过各种查资料,才明白了application.yml 和bootstrap.yml 的区...

2019-12-25 10:28:21 13097 5

Mac 版本的 SocketTools

看清了,是MAC版本的哦~~~ 一个很好用的,轻量级的Socket调试工具。

2018-04-25

mac myeclipse2015CI 破解文件和教程(良心亲测)

凭良心说话,该教程根据是CSDN上一个教程改的,之前的那个教程是win版本的。我又重新写了一下破解教程文档,让更多人方便破解! 请看清楚是 MAC版本的!

2015-06-25

ERWin使用手册

数据库设计错误将会导致在很长一段时间内不断听到各种抱怨,因此,选择一个适合的数据库开发工具对数 据环境进行规范将非常重要 . Erwin 在物理数据库的生成和反向生成、双向同步和比较功能方面居领先地位 ,可以进行逆向工程、能够自 动生成文档、支持与数据库同步、支持团队式开发,所支持的数据库多达20 多种。 Erwin 数据库设计工具可以用于设计生成客户机/ 服务器、Web、Intranet 和数据仓库等应用程序数据库。

2013-07-31

新闻发布系统 源码 ASP

新闻发布系统 源码 ASP 支持发布静态 HTML功能 后台管理等

2013-07-31

viso的注册码

viso的注册码

2012-08-02

HttpAnalyzer注册机

HttpAnalyzerStdV3注册机

2012-08-02

java五子棋程序

java 五子棋程序 试用与初学者

2012-04-17

WEB开发人员参考大全最完整的HTML·CSS与JAVASCRIPT工具书

WEB开发人员参考大全最完整的HTML·CSS与JAVASCRIPT工具书

2012-04-17

dom4j解析xml实例

dom4j解析xml实例 对学习jom4j 很有帮助的

2012-04-17

dom4j_API_示例

dom4j_API_示例

2012-04-17

精通Java Swing程序设计

精通Java Swing程序设计 学习Java Swing的好帮手

2012-04-17

dom4jAPI帮助文档

chm版的dom4jAPI帮助文档 你的得力助手

2012-04-17

JavaScript参考手册

chm的JavaScript参考手册 chm的JavaScript参考手册 chm的JavaScript参考手册 好用的很哦 ! 关注我更多的 chm 手册

2012-04-17

HTML参考手册

chm的 HTML参考手册 超好用的哦!

2012-04-17

正则表达式帮助文档

chm格式的正则表达式帮助文档 很方便的帮助文档

2012-04-17

servlet API 中文版

好的资源 免费共享 这是一份关于2.1版Java Servlet API的说明文档

2012-04-03

HttpAnalyzer 包含汉化包

HttpAnalyzer 包含汉化

2012-03-18

Struts 1.2 源代码

Struts 1.2 源代码

2012-02-25

空空如也

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

TA关注的人

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