自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(921)
  • 资源 (1)
  • 收藏
  • 关注

原创 网络层排查工具traceroute 和 mtr

除了可以直接用 ping 这个非常简便的工具以外,你还应该掌握另外两个能提供更为强大排查能力的命令——traceroute 和 mtr。可以使用百度返回的报文看一下连接状态。再次执行,正常出现结果。

2024-12-13 05:15:00 75

原创 linux删除路由

在Linux中删除路由,可以通过几种不同的方法来实现。

2024-12-12 05:15:00 288

原创 @PostConstruct注解详细分析,结合案例和使用场景(保姆级教程)

PostConstruct 是 java 中用于 生命周期管理的注解,是 java 自己的 的注解,不是 spring 的。当应用程序加载时,@PostConstruct 标注的方法会在 类实例化 并 完成依赖注入 后 自动调用。作用:主要作用是执行一些 初始化逻辑,例如预加载资源、启动后台任务、校验依赖注入等。执行时机:首先创建对象(实例化Bean),依赖注入完成(属性赋值),@PostConstruct 标记的方法被自动调用。注意:只能标记在非静态的 void() 方法。

2024-12-11 05:15:00 740

原创 springboot获取getBean方法以及ApplicationContext空指针问题解决

获取getBean的类在admin中,则不会报空指针,如果在common模块中,在admin模块中调用,则会报空指针异常,解决方法,使用。场景:在springboot多模块中使用getBean获取bean导致空指针异常。导入getBean方法所在的类。

2024-12-10 19:59:37 305

原创 框架中常用的过滤器、拦截器是如何实现的?

nil) {通过职责链模式,框架可以提供灵活的扩展点,使得开发者可以在不修改框架源码的情况下,添加新的功能。这种模式特别适合用于实现过滤器和拦截器,因为它允许请求和响应在多个处理者之间传递,每个处理者负责处理特定的任务。这种设计使得系统更加模块化和可维护,同时也更容易扩展和修改。

2024-12-07 05:15:00 693

原创 MySQL Binlog 日志监听与 Spring 集成实战

Statement 模式适用于简单操作,能节省存储空间,但可能导致不一致。Row 模式能精确记录数据变化,适合对数据一致性要求较高的场景。Mixed 模式平衡了性能与准确性,适用于大多数应用场景。

2024-12-07 05:15:00 898

原创 ShedLock 的工作原理

是一个 Java 库,通常用于分布式系统中,确保定时任务(Scheduled Tasks)在集群环境下只被某一个实例执行一次。它通过在共享资源(例如数据库或分布式缓存)中添加锁的方式,避免多个实例同时执行相同的任务。

2024-12-06 05:15:00 598

原创 多语言多模型场景下的AI功能项目解决方案

通过这次改造,业务层使用ai能力时,直接调用【AiAbilityConfigService】接口即可,业务层不再关心具体使用哪个大模型能力,这样使得业务层的逻辑更加内聚,与模型选择的逻辑进行解耦。最终达到我们高内聚、低耦合的目标。我们在项目设计或优化时,除了实现功能之外,要设计出一个可维护性高、扩展性高、的项目结构,而这些指标都是建立在高内聚、低耦合的思想之上。因此,要深入理解高内聚、低耦合,多看一些组件和框架的实现思路,拓宽我们的视野,给我们的优化思路提供一些输入。

2024-12-05 05:15:00 754

原创 HBase高级特性

使用客户端API,配合筛选机制,例如,使用过滤器或限制列族的范围,都可以控制被返回到客户端的数据量。如果可以更进一步优化会更好,例如,数据的处理流程直接放到服务器端执行,然后仅返回一个小的处理结果集。这类似于一个小型的MapReduce框架,该框架将工作分发到整个集群。协处理器允许用户在region服务器上运行自己的代码,更准确的说允许用户执行region级的操作,并且可以使用与RDBMS中触发器(trigger)类似的功能。在客户端,用户不关心操作具体在哪里执行,HBase。

2024-12-04 05:15:00 1825

原创 搭建高可用负载均衡系统:Nginx 与云服务的最佳实践

上面我简单用 Nginx 和阿里云的负载均衡服务来搭建了一个简单的负载均衡示例,其实搭建负载均衡本身并不复杂。最主要的问题在于集群服务器的链路跟踪,以及我们上面提到的在负载均衡架构下可能会遇到的各种问题。根据我之前接触的公司情况,大多数项目集群搭建负载均衡已经很少手动使用 Nginx 了。使用 Nginx 手动搭建负载均衡虽然简单,但是在维护和链路分析方面确实非常麻烦,特别是在高并发、复杂业务逻辑的场景下,一旦出现问题,追踪具体节点、分析故障源非常耗时且困难。

2024-12-03 05:15:00 1254

原创 详细分析Java中的@JsonFormat注解和@DateTimeFormat注解

为了使生效,项目必须引入 Jackson 库的相关依赖:(如果是springboot项目,可不用配置,本身spring-boot-start-web依赖已包含)主要用于控制如何将 Java 对象中的日期时间格式化为 JSON 输出(即从后端到前端的格式化)适用于序列化和反序列化 JSON 数据,通常用在实体类中的日期字段上。

2024-12-02 05:15:00 620

原创 Java高级开发工程师在面试中项目会问那些方面问题?这篇文章告诉你

项目亮点请总结一下你在项目中认为最成功或最有亮点的部分,并解释其原因。经验教训在项目中,你遇到了哪些挑战和困难?你是如何克服的?请分享一下你在项目中获得的经验教训和成长。这些问题旨在全面了解应聘者在Java项目开发中的实际经验和能力,包括技术深度、项目经验、问题解决能力和团队协作能力等。因此,在面试前,应聘者应充分准备并熟悉自己参与过的项目,以便能够准确、清晰地回答这些问题。

2024-12-01 20:07:36 370

原创 java判断两个字符串相似的方法

以上代码演示了如何使用余弦相似度计算两个字符串之间的相似度。函数 calculateCosineSimilarity 接受两个字符串 s1 和 s2,返回它们的余弦相似度。编辑距离,也称为Levenshtein距离,是一种用于字符串相似度比较的常见方法。其中 s1 和 s2 分别是要比较的两个字符串,函数返回它们的编辑距离。Jaccard系数是一种用于计算两个集合之间相似度的方法,也可以用于度量两个字符串之间的相似度。余弦相似度是一种常用的度量两个向量之间相似度的方法,可以用于度量两个字符串之间的相似度。

2024-11-27 05:15:00 536 1

原创 一键搞定:如何用自动化脚本拯救“手动合并”焦虑

刚写完一大段代码,正准备起身倒杯咖啡放松一下,却猛然想起还有分支需要合并到测试环境。不仅要切换分支、拉代码、合并,还得小心翼翼避免操作失误,仿佛在踩一地的“雷”。更惨的是,这样的操作还不是一次两次,而是!在我们项目的开发初期,这一幕几乎每天都在上演。频繁的手动操作不仅让人疲惫,还极大地浪费了开发时间。于是,我们决定放大招:用脚本解放双手,让开发者能安心享受咖啡的香气,而不是纠结在Git命令中。

2024-11-25 05:15:00 920

原创 快速且全面了解浏览器执行原理

分层确实可以提高性能,但是它以内存管理为代价,因此不应作为 web 性能优化策略的一部分过度使用。

2024-11-24 05:15:00 755

原创 SwiftData: 定义数据模型

在SwiftData中,我们所有的模型都是用代码创建的,也就是说我们可以和Xcode中的Core Data模型编辑器 UI 说再见了,因为现在一切都是用纯Swift代码来进行模型描述的。对于这个项目,我们将创建一个简单的模型来描述一个人,因此创建一个名为上述代码可以看到,这是一个类。尽管在 Swift 中结构体十分强大,且一般推荐大家优先使用结构体,但我们最终还是需要一种方法来在应用的各个部分之间共享数据,而类就是做这个事的。因为它是一个类,所以我们需要为它提供初始化构造器。

2024-11-23 05:15:00 613

原创 Redis内部数据结构ziplist详解

ziplist的数据结构组成是本文要讨论的重点。实际上,ziplist还是稍微有点复杂的,它复杂的地方就在于它的数据结构定义。一旦理解了数据结构,它的一些操作也就比较容易理解了。我们接下来先从总体上介绍一下ziplist的数据结构定义,然后举一个实际的例子,通过例子来解释ziplist的构成。如果你看懂了这一部分,本文的任务就算完成了一大半了。: 32bit,表示ziplist占用的字节总数(也包括本身占用的4个字节)。

2024-11-21 05:15:00 1009

原创 Token 令牌:原理、使用场景及操作指南

Token 令牌是一种包含用户相关信息的加密字符串。它由服务器生成并颁发给客户端,作为客户端身份的一种标识。Token 通常包含用户的身份信息(如用户 ID)、权限信息(如用户角色)以及一些用于验证的签名信息。这个加密字符串可以在不同的请求中传递,让服务器能够识别客户端的身份并验证其权限。

2024-11-20 05:15:00 1084

原创 WPF中MVVM的基本使用

MVVM)是一种设计模式,特别适用于WPF)应用程序开发。它将应用程序分为三个核心部分:模型(Model)、视图(View)和视图模型(ViewModel),以实现关注点分离,提高代码的可维护性和可测试性。

2024-11-19 05:15:00 688

原创 如何解决Java EasyExcel 导出报内存溢出

EasyExcel支持分批写入数据,可以将数据分批加载到内存中,分批写入Excel文件,避免一次性将大量数据加载到内存中。

2024-11-18 05:15:00 831

原创 从小白到大神:后端开发者必学之缓存技术(Cache)

然而,理解 CDN 缓存是很有价值的,因为后端 API 往往需要为与 CDN 层的兼容性进行优化,尤其是在内容交付速度至关重要的大型应用程序中。,使您全面了解缓存在整个技术栈中的作用,但我们的重点是帮助您掌握后端缓存的专业知识,让您的 API 既快速又稳定。:缓存一个经常访问的产品详细信息的数据库查询,将其存储在内存缓存中,设置 30 分钟的生存时间(TTL)。类似,作为独立的缓存服务器,但它具有额外的功能和灵活性,使其成为更复杂的缓存场景中的热门选择。,这是 .NET Core 中的内置缓存机制。

2024-11-17 05:15:00 1040

原创 工商银行1面:SpringBoot 如何解决跨域问题?

通过自定义过滤器,可以更灵活地处理跨域请求。如下示例代码,自定义过滤器 CorsFilter 实现 Filter,从而允许作为跨域的来源。@Override@Override: 设置允许跨域的来源。: 设置允许的HTTP方法。: 设置允许的请求头。: 允许发送Cookie。对于OPTIONS预检请求,直接返回状态码200。

2024-11-16 05:15:00 1421

原创 分布式服务高可用实现:复制

是比较常用的方法,我们可以为每个请求增加时间戳或者唯一的ID,挑选其中较大的值作为最终结果,并将其他的值丢弃,不过这种情况容易造成数据丢失,比如在分布式服务中存在的。

2024-11-15 05:15:00 1270

原创 聊聊spring项目如何根据事件条件进行事件分发

看完也许有朋友会说,我直接在监听类方法里,写if-else也可以达到效果啊,为啥那么麻烦。如果业务没那么复杂的话,可以这么做,但是我们本身使用事件就是为了解耦,如果在事件监听里面写一堆if-else,一来职责不够单一,二来我们更提倡对修改关闭,对扩展开放。

2024-11-14 05:15:00 389

原创 关于动态线程池starter包的开发

这两个都是Spring框架提供的用于在Bean初始化阶段进行一些操作的接口,区别在于InitializingBean是一个简单的回调接口,Bean只需要实现它,并重写afterPropertiesSet方法,该方法在Bean的属性设置完成后被调用。在这个方法中,可以进行一些必要的初始化工作。例如,可以通过实现BeanFactoryPostProcessor接口,在postProcessBeanFactory方法中手动实例化A类的Bean,然后注入到B类的Bean中,从而解决A和B之间的循环依赖问题。

2024-11-13 05:15:00 719

原创 Springboot配置全局异常通用返回

和前端沟通设计好统一的返回模板,便于前端进行交互,一般场景下,可以直接使用简单的通用模板来返回。针对额外复杂的场景可以适当的增加参数做区分判断。还有就是对异常进行统一的集中处理,封装成模板返回给前端。

2024-11-12 05:15:00 1696

原创 简单带你了解大模型时代的知识蒸馏方法

知识蒸馏作为一种高效的模型压缩和知识转移技术,能够在保持模型性能的前提下,大幅降低计算成本和资源需求。无论是在边缘计算、移动设备,还是在大规模机器学习任务中,知识蒸馏都将发挥越来越重要的作用。通过不断的研究与实践,知识蒸馏有望为AI的发展带来更多的创新与突破。

2024-11-11 08:27:04 1135

原创 一个灵活且功能强大的动画库 Popmotion

如果你在使用 React 开发应用,可以轻松地将 Popmotion 集成到组件中。在这个示例中,我们创建了一个从 0 到 300 的弹簧动画,控制物体的弹性和阻尼,使得动画看起来更加自然。使用 Popmotion,你可以轻松创建关键帧动画。创建一个从 0 到 300 的动画,并指定持续时间为 1000 毫秒。在这个示例中,我们定义了三个关键帧,动画将依次在每个关键帧之间移动并改变透明度。在这个示例中,我们首先选择了一个元素(.box),然后使用。创建了一个缓入缓出的效果,使得动画在开始和结束时更平滑。

2024-11-09 05:15:00 874

原创 代码重构的方案

官方解释:代码重构是指在不改变软件外部行为的前提下,对其内部结构进行修改的过程。重构的目的是提高代码的可读性、可维护性和可扩展性。消除重复代码:通过提取公共方法或类来减少代码重复。重复代码容易会造成项目冗余,而且在改造逻辑的同时会遗漏造成生产事故改善命名:使用更具描述性的命名来提高代码的可读性,好的命名能让后面的维护者看清你的意图,也属于可扩展性的一个体现。简化复杂逻辑:将复杂的逻辑拆分成更小、更易于理解的部分,对于全篇ifelse很多次的逻辑,进行拆分简化,降低理解的成本。提高模块化。

2024-11-07 05:15:00 506

原创 手写 URL 解析工具函数

在日常开发中,经常遇到一些需要解析路由参数的场景,这个需求就属于一看就会,一写就废的题目,接下来实现一个解析函数。

2024-11-06 05:15:00 388

原创 浏览器渲染

浏览器渲染网页是一个复杂的过程,这个过程涉及关键渲染路径(CRP)。CRP 包含从获取 HTML、CSS 和 JavaScript 资源开始,到最终将像素呈现在屏幕上的一系列关键步骤,这些步骤包括解析 HTML、解析 CSS、布局以及绘制等多个环节,

2024-11-05 05:15:00 495

原创 一次元空间FullGC导致OOM问题分析

观测平台告警:FullGC次数大于阈值,5分钟内大于11次,频次大概1-2周有一次告警后服务概率性会自动恢复,控制台打印不自动恢复时,服务对应容器会挂掉,需要被kill。

2024-11-04 05:15:00 657

原创 百万商品查询,性能提升了10倍

对于分页查询接口,如果没有特殊要求,我们可以在输入参数中,给一些默认值。这样可以缩小数据范围,避免每次都count所有数据的情况。对于商品查询,这种业务场景,我们可以默认查询当天上架状态的商品列表。如果每天有变更的商品数量不多,通过这两个默认条件,就能过滤掉绝大部分数据,让分页查询接口的性能提升不少。

2024-11-03 21:30:06 735

原创 前端更新部署后通知用户刷新

周五晚上组里说前端有bug,正在吃宵夜的我眉头一紧,立即打开了钉钉(手贱…),看了一下这不是前几天刚解决的吗,果然,使用刷新大法就解决,原因不过是用户一直停留在页面上,新的版本发布后,没有刷新拿不到新的资源。现在大部分的前端系统都是SPA,用户在使用中对系统更新无感知,切换菜单等并不能获取最新资源,如果前端是覆盖性部署,切换菜单请求旧资源,这个旧资源已经被覆盖(hash打包的文件),还会出现一直无响应的情况。那么,当前端部署更新后,提示一直停留在系统中的用户刷新系统很有必要。

2024-11-02 05:15:00 1561

原创 MyBatis中的多级缓存机制(一级缓存和二级缓存)

今天的内容系统分析了日常开发过程中都会使用到的缓存机制,我们讨论了作为一个单级缓存应该具备的基本结构,也分析了应用程序级别常用的多级缓存机制。多级缓存设计思想在大量开源框架中都得到了应用,本讲我们基于 MyBatis 这款主流的 ORM 框架分析了它的一级缓存和二级缓存,并给出了对应的实现过程。尽管 MyBatis 所提供的多级缓存机制面向的是数据库访问领域,但我们可以借鉴背后的设计思想和方法,并应用到日常开发中。

2024-11-01 05:15:00 775

原创 如何实现一套分布式通知系统

在设计之前,我们先来详细了解下通知系统的需求,本文从功能需求和非功能需求两个方面来介绍。

2024-10-31 05:15:00 864

原创 Redission try lock 参数你真的理解吗?

前几天同事用redission的lock功能,耗时一下午,也没实现抢不到锁立即返回的效果,然后退回使用redis template的setnx方法。review全部代码后发现,老哥这是没有理解redission lock的参数含义,还有个其他C端场景模块代码毫无作用的等待2s,导致并发度始终上不去。当时有点血压飙升,抄起水杯,喝两口压压惊(自己年龄大了要稳重,业务上可能确实着急同事没有仔细研究这块)。今天简单说下这俩参数。

2024-10-29 05:15:00 473

原创 15 种超赞的 MyBatis 写法

MyBatis的前身是iBatis,最初是Apache的一个开源项目。随着时间的推移,为了更好地适应Java持久层框架的需求,iBatis在2010年重构并更名为MyBatis。这一转变标志着MyBatis在功能和性能上的显著提升,同时也意味着它能够更好地服务于日益复杂的企业级应用。今天,我们就来探讨 15 种超赞的 MyBatis 写法,让你的数据库操作更加高效和灵活。

2024-10-28 05:15:00 1883

原创 通过HBase实现大规模日志数据存储与分析

HBase是基于Hadoop的分布式列存储数据库,适用于海量、非结构化或半结构化数据的存储。它能够通过水平扩展来支持大规模数据,并且与Hadoop生态系统深度集成,支持大规模数据分析任务。

2024-10-27 05:15:00 858

原创 工作6年了,才明白技术的本质不过是工具而已,那么未来的方向在哪里?

互联网行业发展放缓,进入调整阶段,具体表现为市场需求、用户规模、营收利润、创新活力等方面的放缓或下降。一些曾经风光无限的互联网公司也遭遇了业绩下滑、股价暴跌、裁员潮等困境,你是不是也曾听过互联网的寒冬已至的言论?其实互联网本身,并没有衰败或消亡,而是因为互联网高速发展的时代过去了。

2024-10-26 05:15:00 1218

day01_项目介绍和工程搭建.md

day01_项目介绍和工程搭建.md

2021-09-04

空空如也

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

TA关注的人

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