自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JMM内存模型以及和JVM的关系

JMM(Java 内存模型)主要定义了在多线程环境下, 对于一个共享变量,当另一个线程对这个共享变量执行写操作后,其他线程对他的访问需要遵循哪些规则,以保证并发程序的可见性,原子性和有序性。happens-before 是 JMM 定义的一组规则,用于描述操作之间的可见性和有序性。以下是常见的规则:

2025-08-18 15:01:06 490

原创 垃圾回收机制总结

GC是Java的“自动清洁工”,专门回收程序不再使用的内存,防止内存泄漏, 就像不用了的空饮料瓶,系统自动帮你扔掉。垃圾回收机制有效的防止了内存泄露可以有效的使用可使用的内存。垃圾回收器通常作为一个单独的低级别的线程运行,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会对内存堆中已经死亡的或很长时间没有用过的对象进行清除和回收。对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。

2025-08-17 13:17:53 812

原创 MySql知识点总结

比如说现在Insert Buffer中有1,99,2,100,合并之前可能要4次插入,合并之后1,2可能是一个页的,99,100可能是一个页的,这样就减少到了2次插入。比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。notice的信息入库失败,但是history成功入库了。,因此,把频繁访问的数据放在靠近根节点的地方将会大大提高热点数据的查询效率。

2025-08-17 13:15:37 1140

原创 JVM基本原理

对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要手动释放内存,不容易出现内存泄露和内存溢出问题。一旦出现内存泄露和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,排查错误将会异常艰难。虚拟机栈可能会抛出两种异常:虚拟机栈和本地方法栈的主要区别:参数设置:参数含义解析:11.1.6. 方法区(永久代) 方法区是 JVM 的一个规范,所有虚拟机必须要遵守的。常见的虚拟机有 Hotspot 、 JRockit(Oracle)、J9(IBM) 方法区逻辑上属于堆的一部分,但是为了与

2025-08-17 13:15:08 1022

原创 力扣(leetcode)HOT100算法题总结

解题思路:该代码使用二分查找算法来定位目标值在数组中的起始和结束位置。通过两次二分查找(分别查找左边界和右边界),确保在 O(log n) 时间复杂度内完成搜索。如果目标值不存在,返回 [-1, -1]。时间复杂度:O(logn) ,其中n为数组的长度。二分查找的时间复杂度为O(logn),一共会执行两次,因此总时间复杂度为O(logn。

2025-08-09 11:50:35 2006

原创 Redis分区,分布式锁SETNX以及缓存

前景引入:synchronized和Lock只可以做到线程间的同步,而且仅限于单机应用,在分布式集群系统中用来共享资源是不行的,尤其是电商项目,很可能出现超卖情况。

2025-08-08 09:06:21 1349

原创 MySql锁以及SQL约束

可重复读:读操作需要加共享锁,但是在事务提交之前并不释放共享锁,必须等待事务执行完毕以后才释放共享锁。读未提交 :不需要加共享锁,这样就不会跟被修改的数据上的排他锁冲突。读已提交:需要加共享锁,但是在语句执行完以后释放共享锁。串行化:并一直持有锁,直到事务完成。

2025-08-07 20:19:47 306

原创 MySql的索引介绍

比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。B+树的叶节点由一条链相连,因此,当需要进行一次全数据遍历的时候,B+树只需要使用O(logN)时间找到最小的一个节点,然后通过链进行O(N)的顺序遍历即可。而B树则需要对树的每一层进行遍历,这会需要更多的内存置换次数,因此也就需要花费更多的时间。由于B+树的内部节点。

2025-08-07 20:18:31 860

原创 MySql存储引擎MyISAM与InnoDB

比如说现在Insert Buffer中有1,99,2,100,合并之前可能要4次插入,合并之后1,2可能是一个页的,99,100可能是一个页的,这样就减少到了2次插入。这里索引不唯一是因为如果要保证唯一,每次操作还得去判断当前索引值是否已存在,而判断又涉及到磁盘随机 I/O,从而发挥不出插入缓存的优势。InnoDB 虽然主要使用 B+ 树作为索引结构,但在某些特殊场景下用到哈希索引。InnoDB的行锁是实现在索引上的,而不是锁在物理行记录上。潜台词是,如果访问没有命中索引,也无法使用行锁,将要退化为表锁。

2025-08-07 20:17:38 378

原创 MySql三大范式以及数据类型简介

总结:参考资料 :【MySQL】MySQL中的数据类型详解_mysql bool-优快云博客

2025-08-07 20:16:38 160

原创 GC垃圾回收以及CMS垃圾回收

基于可达性分析的垃圾回收算法,而不是引用计数法。

2025-08-07 20:14:45 409

原创 Foreach底层原理

【代码】Foreach底层原理。

2025-08-07 20:13:13 183

原创 事件轮询机制

轮询机制引出:JS是单线程的,同一时间只能做一件事,所有任务都需要排队,前一个任务结束之后,才会执行后一个任务什么是事件轮询:主线程从"任务队列"中读取事件,这个过程是循环不断的,所以整个的这种运行机制又称为Event Loop(事件循环)以下是轮询机制的基本执行线:参考资料:事件轮询机制-优快云博客

2025-08-07 20:12:37 243

原创 BIO,NIO,AIO理解

Buffer又叫做缓冲区,是一个对象,里面主要是写入或者是读出的数据,在java.nio库中,所有的数据都是用缓冲区处理的在读取数据时,是直接读取到缓冲区的,在写入数据时也是直接写到缓冲区,任何时候访问Channel中的数据,都是通过缓冲区来进行操作的缓冲区实际上就是一个数组,通常是一个字节数组ByteBuffer,也有其他的。

2025-08-07 20:12:04 869

原创 ThreadLocal和线程同步机制

我们知道在一般情况下,只有无状态的Bean才可以在多线程环境下共享,在Spring中,绝大部分Bean都可以声明为singleton作用域。就是因为Spring对一些Bean(如RequestContextHolder、LocaleContextHolder等)中非线程安全状态采用ThreadLocal进行处理,让它们也成为线程安全的状态,因此有状态的Bean就可以在多线程中共享了。为解决Spring中的多线程并发问题(主要是相同变量的访问冲突),提出了ThreadLocal以及线程同步机制。

2025-08-07 20:11:12 306

原创 CAS算法

使得对临界区资源的修改可以马上被其他线程看到,它是通过添加内存屏障实现的。上面说到当前线程可以发现其他线程对临界区数据的修改,这点可以使用。

2025-08-07 20:10:37 632

原创 锁的介绍(synchronized为主)

synchronized 属于悲观锁。synchronized作用于静态的increase(),这样的话对象锁就在当前的类,无论创建多少个对象,类只有一个,也就是说synchronized同步静态方法的情况下对象锁就是唯一的。介绍 : synchronized(对象锁)采用互斥的方式让同一时刻至多只有一个线程能持有对象锁,其他的线程再想获取这个对象锁时就会被阻塞,属于是悲观锁。偏向锁只会执行一次CAS操作,而轻量级锁在发生锁的竞争和释放时每次都会执行CAS的操作,会造成一定的性能开销。

2025-08-07 20:10:08 588

原创 线程基础知识

线程在执行过程中虽然不会完全停止(不像死锁那样完全无法继续),但因为线程彼此互相影响,导致程序无法正常推进或完成任务。线程执行是不管执行顺序的,开始执行时的顺序都是随机的(实际上是操作系统通过算法调度和分配资源,JDK不能影响她)注意:wait和notify需要成对出现,或者wait和notifyAll成对出现,否则可能出现假死锁。方法是不允许有参数的,我们一般要执行的线程都要传参数,所以只能通过继承和实现来解决参数传递的问题。存在生产者消费者之间的问题,如果仓库中只剩下最后一个资源,A线程和B线程争夺。

2025-08-07 20:07:20 1063

原创 如何给Spring配置元数据

这些都可以称之为类的元数据。

2025-08-07 20:04:35 440

原创 强引用,弱引用,软引用,虚引用

参考材料:Java的四种引用类型:强引用、软引用、弱引用、虚引用-优快云博客

2025-08-07 20:03:55 133

原创 分代垃圾回收器

在大多数程序中,新创建的对象往往很快就会变得不可达(即不再使用),而长时间存活的对象则有可能继续存活下去。:分代垃圾回收的核心思想是将堆内存划分为多个区域或代。:在不同代使用不同的垃圾回收算法用来提高效率。

2025-08-07 20:03:23 363

原创 方法引用介绍

方法引用 : 引用类的静态方法,引用对象的实例方法,引用类的实例方法,构造器引用

2025-07-17 02:01:11 490

原创 函数式接口简介

函数式接口简介

2025-07-17 01:27:01 928

原创 Optional概述

optional概述,常见的使用方法

2025-07-17 01:09:12 733

原创 Stream流速成

stream流的基本使用,介绍了常用的操作以及注意事项,哔站博主'三更草堂'的课程笔记

2025-07-16 21:35:01 813

原创 Lambda表达式

Lambda表达式基础速成,哔站博主'三更草堂'的课程笔记

2025-07-16 01:45:28 950

原创 谷粒商城后端技术笔记总结

nacos注册中心和配置中心步骤详解,网关gateway初步配置

2025-07-15 16:28:18 857

原创 负载均衡介绍

负载均衡简单介绍

2025-07-07 00:55:12 183

原创 本地调用和远程调用

远程调用理解

2025-07-07 00:44:15 279

原创 集群&分布式&节点

集群分布式以及节点的快速理解

2025-07-07 00:42:15 619

原创 微服务概念

微服务的基本概念以及微服务和单体架构的对比

2025-07-07 00:40:25 215

原创 顺序表和链表(主)

介绍了顺序表和链表,主要介绍了什么是链表以及链表的分类和双向链表的基本操作:增删改查以及双向循环

2025-06-23 18:13:10 1025

原创 算法和算法分析以及常见的排序和查找算法

算法和算法分析的概述,以及栈,队列,树,常见的查找方法和常见的排序算法等

2025-06-23 15:58:16 656

原创 Solr简单介绍

Solr简单介绍,使用场景

2025-06-20 11:18:16 1088

原创 数据结构之抽象数据类型及三元组表示

抽象数据类型介绍,以及他的三元组表示

2025-06-20 11:15:49 354

原创 数据结构之数据的存储结构概述

数据结构的存储结构和数据的操作以及逻辑结构和存储结构的关系

2025-06-20 10:15:18 1015

原创 数据结构之逻辑结构概述

文章介绍了什么是数据结构以及相关的基本概念,主要介绍了数据结构的逻辑结构,最后做了小结

2025-06-20 08:50:39 754

原创 SQL最左匹配原则

SQL最左匹配原则

2024-09-12 22:31:31 636

原创 Echarts综合应用

Echarts

2024-09-10 22:21:07 841

原创 jQuery过滤器和Filter

jQuery过滤器和Filter

2024-09-09 23:21:46 1499

空空如也

空空如也

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

TA关注的人

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