- 博客(21)
- 收藏
- 关注
原创 一台服务器,Java程序最大支持多少并发数
不同操作系统对一个进程下的线程数量有一定限制,例如 Windows 每个进程中的线程数一般不允许超过 2000,Linux 每个进程中的线程数通常不允许超过 1000。这些限制也会影响 Java 程序在该系统上可创建的最大线程数,进而影响并发量。
2025-03-21 20:20:42
806
原创 什么是mysql的脏读、不可重复读,可重复读
脏读:读取未提交的临时数据。不可重复读:同一事务内多次读取同一数据结果不一致。可重复读:保证同一事务内多次读取同一数据的一致性(但需注意幻读)。选择隔离级别:根据业务需求权衡一致性与并发性能。
2025-03-21 20:19:31
590
原创 什么是网络拥塞,为什么有丢包和延迟
TCP协议通过确认(ACK)和超时重传(Retransmission)保证可靠性,丢包会引发重传,进一步加剧拥塞。通过协议优化(如TCP拥塞控制)、硬件升级(QoS)和网络设计(冗余路径)可有效缓解这些问题。流量整形(Traffic Shaping):平滑突发流量,避免瞬时拥塞。高延迟可能被误判为拥塞,触发TCP拥塞控制(如降低发送速率)。前向纠错(FEC):在数据包中添加冗余信息,减少重传需求。公式:距离(m) / 信号传播速度(≈光速的2/3)。公式:数据包大小(bit) / 链路带宽(bps)。
2025-03-21 20:17:09
954
原创 说说CAP理论的核心网络分区的必然性
是指分布式系统中节点之间因网络故障(如断网、高延迟、丢包等)导致通信中断,形成多个独立的子集群。此时,系统被分割成多个无法同步数据的“孤岛”,必须在此场景下权衡一致性与可用性。:技术手段只能降低分区概率,但无法消除(如跨洲网络光缆故障无法完全避免)。:节点越多,单个节点或链路故障的概率叠加,整体系统可靠性下降。:系统可能分布在多个地区或国家,网络跨度越大,故障概率越高。:需阻止部分节点的写入操作,导致这些节点不可用(牺牲A)。,异步网络中即使只有一个节点故障,也无法保证共识)。
2025-03-21 20:15:12
379
原创 为什么CAP理论的核心不能都满足
在分布式系统中,节点间的通信可能因网络故障、延迟或丢包而中断(即发生分区)。:当网络分区发生时,部分节点无法同步数据,此时要么拒绝服务(牺牲A),要么返回不一致数据(牺牲C)。CAP是一个理论模型,实际系统可能通过折中设计(如最终一致性)部分缓解矛盾,但无法完全绕过。如果要求所有请求都能响应(A)且数据一致(C),则必须保证所有节点正常通信。实际是:CAP要求在网络分区发生时,在C和A之间二选一。:必须选择分区容错性(P),因此实际是在C和A之间权衡。:在网络分区发生时,必须牺牲一致性或可用性。
2025-03-21 20:14:20
522
原创 BeanFactory 和 FactoryBean 的区别时
而 FactoryBean 是一个能生产对象的特殊 Bean,用于封装复杂对象的创建逻辑。FactoryBean 是工厂方法模式(Factory Method Pattern)的体现,将对象创建逻辑委托给子类。是 Spring 的 IoC 容器,负责管理所有 Bean 的生命周期和依赖注入。:Spring 容器的根接口,是 IoC 容器的核心实现(如。FactoryBean 的典型实现是 Spring 内部的。// 复杂对象的创建逻辑(如连接池初始化)是一个特殊的 Bean,用于封装复杂对象的创建逻辑。
2025-03-17 18:16:19
466
原创 vite: command not found
然后,确保这个路径下的 bin 目录(例如,/usr/local/bin 或你在 Windows 上的类似路径)被添加到你的 PATH 环境变量中。有时候,即使 Vite 已安装,如果 npm 的全局安装目录没有被加入到你的 PATH 环境变量中,你仍然会遇到 "command not found" 的错误。Vite 是一个基于 Node.js 的项目,因此首先需要确保你的系统上已经安装了 Node.js。一旦确认 Node.js 已安装,你可以通过 npm(Node.js 的包管理器)来安装 Vite。
2025-03-16 10:32:36
405
原创 Fatal error compiling: 无效的目标发行版: 17 -> [Help 1]
(如同时配置了 JDK 8 和 JDK 17),Maven 可能错误引用低版本 JDK 导致编译失败14。:若本地仅安装了低版本 JDK(如 JDK 8),需下载并安装 JDK 17,并在环境变量中更新路径78。:某些旧版 Maven(如 3.6.x)可能对 JDK 17 支持不佳,建议升级至。中添加 JDK 17 的编译配置,确保 Maven 全局使用该版本1。中选择 JDK 17,避免 Maven 使用默认低版本 JDK3。,仅保留与项目匹配的 JDK 17 路径。,与项目 JDK 版本一致6。
2025-03-15 10:33:41
588
原创 MySQL 的 MVCC核心原理(Multi-Version Concurrency Control,多版本并发控制)
它通过为数据维护多个版本,使得读写操作可以无锁并发执行,避免传统锁机制带来的性能瓶颈。理解其原理后,可以更好地优化事务设计(如控制事务长度、合理选择隔离级别),并规避潜在的性能瓶颈(如长事务导致的 Undo Log 堆积)。使用事务 B 启动时的 ReadView,只能看到事务 ID ≤200 且已提交的版本(事务 50 的数据)。:通过数据版本管理,实现不同隔离级别(如 Read Committed、Repeatable Read)。每次事务修改数据时,会生成一个新的数据版本,旧版本通过。
2025-03-14 22:58:56
812
原创 b+树适合高并发场景示例说明
即使并发插入 10,000 TPS(每秒事务数),B+树仍能保持高效写入,避免锁冲突导致的性能瓶颈。对比随机主键(如 UUID):插入位置分散,频繁触发叶子节点分裂,导致多个节点加锁,增大锁竞争。范围查询时,只需定位到起始叶子节点,沿链表顺序扫描,无需回溯上层节点,减少 I/O 和锁竞争。事务 B 更新数据时,生成新版本并插入 B+树,旧版本仍保留(通过回滚指针链接)。更新商品价格时,只需锁定主键索引(聚簇索引)的行,二级索引无需更新。多个事务同时插入不同订单时,只需对各自的目标行加锁,互不阻塞。
2025-03-14 22:57:08
535
原创 mysql为什么选择b+树( InnoDB 存储引擎)
通过B+树的优化设计,MySQL在高并发、大数据量下依然能保持高效的读写性能,这也是它成为主流数据库存储引擎核心索引结构的根本原因。非叶子节点仅存键值,能容纳更多子节点,树的高度更低(3~4层即可支撑千万级数据),查询时I/O次数更少。B+树的每个节点大小通常设计为磁盘页(如16KB),一次I/O可加载整个节点,减少磁盘寻道次数。B+树的叶子节点存储数据,非叶子节点仅存索引,更新数据时锁竞争更少(如行锁)。所有数据都存储在叶子节点,全表扫描只需遍历叶子节点的链表,无需访问非叶子节点。
2025-03-14 09:26:40
244
原创 开发必不可少的优秀前端项目
前台商城系统包含首页门户、商品分类、新品上线、首页轮播、商品推荐、商品搜索、商品展示、购物车、订单结算、订单流程、个人订单管理、会员中心、帮助中心等模块。相信不管你的需求是什么,本项目都能帮助到你。vue2-manage 是此项目是 ue2 + vuex + vue-router + webpack + ES6/7 + less + element-ui 构建的后台管理系统,是后台项目node-elm 的管理系统,所有的数据都是从服务器实时获取的真实数据,具有真实的注册、登陆、管理数据、权限验证等功能。
2025-03-13 18:54:32
832
原创 IntelliJ IDEA 的 AI 编程插件推荐清单,助你高效选择
国际插件(如 Copilot)需稳定访问外网,国内插件可直连。:插件市场直接安装,免费版够用,Pro 版支持全代码库学习。:基于 ChatGPT,支持生成测试用例、文档和代码解释。:插件市场搜索安装,需绑定 OpenAI API Key。:OpenAI 驱动,代码生成精准度高,支持多语言。:阿里云出品,中文注释生成代码,无缝对接云服务。:清华团队开发,完全免费,支持代码翻译/解释。:企业用户需审核生成代码,避免知识产权风险。:本地模型可选,隐私保护强,响应速度快。:API 调用需自费,响应速度依赖网络。
2025-03-13 14:11:44
1512
原创 vscode提示checking with requireConfigFile: false, or configure Babel so that it can find the config
/ webpack.config.js (使用 babel-loader)在项目根目录创建 Babel 配置文件,让 Babel 自动检测配置。:选方案二(创建配置文件 + 安装依赖),确保可维护性和扩展性。// 添加以下配置禁用配置文件检查。,适用于简单场景(如仅使用预设/插件而不需要配置文件)。这个错误提示表明 Babel 无法找到配置文件(如。确认配置文件位于项目根目录(而非子目录)。如果项目是 monorepo,使用。在 Babel 配置中显式设置。
2025-03-13 14:06:03
259
原创 Mac 安装redis
Homebrew 是 Mac 上流行的包管理工具,若已安装,可按以下步骤操作;此命令会启动 Redis 服务,并设置为随系统启动自动运行。若能正确返回设置的值,说明 Redis 安装成功且可正常工作。同样可通过执行简单命令测试是否安装成功。
2025-03-08 12:30:47
326
原创 mac 安装idea,碰到“已损坏,无法打开解决办法
1、进入终端,输入以下命令,在‘com.apple.quarantine’后输入空格,在进行拖动操作,之后回车操作,碰到输入密码时,正常输入密码即可。sudo xattr -r -d com.apple.quarantine '将idea拖进此处'-安全与隐私性-找到‘允许以下来源的应用程序’ ,更改为任何来源,碰到输入密码时,正常输入密码即可。
2025-03-02 10:47:14
162
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人