自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 大龄码农的一天

老刘被解雇了。事情来得很突然,那天早上,老刘跟往常一样,骑着一辆蓝色的共享单车,拐过几条狭窄逼仄的小区道路,再穿过一条大街就到了公司写字楼,熟悉的线路,熟悉的骑行,熟悉的环境,一切都让他感觉舒服自在。从家里到公司不足三公里,这是骑行的最佳距离,当初老刘选择这家公司的时候,通行距离是一个重要的加分项。来到办公室,尚未坐定,HR就过来找老刘。平时随和友善的HR小姐姐,今天有点不一样,表情冷峻而严肃...

2019-03-08 10:50:10 621

原创 遨游Spring AI:使用模板与大模型聊天

比如,我们想知道一个城市最好玩的几个地方,我们可以跟大模型对话,但每次都问同样的内容(只是城市名字不一样),当然就显得很啰嗦了。类似这样的场景就可以使用提示词模板。简单来讲,就是在一段文本中加入变量,在运行时进行动态替换,这样就能支持更加灵活多变的应用场景。Spring AI支持提示词模板,

2025-06-18 18:09:23 279

原创 小小里程碑

今天公众号的粉丝终于达到了3000,不多,但也算是小小的里程碑了。不容易,持续输出高质量的内容,非常不容易,甚至有点叫好不叫做的感觉,但写公众号这件事,我觉得挺有意思的,而且,公众号可能是最好的写作平台,没有之一。也欢迎大家私信我,我们一起来成长进步!

2025-06-17 20:48:28 131

原创 刚来的实习生在异常代码块里打印堆栈,技术经理看到后气得直跺脚,Spring Boot优雅地处理异常,你不会吗?

我们可以基于这个基类定义具体的异常类,比如用户未找到异常、系统繁忙异常等,此处我们不再给出具体代码,统一按照上面定义的FullStackException异常来进行处理。异常处理是程序编写中必不可少的一环,然而,如果代码中充斥着太多的try-catch,或者在异常处理时直接打印堆栈,那就有点不太优雅了。这样的代码写下来,是不是要优雅得多?在实际的项目中,你是怎么处理异常的,请在评论区留言!当然,上面的代码也做了简化,在实际的代码中,还需要定义具体的响应类,里面除了响应代码和信息,还有具体的数据。

2025-06-16 18:09:07 237

原创 AI已经渗透到生活的方方面面,但在这种场景下一定要慎用!

事情是这样,我发布的公众号文章中,有一篇获取了1.8W的阅读量,这让我兴奋不已,觉得自己的公众号可能快要“起飞”了,于是想提高更新的频率,加大写作的力度。所以,在平时的工作中,使用AI来进行高效办公、提高工作效率没有问题,但在有些场景下面,比如公众号文章,包括短视频(我认为),对于AI的使用一定要克制。于是,我动起了使用AI的“歪脑筋“,在那之后的几篇文章,我都使用AI来进行协助,效率确实高,而且出来的结果也是令人信服的,很权威。直到今天,我才顿悟,问题应该出在了”AI"上,就是文章的AI味太浓了。

2025-06-14 17:59:53 215

转载 有非常多的人吐槽:面试造航母,工作拧螺丝。为什么会有这种现象存在?

这种情况其实是存在的,很多时候,面试就跟相亲一样,如果没有眼缘,或者气质相去甚远,那么面试成功的可能就会变得很小,既然气场不合,那面试官就会想方设法打发你走,问一些高大上的问题就成了一种常用的手段,这样至少不会把气氛搞得很尴尬,最后也让候选人知难而退,而真正的原因也有面试官心知肚明了。,这个时候,如果你仅仅只会拧螺丝,对于编程的系统知识掌握不够深入,对于技术栈的学习不够全面,那么,你就会像那个工作人员一样,面对问题时束手无策,只能求助于他人了,偶尔一两次倒也不伤大雅,但长此以往,就只能被IT圈所抛弃了。

2025-06-13 15:59:50 33

原创 工作十年的码农不会写这个SQL,你要试试吗?

学校的老师教很多门课程,老师属于某个学院,且课程也属于某个学院,需要查询出所有满足以下条件的记录:老师所教的课程所属的学院与老师所属的学院不同。比如张老师是计算机学院的,他也教逻辑学,但逻辑学这门课程是属于哲学学院的,需要把这样的数据找出来。那么,这样的SQL应该怎么写呢?如果需要答案,也可以后台私信,发送消息:sql。有这样一个面试题,看起来简单,然而,竟然没多少人能够写对。

2025-06-12 08:08:47 147

转载 职场中晋升快的人,嘴上说不干背地里却偷偷干的事:1.给领导送礼;2.托关系搭人情;3.给领导献殷勤;4.努力提升自己

比如,公司有个新项目,他们不会傻等领导分配,而是提前打听消息,甚至通过熟人向领导推荐自己;那些升得快的人,往往不是最努力的,而是最懂“游戏规则”的。很多人一听“送礼”就觉得是巴结领导,但真正会来事的人,从不把送礼搞得那么功利。在职场混久了,才发现,人和人之间的距离,永远比你想象得更远,也更复杂。有些人总说“我从不靠关系”,但现实是,职场里80%的机会都是靠人脉推动的。直到后来发现,公司里升得最快的,往往不是技术最强的,而是最懂“规则”的。职场里,领导提拔的往往不是能力最强的,而是让他觉得最“省心”的人。

2025-06-11 15:38:44 49

转载 大环境之下,中年失业或辞职,其实是件好事

我们,当中年人觉得自己的“性价比”在传统雇佣市场上不再占优时,不妨跳出固有的“打工人”思维,尝试重塑自己的价值网络。提出,指的是任何组织或个人,在第一曲线到达巅峰之前,就应该开始寻找和建立第二条增长曲线,以实现可持续发展,K。促成商业合作,你的视野可以帮助年轻人少走弯路,甚至你的闲置资金,在看准方向后也能成为撬动新机会的杠杆。这样的转换,既能让你进入一个更有发展前景的新领域,又能最大限度地保留和发挥你过去的专业积累,这里的“损”,指的是因不切实际的期望和盲目行动所带来的时间、精力、的“职业第二曲线”。

2025-06-11 11:15:48 28

原创 中年码农失业,背了很多八股文,自信满满地出去面试,没想到竟然栽在了自认为最熟悉的MySQL上

串行化是最高的事务隔离级别,它强制事务按照顺序执行,从而可以避免前面提到的幻读问题,但它会在读取的每一行数据上都加锁,或者每次读取都在一个单独的事务中,总之,这种隔离级别会产生大量的加锁情况,效率很低,实际开发中也较少采用。先设置事务的隔离级别,事务一更新表中的唯一记录,并且确认更新成功,但事务还没有提交,也就是没有COMMIT,然后,执行事务二的SQL,但发现它已经可以读取事务一更新后的数据了。当然,事务二的结果与读已提交的部分不一样,它两次读取id=1的数据,结果都是John,也就是更新后的数据。

2025-06-11 10:57:57 712

原创 同事第一次当面试官,他说,等我先去网上搜一下Redis集群的题目,下午再去问问那个来面试的人

哈希槽(slot)是用于数据分片的核心机制,它的目的是将数据均匀分布到多个节点上,同时支持集群的动态扩缩容。两个端口,一个是用来与客户端交互的数据端口,比如常见的6379,一个是用于节点间通信的端口,默认在数据端口的基础上加10000,比如16379。一些常见的Redis集群面试题,看起来简单,但要真正掌握,或者说在面试的时候能够应对自如,也不是一件很容易的事情。不是,它采用异步复制的方式,先向客户端回复确认,再把数据同步到从节点,这个过程中,数据有可能会丢失。Redis集群中的节点有几个端口?

2025-06-10 11:15:21 302

原创 遨游Spring AI:连接多个模型(实战)

我们在本地部署了两个大模型,对应的就有两个Service的实现类,一个用于连接DeepSeek,一个用于Qwen。现在大模型层出不穷,版本也在不断的迭代,它们在各有优劣,在自己擅长的领域各显神通。ChatResponse,它里面还包含更多的元数据信息,包括token的数量等等,感兴趣的朋友可以debug进去看看详细信息。1. 使用不同的模型处理不同的任务(比如使用强悍的模型来进行推理,但对于简单的任务就使用一个更快、更便宜的大模型);另外,Spring AI调用大模型的接口,返回的结果为。

2025-06-09 18:08:50 695

原创 遨游Spring AI:第一盘菜Hello World

这是Spring Boot程序,当然还需要对应的启动类,这个很简单,此处不再给出,如果需要完整的源代码,或者搭建过程中遇到什么问题,也欢迎后台私信进行讨论。初步想一想,应用程序能够与后台的大模型实时交互与对话,未来的想象空间确实比较大,让原本规规矩矩的程序变得十分强大,一些传统的功能经过大模型的智能运算处理,会厉害很多倍。而且,当前这个程序只是基于本地的参数不多的模型,如果接入功能更为丰富、时效性更强的大模型,会智能得多。没问题,大模型返回了相应的消息,这样,第一盘菜Hello World算是搭建成功了。

2025-06-06 18:09:35 1005

转载 遨游Spring AI:核心的AI概念解读

通过计算向量之间的数字距离,可以判断它们的相似程度。本文主要介绍了AI相关的一些核心概念,包括模型、提示词、嵌入、令牌等,理解它们对于掌握Spring AI非常重要,另外,这些概念的含义也是通用,对于人工智能行业的理解也是必须的。AI 嵌入是将复杂、非结构化的数据(如文字、图片、音频、视频等)转换成计算机能够理解和处理的、富含语义信息的数字表示形式(即一组数值,通常是一个高维向量)的过程及其结果。AI模型的输出一般是字符串的形式,哪怕你要求以JSON格式返回,即使它是正确的JSON,但并不是JSON结构。

2025-06-04 18:08:35 27

原创 遨游Spring AI:正式版终于发布了!

Mark Pollack在他的Spring官网博客中宣布了这一消息,看介绍,这个人很厉害,他参与了很多Spring的项目,甚至可以追溯到2003的Spring核心框架,他也是Spring Data和Spring .NET项目的创始人。现在已经进入了AI时代,对于Java程序员来讲,Spring是无论如何也绕不开的技术,而现在Spring家族又正式推出了Spring AI,实在是值得我们关注的事情。Spring AI让应用程序集成AI变得容易,通过流水线式的开发去掉不必要的复杂性。

2025-06-03 18:08:14 224

转载 攀登Kafka这座高山:到底什么是事件流

这里的“事件”可以理解为系统中发生的任何有意义的状态变化或动作,例如用户点击按钮、传感器数据更新、订单创建、日志记录等。这些事件被抽象为带有时间戳、键(Key)和值(Value)的数据单元,通过 Kafka 实现高效、可靠的传输、存储和处理。理解事件流的关键在于把握其“连续性、实时性、不可变性”特征,以及 Kafka 如何通过分区、副本、消费者组等机制保障可靠性、扩展性和容错能力。打开Kafka的官网,映入眼帘的第一句话就是:Kafka是一个分布式的流处理平台,那么,到底什么是事件流?

2025-05-27 18:08:30 42

原创 我似乎找到了“流量密码”

另外,这个系列文章层层递进,从Redis的安装开始介绍,接下来是数据类型、持久化,然后是各种部署模式,以及工作中及面试中常见的数据一致性、为什么那么快、分布式锁等,可以说涵盖了Redis主要的重点内容;通过这个系列文章,也大大增强了我的自信,我相信自己是能够写好这种技术文章的,也相信公众号是一个很好的交流平台。收到了非常良好的反馈,

2025-05-25 18:08:23 221

转载 美团二面:多线程顺序打印ABC字符20次

同时,题目不光要求按顺序打印出ABC,而且还要打印20次,也就是这样的形式:ABCABCABC...,当然,打印30次或者100次什么的,代码基本上一样,修改一下循环的次数即可。为了按顺序打印ABC,我们控制线程B必须在线程A执行之后再开始执行,线程C类似,所以我们定义三个信号量,初始的许可证数量都是0,因为数量都是0,所以调用信号量的acquire方法时会被阻塞,如果前面的线程执行完成,把许可证数量加1,后面的线程就可以执行了,这样,就实现了顺序打印的功能。一、打印字符ABC,但无序。

2025-05-24 18:08:55 54

转载 攀登Kafka这座高山:安装Kafka

这样,kafka就启动了,是不是很简单。我们安装的版本是3.8.1,属于较新的一个版本,它可以不依赖zookeeper,不过需要修改配置,我们还是基于zookeeper的场景吧。Kafka的安装并不复杂,把对应的二进制版本下载到本地,解压,启动即可,安装完成后,我们使用命令行来发送、消费消息,以确认安装成功。接下来创建一个topic,并且打开两个tab,一个用于发送消息,一个用于消费消息,都通过命令行来实现。2. 切换到kafka的安装目录(可以看到在消费端监听到了消息。

2025-05-23 18:08:48 50

转载 领导说:不会安装Docker的程序员,不是一个好运维

Docker的重要性无需多言,不管怎么样,我们先把它安装起来再说。高级软件工程师写出这样的代码,我怀疑他只有初级的水平,甚至业余。6. 验证安装,查看Docker版本和Docker的详细信息。道阻且长,行则将至。

2025-05-22 18:08:28 46

原创 架构师怒了,Nginx的这个特性你都不知道,你还怀疑是bug!工作五年的程序员只好委屈地低下了头

Nginx作为一款高性能的HTTP和反向代理服务器,现在几乎成了软件开发中的必备技能,特别是在java web应用程序中,基本上变成了标准配置,它经常用来作为反向代理,以提升系统的吞吐量和可用性。Nginx其他的配置项没有改变,然而,奇怪的事情发生了,当我们继续用Postman来测试的时候(请求内容跟上次一样,没有任何改变),发现后端接口没有收到。这次是在header里面加了一下参数,我们看看这时后端的接口是什么情况,使用debug模式,并且打上断点,我们可以看到,请求头中的参数。神奇的是,请求头中的。

2025-05-21 18:08:17 220

原创 攀登Kafka这座高山:为什么要学Kafka

它在高并发、大数据量、实时性要求高的场景下无可替代,是成为高级后端工程师、数据工程师或架构师的必经之路。虽然现在互联网上的知识满天飞,各种碎片化的材料扑面而来,但都很难成体系,盲人摸象,只知其一,在实际工作或者面试的时候,就显得捉襟见肘了。这个就很有说服力了,这么多大公司都在用它,肯定有它的过人之处,而且掌握了Kafka,是不是进入这样的大企业的机会就更多了?按照官网的说法,世界100强企业当中,超过80%的企业都在使用Kafka。,阅读量接近1w,对于技术性文章来说,这个阅读量非常不错了。

2025-05-20 18:08:35 667

原创 Redis集群碎碎念:指令重定向

客户端临时重定向:客户端向节点C发送 ASKING 命令,再执行 GET key1,但不更新本地槽映射(因为槽5000仍由节点B负责,直到迁移完成)。在Redis 集群中,如果客户端请求的key所属的哈希槽不在当前节点时,节点会向客户端返回一个重定向错误,指引客户端转向正确的节点。当客户端请求的键所属的哈希槽正在迁移过程中(部分数据在旧节点,部分在新节点),旧节点返回 ASK 错误。1. 槽迁移中:槽5000正从节点B迁移到节点C,key1 已迁移到节点C,但节点B的元数据未更新。1. MOVED重定向。

2025-05-19 18:09:00 282

转载 新来的技术总监为了立威,把代码中的if-else用设计模式重构了一遍

上面我们以电商促销为例讲解了策略模式,但它不仅仅适用于数学计算这一类的场景,只要在不同的场景下有不同的处理,都可以考虑使用策略模式,比如不同的文件类型上传到不同的服务器,不同的食材有不同的加工方法等等。当然,策略模式也不是完美无缺的,它既有优点,也有不足的地方,从上面的代码明显可以看出来,客户端必须要知道各个策略类之间的差异以便选择合适的那个进行调用。按照我们的规则,有四种促销策略,所以相应的定义了四个策略类,在每个具体的策略类中实现对应的算法逻辑,由于它们都实现了同一个接口,所以它们是可以相互替换的。

2025-05-18 18:08:18 32

原创 创新高了!

其实不然,虽然说现在公众号文章的打开率比较低,读者也不像几年前那样的热情高涨,但我感觉最近公众号的热度在慢慢地回归,公众号平台也做了很多的优化和调整。正常情况下,公众号标了原创的文章,平台会进行更多地推荐,相应地,阅读量会高一些,但这篇文章当时却阴差阳错地忘记标注原创了,竟然还获得了这么多的推荐,也真是有点搞不懂了。所以,我感觉,只要持续输出,正心诚意地对待每一篇文章,我想,是能够获得一个不错的结果的。也许,有人会说,现在是短视频时代,公众号文章已经没有人看了,时代的红利已经消失。技术都存在于细节当中。

2025-05-17 18:08:15 182

原创 掌握这个技巧,项目经理再也不用担心服务器的CPU使用率突然飙升了

可知,线程id为1938的占用最高。上面的运行结果是792,也就是说,1938的十六进制为792,需要记住这个值。注意,上面jstack命令中的1937表示进程id,而最后一个参数792表示线程id对应的十六进制数。2. 继续使用top命令找到该进程中的线程,把cpu占用最高的线程id记下来;这样,就能比较方便地定位到问题了,上面的提示信息指向了类的第7行代码。1. 使用top命令找到cpu占用最高的进程id,把id记下来;高级软件工程师写出这样的代码,我怀疑他只有初级的水平,甚至业余。

2025-05-16 18:10:01 331

原创 面试官说:你都不了解Redis集群的失效状态,简历上还写精通Redis?

当一个节点(如节点A)在配置的 cluster-node-timeout 时间内(默认15秒)未收到另一个节点(如节点B)的响应(如心跳包PONG),节点A会单方面将节点B标记为 PFAIL。集群中至少 N/2 + 1个主节点(N为集群主节点总数)在各自的本地视角中将节点B标记为 PFAIL,比如集群中有5个节点,至少要有3个确认节点B为PFAIL。当集群中多数主节点(超过半数)确认某个节点(如节点B)处于 PFAIL 状态时,该节点会被标记为 FAIL。:其他主节点(如C、D)收到节点B的。

2025-05-15 18:08:23 324

原创 概念、代码、演示:三位一体解读Spring Boot如何解决跨域问题

不论是面试还是实际的开发工作,跨域都是一个需要重视的问题,而Spring Boot也提供了解决跨域的解决方法,本文通过一个相对完整的案例来展示跨域的来龙去脉,希望有所帮助。不过关于跨域的文章和介绍,要么流于概念的讲解,要么只给出Spring Boot的代码,这样感觉不够全面,印象也不够深刻。前后端分离现已成为web开发中的常态,当前端向后端发送请求的时候,经常会遇到跨域的问题,因为前端和后端经常位于不同的服务器上面。,不光有后端代码,也有前端的vue代码,这样就更完整,希望能够让你过目不忘。

2025-05-14 18:08:24 789

转载 高级软件工程师写出这样的代码,我怀疑他只有初级的水平,甚至业余

之前在代码review的时候,看到一位Java高级开发工程师写的代码,让我印象深刻,他尝试使用关键字synchronized来加锁,从而保证多线程访问的安全性,但他的做法让人大跌眼镜,因为这样做根本就无法成功加锁。所以说synchronized根本锁不住局部变量,写代码的时候需要小心,以免犯这样的错误,当然,有时候不小心可能容易忽略这样的问题,它的确有一定的迷惑性。上面的结果比较乱,并没有逐个执行线程的任务。除了通过代码的结果来进行验证,我们debug一下看看程序的运行情况,这样会对程序有更深入的了解。

2025-05-12 18:08:18 189

原创 那些奇奇怪怪却又妙趣横生的Java知识

既不是102,也是100,而是2。这个地方确实有点考眼力,i=+ 2这个算式里面,等号=后面的+不是运算符,而正负符号,如果把它改成负号-,那么输出的结果就变成了-2。而new的方式则是创建了一个新的对象,直接比较它们的引用,返回的结果当然就是false了。上面的代码竟然输出true和false,一个为真,一个为假,也是够奇怪的,比较的方法完全一样,只是数值稍有差异,而且差得也不多,怎么结果就不一样了呢?又是考眼力的时候,像下面的代码,你乍一看,以为代码被注释了,程序不会输出任何结果,但事实是这样吗?

2025-05-10 18:08:38 298

原创 分布式事务:使用RocketMQ来实现

如果本地事务执行成功,则发送“提交”,half消息就变成了消费端可以接收的正式消息,否则,发送“回滚”,half消息就被删除,从而不会触发后续的数据库事务(比如扣减库存)。首先引入依赖,如果需要详细的代码部分,也可以与我私信。比如用户在商城下单,就需要在订单服务中创建一个订单,同时在库存服务中扣减库存,而订单服务和库存服务往往连接的是不同的数据库,这就涉及到分布式事务了。由于各个微服务操作的数据可能位于不同的数据库或者不同的机器上面,而这些操作要么全部成功,要么全部失败,所以就需要使用分布事务来进行处理。

2025-05-09 18:08:38 458

原创 Redis集群碎碎念:哈希槽的闪转腾挪

迁移的原理,说白了就是迁移一堆的key。所以Redis集群的再分片,就是把keys从这个实例转移到另外一个实例,而迁移一个哈希槽,就意味着把这个槽里面所有的keys迁移到另外一个槽。紧随migrate命令的是目标节点ip和端口,接下来的参数是key的名称,0表示数据库编号,默认是0,5000表示超时时间。866为槽位编号,参数3表示要获取3个key,这个槽里面只有一个key:hello,所以就只返回一行记录。命令中的866表示要迁移的槽位编号,最后一个参数为目标节点的node id。

2025-05-08 18:08:46 392

原创 Java多线程编程之Semaphore

信号量还提供了两种模式:公平模式和非公平模式。公平模式按照线程请求的顺序来分配许可证,而非公平模式可能会“抢占”许可证,优先级不一定按照请求的顺序来决定,它是默认的模式。,在多线程场景中,它用于协调各个线程,以保证它们能够合理、正确的使用公共资源,其核心机制是通过维护一组许可(permits)来限制同时访问资源的线程数量。可以看到,初始化信号量的时候,我们颁发了两个许可证,在多线程运行的时候,最多只有两个线程能够在执行任务。获取一个许可(若无可用的许可,则阻塞直到有许可释放)。有任何问题,也欢迎留言讨论。

2025-05-07 18:08:42 432

原创 Java多线程编程之CyclicBarrier

CyclicBarrier是一个强大的辅助工具类,比较适合于多个线程分头执行任务,最后把线程执行结果进行汇总的场景,比如对数据进行汇总计算、并行分片计算等。在上面的示例中,创建了一个CyclicBarrier对象,它需要等待三个线程到达屏障点,当所有线程都到达屏障点以后,会调用回调函数,打印相应的消息。CyclicBarrier是Java中的一个同步工具类,它让多个线程在屏障处等待,直到所有线程达到该屏障处以后,再继续执行后续任务。接下来,我们再用一个更接近实际场景的例子来进一步说明:数组求和。

2025-05-06 18:08:24 218

原创 Java多线程编程之CountDownLatch

从它的名字可以看出来,它使用倒计时的方法来工作。这个计数器的初始值是一个正数,每当一个线程完成操作,计数器就减一,当计数器为零时,被阻塞或者说等待的线程就可以继续执行。它适用于很多场景,我们以收集福卡的程序为例来进行说明(模拟这个过程)。在过年期间,很多公司都会进行一个收集福卡的抽奖活动,只要集齐满足要求的福卡,那么就可以参与抽奖。在Java多线程编程中,有一些工具类提供了强大的功能,可以满足很多日常开发的需要。MySQL死锁的重现:超越纸上谈兵。

2025-05-05 18:08:42 138

原创 我好像发现了MySQL的一个Bug

不过要额外增加一个关键字,增加了工作量,更为重要的是,很多公司都使用了ORM,或者自研了类似ORM的框架,只要写一套代码,底层可以自动适配不同的数据库,所以增加这个额外的关键字,导致增加了很多匹配的工作,特别是对于现有代码的改造升级。在一些要求比较高的场景,比如文本匹配和处理等,这就不满足条件了啊,而且,无论后面有多少个空格,都会被无视。在日常开发中,我似乎无意发现了MySQL的一个Bug,有没有相应的技术专家来答疑解惑一下。不只是SQL查询,包括GROUP BY这样的关键字,都直接忽略了最后的空格。

2025-05-03 18:09:00 285

原创 MySQL死锁的重现:超越纸上谈兵

另外,通过这样的方法,我们在编写或者调试代码的时候就更为便利。因为有时候在运行环境中,死锁的产生可能不那么容易,但某些代码又可能会产生这样的异常,相应的Java异常处理方法就不太容易调试。然而,用实例来说明死锁的文章又不多见,所以今天我们用一个实例来展示一下死锁的情况,这样就能更好、更直观、更有效的说明问题。通过以上方法,就可以模拟出MySQL死锁的情况,可以直观地感受到MySQL中死锁的产生。或者举例说明:事务A锁定资源X,然后尝试锁定资源Y,同时事务B锁定资源Y,然后尝试锁定资源X,这样就产生了死锁。

2025-05-02 18:08:17 227

原创 MySQL高频面试题:什么情况会导致索引失效

而在索引相关的问题中,关于索引失效的场景也是常常问起的问题,同时也是日常开发中的必须要注意的方面。如果索引设计得当,但使用得不合理,最后还是进行了全表扫描,那就有点可惜了。我们知道,在测试表中,first_name的数据类型为字符,如果查询条件为整型,那么索引也会不起作用。在索引上使用函数也会导致它失效,包括字符串函数、数学函数等,比如,我们想查询名字中第二个字符为【i】的数据,SQL和执行计划结果如下。显而易见,百分号%是通配符,可以匹配零个或者多个的任意字符,如果模糊查询时以%开头,当然就不走索引了。

2025-05-01 18:08:53 829

原创 Redis集群碎碎念:数据也能“跳槽”

以上就是Redis集群中hash槽的迁移过程和方法,它可以自动处理数据的迁移,还有一种方法是手动地处理数据的迁移,需要用到setslot、getkeyinslot、migrate等命令,相对比较复杂,本文暂时不再给出对应的操作方法。我们知道,Redis集群有16384个槽位,key都是分配在这些槽位中的,出于性能或者其它方面的考虑,我们可能需要把这些key进行迁移,从这个槽跳到另外一个槽。Redis集群碎碎念:必知必会的知识点。Redis集群碎碎念:集群总线是个啥?Redis集群碎碎念:冷僻但重要的纪元。

2025-04-30 18:09:06 169

原创 Redis集群碎碎念:参数配置

比如mater A有两个从节点A1和A2,如果master B已经没有从节点了,需要把A1迁移作为B的从节点,这时候是可以的,但如果master A只有一个从节点A1,那么就不能迁移;打个比方,如果它设置为5000,那么,如果该节点超过5秒还没有响应,那么就认为这个节点已经失效,当然,这个例子的表述不太严谨,主要是为了能够更直白的理解它的意思吧。它的含义是,如果有一些key还没有分配到集群中的任何节点,那么集群就会停止写操作,如果参数设置为no,只要有key可以处理,那么集群还可以处理查询请求;

2025-04-29 18:08:44 369

空空如也

空空如也

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

TA关注的人

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