自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入理解Java线程池:原理、使用与实践

线程池的参数对于其性能和行为具有重要影响。corePoolSize(核心线程数):线程池中的常驻核心线程数。即使这些线程处于空闲状态,也不会被销毁。maximumPoolSize(最大线程数):线程池中能够容纳的最大线程数。keepAliveTime(线程空闲时间):多余的空闲线程的存活时间。当线程池中的线程数量超过corePoolSize,且线程的空闲时间达到keepAliveTime时,这些多余的空闲线程会被销毁,直到线程数量减少到corePoolSize为止。

2024-04-18 20:45:00 425

原创 揭秘ThreadLocal:Java线程局部变量的实现机制

ThreadLocal是Java中的一个类,它允许你创建线程本地变量,这些变量在每个线程中都有独立的副本。这样,每个线程都可以独立地改变自己的ThreadLocal变量副本,而不会影响其他线程的副本。首先,我们来看一下ThreadLocal的基本使用方法。// 创建一个ThreadLocal对象// 启动两个线程// 设置线程本地变量的值}).start();// 设置线程本地变量的值}).start();

2024-04-16 14:39:56 792

原创 探索Java Collections:HashMap源码深度分析

HashMap是一种基于数组和链表或红黑树(自JDK 1.8起引入)实现的哈希表结构。它允许null键和null值,是非线程安全的,并且不保证映射的顺序。JDK 1.8对HashMap进行了显著的性能优化,特别是在处理大型数据集时,通过引入红黑树的数据结构来替代传统的链表,从而有效避免了在极端情况下链表过长导致的性能问题。红黑树作为一种自平衡的二叉查找树,确保了在最坏情况下仍然能保持较好的查找和插入性能。

2024-04-08 14:08:34 861

原创 Java中隐藏的性能优化之Integer缓存揭秘

Integer缓存机制是Java 5中引入的一项优化措施,它针对自动装箱过程中整数值的频繁使用进行了优化。这种机制特别适用于-128到127之间的整数值,因为这个范围内的整数值在实际应用中使用最为频繁。通过缓存这些常用的整数值,可以避免在自动装箱时频繁地创建和销毁对象,从而减少了内存的消耗。

2024-04-06 00:36:24 504 1

原创 Api接口加解密

接口加解密是确保数据安全的关键技术之一,其通过对传输中的数据进行加密来防止数据在传递过程中被拦截、篡改或伪造。但是,单靠加解密技术并不足以应对所有安全挑战。必须整合多种安全策略,建立一个全方位的安全防护体系,以确保接口的全面安全。

2024-04-02 19:00:00 306 1

原创 函数式接口

定义:有且仅有一个抽象方法,但可以有多个非抽象方法的接口。在Java 8中,函数式接口被专门存放于包内,并且该包下的所有接口都使用@FunctionalInterface注解进行标记,这是Java 8为了支持函数式编程而引入的一个新特性。除了java.util.function包中的函数式接口外,其他包中也存在一些函数式接口(例如java.lang.Runnable),其中有些并没有使用 @FunctionalInterface注解进行标注。

2024-03-21 17:16:56 262

原创 Spring Boot 自动配置原理分析

Spring Boot最核心的功能就是自动配置,功能的实现都是基于约定优于配置的原则。那么Spring Boot是如何约定?又是如何实现自动配置功能的呢?下面我们来分析一下。我们开发Spring Boot项目的时候,都会用到如下的启动类:@SpringBootApplicationpublic class Application{ public static void main(String[] args) { SpringApplication.run(Application

2020-11-22 17:49:40 178 1

原创 IntelliJ IDEA 修改远程仓库地址

方法一:修改命令git remote set-url origin <url>方法二:先删除后添加git remote rm origingit remote add origin [url]方法三:直接修改config文件

2020-08-09 15:49:32 868

原创 IntelliJ IDEA开发基础设置总结

个人认为,IDEA 毫无疑问是目前最强大的Java开发集成工具了,但是大部分的人并没有将它用到极致,很多实用的配置,插件,小技巧等被忽视。ok,废话我们就不多说了,直接开始介绍。IDEA 软件设置Settings页面【File - Settings】界面结构介绍Appearance & Behavior 外观和行为Keymap 快捷键Editor 编辑器设置Plugins 插件Version Control 版本控制Build,Execution,Deployment 构建,执行

2020-08-02 17:10:27 417

原创 过期键的删除策略

前言首先要说明的是,redis的内存淘汰策略与redis的过期键删除策略并不完全相同,前者是在redis内存使用超过一定值的时候使用的淘汰策略;而后者是通过定期删除+惰性删除两者结合的方式进行内存淘汰的。缓存,不是存储,无法保证以前设置的缓存绝对存在。因为缓存容量是有上限的,即使set值的时候不设置过期时间,在内存不够的时候,也是会根据内存淘汰策略删除一些数据的。在开始之前请思考:过期后会立即释放内存吗?设置过期时间expire key seconds (这是最常用的方式)setex ke

2020-06-17 14:37:15 117

原创 内存淘汰策略

作为一个内存数据库,redis在内存空间不足的时候,为了保证命中率,就会选择一定的数据淘汰策略,这篇文章主要讲解常见的几种内存淘汰策略。参数设置redis可以通过maxmemory配置,来设置占用的最大内存,如果不设置或者设置为0,那么在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。可以通过以下两种方式进行设置:配置文件redis.conf中设置 (推荐)使用命令设置,config set maxmemory (redis服务重启之后,设置的将失效)127.0.0.1

2020-06-16 13:12:16 266

原创 数据结构之二分搜索树

什么是二叉树在理解二分搜索树之前,我们先来看看二叉树是什么。二叉树是一种动态的数据结构,每个节点最多只有两个叉,也就是两个孩子节点,分别叫做左孩子,右孩子,而没有一个孩子的节点叫做叶子节点。每个节点最多有一个父亲节点,二叉树的起始节点,是唯一没有父亲节点的节点,叫做根节点。二分搜索树特点:二分搜索树是一颗二叉树,满足二叉树的所有定义。二分搜索树的每个节点的值,大于其左子树的所有节点的值...

2020-04-10 19:43:43 134

原创 分布式事务之浅谈JDBC事务与JTA事务

Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。所以本文暂不讨论容器事务。本文主要介绍J2EE开发中两个比较基本的事务:JDBC事务和JTA事务。JDBC事务JDBC的一切行为包括事务是...

2019-10-07 22:30:58 283

原创 分布式事务之浅谈数据库事务

事务是什么是以一种可靠,一致的方式,访问和操作数据库中的程序单元。事务的ACID原则原子性 :事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行。持久性:一个事务一旦提交,他对数...

2019-10-05 22:12:25 225

原创 SpringCloud微服务之Eureka配置

环境springboot版本 2.1.4.RELEASEspringcloud版本 Greenwich.SR1jdk1.8maven 3.6.0idea 2017.3单节点配置Eureka Serverpom.xml启动类添加注解application.yml开启身份认证 关闭CSRF防护@EnableWebSecurity@Configur...

2019-08-10 22:46:13 191

原创 IntelliJ IDEA插件推荐

IntelliJ IDEA使用教程之插件推荐点击File,选择Settings里面的Plugins,下面是我的一些常用插件,仅仅希望能够提供一些帮助给大家,喜欢的话就赶快下载吧!插件.ignoreAlibaba Java Coding GuidelinesBackground Image Plus+Free MyBatis PluginMyBatis Log PluginHig...

2019-08-04 11:36:59 182

postgresql like模糊查询优化方案

使用场景: 1. 要求LIKE '%xxx%'模糊查询支持索引,提高数据检索速度 2. 在上一场景的基础上,实现了对多个OR条件语句的索引查询支持

2024-04-02

Shiro+Redis实现登陆账号锁定功能

Tips:默认条件下,若同一账户的密码连续输错五次,该账户将被自动锁定,无法进行登录。锁定将持续十分钟后自动解除。

2024-04-01

一种优雅且易于维护的逻辑删除方案

基于Mybatis插件模式实现的逻辑删除方案,有以下优点: 1. 无侵入,通过注解的方式添加,不需要修改现有的业务代码 2. 可以解决逻辑删除与唯一约束冲突的问题

2024-04-01

空空如也

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

TA关注的人

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