自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Html,Css,Js 居中 笔记251009

2. 多行文字居中 - Flexbox3. 多行文字居中 - Grid4. 多行文字居中 - 表格单元格5. 多行文字居中 - 伪元素二、块级元素水平垂直居中1. Flexbox 方法2. Grid 方法3. 绝对定位 + Transform4. 绝对定位 + 自动边距5. 绝对定位 + 负边距6. 表格布局三、行内/行内块元素水平垂直居中1. 文本对齐 + 行高2. Flexbox 行内元素四、图片水平垂直居中1. Flexbox 图片居中2. 文

2025-10-09 05:02:10 1079

原创 Spring的第三级缓存详解 笔记251009

Spring 的第三级缓存是解决循环依赖和 AOP 代理协同工作的核心机制。下面深入分析第三级缓存的实现原理和工作机制。核心作用延迟创建代理对象:只在发生循环依赖时才创建代理保证代理一致性:确保注入的都是正确的代理对象避免资源浪费:没有循环依赖时不提前创建代理第三级缓存的核心:ObjectFactoryObjectFactory 接口在 Spring 中的具体实现第三级缓存的创建时机Bean 创建过程中的关键节点getEarlyBeanReference 方法深度解析方法实现

2025-10-09 03:34:02 1343

原创 Spring的 三级缓存 与 AOP 笔记251009

Spring 的三级缓存机制与 AOP 代理有着密切的关系,正是为了正确处理 AOP 代理对象的循环依赖问题,才需要三级缓存而不仅仅是两级缓存。如果没有三级缓存,会出现什么问题? 方法详解AOP 代理在循环依赖中的创建时机正常情况(无循环依赖)循环依赖情况具体流程分析步骤 1:A 实例化并暴露工厂步骤 2:B 依赖 A 时触发代理创建为什么需要三级缓存?如果只有两级缓存会怎样?方案一:二级缓存 + 提前创建所有代理问题:方案二:二级缓存 + 延迟创建代理三级缓存的优势

2025-10-09 02:04:15 623

原创 Spring 如何解决循环依赖 笔记251008

一句话总结:Spring 只解决「单例 Bean 的字段 / setter 循环依赖」,靠的是三级缓存 + 提前暴露“半成品”引用;构造器注入、原型作用域的循环依赖直接抛异常。下面把完整机制拆开讲清:位置:以「A → B,B → A」字段注入为例:此时 A 还在三级缓存,调用 拿到早期引用(若需要 AOP 则在这里生成代理),把结果放进二级缓存并删除三级缓存条目;B 拿到这个引用完成属性填充,初始化结束 → 放入一级缓存B 返回后,A 继续完成属性填充 → 初始化结束 → 放入一级缓存整个过程没有两次初

2025-10-09 01:28:38 508

原创 Spring的三级缓存原理 笔记251008

在// 一级缓存:完整的单例 Bean// 二级缓存:早期的单例对象(尚未完成属性填充)// 三级缓存:单例工厂(用于创建早期引用)// 正在创建中的 Bean 名称集合解决什么问题:单例 Bean 的循环依赖核心思想:提前暴露未完全初始化的 Bean 引用三级缓存分工一级缓存:完整的 Bean二级缓存:早期的 Bean 引用三级缓存:Bean 创建工厂关键时机:实例化后、属性填充前添加到三级缓存特殊处理:支持 AOP 代理等后处理器限制条件。

2025-10-08 22:32:52 1147

原创 Spring的 `@Import`注解 笔记251008

是 Spring 框架中的一个重要注解,用于快速导入一个或多个配置类到当前配置类中。它是 Spring 模块化配置和条件化配置的核心注解之一。2. @Import 的主要用途2.1 导入配置类2.2 导入普通组件类3. @Import 的高级用法3.1 使用 ImportSelector 接口 允许根据条件动态选择要导入的配置类。3.2 使用 ImportBeanDefinitionRegistrar 接口 提供更细粒度的控制,可以直接操作 BeanDefinition。3.3 结合

2025-10-08 21:18:11 994

原创 Java的`volatile`关键字 笔记251007

三性: 可见性 , 有序性 , 原子性 (二保,一不保) 保证可见, 保证有序, 不保原子 是 Java 中的一个关键字,用于修饰变量。它主要有两个作用:使用 解决可见性问题3. 的三大特性 (二保,一不保) 保证可见, 保证有序, 不保原子可见性 , 有序性 , 原子性 三大语义3.2 禁止指令重排序 (No Reordering)为什么需要 volatile?3.3 不保证原子性 (No Atomicity)4. volatile 的实现原理4.1 内存屏障 (Mem

2025-10-07 23:23:16 679

原创 乐观锁 与 悲观锁 笔记251007

乐观锁与悲观锁详解 基本概念 悲观锁 (Pessimistic Locking)思想:假设最坏的情况会发生,每次访问数据时都认为其他线程会修改数据,因此在访问数据前先加锁。特点: 乐观锁 (Optimistic Locking)思想:假设最好的情况会发生,每次访问数据时认为其他线程不会修改数据,只在提交更新时检查数据是否被修改过。特点: 实现机制对比 悲观锁实现方式 数据库层面 Java 层面 乐观锁实现方式 数据库层面

2025-10-07 21:36:27 954

原创 CAS (Compare and Swap) 笔记251007

好的,我们来详细、深入地解析一下 CAS(Compare and Swap)。CAS 是现代并发编程的基石之一,它使得无锁(Lock-Free)和高性能的并发算法成为可能。CAS 是一种原子操作。它用于在多线程环境下实现同步,而无需使用重量级的锁(如 或 )。它的核心思想是:“我认为内存位置 V 的值应该是 A,如果是,那么把它更新为 B;否则,不要修改它,但要告诉我当前的实际值是什么。”一个 CAS 操作包含三个操作数:CAS 的语义可以用以下伪代码来表示:关键在于,整个比较和交换的过程是一个单一的、

2025-10-07 19:04:38 1135

原创 `modprobe`命令 与 `KVM`模块 笔记251006

是 Linux 系统中一个非常重要的内核模块管理命令。它用于动态地向运行中的内核添加或移除模块。下面我将为你详细讲解这个命令。 1. 什么是内核模块?简单来说,内核模块是一段可以在运行时动态加载到内核或从内核卸载的代码。它扩展了内核的功能,而无需重新编译整个内核或重启系统。 2. modprobe 基本语法 3. 常用命令与场景 最核心的两个操作是加载和卸载模块。实例(直接解决你的问题): 4. modprobe 的智能之处:处理依赖关系 相比于旧的 和 命令

2025-10-06 23:55:58 976

原创 Linux的 `modprobe` 命令笔记251006

在绝大多数情况下,

2025-10-06 22:53:41 493

原创 AMD-V is being used by another hypervisor (VERR_SVM_IN_USE). NS_ERROR_FAILURE (0x80004005)

简单来说,内核模块是一段可以在运行时动态加载到内核或从内核卸载的代码。它扩展了内核的功能,而无需重新编译整个内核或重启系统。例子:设备驱动程序(如显卡驱动、网卡驱动)、文件系统支持、系统功能等通常都以模块的形式存在。你遇到的问题就是例子kvm_amd就是一个内核模块,它让 Linux 内核能够支持在 AMD CPU 上使用 KVM 虚拟化技术。modprobe智能的内核模块加载/卸载工具,自动处理依赖推荐日常使用。insmodrmmod底层的模块加载/卸载工具,不处理依赖。

2025-10-06 20:04:21 1004

原创 Java的任务调度框架之 Quartz 以及 CronTrigger,CronScheduleBuilder 和 Cron表达式 笔记250930

Quartz是一个功能完善的开源作业调度框架,提供精确的任务调度能力,支持从简单定时任务到复杂企业级调度的各种场景。2. Cron表达式深度解析2.1 标准格式与字段说明字段详细说明表:高级字符3. CronScheduleBuilder详解3.1 核心构建方法3.2 高级配置方法3.3 错过触发处理策略4. CronTrigger深度解析4.1 创建CronTrigger的多种方式4.2 CronTrigger属性获取5. 完整实战示例5.1 企业级任务调度系统

2025-09-30 08:55:08 921

原创 CronTrigger ( Cron表达式格式 )笔记250930

理解Cron表达式的关键在于掌握。

2025-09-30 08:02:50 791

原创 Java的任务调度框架之Quartz 笔记250930

基本用法示例 2 使用 CRON (CronTrigger)基本用法示例 3基本用法示例 4 使用 CRON (CronTrigger)基本用法示例 5基本用法示例 6 使用 CRON (CronTrigger)基本用法示例 7基本用法示例 8 使用 CRON (CronTrigger) 1. Quartz概述与核心价值Quartz是一个功能全面、开源的任务调度服务,可以集成到从小的单片机系统到大型的电子商务系统等各种Java应用程序中。Quartz的核心价值在

2025-09-30 06:28:22 760

原创 关系型数据库表连接(SQL JOINS) 笔记250811

理解并正确使用 SQL 表连接是高效查询关系型数据库的基础。

2025-08-11 08:43:15 944

原创 JavaScript的 fetch() 方法 笔记250810

JavaScript 的 方法是现代浏览器提供的用于发起网络请求的 API。它基于 Promise 设计,相比传统的 更简洁强大。以下是核心知识点和示例: 基础语法:请求的目标地址(必需):配置对象(可选),包含::请求方法(, , 等),默认为 :请求头(如 ):请求体数据( 时使用,需字符串化):是否发送 cookies(、 或 ):跨域模式(、、) 关键特性返回 Promise 对象需解析响应体响应对象 提供多种解析方法:默认不携带 Cookies需显式设置 。

2025-08-10 10:49:26 1182

原创 JavaScript的Callback回调函数转Promise().then()和async{await} 笔记250810

JavaScript 回调函数转 Promise 和 async/await 指南在 JavaScript 中,回调函数是处理异步操作的传统方式,但随着语言的发展,Promise 和 async/await 提供了更优雅的解决方案。下面我将展示如何将回调函数转换为 Promise 和 async/await 模式。 回调函数的基本模式典型的回调函数模式(Node.js 错误优先风格): 转换为 Promise 1. 手动包装为 Promise 2. 使用 util.promisify(N

2025-08-10 08:06:16 1042

原创 JavaScript异步编程: 回调callback , Promise,then,catch,finally , async,await 笔记250810

JavaScript 异步编程全面解析:回调、Promise、async/await 一、异步编程基础 为什么需要异步? 同步 vs 异步 二、回调函数(Callback) 基本模式 回调地狱问题 解决方案 三、Promise 核心机制 创建 Promise Promise 状态机resolve()reject()PendingFulfilledRejected .then() - 处理成功/失败 .catch() - 错误

2025-08-10 07:12:11 729

原创 JavaScript异步,笔记250810

JavaScript 异步编程全面解析 一、异步编程基础 为什么需要异步编程?JavaScript 是单线程语言,异步操作可以防止阻塞主线程: 事件循环机制JavaScript 引擎通过事件循环处理异步操作:是否调用栈调用栈为空?事件队列取第一个任务执行任务 二、异步解决方案演进 1. 回调函数(Callback)回调地狱问题: 2. Promise(ES6) 3. async/await(ES2017) 三、Promise 深度解析 Prom

2025-08-10 05:40:17 679

原创 JavaScript的 Promise,then,catch,finally,async,await 笔记250810

JavaScript 异步编程全面指南:Promise 与 async/await 一、Promise 核心概念Promise 是 JavaScript 处理异步操作的基础,它表示一个异步操作的最终完成(或失败)及其结果值。 基本结构 三种状态resolve()reject()PendingFulfilledRejected 二、Promise 链式方法 1. .then() - 处理成功状态 2. .catch() - 处理错误 3. .final

2025-08-10 04:22:56 1145

原创 Promise,then 与 async,await 相互转换 笔记250810

在 JavaScript 中, 和 是处理异步操作的两种方式,本质都是基于 Promise。以下是它们相互转换的规则和示例: 1. Promise.then() → async/await 转换 核心规则: 示例: 2. async/await → Promise.then() 转换 核心规则: 示例: 关键注意点错误处理:返回值:并行请求优化:链式中断: 转换对照表掌握这些转换技巧能帮助你在不同场景灵活选择更清晰的异步代码风格。

2025-08-10 03:07:50 792

原创 JavaScript的 async , await 笔记250808

JavaScript 异步编程:async/await 深度解析 和 由 ES2017 引入, 是 的语法糖 等价于 👆等价于👇在现代 JavaScript 开发中, 是处理异步操作的核心语法,由 ES2017 引入, 是 的语法糖, 它让异步代码拥有同步代码的可读性和可维护性。 核心概念 async 函数 await 表达式 错误处理机制 try/catch 模式async/await 可以使用同步的错误处理方式: 错误传播特性未处理的错误会向外层

2025-08-09 07:35:02 874

原创 Promise的reject处理: then的第二个回调 与 catch回调 笔记250804

Promise 错误处理深度解析:then 的第二个回调 vs catch在 JavaScript 的 Promise 链式调用中,错误处理有两种主要方式: 的第二个回调函数和 方法。这两种方法虽然都用于处理错误,但在行为和应用场景上存在重要区别。 核心概念对比 .then() 的第二个回调 .catch() 方法 关键区别分析 1. 错误捕获范围示例说明: 2. 错误处理后的链行为两种方法处理后都会返回一个新的 resolved Promise,允许链继续执行:

2025-08-04 07:28:04 1083

原创 Promise().then().catch().finally() 笔记250804

Promise 是 JavaScript 异步编程的核心,其链式调用方法 、 和 提供了强大的异步控制能力。我将全面解析这些方法的工作原理、使用场景和最佳实践。 核心方法概述 完整语法结构 方法详解 1. .then() - 处理异步结果特点: 2. .catch() - 错误处理特点: 3. .finally() - 最终清理特点: 完整工作流程fulfilledrejectedPromise 创建状态执行 .then 第一个回调执行 .then 第二个回调或

2025-08-04 06:13:19 812

原创 JavaScript的 Promise,then 笔记250803

例一:例一代码:例一结果输出:例一讲解从例一看出:例二:例二代码: 与 例一 的唯一区别是调换了 和 的执行顺序例二结果输出:例二讲解从例二看出:例三:例三代码: 与 例二 的唯一区别是注释了的第二个函数参数(只用一个参数),留给例三结果输出:例三讲解从例三看出: 什么是 Promise?Promise 是 JavaScript 中处理异步操作的核心机制,它代表一个异步操作的最终完成(或失败)及其结果值。Promise 提供了一种更优雅的方式来处理异步操作,避免了传统的回调地狱问题。

2025-08-04 03:44:05 1101

原创 JavaScript将String转为base64 笔记250802

在 JavaScript 中将字符串转换为 Base64 编码有多种方法,每种方法都有其适用场景。下面我将全面介绍这些方法,包括处理 ASCII 字符、Unicode 字符以及性能优化方案。局限性Unicode 字符串处理方法方法 1:使用 TextEncoder(现代浏览器)方法 2:使用 encodeURIComponent(兼容方案)Node.js 环境专用方法使用 Buffer高级用法与性能优化1. 流式处理(大文本)2. Base64 URL 安全编码3. 性能比较

2025-08-02 21:15:59 880 1

原创 如何在`<link type=“icon“ href=`的`href`中写SVG并使用path标签? 笔记250802

在 标签的 属性中使用 SVG 标签作为网站图标,可以通过 Data URL 内联 SVG 实现。以下是详细方法和完整示例: 核心方法:使用 Data URL 内联 SVG 完整示例代码 关键步骤详解构建 SVG 结构:URL 编码规则(必须转换的特殊字符):处理 的 属性:使用在线工具自动编码:SVG 压缩工具添加动态样式(深色模式适配): 实时生成工具(JavaScript 方法) 推荐工作流设计 SVG 图标:优化代码:

2025-08-02 19:08:50 1098

原创 VirtualBox 的 HOST 键(主机键)是 右Ctrl 键(即键盘右侧的 Ctrl 键)笔记250802

VirtualBox 的。

2025-08-02 12:44:47 1989

原创 Dockerfile模板 笔记250801

多阶段构建:分离构建环境和运行环境非root用户:增强容器安全性层缓存优化:# 正确顺序:COPY . .轻量基础镜像:优先选择-alpine或-slim版本清理缓存:在同一个RUN指令中清理临时文件环境变量管理:使用ENV定义运行时配置健康检查:必须包含以排除无关文件.git*.log.envDockerfile。

2025-08-02 01:28:37 1283

原创 Dockerfile详解 笔记250801

理解 Dockerfile 的每条指令及其细微差别是构建高效、安全、可维护 Docker 镜像的关键。遵循最佳实践,特别是精简镜像、减少层数、使用。

2025-08-01 19:26:04 1770

原创 docker-compose.yml 模板 笔记250801

以下是一个通用的模板示例,适用于多容器应用的编排。:兼容 Docker Engine 19.03+,支持所有现代特性(my_networkdbredisdepends_onvolumespgdataports宿主机端口:容器端口expose可确保服务完全就绪后再启动依赖项(需在应用代码中处理重连逻辑)。ports.envresourceconfigssecrets根据您的具体技术栈(如 MySQL、MongoDB、React 等),替换相应镜像和配置即可。

2025-08-01 01:21:28 584

原创 安装 docker compose v2版 笔记250731

v2版是确认系统要求, 已安装(版本 20.10.5 或更高)安装方式可分为apt 或 yum 安装 (能自动升级)手动二进制文件安装 (需手动升级): 下载二进制文件放入特定的文件夹中。

2025-07-31 20:18:30 1914 1

原创 vim的`:q!` 与 `ZQ` 笔记250729

命令模式要求操作步骤效率:q!命令行模式输入:q!+ 回车较慢ZQ普通模式直接按ZQ更快💡记忆技巧ZQ是:q!的快捷键,设计初衷是提升操作速度。ZZ(保存退出)的对应操作是:wq,而ZQ对应放弃修改的:q!。命令模式功能特点:q!命令行模式强制退出,不保存修改步骤稍多,适合新手ZQ正常模式强制退出,不保存修改快捷键操作,效率更高简言之,两者功能完全一致,选择哪种取决于个人操作习惯:新手可先用:q!,熟练后推荐ZQ提升效率。命令操作方式模式要求使用场景:q!输入:q!

2025-07-29 23:41:41 903

原创 `NetworkManager/system-connections/*.nmconnection` 配置文件笔记250726

的 配置文件位于 目录下,用于定义网络连接的详细参数。这些文件采用 INI 格式(键值对结构)。以下是核心配置节的详解:定义连接的基本属性:注意事项权限与存储:配置文件权限通常为 (仅 root 可读写)。敏感信息(如密码)建议通过 加密存储(避免明文)。生效方式:修改后需重启 NetworkManager:。或重载连接:。调试工具:使用 查看配置。使用 检查日志。通过合理配置这些参数,可灵活管理各类网络连接(有线/无线/VPN/网桥等)。建议优先使用

2025-07-26 16:23:51 1157

原创 Linux网络管理工具NetworkManager笔记250726

NetworkManager(简称 NM)是一个现代化的、动态的网络配置管理守护进程和服务,旨在简化 Linux 及其它类 Unix 操作系统上的网络连接管理。它尤其适合在需要频繁切换网络环境(如笔记本电脑在多个 Wi-Fi 网络、有线网络、移动宽带之间移动)的桌面和移动设备上使用,同时也广泛应用于服务器环境中提供灵活的网络配置能力。 核心目标和优势 主要组件和架构NetworkManager 守护进程 ():管理接口:插件和后台服务: 关键概念 使用方式 (以 为例) 是管理和故障排除的利器。常用命令模

2025-07-26 11:47:28 2017

原创 nginx路径替换:`rewrite`,`root`,`alias`,`proxy_pass` 笔记250726

静态文件优先用alias当 URI 与磁盘路径不一致时路径完全匹配时用root动态请求简单路径修改 →proxy_pass斜杠控制复杂重写 →rewriteproxy_pass避免陷阱alias目录结尾必须加proxy_pass后有无斜杠行为完全不同rewrite的last和break标志区别:last:重新匹配 locationbreak:停止重写,继续处理通过理解这些指令的交互关系,可以构建高效精确的 Nginx 路径处理逻辑。指令作用层级路径处理逻辑是否修改客户端 URL。

2025-07-26 09:12:24 1095

原创 nginx路径替换 笔记250726

场景推荐指令示例配置片段URI路径直接映射文件系统alias修改URI后重新路由rewrite单页应用路由回退try_files复杂路径转换rewritealias组合使用实现多级路径映射调试技巧nginx -t使用curl -I检查 HTTP 响应头验证重定向行为掌握这些路径替换技术,可以灵活实现 URL 美化、安全隐藏真实路径、动态路由支持等高级功能。静态文件服务:当需要简单地映射URL到文件系统路径时,使用root或alias。URL重写。

2025-07-26 08:16:20 1253

原创 nginx的 `root` 和 `alias` 笔记250726

指令路径拼接方式典型用途结尾斜线建议rootroot路径完整URI托管整个目录结构(如项目根目录)可选aliasalias路径URI去除location部分映射特定子目录到其他位置必须带指令路径拼接逻辑典型应用场景rootroot路径 + location路径 + 请求URI通用目录映射(URI 与路径一致时)alias丢弃location匹配部分,直接使用alias路径 + 剩余URI精确替换路径(URI 与磁盘路径不一致时)场景推荐指令示例配置托管整个应用目录root。

2025-07-26 06:55:04 1494

原创 WMS仓库管理系统的数据库表设计 笔记250725

好的,设计一个WMS(仓库管理系统)的数据库表结构是一个复杂但核心的任务。它需要精确反映仓库的物理结构、货物特性、业务流程以及操作记录。以下是一个核心且相对通用的WMS数据库表设计概览,涵盖了主要实体和关系。实际设计需要根据具体业务需求(如行业、仓库规模、流程复杂度、自动化程度等)进行调整和扩展。核心设计原则:核心实体与表结构:仓库基础信息库区与储位管理货主与商品管理库存管理 (核心表!)库存事务流水 (核心表!)入库管理出库管理库内作业盘点管理基础数据与系统管理关键点说明:ER图 (简化版概念模型):重

2025-07-25 07:01:53 2471

空空如也

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

TA关注的人

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