自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分代收集理论

不是算法,是算法组合策略。虚拟机根据对象存活时期的不同将堆内存分为新生代和老年代。

2026-03-03 23:27:54 1426

原创 全GC类型及触发条件

最频繁发生的GC。

2026-03-03 23:25:51 342

原创 JVM内存区域理解

服务的区域,存储要调用的 C/C++ 方法(JVM 的“外交部门”)。它是 JVM 里的“小秘书”,专门负责记录当前线程执行到哪一行代码。记住这个“一计两栈一堆一区”,你就握住了 JVM 内存世界的钥匙。,住进了本地内存(告别了 PermGen 的“空间焦虑”)的桥梁,指向执行该方法所需的信息(住在运行时常量池里)。这里是编译期生成的各种“字面量”和“符号引用”的集合地,组成,每个方法从“开演”到“谢幕”,就对应一个栈帧的。真正做计算的地方,可以理解为 JVM 的“草稿纸”。

2026-02-09 17:51:32 291

原创 为什么动态链接需要使用“符号引用”而不是直接使用“直接引用”

动态链接采用符号引用而非直接引用主要有三大原因:内存地址易变、类方法实现不确定、运行时信息未知。符号引用带来四大优势:实现跨平台兼容(一次编译到处运行)、支持运行时动态绑定、允许类加载器隔离不同版本类、提升代码可维护性(重构不影响调用方)。这种设计如同社交名片,只暴露身份不暴露地址,既保证灵活性又确保稳定性,是Java实现"长期合作"的关键机制。

2026-02-09 17:47:33 76

原创 从永久代演变成元空间的原因是什么?

Java从永久代演变成元空间的主要原因是永久代存在诸多限制:固定大小导致内存不足、与堆内存竞争资源、Full GC触发频繁且类卸载条件苛刻、调优困难。元空间改为使用本地内存,具有自动扩展能力,由操作系统管理,GC效率更高(以类加载器为粒度回收)。常见调优场景包括动态生成类、频繁热部署和反射框架,可通过监控元空间增长、检查类加载器数量、堆转储分析来诊断问题。相比永久代的"老旧公寓"模式,元空间更像"现代化酒店",管理更灵活高效。

2026-02-09 17:43:48 82

转载 dalle3生图官方文档

【代码】dalle3生图官方文档。

2025-02-24 23:14:51 522

原创 redis持久化

redis提供了两种不同的持久化方式来将数据存储到硬盘里面。一种方法叫快照(snapshotting,也可以叫RDB),它可以将存在于某一时刻的所有数据都写入硬盘里。另一种方式叫只追加文件(append-only file,也叫AOF),他会在执行写命令时,将被执行的写命令复制到硬盘中。这两种持久化方法可以同时使用,也可以单独使用,甚至也可以不使用。

2024-01-31 17:58:17 973

原创 Redis为什么快?

在进行渐进式 rehash 的过程中, 字典会同时使用 ht[0] 和 ht[1] 两个哈希表, 所以在渐进式 rehash 进行期间, 字典的删除(delete)、查找(find)、更新(update)等操作会在两个哈希表上进行: 比如说, 要在字典里面查找一个键的话, 程序会先在 ht[0] 里面进行查找, 如果没找到的话, 就会继续到 ht[1] 里面进行查找, 诸如此类。那么这里同样会带来新的问题,当数组容量特别大的时候,如果发生rehash那么会移动大量的元素,这样仍然会导致redis线程阻塞。

2024-01-11 17:38:00 1352

原创 谈谈你对synchronized的理解

涉及对象头markword,锁膨胀,synchronized用法

2023-12-27 16:03:59 993

原创 HashMap扩展问题:HashMap如何实现线程安全?

面试官:聊聊你对ConcurrentHashMap的理解。我:巴拉巴拉巴拉。。。AQS?面试官提笔写在了简历上(基础差,表达能力不行)

2023-12-25 18:21:26 1477

原创 HashMap扩展问题:为什么容量要保证在2的N次方?

面试官:为什么容量要保证在2的N次方?我:因为计算机是2进制!面试官:?????尊嘟假嘟。好我们聊点别的。

2023-12-19 22:12:52 1421

原创 深入理解HashMap

面试官:谈谈你对HashMap的理解我:贵公司的水很好喝,哪个牌子的

2023-12-19 12:26:10 497

原创 记一次mysql视图引起的生产事故

业务需求涉及无关联的多表分页查询,因此使用union合并了两张表数据做成了一个视图(问题就出在这里)。

2023-09-19 14:40:32 240

原创 windows安装elasticSearch+kibana+ik(网盘链接)7.17.7版本

链接:https://pan.baidu.com/s/1scgAvuEMaB5pkN-MUA7Imw。然后进入elasticsearch/bin,双击elasticsearch.bat启动es。打开kibana,进入config文件夹,修改kibana.yml文件。再然后进入kibana/bin,双击kibana.bat。进入到es控制台,然后就可以输入命令了。点击左侧工具栏,打开开发工具。查看kibana是否启动。

2023-08-18 10:47:21 675

原创 java 整合 neo4j 5.9.0简单使用

删除了@RelationshipEntity注解,变成了@Relationship,type是关系名称,比如。由于查到的视频资料都是老版本的neo4j,新版本中并没有之前的那些注解。所以这里简单写几个自学的例子。比如String转Date,或者String转Object(某个自定义实体对象)@NodeEntity()注解变成了@Node注解。都是简单的东西,只是希望和我一样不会的人少走点弯路。方式1:关注与当前节点有关系的对象,那么就是。这一段中的 【测试关系】 就是type。方式2:关注关系+关系对象。

2023-08-01 14:53:19 856 4

原创 记一次大数据调feign接口导致OOM的情况

大数据导出调feign接口OOM

2023-05-19 17:00:12 1096

原创 mysql什么情况下会锁表

在MySQL中,当对表进行写操作(如INSERT、UPDATE、DELETE)时,需要对相关的数据行加锁以确保数据的一致性和完整性。在某些情况下,MySQL需要锁定整个表而不是部分行,这种情况下会锁定整个表,导致其他会话不能访问表。因此我们需要在条件字段上加索引,从而将表锁变为行锁。

2023-03-23 09:57:39 4505

原创 word转pdf+word转html

【代码】word转pdf+word转html。

2023-03-20 17:49:22 321

原创 aop解决 防重复提交

aop实现防重复提交

2023-03-17 15:14:43 620

原创 一发请求就服务重启的问题记录

aliyun之前设置的资源限制内存是2048,而业务中存在大数据导入的情况。当请求访问到服务时,超出了资源限制,从而导致服务自动重启或者 请求的线程直接被kill。解决方案: 增大资源限制。由2048-》4096 问题解决。记录一次由于资源限制导致服务重启的问题。

2023-01-12 11:28:18 337

原创 活动对象模式 学习记录

活动对象模式学习记录

2022-12-22 15:48:35 158

原创 抽象工厂示例

抽象工厂模式 示例

2022-12-22 15:00:56 116

转载 CSRF攻击的解释

CSRF的相关解释

2022-12-16 16:06:02 264

原创 nacos服务注册底层+心跳底层

1. 服务注册:其实就是调用HttpClient发送一个http请求实现的服务注册。信息中包含了命名空间,服务名,组名,集群名,ip,端口,权重,健康状况等信息。2. 心跳监测:通过将心跳信息封装成一个BeatTask线程任务,然后交给定时线程池执行。如果长时间服务端无法接收到客户端的心跳,此时服务端认为你的这个服务实例出问题了,这样服务端就会主动从服务注册表中剔除该服务实例,该服务实例就不存在服务端了。因此监测返回的状态码会为20404,之后会重新将该服务实例注册到服务端。...

2022-07-07 21:02:15 881

原创 ReetrantLock非公平锁底层原理

ReetrantLock非公平锁底层原理

2022-06-23 20:31:39 238

原创 ReetrantLock释放锁的过程

ReetrantLock释放锁的过程

2022-06-23 20:30:32 236

转载 mysql主从库复制原理

mysql主从数据库复制

2022-06-03 17:27:22 151

原创 MVCC实现原理

MVCC,Multi-version Concurrency Control多版本并发控制。是一种用来解决读写冲突的无锁并发控制。他通过为事务分配单项增长的时间戳,为每个修改保存一个版本。版本与事务时间戳相关联。读操作只读该事务开启之前的数据库的快照。所以MVCC可以为数据库解决以下问题: 1、在并发读写数据库时,可以做到在读操作时不用阻塞写操作,写操作时也不用阻塞读操作。提高了数据库并发读写的性能。 2、能够解决脏读、不可重复读,以及一定程度的幻读等事务隔离性问题。但是不能

2022-06-03 16:03:38 983

原创 ACID是靠什么来保证的?

ACID依靠什么来保证?mysql如何保持redolog与binlog的一致?

2022-06-02 23:46:51 1532

转载 Repeatable Read可重复读不能完全解决幻读问题

原文转载:https://springboot.io/t/topic/260CREATE TABLE (可重复读能够一定程度的解决幻读,但是不能完全解决

2022-06-02 23:10:43 742

转载 yml中配置分页插件的各参数意义

yml分页插件配置,及各参数意思:配置参数说明:helperDialect :分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect 属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:oracle , mysql , mariadb , sqlite , hsqldb , postgresql , db2 , sqlserver , informix , h2 , sqlserver2012 , derby特别注意:使用 SqlServer201

2022-05-30 19:49:15 801

原创 模仿springboot自动配置datasource

1、创建一个自己的spring-boot-starter(叫啥都行),结构如下:2、导入依赖    需要依赖spring-boot-starter。因为需要用到springboot的注解。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2

2022-05-30 19:25:25 283

原创 mybatis-generator-maven-plugin

1、导入依赖 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency> <dependency>

2022-05-30 19:02:32 1038

原创 swagger的使用

1、导入依赖<!--swagger--> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</ar

2022-05-30 18:57:40 110

原创 zookeeper安装以及dubbo学习笔记

dubbodubbo3.0中文文档链接:https://pan.baidu.com/s/1lxlNFQev19RKjXZKxxegEA提取码:bbab一个高性能javaRPC框架。R:Registry 注册中心P:Provider 服务提供者C:Consumer 服务消费者三大核心能力:1、面向接口的远程方法调用2、智能容错和均衡负载3、服务自动注册和发现dubbo运行流程:1、服务支持者将所有服务的URL地址注册到注册中心2、服务消费者向注册中心订阅需要的方法3、注册中心

2022-05-29 12:27:41 635

原创 springboot自定义错误页面

Spring Boot默认的错误页面路径是在resources/templates/error/目录下,当发生404、500状态码时,默认会跳转到该路径下的页面。也可以自定义错误页面:配置类@Configurationpublic class ErrorConfig implements ErrorPageRegistrar { @Override public void registerErrorPages(ErrorPageRegistry registry) {

2022-05-29 11:19:26 1670

原创 springboot集成kaptcha验证码

导入依赖<!-- kaptcha 验证码开源组件 --><dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version></dependency>kaptcha.xml<?xml version="1.0" encoding="

2022-05-26 19:59:19 254

原创 指令重排的理解

指令重排的前提:1、单线程中执行结果如果一致,那么可以任意交换。2、语句之间没有依赖关系,那么可以交换。指令重排的原因:为了提高执行效率。理解:        a=1;        a++;        b=2;   

2022-05-25 21:28:12 662

原创 nio的简单笔记加实例

NIO的三个重要组成(或许能这么说吧):Channel、Buffer、Selector。俺们先简单介绍一下他们三个的作用。Channel:见名知意。这是一个通道。它的好处就是两端都可以进行读写操作。并且InputStream,OutPutStream,RandomAccess都提供了获取到FileChannel的api也就是getChannel()。FileChannel俺不太熟。主要记录一下其他的Channel。socket通道基本特点:1、socket通道都继承了AbstractSelecta

2022-05-23 21:35:46 329

原创 html页面通过ajax上传文件以及表单数据

js获取前端数据function register() { var user_name = $("#username").val(); var user_password = $("#password").val(); var user_email = $("#email").val(); var user_photo = $("#user_photo")[0].files[0]; var user_birthday = $(

2022-05-21 11:25:31 755

空空如也

空空如也

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

TA关注的人

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