自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Redis】Redis 集群中节点之间如何通信?

Redis集群中节点间通信是指Redis集群中的各个节点通过一定的协议和机制相互传递信息,以实现集群的协调、数据同步、故障检测等功能。在分布式系统中,不同的节点进行数据/信息共享是一个基本的需求。一种比较简单粗暴的方法就是集中式发散消息,简单来说就是一个主节点同时共享最新信息给其他所有节点,比较适合中心化系统。这种方法的缺陷也很明显,节点多的时候不光同步消息的效率低,还太依赖与中心节点,存在单点风险问题。1、相比于其他分布式协议/算法来说,Gossip 协议理解起来非常简单。

2025-01-16 15:48:58 915

原创 【AIGC】文档知识库落地中的那些事

在构建本地知识库问答系统的时候,第一步要对本地的知识文档进行处理,因为希望更傻瓜式的去使用它,因此不太希望有人力参与对文档进行处理,比如分段、摘要等等。但如果不做任何处理,直接使用文档喂给大模型肯定是会超出tokeni限制。因此第一步会将文档的知识转成向量存储到向量数据库中,在进行知识问答的时候,先将问题在向量数据库中进行匹配,将匹配到的结果提供给LLM让其针对结果进行整理和回答。

2025-01-14 15:40:24 1002 1

原创 【编码心得】当名码农的自我修养

1、Google 》必应 》百度2、关键词空格分割。如果搜索出来的不满意,重新更换/删减关键词或者调整关键词的顺序。3、利用好图片搜索,好的图片往往都会带着优质的作者或者博文推荐。程序员的自我修养是一个全面的过程,需要不断提升技术能力、职业素养、心理调适能力和团队合作能力。通过持续学习、积极沟通、保持积极心态和勇于承担责任,祝愿大家都能成为一名合格的码农,哈哈~~我是杰叔叔,一名沪漂的码农,下期再会!

2024-12-09 10:50:03 698

原创 【实战场景】PageHelper分页插件,total总数不一致问题

我代码里面通过mapper查询出来的List结果集,和我返回给前端的List结果集是两个不同的,按照PageHelper分页的原理,它缓存的是第一次SQL查询的结果集,而如果后面对第一次查出的结果集有二次处理,那么PageHelper就无法获取到实际的total数量。直接返回mapper查询出来的list对象,用pageInfo对象直接包裹,如果有后续的业务逻辑的处理,可以foreach这个list对象,逐条处理即可,既然问题找到了,那就是要如何解决啦?至此,这个问题就已经完美修复了。

2024-12-03 10:43:13 732

原创 【系统设计】短链系统设计的那些小心思

短链系统是指将一个较长的URL地址,通过特定的算法生成一个较短的、具备唯一性的URL地址。简而言之,将原本冗长的网址缩短成一个简短的、易于传播和记忆的网址。

2024-12-02 16:59:31 1163

原创 【超频单词】梁焕臻《超频语境》3153个超频词~~(速背版2.0版本)

有同学反馈1.0版本的单词排版有些杂乱,不方便速背,那我必须得重新排版一波!

2024-11-20 17:18:26 424

原创 【Arthas】Arthas的生产排障思路

Arthas是一款由阿里巴巴开源的Java线上诊断工具,它专为开发、测试人员以及运维人员设计,用于解决Java应用在线上运行时可能出现的问题。

2024-11-12 16:21:13 1052 1

原创 【读书笔记】“感受”和“事实”的区别

读书笔记:对于“感受”和“事实”的一些小感悟,想跟大家唠唠。

2024-11-10 22:23:12 581

原创 【实战场景】java.util.LinkedHashMap cannot be cast to XXXX 问题

mybatisPlus的注解@TableField种指定的typeHandler如果使用 JacksonTypeHandler的话,会默认将数据库json字段映射成List,然后List中便是 LinkedHashMap, 《在使用mybatisPlus读取mysql的表的一个json字段,然后这个json对应的是java list 【List】,转化的时候抛了这个异常!由具体的子类提供List集合泛型类型。》真的是遭重呀~~~~

2024-10-23 17:11:05 669

原创 【实战场景】服务部署之双活的那些思考

好了,总结一下这篇文章的重点。1、一个好的软件架构,应该遵循高性能、高可用、易扩展 3 大原则,其中「高可用」在系统规模变得越来越大时,变得尤为重要2、系统发生故障并不可怕,能以「最快」的速度恢复,才是高可用追求的目标,异地多活是实现高可用的有效手段3、提升高可用的核心是「冗余」,备份、主从副本、同城灾备、同城双活、两地三中心、异地双活,异地多活都是在做冗余4、同城灾备分为「冷备」和「热备」,冷备只备份数据,不提供服务,热备实时同步数据,并做好随时切换的准备。

2024-10-23 16:46:07 1346

原创 【实战场景】“java.lang.UnsatisfiedLinkError: Native Library xxx.dll already loaded in another classloader“

如果你的应用程序中使用了自定义类加载器,并且这些自定义类加载器试图加载相同的DLL,那么考虑移除或重构这些自定义类加载器。确保只有一个类加载器负责加载包含JNI的类。如果你的应用程序中使用了多个类加载器,考虑创建一个自定义的类加载器来加载包含JNI调用的类。这个自定义类加载器应该尽可能与加载DLL的类加载器保持一致。确保自定义类加载器的父委托模型不会导致DLL被不同的类加载器重复加载。

2024-10-10 17:00:43 1441

原创 【超频单词】梁焕臻《超频语境》3153个超频词~~(速背版1.0版本)

【超频单词】梁焕臻《超频语境》3153个超频词~~(速背版1.0版本)高频词汇是指在英语中使用频率最高的词汇,这些词汇在日常交流、阅读、写作中频繁出现。梁焕臻通过对大量英语语料库的分析,结合英语的实际应用情况,筛选出了3153个高频词汇。《超频语境》将英语词汇按照使用频率从高到低分为五级,每一级的词汇数量不同。第一级词汇:这一级包含了英语中使用频率最高的词汇,通常是日常生活中最为常见和基础的词汇。这些词汇构成了英语学习者词汇量的基础,掌握它们对于理解和运用英语至关重要。第

2024-09-04 10:46:41 5909 1

原创 【UML建模】时序图的那点事

时序图(Sequence Diagram)是统一建模语言(UML)中的一种交互图,用于描述系统中对象之间交互的顺序和过程。它通过显示对象之间的消息传递(包括发送的消息、接收消息的顺序以及消息的内容)来展示对象间的动态行为。时序图主要用于系统设计阶段,帮助开发者理解和设计系统内部组件间的交互逻辑,是软件工程中重要的建模工具之一。总的来说,时序图可以看做是对活动图中交互明细的补充,细节更加丰富,能够指导开发同学进行开放工作。时序图通过图形化的方式清晰地描述了系统中对象之间消息传递的顺序和过程。

2024-09-02 18:56:21 1228

原创 【实战场景】敏感词过滤如何实现?

首先,需要一个包含所有需要过滤的敏感词的列表或数据库。这个列表可以手动创建,也可以从现有的资源中导入。敏感词库应该定期更新以反映新的敏感词汇。

2024-08-30 14:34:41 1921 2

原创 【Spring】Spring循环依赖的解决方案

【Spring】Spring循环依赖的解决方案开篇词:干货篇:1.@PostConstruct方法:2.构造函数注入和Setter方法注入:3.配置文件注明【允许存在循环引用】4.@Lazy2.SpringUtil的getBean我是杰叔叔,一名沪漂的码农,下期再会!开篇词:本篇不介绍循环依赖的简介和原理(想了解,自行百度哈),纯分享下解决方案。ps:解决方案的优雅程度依次递增干货篇:1.@PostConstruct方法:@PostConstruct方法需要在Bean初始化后手动进行依赖注入

2024-08-27 14:24:10 512

原创 【读书笔记】亲密关系

亲密关系》是一部全面而深入地探讨人类亲密关系的经典著作,它为我们提供了丰富的理论知识和实践指导,帮助我们更好地理解和处理亲密关系中的各种问题。

2024-08-27 11:49:26 564

原创 【实战场景】如何优雅实现分页

每次实现分页还要初始化page,不够优雅,通过aop自定义注解,来简化这行代码定义一个注解before中初始化page引用注解,并且返回值用PageInfo接收【PageInfo是PageHelper用来填充total这些值的对象】在调用startPage方法之后,紧接着调用你的查询方法(通常是Mapper接口中的方法)。PageHelper会自动在生成的SQL语句后添加LIMIT子句来实现分页。

2024-08-20 19:43:25 919

原创 【Spring】为什么不建议使用@Autowired

Spring官方不推荐使用@Autowired进行字段注入的主要原因是它违反了封装原则、导致依赖关系不明确、难以进行单元测试、可能导致空指针异常以及存在依赖注入的歧义性。为了编写更加健壮、易于理解和维护的代码,建议采用构造器注入或Setter方法注入作为依赖注入的替代方案。

2024-08-20 19:06:50 1276

原创 【Mybatis-plus】Mybatis-plus的踩坑日记之速查版

MyBatis-Plus 是 MyBatis 的增强工具,通过提供丰富的功能和简洁的 API,极大地简化了数据库操作,提高了开发效率。它特别适合快速开发、简化 CRUD 操作等场景。然而,对于复杂的业务逻辑和查询,可能还需要结合 MyBatis 的 XML 方式进行自定义 SQL 编写。虽好用,勿贪杯哦~~

2024-08-19 16:18:01 1318

原创 【实战场景】SpringBoot整合Swagger快速实现

Swagger是一个包含多种工具和库的开源项目,用于支持RESTful API的设计、开发、文档化和测试。Swagger通过Swagger Specification(现为OpenAPI Specification)定义了一套标准化的API描述格式,使得API的文档和描述具有一致性和可重用性。

2024-08-09 15:34:42 2005 1

原创 【编码心得】单元测试的那些事

单元测试是指对软件中的最小可测试单元(如函数、方法、类等)进行隔离测试的过程。这些单元在测试过程中被单独运行,以确保它们的行为符合预期。单元测试是软件开发中最低级别的测试活动,旨在发现模块内部存在的各种错误。在做单元测试时,为了隔离外部依赖,确保这些依赖不影响验证逻辑,我们经常会用到 Fake、Stub 与 Mock。1. Fakes(伪对象)Fakes是那些包含了生产环境下具体实现的简化版本的对象。它们不是完整的生产实现,但会采取一些捷径,拥有生产代码的简化版本。

2024-08-02 11:35:04 1652 2

原创 【编码心得】CompletableFuture的使用心得

实际项目中,一个接口可能需要同时获取多种不同来源的数据,然后再做处理返回。如果是串行(按顺序依次执行每个任务)执行的话,接口的响应速度会非常慢。但通过并行执行多个任务的方式,接口的响应速度会得到大幅优化。这篇文章是 CompletableFuture 的简单使用心得,废话不多说,开始上干货~

2024-07-22 10:01:04 1004

原创 【入门基础】java泛型和通配符详解

Java泛型(Generics)是JDK 5中引入的一个新特性,它提供了编译时类型安全检测机制,允许程序员在编译时检测到非法的类型。泛型的主要目的是在编译期间对类型进行检查,使得类型错误能在编译时而不是运行时被捕获,从而提高程序的稳定性和安全性。同时,它也消除了类型转换的代码,使得代码更加简洁和易于维护。需要注意的是,上述非主流用法并非推荐的做法,它们可能增加代码的复杂性和出错的风险。在大多数情况下,应优先考虑使用泛型和通配符的主流用法来编写清晰、简洁、易于维护的代码。

2024-07-19 16:06:05 1026

原创 【Mybatis】Mybatis还能这么玩?整的我一脸懵逼。。。

首先这样的写法就不符合绝大部分程序员的认知。谁能想到mapper.xml 里面居然还埋在一坨业务逻辑呢?知道就好,生产别这么干!谨记!!!

2024-07-18 16:00:58 933

原创 【编码心得】好用的java Utils 推荐,避免重复造轮子~

在Java开发中,存在许多好用的Utils(工具类)库和工具类,它们提供了丰富的功能来帮助开发者简化代码、提高开发效率,今天我决定把一些压箱底的小工具,分享给大家,希望对你有所帮助。以上推荐的Java Utils库和工具类,都是在实际开发中广泛使用且受到好评的。它们各自有不同的特点和优势,各位自行取用吧,今天就聊这么多,88~~我是杰叔叔,一名沪漂的码农,下期再会!

2024-07-17 11:23:19 997

原创 【读书笔记】口才三绝

赞美是人际关系的润滑剂,能够迅速拉近人与人之间的距离,增强彼此之间的好感。赞美要真诚、具体、有针对性,避免空洞无物的泛泛之词。同时,要注意场合和对象,避免过度或不当的赞美引起反感。在日常生活中,多观察他人的优点和长处,及时给予真诚的赞美,以此增进友谊和信任。《口才三绝》是一本值得一读再读的书籍。它不仅为我们提供了实用的口才技巧和方法,还让我们深刻认识到口才在人际交往和职场发展中的重要性。希望更多的人能够阅读此书,从中受益并不断提升自己的口才能力。

2024-07-16 10:04:20 671

原创 【实战场景】MongoDB迁移的那些事

在数据驱动的时代,MongoDB作为非关系型数据库的佼佼者,以其灵活的文档模型、高可用性和可扩展性,赢得了众多企业和开发者的青睐。然而,随着业务的不断发展和技术栈的迭代更新,MongoDB数据库的迁移成为了许多团队面临的重要任务。无论是出于性能优化、架构升级还是云环境迁移的需求,MongoDB的数据迁移都是一个复杂而关键的过程,它直接关系到数据的完整性、服务的连续性和用户体验的流畅性。一、为什么需要MongoDB迁移?二、MongoDB迁移的挑战尽管MongoDB提供了强大的功能和灵活的迁移方案,但在实际

2024-07-15 17:33:26 3002 2

原创 【实战场景】java定时任务的方案有哪些?

选择哪种方式实现定时任务,取决于你的具体需求和环境。如果你正在开发一个简单的Java应用,不需要Spring框架,ScheduledExecutorService可能是最好的选择。如果你正在使用Spring框架,那么@Scheduled注解将是你的首选。Timer和TimerTask虽然简单易用,但在并发和异常处理方面表现较差,通常不推荐在生产环境中使用。

2024-07-11 15:24:25 1253

原创 【实战场景】@Transactional中使用for update的注意点

通过注意这些方面,你可以更有效地在Spring应用中使用@Transactional和SQL查询中的FOR UPDATE子句,从而确保数据的一致性和应用的性能。

2024-07-10 18:56:40 1215

原创 【实战场景】大文件解析入库的方案有哪些?

需求分析明确数据源:了解大文件的来源、格式(如CSV、JSON、XML、二进制等)和大小。确定目标数据库:选择适合存储数据的数据库系统(如关系型数据库MySQL、PostgreSQL,或非关系型数据库MongoDB、Cassandra等)。性能要求:根据业务需求确定解析和入库的性能指标,如时间限制、吞吐量等。借鉴【干货篇】中的方案错误处理和日志记录异常捕获:在解析和入库过程中,实现异常捕获机制,以便在出现错误时能够及时处理并记录。

2024-07-09 20:10:18 1076

原创 【技术选型】MySQL、Oracle、Postgresql如何选择

如果您的项目规模较小,预算有限,且对数据库功能的需求不是特别复杂,那么MySQL可能是一个不错的选择。如果您的项目规模较大,对数据库性能、稳定性和安全性有较高要求,且预算充足,那么可以考虑使用Oracle。如果您希望在开源数据库的基础上享受丰富的功能和灵活的定制性,同时希望避免商业数据库的高昂费用,那么PostgreSQL可能是一个理想的选择。

2024-07-09 19:51:45 720

原创 【技术选型】FastDFS、OSS如何选择

对于需要自行管理文件存储和访问的中小型公司,FastDFS可能是一个不错的选择;而对于需要全球化分布式存储、多样化存储类型以及丰富云存储功能的企业级应用,OSS则可能更加合适。

2024-07-09 19:45:04 654

原创 【读书笔记】分寸的艺术

分寸的艺术》是一本探讨如何在复杂多变的社会环境中,通过精准把握“分寸”来构建和谐人际关系、提升个人修养与职场竞争力的书籍。作者以深入浅出的方式,结合丰富的案例与心理学、社会学理论,阐述了“分寸”在日常生活与工作中的重要性及其运用技巧。

2024-07-02 21:00:34 383

原创 【MySQL】MySQL锁冲突排障纪要

MySQL锁冲突是数据库并发操作中常见的问题,它发生在多个事务或查询同时尝试访问或修改同一数据资源时。

2024-07-02 20:54:44 566

原创 【实战场景】记一次UAT jvm故障排查经历

尽量避免在SQL语句中直接拼接用户输入的数据。使用#{}占位符来传递参数,并确保参数被正确地预编译。对于需要动态拼接SQL的场景(如模糊查询、IN语句、ORDER BY等),使用MyBatis提供的标签和函数来确保安全性。在Java层面进行必要的验证和过滤,确保用户输入的数据符合期望的格式和范围。定期对代码进行安全审计和测试,及时发现并修复潜在的SQL注入漏洞。

2024-07-02 20:20:11 1071

原创 【Mybatis】Mybatis存在的sql注入问题

尽量避免在SQL语句中直接拼接用户输入的数据。使用#{}占位符来传递参数,并确保参数被正确地预编译。对于需要动态拼接SQL的场景(如模糊查询、IN语句、ORDER BY等),使用MyBatis提供的标签和函数来确保安全性。在Java层面进行必要的验证和过滤,确保用户输入的数据符合期望的格式和范围。定期对代码进行安全审计和测试,及时发现并修复潜在的SQL注入漏洞。

2024-06-24 11:01:22 673

原创 【MySQL】MySQL中文排序失效解决方法

在mysql中,如果直接order by中文字段,排序结果并非按照自然排序进行,而是根据字符对应的ASCII码排序。所以为了实现按照中文拼音排序,最简单的做法,是在sql语句中加入convert函数。前提得保证 mysql已经引入了gbk字符集,不然会报错哦!

2024-06-24 10:16:35 419

原创 【Git】git rebase和git merge的那些事

最近新来的同事,关于rebase和merge的方式产生了一些分歧,现在就大概总结下这两者的区别和使用场景。

2024-06-20 11:22:06 542

原创 【读书笔记】非暴力沟通

读完《非暴力沟通》这本书,我深感其理念的重要性和实用性。这本书不仅是一本关于沟通技巧的指南,更是一部关于人性、情感和理解的哲学著作。书中提到的“非暴力沟通”并不是指不发出声音、不与人交谈,而是指我们在与他人交流时,能够以一种平和、尊重和理解的态度,去倾听对方的想法和感受,同时也能够清晰地表达自己的需求和期望。这种沟通方式,能够极大地减少冲突和误解,增强人与人之间的联系和信任。我被书中提出的四个核心要素所深深吸引:观察、感受、需要和请求。这四个步骤看似简单,但实际操作起来却需要极大的耐心和同理心。

2024-05-14 09:11:16 194

原创 【数据结构与算法】浅谈动态规划

动态规划(Dynamic Programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式来求解复杂问题的方法。它的基本思路是将待求解的问题分解为若干个重叠的子问题,每一个子问题只求解一次,然后将其结果保存在一个表格中,以便在需要时直接引用,从而避免重复计算。值得注意的是,动态规划并不是万能的,它只适用于那些具有重叠子问题和最优子结构性质的问题。对于这类问题,动态规划通常能够显著提高求解效率,避免不必要的重复计算。

2024-03-14 19:26:14 368

空空如也

空空如也

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

TA关注的人

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