自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MQ 如何保证数据一致性?

上个月,我们有个电商系统出了个灵异事件:用户支付成功了,但订单状态死活不改成“已发货”。折腾了半天才定位到问题:订单服务的MQ消息,像人间蒸发一样消失了。这个Bug让我明白:(MQ)消息队列的数据一致性设计,绝对能排进分布式系统三大噩梦之一!今天这篇文章跟大家一起聊聊,MQ如何保证数据一致性?希望对你会有所帮助。(MQ)消息队列像金融系统的SWIFT结算网络,看似简单实则处处杀机。真正的高手不仅要会调参,更要设计出能兼容可靠性与性能的架构。

2025-08-22 17:45:05 485

原创 掌握设计模式--命令模式

命令模式的核心关注点是将请求封装成对象,从而使得请求的发送者(调用者)和接收者(执行者)解耦。命令模式通过把请求封装成命令对象,使得你可以在不改变请求者的情况下改变请求的执行方式、顺序或者操作对象。行为封装:命令模式将请求、操作或事务封装为命令对象,这些对象可以被请求者调用。请求者不关心具体操作的执行方式,只需要调用命令对象的执行方法即可。请求者和执行者解耦:通过引入命令对象,调用者和被调用者的关系被解耦,调用者不需要知道如何执行操作,也不需要知道具体的操作是什么,只需要发出命令请求。渊渟岳。

2025-08-22 17:01:47 660

原创 Web前端入门:JavaScript sessionStorage 那些容易踩坑的地方

sessionStorage 仅支持字符串存储,所以 JS 中用的 JSON 数据需要格式化为字符串存储~~sessionStorage 一般多用于临时数据存储,比如一些表单填写的临时数据,单页应用页面间的数据传递等。其生命周期有点短暂,浏览器或标签页关闭就会消失,就像浮游一样,朝生暮死...前端路引Web前端入门第 84 问:JavaScript sessionStorage 那些容易踩坑的地方 - 前端路引 - 博客园JNPF快速开发平台。

2025-08-21 18:00:25 1076

原创 JavaScript 多人协作的“修罗场”:如何优雅地规避函数重名问题?

实践建议新项目:毫不犹豫地使用,搭配 Webpack/Vite 等现代构建工具旧项目迁移:先从 IIFE 组织代码,逐步分模块迁移库开发:提供 UMD、ESM、CommonJS 多种格式,支持不同环境团队规范:结合 ESLint、Prettier 和代码审查流程持续学习:关注 JavaScript 模块化的新发展(如 Import Maps)plleJavaScript 多人协作的“修罗场”:如何优雅地规避函数重名问题?- plle - 博客园JNPF快速开发平台。

2025-08-21 16:35:54 771

原创 掌握机器学习数据集划分

训练集:用于训练模型,让模型学习数据中的特征和规律。测试集:用于最终评估模型的性能,模拟实际应用场景。数据集划分时需根据具体的数据量、任务目标和模型特性综合考量,以确定每种数据集的数据量和数据种类。这三种划分数据集的方法各有优缺点和使用场景,熟练掌握这三种方法及其实现,将使我们在机器学习的征程中更加从容地应对各种数据挑战,构建出性能优异、泛化能力强的模型。wang_yb掌握机器学习数据集划分 - wang_yb - 博客园JNPF快速开发平台。

2025-08-19 17:59:56 713

原创 MySQL 的 JSON 路径格式

MySQL 使用特定的 JSON 路径表达式语法来导航和提取 JSON 文档中的数据。

2025-08-19 16:13:57 743

原创 vue实现不同用户权限的方法

基于 Vue Router 的beforeEach进行全局路由守卫控制。我们可以在vuex或pinia中存储用户角色,并在路由的meta字段中定义允许访问的角色。使用 Vue 指令来控制按钮、组件或模块的显示隐藏。在 Vuex/Pinia 中存储权限信息,并在组件中通过computed计算属性动态控制组件或按钮的显示。返回用户权限信息:前端获取角色信息后,使用前述方法进行权限控制。后端返回可访问路由:后端返回用户可以访问的路由列表,前端使用动态注册。

2025-08-18 17:49:34 674

原创 分析慢查询

执行计划是数据库优化器为 SQL 查询生成的执行步骤蓝图。它展示了数据库如何访问表(全表扫描、索引扫描)、如何连接表(嵌套循环、哈希连接、合并连接)、如何排序、如何聚合等。

2025-08-18 16:47:21 655

原创 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

2025-08-15 18:03:10 1070

原创 震惊!AI编程正在淘汰这5类人,你在其中吗?

那些仅会机械编码的程序员可能被淘汰,而具备跨学科思维、善于驾驭AI、具备系统思维和创新能力的开发者将获得更大发展空间。AI不是职业终结者,而是将编程从“技术执行”升维为“价值创造”的催化剂。结合AI编程特点与程序员职业发展,以下5 类人或会受到冲击:这类人过度依赖复制粘贴既有代码片段,缺乏对编程原理、算法逻辑的深度理解。AI 编程工具能快速生成标准化代码,他们从事的简单重复性编码工作被取代风险极大。仅掌握某一种编程语言或某一特定领域技术,缺乏跨语言、跨领域知识与技能。

2025-08-15 16:32:56 788

原创 Linux用户登录失败锁定策略

在Linux系统中,为了提高系统安全性,防止暴力破解攻击,我们可以通过配置PAM(Pluggable Authentication Modules)模块来限制登录失败次数并锁定用户账户,本文将详细介绍如何实现这一功能,包括必要的步骤和配置文件的修改。

2025-08-14 18:00:10 757

原创 分布式锁—Redisson的公平锁

一.非公平可重入锁锁被释放后,排队获取锁的线程会重新无序获取锁,没有任何顺序性可言。二.公平可重入锁锁被释放后,排队获取锁的线程会按照请求获取锁时候的顺序去获取锁。公平锁可以保证线程获取锁的顺序,与其请求获取锁的顺序是一样的。也就是谁先申请获取到这把锁,谁就可以先获取到这把锁。公平可重入锁会把各个线程的加锁请求进行排队处理,保证先申请获取锁的线程,可以优先获取锁,从而实现所谓的公平性。三.可重入的非公平锁和公平锁不同点可重入的非公平锁和公平锁,在整体的技术实现框架上都是一样的。

2025-08-14 16:25:44 916

原创 非技术出身的业务主管自述:用低代码+AI搞定了公司最头疼的数据看板需求

于是,我们根据看板提供的数据,优化了采购流程,与供应商重新谈判,成功降低了采购成本,使得该业务环节的成本降低了 15%,有效提高了公司的盈利能力。这些成功的案例充分证明了低代码和 AI 技术在数据看板搭建中的巨大价值,它不仅帮助我们解决了数据可视化和实时更新的难题,还为公司的业务决策提供了有力的支持,成为了公司发展的重要助力。进入平台后,首先映入眼帘的是丰富的组件库,里面包含了各种常用的组件,如文本框、按钮、下拉框、图表等,这些组件就像是搭建数据看板的 “积木”,等待着我去组合和使用。

2025-08-12 18:00:27 546

原创 MySQL事务原理:从ACID到隔离级别的全解析

脏读:读到其他事务未提交的数据;不可重复读:读取到其它事务已提交的数据,导致前后读取的数据不一致;幻读:前后读取的记录数量不一致。事务的 ACID四大特性,原子性、一致性、隔离性、持久性;原子性、隔离性、持久性都是为了保证最终的一致性当多个事务并发执行的时候,会引发脏读、不可重复读、幻读这些问题。要解决脏读现象,就要将隔离级别升级到读已提交以上的隔离级别,要解决不可重复读现象,就要将隔离级别升级到可重复读以上的隔离级别。对于读已提交和可重复读读已提交。

2025-08-12 16:58:57 1005

原创 微服务Token鉴权的7种方案

最近有球友问我:微服务中Token鉴权除了使用JWT之外,还有什么其他的方案?今天这篇文章跟大家一起聊聊微服务Token鉴权的7种方案,希望对会有所帮助。初创期:基础JWT+Redis方案发展期:OAuth2.0+网关鉴权成熟期:JWE加密+双向TLS高级期:零信任架构+AI风控微服务安全如同城堡防御——单一的护城河无法阻挡所有入侵,需要城墙、箭塔、卫兵的多层防护。没有绝对安全的系统,只有不断提高的攻击成本。苏三说技术微服务Token鉴权的7种方案 - 苏三说技术 - 博客园JNPF快速开发平台。

2025-08-11 17:59:27 1264

原创 是否有必要使用 Oracle 向量数据库?

所以,如果是企业级应用,比如 AI 赋能业务、BI 分析、数据库增强搜索,且你本身就有用到 Oracle 数据库,站在纯技术角度考量,在 Oracle 基础上继续扩展更多的可能场景,是个比较省心省力的选择。其实Oracle早已是多模(Multi-model)数据库,除了最近AI时代很火的向量数据库之外,其他相对常见的比如文档数据库、图数据库、空间数据库,甚至不算常见的RDF全部都支持。此外,在AI时代下,我们不得不面临的一个惨痛现状是,传统意义上的纯运维管理DBA,即便是资深级别,路也会越来越窄了。

2025-08-11 17:09:18 525

原创 慢SQL优化实战:从一例线上慢SQL探究执行引擎工作过程

本文完整的介绍了一个SQL调优案例,通过这个案例可以归纳出SQL调优的基本思想。首先,需要了解SQL语句中的关键字(Join、Order by...)的基本工作原理,并辅助一些执行过程数据(Explain、Optimizer_trace),通过实验验证猜想,最终达成调优的目的。vivo互联网技术慢SQL优化实战:从一例线上慢SQL探究执行引擎工作过程 - vivo互联网技术 - 博客园JNPF快速开发平台。

2025-08-08 17:50:50 1012

原创 Java变量与常量全解析(包含常量类、interface 与 final 的比较)

final 数据类型 常量名 = 值;常量类通常是一个不可实例化的类(私有构造方法),包含静态 final 常量。private Constants() {} // 防止实例化。

2025-08-08 17:07:03 828

原创 2025低代码+AI趋势预测:从“工具赋能”到“生态重构”的三大跃迁

2025 年,低代码与 AI 的融合将带来从技术到应用、从角色到生态的全方位跃迁。这一趋势不仅为企业提供了更强大的数字化工具,也为企业的创新发展开辟了新的道路。在技术融合方面,自动化开发、智能数据分析和安全防护的智能化将不断提升低代码平台的性能和价值;在应用场景拓展上,行业应用的深化和新兴领域的渗透将为企业带来更多的发展机遇;而生态体系的重构,则将促进开发者角色的转变、平台与供应商的协作以及完整产业生态的形成。

2025-08-07 17:58:21 1296

原创 我最喜欢的 C# 14 新特性

C# 14 引入的用户定义的复合赋值运算符,远不止是一个语法糖。它解决了 C# 长期以来在运算符重载方面的一个核心痛点,特别是在处理需要精细化管理的资源(如非托管内存、文件句柄等)时。性能提升:通过“就地修改”避免了不必要的临时对象分配和垃圾回收开销。安全性增强:从根本上消除了因临时对象而导致的资源泄漏风险,让我们不再需要依赖于不可预测的终结器来进行补救。它使得 C# 在高性能和底层交互编程方面更加得心应手,也让我们这些有 C++ 背景的开发者感到无比亲切。

2025-08-07 17:16:06 1024

原创 分布式事务问题的7种常见解决方案

分布式事务问题,无论在面试,还是工作中经常会遇到。分布式系统下,数据一致性不再是数据库事务那么简单的。分布式事务作为其中最复杂的挑战之一,曾让无数团队深夜加班、焦头烂额。今天这篇文章就跟大家一起聊聊分布式事务问题的7种常见解决方案,希望对你会有所帮助。经过十年演进,分布式事务解决方案已从强一致性向高性能最终一致性发展。技术没有绝对的好坏,只有适合与否。我曾见过团队为了追求理论上的强一致性,把系统搞得复杂不堪;也见过过度追求性能导致资金损失的血泪教训。

2025-08-06 17:50:36 1002

原创 JUC相关知识点总结

内容:同步器的底层实现。自定义锁与同步工具。重要性:理解JUC底层机制的关键。

2025-08-05 17:50:26 696

原创 一文详解:项目如何从Docker慢慢演变成了K8s部署

通过本文的深入探讨,我们已经详细了解了一个项目从 Docker 容器化到 Kubernetes 集群化的演变过程。在这个过程中,我们不仅分析了 Docker 的基础使用方法和 Docker Compose 的便捷性,还介绍了 Kubernetes 在处理大型、复杂系统中的重要作用。虽然 Kubernetes 在初期的配置和维护上可能带来一定的复杂性,但随着云服务的成熟,各大云平台提供了全面的 Kubernetes 集群管理解决方案,极大地简化了部署流程。

2025-08-05 16:52:21 1018

原创 MySQL是怎么保证数据不丢的?

只要redo log和binlog保证持久化到磁盘,就能确保MySQL异常重启后,数据可以恢复。本文讲讲MySQL写入binlog和redo log的流程。

2025-08-04 17:51:09 661

原创 搞懂这两个组件,Spring 配置问题少一半!

引用的配置文件中定义了相同的 key,则直接会获取值返回,不会再继续往后查找了,所以就出现了案例四中。方法中实现了在 Bean 真正创建之前,对 Bean 定义中引用属性的解析。注解的配置信息,然后根据配置的路径加载对应路径下的配置文件,然后注册到。接口,它提供了一个方法可以注册额外的 Bean 定义。注解引用这个配置文件中的 hello 这个 key 了。属性引用的配置文件前面,查找的时候是按照顺序查找的。方法中获取到注解配置的文件的位置,然后又委托给了。注解的解析,这里实际上就是调用的上面设置的。

2025-08-04 16:50:29 1057

原创 想在代码中验证sql的正确性?

我们在平时的开发中可能会遇到需要验证一下sql是否正确,也就是需要check一下sql。1. sql中使用的列是否存在2. sql语法是否正确3. sql中使用到的操作符/函数是否存在,有没有正确的使用我们可以用以下的sql示例来探究一下使用calcite如何校验sqlselectu.sex,max(u.age)

2025-08-01 18:02:15 550

原创 JUC并发—并发安全集合二

一.优点读读不互斥,读写不互斥,写写互斥。同一时间只有一个线程可以写,写的同时允许其他线程来读。二.缺点空间换时间,写的时候内存里会出现一模一样的副本,对内存消耗大。通过数组副本可以保证大量的读不需要和写互斥。如果数组很大,可能要考虑内存占用会是数组大小的几倍。此外使用数组副本来统计数据,会存在统计数据不一致的问题。三.使用场景适用于读多写少的场景,这样大量的读操作不会被写操作影响,而且不要求统计数据具有实时性。ConcurrentLinkedQueue是一种并发安全且非阻塞的链表队列(无界队列)。

2025-08-01 16:59:35 1080

原创 从崩溃到稳定:前端开发者必学的 Node.js 守护进程实战指南

除了上面的方法,其实也还有其它一些快捷的方式来创建守护进程,如使用pm2或者forever, 但是纯手工创建守护进程的基本功不能丢了。实现守护进程的过程,也是深入理解 Node.js 进程模型和操作系统交互的绝佳机会。从工作目录设置、权限管理到信号处理、错误捕获,每一个细节都体现了对系统编程的深刻理解。这些知识不仅适用于守护进程开发,更能帮助我们编写更健壮的 Node.js 应用。柯北(jvxiao)从崩溃到稳定:前端开发者必学的 Node.js 守护进程实战指南 - 柯北(jvxiao) - 博客园。

2025-07-31 18:00:04 924

原创 线上问题定位神器:Arthas

我经历过凌晨3点被报警叫醒的慌乱,也体会过定位难题的煎熬。90%的线上问题都源于"三个不知道":不知道哪慢、不知道谁卡、不知道为何错。这篇文章跟大家一起聊聊如何用Arthas快速定位线上问题,希望对你会有所帮助。Arthas能力矩阵架构师的三层境界看现象:CPU高→重启(新手)看本质:线程阻塞→优化锁(进阶)看未来:混沌工程主动注入故障(大师)真正的高手不是解决问题,而是让问题无处遁形。当你握紧Arthas这把手术刀,每一次线上危机都是展示技术深度的舞台。苏三说技术。

2025-07-31 16:43:44 719

原创 Git命令这样用,代码管理轻松搞定

掌握Git命令不是一天的事情,但是通过系统的学习和不断的实践,你会发现Git其实并没有想象中那么复杂。从基础开始:先掌握add、commit、push等基本命令理解工作流:明白工作区、暂存区、本地仓库的关系多加练习:在实际项目中不断使用和总结善用别名:为常用命令设置别名,提高效率记住,Git是工具,不是障碍。掌握了这些命令,你的代码管理将会变得游刃有余!大毛啊Git命令这样用,代码管理轻松搞定 - 大毛啊 - 博客园JNPF快速开发平台。

2025-07-30 18:01:11 406

原创 Java中什么是类加载?类加载的过程?

类加载指的是把类加载到 JVM 中。把二进制流存储到内存中,之后经过一番解析、处理转化成可用的 class 类二进制流可以来源于 class 文件,或通过字节码工具生成的字节码或来自于网络。只要符合格式的二进制流,JVM 来者不拒。虚拟机遇到⼀条 new 指令时,⾸先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引⽤,并且检查这个符号引⽤代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执⾏相应的类加载过程。类加载过程包括了加载、连接、初始化三个阶段,其中连接还可以分为验证、准备、解析将二

2025-07-29 17:56:47 1123

原创 接口设计的原则:构建优雅API的完整指南

接口设计是定义系统不同组件之间交互方式的过程。它包括方法签名、参数定义、返回值、异常处理等方面的设计。好的接口设计能够隐藏实现细节,提供清晰的调用方式。每个接口应该只负责一个明确的功能,不应该承担多个不相关的职责。这是接口设计的基础原则。接口应该对扩展开放,对修改关闭。设计时要考虑未来的扩展需求,避免频繁修改已有接口。子类对象应该能够替换父类对象,而不影响程序的正确性。接口的实现类应该完全遵循接口的契约。不应该强迫客户依赖于它们不使用的方法。设计小而专一的接口,而不是大而全的接口。

2025-07-29 17:01:31 831

原创 MySQL有哪些“饮鸩止渴”提高性能的方法?

有时候,在业务高峰期,生产环境的MySQL压力太大,没法正常响应,需要短期内、临时性地提升一些性能。本文就来讲讲一些临时方法,并着重说它们可能存在的风险。

2025-07-28 18:01:54 1067

原创 Java注解底层竟然是个Map?

案例一:普通注解用法下面的代码定义了一个注解@Test,然后在中获取到这个注解,然后打印出它value()方法的值。案例二:组合注解用法下面的代码中尝试从某个类上获取它的注解,然后再从这个注解中获取它上面的注解。组合注解在 Spring 中很常见,比如常用的,它实际上就是组合了和这两个注解。System.out.println("是否在动态代理对象的Class对象上存在:" + existInProxyObj);

2025-07-28 17:01:39 929

原创 一文彻底搞懂javascript中的undefined

undefined是可以说是javascript中最特殊的一个类型,许多其他语言中都没有这个类型。它表示一个变量已经声明,但还没有被赋值。如果没有掌握好undefined,则可能会写出一些非常业余的代码,我们来看一个例子,这是在做code review时遇到的真实例子,你能看出下面的代码有什么问题吗?在揭晓答案之前,我们先系统学习一下什么情况下JavaScript会产生undefined类型。

2025-07-25 18:01:09 681

原创 Mysql字段类型20连问

当存储CHAR值时,MySQL会删除字符串中的末尾空格同时,CHAR值会根据需要采用空格进行剩余空间填充,以方便比较和检索。但正因为其长度固定,所以会占据多余的空间,也是一种空间换时间的策略;CHAR适合存储很短或长度近似的字符串。例如,

2025-07-25 16:49:04 980

原创 C#解析JSON数据全攻略

还在为C#处理网络API返回的复杂JSON数据头疼吗?,90%的开发者都曾在JSON解析上栽过跟头!本文将手把手教你用C#轻松玩转JSON数据:- HttpClient获取网络JSON数据- System.Text.Json动态解析技巧- 强类型模型转换实战- 特殊字符/日期格式处理方案- 完整可运行代码示例。

2025-07-24 17:58:02 584

原创 Web前端入门:JavaScript 哪些地方需要 try...catch 异常捕获

任何事物都是犹过不及,合理使用可以有效提高代码健壮性,但过渡使用也容易造成代码冗余,所以编码也需要考虑分寸,拿捏得合适,则是优雅舞者。编码注意:不要静默吞掉错误,至少使用 console 记录错误信息(如 console.error),否则会影响程序问题排查。前端路引Web前端入门第 80 问:JavaScript 哪些地方需要 try...catch 异常捕获 - 前端路引 - 博客园JNPF快速开发平台。

2025-07-24 17:02:56 825

原创 SpringBoot--如何创建自己的自动配置

自定义条件注解的关键就是要有一个Condition实现类,该类负责条件注解的处理逻辑--它所实现的matches()方法决定了条件注解的要求是否得到满足。代码示例:Condition实现类@Override// 获取@ConditionalCustom注解的全部属性// 获取注解的value属性值(String[]数组)// 遍历每个属性值// 如果某个属性值对应的配置属性不存在,返回false。

2025-07-22 17:19:02 997

原创 传统开发已死?低代码“快准狠”,让企业数智转型效率飙升500%!

在低代码开发模式下,业务人员可以直接参与到应用开发过程中,通过可视化的操作,将自己的业务需求直观地表达出来,避免了因需求理解偏差而导致的开发失误。但传统开发模式下,技术栈一旦确定,就很难进行大规模的更新和替换,因为这涉及到整个系统架构的调整、代码的重写以及大量的测试工作,成本和风险都非常高。JNPF 是一款功能强大的低代码开发平台,它基于先进的技术架构,提供了可视化的开发环境、丰富的组件库和模板,以及强大的工作流引擎,能够帮助企业快速构建各种应用程序,满足不同业务场景的需求。

2025-07-21 17:54:31 1226

空空如也

空空如也

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

TA关注的人

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