自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 全网首发!大厂员工带你实现Java POI实现Word多分节下页眉页脚页码隔离

本文介绍了如何使用Java POI库在Word文档中创建多个分节,并为每个分节设置不同的页眉和页脚。通过XWPFHeaderFooterPolicy类,可以为每个分节创建独立的页眉和页脚文件,并通过CTSectPr将页眉页脚与特定分节绑定。代码示例展示了如何创建多个分节、设置页脚内容、绑定页脚,并处理分页符和分节符的差异。此外,还提供了封装后的代码版本,简化了分节配置和页眉页脚的设置过程,适用于需要处理多个分节的复杂文档场景。

2025-05-11 12:36:42 297

原创 SpringBoot+SseEmitter实现SSE实时推送

场景服务端行为客户端行为30秒内服务端无消息30秒后触发超时,关闭连接5秒后重连,建立新连接30秒内服务端有消息连接保持,重置超时计时器无需重连客户端主动断开触发,清理资源立即尝试重连(依赖retry配置)网络中断下次发送消息时抛出检测到断开后按retry重试。

2025-02-22 14:56:54 5729 3

原创 容器、pod和缓存

为了防止容器重启导致缓存丢失,应该将缓存存储到持久化存储卷(PV)上,而不是依赖容器本地的临时文件系统。这样,你就能保证容器重启后,缓存数据得以保留。将缓存存储在持久化存储卷(PV)上确实会导致读取速度比直接从内存读取要慢一些,但如果使用的是 SSD 或高性能存储,性能差异通常是可以接受的。如果对缓存访问速度有更高的要求,可以结合使用内存存储和持久化存储来平衡性能和持久性。通过 Kubernetes 的PV和PVC,你可以在 Pod 中使用持久化存储,而不需要修改应用代码。

2025-02-15 11:30:29 1248

原创 concurrentHasMap为什么不允许kv为null

当 null 被允许作为键时,可能会引发一些歧义。在多线程环境下,查询某个键的值时,如果该键不存在,它通常返回 null。但如果允许 null 作为键,那么你无法区分:键不存在:返回 null键存在且值为 null:返回 null。

2025-02-04 11:59:46 190

原创 一文带你详细了解git rebase和git merge原理以及使用场景

和只会影响当前分支,它们操作的是本地的master分支,不会自动从远程拉取更新。如果需要从远程获取更新,你需要手动执行或以确保本地的master分支是最新的。是将master分支的更改应用到feature分支的过程,通常是为了确保feature分支的开发基于master分支的最新修改。如果你正在进行开发并想保持分支的线性历史,使用rebase操作是一个有效的策略。(在feature分支上执行)是将feature分支的更改应用到master分支上。(在 IDEA 中执行)是将master。

2025-01-27 02:01:21 1005

原创 kafka mirror maker之实现两个kafka集群之间的数据同步

Kafka MirrorMaker 是 Apache Kafka 提供的一个用于在不同 Kafka 集群之间复制数据的工具。它的主要用途是在多个数据中心、地理位置或集群之间实现数据同步和冗余,以提升数据的高可用性和容灾能力。以下是关于 Kafka MirrorMaker 的详细介绍。Kafka MirrorMaker 是一个非常有用的工具,用于在不同 Kafka 集群之间进行数据复制和同步。无论是简单的集群间数据传输,还是复杂的多数据中心部署,MirrorMaker 都能提供可靠的解决方案。

2024-09-14 17:59:26 2021 1

原创 我不小心污染公司gitlab的master分支怎么办?详细教你恢复

idea上删除本地分支,然后再将远程分支pull到本地即可。

2024-09-11 11:06:03 528

原创 扫库任务存在的问题

现在有一个扫库的定时任务,匹配条件是A表的sync字段为0且relId不为空,一次性扫描200条记录,然后按照主键id生序排列,会利用这批记录的relId字段去匹配B表的dataOriginId,因为dataOriginId的字段可能为空,所以这部分记录会失败,下次再扫描的时候这部分记录还是存在。

2024-08-22 09:23:11 261

原创 初始化接口VS增量同步实现全量同步VS全量同步VS导数完成数据初始化需求

作为数据中台,下游对接的系统一张新表,需要用到全量的数据,大概有15w左右,现在的状态是我已经写好了增量同步的需求,但是初始化需求因为刚开始没有沟通清楚导致现在临时加东西。

2024-08-20 17:21:15 509

原创 xxl-job的分片广播+单播及其应用实战

Bean 调度策略主要用于定义任务的实际执行逻辑。在 Spring 项目中,通常通过@XxlJob注解将某个方法注册为 XXL-JOB 的 JobHandler。@Component在 XXL-JOB 管理后台中,配置任务的 JobHandler 为,这个任务就会执行上述类中的execute方法。Bean 调度策略。

2024-08-17 00:56:25 1613

原创 mysql批量更新唯一键的失败行为和解决方案

在这种情况下,由于您要对具有唯一索引的namename = ACname = BACB然后根据返回的结果来决定是否进行更新。需要注意的是,在实际操作中,一定要先在测试环境中进行充分的测试,以确保更新操作的正确性和数据的安全性。对于(一),可以将发生冲突的记录收集起来作为响应,这样以方便调用方处理,同时打印日志用于分析和处理冲突。

2024-08-15 23:42:36 988

原创 关于主键设置为bigint unsigned,在java中用什么承接呢?

在 MySQL 数据库中,可表示的范围是 0 到 18,446,744,073,709,551,615。在 Java 中,long类型的取值范围是到,不能完全覆盖的范围。

2024-08-15 12:38:50 721

原创 spring同一个接口如何分页实现主表或主+联表group by查询

这样,我们就成功地实现了一个能够兼容旧功能并支持新功能的查询接口。通过在请求体中新增一个子表的查询字段来扩展逻辑,确保最大限度的代码复用和功能扩展。

2024-08-10 15:01:12 414

原创 关于数据库连接池超时时间设置的合理值讨论

快速失败短超时时间(如 100ms 或更短)能确保在数据库连接耗尽的情况下,线程会快速失败,释放资源,保持系统的敏捷性。动态调整对于每个系统,最佳的超时时间可能不同。在实际环境中,可以从100ms开始,逐步观察系统行为和性能,逐渐调整至最适设置。负载监控与调优不断监控系统负载和数据库连接池的使用情况,并相应优化连接池的配置参数(如最大连接数、释放策略等)。整体优化除了调整超时时间,还应评估数据库查询效率、索引优化、应用程序逻辑等因素,以降低数据库压力和提高应用响应能力。

2024-08-02 21:29:29 1338

原创 细说java17新特性

要定义一个密封类或接口,需要使用sealed修饰符,并在声明中指定允许扩展或实现它的其他类或接口(使用permits子句)。子类或子接口可以使用finalsealed或non-sealed修饰符来进一步控制扩展或实现。密封类和密封接口通过限制继承和实现,提供了一种强有力的工具来增强代码的封装性、可读性和可维护性。这种特性在复杂的类型层次结构和公共API设计中尤为有用,使得代码设计更加受控和安全。结合模式匹配,密封类可以显著简化代码逻辑,提高代码的执行效率和安全性。

2024-07-31 15:38:40 861

原创 后端程序员常犯的错误-本地缓存相关bug和技术思考

(1)主要有两个,一个是当rpc调用异常的时候,会被try捕获并且直接return一个实例化的user对象,然后触发@Cacheable注解定义的本地缓存机制,导致异常调用的时候,对象也被缓存,随后直至本地缓存中该条目过期,后面的请求才会发起rpc请求更新缓存,所以。(2)rpc是暂时故障,被调用方会进行迅速(秒级)的故障转移,比如重启、切换,在故障切换期间。(2)rpc调用成功但是返回了一个空对象,这个时候我直接返回的是null值,,如果某一波大流量打进来,rpc服务甚至会挂掉,这个时候会发生缓存击穿。

2024-07-31 08:50:24 1142 2

原创 大厂开发必知必会:Devops、CI/CD、流水线、Paas和云原生的关系解析说明

定义:持续集成是一种软件开发实践,开发人员频繁地(通常每天)将代码集成到主干分支中。每次集成都通过自动化构建和测试来验证,从而尽早发现问题。目的:通过频繁的集成,减少集成问题,使开发人员能够更快地发现和修复错误,从而提高软件质量和开发效率。CI(持续集成)和CD(持续交付/持续部署)的配置是在不同的阶段和场景下进行的。DevOps是一种文化和实践,强调开发(Development)和运维(Operations)团队之间的协作和沟通,通过自动化和持续交付来提升软件开发和交付的效率和质量。

2024-07-05 21:22:45 1529

原创 mac中如何恢复因为破解脚本导致的IDEA无法启动的问题

为了在mac中安装免费的2024版idea,导致下载了一个脚本,使用这个脚本后,但是发现idea还没有破解,相反导致idea无法启动,每次点击,都会弹出“cannot start IDE…”

2024-07-03 10:53:58 2805

原创 关于DDD设计模式的各种疑问:什么是DDD架构?

DDD关注于创建一个反映领域复杂性的丰富模型,主要应对业务逻辑的复杂性。DCI侧重于提高代码的可读性和对用户行为的模拟,关注点在于行为的组织和表达。CQRS关注于提升数据操作的效率,通过物理和逻辑上的分离来优化读写操作的性能。这三者可以相互补充,在同一个项目中根据不同的需求采用不同的模式来达到最优的设计和实现。例如,在一个采用DDD的系统中,可以实现CQRS来优化数据处理,并通过DCI来改进某些特定用例的代码表达和行为模拟。聚合是一个或多个相关对象的集合,它们一起被视为数据修改的一个单元。

2024-04-17 21:17:56 4023 1

原创 【小红书校招场景题】12306抢票系统

对于后端开发人员来说,开发和维护一个高铁抢票系统(如中国的12306)会面临一系列的挑战和情况。这些挑战主要涉及系统的性能、稳定性、数据一致性和用户体验。这些挑战要求后端开发人员不仅要有扎实的编程和系统设计能力,还需要对分布式系统、网络安全和数据库管理有深入的了解。同时,创新和持续优化也是维持系统长期运行的关键。

2024-04-12 10:52:11 1408

原创 秒杀系统之存储商品价格应该用什么数据结构?

选择存储商品价格的数据结构取决于几个因素,包括应用的需求、对价格的访问方式、更新频率、以及是否需要支持快速查找、插入或删除操作。

2024-04-11 20:30:32 1162

原创 【京东、字节后端二面】讨论不同的系统性能瓶颈点:流量增加时,秒杀系统的性能瓶颈在哪里呢?

因此,短链接系统的性能瓶颈主要在数据库,因为其主要任务是数据的存储和快速检索,而秒杀系统的瓶颈在于业务服务器,因为需要同时处理高并发和复杂的业务逻辑。在设计这些系统时,必须考虑到各自的业务特点和技术需求,采取不同的优化策略来确保系统的稳定性和高效性。

2024-04-11 17:39:12 988

原创 能ping通域名,但用浏览器访问不了是怎么回事?

ping(IP)是三层协议,浏览器用的HTTP(TCP)是四层协议,底层协议能通上层不见得通。大概相当于你打电话能打通,听道对方响铃,但没人接。为啥没人接啊?别问我啊,我也不知道。

2024-03-02 12:03:38 3086

原创 leetcode上两个字符串之间的动态规划类题目

一般我们都知道给定一个字符串s,当我们固定以当前索引i为子串的结尾时,则这种固定方法一共有n种,假设我们称这N个子串为;一般字符串之间的动态规划涉及到两个字符串,且涉及到S的结尾子串和T结尾子串的转换问题,那么两个字符串的所有一共有n^2级别的转换组合,且长度更大的结尾子串之间的转换一般会利用到短串之间的转换数值。所以这个时候我们定义的。

2024-01-20 15:36:17 529

原创 动态规划中如何利用map进行降维

利用前缀和求解的lc题目汇总,利用map进行dp降维

2024-01-12 19:10:26 506

原创 利用前缀和求解的lc题目汇总

前缀和是解决连续子数组的和的要注意map的初始化条件一般为map.put(0,1)表示考虑当前元素本身作为一个子数组符合对k的相关性质的情况。

2024-01-12 19:03:03 586

原创 在矩阵回溯中进行累加和比较的注意点

在回溯时,如果递归函数采用void返回,在入口处使用了sum变量,那么一般在初次调用dfs的地方,这个sum的初始值可能不是0,而是数组的对应指针的值,在比较操作的时候,需要在for循环开始之前进行,这样确保不遗漏corner case从代码中我们可以看到比较值更新msum(msum=Math.max(msum,sum+grid[nx][ny]);)的时机不对,如果有一个非0值的周围都是0值,那么这个值本身没有参与比较,即潜在的最大值可能被忽略

2024-01-12 13:18:28 504

原创 贪心算法的“左最优“与“右最优“及其对应的堆处理和预处理方法

在每一步选择中,总是选择最左边(最早出现的)可行的选项。在每一步选择中,总是选择最右边(最晚出现的)可行的选项。这两种策略是贪心算法中根据具体问题选择的不同方向。

2024-01-09 11:50:11 596

原创 微服务系统面经之四: 以秒杀系统为例 - 用户秒杀状态的通知【京东支付后端一面】

使用异步消息系统,在用户发起秒杀请求后,可以迅速响应,然后在后台异步处理请求,并最终将处理结果返回给用户。这种方式不仅提高了系统的处理能力和伸缩性,还能提供更好的用户体验。在设计秒杀系统时,异步处理机制是提高系统性能的关键之一。WebSocket和SSE更适合需要实时通信的场景,如秒杀系统,它们可以减少延迟并提高用户体验。轮询更适合简单应用或对实时性要求不高的场景。尽管它的效率相对较低,但在一些场景中仍然是一个可行的解决方案。在选择合适的技术时,需要根据应用的具体需求和现有架构来决定。

2024-01-08 23:50:20 1505

原创 leetcode网格题目中的上下左右四个方向和旋转90度的数量关系的代码表示

这里, 表示向上移动, 表示向右移动, 表示向下移动, 表示向左移动。1.2 方向数组的一维表示方法一维数组表示:另一种方法是使用一维数组结合模运算来表示方向。例如,可以定义一个一维数组 和 ,分别表示 x 轴和 y 轴的变化:这里的数组同样表示上、右、下、左四个方向。1.3 旋转的处理初始化方向:假设机器人最初面向北方,可以用一个变量 来表示当前方向,初始设为 (表示向右)。右旋转 90 度:向右旋转意味着 的值增加 1。可以使用模运算来确保 的值不超过方向数组的长度:左

2024-01-08 22:45:30 1312

原创 “分组循环“方式来对数组完成一次遍历【解题模板带你减少一半coding时间】

推荐大家记住。适用场景:按照题目要求,数组会被分割成若干段,且每一段的判断/处理逻辑是一样的。注:虽然代码写的是一个二重循环,但 i += 1 这句话至多执行 nnn 次,所以总的时间复杂度仍然是 O(n) 的。

2024-01-08 20:09:00 1209

原创 常见的并查集题目

并查集逻辑实现的优化有两种,第一种是查找时路径压缩,第二种是按秩合并,合并时将高度较小的树作为较高树的子树,从代码量来看,推荐使用路径压缩,可以参考lc 547. 省份数量的两种UnionFind写法。

2024-01-04 14:28:45 667

原创 leetcode上的“深拷贝类”题目

*int val;Node next;node=head;while(node!

2024-01-03 12:03:09 471

原创 leetcode中的状态机类型的题目

先是要确定新区间插入到哪一个位置(也有可能),插入后需要确定这个区间是否涉及到合并问题。所以我们可以设计一个flag变量,确定区间是否插入,插入完成则进行到区间合并阶段。

2023-12-23 12:03:18 566

原创 【后端】系统设计类题目汇总五

设计一个点赞系统需要考虑多个方面,包括数据库设计、存储选择、高并发处理、容错机制等。以下是一个高层次的设计方案:点赞记录表:内容统计表:使用缓存:异步处理:分布式锁:事务管理:冗余和备份:数据库分片(Sharding):负载均衡:防止重复点赞:接口限流:设计一个点赞系统是一个复杂的任务,需要考虑性能、可扩展性、容错能力和数据一致性等多个方面。通过结合关系型和NoSQL数据库、实施缓存和异步处理、以及采取适当的容错和安全措施,可以构建一个高效且稳定的点赞系统。

2023-12-11 14:19:42 476

原创 腾讯字节常考的linux命令

ps -ef。

2023-12-10 21:32:07 169

原创 【面试常考题目】五种方法解决“如何在n个无序数组中找出它的中位数(java)”问题

合并的时候先将各个数组排序,然后采用n路归并的方式不断的将有序值取出(会用到数组指针,每一个元素对应其数组被取出元素的进度),直至取出到总长度的一半,时间复杂度为(n*logx)+O(TL),其中前者为各个数组的排序的时间复杂度之和(假设最长的数组长度为x),后者为这n个数组的总长度。这种方法的时间复杂度主要由优先队列的操作决定,即O(n log k),其中n是所有数组中总元素的数量,k是数组的数量。您的方法是一个有效的解决方案,它结合了排序和n路归并排序的思想来找到多个数组中的中位数。

2023-12-08 13:36:03 1238

原创 深入理解mysql的explain命令

index:全索引扫描,和ALL类似,只不过index是全盘扫描了索引的数据。在第一个例子中,查询可以完全通过索引来满足,而在第二个例子中,虽然查询利用了索引的顺序,但仍然需要访问表中的额外数据。:这表示查询仅通过索引来获取所需的数据,而无需额外读取表中的数据行。这通常发生在覆盖索引的情况下,即查询的所有字段都包含在索引中。通过理解这些值的含义,可以更好地分析查询效率,并在必要时进行相应的优化。展示当前查询可以使用哪些索引,这一列的数据是在优化过程的早期创建的,因此有些索引可能对于后续优化过程是没用的。

2023-12-07 12:01:16 656

原创 spring security面经-字节飞书生产力工具后端一面

自定义安全表达式示例:在Spring Security中,你可以定义自己的安全表达式来进行更复杂的权限检查。// 业务逻辑在这个例子中,注解使用了一个自定义的表达式,其中调用了一个自定义的安全服务()的方法,以检查当前用户(principal)是否满足特定条件。这样,你就可以将业务逻辑与安全逻辑相结合,实现更灵活的权限控制。

2023-12-06 11:19:46 583

原创 “快慢指针”思想在物理或者逻辑循环中的应用: 为什么用快慢指针而不使用set集合判定循环?

物理循环是指物理索引访问顺序上相邻,逻辑上也相邻,比如循环链表,逻辑循环则指物理的索引上不一定相邻。

2023-12-05 21:10:45 987

四大顶会之一的ndss论文<<Large Language Model guided Protocol Fuzzing>>

网络安全,结合大模型技术和传统的fuzzing方法,对协议进行fuzzing

2023-11-02

important.html

important.html

2022-11-11

空空如也

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

TA关注的人

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