自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 为什么禁止在for循环里使用拼接字符串

在Java中应避免循环内使用"+"拼接字符串,因其会导致性能问题。由于String的不可变性,每次拼接都会创建新对象,编译器优化仅适用于单行表达式。循环中使用"+"会生成大量临时对象,导致O(n²)时间复杂度和内存浪费。推荐使用StringBuilder,它只需创建一个对象,通过动态扩容高效完成拼接。性能测试显示,万次循环时StringBuilder比"+"快500倍。即使少量循环也建议养成使用StringBuilder的习惯,Java9+的优化仍

2026-03-28 09:56:53 157

原创 使用 Java 在 Excel 中创建数据透视表

摘要:本文介绍如何使用Java编程自动创建Excel数据透视表,实现数据分析和报告生成自动化。通过FreeSpire.XLS库,开发者可以快速汇总和分析销售数据、财务报表等结构化信息。文章详细讲解了环境配置、源数据准备、透视表创建的关键步骤,包括定义数据缓存、设置行列字段、配置聚合方式等核心功能。示例代码展示了如何构建一个包含产品分类、月份维度和销售数量汇总的透视表,并提供了样式优化、位置调整等实用技巧。这种方法特别适合需要定期处理大量数据的业务场景,可显著提升数据分析效率。

2026-03-28 09:55:39 342

原创 C#.NET ConcurrentStack<T> 深入解析:无锁栈原理、LIFO 语义与使用边界

摘要:ConcurrentStack<T>是.NET提供的线程安全LIFO栈,采用CAS原子操作实现无锁并发访问,避免全局锁带来的阻塞开销。核心解决多线程下Push/TryPop的安全性和扩展性问题,适用于对象池、任务处理等需要后进先出的场景。与普通Stack<T>加锁方案相比,它在高并发场景更具优势;与ConcurrentQueue<T>和ConcurrentBag<T>相比,它严格保持LIFO语义。使用时需注意TryPop比Count判断更可靠,枚举是快照

2026-03-28 09:53:12 342

原创 CDN调度优化实战:用IP查询降低跨省流量成本

01 CDN调度的常见痛点CDN(内容分发网络)的核心价值是将内容缓存到离用户最近的节点,减少传输距离。但在实际运维中,调度失准的情况时有发生:问题现象 原因 后果新疆用户请求被调度到杭州节点 DNS解析结果不准确,或用户使用公共DNS 跨省流量,高延迟黑龙江用户流量跑到广州 调度策略仅依赖IP段粗粒度映射 带宽成本浪费,用户体验差同一IP段用户被分散到多个节点 缺乏精准的归属地判断 缓存命中率下降核心矛盾:调度系统需要知道用户IP的精确归属地(至少到省级),但传统的IP段映射表更新不及时、精

2026-03-28 09:50:59 379

原创 搞懂 AI 智能体,这 10 个概念就够了

摘要:构建可靠AI智能体的10个关键概念包括:1.通用插件系统(MCP)实现工具标准化接入;2.推理循环机制让智能体动态调整策略;3.记忆系统维护短期/长期上下文;4.护栏机制确保操作安全性;5.工具发现实现能力自动扩展;6.错误恢复保障系统韧性;7.人机协同处理高风险决策;8.上下文工程提供完整决策依据;9.状态管理跟踪复杂任务进度;10.运行时编排管理系统执行环境。这些概念共同解决了智能体开发中的工具集成、可靠性、安全性和可扩展性问题,建议开发者逐步实施,从MCP或记忆系统等基础组件开始构建。

2026-03-26 11:07:33 211

原创 Yearning+客户端+手工EXPLAIN,NineData社区版能作为替代方案?

把 Yearning 和 NineData 社区版放在一起看,常见的对比误区,是将二者都简单归为“审核工具”。Yearning 的产品核心聚焦在 SQL 审核流程管理。NineData 社区版在 MySQL 慢 SQL 这个场景下,核心优势体现在把慢查询分析、SQL 窗口、SQL 任务接成一条线。如果团队现在的问题是慢 SQL 这条链路流程分散,NineData 支持作为一套更便捷的本地化替代方案。对 DBA 来说,实际值得替代的,通常不是某个页面,而是那些每天都在重复的切换动作。

2026-03-26 11:05:59 291

原创 别再给主线程塞私活了!requestIdleCallback 让你优雅“偷懒”

摘要:本文探讨了如何利用requestIdleCallback API优化页面性能。传统使用setTimeout处理非关键任务会导致主线程阻塞,造成页面卡顿。requestIdleCallback则能在浏览器空闲时执行任务,确保关键渲染优先。文章通过对比两种方式的差异,展示了优化前后的代码示例,并详细解析了空闲时间的原理。同时指出了使用注意事项,包括任务拆分、兼容性处理等。这种"懂礼貌"的任务调度方式,能有效提升页面流畅度,特别适用于埋点上报、预加载等非紧急任务。

2026-03-21 19:22:08 288

原创 使用OpenClaw+Skill自动发布微信公众号文章

OpenClaw是一款‌本地优先、可自托管的AI自动化代理工具‌,可以运行在你自己的电脑上,通过各种聊天工具(飞书、QQ、Telegram 等)与你对话,帮你完成各种任务。你可以把它理解为:一个本地运行的 AI 助手帮你回复消息搜索信息写文章、发公众号操作浏览器管理文件定时执行任务是一种可复用、模块化的执行单元,用于定义 AI Agent 如何完成特定任务。它封装了具体的操作流程、工具调用逻辑和执行规范,让 AI 能够“知道怎么做”而不是仅仅“知道做什么”。Skill。

2026-03-21 19:10:12 962

原创 Grid 网格布局:二维世界的布局王者,像下围棋一样掌控页面

CSS Grid布局是一种强大的二维布局系统,可以同时控制行和列。通过定义网格容器(grid-template-columns/rows)和使用fr单位、repeat()、minmax()等特性,可以创建灵活的自适应布局。Grid支持网格线定位和命名区域(grid-area),能轻松实现复杂布局如三栏、卡片墙等。与Flexbox相比,Grid适合整体页面架构,而Flexbox适合单维排列。Grid还提供间距控制(gap)和对齐功能,结合响应式设计(auto-fit)可创建完美的自适应界面。掌握Grid能让网

2026-03-21 19:07:13 309

原创 C#.NET ReadOnlySequence 深入解析:多段内存遍历与零拷贝协议解析

如果说Span<T>解决的是“如何高效处理一段连续内存”,Memory<T>解决的是“如何跨异步边界持有一段连续内存”,那么当数据根本不是一整块连续内存,而是分散在多段内存里时,怎么仍然零拷贝地把它当成一条完整数据流来处理?网络收包往往是分段到达的;PipeReader读取出来的数据经常不是单段连续缓冲区;大文件、流式协议、消息边界解析也经常面对“多段内存拼成一个逻辑消息”的问题。如果你只会Span<T>Span<T>只能表示一段连续内存;但很多高性能IO场景下,数据本来就是多段的。

2026-03-21 19:05:44 366

原创 网络编程入门如此简单(五):UDP跟TCP相比,到底差了什么?

本文通过通俗易懂的类比方式,解释了UDP与TCP的核心差异:UDP如同职场新人,简单直接但不保证可靠;TCP则像经验丰富的老手,通过三次握手、确认重传、流量控制等机制确保可靠传输。文章还探讨了如何基于UDP实现TCP功能:通过模拟三次握手建立连接,添加序列号与确认机制解决顺序和丢包问题,利用滑动窗口控制流量,并引入拥塞控制算法动态调整发送速率。这种形象化的解释方式有助于非专业人士理解网络协议的本质差异及其实现原理。

2026-03-21 18:57:21 374

原创 使用 Python 格式化 Word 文档中的文本和段落

本文全面介绍了使用 Python 格式化 Word 文档中文字和段落的各种技术。字符格式化:字体、大小、颜色、特殊效果段落对齐:左对齐、居中、右对齐、两端对齐、分散对齐段落缩进:首行缩进、悬挂缩进、左右缩进间距控制:段前距、段后距、行距规则装饰效果:边框、底纹、背景色内置样式:快速应用专业格式掌握这些格式化技术后,开发者可以创建出格式规范、外观专业的各类 Word 文档。在实际应用中,应根据文档类型和用途选择合适的格式化组合,既要保证可读性,也要考虑美观性和专业性。

2026-03-21 18:55:30 341

原创 解决 IntelliJ IDEA 运行时“命令行过长”问题:使用 JAR 清单(JAR manifest)方式

在大型项目中,依赖的 JAR 文件可能多达上百个,每个路径又较长,导致整个 -classpath 参数远远超过 Windows 的命令行长度限制(约 32KB)。不再将所有 JAR 路径写在命令行中,而是打包到一个临时 JAR 文件的 MANIFEST.MF 清单里,然后通过 -cp temp.jar 启动应用。Class-Path: lib/a.jar lib/b.jar lib/c.jar ...(所有依赖路径)其中,JAR manifest 是最推荐的方式,尤其适用于 JDK 8 及以上所有版本。

2026-01-29 11:34:28 549

原创 Mysql索引:深入理解InnoDb聚集索引与MyisAm非聚集索引

使用聚集索引的查询效率要比非聚集索引的效率要高,但是如果需要频繁去改变聚集索引的值,写入性能并不高,因为需要移动对应数据的物理位置非聚集索引在查询的时候可以的话就避免二次查询,这样性能会大幅提升。3、由于B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只需要扫一遍叶子结点即可,但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况,所以通常B+树用于数据库索引。聚集索引就是以主键创建的索引非聚集索引就是除了主键以外的索引。

2026-01-29 07:34:52 825

原创 Laravel Authorization:支持 ACL、RBAC、ABAC 等模型的授权库

这就自动创建 Model 配置文件 config/lauthz-rbac-model.conf 和 一个新的 Lauthz 配置文件 config/lauthz.php。该扩展包带有 EnforcerMiddleware 和 RequestMiddleware 中间件。Laravel Authorization 基于 Casbin ,是一个支持访问多种访问控制模型(如ACL,RBAC,ABAC等)的授权库。如果您的项目中需要多个权限控制,则可以配置多个 决策器。在这之前,你需要先了解 Casbin。

2026-01-29 05:32:48 848

原创 执行npm install 时报错 Host key verification failed

git config --global user.name "yourname" ====> 用户名。git config --global user.email“your@email.com" ====> 邮箱。2、进入->用户->[你的用户名]->.ssh文件夹下,删除 known_hosts 文件即可。复制用户->[你的用户名]->.ssh文件夹内“id_rsa.pub”文件内容保存即可。1、要在git设置一下身份的名字和邮箱。3、在git中输入刚才设置的邮箱。

2026-01-29 04:50:26 472

原创 vue router 动态路由清除方式,resetRouter不起作用

在Vue项目中,使用vue-router实现动态路由时,官方提供的resetRouter方法(通过替换matcher)在某些场景下失效,导致路由未被正确清除。Matcher替换策略无效:resetRouter直接替换router.matcher,但未完全重置路由实例,导致动态路由残留。通过以上方案,可有效解决resetRouter失效问题,确保路由在不同环境(如开发、测试、生产)下正确重置。敏感操作:路由重置会清除所有动态配置,避免在非必要场景调用。登出后路由未重置,用户仍可访问原路由。

2026-01-29 04:30:49 194

原创 MyBatis-Plus 深度源码解析:自定义插件与分表分库实现方案

本文深入解析MyBatis-Plus插件机制及分表分库实现方案。MyBatis-Plus基于MyBatis拦截器接口,通过@Intercepts和@Signature注解实现插件扩展,开发者可重写intercept方法修改SQL或添加逻辑。针对分表分库需求,文章提出通过自定义插件拦截SQL执行过程,根据分片键动态修改表名或数据源,支持哈希、范围等多种分片策略。结合MyBatis-Plus全局配置和自定义注解,可构建灵活高效的数据分片方案,满足高性能应用需求。

2026-01-27 22:39:15 205

原创 【MySQL 的 ONLY_FULL_GROUP_BY 模式】

是 MySQL 中的一个 SQL 模式,它要求在任何包含聚合函数的查询中,所有在SELECT子句中出现的非聚合列也必须在GROUP BY子句中出现。换句话说,如果一个查询使用了聚合函数,那么除了聚合函数包裹的列以外,所有在SELECT子句中出现的列都必须被GROUP BY子句引用。这个规则确保了查询结果的确定性和一致性,避免了由于 SQL 语句的模糊性而导致的潜在错误。虽然禁用可能会方便一些查询的编写,但从长远来看,遵循这个规则对于保持数据查询的准确性和一致性至关重要。

2025-03-22 15:30:52 1134

原创 Tomcat 的安装(详细教程)

Tomcat是一个免费的、开放源代码的Web应用服务器,属于轻量级应用服务器,由ApacheSun和一些公司以及个人共同开发而成,是Apache软件基金会项目中的一个核心项目。Tomcat深受Java爱好者的喜爱,是开发和调试JSP程序的首选,也是中小型系统和并发访问用户不是很多的场合下被普遍使用的服务器。TomcatWeb 容器:它负责完成web服务器的功能。Servlet 容器:名字为catalina,用于处理Servlet代码JSP 容器:用于将JSP动态网页翻译成Servlet代码此外,

2025-03-22 02:43:50 8493 1

原创 SpringMVC进阶(自定义拦截器以及异常处理)

*** @author 孙显圣*/@Component //注入容器/*** 在目标方法执行前被调用,如果返回false,目标方法不会被执行* @return*/@Override/*** 在目标方法执行后被调用,可以获取目标方法返回的ModelAndView,可以根据业务进行二次处理*/@Override/*** 在渲染之后会被调用,可以进行资源清理工作*/@Override/*** @author 孙显圣*/

2025-03-22 01:07:33 679

原创 springboot下使用druid-spring-boot-starter

Druid声称是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能。spring boot starter自动装配组件,简化组件引入的开发工作量,所以Druid推出了druid-spring-boot-starter。

2025-03-10 23:43:43 2151

原创 Spring Boot的项目结构

合理的项目结构不仅能够提高代码的可读性和可维护性,还能够帮助团队成员更好地协作。特别是在大型项目中,良好的项目结构设计能够有效降低代码的耦合度,提高系统的可扩展性。此外,合适的测试结构和构建配置也是保证项目质量的重要因素。Spring Boot项目结构遵循Maven或Gradle的标准目录结构,同时融入了Spring Boot的特定约定。良好的项目结构不仅有助于代码组织,还能提高开发效率和项目可维护性。了解Spring Boot的项目结构对于开发高质量的应用至关重要。

2025-03-10 17:44:05 613

原创 Redis安装教程(超详细)

解决办法:1、改为2、将改为3、设置redis秘密,注意如果不行,可以尝试重启服务器试试设置密码后登陆需要如下图操作OK。

2025-03-10 12:57:58 1295

原创 PageHelper 解析及实现原理

面向关系型数据库的 SQL 查询和数据导出时,如果数据条数非常大,直接将所有数据一次性查出或者导出显然是不可行的。这时候就需要进行分页查询或分页导出,将查询或导出的数据按照指定大小分页加载或写入,从而提高查询或导出的效率。而分页查询或分页导出的实现过程比较繁琐,需要考虑很多细节问题,容易出错。因此,出现了一些支持分页查询或分页导出的插件或工具类,例如 MyBatis-Plus 的分页插件 PageHelper。PageHelper是Mybatis-Plus中的一个插件,主要用于实现数据库的分页查询功能。

2025-03-07 23:08:48 524

原创 MySQL系列之数据授权(安全)

数据授权对了,数据这么敏感,必须遵循“分而治之,最小认领”的原则。在这个大数据盛行的时代,数据显然成为人类的第N个生产资料,没有它,好像我们“站得不太高,看得不够清,听得不够远”。所以如何管理它,越来越重要了。今天博主继续大话MySQL,助你了解它是如何完成授权的。Let’s Go~本文对MySQL的权限操作进行了一定的介绍。希望可对有需要的盆友提供一定的帮助。

2025-03-05 19:23:39 1042

原创 MySQL 数据类型详解:TINYINT、INT 和 BIGINT

MySQL 提供了多种整数类型来满足不同的数据存储需求。TINYINT适用于存储小范围整数,INT适用于大多数常见场景,BIGINT适用于存储非常大范围的整数。选择合适的数据类型可以提高系统的存储效率和性能。在设计数据库时,了解这些类型的区别和适用场景可以帮助你做出更明智的决策。

2025-03-05 18:02:05 1083

原创 Java面试题全集(上)

2013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试大全》进行了全面的修订并重新发布在我的CSDN博客。在修订的过程中,参照了当时JDK最新版本(Java 7)给出了题目的答案和相关代码,去掉了EJB 2.x、JSF等无用内容或过时内容,补充了数据结构和算法、大型网站技术架构、设计模式、UML、Spring MVC等内容并对很多知识点进行了深入的剖析

2025-03-05 16:37:36 1062

原创 Java常见的技术场景面试题

单点登录:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统在以前的时候,一般我们就单系统,所有的功能都在同一个系统上。后来,我们为了 合理利用资源和降低耦合性 ,于是把单系统 拆分 成多个子系统。现在有一个微服务的简单架构,如图:参考回答。

2025-03-05 01:29:06 563

原创 Docker Compose一键部署Spring Boot + Vue项目

本文在普通的Docker部署Spring Boot + Vue项目的基础上进行。部署若依前后端分离版项目为例,重点在于如何使用Docker Compose的方式加快项目部署过程。此前使用Docker部署一个Spring Boot + Vue项目,包含了4个容器:MySQLRedisJava后端Nginx前端而稍微复杂的项目,还会有各种各样的其它中间件,需要部署的容器远不止4个。如果还像之前那样手动的逐一部署,就太麻烦了。而Docker Compose就可以帮助我们实现。

2025-03-05 00:11:31 1290

原创 湖仓一体架构解析:数仓架构选择(第48天)

本文解析了Lambda 架构,Kappa 架构,湖仓一体架构,流批一体架构,以及在大数据场景中,如何选择架构。

2025-03-02 22:23:36 645

原创 华为eNSP :WLAN的配置

WLAN(Wireless Local Area Network,无线局域网)是一种利用无线技术进行数据传输的局域网络。它允许设备在一定的区域内通过无线信号连接到网络,而不需要使用物理线缆。WLAN技术主要基于IEEE 802.11标准,也被称为Wi-Fi。

2025-03-02 19:25:46 1250

原创 三分钟内快速完成MySQL到达梦数据库的迁移

由于业务需求要求数据库国产化,因此近期需要将数据从mysql数据库中迁移到国产达梦数据库中。本次使用达梦新的数据库开发和管理工具–SQLark百灵连接进行迁移,我也是在官方社区里看到大家推荐才试的,使用SQLark迁移30G左右的数据,几分钟就搞定了,而且**一次迁移成功率高达 90% 以上!

2025-03-01 15:36:11 1289

原创 【Rabbitmq篇】高级特性----事务,消息分发

此时将会只接收到5条,并且会阻塞住,达到一个限流的状态。

2025-02-28 23:36:46 1055

原创 【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南

1.WEB,在英语中 web 表示网/网络资源(页面,图片,css,js)意思,它用于表示 WEB 服务器(主机)供浏览器访问的资源静态 web 资源(如 html 页面):指 web 页面中供人们浏览的数据始终是不变。动态 web 资源,比如 Servlet(java)、PHP 等。3.静态 web 资源开发技术Html、CSS,js 等4.常用动态 web 资源开发技术:Servlet、SpringBoot、SpringMVC、PHP、ASP.NET1 BS 开发。

2025-02-28 21:58:57 704

原创 sql中COALESCE函数详解

在SQL中,COALESCE函数是一个非常有用的函数,用于从其参数列表中返回第一个非NULL值。如果所有给定的参数都是NULL,那么COALESCE函数将返回NULL。这个函数可以接受多个参数,使其在处理可能出现的NULL值时非常灵活和强大。

2025-02-28 12:56:05 1361

原创 SpringCloud gateway (史上最全)

SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

2025-02-28 11:13:13 2233

原创 SpringBoot 新特性

新增了一个自动配置注解 @AutoConfiguration,用来代替之前的 @Configuration,用于标识新自动配置注册文件中的顶级自动配置类,由 @AutoConfiguration 注解嵌套、导入进来的其他配置类可以继续使用 @Configuration 注解。Spring Boot 3.0 的发布,其最低要求 Java 17,并向上兼容支持 Java 19,Spring Boot 3.1 可以支持 Java 20 了,因为前段时间 Java 20 发布了。

2025-02-27 14:17:58 721

原创 Spring Boot——日志介绍和配置

在前面的学习中,控制台上打印出来的一大堆内容就是日志,可以帮助我们发现问题,分析问题,定位问题,除此之外,日志还可以进行系统的监控,数据采集等日志门面就相当于是淘宝 APP,日志实现相当于入驻的商家,在使用时是使用淘宝,真正提供商品的还是商家也就是使用时使用 SLF4J,真正实现功能还是日志实现的框架SLF4J 就是其他日志框架的门面,相当于提供日志服务的统一 API 接口,并不涉及到具体的日志逻辑实现,而是一个抽象层,对日志框架制定的一种规范、标准、接口。

2025-02-27 12:54:51 1051

原创 Redis 下载与安装 教程 windows版

设置键值对,通过key获取value,设置key的过期时间为5秒,5秒后查看所有的key现实name已经被删除。在命令中输入ping命令来检测redis服务器与redis客户端的连通性,返回PONG则说明连接成功了。,目前仍在维护,目前最新版本是 5.0.14,更新速度跟Redis官网也相差好几个大版本。为了方便,建议把Redis路径配置到系统变量Path值中,这样就省得再输路径了。redis.windows.conf可以省略,省略后,使用。下载好后找一个位置解压,例如我的位置是D:/Redis/

2025-02-27 11:32:58 606

空空如也

空空如也

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

TA关注的人

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