- 博客(65)
- 收藏
- 关注
原创 Java开发日常:掌握这几个 Linux 核心操作就够了
XShell 是一个强大的安全终端模拟软件,支持SSH1、SSH2、SFTP、TELNET等多种协议,用于远程连接Linux服务器。它是Java开发人员日常工作中不可或缺的工具。XFTP 是一个文件传输软件,用于在Windows和Linux之间安全地传输文件,支持SFTP、FTP等协议。通常与XShell配合使用。
2026-06-05 20:09:25
563
原创 工作中Maven的使用,Java新人必会!
Maven是一款强大的Java项目构建工具,通过pom.xml配置文件管理依赖关系、编译设置和打包部署,自动下载所需jar包并支持插件扩展功能。文章介绍了Maven的基本操作,包括IDEA配置、依赖引入方式(远程仓库和本地jar包)、打包功能说明、多环境管理配置(使用Profiles切换不同环境变量)以及私服搭建(Nexus工具管理内部依赖和缓存中央仓库资源)。这些功能显著提升了开发效率和项目维护的便捷性。
2026-06-04 20:08:15
626
1
原创 【保姆级教程】Claude Code本地安装与配置国产智谱模型
今天给大家带来一期非常实用的 AI 工具部署教程。作为开发者,善用 AI 工具能极大提升我们的日常编码和解决问题的效率。今天我们就来告诉大家怎么在自己电脑安装并通过配置过程智谱模型使用当前最火的终端 AI 助手——Claude Code。
2026-05-25 00:10:50
1012
2
原创 【保姆级教程】Claude Code无缝集成DeepSeek V4 Pro
摘要:本文介绍了两种在ClaudeCode中替换底层模型为DeepSeekV4Pro的方法。第一种是直接修改配置文件,通过编辑settings.json文件替换API参数;第二种是使用cc-switch工具实现多模型切换,详细说明了安装配置步骤。文章还提供了启动实战中的常见问题解决方案,如模型不匹配报错的处理方法。通过将ClaudeCode底层替换为性价比更高的DeepSeekV4Pro模型,开发者可以低成本享受优质AI编程辅助功能。
2026-05-24 23:28:57
3849
原创 工作中SVN的使用,保姆级教程!
SVN是一款集中式版本控制系统,采用客户端-服务器模式管理代码版本。与Git相比,SVN在目录权限控制、大型二进制文件处理等方面具有优势,适合特定场景使用。本文介绍了SVN的安装方法、基本操作(检出、提交、更新、回滚等)以及分支管理(创建、合并、切换)。同时讲解了文件冲突的解决方法,并演示了如何在IDEA中集成SVN工具。SVN虽然逐渐被Git取代,但在某些特定场景下仍是可靠选择,工具选择应基于团队和项目需求。
2026-05-13 00:02:01
1517
原创 工作中Mybatis动态SQL的使用
本文面向Java开发新人,系统讲解MyBatis动态SQL在实际工作中的使用方法。从"什么是动态SQL"入门,逐一讲解if、where、set、choose 、foreach、trim六大标签的语法与使用场景,涵盖条件查询、动态更新、动态插入、批量操作等高频业务场景。重点总结了Inte ger类型判断、AND/逗号遗漏、foreach空集合未判空等新人常见错误,并提供开启SQL日志、使用MyBatis Log Free插件还原完整SQL等调试技巧,帮助新人快速掌握动态SQL的编写与排错能力。
2026-05-08 00:10:56
578
原创 工作中Git的使用,基于GitLab,保姆级教程!
本文介绍了Git的基本概念、安装配置及常用命令。首先解释了Git作为分布式版本控制系统的作用,包括个人代码管理、团队协作和项目历史记录。接着详细说明了Git的安装步骤和配置方法,包括用户名、邮箱设置及验证方式。文章重点讲解了常用Git命令,如克隆代码、提交到暂存区、推送远程仓库等操作,并提供了SSH密钥配置流程。最后介绍了如何在IDEA中集成Git进行代码管理,包括克隆项目、提交和推送代码的图形化操作。全文旨在帮助开发者快速掌握Git的核心功能,实现高效的版本控制和团队协作。
2026-04-29 23:11:04
1020
原创 别再只会写 try-catch 敷衍编译器了!带你彻底搞懂如何正确处理异常信息
本文探讨Java异常处理的正确使用方式:1. 核心业务异常应直接抛出阻断流程,如订单支付前的状态校验;2. 非核心业务异常应try-catch捕获并优雅降级,如电商推荐服务异常时返回空列表;3. 避免"异常黑洞":禁止空catch块、仅打印e.getMessage()或使用printStackTrace();4. 正确做法是使用日志框架记录完整异常堆栈,抛出业务异常时保留原始异常作为cause。强调异常处理应区分核心/非核心场景,既要保证系统健壮性,又要为问题排查保留完整线索。
2026-04-11 21:22:48
615
原创 Claude Code本地安装与配置国产智谱模型 (保姆级教程)
今天给大家带来一期非常实用的 AI 工具部署教程。作为开发者,善用 AI 工具能极大提升我们的日常编码和解决问题的效率。今天我们就来告诉大家怎么在自己电脑安装并通过配置过程智谱模型使用当前最火的终端 AI 助手——Claude Code。如果你觉得官方 API 成本太高,我们可以直接修改底层配置,将其无缝切换为国内的智谱大模型 (GLM)。
2026-03-31 18:19:30
16004
10
原创 【硬核排坑】OpenClaw 接入钉钉无法执行本地命令?小心被“戏精”AI 骗了!
摘要:本文记录了OpenClaw接入钉钉时的权限问题排查过程。主要发现三个关键问题:1)UI保存通道绑定时的bug导致配置无效,需手动修改配置文件;2)exec工具默认使用受限沙盒,需通过命令行配置开放物理终端权限;3)大模型存在"上下文污染"问题,会编造错误信息,需新建会话重置记忆。最后建议修改Agent身份文件,植入"本地特权"人设,防止AI间歇性失忆。通过这三个步骤,最终成功实现钉钉AI调用本地终端功能。
2026-03-22 12:12:16
1485
原创 【实战避坑】OpenClaw 权限全开却读不了目录?从零开始的终极解决指南
摘要:Java开发者在配置OpenClaw(2026.2.6-3版本)时遇到权限异常问题,即使执行full权限配置后仍无法访问文件系统。排查发现涉及系统沙盒、执行宿主和AI幻觉三重问题:1)需切换非系统目录;2)配置exec执行通道(设置gateway主机、full安全级别、关闭询问并重启网关);3)处理AI幻觉需新建会话清除错误记忆。完整解决方案可解决权限配置无效问题。(150字)
2026-03-21 20:33:26
1344
原创 OpenClaw 安装使用指南 (Windows)-对接钉钉、飞书、QQ
《OpenClaw本地AI智能体Windows部署指南》摘要 OpenClaw是一款开源AI智能体(原名Clawdbot/Moltbot),支持本地化部署,能像数字员工一样执行系统操作任务。安装需准备Node.js(>v22)和Python(>v3),通过PowerShell管理员权限运行安装脚本,按向导配置模型APIKey等参数即可完成部署。指南详细介绍了对接钉钉/飞书/QQ机器人的方法,包括插件安装、开放平台配置及远程控制验证。通过插件克隆、依赖安装、密钥配置等步骤,可实现跨平台指令交互。卸
2026-03-20 20:00:47
1786
原创 GitLab安装部署保姆级教程,五分钟搞定!
本文介绍了在Linux(CentOS)系统上安装部署GitLab的详细步骤。首先安装基础依赖包(policycoreutils-python、openssh-server、curl、postfix),然后添加GitLab社区版仓库并安装。接着配置external_url访问路径,执行gitlab-ctl reconfigure启动服务。安装完成后,可通过默认root账户和初始密码登录Web界面。整个过程简单高效,5分钟内即可完成基础配置,为企业团队提供安全可控的代码托管和DevOps平台,支持后续CI/CD
2025-09-12 23:32:22
1055
1
原创 Java小白入职避坑指南:写给新人的职场生存“强心剂”
新人心态指南:平衡自信与成长 刚入职的新人常面临自信不足与能力焦虑。本文提醒:你被选中本身就证明公司认可你的潜力,面试官会成为你的隐形支持者,带薪学习是难得的成长机会。同时也要清醒认识到:缺乏实战经验容易犯错,知识储备仍需加强。建议保持"既不自负也不自卑"的平衡心态——不必假装全能,但要展现学习意愿;不必追求完美,但要确保持续进步。试用期是挑战更是机遇,积极心态和踏实学习才是成功关键。
2025-09-05 22:12:39
1039
3
原创 七大设计原则之里氏替换原则
里氏替换原则,英文叫LiskovSubstitutionPrinciple,简称LSP(老色皮,哈哈)。里氏替换原则,其实是没有我们前面,说的SRP和OCP比较见名知意一些。根据他们两个的中文名称,我们都很容易联想到他的定义。比如,单一职责原则,就是一个类或者模块只负责一个职责。而开闭原则,根据名字,我们也不难得知其定义就是,对扩展开发,对修改关闭。然而,里氏替换原则,根据名称,我们却难以得知其到底有何含义。里氏替换,其实重点就在后面的替换两字。
2025-01-18 16:29:39
1770
6
原创 nginx的基本使用,看这一篇就够了!
nginx(发音为"engine-x")是一款高性能的HTTP和反向代理Web服务器,同时也支持IMAP/POP3/SMTP邮件服务。它由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发,并于2004年10月4日发布了首个公开版本0.1.0。Nginx采用类BSD许可证发布源代码,以其稳定性、丰富的功能集、简洁的配置和低系统资源消耗而著称。2011年6月1日,nginx 1.0.4版本发布。
2025-01-12 20:16:22
2778
4
原创 七大设计原则之开闭原则
相信很多人都听说过这个原则,即使没有直接了解过“开闭原则”,也一定听过“对扩展开放,对修改关闭”这句话。这句话简洁地概括了开闭原则的核心思想。也即是,添加一个新的功能,应该是通过在已有代码基础上扩展代码(新增模块、类、方法、属性等),而非修改已有代码(修改模块、类、方法、属性等)的方式来完成。
2025-01-01 22:29:09
1536
2
原创 七大设计原则之单一职责原则
单一职责原则的英文名叫Single Responsibility Principle。所以,单一职责原则也简称SRP原则。这个原则相对其它原则是更好理解的,其实单从名字也是可以看出来这个原则是干啥的。我们先来看下单一职责原则的英文定义,。翻译过来就是,一个类或者模块应该只负责一个职责。所以说这个原则不仅是针对类的,也是针对模块的。其实往更大了说也可以针对一个服务,在进行服务拆分的时候,我们也要保证每个服务的职责单一,这样才能达到解耦的作用,也就可以提高可维护性。
2024-12-31 22:13:08
1791
4
原创 Mysql定时数据库备份保姆级教程
MySQL 是一种全球广泛使用的关系型数据库管理系统,它存储的数据不仅非常宝贵,而且往往无法替代。因此,确保这些重要数据的安全至关重要,定期进行备份就显得尤为重要。为了进一步增强数据的安全性,我们建议采用跨服务器备份策略,即将数据备份到不同的物理或虚拟服务器上。这样做可以作为一个额外的安全保障,有效防止因单点故障而导致的数据丢失风险。简单来说,就是把重要文件同时保存在几个不同的地方,这样即使一个地方出了问题,其他地方还有备份,从而更好地保护我们的资料安全。
2024-12-09 17:23:16
1927
1
原创 pushgateway的快速使用教程(附Java版通用推送代码)
Pushgateway 是 Prometheus 生态系统中的一种独特数据采集方式,它采用了被动推送的模式来获取监控数据。作为一个独立的插件,Pushgateway 可以灵活地运行在任何节点上,而不必局限于被监控的客户端。用户可以通过自定义编写的脚本,将需要监控的数据发送至 Pushgateway。随后,Pushgateway 会将这些数据推送至 Prometheus Server,从而实现数据的集中管理和监控。
2024-10-21 20:35:52
2460
原创 定时框架Quartz的快速使用教程
Quartz由OpenSymphony开源组织开发,是一个全功能的作业调度框架,可以集成到J2EE和J2SE应用中,也可以独立使用。通过这些组件的协同工作,Quartz能够灵活地管理和执行定时任务。从上面的架构图可以得知,Quartz的核心组件主要如下:任务Job:是个接口,我们的任务类需要实现该接口,并且要重写execute()方法,我们的任务就是要在这个方法里面来写。通过这种方式,我们可以确保当调度器触发任务时,execute()方法会被调用并执行我们预先定义的任务逻辑。
2024-10-02 23:56:25
1537
原创 达梦数据库开启归档模式
归档模式是数据库备份与恢复中的一种重要模式,通过将数据库的日志文件定期存储到归档目录中,可以实现对历史数据的长期保存和恢复。当数据库发生故障或数据丢失时,可以使用归档日志进行数据的恢复,避免数据损失和业务中断。
2024-10-01 22:16:55
2288
原创 【算法题】整数反转,一文彻底搞清!
其次,我们需要注意整数反转之后的结果可能会超出整数的范围。因此,我们需要在进行反转操作时,判断反转后的结果是否超出了范围,如果超出了范围,则返回0。该方法就是每次取末尾数字,并且判断此时去掉末尾数字后的x是否为0,为0就循环结束,不为0就继续循环,用取余10的方式不断将x的末尾数字取出,然后在不断的加到待返回值上,实现反转的效果。但是,这两种方法,我们还是更推荐使用数学运算的方法,这种方法的效率要高于整数转换为字符串再进行反转的方式。给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。
2024-08-10 13:51:16
1481
2
原创 【算法题】盛最多水的容器(双指针算法)
双指针算法(Two Pointers Algorithm)是一种在数组或链表等数据结构上使用两个指针进行操作的算法技巧,主要用于解决一些特定类型的问题。它通过将两个指针从数据结构的两端或同一端开始向中间或其他指定位置移动,根据问题的具体要求来调整指针的位置和移动方式,以达到减少时间复杂度、简化代码逻辑的目的。双指针算法可以大致分为三类:快慢指针、左右指针和对撞指针。
2024-08-06 21:29:13
627
原创 【算法题】无重复字符的最长子串(滑动窗口)
滑动窗口算法是一种通过在特定数据结构上移动“窗口”来执行操作的算法。它主要用于优化时间复杂度,特别是在处理数组和字符串相关问题时表现出色。滑动窗口算法的核心在于使用两个指针(左指针和右指针)来标识当前处理的数据范围,并通过移动这两个指针来调整窗口大小,同时根据具体问题的要求更新中间结果。滑动窗口算法的基本思想是通过维护一个窗口,并通过移动该窗口的两个边界(left 和 right 指针)来处理问题。当右边界扩展到符合某种条件或者到达数据结构的末尾时,再通过移动左边界来缩小窗口,并在此过程中更新所需的结果。
2024-08-05 22:37:57
774
原创 【算法题】最长回文子串(动态规划、中心扩展)
这是因为,当考虑的回文子串长度小于等于3时,我们只需比较i和j位置的字符是否相等,便可直接判定它们是否是回文子串。因此,在这种特殊情况下,初始化动态规划数组实际上是不必要的,我们可以直接根据字符比较的结果来逐步构建整个数组。该算法其实就是枚举回文子串的中心位置,然后向两边扩散,看最终能扩散多远,然后记录这个位置,在和上一次记录的进行比较,取最长的一个。其实回文子串为1的时候,我们是不需要考虑的。因为当“aba”是回文子串的时候,那么“cabac”是不是回文子串,是取决于新加入的两个字符是否相等的。
2024-07-31 17:03:00
1352
原创 【算法题】正则表达式匹配(动态规划),一文彻底搞清!
m代表字符串s的长度,n代表字符串p的长度,则sp[i][j]就代表s中以i位置为结尾的子串和p中的j位置为结尾的子串是否匹配。解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。sp[i][j] = sp[i-1][j-1]&&(s[i],p[j]) //(s[i],p[j])表示对应位置可以匹配的上。给你一个字符串s和一个字符规律p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。解释:".*" 表示可匹配零个或多个('*')任意字符('.')。
2024-07-29 22:28:05
1459
原创 【算法题】颜色分类,一文彻底搞会!
"荷兰国旗问题"是计算机科学领域中的一个经典问题,由著名计算机科学家Edsger Dijkstra首次提出。该问题模型源于荷兰国旗的三色排列:红色、白色和蓝色。具体描述如下:假设有一系列球,分别涂有红色、白色和蓝色,这些球随机分布在一条直线上。荷兰国旗问题的目标是通过一种有效的方法对这些球进行排序,使得所有红色球位于最左侧,白色球居中,而蓝色球则位于最右侧,从而模拟荷兰国旗的水平条纹排列。
2024-07-26 23:16:33
1590
原创 MySQL的逻辑架构,这一篇就够了!
MySQL是一个流行的开源关系型数据库管理系统,被广泛应用于各种Web应用程序和企业级应用系统中。为了更好地理解和使用MySQL,我们需要了解其逻辑架构。MySQL的逻辑架构整体可以分为:连接层、服务处、存储引擎层、数据存储层。它整体的逻辑架构大致如下:它更详情,更经典的逻辑架构图如下:这张逻辑架构图,可以说非常经典的一个了,相信不少同学看到这张架构图,会有种似曾相识的感觉。以下我们就结合这张经典的逻辑架构图来,针对每一层来具体的去展开去说。
2024-07-15 17:48:47
2234
原创 SpringBoot整合Dubbo的快速使用教程
Apache Dubbo是一款RPC服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang等多语言SDK实现。使用Dubbo开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用Dubbo提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。
2024-07-05 22:56:32
5017
2
原创 keepalived实现Mysql的双机热备自动故障切换,看这一篇就够了!
双热备份(也称为双机热备份)是指通过两台服务器的相互备份,在一台服务器出现故障时,另一台服务器能够自动接管业务,保证系统服务的持续性和高可用性。双热备份的核心也就是是通过两台服务器之间的实时同步和故障检测来实现高可用性。这种备份方式确保当主设备发生故障时,备用设备能迅速接管业务,从而避免服务中断。MySQL的双热备份通常是指通过主从复制机制实现两台服务器间的实时数据同步,从而确保数据的高可用性和一致性。双热备份在MySQL中主要依赖于其内置的主从复制(Replication)功能。
2024-06-21 00:21:26
3690
原创 【算法题】搜索二维矩阵,一文彻底弄会!
那么在使用二分查找的话,初始搜索的左边界就为0,右边界就为m*n-1,也就是15。我们在确定中间位置的时候又需要将一维数组的位置转成二维数组的位置,这样我们才能从二维数组中获取到对应位置的值来和目标值进行比较。那么知道这个关系后,我们就可以在不借助额外空间的情况下,完成对该二维数组的查找。也就是需要一个大小为m*n的一维数组来存储转换后的二维数组,其中,m为二维数组的行大小,n为二维数组的列大小。我们首先观察到,矩阵的每一行都是有序的,而且每一行的第一个元素大于前一行的最后一个元素。其实,我们仔细想一下。
2024-06-16 13:58:17
1219
原创 【算法题】矩阵置零,一文彻底搞懂!
导致这个问题的原因就是第一行和第一列共用了matrix[0][0],当matrix[0][0]=0的时候,我们无法得知它是标记的行还是列,还是两者都进行了标记。就比如上图矩阵,当我们遍历到[0,2]位置的时候,也就是第一行有0的位置的时候。我们用第一行第一列标记的时候,那么此时我们的操作就是matrix[0][0]=matrix[0][2] = 0。通过创建两个数组,分别记录需要置零的行和列,然后再次遍历矩阵进行置零操作,我们可以实现对原矩阵的修改。其中m是矩阵的行数,n是矩阵的列数。请使用 原地 算法。
2024-06-15 15:14:33
1949
原创 【算法题】编辑距离(动态规划),一文彻底弄懂!
那么,问题来了,我们该如何初始化第一行和第一列的数据呢? 比如,word1为abc,word2为dcdb。我们初始化第一行的时候,那就是要求出a分别转换成d、dc、dcd、dcdb时的最少操作次数。显然这样初始化是非常麻烦的,甚至是不可完成的!那么我们再假设word1为zabc,word2为zdcdb。此时我们初始化第一行的时候,则就是求z分别转换成z、zd、zdc、zdcd、zdcdb时的最少操作次数。显然这个时候就很简单了对应最少操作次数其实就是j的值。 那么,灵感
2024-06-14 23:05:44
2044
2
原创 SpringBoot整合RabbitMQ的快速使用教程
在分布式系统中,消息队列是一种重要的通信方式,它能够有效地将消息从一个应用程序传递到另一个应用程序。RabbitMQ是一款流行的开源消息队列系统,简单易用且功能强大。本文将介绍如何使用SpringBoot快速整合RabbitMQ,实现消息的发送和接收。。Fanout交换机会将接收到的所有消息广播到它知道的所有队列中。这种类型的交换机不考虑路由键,只是简单地将消息复制到所有绑定的队列中。适用于不需要选择性地发送消息给特定队列的情况,例如,广播系统通知或有多个服务需要消费同一份数据的场景。
2024-05-28 22:59:18
2256
3
原创 SpringBoot整合Kafka的快速使用教程
Kafka是一个高性能、分布式的消息发布-订阅系统,被广泛应用于大数据处理、实时日志分析等场景。Spring Boot作为目前最流行的Java开发框架之一,其简洁的配置和丰富的工具使得与Kafka的集成变得更加容易。本文将介绍如何使用Spring Boot整合Kafka,实现高效的数据处理和消息传递。
2024-05-27 23:25:50
2539
1
原创 Docker快速部署Seata的TC服务以及微服务引入Seata教程
Seata是阿里的一个开源的分布式事务解决方案,能够为分布式应用提供高性能和高可靠性的事务支持。使用Docker快速部署Seata的TC服务,可以简化部署过程并提高效率。本文将介绍如何使用Docker快速部署Seata的TC服务以及如何在微服务中引入Seata。
2024-05-17 22:39:40
1956
2
原创 AbstractRoutingDataSource实现多数据源切换以及事务中无法切换问题
为了实现数据源的动态切换,我们采用了AbstractRoutingDataSource结合AOP+反射来自定义注解。通过这种机制,我们可以在运行时根据自定义注解自动选择不同的数据源,从而实现灵活高效的数据访问策略。具体来说,我们首先创建了一个继承自AbstractRoutingDataSource的动态数据源类,该类能够管理多个数据源并根据线程上下文中的特定键值来选择使用哪一个数据源。接着,我们定义了一个自定义注解,用于标记需要切换数据源的方法或类。
2024-04-25 22:40:53
3005
11
原创 一文彻底分清缓存穿透、缓存击穿、缓存雪崩问题(含记忆技巧)
缓存穿透是指用户请求的数据在缓存中不存在即没有命中,同时在数据库中也不存在,导致用户每次请求该数据都要去数据库中查询一遍。如果有恶意攻击者不断请求系统中不存在的数据,会导致短时间大量请求落在数据库上,造成数据库压力过大,甚至导致数据库承受不住而宕机崩溃。那么,我们该怎么记忆缓存穿透呢?我们可以这么想,缓存穿透其实就是恶意攻击,就是有人想“穿”过你的防护网(缓存)来“偷”你的家(数据库),这也就是穿透。或者你这样想,有人想恶意攻击你的数据库,这是不是不好的行为,是不是小偷的行为!
2024-03-27 23:45:13
10866
23
原创 SpringBoot项目配置文件不生效问题解决
而pom类型通常用于组织和管理多个模块的项目,它本身不包含代码,只包含项目的配置信息和依赖关系。所以,它也就不会去寻找配置文件。一般我们使用pom都是在项目聚合的时候,父工程的pom文件里面使用。比如,我这个包含两个服务的RabbitMQ使用的demon。
2024-03-23 00:12:41
3662
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅