- 博客(107)
- 收藏
- 关注
原创 @Serial注解导致编译失败-----灵异事件
在Java开发中,使用@Serial注解时需注意其兼容性。该注解仅在Java 14及以上版本中可用。若Maven配置的JDK版本低于14,而项目或IDEA中配置的JDK版本高于14,则会导致序列化失败。本文作者在项目中遇到此问题,经过排查发现是由于Maven编译时无法正确处理@Serial注解,因为其JDK版本为1.8,未达到14。为避免此类问题,建议在实际生产环境中,为兼容低版本JDK,避免使用@Serial注解。
2025-05-22 10:21:27
317
原创 cursor使用方法(不外传,低调使用)
Cursor为新注册用户提供15天内50次高级请求的优惠,但注册时会检验机器码,频繁注册可能导致账号被风控。解决办法包括使用2925无限邮箱注册、使用后注销账号以重新获得优惠,以及使用脚本更新机器码。详细步骤包括下载重置机器码工具和Cursor软件,注册2925邮箱账号,以管理员身份运行重置工具,禁用自动更新,重置机器码后使用2925邮箱注册Cursor账号。每次使用完50次后,可按此步骤重新注册账号。如果2925邮箱不可用,可删除账号后重新注册。
2025-05-14 11:49:05
688
原创 git进阶操作--使用idea回滚已经push的代码
在Git操作中,错误地将dev_1.0_tc分支代码合并到release分支并推送后,可以通过以下步骤回退到推送前的状态:首先,确保本地release分支没有未提交的代码,若有则使用stash暂存。接着,使用git reset --hard将本地代码回退到指定位置。然后,切换到远程release分支,使用git reset --soft更新代码,这将导致远程和本地的HEAD不同步。最后,提交代码以完成回滚。此操作将恢复release分支到合并前的状态。
2025-05-13 11:31:20
462
原创 2025/03/19 Cursor使用方法(Java方向,适合Java后端把家从idea搬家到cursor)
Visual Studio Code(简称 VS Code)是一款由微软开发的免费、开源的跨平台代码编辑器,因其强大的功能、丰富的扩展和良好的用户体验,在开发者群体中广受欢迎。
2025-03-19 15:14:58
1870
原创 推荐一项非常防骚扰的技术:无限邮箱
举个栗子,假设你的主邮箱是abc@2925.com,那么你的子邮箱格式为abc+任意数字或字母@2925.com,无限邮箱的意思是拥有一个主邮箱,可以在主邮箱的末尾增加后缀来变成子邮箱,无需注册子邮箱(很逆天啊有木有)然后我用另外的邮箱给自己的子邮箱发了一个消息,并且接收到了邮件。上图,我的注册邮箱是。
2025-03-17 14:13:52
2152
3
原创 Gerrit报错:Permission denied publickey的解决办法
Gerrit 不仅是代码审查工具,更是团队协作的规范引擎。通过强制审查、透明讨论和自动化集成,它帮助团队在快速迭代中保持代码质量,尤其适合对质量敏感、需追溯变更的项目。无论是克隆时的钩子配置,还是审查中的评分机制,其设计处处体现 “让审查成为开发习惯” 的理念。问题:在使用Gerrit clone代码的时候,你会发现报错,错误信息大概是:Permission denied (publickey)。原因: OpenSSH从8.8版本开始由于安全原因开始弃用了rsa加密的密钥。
2025-03-14 09:38:00
1128
原创 使用dify的api连接外部知识库,dify连接ragflow的知识库(附java代码)
dify的知识库一般般,但是ragflow的知识库很强大,今天教大家如何使用dify连接ragflow的知识库。
2025-03-11 11:08:08
3069
7
原创 使用KTransformers安装Deepseek-r1满血版本实操
跟着步骤一步一步操作,每个人的机器上环境不一样,遇到问题解决对应的问题就好,祝你好运我是在linux上进行的操作,我的设备是一张3080和一张3090,内存是16张64gDDR4总1024g内存。
2025-02-19 17:20:55
691
原创 Linux下centos系统中使用docker容器中的ollama下载deepseek速度太慢解决办法
以下是使用shell脚本实现的一个示例,该脚本会尝试下载一个名为"deepseek-r1:32b"的模型。通过每隔60秒中断一次下载操作,从何恢复下载速度。亲测有效,其中需要将模型改为你自己要下载的模型。
2025-02-17 15:43:01
442
原创 AI学习之自然语言处理(NLP)
自然语言处理(Natural Language Processing,NLP)是计算机科学、人工智能和语言学领域的交叉学科,旨在让计算机能够理解、处理和生成人类语言。
2025-01-14 16:34:06
1365
原创 MySQL之开窗函数sum over,sum over order by,rank,row_number,lag / lead
sum oversum over order byrankrow_numberlag / lead
2025-01-10 15:06:08
302
原创 MySQL之子查询 - exists
其中,子查询中的一种特殊类型是 "exists" 子查询,用于检查主查询的结果集是否存在满足条件的记录,它返回布尔值(True 或 False),而不返回实际的数据。之前的教程讲到,子查询是一种强大的查询工具,它可以嵌套在主查询中,帮助我们进行更复杂的条件过滤和数据检索。
2025-01-10 15:00:00
262
原创 MySQL之outer join
在 OUTER JOIN 中,包括 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 两种类型,它们分别表示查询左表和右表的所有行(即使没有被匹配),再加上满足条件的交集部分。在 SQL 中,OUTER JOIN 是一种关联查询方式,它根据指定的关联条件,将两个表中满足条件的行组合在一起,并。
2025-01-10 14:54:25
223
原创 MySQL之having关键字
在 SQL 中,HAVING 子句用于在分组聚合后对分组进行过滤。它允许我们对分组后的结果进行条件筛选,只保留满足特定条件的分组。HAVING 子句与条件查询 WHERE 子句的区别在于,WHERE 子句用于在。进行过滤,而 HAVING 子句用于在。
2025-01-10 14:51:33
369
原创 行为模式11.访问者模式
访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不改变元素类的前提下,定义作用于这些元素的操作。它通过将操作封装到访问者对象中,使得可以在不修改元素对象的情况下,增加新的操作。访问者模式的关键思想是将数据结构和操作分离,使得在不修改数据结构的情况下可以增加新的操作,适用于那些数据结构经常变化,但操作比较固定的场景。
2025-01-07 14:41:26
540
原创 23种设计模式总结
设计模式是软件工程中的一种通用解决方案,用于解决在特定场景下出现的常见问题。学习设计模式不仅帮助我们提升编码水平,也帮助我们更好地理解面向对象设计的原则与思想。通过设计模式的学习,我们可以获得一些最佳实践和解决问题的标准方法,从而提高软件系统的可维护性、扩展性和可复用性。以下是我对设计模式学习的总结。
2025-01-06 17:50:34
858
原创 创建型模式1.工厂方法模式
我们先定义一个动物的接口,每种动物都必须实现这个接口。// 产品接口:Animal然后,我们创建不同种类的动物,分别实现Animal接口。// 具体产品:Dog@OverrideWoof!");// 具体产品:Cat@OverrideMeow!");接下来,我们定义一个抽象的工厂类,提供工厂方法来创建动物。// 抽象工厂:AnimalFactory然后,我们定义具体的工厂类,分别实现并提供不同的动物对象。// 具体工厂:DogFactory@Override。
2025-01-06 17:17:05
498
原创 创建型模式2.抽象工厂模式
我们定义两类产品:桌子(Table)和椅子(Chair// 抽象产品A(桌子)// 抽象产品B(椅子)每种风格的家具都有不同的实现类。例如,现代风格和传统风格的桌子和椅子会有所不同。// 现代风格的桌子@Override// 现代风格的椅子@Override// 传统风格的桌子@Override// 传统风格的椅子@Override抽象工厂接口提供了创建家具的方法(创建桌子和椅子)。// 抽象工厂接口每个具体工厂类负责生产特定风格的家具。// 现代风格的家具工厂。
2025-01-06 17:06:42
694
原创 创建型模式3.建造者模式
ProductBuilderDirector建造者模式通过分步骤、分部分地构建复杂对象,极大地解耦了对象的构建和表示过程。这种模式的优点是能够应对对象的复杂性,同时提供灵活的创建过程。它常用于产品(如汽车、电脑等)的构建过程较为复杂、包含多个可选部分的场景。通过使用建造者模式,可以使得创建不同类型的对象更加灵活,并保持较高的可维护性。
2025-01-06 16:45:20
1073
原创 创建型模式4.原型模式
原型模式允许一个对象通过复制现有对象来创建新的对象,而无需知道如何具体实现这个对象的类。这种模式通过克隆原有对象来产生新对象,避免了直接使用new关键字的开销。原型模式是一种通过复制现有对象来创建新对象的设计模式,适用于对象创建开销较大、需要频繁创建相似对象的场景。通过实现clone()方法,可以轻松地复制对象。它提供了一种通过已有对象进行对象创建的方式,能有效提高系统性能并简化对象创建过程。但在使用时需要特别注意深拷贝和浅拷贝的区别。
2025-01-06 16:02:09
869
原创 静态内部类为什么在不需要加锁就是线程安全的单例模式
当方法第一次被调用时,类才会被加载,进而初始化INSTANCE。JVM 保证的初始化是线程安全的,且只会初始化一次。Java 的类加载机制本身是线程安全的,类的初始化过程会确保只有一个线程会初始化,其他线程会看到已经初始化的实例。因此,不需要在中加锁,因为 JVM 会自动处理初始化的线程安全问题。通过这种方式,我们既能实现懒加载,即仅在第一次调用时才创建实例,又能避免显式的同步锁,从而提高性能。
2025-01-06 14:49:11
706
原创 创建型模式5.单例模式
懒汉式(线程不安全): 延迟实例化,适合需要延迟加载的场景,但需要处理线程安全问题。饿汉式(线程安全): 类加载时实例化,线程安全,简单,但可能会造成资源浪费。双重检查锁定: 提供了懒加载和线程安全的优势,性能较高。静态内部类方式(推荐): 最佳的单例实现方式,延迟加载,线程安全,且简单。对于大多数情况,静态内部类方式是最推荐的实现方式,因为它利用了Java的类加载机制,在保证线程安全的同时也保持了延迟加载的优点。
2025-01-06 14:37:44
1005
原创 结构型模式1.适配器模式
适配器模式是非常实用的设计模式,尤其在需要处理接口不兼容的情况时。它能够有效地解耦系统中的不同部分,使得系统更加灵活且易于扩展。适配器模式尤其适用于需要兼容多个接口或将现有类库与新系统进行集成的场景。
2025-01-06 14:17:58
772
原创 结构型模式2.桥接模式
桥接模式是一种非常强大的结构性设计模式,可以有效地分离抽象与实现,允许独立地扩展两者,减少系统的复杂度。在面对多个变化维度时,桥接模式尤其有用。
2025-01-06 12:03:57
598
原创 结构型模式3.组合模式
组合模式通过递归组合的方式,将对象和对象组合统一处理,使得在处理“部分-整体”结构时,客户端代码更加简洁。它适用于具有树形结构的场景,如文件系统、组织结构、菜单结构等。
2025-01-06 11:10:32
981
原创 结构型模式4.装饰器模式
装饰器模式通过将功能与对象的实现分离,使得我们能够在运行时动态地增加对象的功能,而不需要修改对象本身。它能够灵活地扩展对象功能,减少了子类数量,提升了系统的灵活性和可维护性。
2025-01-06 10:29:54
831
原创 结构型模式5.外观模式
外观模式是一种结构型设计模式,其核心思想是为复杂的子系统提供一个统一的接口,使得客户端与复杂的子系统进行交互时更加简单,避免直接与多个子系统类进行交互。通过外观模式,客户端可以通过一个简单的接口来调用复杂的操作,降低了系统的复杂度,提升了可用性。假设我们有一个家庭影院系统,它包括多个设备:DVD播放器、音响系统、投影仪等。每个设备都有复杂的控制接口,客户端如果直接与这些设备交互会显得很麻烦。为了简化操作,我们可以使用外观模式提供一个统一的接口,使得用户只需要通过外观接口进行操作。
2025-01-06 07:00:00
341
原创 结构型模式6.享元模式
享元模式通过将共享状态提取出来,减少内存消耗,适用于大量相似对象的场景。在设计时需要仔细分离共享和非共享状态,确保享元对象的高效利用。
2025-01-03 14:28:05
354
原创 结构型模式7.代理模式
代理模式是一种结构型设计模式,它提供了一个代理对象来控制对另一个对象的访问。通过代理对象,客户可以间接访问目标对象。代理对象通常用来在访问目标对象时提供附加功能,比如延迟加载、访问控制、日志记录等。
2025-01-03 11:29:32
987
原创 行为模式1.模板方法模式
模板方法模式通过定义一个固定的算法骨架,并将一些具体步骤延迟到子类中实现,提供了代码复用的同时也保留了灵活的扩展性。它能够让不同的子类在不修改父类的情况下,提供不同的行为实现。
2025-01-03 11:05:27
865
原创 行为模式2.命令模式------灯的开关
是一种行为型设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求、队列或日志来参数化其他对象。命令模式让你能够将请求发送者与请求接收者解耦,发送者只关心发送命令,而不需要知道如何处理它们。命令模式非常适合用于需要将多个操作组合成一个单一操作、撤销操作等场景。假设我们有一个遥控器(Invoker),可以控制开关家里的灯(Receiver),而每个按钮的动作就是一个命令(Command)。
2025-01-02 17:21:14
1077
原创 行为模式3.迭代器模式
是一种行为型设计模式,它提供一种顺序访问集合对象元素的方式,而不暴露集合的内部结构。迭代器模式允许客户端按顺序访问集合中的元素,而无需直接访问集合本身。通常,当你有一个集合(如列表、队列、栈等),你希望对集合中的元素进行迭代,但又不想暴露其内部结构时,可以使用迭代器模式。
2025-01-02 16:37:50
511
原创 行为模式5.中介者模式-聊天室收发消息
中介者模式是一种行为设计模式,它定义了一个对象,用来封装一组对象之间的交互。中介者模式通过使对象之间的交互集中化,从而减少了对象之间的直接依赖关系。这样,减少了类与类之间的耦合性,使得它们之间的交互变得更加清晰和可维护。在中介者模式中,所有对象通过中介者对象来进行交互,而不是直接相互联系。中介者通过协调各个对象的行为来实现它们之间的协作。
2025-01-02 15:10:49
816
原创 多个线程处理不同的数据,等线程都完成后再进行下一步操作
现在有三个任务,三个任务之间没有关联关系,但是第四个任务要等前三个完成之后才能进行,于是使用多线程完成前三个任务节省时间。
2024-12-31 14:37:53
481
原创 使用POI原生自定义输出定制化表格
这就导致没法用一些封装好的工具(例如easyExcel)简单快捷的输出,这时候只能使用poi进行原生的制作表格,在工作中我使用到了这部分功能,现在将代码贴在如下进行记录。在工作中有时候会遇到一些统计功能,需要输出的内容并不是很规则的第一行表头后面全是数据的格式,而是这样。
2024-12-23 14:48:20
287
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人