- 博客(358)
- 收藏
- 关注
原创 牛客春招刷题训练营 算法 Java 3月28日 不要三句号的歪 尼科彻斯定理 隐匿社交网络
第一次切割 我们将字符串切割成左右两部分 切割字符串 ",...,"两个二进制的表示在每一位上不能同时为 1 的两个数按位与运算是 0。合并后 看一下最大的子集的元素个数 就得出了我们需要的答案。然后 后面那个数组的第一部分 减去前面数组的最后一部分。按位与操作运算得到的结果是 0 的两个数不能合并。第二次切割 我们将左边的字符串按 "," 切割。第三次切割 我们将右边的字符串按 "," 切割。只要是有某一位上的数都是 1 就进行合并。所以我们找到了每一位的数。这是我们写的第一个方法。
2025-04-02 19:04:05
235
原创 牛客春招刷题训练营 算法 Java 3月27日 杨辉三角的变形 计算日期到天数转换 而后单调
用 get 方法获取时间 传入的属性是字符串(成员变量)我这边直接调用的Calendar 类。首先获得 Calendar 单例对象。然后用 set 方法挂载属性值。其次有两个相邻元素一样的不行。我们打个表就不难发现规律。首先严格递增的序列不行。
2025-04-02 19:03:32
191
原创 深入理解 Java 静态代理 代码实现
在不改变原有方法的代码上 实现一个代理类。代理可以理解成是对一个方法的加强。首先我们要理解什么是代理。同时重写接口里面的方法。
2025-04-01 01:06:36
90
原创 类加载 双亲委派机制 源码解析Tomcat的类加载机制
我们常说的是 一个类的加载 第一步就是加载加载阶段 我们会将类的,class 文件加载到 JVM 里面在这个阶段JVM 会根据类的全限类名来获取定义该类的二进制字节流并且将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构这个加载过程会创建一个 java.lang.Class 类的实例来表示这个类这个 Class 对象作为的事程序中每个类的数据访问入口。
2025-04-01 00:22:11
898
原创 Java设计模式 简单工厂模式 工厂方法模式 抽象工厂模式 模版工厂模式 模式对比
核心思想:创建相关或依赖对象的家族,无需指定具体类典型场景:跨平台UI组件、数据库访问套件// 抽象工厂// 具体工厂(Windows风格)// 具体工厂(Mac风格)// 产品体系public void paint() { System.out.println("Windows按钮");public void check() { System.out.println("Mac复选框");特点✅ 保证产品兼容性✅ 产品族一致性控制❌ 扩展新产品族困难。
2025-03-31 10:38:01
616
原创 BeanDefinition和Beanfactory实现一个简单的bean容器
Spring 包含并管理应用对象的配置和生命周期,在这个意义上它是一种用于承载对象的容器,你可以配置你的每个 Bean 对象是如何被创建的,这些 Bean 可以创建一个单独的实例或者每次需要时都生成一个新的实例,以及它们是如何相互关联构建和使用的。如果一个 Bean 对象交给 Spring 容器管理,那么这个 Bean 对象就应该以类似零件的方式被拆解后存放到 Bean 的定义中,这样相当于一种把对象解耦的操作,可以由 Spring 更加容易的管理,就像处理循环依赖等操作。
2025-03-30 23:39:16
646
原创 JVM Java类加载 isInstance instanceof 的区别
instanceof关键字编译时需明确ClassA的类名(必须存在),否则编译失败。示例// trueClass类的方法支持运行时动态确定类型(通过反射或变量传递类名)。示例// true差异维度instanceof本质关键字Class类方法类型检查时机编译时静态运行时动态动态类型支持不支持支持(反射、泛型)代码灵活性固定类名类名可变量传递或反射获取通过合理选择两者,可以兼顾代码的简洁性与动态灵活性。
2025-03-29 12:01:44
651
原创 深入理解 Java 类加载机制
加载,这是由类加载器执行的,该步骤将查找字节码(通常在classpath所指定的路径中查找,但这并非是必需的),并从这些字节码中创建一个Class对象。链接。在链接阶段将验证类中的字节码,为静态域分布存储空间,并且如果必需的话,将解析这个类创建的对其他类的所有引用。初始化。如果该类具有超类,则对其初始化,执行静态初始化器和静态初始化块。
2025-03-29 12:01:03
384
原创 linux删除文件 相关
rm(remove)是用于删除文件或目录的常用命令。rm [-dfirv][--help][--version][文件或目录...]。
2025-03-28 02:06:25
774
原创 Linux常见定时任务命令 系统级别的定时任务
crontab是一个常用的定时任务管理工具,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于crontab文件中,以供之后读取和执行。通常,crond守护进程会在后台运行,每分钟检查是否有预定的作业需要执行。at命令用于设置在某个特定的时间点执行一次性的任务。
2025-03-28 02:05:27
488
原创 Linux常见docker命令整理 容器 镜像
在执行停止和删除容器的操作之前,了解 Docker 容器的不同状态十分重要。容器主要有以下几种状态,其中停止(Exited)状态表示容器已停止运行,但仍然存在于 Docker 主机上。在 Linux 系统中,若要停止并删除所有 Docker 容器,可按以下步骤进行,同时要注意这些操作可能需要管理员权限。除了删除容器外,还可以使用 Docker 的清理命令来释放其他未使用的资源,如镜像、网络和卷。使用以下命令列出所有正在运行的容器的 ID,然后通过。以安静模式列出所有容器(包括已停止的)的 ID,
2025-03-28 01:57:39
822
原创 Linux配置静态站点nginx
Nginx 是一款轻量级的高性能 Web 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序员伊戈尔·赛索耶夫(Igor Sysoev)开发,于 2004 年首次公开发布。它以其高并发处理能力、低内存消耗和稳定性而受到广泛关注和应用。
2025-03-27 01:47:13
886
原创 使用事件监听器来处理并发环境中RabbitMQ的同步响应问题
@RabbitListener 是 Spring AMQP 提供的核心注解,用于简化 RabbitMQ 消息监听器的创建。以下是对 @RabbitListener(queues = "balloonWords.queue") 的详细解析:一、基础功能队列监听通过 queues 属性指定监听的队列名称(如 "balloonWords.queue" )。若队列不存在,需配合 @Queue 注解声明队列:@RabbitListener(queuesToDeclare = @Queue("balloo
2025-03-25 20:10:09
548
原创 Springboot整合elasticsearch详解 封装模版 仓库方法 如何在linux里安装elasticsearch
Field 字段注解中打上标识 表示elasticsearch中可能要进行全文搜索的字段。@Document 类注解中标注其索引(在 elasticsearch 中指的是表名)、elasticsearchTemplate 是 Java 提供的模版工具类。关于ElasticSearch的9200和9300端口区别。要使其变为 elasticsearch 可以识别的包装类。注意我们要将包装类和主键类型作为参数传入。ES集群之间是通过9300进行通讯。来直接调用父类方法中的增删改查方法。
2025-03-25 19:54:08
436
原创 雨锈代码
写到最后章节那夜,我的机械键盘恰巧进了水。在拆开键帽烘干的漫长时光里,我突然理解了这个故事真正的悲剧核——我们永远无法在现实世界按下Ctrl+Z,那些被命名为"青春"的疼痛文件,即便清空回收站三十次,依然会在某个雨夜通过内存通道,精准覆盖此刻的心跳频率。就像青衣始终没学会修复情感系统的内存泄漏,而多多至死都在等待加载完成的进度条,他们共同构成了人类最古老也最年轻的未定义函数。
2025-03-25 19:28:25
244
原创 至此,他19岁青春烙印上了苦涩的烧痕。
高考放榜那天下着冰雹,青衣攥着中戏录取通知冲进雨里。多多家的小超市卷帘门紧闭,玻璃橱窗上贴着“旺铺转让”。邻居大婶从麻将桌后探头:“他们家厂子倒了,昨夜里搬去深圳躲债......”琵琶弦就是在那一刻绷断的。青衣站在淹水的巷口,看自己浸泡在污水中的倒影——凤冠上的绒球吸饱泥浆,像一串腐烂的杨梅。手机在口袋里震动,多多最后的信息还躺在收件箱:“青衣,别学《长生殿》里等成石头。
2025-03-25 19:11:43
857
原创 死亡并不是走出生命 而是走出时间
2022年春天的扬州东关街,青衣在文昌阁古槐下调试着「时间胶囊」算法。这个能将人类记忆转化为数据流的程序,是他用三年时间对抗渐冻症的武器。屏幕蓝光映着他凹陷的颧骨,直到多多支着画架撞翻他的保温杯——泼洒的褐色药汁在青石板上蜿蜒成莫比乌斯环的形状。"你的眼睛像被上帝调试过的代码。多多用钛白颜料修补着《瘦西湖昼夜图》,画布上24帧不同光的水面正吞噬着青衣的倒影。多多总说画家是时间的盗贼,用亚麻布封印晨昏的切片,而程序员青衣则是时间的囚徒,被困在Java铸就的沙漏里。
2025-03-25 19:04:18
344
原创 Java并发编程 什么是分布式锁 跟其他的锁有什么区别 底层原理 实战讲解
分布式锁是一种在分布式系统中协调多进程/节点对共享资源进行互斥访问的机制。其核心作用是确保同一时间只有一个进程能够操作共享资源,解决分布式环境下的并发冲突问题(如超卖、数据覆盖等)。分布式锁通过外部存储系统实现跨进程资源互斥,需权衡性能、一致性和复杂度。Redis适合高频低一致性要求的场景,ZooKeeper适用于强一致性但低并发场景,而数据库锁仅作为简单场景的备选。实际选型需结合业务需求和容错能力(如Redisson整合Redis的方案较优)。
2025-03-25 18:46:59
666
原创 JavaEE企业级开发 延迟双删+版本号机制(乐观锁) 事务保证redis和mysql的数据一致性 示例
在起草这篇博客之前我做了点功课这边我写的是一个示例代码数据层都写成了 mock 的形式(来源于 JUnit5)// Dduo// 数据服务类// 模拟缓存(实际使用Redis等实现)// 延迟双删线程池// 模拟数据库,使用一个 Map 来存储数据记录// 数据记录类,包含数据的基本信息和版本号return id;// 模拟从数据库获取数据// 模拟数据库更新操作,更新数据并更新版本号// 检查版本号是否匹配。
2025-03-25 18:24:00
1019
原创 Springboot应用配置github自动流部署 深入理解CI/CD:构建、测试和部署的自动化完整流程
持续集成通过自动化的流程和工具,提高软件开发的效率、质量和交付速度。持续集成是开发团队通过将代码的不同部分集成到共享存储库中,并频繁地进行构建和测试,以确保代码的一致性和稳定性。持续交付持续交付建立在持续集成的基础上,通过自动化的流程确保软件可以随时随地进行部署。
2025-03-25 15:08:05
1078
原创 牛客春招刷题训练营 3月25日 Java 查找两个字符串a,b中的最长公共子串 构造C的歪
牛客春招刷题训练营# +子串必须是连续的那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到可以跟力扣上的最长公共子序列类比差不多可以做一下力扣 1143 子串必须是连续的那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到可以跟力扣上的最长公共子序列类比差不多可以做一下力扣 1143 子串必须是连续的那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到可以跟力扣上的最长公共子序列类比差不多可以做一下力扣 114
2025-03-25 14:14:27
209
原创 算法入门 经典DP 力扣1143 最长公共子序列 拓展最长子串 Java
它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到。那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到。否则则顺延 dp[i-1][j] 和 dp[i][j-1]在字符串中可以不是连续的。
2025-03-25 13:48:34
290
原创 保姆级教程 在linux上启动Docker并且使用IntelliJ DockerCompose一键部署Springboot应用 常见命令
修改 docker.service 文件。Linux用户组是多个用户的集合,通过共享权限和资源访问规则实现集中管理。每个用户必须至少属于一个用户组,且系统中存在三种角色划分:● 文件所有者:创建文件的用户,拥有最高控制权;● 用户所在组:文件所属的默认组,组成员共享权限;● 其他组:既非所有者也不在文件所属组的用户。1. 权限控制用户组通过文件权限位(rwx)实现精细控制: ○ 文件权限分为所有者、所属组、其他组三部分(如 -rw-r--r--) ○ 通过 chmod 命令批量修改组权限(如
2025-03-25 12:22:25
732
原创 牛客春招刷题训练营 3月24日 Java 统计每个月兔子的总数 高精度整数加法 喜欢切数组的红
牛客春招刷题训练营# +很经典的 dp爬楼梯递推写法 喜欢切数组的红可以存一下前缀和为 3 的集合再存一下后缀和为 3 的集合然后遍历看情况符合跑了 500ms
2025-03-25 12:20:23
246
原创 牛客周赛84 题解 Java ABCDE 仅供参考
如果要经过 2 轮得出答案 有 4*4=16 种组合 看一下这些组合有没有得出 0。如果要经过 1 轮得出答案 有 4 种组合 看一下这些组合有没有得出 0。因为数据量很小 我考虑的暴力了一点 直接枚举了每条边都是最长边的情况。最后得到的队列肯定是 01010101 101010... 类似的。首先我们知道的是 两个数如果相同 异或运算得到的数为 0。那么如果现在集合里面有两个一样的数 那么只要再操作一次。如果队列尾部的元素跟要添加的元素不一样。如果队列尾部的元素跟要添加的元素一样。
2025-03-23 21:22:28
408
原创 Java 双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]
在 Java 中,Deque 是一个双端队列接口,它继承自 Queue 接口,支持在队列的两端进行元素的插入、删除和访问操作。LinkedList 是 Deque 接口的一个实现类,下面介绍 Deque<Integer> deque = new LinkedList<>(); 常见的操作。
2025-03-22 21:54:34
505
原创 浅谈canal实例 在docker里面安装canal镜像 Canal监听MySQL数据库变更并同步更新Redis和Elasticsearch 示例
通过以上步骤,Spring Boot应用能够实时监听MySQL变更,并自动同步到Redis和Elasticsearch,保障数据一致性。
2025-03-20 21:27:54
585
原创 完美解决 .UnsatisfiedDependencyException: Error creating bean with name ‘elasticsearchService‘: Unsatisf
从给出的错误信息来看,表明在创建这个 Bean 时,其依赖的无法被正确注入。而深层次的错误是,这意味着 JVM 在运行时找不到这个类,通常是由于类路径问题或者依赖版本不兼容导致的。下面是一些可以尝试的解决办法:Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。Jackson 社区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson 是最流行的 json 解析器之一。Spring MVC 的默认 json 解析器便是 Jackson。
2025-03-20 18:14:50
283
原创 Spring设计模式 八股速记 高层模块底层模块 依赖倒置原则 开闭原则 接口隔离原则
基本定义高层模块不应依赖低层模块,两者都应依赖抽象(接口或抽象类)。抽象不应依赖细节,而细节(具体实现类)应依赖抽象。核心目标通过面向接口编程,打破传统“高层调用低层”的依赖关系,实现模块间解耦。例如:传统依赖:司机类直接调用奔驰车类的方法,导致更换车型需修改司机代码。倒置后:司机依赖“车辆接口”,奔驰车、宝马车均实现该接口,实现灵活扩展。基本定义高层模块不应依赖低层模块,两者都应依赖抽象(接口或抽象类)。抽象不应依赖细节,而细节(具体实现类)应依赖抽象。核心目标。
2025-03-17 07:37:01
884
原创 牛客周赛85 题解 Java ABCDEFG
如果 l 大于紫色末尾 则可以染成紫色 更新紫色末尾为第二段结束的 r。如果第三段的起始 l 大于红色末尾 更新红色末尾为第二段结束的 r。10101 可以 10101 -> 10001 -> 11111。一部分染紫色 一部分染红色 等效于 一部分染红色 一部分染紫色。1010 可以 1010 -> 1110 -> 1111。第一段为红色 那么红色的末尾为 arr[0][2]操作 1001 等效于操作 101。101 可以 101 -> 111。如果第二段的起始 l 小于红色末尾。
2025-03-16 21:45:09
505
1
原创 牛客春招刷题训练营 3月14日 Java 字符个数统计 删除字符串中出现次数最少的字符 四则运算
牛客春招刷题训练营 3月14日 Java 字符个数统计 删除字符串中出现次数最少的字符 四则运算
2025-03-16 16:07:12
120
原创 牛客春招刷题训练营 3月13日 Java 提取不重复的整数 句子逆序 迷宫问题
牛客春招刷题训练营 3月13日 Java 提取不重复的整数 句子逆序 迷宫问题
2025-03-16 16:06:19
445
原创 浅谈Mysql数据库事务操作 用mybatis操作mysql事务 再在Springboot中使用Spring事务控制mysql事务回滚
现在是有三张表第一张表为 t_sentence 表 列有 id content create_time from hot other1 other2 other2第二张表为 t_tags 表 列有 id name from hot other1 other2 other3 create_time第三张表为t_sentence表和t_tags 表的中间表 t_sentence_tag 列有 id sentence_id tag_id create_time现在我要往第一张表里插入数据 现有数据
2025-03-13 21:15:10
649
原创 浅谈RabbitMQ Springboot3后终止自动注入服务 需要手写Bean并实例化bean(SpringBoot启动前) Could not autowire. No beans of ‘Rab
报错 Could not autowire. No beans of 'RabbitAdmin' type found.意思就是这个模版在高版本是需要自己去手写。手写 注册 Bean 注入。Spring 启动流程。
2025-03-09 16:29:08
107
原创 快速上手 代码详解 RabbitMQ简单实战 Spring框架下实现解耦 改造传统服务端代码
它就像是一个“调度员”,将接收到的请求进行初步处理后,调用 Service 层的相应方法来完成具体的业务逻辑。这一层是业务逻辑的核心处理层,负责对 Controller 层传递过来的请求进行具体的业务处理。它会调用 Dao 层的方法来获取所需的数据,并对数据进行必要的处理和转换。在这种方案中,Service 层不再直接将处理后的数据返回给 Controller 层,而是将数据发布到消息队列中,Controller 层再从消息队列中获取数据。监听到消息队列中有新的数据时,会将数据赋值给。
2025-03-07 16:42:25
581
原创 概念|RabbitMQ 消息生命周期 待消费的消息和待应答的消息有什么区别
以上流程体现了RabbitMQ在消息可靠性、灵活路由和异常处理上的核心设计,实际应用中需根据业务场景组合配置参数。如需进一步了解 RabbitMQ 消息生命周期,可参考 关于消费模式的解析或 中的应答机制实验代码。若未持久化且服务崩溃可能丢失。已分配给消费者但未确认(队列中未分配给消费者(消费者未确认且连接中断。可能因队列未持久化丢失。
2025-03-07 16:20:42
809
转载 RabbitMQ控制台详解 中文讲解 软件工业化生产 rabbitmq-management 索引速查
rabbitmq-management是RabbitMq web管理端,用的是erlang的cowboy框架进行开发。web页面包括Overview(概述)Connections(连接)Channels(通道)Exchanges(交换器)Queues(队列)Admin(用户管理)。
2025-03-07 16:14:23
23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人