自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入浅出:实现一个生产级网页预览图提取组件

网页预览图提取技术方案 本文介绍了一个从网页中智能提取预览图片的解决方案。该方案采用优先级逐级降级策略,依次尝试从OpenGraph元标签、Twitter Card、Schema结构化数据、懒加载图片、网站Logo中提取,最后以Favicon作为兜底。重点解决了URL规范化处理、懒加载图片识别、相对路径转换等技术难点,并提供了详细的代码实现思路。该方案兼顾了可靠性和兼容性,能够处理各类网页的特殊情况,确保总能返回有效的预览图片。

2025-10-13 18:47:27 661

原创 深度解析:使用ZIP流式读取大型PPTX文件的最佳实践

本文提出了一种基于ZIP流式解析的高效方案,用于从大型PPTX文件中提取文本内容。相比传统Apache POI方法,该方案通过直接操作ZIP流、SAX解析XML和按需提取策略,将内存占用降低60%,处理速度提升40%。核心实现包括临时文件策略支持多次读取,以及ZIP流式解析结合SAX处理器,避免构建完整DOM树。这种方案特别适合处理150MB+的大型PPTX文件,在保证性能的同时有效控制内存消耗。

2025-10-12 16:40:47 939

原创 OkHttp 开发中需要失败重试 - 老司机的肌肉记忆指南

本文总结了HTTP重试机制的最佳实践与设计要点。通过核心重试循环实现统一异常处理、资源安全释放和优化重试逻辑;采用中断友好的睡眠机制确保线程安全;解决JSON解析的一次读取问题;引入随机退避防止重试风暴;支持业务层验证区分HTTP状态与业务结果;封装异常翻译简化调用方处理;使用函数式接口保证类型安全;保持零依赖设计便于移植。该方案已在实际项目中验证,标准化了HTTP重试流程,减少了重复开发工作。

2025-08-29 17:58:37 383

原创 MySQL MVCC 机制详解

MVCC 是 MySQL InnoDB 存储引擎中实现高并发的关键技术,通过在每行记录后面保存两个隐藏的列(事务ID和回滚指针)来实现的。它能够让不同事务的读、写操作并发执行,同时保证事务的隔离性。根据不同的隔离级别,MySQL 会采用不同的策略来创建和维护 ReadView,从而影响数据的可见性。

2025-04-09 12:38:55 966

原创 寻找指定时间附近日志

在处理分布式系统的问题时,经常需要从大量日志文件中提取特定时间段的日志进行分析。今天分享一个实用的Python工具,它能够从多个日志文件中精确提取指定时间范围的日志内容。

2025-02-20 17:16:39 320

原创 MultipartFile 的 transferTo 导致的文件上传失败问题

云存储平台的命名规范本地文件系统的限制文件名的可读性和实用性系统的兼容性和稳定性建议在开发初期就制定好文件命名规范,避免在生产环境中出现类似问题。

2024-11-20 15:48:59 438

原创 Java 中的虚拟线程

简单介绍一下java中的虚拟线程的使用

2024-10-05 14:54:52 651

原创 使用 Python 制作一个属于自己的 AI 搜索引擎

使用Google和Bing的搜索结果交由OpenAI处理并给出回答。

2024-08-03 08:06:24 3701 2

原创 应届生 HR 面纪要

分享作为应届毕业生的我在Java开发领域的经验和见解。通过这些回答,希望能全面展示自己的能力和态度,为即将步入职场的自己找到一个理想的工作机会。

2024-07-19 16:38:58 493

原创 Docker 部署 RocketMQ

我们可以看到 ‘The Name Server boot success…’, 表示NameServer 已成功启动。我们可以看到 ‘The broker boot success…’, 表示 Broker 已成功启动。

2024-06-13 21:16:32 887

原创 Centos7安装Docker CE

【代码】Centos7安装Docker CE。

2024-04-29 16:41:06 194

原创 HashMap的put方法执行过程

根据Key通过哈希算法与与运算得出数组下标如果数组下标位置元素为空,则将key和value封装为Entry对象(JDK1.7中是Entry对象,JDK1.8中是Node对象)并放⼊该位置如果数组下标位置元素不为空,则要分情况讨论a. 如果是JDK1.7,则先判断是否需要扩容,如果要扩容就进⾏扩容,如果不⽤扩容就⽣成Entry对象,并使⽤头插法添加到当前位置的链表中b. 如果是JDK1.8,则会先判断当前位置上的Node的类型,看是红⿊树Node,还是链表Nodeⅰ. 如果是红⿊树Node,

2024-02-22 11:03:14 515

原创 Java中重写与重载的区别

定义参数返回值发生位置编译时决定目的重载在同一个类中,方法名相同但参数列表不同的一组方法。参数列表不同,包括参数类型、参数个数、参数顺序返回值可以相同也可以不同。在同一个类中发生。编译器根据调用时的参数列表决定调用哪个重载方法。提供不同的方法重载,用于处理不同的参数类型、个数等情况。重写在继承关系中,子类重新定义父类中已经存在的方法。参数列表相同返回值必须相同。在继承关系中子类中发生。运行时决定,根据对象的实际类型决定调用父类方法还是子类方法。子类

2024-02-22 10:19:43 465

原创 spring操作redis工具类

【代码】spring操作redis工具类。

2024-02-20 10:44:06 487

原创 RabbitMQ如何保证可靠

即:当消费者处理消息结束后,应该向RabbitMQ发送一个回执,告知RabbitMQ自己消息处理状态。因此大多数情况下我们需要将消息处理的代码通过try catch机制捕获,消息处理成功时返回ack,处理失败时返回nack.如果消费者再次执行依然出错,消息会再次requeue到队列,再次投递,直到消息处理成功为止。为了解决这个问题,从RabbitMQ的3.6.0版本开始,就增加了Lazy Queues的模式,也就是惰性队列。为了提升性能,默认情况下MQ的数据都是在内存存储的临时数据,重启后就会消失。

2024-02-16 10:21:14 2226

原创 RabbitMQ配置消息转换器

【代码】RabbitMQ配置消息转换器。

2024-02-15 18:32:55 1001 1

原创 springboot声明(创建)RabbitMQ交换机和队列

在之前我们都是基于RabbitMQ控制台来创建队列、交换机。但是在实际开发时,队列和交换机是程序员定义的,将来项目上线,又要交给运维去创建。那么程序员就需要把程序中运行的所有队列和交换机都写下来,交给运维。在这个过程中是很容易出现错误的。因此推荐的做法是由程序启动时检查队列和交换机是否存在,如果不存在自动创建。

2024-02-15 18:16:14 1436

原创 RabbitMQ交换机

添加队列fanout.queue1。添加队列fanout.queue2。添加交换机harry.fanout。添加队列direct.queue1。添加队列direct.queue2。添加交换机harry.direct。添加队列direct.queue1。添加队列direct.queue2。添加交换机harry.direct。

2024-02-15 17:47:44 1113 1

原创 Docker安装RabbitMQ

默认用户名:guest。默认密码:guest。

2024-02-15 16:24:39 746

原创 linux 定时同步 aliyun 时间

【代码】linux 定时同步 aliyun 时间。

2023-09-04 17:16:28 269

原创 Hive 服务管理脚本

【代码】Hive 服务管理脚本。

2023-08-29 10:53:28 558

原创 Hadoop服务脚本

【代码】Hadoop服务脚本。

2023-08-28 18:18:39 822

原创 Flink1.17.1消费kafka3.5中的数据出现问题Failed to get metadata for topics [flink].

【代码】Flink1.17.1消费kafka3.5中的数据出现问题Failed to get metadata for topics [flink].

2023-08-22 18:02:46 2579

原创 在 docker 中快速启动 Apache Hive

在伪分布式模式下,在Docker容器内运行Apache Hive,可以提供以下功能:快速启动/调试/为Hive准备测试环境。

2023-08-14 19:18:53 3797

原创 springboot笔记

创建一个实现接口的自定义过滤器类。// 初始化方法 } @Override public void doFilter(ServletRequest request , ServletResponse response , FilterChain chain) throws IOException , ServletException {// 在这里编写对请求的处理逻辑 // 继续调用过滤器链 chain . doFilter(request , response);// 销毁方法 } }

2023-07-21 11:37:57 201

原创 Linux 安装 Docker CE

【代码】Linux 安装 Docker CE。

2023-06-28 18:35:45 1219

原创 测试 synchronized 的买票案例

测试 synchronized 的买票案例

2023-02-13 17:19:41 254

原创 mysql8设置简单密码

在MySQL8中得先休修改一个符合要求的密码。

2023-01-15 17:06:01 1503

原创 mybatis全局配置文件中映射文件常用的有三种方式

mybatis配置mapper.xml文件三种方式

2022-12-24 11:11:32 475

原创 floor 和 round 函数

floor 与 round

2022-12-12 11:21:42 241

原创 Maxwell 入门文档(看这一篇就足够了)

maxwell 入门文档,看这一篇足矣

2022-10-01 16:45:11 2476

原创 Flume 部署(1.9.0 入门版)

Flume 部署(1.9.0 入门版)适合新手安装

2022-09-27 16:25:38 1005

原创 Kafka 集群部署(3.0.0 入门版)

kafka 3.0.0 集群部署 适合新手入门

2022-09-27 10:50:07 864

原创 Zookeeper 完全分布式(3.5.7)部署(清爽版)

zookeeper 3.5.7 完全分布式安装 小白入门

2022-09-27 10:15:47 876

原创 Hadoop 完全分布式(3.1.3)部署(清爽版)

清爽版

2022-09-26 18:20:53 1732 1

原创 数仓项目

https://gitee.com/chenL_space/E-commerceOfflineDataWarehouse

2022-09-25 18:13:11 150

原创 Linux 环境变量配置说明

不管是login shell还是non-login shell,启动时都会加载/etc/profile.d/*.sh中的环境变量。

2022-09-25 17:41:20 240

原创 windows 运行 spark报错,缺少 hadoop 文件

一般都是因为缺少:这两个文件。

2022-09-22 18:00:46 991

原创 zookeeper leader选举机制

node1启动,发起一次选举,先投自己1票。。。。。。

2022-09-22 11:22:54 452

原创 zookeeper客户端命令行操作

zookeeper客户端命令行操作

2022-09-22 10:34:49 496

空空如也

空空如也

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

TA关注的人

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