自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 千万级的大表如何新增字段?

线上千万级的大表在新增字段的时候,一定要小心,我见过太多团队在千万级大表上执行DDL时翻车的案例。很容易影响到正常用户的使用。本文将深入剖析大表加字段的核心难点,并给出可落地的解决方案。希望对你会有所帮助。1、常规场景(<1亿行)首选Online DDL,MySQL 8.0秒级加字段)备选PT-OSC(兼容低版本MySQL)2、高并发大表(>1亿行)必选gh-ost(无触发器设计,对写入影响<5%)3、金融核心表双写方案是唯一选择(需2-4周开发周期)4、日志型表分区滑动窗口最优(仅影响新分区)

2025-07-29 17:11:58 540

原创 Django缓存机制详解:从配置到实战应用

缓存是指保存计算密集型操作的结果,当再次需要该结果时直接从缓存中获取,而无需重新计算。在 Django 中,缓存可以应用于不同粒度:整个网站缓存特定视图缓存页面片段缓存任意 Python 对象缓存。

2025-07-29 15:20:03 262

原创 “子弹弹夹”装弹和出弹的抽象原理实战:掌握栈的原理与实战

栈对元素的操作是后进先出(LIFO),栈的操作只需要在一端进行入栈(push)和出栈(pop),可以考虑使用链表或数组作为底层数据结构。由于栈没有规定容量大小,使用数组的话需要考虑动态扩容,链表则无需考虑扩容问题。那就从最简单的单链表入手,编写自定义栈数据结构。关键思路:每次push将新节点插入到链表头部;pop则移除链表头节点并更新head节点为下一节点。节点间关系图:top.next-->下一节点栈顶(top)栈底(bottom)栈大小(size);入栈(push)出栈(pop)

2025-07-28 17:21:04 735

原创 Redis 部署模式详解

(1)最简单的部署方式,仅运行单个 Redis 实例。(2)无高可用性,如果实例崩溃,服务不可用。(3)适用场景:开发环境。(1)整体设计:主从架构 + 自动故障转移,提供高可用性(HA)。(2)部署方式:1 个主节点(Master) + N 个从节点(Replica)+ M 个 Sentinel 节点。(3)适用场景:需要高可用但不需要数据分片(水平扩展)的场景。(1)整体设计:支持主从实现高可用,将数据分片到 16384 个槽(Slot),每个节点负责部分槽,已实现水平扩展。

2025-07-28 15:49:47 615

原创 JavaScript 编年史:探索前端界巨变的幕后推手

网景将 JavaScript 提交至 ECMA 国际为避免 JavaScript 与微软 JScript 导致浏览器生态分裂,网景将 JavaScript 提交给 ECMA 国际,旨在打造一种厂商中立的标准化语言。ECMAScript 3 发布,新增do-while、正则表达式、字符串新方法(concat、match、replace、slice、split)、异常处理等特性ECMAScript 3 是 JavaScript 早期的重要里程碑,将其从“玩具脚本语言”转变为严肃的编程工具。

2025-07-25 17:08:08 947

原创 AI 应用开发的陷阱:MCP 的致命问题

将大语言模型(LLM)与外部工具连接,是扩展其能力的主流方法。通过给模型提供工具,它就能查询数据、调用 API,完成更复杂的任务。提供工具时,可以使用 MCP 模式,简单来说:由一个外部的、集中的工具服务来提供所有工具,开发者写的应用直接调用这个服务,让它去和模型沟通。这样做表面上简化了开发,开发者不用自己管理工具了。这是一个根本性的问题,会引发一连串的麻烦。

2025-07-25 15:25:53 945

原创 颠覆认知!0行代码玩转千亿数据:低代码让你躺赢大数据时代!

JNPF 低代码开发平台是一款基于 Springboot、Vue 技术,采用微服务、前后端分离架构的高效开发工具。它基于可视化数据建模、流程建模、表单建模、报表建模等工具,可实现零代码快速构建云端业务应用,也能基于代码生成工具开发复杂企业应用系统。平台支持本地化部署,也可基于阿里云、华为云或开源 k8s 等云平台部署,具备高度的灵活性和适应性。JNPF 平台内核包含表单引擎、流程引擎、页面引擎、报表引擎、门户引擎、任务调度引擎等,为应用开发提供了全方位的支持。

2025-07-24 17:21:40 747

原创 Web前端入门:JavaScript cookie 的读写操作

cookieStore 可以大大简化前端读写 cookie 的复杂度,但由于其 API 引入时间较晚,基本都是在 2020 年之后的浏览器才开始支持,所以在使用时请注意浏览器兼容情况。在使用 Cookie 保存敏感数据时,请务必注意数据安全,比如存储用户的身份令牌,如果身份令牌被三方代码获取,及其容易造成跨站请求伪造,导致用户信息泄露!!前端路引Web前端入门第 81 问:JavaScript cookie 的读写操作 - 前端路引 - 博客园JNPF快速开发平台。

2025-07-24 15:23:46 849

原创 性能优化:两条SQL索引优化,CPU占用率从40%降至25%

索引创建后,效果立竿见影。系统CPU使用率迅速回落至正常水平。经了解,这两条问题SQL都源于一个新上线的业务模块。业务上线前缺乏充分的性能测试和SQL审核。这个案例虽然简单,但其反映的问题却值得我们深思。建立SQL审核制度:任何新功能或SQL变更上线前,都应由DBA或资深开发人员进行审核(Code Review)。重点关注查询是否使用了合适的索引、是否存在潜在的全表扫描、以及连接逻辑是否最优。性能测试左移:不要把性能测试推到上线前的最后一环。开发人员在开发阶段就应该关注SQL性能,利用。

2025-07-22 15:22:20 594

原创 为什么这些SQL语句逻辑相同,性能却差异巨大?

在MySQL中,有很多看上去逻辑相同,但性能差异巨大的SQL语句。对这些语句使用不当的话,就会不经意导致整个数据库压力变大。本文选择了三个这样的案例。

2025-07-21 17:52:13 1008

原创 TreeMap集合--底层原理、源码阅读及它在Java集合框架中扮演什么角色?

如果key没有实现Comparable接口,那么需要自定义比较器,并通过TreeMap的构造方法传入比较器super K>// 组合排序:先按 name 排序,再按 age 排序此时所有键的比较都由指定的自定义比较器方法决定。自然顺序比较:键实现Comparable接口,调用compareTo。自定义比较器:通过构造传入。TreeMap底层数据结构、特点、与其他Map集合的差异,并提供一个简单案例感受TreeMap带来的高效处理。如果只关心快速存取,且对顺序无要求,首选HashMap;如果需要按。

2025-07-21 15:52:56 558

原创 Web前端入门:JavaScript async & await 的异步任务进化之路

JS 的任务调度机制让它拥有大量的异步编程,各式各样的使用方式都有必要了解学习,要不然...嘿嘿...大佬写的代码看不懂~~前端路引Web前端入门第 79 问:JavaScript async & await 的异步任务进化之路 - 前端路引 - 博客园JNPF快速开发平台。

2025-07-18 17:11:36 608

原创 Java并发问题

问题引述:最近工作写代码涉及线程的时候,出现了一个bug,所以写这篇文章记录一下这个问题.

2025-07-18 14:51:35 344

原创 Docker容器访问挂载文件权限问题

在SELinux策略下,容器进程的类型是container_t类型,而宿主机上的文件默认是user_home_t类型,二者类型不匹配,容器进程无法访问宿主机上挂载的文件。将文件类型修改成svirt_sandbox_file_t之后,因为docker容器进程是container_t类型,SELinux允许container_t类型的进程访问svirt_sandbox_file_t类型的文件。方案3,挂载时使用:Z,这将把挂载的文件设置成container_file_t类型,确保容器进程可以访问挂载文件。

2025-07-16 15:58:10 543

原创 订单初版—支付和履约实现的重构文档

(1)流程定义文件分析在履约系统的resources/statelang目录下,有一个JSON文件,该JSON文件order_fullfill.json便是Saga模式流程定义文件。"Comment": "订单履约流程",//第一个节点"ServiceName": "fulfillSagaService",//所在服务"ServiceMethod": "createFulfillOrder",//正向执行方法。

2025-07-16 14:22:05 1162

原创 低代码猛药治“贵病”:企业数智化成本直降80%,老板都乐了!

低代码,从字面意思理解,就是一种通过极少代码量来快速构建应用程序的开发方式。它的核心原理是利用可视化的开发环境,将传统软件开发过程中大量繁琐的代码编写工作,转变为通过图形化界面进行操作。开发者无需像传统开发那样,一行行地敲写代码来构建程序的各个功能模块,而是通过拖拽组件、设置参数等简单操作,就能完成应用程序的搭建。例如,在传统的 Web 应用开发中,如果要创建一个用户注册页面,开发人员需要使用 HTML、CSS 和 JavaScript 等编程语言,编写大量代码来实现页面布局、样式设计以及用户交互逻辑。

2025-07-15 17:23:55 1064

原创 Java锁这样用,从单机到分布式一步到位

String errorMessage() default "获取锁失败,请稍后重试";只能在单个JVM内使用基于Redis实现支持跨JVM协调使用简单,一个注解搞定减少重复代码,降低出错概率单机应用:使用synchronized或ReentrantLock分布式应用:使用Redisson分布式锁追求简洁:使用注解式分布式锁掌握这套锁的升级方案,让你的应用在任何环境下都能保证数据安全!大毛啊Java锁这样用,从单机到分布式一步到位 - 大毛啊 - 博客园JNPF快速开发平台。

2025-07-15 14:29:27 968

原创 推荐 5 款实用的 Docker 可视化管理工具,工作效率翻倍!

经常有小伙伴问:有什么好用的 Docker 可视化管理工具推荐的吗?今天大姚给大家推荐 5 款实用的 Docker 可视化管理工具,选择一款适合自己的 Docker 可视化管理工具能够更方便地查看和管理 Docker 容器、镜像、网络和数据卷等 Docker 组件,帮助我们工作效率翻倍(假如您有更好的 Docker 可视化管理工具推荐,欢迎文末留言❤。

2025-07-14 16:58:15 857

原创 瞧瞧别人家的接口重试,那叫一个优雅!

2025年某电商平台深夜故障,因重试策略不当导致银行退款接口被调用82次,引发重复退款126万元!复盘发现:80%的开发者认为重试就是for循环+Thread.sleep(),却忽略了重试风暴幂等性缺失资源雪崩等致命问题。这篇文章跟大家一起聊聊接口重试的8种常用方案,希望对你会有所帮助。敬畏每一次重试:重试不是暴力补救,而是精密流量控制。面向失败设计:假设网络不可靠、服务会宕机、资源终将枯竭。分层防御体系:代码层:幂等性 + 超时控制框架层:退避策略 + 熔断降级架构层:异步解耦 + 持久化补偿。

2025-07-14 15:04:27 918

原创 这5种规则引擎,真香!

核心痛点:业务规则高频变更与系统稳定性之间的矛盾// 传统硬编码方式(噩梦开始...)// 更多if-else嵌套...当规则变成:"非VIP用户满200减30,VIP用户满150减40,且周二全场额外95折"时,代码将陷入维护地狱!规则引擎通过分离规则逻辑解决这个问题:规则外置存储(数据库/文件)支持动态加载声明式规则语法独立执行环境下面给大家分享5种常用的规则引擎,希望对你会有所帮助。能用:替换if/else(新手村)用好:规则热更新+可视化(进阶)用精。

2025-07-11 16:45:22 647

原创 MySQL为什么有时候会选错索引?

这个统计信息指的是索引的区分度。的方法:采样统计时,InnoDB默认选择N个数据页,统计这些页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,计算出这个索引的基数。若使用索引b,会先扫描索引b的最后50001个值,取到对应的id后进行回表,然后根据字段b进行过滤,这样需要扫描50001行。若使用索引a,会先扫描索引a的前1000个值,取到对应的id后进行回表,然后根据字段b进行过滤,这样需要扫描1000行。此时,你或许有疑问,既然用上索引a的扫描行数少,且该语句可以用索引a,为什么优化器不使用呢?

2025-07-11 15:32:54 1019

原创 颠覆传统开发!低代码+AIoT正重构数智工厂,你上车了吗?

此外,通过 AIoT 技术,工厂还实现了设备的远程监控和管理,工程师可以通过手机或电脑随时随地对设备进行监控和维护,大大提高了设备管理的效率和响应速度。通过故障预测,企业可以提前安排设备维护,准备维修所需的零部件,避免设备突发故障导致的生产中断,从而有效降低设备维护成本,提高生产效率。例如,某电子制造企业在已上线的质量管理系统中,想要增加一个新的质量检测指标和分析模块,开发团队花费了 2 个月时间,才完成相关功能的开发和测试,期间还出现了多次系统兼容性问题,严重影响了系统的稳定性和使用体验。

2025-07-10 17:08:06 866

原创 微服务架构中数据一致性保证机制深度解析

不追求绝对一致性:微服务中 “完美一致性” 通常意味着不可接受的性能损耗,需根据业务价值选择一致性级别。防御性设计:所有跨服务操作必须考虑失败场景,通过幂等性、重试、补偿三重保障最终一致性。监控优先:建立全链路一致性监控(如订单 - 库存 - 支付数据对账),及早发现不一致并修复。

2025-07-10 14:55:50 989

原创 如何识别SQL Server中需要添加索引的查询

精准的索引优化需要持续监控和迭代调整。建议每周运行一次诊断查询,重点关注:改进潜力(improvement_measure) > 100,000 的索引逻辑读取(avg_logical_reads) > 5000 的查询扫描次数(total_scans) > 10,000 的热点列LuoCore如何识别SQL Server中需要添加索引的查询 - LuoCore - 博客园JNPF快速开发平台。

2025-07-09 17:38:57 740

原创 Web前端入门:JavaScript 鼠标事件(mouse) enter/leave 和 over/out 区别

开发中需要根据需求选择合适的事件,一般情况 enter/leave 这组事件使用率相对而言较高一些。前端路引Web前端入门第 76 问:JavaScript 鼠标事件(mouse) enter/leave 和 over/out 区别 - 前端路引 - 博客园JNPF快速开发平台。

2025-07-09 15:23:16 339

原创 三级缓存解决了循环依赖问题?别被骗了,一级缓存就够了!

的路径是 一级缓存 → 二级缓存 → 三级缓存,同时当从三级缓存中获取到早期对象时,直接放入二级缓存,删除三级缓存(后续的多次引用也是二级缓存),可见二级缓存+短暂的三级缓存相当于标记bean为已实例化,所以依赖三级缓存解决循环依赖显然是错的。都说Spring三级缓存解决了循环依赖问题,那我们就使用了一级缓存就解决了缓存依赖问题,spring的开发团队怎么会傻到用三级缓存解决问题,当然这句话可能还有一个歧义,第三层缓存区解决了缓存依赖问题,这同样也是错的,且听下文分析。第二级缓存就可以解决循环依赖问题。

2025-07-08 17:16:13 926

原创 JavaScript中如何遍历对象?

今天来点稍微轻松的话题,如何在JavaScript中遍历对象,在平常的工作中,遍历对象是很常见的操作,javascript提供了多种方法来遍历对象的属性。是遍历对象最基本的方式,需要注意的是它不仅会遍历对象自身的属性,也会遍历原型链上的属性。对象,包含名字和年龄两个属性,下面看看有哪些方式可以遍历这个对象。方法返回一个对象中所有可枚举属性的键名并放到一个数组里,配合。如果你只关心对象的值,而不在key的话,那么可以使用。方法,它返回一个包含对象所有可枚举属性值的数组。是用来遍历可迭代对象的,所以。

2025-07-08 15:01:05 521

原创 AI金融革命已来,低代码是“作弊器”还是“掘墓人”?开发者必读!

这种全民开发的模式,不仅充分发挥了业务人员的专业优势,还促进了不同部门之间的协作与创新,为 AI 金融的发展注入了新的活力。具有诸多显著的特点。例如,一些金融机构利用人工智能技术实现了信贷审批的自动化,通过对海量数据的分析和模型的建立,能够快速、准确地评估借款人的信用风险,大大提高了审批效率,降低了人为因素带来的风险。例如,通过引入更先进的 AI 技术,低代码平台有望实现对自然语言的深度理解,开发者只需通过自然语言描述业务需求,平台就能自动生成相应的代码和应用架构,进一步降低开发门槛,提高开发效率。

2025-07-07 17:17:05 1247

原创 TypeScript结构化类型初探

作为一个前端程序员,想必大家都知道javascript是一个弱类型语言,如果需要类型的支持,那就需要借助typescript来实现,但是大家可曾听过这样一个说法?这种强类型语言,使用的都是名义类型,名义类型要求类型的名称必须匹配才能兼容。来实现javascript中的鸭子类型,结构化类型描述的是两个类型之间的兼容性,我们看一个具体的例子,再下结论。如果一个类型B包含了另一个类型A的所有属性,那么这两个类型是兼容的,我们可以将类型B赋值给类型A。是两个不同的类型,即使它们有相同的属性,也不能互相替换。

2025-07-07 15:00:58 350

原创 探索 Vue.js 组件的最新特性

Vue 3 对自定义指令的钩子函数进行了改进,提供了更丰富的钩子函数,如createdmountedupdatedunmounted等。这些钩子函数可以让开发者在指令的不同生命周期阶段执行不同的操作。例如,在开发一个自动聚焦的指令时,可以在mounted钩子中实现元素的聚焦操作。

2025-07-04 17:18:42 625

原创 10亿订单如何分库分表?

场景痛点-- 简单查询竟需12秒!-- 统计全表耗时278秒核心矛盾B+树索引深度达到5层,磁盘IO暴增。单表超200GB导致备份时间窗突破6小时。写并发量达8000QPS,主从延迟高达15分钟。关键认知:当单表数据量突破5000万行时,就该启动分库分表设计预案。那么问题来了,假如现在有10亿的订单数据,我们该如何做分库分表呢?今天这篇文章就跟大家一起聊聊这个问题,希望对你会有所帮助。分片键选择大于努力:基因分片是订单系统的最佳拍档。扩容预留空间:建议初始设计支持2年数据增长。避免过度设计。

2025-07-04 15:07:08 906

原创 商品中心—库存分桶的一致性改造文档(二)

这个定时任务主要处理执⾏分桶操作定时任务中处理完成的数据,也就是将库存分桶操作表中状态为已完成的数据查询出来。如果有失败的操作,则回滚该操作,然后删除该任务。这个定时任务与执⾏分桶操作的定时任务类似,它会分⻚查询执⾏完成的分桶操作,然后放⼊队列中。按照队列处理完成后,整个流程结束,删除表里的分桶操作记录。

2025-07-03 16:49:00 861

原创 商品中心—库存分桶的一致性改造文档

计算出元数据(待上线分桶、中⼼桶剩余库存、每个分桶分配库存)信息后,为了保证⼀致性,会先将计算出的分桶元数据信息⼊库。InventoryBucketServiceImpl的bucketOnline()方法,适⽤场景是在商品库存⼊桶时,分桶上线中存在上线失败的分桶。当向库存分桶增加库存时,会调用分桶上线接⼝,也就是会调⽤InventoryBucketServiceImpl的writeBucketCache()⽅法,writeBucketCache()⽅法会实现具体的分桶上线任务。

2025-07-03 14:41:19 741

原创 开源人工智能:数字主权的基石

数字主权是指一个国家或地区具备能力,依据自身的法律、价值观和战略利益,独立地治理、控制和保护其数字基础设施、数据与技术体系。这包括对数字资产进行管理和维护的权力与技术能力,涵盖数据的存储与处理、技术基础设施,以及在该国境内使用的各类数字服务。人工智能中的数字主权引发了具体的问题;人工智能尤其依赖于全新的基础设施规模与数据体系,并被视为一项变革性技术,预计将直接影响工作、安全、经济、选举流程等方面。如果一项技术在对社会生活中的这些领域都产生了强烈影响,那意味着社会也需要具备塑造其发展路径和应用方式的能力。

2025-07-02 15:16:36 1095

原创 MySQL索引失效场景

时,MySQL自带的优化器认为全表扫描更快。当然,索引失效的情况,我只是列举了几种常见的。MySQL 索引优化是提升查询性能的关键手段之一,但有时使用不当会导致索引。有时我们会发现,明明是正确的使用方法,但是看执行计划还是没走索引。今天我们一起来看看哪些情况下索引会失效。:字段类型与查询值类型不一致。,也会导致索引失效。

2025-07-01 17:30:35 386

原创 javascript中IIFE(立即执行函数表达式)到底是咋来的?

IIFE(Immediately Invoked Function Expression),中文名称:立即执行函数表达式,其实IIFE最早并不叫这个名字,而是叫做,即自执行匿名函数。根据MDN的资料,IIFE这个说法最早由Ben Alman于2010年提出,下面我们一起来看看这个名字的来龙去脉。,标志着IIFE这个名字的诞生。在文章中,Ben Alman称他是一个对待术语非常严谨的人,之前他多次看到这个说法,觉得不是很恰当,于是他提出了这个说法。

2025-07-01 15:14:45 765

原创 商品中心—库存分桶初始化的技术文档

注意:请求参数模型中会带上本次的库存业务单号。如果本次需要入库的库存数量小于配置的所有分桶的最小库存容量,并且小于配置的所有分桶的最小库存容量,则计算此时要分配的分桶数 = 本次库存入库数 / 每个分桶的最小库存容量。如果本次需要入库的库存数量小于配置的所有分桶的最大库存容量,但是大于配置的所有分桶的最小库存容量,则根据配置的分桶数,计算每个分桶具体要分配多少库存即可。如果得出的要分配的分桶数大于0,那么就根据计算出的分桶数,重新计算每个分桶应该分配多少库存,也就是进行分配大于或等于最小库存容量的库存。

2025-06-27 17:12:01 749

原创 MySQL 字符集、排序规则与查询关系详解

MySQL 查询是否区分大小写及重音敏感,取决于创建时指定的字符集(character set)和排序规则(collation)。(1)字符集(Character Set):规定可存储的字符,如 utf8、utf8mb4、latin1 等。(2)排序规则(Collation):确定字符比较与排序规则,如是否区分大小写、重音等。注意:(1)每个排序规则必须对应特定的字符集,如 utf8mb4_bin 仅用于 utf8mb4 字符集。

2025-06-27 14:45:08 722

原创 传统IoT开发瑟瑟发抖!低代码加持,效率狂飙300%,你的竞争力还在吗?​​

低代码开发为 IoT 领域带来了前所未有的变革,它打破了传统开发的困境,让开发效率实现了质的飞跃。通过可视化开发、丰富的组件库和快速迭代的能力,低代码使得 IoT 应用的开发变得更加简单、高效和灵活,为企业和开发者带来了巨大的价值。展望未来,随着 5G、人工智能、大数据等技术的不断发展,物联网的应用场景将更加广泛,对开发效率和应用创新的要求也将越来越高。低代码开发作为一种高效的开发方式,将在 IoT 领域发挥更加重要的作用。

2025-06-26 17:40:32 756

原创 Web前端入门:JavaScript DOM 节点查找常用方法

常用的 DOM 查找方法基本就这些,还有些不太常用的方法本文就不一一列举文章转载自:前端路引Web前端入门第 70 问:JavaScript DOM 节点查找常用方法 - 前端路引 - 博客园JNPF快速开发平台。

2025-06-26 15:35:29 381

空空如也

空空如也

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

TA关注的人

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