- 博客(37)
- 资源 (13)
- 收藏
- 关注
原创 本地环境导入 Spring-framework-5.3.23 源码编译环境直接上手
Spring Framework 5.3.23源码编译指南:1. 环境要求JDK11,建议提前下载gradle-7.2-bin.zip;2. 配置修改:替换gradle-wrapper.properties中的distributionUrl为本地路径;3. 在build.gradle中添加jar任务的EXCLUDE策略;4. 修改仓库为阿里云镜像;5. 注释spring-tx.gradle中的kotlin-coroutines依赖;6. 重点调整CoroutinesUtils类,修改invokeSuspen
2025-06-21 09:31:07
410
1
原创 Apache Tomcat CVE-2025-24813 安全漏洞
为了获得真实证据,我们可以使用开源github来搜索具有此配置的存储库。根据结果,只有少数在 GitHub 上公开发布的开源 Tomcat 项目使用此配置(大约 200 个),并且大多数都有。现在我们可以将 .session 文件(一个序列化的 Java 对象)写入根目录。提供静态资源的默认 servlet 必须处于非默认的“readonly=false”配置中。文件以启用基于文件的会话持久性,根据tomcat指出,这是实例易受攻击的必要条件。我们的该脚本的测试副本如下。2.漏洞必须依赖在服务器中的配置。
2025-03-21 09:31:22
1369
原创 记录 io.springfox 3.0.0 整合 spring boot 2.6.x 由于 springfox bug 引发问题
而其中 springfox 中的一个 bug 就是,你在使用注解:paramType 由于没有使用指定的类型:path、query、body、header和form 导致启动解析的时候 enum 直接异常,导致整个项目所有注解都没有加载到系统内。}catch(Exception e) {//在这个地方补货异常,并将异常处理,不往上抛。1. 把不正确的地方修改。
2024-12-21 09:58:04
874
原创 TiDB 架构
TiDB 的 SQL 层,即 TiDB Server,负责将 SQL 翻译成 Key-Value 操作,将其转发给共用的分布式 Key-Value 存储层 TiKV,然后组装 TiKV 返回的结果,最终将查询结果返回给客户端。这一层的节点都是无状态的,节点本身并不存储数据,节点之间完全对等。
2024-11-29 13:38:55
1544
原创 设计模式-状态模式(State)
其主要思想是程序在任意时刻仅可处于几种有限的状态中。而状态判断通常是由比较多的条件判断语句实现(而过多的状态判断会导致我们项目维护变得更加困难,而且还很臃肿),也可以依据当前对象状态选择响应的行为。这个结构可能看上去与策略模式相似, 但有一个关键性的不同——在状态模式中, 特定状态知道其他所有状态的存在, 且能触发从一个状态到另一个状态的转换;原始对象被称为上下文 (context), 它并不会自行实现所有行为, 而是会保存一个指向表示当前状态的状态对象的引用, 且将所有与状态相关的工作委派给该对象。
2024-11-12 00:40:33
738
原创 设计模式-单例模型(单件模式、Singleton)
是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。单例模式同时解决了两个问题, 所以违反了单一职责原则如果你的代码能够访问单例类, 那它就能调用单例类的静态方法。无论何时调用该方法, 它总是会返回相同的对象。而现实世界中这样例子有很多,譬如:世界上只有一个独一无二的你,一个国家只有而且唯一的官方政府等。
2024-10-27 18:54:10
589
转载 mysql 索引的最佳实践
所以索引并不是越多越好。但下面查询语句虽然能用上组合索引 (title, published_at),但会多一个回表查询非索引列数据的额外开销,回表查询是指根据索引数据中存储的引用(一般是主键信息),到表中查询相应行的数据。当查询条件有多个索引可供使用,但你知道用哪一个索引是最优的时,推荐使用优化器 Hint 来强制优化器使用这个索引,这样可以避免优化器因为统计信息不准或其他问题时,选错索引。在查询条件中使用索引列作为条件时,不要在索引列上做计算,函数,或者类型转换的操作,会导致优化器无法使用该索引。
2024-10-26 16:32:55
233
原创 使用 Spring Boot Resilience4j RateLimiter 模块
在本文中,我们了解了如何使用 Resilience4j RateLimiter 的内置 Spring Boot 支持来实现客户端速率限制。将来,我们可能会有一个新的可重复注释,但与此同时我们如何解决我们的问题?假设我们与航空公司的服务合同规定我们可以以 2 rps(每秒请求数)的速度调用他们的搜索 API。我们的服务与 类封装的远程服务进行通信。例如,远程服务可能根据一天中的时间或正常时段与高峰时段等指定了不同的速率限制。在生产中,我们会根据与远程服务的合同配置。但是,在这些示例中,我们会将。
2024-10-23 15:23:36
1267
原创 Spring Boot 2.6.15整合swagger 3.0.0 报错Failed to start bean ‘documentationPluginsBootstrapper‘治标治本,验证通过
Spring Boot 2.6.15整合swagger 3.0.0 报错Failed to start bean ‘documentationPluginsBootstrapper‘治标治本,验证测试通过 方案
2024-10-22 23:55:32
400
原创 设计模式-生成器模式(建造者模式)-(Builder)
是一种创建型设计模式, 使你能够分步骤创建复杂对象。该模式允许你使用相同的创建代码生成不同类型和形式的对象。就像流水线的组装机器人一样,一件产品 组装分成好几部,每一个 工位组装不同的内容。问题:譬如你开了一家公司,专门承接私人建房,建房有的人要求:自带车库的房子、带游泳池的房子、装饰豪华的房子和带花园的房子等等。如果你基于这些创建了一个构造函数:拥有大量输入参数的构造函数也有缺陷:这些参数也不是每次都要全部用上.通常情况下,绝大部分的参数都没有使用,这使得对于构造函数的调用十分不简介。
2024-09-23 00:33:45
1218
原创 设计模式-抽象工厂模式(Abstract Factory)
是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。譬如 你正在开发一款家具组装系统。代码中包括一些产品:椅子(chair),沙发(sofa)和 咖啡桌(CoffeeTable) 然后基于这些产品形成一些列组合套餐 装饰风艺术(Art Deco)、维多利亚(Victorian)和现代(Mdern)。你需要设法单独生成每件家具对象, 这样才能确保其风格一致。如果顾客收到的家具风格不一样, 他们可不会开心。此外, 你也不希望在添加新产品或新风格时修改已有代码。
2024-09-11 00:42:35
1239
原创 Android 如何创建 Badges (Item Counts)
在本次学习中,我们的目标是为Android应用程序创建一个Badge (Item Count)函数。如今,许多Android应用程序都使用了徽章。没有简单的方法来实现它,所以我们将通过自己编码来实现它。您的 Activity_main.xml 文件应如下所示。您还需要在 Drawable 文件夹中为此布局添加所需的图像。在 Drawable 文件夹中,创建一个名为 item_count 的 XML 文件,并创建一个角半径为 8dp 的矩形。现在,当您运行应用程序时,您将看到如下屏幕截图。
2024-09-09 15:54:58
504
原创 设计模式-工厂方法(Factory Method)
Factory Method 要可以称:Virtual Constructor(虚拟构造函数)是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。现实问题,譬如你 正在开发 一个物流系统,他有海上物流、路上物流和内河物流。可是刚开始 你的企业 做了很多路上物流业务代码的开发,里面集成了很多物流相关业务信息,而突然火的海上运输业务 让你 原有 路上业务 需要进行调整而且调整比较大,而其中要有一部分共用的通用内容。
2024-09-01 23:02:22
1392
原创 设计模式-迭代器模式(Iterator)
迭代器模式如何理解,不暴露集合底层表现形式的情况下遍历集合中多有的元素,然而在先生世界中,譬如你出去旅游,你要参观主要旅游景点,可是你到达目的地后,你可能要发较多的时间去找如何到达你目的地的地方,你可能会 找当地导游给你进行内容详细接受,你可以能使用 手机导航,或者使用自由行走 模式。在此示例中,迭代器模式用于检查远程社交网络集合的社交配置文件,而不向客户端代码公开任何通信详细信息。java.util.Iterator(以及 java.util.Scanner)的所有实现。迭代社交网络配置文件。
2024-08-18 21:57:28
564
原创 设计模式-外观模式(Facade)
外观就说用起来好用的产品,譬如电视机,洗衣机,电脑 提高各种各样生活中所使用的工具。他们把里面 复杂的 处理都处理好,对外只提供了 开机、关机、操作等一些 按钮等。而我们开发中也常用到,譬如:你调用第三方的接口,第三方API 等,因为你也不知道对方的API 里面内部处理逻辑,你只知道对方API逻辑是如何处理的吗?其实你自己也不知道,因为别人封装好了,你只知道接口的含义。检测各种零件和电器是否能正常使用。测试各种器件能否提高正常使用。电视机启动成功,能播放。检查各种程序,并启动。等待内部机器检测...
2024-07-28 20:28:10
252
原创 程序员、高级工程师、架构师 其实他们都是 实施工程师+技能工人
我们驾驭着Spring Boot、Spring Cloud、Elasticsearch、Redis、分布式存储系统等先进技术的马车,这些工具与技术栈不仅是我们技术水平的试金石,更是我们实施创新、解决问题的利器。我们对这些系统的掌握程度,实质上就是一场场精心的实施过程,每一次深入的学习与实践,都让我们的技能更加纯熟,也为我们赢得了更高的职业回报。因此,将我们视为技能工匠并非过誉之词,我们正如同工匠般,运用着各式各样的编程语言与开源工具(它们便是我们手中的锤子、锉刀,是创造奇迹的钥匙)。
2024-07-28 11:44:45
951
1
原创 设计模式-责任链模式(Chain of Responsibility Pattern)
责任链,扫码是链:就是一串接着一串,像自行车链一样。然而在生活中非常的常见,譬如在工厂流水线生产,上一个工序完成,然后才到下一个工序。你去政府企业或者找公司领导签字也都是责任链模模式。以及我开发那种步骤性质的开发,也都是责任链模式的最好适用场景。经过组长审批 ==> 经过部门经理审批 ==> 经过总经理审批 ==> 经过老板审批。降低了代码的耦合,责任分工明确,程序更加灵活,可动态改变顺序。老板审批,此事需要特批,审核通过!
2024-07-16 01:30:56
264
原创 适配器模式-适配器模式(Adapter)
譬如国内的电压是 220v,可是你出国旅游去北美,或者欧洲。他们的电压是:110~130、100 不同电压。我是欧洲区域,我的电压范围是 110 ~ 130V。我是欧洲区域,我的电压范围是 110 ~ 130V。我是北美区域,我的电压范围是 100 ~ 100V。我是北美区域,我的电压范围是 100 ~ 100V。在我本地,我的电压范围是 220 ~ 240V。在我本地,我的电压范围是 220 ~ 240V。在我本地,我的电压范围是 220 ~ 240V。手机没有电,准备充电,插上万能充电头!
2024-07-07 16:05:25
349
原创 如何自我实现简版AQS
看看AQS 源码其核心就只有两个:volatile 和 Unsafe 然后添加一个管理线程的任务池。但是其核心的实现和hold 住 当前线程并且让其执行要是如何实现并做的,我按照其原理写了一个简答的同理demo,
2024-06-23 11:39:28
247
1
原创 设计模式-策略模式(Strategy pattern)
策略就是基于不同的情况使用不同的处理方式,譬如生活场景中,我们去超市买东西,收营员会问,你是要大购物袋、中型购物袋、还是小型购物袋。而你判断的依据就是购买东西的多少决定使用什么样的购物袋。以及在战争中基于不同的对手,使用不同的战争策略进行作战等。策略模式的有点很明显,减少了耦合,只知道一个内,并不知道是哪个具体实现。购物重: 10 斤,需要: 中型购物袋可装15斤以下的物品。购物重: 25 斤,需要: 大购物袋装可装30斤以内的物品。购物重: 4 斤,需要: 小型购物袋可装5斤以下的物品。
2024-06-16 15:06:52
377
原创 设计模式-装饰模式(Decorator )
装饰器在现实场景中很常见:譬如:你搭梯子上楼,一个梯子长度正好 3 米,而二楼刚好三米,这张梯子刚好,可是三楼却有5米高,为了上二楼,我们得把原来的梯子加长2米,刚好,四楼也正好比三楼高了2米,为了上四楼 梯子要得加长2米,而5楼却比四楼高了4米,这样梯子要得加长4米了。从两个例子看出 装饰器模式:优势比较明显 要比子类继承更有优势 ,而且更加灵活,当选择数量较多时,易于维护和扩展。装饰器模式在Java IO类中被大量使用,例如FileReader、BufferedReader等。
2024-06-09 01:38:49
385
原创 设计模式-观察者模式
现实世界观察者模式非常常见,譬如:俄罗斯攻打乌克兰的新闻,以色列攻打巴勒斯坦 这些新闻它就会通过新闻媒体 每天将消息推送给关注它的人或者关注他的人时刻接受新的消息。它是一种灵活且可扩展的模式,可以用于构建各种应用程序。1.事件注册和管理:观察者模式框架提供了注册和管理观察者的机制,以便观察者能够订阅主题对象的事件。·2.事件发布:观察者模式框架提供了发布事件的机制,以便主题对象能够将事件通知给所有观察者。3.事件处理:观察者模式框架提供了处理事件的机制,以便观察者能够响应事件并更新自身状态。
2024-06-03 23:33:17
315
1
原创 设计模式-命令模式
2.如果需要增加命令接收者,无需改动发布命令者,或者新增新的命令者也无需修改现有命令和接收者。这样就实现了“开-闭原则”2.具体执行命令和执行命令的人、或者其他组织。3.也更加方便在命令中加入其他操作。3.接收者:接收命令后执行的人。1.使请求者和接收者进行了解耦合。1.命令者:发布命令的人。
2024-06-02 12:33:36
317
原创 记录一下:一个由fastjson2 JSONObject.toJSONString 中挖的坑
/结果对象序列话后 为空,其原因就是在 SONObject.toJSONString 是将NULL 直接变成了字符串“null”我们再看看:writeNull()我们来看一下它的底层是如何实现的。
2024-06-02 10:10:48
829
原创 为什么2024年Java 就业一地鸡毛,找工作这么难找?
我们只不过是时代下洪流下的一叶扁舟,跟随着时代的洪流前进和后退而已,如何抓住时代的红利,值得深思
2024-05-18 23:49:28
3472
原创 通俗易懂的分布式CAP理论
选项描述Consistency(一致性)指数据在多个副本之间能够保持一致的特性(严格的一致性)Availability(可用性)指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应(不保证获取的数据为最新数据)Partition tolerance(分区容忍性)分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障什么是分区?
2024-04-14 15:48:18
470
1
原创 AI对程序员和开发者带来的变革
从积极的角度来看,AI的引入显著减轻了开发者的工作负担,并大幅提升了工作效率。而现在,有了AI的协助,我们能够更精准地获取学习内容和解决方案,从而更加高效地完成任务。更重要的是,AI的出现打破了以往技能提升的壁垒,它能帮助开发者快速学习新知识,加速成长为行业专家。然而,AI并非完美无缺,它也存在一些不足之处。其次,对于初级开发人员来说,AI的冲击可能更为显著,因为AI可能会替代一些简单的开发工作,导致这部分人员面临失业的风险。因此,我们需要不断提升自己的技能,以适应AI带来的挑战,确保不被时代所淘汰。
2024-04-01 10:11:18
318
原创 Jenkins 安装、部署操作 保姆级操作手册
第一步:本地搭建好版本和构建的运行环境对应的环境:git 、svn,maven。第二步:在对应的工程目录内将代码 从 git 或者svn 上下载下来。已自己实操按照此步骤操作完成 Jenkins 操作手册。*备注: 由于 插件都需要跨墙,所以没有下载那么多插件。第五步:选择 Build Triggers。第三步:登录Jenkins 新建 Item。第四步:输入需要构建目录和具体操作。
2024-03-16 15:51:55
503
1
原创 技术到底是什么?
有的人说不是,大厂的技术如何牛逼厉害,如果回想一下在大厂初期的时候,他们业务量没有如此之大的时候 他们对技术的要求是否有那么高的要求,答案肯定是没有的,想当刚起步的淘宝,新浪、google 等不都是从简单技术实现暂时业务,然后不断迭代 实现更高级的业务。最终的目的都是提升产品的生产速度,最终都是为了产品服务的。只是每个人对工具的使用方法不同而已,有的人看到了工具看都不看一眼直接一脚踢开,有的人只是没事用一下然后就扔了,有些人用了这个工具而且还对这个工具充满了好奇,把他拆了,了解内部构造之后,然后组装回去。
2024-02-09 00:41:46
1023
1
Linux 下安装JDK,TOMCT,MYSQL,DB2 ,Eclipse文档
2011-10-25
db2 数据库驱动jar包 db2java.jar,db2jcc.jar,db2_license_cu.jar
2011-10-25
数据结构经典算法-多种排序和查找
2008-12-03
用C++实现的数据结构所有的算法
2009-01-04
企业进货销售存储管理系统(运行)
2009-08-18
fijava findbugs eclipse version 3.3.
2011-01-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅