自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 简单CRUD?-- NO!高级程序员需要了解的MySQL底层知识

问题答案Redo Log 何时刷盘?由控制,默认 COMMIT 时强制刷盘(值=1)。Redo Log 是 InnoDB 的物理日志(用于崩溃恢复),Binlog 是 Server 层的逻辑日志(用于复制/备份)。为什么需要 2PC?防止 Redo Log 和 Binlog 不一致导致主从数据错乱,通过 Prepare + Commit 两阶段 + 崩溃恢复逻辑保证原子性。与配合才能实现“强持久+强一致”控制多个并发事务之间如何相互影响。高并发场景下,一个事物的读写操作会不会被其他事物“干扰”?

2025-11-10 20:52:09 716

原创 JUC再总结

JUC是Java并发编程的核心包,全称,是JDK1.5引入的一套高层次、线程安全、高性能的并发工具类库,旨在解决传统多线程编程(如仅依赖synchronized和Thread)中存在复杂性高、易出错、性能差等问题。一个线程先获取写锁、再获取读锁、最后释放锁,从而在保持读锁的情况下“降级”为只读模式只有当变量当前值等于预期值时,才能把它改成新值;否则失败。它主要做了什么?CAS是CPU提供的一条硬件级原子指令,在Java中通过unsafe类或AtomicXXX类(如)暴露使用。// 成功。

2025-11-06 16:42:23 1048

原创 RabbitMQ全链路复盘

阶段风险点保障措施生产者 → Broker网络中断、Broker 未收到启用Broker 存储Broker 宕机队列 + 消息持久化消费者处理消费失败、重复消费手动 ACK + 幂等性 + DLQ特性事务机制(Transaction)发布确认(Publisher Confirm)可靠性高(强一致)高(最终确认)性能极低(同步阻塞)高(支持异步/批量)吞吐量下降 10 倍以上接近无确认模式实现复杂度简单中等(需处理异步回调)是否推荐生产使用不推荐强烈推荐问题答案。

2025-10-30 00:06:19 961

原创 Redis深度探索

Redis的String结构底层使用的是SDS实现的,没有采用C语言原生字符串。SDS通过len记录长度,支持O(1)获取长度、二进制安全、自动扩容和放缓冲区溢出。为了优化内存,Redis根据字符串长度使用不同类型的SDS结构。String类型的最大容量是512MB,这是Redis的硬性限制,主要是为了避免单个key过大占用过多内存影响性能和稳定性维度hashtable内存占用极低(连续存储,无指针)高(每个 entry 有结构体+指针)查找性能O(n)(遍历)O(1) 平均适用场景。

2025-10-22 18:49:55 805

原创 Java编程基础总结

Java反射是Java语言提供的一种机制,允许程序在运行时动态地获取类的信息(如类名、方法、字段、构构造器等),并且可以动态地创建对象、调用方法、访问字段,即使这些信息是在编译时是未知的。CPU密集看核数、I/O密集要翻倍;队列要有界,拒绝策略要靠谱;合理配置线程池能显著提升系统吞吐量并避免资源耗尽。当多个线程同时访问一个类(对象或方法)时,无论运行时调度如何交错,该类的行为始终符合预期,不会出现数据不一致、状态错误或异常结果。检查项是否满足是否无状态?是 → 天然安全状态是否全部不可变?

2025-10-21 00:36:38 708

原创 Java并发编程

ThreadLocal是一种用于实现线程局部变量的工具类,它允许每个线程都拥有自己的独立副本,从而实现线程隔离。//1. 创建一个ThreadLocal变量//2. 设置ThreadLocal的值,不同线程之间互不干扰//3. 获取ThreadLocal的值//4. 删除ThreadLocal的值线程池是用来管理和复用线程的工具,它可以减少线程的创建和销毁开销。在Java中,是线程池的核心实现,它通过核心线程数、最大线程数、任务队列和拒绝策略来控制线程的创建和执行。/**

2025-10-20 00:22:12 1094

原创 Mysql进阶学习

关系型数据库(Relational Database)是一种基于关系模型的数据库,它使用表格(表、行、列)来组织和存储数据,并通过预定义的关系(如主键、外键)来关联不同表中的数据。数据模型NoSQL支持灵活的数据模型,如键值对(Redis)、文档(MongoDB)、列族(Cassandra)、图数据库(Neo4j)。无需固定表结构,适合非结构化或半结构化数据(如JSON、日志、社交网络关系)。扩展性。

2025-10-20 00:18:18 1028

原创 SpringCloud全链路攻坚

Spring Cloud就是分布式微服务架构的一站式解决方案Distributed/versioned configuration 分布式版本配置Service registration and discovery 服务注册和发现Routing 路由Service-to-service calls 服务调用Load balancing 负载均衡Circuit Breakers 断路器Distributed messaging 分布式消息...

2025-10-20 00:09:50 959

原创 JVM底层攻坚

JVM(Java Virtual Machine,Java虚拟机)是运行Java字节码的虚拟机,负责将.class文件解释或编译成机器码并在不同平台上执行,实现“一次编写,到处运行”。维度JVM运行时数据区Java内存模型(JMM)定位JVM内部内存结构(实现层面)并发内存访问规范(语言层面)目的描述Java程序运行时数据的存储位置定义多线程下内存操作的可见性、有序性、原子性是否物理存在是(对应真实内存区域)否(是抽象逻辑模型)关注点内存如何划分(堆、栈、方法区等)线程如何与共享变量交互。

2025-10-19 23:57:17 904

原创 Spring AOP 实战案例+避坑指南

为什么SpringAOP无法代理this?其实本质上是因为SpringAOP基于代理模式实现,外部调用目标方法的时候,实际上使用的是代理对象调用的方法,this指向的是原始对象,调用直接发生在原始对象上,没有经过代理对象,所以相当于绕过了SpringAOP这个机制!AOP生效:外部调用 -> 代理对象.methodA() -> 原始对象.methodA()AOP不生效:原始对象.methodA() -> this.methodB() (直接调用原始对象,绕过代理)

2025-10-19 23:51:19 829 1

原创 Token快过期的三种续期方案

特性滑动窗口机制双Token/刷新令牌服务端自动续期用户体验⭐⭐⭐⭐⭐ (最佳)⭐⭐⭐⭐ (良好)⭐⭐⭐⭐ (良好)安全性⭐⭐ (较低)⭐⭐⭐⭐⭐ (最高)⭐⭐⭐⭐ (高)实现复杂度⭐⭐ (简单)⭐⭐⭐⭐ (复杂)⭐⭐⭐⭐⭐ (最复杂)服务器开销⭐⭐⭐ (中等)⭐⭐⭐ (中等)⭐⭐ (高)是否无状态是否 (Refresh Token需存储)否主流推荐度低高中。

2025-10-19 23:47:05 1346

原创 ConcurrentHashMap&Redis实现二级缓存

HashMap:线程不安全,不建议多线程环境使用:线程安全,但是使用的是分段锁(Segment)机制Hashtable:线程安全,但使用的是全局锁,对所有的操作都加锁,对性能有很大的影响,会导致严重的效率问题HashMapput一个对象的时候,先根据对象的hashcode和数组的长度进行求余,通过余数来确定对象放在数组中的哪一个下表每个hash桶中存放的是具体对象的链表初始化的数组长度为16,中间还可能发生扩容,扩容的时候会对当前的表中的元素hash到新的哈希表中。

2025-07-30 21:24:20 1037 2

原创 JDBC编程

JDBC(Java Database Connectivity,Java数据库连接)是Java程序和数据库之间的桥梁,包含了一整套Java定义的用于执行SQL语句的接口,使得开发者能够编写数据库程序。JDBC的主要作用是:与数据库建立连接、发送SQL语句和处理数据库执行结果。

2025-03-18 19:51:04 843

原创 深入理解MySQL数据库索引

MySQL的索引是一种数据结构它可以帮助数据库高效地查询、更新数据表中的数据。索引通过一定的规则排列数据表中的记录,使得对表的查询可以通过对索引的搜索来加快速度。MySQL索引类似于书籍的目录,通过指向数据行的位置,**可以快速定位和访问表中的数据。**就像使用汉语字典的目录(索引)页,可以通过笔画、偏旁部首、拼音等排序的目录快速查到所需要的字。索引应该创建在高频查询的列上。索引需要占用额外的存储空间 – 每一个索引都会生成对应的一个索引树。

2025-03-17 21:42:34 1045 34

原创 MySQL增删改查操作 -- CRUD

Create(创建)Retrieve(读取)Update(更新)Delete(删除)

2025-03-13 16:20:03 1031 26

原创 MySQL数据类型与表的操作

经常会对表结构进行调整,比如向现有表中添加列,删除列,修改列名、数据类型或长度等。utf8mb4:可以用1-4个字节表示一个字符。会根据实际开发需要确定分配位数。

2025-03-10 12:24:10 839 3

原创 人工智能基础入门

人工智能是指通过计算机系统模拟人类智能的能力。这包括学习、推理、问题解决、感知、语言理解等多种智能行为。AI的目标是创建能够执行通常需要人类智能的任务的机器。机器学习是一种通过数据训练模型,使机器能够自动学习和改进的技术。与传统的编程不同,机器学习模型通过分析大量数据来发现规律和模式,从而做出预测或决策。深度学习是机器学习的一个子领域,基于人工神经网络(尤其是深度神经网络)进行学习和推理。深度学习的核心思想是通过多层神经网络模拟人脑的神经元结构,从而实现对复杂数据的高效处理。

2025-03-09 08:49:10 1131

原创 MySQL库的操作

创建一个名为demo1的数据库。

2025-03-09 08:46:58 930

原创 MySQL数据库基础

数据库技术主要是用来解决数据处理的非数值计算问题,数据处理的主要内容是数据的存储、查询、修改、排序和统计等。SQL是结构化查询语言的简称,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库。

2025-03-06 23:52:18 827 3

原创 如何在开发中更好地使用DeepSeek:从入门到精通

DeepSeek是一个开源的深度学习框架,旨在为开发者提供高效、灵活的机器学习工具。它支持多种深度学习模型,包括卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)等,并且提供了丰富的API和工具,帮助开发者快速构建和部署AI应用。DeepSeek不仅支持预定义模型,还支持自定义模型。可以通过继承类来创建自定义模型。

2025-02-27 00:07:01 1562 2

原创 深入理解 并查集&LRUCaChe

LRU(Last recently used)的缩写,意思是最近最少使用,是一种CaChe替换算法。Cache是指位于CPU和主存间的快速RAM,通常它不像系统主存那样使用DRAM技术,而是用昂贵但是较为快速的SRAM技术广义上:位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构。处理CPU与主内存之间有Cache,内存与磁盘之间也有, 乃至在硬件与网络之间也有某种意义上的Cache–称为Internet临时文件夹或网络内容缓存等。

2025-02-27 00:01:42 802

原创 位图&布隆过滤器

位图布隆过滤器适合处理整数、大量数据,可以查找、排序、去重处理非整数,使用哈希函数+位图来操作,查找时间复杂度和哈希函数个数有关,无法存储元素本身。

2025-02-23 19:08:05 1284 6

原创 本地化部署 DeepSeek:从零到一的完整指南

DeepSeek 是一款基于人工智能和大数据技术的数据挖掘与分析工具。它能够帮助企业从结构化或非结构化数据中提取有价值的信息,并支持多种数据源的接入和分析。数据清洗与预处理:自动处理缺失值、异常值等问题。数据挖掘与分析:支持聚类、分类、回归等多种分析模型。可视化展示:提供丰富的图表和报表,帮助用户直观理解数据。DeepSeek 广泛应用于金融、医疗、零售等多个行业,是企业数据分析和决策支持的重要工具。

2025-02-22 22:08:14 1323 4

原创 二叉排序树 -- AVL树 红黑树

二叉搜索树虽然可以缩短查找的效率,但是如果**数据有序或者接近有序将退化为单支树,查找元素相当于在顺序表中搜索元素,**效率低下。因此:当向二叉搜索树中插入新节点后,注意:一般情况下,一个正常的红黑树不会出现上述情况,可以用来验证性质1。通过对任何一条从根到叶子的路径上各个节点的着色方式的限制,,即通过旋转降低树的高度,从而减少平均搜索长度。,但每个节点上增加一个存储位表示节点的颜色,

2025-02-22 21:52:46 1269 11

原创 Java包装类&泛型编程

一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。----- 来源**《Java编程思想》**对泛型的介绍。泛型是在JDK1.5就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。通配符类型语法使用场景特点上界通配符extends T>接受T或其子类的集合只能读取,不能写入(除了null下界通配符super T>接受T或其父类的集合可以写入T或其子类的对象,读取为Object无界通配符。

2025-02-18 13:28:48 1010 30

原创 Java开发者必备:深入理解元素与对象比较的底层原理

而Object类中提供了equals方法,

2025-02-17 21:01:02 699 28

原创 探秘 Map 和 Set 底层:二叉搜索树与哈希表的深度解析,解锁高效数据存储秘密!

/以自定义类型Person为例​​@Override​@Override​@Override'}';//代码实现​​​//插入//1.通过哈希地址,求在哈希表中存放地址//2.若有重复的元素,则直接返回while(cur!//3.待插入元素不重复usedSize++;return;​//如果负载因子超过0.75,扩容resize();

2025-02-15 22:07:17 1268 12

原创 人工智能:从基础到前沿

人工智能是指通过计算机模拟人类智能的技术。它涵盖了机器学习、深度学习、自然语言处理、计算机视觉等多个领域。AI的目标是使机器能够执行通常需要人类智能的任务,如视觉感知、语音识别、决策制定等。机器学习是人工智能的核心技术之一。它通过训练数据来构建模型,使机器能够从数据中学习并做出预测或决策。机器学习算法可以分为监督学习、无监督学习和强化学习。深度学习是机器学习的一个子领域,它使用多层神经网络来模拟复杂的非线性关系。深度学习在图像识别、语音识别、自然语言处理等领域取得了显著成果。

2025-01-26 15:33:26 2787 6

原创 AIGC:开启内容创作的新纪元

基于 Transformer 架构的预训练模型,如 GPT(Generative Pretrained Transformer)系列和 BERT(Bidirectional Encoder Representations from Transformers),在自然语言处理任务中取得了惊人的成绩,能够生成高质量的文本,如新闻报道、故事、诗歌等。同时,AIGC 与其他技术的融合也将成为未来的发展趋势。总之,AIGC 作为人工智能领域的重要发展方向,正以其强大的创造力和广泛的应用前景,开启内容创作的新纪元。

2025-01-12 10:35:52 1605 7

原创 玩转多线程--解决线程安全(超详细讲述八锁问题!!!)

关于多线程创建和造成线程安全的原因,博主已经在前面的玩转多线程--入门-CSDN博客有详细介绍哦,大家可以直接点击链接进入阅读!!由上述代码转化为指令执行,可以明白t2线程只能等到加锁的t1线程全部执行完毕并且释放锁,才能加锁再执行t2的操作保证原子性指的是所有的指令不执行完毕不会释放锁,但是中途指令可以调出CPU注意:不要将锁定和CPU调度搞混!!!根据上述几种方案可以推断:要使用synchronized解决线程安全问题,锁对象可以任意选择,但是一定注意一个点,那就是多个线程竞争的锁对象一定是唯一的!!

2025-01-11 16:11:32 1162 32

原创 探索深度学习:开启智能新时代

在当今科技飞速发展的时代,深度学习无疑是最炙手可热的领域之一。它宛如一把神奇的钥匙,开启了通往智能世界的大门,从语音识别到图像分类,从自动驾驶到医疗诊断,深度学习的身影无处不在,正深刻地改变着我们的生活与工作方式。

2025-01-10 18:46:56 2353 3

原创 操作系统知识点合集2--处理机管理(万字长文) 期末复习看这篇就稳啦!!

进程PCB中,会有一个变量state来表示进程的当前状态。如:1表示创建态、2表示就绪态、3表示运行态...为了对同一个状态下的各个进程进行统一管理,操作系统会将各个进程的PCB组织起来。进程控制主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简化理解:进程控制就是要实现进程状态转换无论是哪个进程控制原语,要做的无非三类事情:更新PCB中的信息-->修改进程状态(state)保存/恢复运行环境将PCB插入合适的队列分配/回收资源。

2025-01-09 21:45:50 1214 3

原创 操作系统知识点合集1--操作系统基础超级长文,期末/考研看完这篇就稳啦!!!

控制和管理整个计算机系统硬件和软件资源,合理组织调度计算机的工作和资源的分配,是系统资源的管理者提供给用户和其他软件方便的接口和环境,向上层提供方便易用的服务是计算机系统中最基本的系统软件,作为最接近硬件的层次直观的例子:打开Windows操作系统的“任务管理器”(快捷键:Ctrl + Alt + Del)操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用地服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。

2025-01-08 23:18:07 840 2

原创 玩转多线程--多线程的创建与造成线程安全的原因

一个线程就是一个执行流,每个线程之间都可以按照自己的顺序执行自己的代码,多个线程之间“同时”执行多份代码。多线程编程其实也可以称作为“并发编程”。对于进程也可以实现并发编程,但是和线程相比,线程更轻量创建线程比创建进程更快销毁线程比销毁进程更快调度线程比调度进程更快调用interrupt()方法来通知,如果线程因为调用wait/join/sleep等方法而阻塞挂起,则以InerruptedException异常的形式通知。

2025-01-08 22:14:23 2521 39

原创 Linux常用指令汇总

希望大家在Linux的学习过程中要注意多去练习,多练才能记得清楚!加油呀!

2025-01-06 11:06:43 1080 4

原创 Java图形界面框架--MVC架构

MVC(Model-View-Controller,模型-视图-控制器)是一种相对先进的设计结构,其目的是以会话的形式提供方便的GUI设计。MVC是一种通过三个不同的部分来构造一个软件或组件的理想办法模型(Model):用于存储数据和对数据进行处理的对象视图(View):为模型提供数据显示的对象,即负责请求控制器处理模型中的数据,并将处理完的数据显示到控制屏上。

2025-01-05 23:55:10 1080 8

原创 数据在内存中的存储

数据在内存中的存储:整数和浮点数在内存中的存储、大小端字节序和字节序的判断

2024-08-02 10:51:29 911 15

原创 c语言操作符详解

在大家学习语言或者使用语言的过程中,经常会遇到各种各样的操作符计算,由于大家学习时间跨度比较大,或者基础不扎实等问题,经常会将操作符相关问题搞混。在此,特地为解决上述问题,写了一篇博客以期能够帮助大家!

2024-07-17 22:53:23 1346 9

探秘 Map 和 Set 底层:二叉搜索树与哈希表的深度解析,解锁高效数据存储秘密!

探秘 Map 和 Set 底层:二叉搜索树与哈希表的深度解析,解锁高效数据存储秘密!

2025-02-15

空空如也

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

TA关注的人

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