自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 缓存雪崩、穿透、击穿解决方案

摘要:本文介绍了缓存常见的三大问题及解决方案。1.缓存雪崩:大量热点数据同时失效导致数据库压力骤增,可通过分散过期时间、使用互斥锁、定时更新和保证Redis高可用来解决。2.缓存穿透:恶意请求不存在的数据,可通过IP封禁或布隆过滤器拦截。3.缓存击穿:单个热点key失效引发并发访问数据库,建议采用互斥锁机制,结合双重检查锁优化性能。这些方案能有效保护后端数据库,提升系统稳定性。

2025-09-04 17:32:43 359

原创 工厂模式全解析:简单、方法、抽象工厂详解

摘要:本文介绍了三种工厂设计模式:1)简单工厂模式,通过单一工厂类创建少量产品,但违反开闭原则;2)工厂方法模式,将实例化延迟到子类,符合开闭原则但会增加类数量;3)抽象工厂模式,用于创建产品族,能处理相关对象组但扩展性较差。每种模式都包含定义、适用场景、优缺点及Java代码示例,展示了不同模式在对象创建方面的特点与实现方式,适用于不同复杂度的产品创建需求。

2025-08-21 19:22:25 395

原创 Java-JVM的内存模型

JVM内存模型可以从进程生命周期和线程生命周期。

2025-08-15 16:48:36 391

原创 Java-JVM是什么&JVM的类加载机制

1.jvm是java虚拟机,是java程序运行的基础环境2.jvm运行的是java源代码经过编译后的class文件,这些class文件经过jvm负责解释或即时编译为对应平台的机器码并执行3.class文件也可以通过其他【jvm languages】经过编译后得到,例如scala、kotlin、groovy等。

2025-08-15 16:15:22 437

原创 Java-线程&线程的创建方式

Java线程编程摘要:进程是资源分配的基本单位,线程是CPU调度的基本单位,属于进程且共享资源。Java实现线程有三种方式:1)继承Thread类并重写run()方法;2)实现Runnable接口,更适合资源共享场景;3)实现Callable接口(JDK1.5+),支持返回值和异常处理。多线程虽不能提高效率但能提升CPU利用率。注意线程启动必须调用start()而非run()方法,且不能重复启动同一线程对象。

2025-08-09 22:01:31 202

原创 Java-注解

1.@Override:检查方法是否是继承自父类或接口的,不是则报错2.@Deprecated:表示该注解标识的内容已经过时,不推荐使用3.@SuppressWarnings:用于压制警告元注解public @interface 注解名称{属性列表;

2025-08-08 19:29:55 554

原创 Java-反射

反射机制是在运行时,对于任意一个类,都可以知道这个类的所有属性和方法;对于任意个对象,都可以调用它的任意一个方法。只要给定类的名称,就可以通过反射机制获得类的所有信息。这种动态获取信息以及动态调用方法的功能称为java语言的反射机制。

2025-08-08 18:46:03 375

原创 java - 深拷贝 & 浅拷贝

浅拷贝只复制对象的引用,不复制应用指向的实际对象。对基本数据类型的对象复制值,对引用字段的值复制其引用。深拷贝不止复制对象本身,还递归复制对象中所有引用的对象,使新对象和旧对象之间完全独立。

2025-08-07 21:24:49 250

原创 外观模式(门面模式)

外观模式,又称门面模式。提供一个统一的接口,用来访问子系统中的一群接口。其主要特征是使定义了一个高层接口,让子系统更加容易使用。

2025-03-21 22:30:39 257

原创 内存可见性问题

在重复进行多次相同的读取操作时,编译器会对此过程进行优化,不再从内存进行读取,而是从寄存器进行读取,此时另一个线程修变量,寄存器中的值不变,产生内存可见性问题。volatile关键字在词义上是“不稳定的,易变的”,使用volatile关键字修饰后,变量固定从内存中读取,避免因为编译器优化产生内存可见性问题。但使用volatile关键字后会降低程序运行效率。

2025-02-24 11:42:26 254

原创 Java多线程-死锁

第一次加锁能够成功,但第二次加锁时锁已经被占用,只能进行阻塞等待,而第一次加锁又没有走完因此无法释放,导致第二次加锁会一直阻塞等待。sleep()函数是为了确保每个线程已经执行到获取第二把锁的阶段,如果不加,可能会出现某个线程一次性获取到两把锁,顺利执行的情况,不能达成死锁。把嵌套的锁改成并列的锁,使得不会出现一个线程持有一个锁并等待另一个线程持有的锁的情况。一个线程拿到锁后,另一个线程想要再尝试获取锁,必然要阻塞等待,而不是把锁抢过来。两个线程两把锁,每个线程获取到一把锁后,尝试获取对方的锁。

2025-02-22 23:33:15 437

原创 Java数据结构-交换排序

1. 时间复杂度:O(N^2)2. 空间复杂度:O(1)3. 稳定性:稳定1. 时间复杂度:O(N*logN)2. 空间复杂度:O(logN)3. 稳定性:不稳定。

2025-02-05 10:43:03 389

原创 Java数据结构-选择排序

1. 直接选择排序效率不是很好。实际中很少使用2. 时间复杂度:O(N^2)3. 空间复杂度:O(1)4. 稳定性:不稳定1. 时间复杂度:O(N*logN)2. 空间复杂度:O(1)3. 稳定性:不稳定。

2025-01-31 01:17:44 209

原创 Java数据结构-插入排序

1. 元素集合越接近有序,直接插入排序算法的时间效率越高2. 时间复杂度:O(N^2)3. 空间复杂度:O(1)4. 稳定性:稳定1. 希尔排序是对直接插入排序的优化。2. 当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。3. 希尔排序的时间复杂度不固定,一般在O(N^1.3) ~ O(N^1.6)之间。

2025-01-29 14:09:10 174

原创 MySQL数据库-存储路径更改

将datadir=C:/ProgramData/MySQL/MySQL Server 8.0\Data注释掉,添加存储位置。4.重启MySQL(使用管理员权限)2.将原数据库内容复制到指定位置。用管理员身份打开my.ini。

2024-11-12 12:49:25 3524

转载 头歌数据结构(C)- 顺序线性表

【代码】头歌数据结构(C)- 顺序线性表。

2024-09-06 11:48:43 1012

原创 Linux-RHCSA-day1 (配置网络,登录远程系统常规方法)

nmcli connection modify uuid id号码 ipv4.method manual ipv4.addresses 172.25.250.100/24 ipv4.dns 172.25.250.254 ipv4.gateway 172.25.250.254。nmcli connection modify uuid id号码 connection.autoconnect yes /开机自动激活网卡。设置网卡的状态(修改成手动)、ip地址、子网掩码、dns、网关。

2024-08-13 16:58:06 489 2

空空如也

空空如也

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

TA关注的人

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