自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 8 中的 Stream API 使用指南

自从 Java 8 引入了 Stream API,它已经成为处理集合数据的强大工具。Stream API 提供了一种高效且声明式的方式来处理数据集合,使得代码更加简洁和易读。本文将介绍一些常用的 Stream 方法,并通过示例代码来说明它们的使用方法。

2025-04-11 16:16:59 397

原创 rabbitmq从安装到使用

​ -- 限制内存 -- 限制磁盘大小 -- cpu使用百分比限制​ -- 账号/密码 -- 挂载 :持久化路径、日志路径、 配置文件。​ -- 参考docker资料。​ 3.2 正常发送消息。​ 3.3 发送延时消息。

2025-04-11 16:16:29 95

原创 Java集成esProc 集算器实现联查CSV文件获取结果集

至此就大功告成了,感觉比flinkSQL方式更加轻量级,不知是否还有最优解。

2025-04-11 16:15:57 142

原创 Java最详细面试题(全网最全)

直接内存不属于JVM内存,是操作系统的内存,常见于NIO操作,用于数据缓冲区,拥有较高的读写性能,且不受JVM内存回收影响BIO(同步阻塞IO)发送请求后线程一直阻塞,直到数据处理完并返回NIO(同步非阻塞IO)通过一个线程轮询大量socket,当有socket准备就绪时通知客户端,客户端调用函数接收。AIO(异步非阻塞IO)每个请求都会绑定一个Buffer;通知操作系统去完成异步的读(这个时间你就可以去做其他的事情)读完之后会通知客户端来读取数据。

2025-04-11 14:13:42 1313

原创 Java最新总结的面试题,持续更新....

所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出 的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒 底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的 方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这 样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而 导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时 所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

2025-04-10 16:37:49 115

原创 Spring Boot 分布式事务高阶玩法:从入门到精通

分布式事务虽然复杂,但有了 Spring Boot 提供的强大支持,以及像 Seata 这样优秀的框架,我们也能轻松应对。就像掌握了一门高超的魔法,让我们的分布式系统变得更加可靠和强大。希望今天的分享能让大家对 Spring Boot 中的分布式事务有更深入的理解,在开发的道路上一路 “开挂”,解决各种复杂的业务场景。

2025-04-09 16:47:50 292

原创 Node多进程管理

特性clusterpm2是否支持多进程✅✅✅是否共享端口❌(可以通过设置listen()的reusePort选项复用端口,仅某些平台可用)✅✅管理功能❌(需要编码处理故障重启,日志采集等等)❌(需要编码处理故障重启,日志采集等等)✅(进程守护、日志系统、部署等)适用场景执行命令/脚本多核服务部署生产环境部署,守护多实例服务。

2025-04-09 16:47:15 219

原创 反射太慢了?那是你不会用LambdaMetafactory!

在高频使用反射的场景下,常常会有创建临时对象、软引用缓存被gc清空、无法使用JIT优化等问题而导致性能受到影响的情况LambdaMetafactory带来了更加优雅的动态调用方式,虽然会有部分生成内部类的开销,但它解决了长期以来困扰开发者的反射性能问题LambdaMetafactory使用元数据通过ASM字节码库、Unsafe类动态生成匿名内部类,再封装为Methodhandler、CallSite进行使用(同时它也是Lambda语法糖的隐式实现,对于开发者透明)

2025-04-09 16:46:55 852

原创 Java最新面试题总结诶!

实例化:堆内存中申请空间初始化:对象属性赋值1,Spring创建 bean主要分为两个步骤,创建原始bean对象,接着去填充对象属性和初始化。2,每次创建 bean之前,我们都会从缓存中查下有没有该bean,因为是单例,只能有一个。3,当创建 A的原始对象后,并把它放到三级缓存中,接下来就该填充对象属性了,这时候发现依赖了B,接着就又去创建B,同样的流程,创建完B填充属性时又发现它依赖了A又是同样的流程,不同的是:这时候可以在三级缓存中查到刚放进去的原始对象A。

2025-04-09 14:36:49 557

原创 2025Java面试八股文合集(持续更新)

我们使用java编译命令就能将java源文件编译对应成字节码文件(.class),字节码文件是一种八位数据的二进制流文件,可以被JVM快速加载到内存中运行AQS全称abstractQueueSynchronizer,即抽象队列同步器,是一种锁机制,它是作为一个基础框架使用的,像Reentrantlock,countdownlatch都是基于AQS实现的AQS内部维护了一个先进先出的双向队列,队列中存储了排队的线程。

2025-04-03 14:03:44 704

原创 深入剖析 MyBatis-Plus 自动注入封装的实现原理及其创新

MyBatis-Plus 的自动注入功能基于 MyBatis 的MetaObject和插件体系,通过和实现了优雅的字段填充。与传统相比,MP 通过抽象化、注解驱动和参数阶段介入降低了开发复杂度,提升了灵活性和可维护性。这种设计既体现了 MP 的增强理念,也充分利用了 MyBatis 的基础能力。

2025-04-02 17:11:56 896

原创 一学就会!Python链式编程,轻松优化你的代码

简单来说,链式编程(Chaining)是一种通过将多个方法调用连接在一起的编程风格。你可以把它理解为一条流畅的流水线,前一个方法的输出直接传递给下一个方法,而不是每个方法都单独操作。结果是什么?代码简洁、可读性强,反正就是看着顺眼,写起来也舒服。看个简单的例子:假设你在做一个字符串处理,传统写法可能是这样:python代码解读复制代码。

2025-04-02 16:36:46 260

原创 分布式系统中如何保证崩溃一致性?

崩溃一致性是指系统在发生崩溃(例如服务器宕机、进程异常退出或断电)后,能够确保持久化的数据仍然处于一致的有效状态。也就是说,无论何时发生崩溃,系统存储上的数据要么保持崩溃前的完整更新,要么回退到崩溃前的稳定状态,不会出现部分更新导致的数据不完整或损坏。例如,在文件系统或数据库中,如果一次操作需要更新多个位置,崩溃一致性要求不能出现只更新了一部分就崩溃的情况,否则会造成数据结构的不一致。通过保证崩溃一致性,系统在重启恢复后可以正确地继续运行,数据不会因中途崩溃而处于混乱状态。

2025-04-02 16:36:21 775

原创 2025最新整理的Java面试题总结

JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(或者红黑树的边界值,默认为 8)并且当前数组的长度大于64时,此时此索引位置上的所有数据改为使用红黑树存储。CAS 的原理,是拿期望值和原本的值作比较,如果相同,则更新成新的值。

2025-04-02 15:27:00 1423

原创 防止外部API服务不可用拖垮系统的解决方案

在微服务架构中,系统间的API调用是常见场景。当外部API不可用时,如果没有适当的防护措施,可能会导致线程池耗尽、系统响应缓慢甚至整体崩溃。假设我们有一个电商系统,需要调用外部支付服务API来处理订单支付。如果支付服务暂时不可用,我们不希望影响整个订单系统的运行。这种设计确保了即使支付API完全不可用,订单系统仍能继续工作,只是将支付请求标记为"待处理"或"已排队",可以在稍后重试。监控端点(actuator)提供了系统健康状况和断路器状态的实时监控,方便运维人员及时发现问题。

2025-04-01 16:53:35 344

原创 面试官:说下Cookie和Session的关系和区别,以及Token是什么?

首先要先介绍什么是HTTP。HTTP:超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。HTTP 是无状态协议,说明它不能以状态来区分和管理请求和响应。

2025-04-01 16:53:12 778

原创 SpringAI实践(一)

最近看了很多大模型的文章,感觉AI可以能做很多事情,例如RAG(文档检索生成)、Function Calling(模型回调)、MCP(模型上下文协议)、AI链式工作流等,接下来会都动手尝试一下这些功能,探索运用大模型可以拓展哪些能力。实现这些功能需要探索的很多,这里先进行第一步使用SpringAI调用大模型实现对话。

2025-04-01 16:51:49 263

原创 Java最新八股文整理(就业必备)

基本数据类型,如int,float,double,boolean,char,byte,不具备对象的特征,不能调用方法。装箱:将基本类型转换成包装类对象拆箱:将包装类对象转换成基本类型的值java为什么要引入自动装箱和拆箱的功能?主要是用于java集合中,List<Inteter> list=new ArrayList<Integer>();list集合如果要放整数的话,只能放对象,不能放基本类型,因此需要将整数自动装箱成对象。

2025-04-01 15:56:57 1046

原创 深度解析 Spring Boot 配置机制

继承实现自定义配置源:java体验AI代码助手代码解读复制代码} @Override public Object getProperty(String name) { try (Connection conn = getSource().getConnection()) { // 从数据库查询配置 } } }Spring Boot 的配置体系既体现了 "Don't Repeat Yourself" 的设计哲学,又通过灵活的扩展机制满足了企业级应用的复杂需求。

2025-03-27 19:08:38 784

原创 Go调度器原理浅析

Go调度器通过M:N模型在用户态实现高效协程调度,避免了内核态切换的开销。其核心创新在于引入P作为逻辑处理器,结合本地队列、全局队列和工作窃取机制,实现了高并发与低延迟的平衡。

2025-03-27 19:08:02 693

原创 面试复盘:Java内存可见性的底层原理

面试时,我提到MESI和lock时讲得比较简略,举volatile和内存屏障时还算清晰,但没把底层和Java层串联得特别好。先说内存可见性问题的根源(CPU缓存)。讲MESI协议如何解决缓存一致性。说明lock指令如何配合MESI实现同步。最后详细展开volatile的语义和四个内存屏障的作用。

2025-03-27 19:06:55 917

原创 10道大厂Java面试题,必问题

通过分段锁、读写锁分离、CAS 操作和逐步扩容等机制,实现了高并发场景下的线程安全和高效访问。这使得它在处理大量并发读写操作时具有出色的性能表现。// hash 值无符号右移 28位(初始化时获得),然后与 segmentMask=15 做与运算// 其实也就是把高4位与segmentMask(1111)做与运算//对hash值进行右移segmentShift位,计算元素对应segment中数组下表的位置。

2025-03-27 15:49:53 1029

原创 Java 面试题及答案整理

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。

2025-03-21 14:53:04 922

原创 30天日志凭空消失?Log4j2这个参数千万不能乱配!

研发突然反馈,生产日志没有按 Log4j2 设置的 30 天保存,并且今天的日志有一些丢失了。我们上去查看生产日志,看到今天的日志文件剩余 30 个,和 log4j2.yaml 配置文件对比,发现研发配置的 Log4j2 保存的规则是按个数,而不是按天数。之前没发现这个问题,是因为刚上线,访问量不大,每天只产生的日志文件不多,没有达到设置的阈值,不会触发日志文件覆盖。是按天数存储的,实际上这个配置用于限制文件计数器。在没有查阅的官方文档情况下,误以为。,当超过这个阈值,会删除旧的文件。

2025-03-20 15:04:35 122

原创 从 Leaf 到通用插件:Spring Boot 分布式 ID 生成方案

由于 Leaf 分布式ID生成系统设计为独立部署,由各系统接入使用,但稍微维护不当,容易搞垮整个系统。除此之外,业界开源的组件也有滴滴 TinyId、百度 UidGenerator 等,最好是设计为通用的 ID 生成器,底层实现任意切换,对业务无感知。Leaf-segment 方案基于数据库实现,每次获取一批递增号段的值,用完之后再去数据库获取新的号段,可以生成趋势递增的 ID,同时 ID 号是可计算的,因此不适用于订单 ID 生成场景(容易被竞争对手算出一天的订单量),相关原理如下图。

2025-03-20 15:04:02 319

原创 【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现软件开机自启

完全二叉树的定义是:除最后一层外,每一层节点都是满的,且最后一层的节点都尽量靠左排列。在解决算法问题时,选择合适的数据结构往往会显著影响代码的正确性和性能。今天我们将围绕一道判断二叉树是否为完全二叉树的题目,分析在实例化队列时选择。如果你在调试时遇到 NPE,检查队列实例化类型是第一步。对于大多数 BFS 场景,两种数据结构的平均时间复杂度都是 O(1)(入队和出队),但。代码使用层序遍历(BFS)的方式,通过队列来检查树的节点。的支持差异,能帮助我们在算法设计中做出更明智的选择。,这是完全合法的情况。

2025-03-20 15:03:21 839

原创 2025最新Java八股文(完整版)

单个redis节点的并发能力是有限的,所以为了提高并发能力,我们需要搭建redis集群,就比如:主从复制。主从复制的流程主从复制主要分为:全量同步和增量同步。全量同步:在salve请求数据同步的时候会携带application Id和offset,如果master判断出applid和自己的不一样,就认为slave是第一次进行同步,所以会进行全量同步。

2025-03-20 14:21:28 1542

原创 初步使用UML设计代码结构

用例图展示用户如何使用系统。👉 这样就从 UML 设计。👉 这样我们清楚地定义了。

2025-03-18 15:32:39 384

原创 当Spring服务接入ElasticSearch:如何优雅的CRUD呢?

你说得对,查询是 Elasticsearch 的核心功能之一,尤其在实际应用中,复杂的查询条件和组合逻辑非常常见。我重新调整并扩展这部分内容,深入讲解查询相关的 API 和 Java 客户端实现,涵盖更多复杂的查询场景(如布尔查询、多字段查询、过滤、聚合等),并提供详细的实现细节和示例代码。查询是 Elasticsearch 的核心功能,其强大的查询 DSL(Domain Specific Language)支持从简单匹配到复杂聚合的各种场景。但实际场景中,查询需求往往更复杂,下面逐步介绍。

2025-03-18 15:32:09 398

原创 使用Docker部署GitLabEE

前面我们已经将Gitlab的配置挂载到宿主机,所以可以直接在宿主机上修改Gitlab的配置文件,当然你也可以进入容器内修改原文件,由于大家宿主机可能各不相同,所以以进入容器内修改为例。我本来尝试直接把这个写到docker compose文件内一起部署的,但是一直尝试都是报错无权限,就放弃这个方式了。文件内的宿主机部分路径请根据实际情况修改,这里假定都Gitlab配置挂载到宿主机的。文件 (这里指容器内的路径,也可以直接修改挂载到宿主机的文件,这里配置的是。免费的证书获取方式很多,自行搜索,这里不展开讨论。

2025-03-18 15:31:32 315

原创 Java面试题大全(2025最新版)

不论是技术经理还是架构师,没有绝对地说哪条路是对还是错,适合自己才是最重要。小公司的可能没有架构师这个概念,大公司的架构师职位又不是那么容易拿下。但不管怎样,不断去学习新的技术,提升自己的层次是很有必要的,无论你在哪一家公司,过硬的技术水平才能吃得开。

2025-03-18 14:29:44 1149

原创 Spring Boot 的优雅启停:确保停机不影响交易

多中心并行发版:各中心并行升级,确保始终有可用实例。服务下线前的流量切换:使用服务注册中心(如 Eureka)将待下线实例置为“DOWN”。进程关闭信号选择:使用 kill -15(SIGTERM)触发优雅关闭,而非kill -9(SIGKILL)。线程池的优雅停止:配置线程池等待任务完成,避免强制中断。Spring Boot 2.3 内置优雅关机:启用,设置超时时间。启动时的优雅准备:检测依赖、初始化资源,确保服务就绪后再接受流量。优雅启停是系统稳定运行的关键。

2025-03-16 15:12:27 795

原创 一文了解go语言中的select

用select处理多个通道的读写操作。使用default避免不必要的阻塞。结合time.After实现超时控制。注意通道状态,避免死锁。

2025-03-16 15:11:55 382

原创 一文了解在中心化交易所中手续费的预估模型

动态网络费:实时监控并根据确认时间目标调整。批量优化:合并交易降低平均成本。服务费:覆盖运营成本并保持透明。平衡策略:通过优先级算法和费用上限,确保快速上链且费用可控。这种模型既能满足用户对速度的需求,又能避免费用过高,具体实现时需要依赖强大的区块链数据接口和灵活的算法调整。如果你有更具体的场景(例如特定链或业务需求),可以进一步讨论优化方案!

2025-03-16 15:11:21 710

原创 2025最新Java面试题之总结的十道面试题!

其次,因为清理垃圾用的标记清除算法,用户线程的运行必然会导致对象的引用关系发生变化,即标记的变化,,这样就会导致两种情况:漏标和错标。首先第一个方面,其实大部分 JVM 性能问题,并不是我们设置的参数问题,一般情况下,都是用默认参数就搞定了,而真正出问题的情况多是自己写的代码有问题,如频繁创建大对象,然后又引用它们不释放,然后这些大对象进入了老年代后,垃圾收集器有回收不了它们,老年代内存不足,造成频繁 Full GC,每次 Full GC 都会触发 STW,也就是造成卡顿现象,这样性能不就很差了吗?

2025-03-16 14:10:43 1023

原创 『Plotly实战指南』--架构与设计理念

Plotly通过分层架构实现了代码简洁性与功能强大性的平衡。安装时需注意环境隔离与依赖版本管理,遇到问题可优先通过升级工具链或使用官方渠道解决。建议结合或Dash探索其完整生态能力。如果你对Plotly的高级功能感兴趣,如3D 图表绘制等等的使用,可以继续关注后续文章,我们将深入探讨这些主题,一起领略Plotly的更多魅力。

2025-03-14 15:01:30 921

原创 使用Docker容器化部署Python应用:一步步教你从本地到VPS服务器

Docker是一种轻量级的虚拟化技术,能够将应用程序及其依赖包打包成一个可移植的容器,实现快速部署和高效管理。以下将指导你如何使用Docker将Python脚本容器化,并部署到VPS服务器。

2025-03-14 15:00:54 292

原创 【[特殊字符]分布式锁通关指南 07】源码剖析redisson利用看门狗机制异步维持客户端锁

【代码】【[特殊字符]分布式锁通关指南 07】源码剖析redisson利用看门狗机制异步维持客户端锁。

2025-03-14 15:00:22 374

原创 java面试题笔试常见选择题大全含答案

得分点包装类介绍、自动拆装箱与自动装箱、包装类互相比较方法、向上转型包装类的主要作用是用于便于操作基本数据类型,将基本数据类型转换为对象,让基本数据类型拥有对象的特征,例如封装方法、泛型(基本数据类型不能作为泛型参数)、反射。自动装箱是指把一个基本类型的数据直接赋值给对应的包装类型;自动拆箱是指把一个包装类型的对象直接赋值给对应的基本类型;布尔型外的基本数据类型在互相比较或运算时会向上转型:byte,short,char → int → long → float → double。

2025-03-14 13:53:56 735

原创 深入剖析 Java 反射 Method.invoke 的底层原理:MethodAccessor->NativeMethodAccessorImpl

的底层实现是一个从本地方法到动态字节码的优化过程。初始调用依赖 JNI,性能较低;通过 Inflation 机制,频繁调用的方法会被优化为高效的字节码实现。这种设计平衡了通用性和性能,是 Java 反射的精妙之处。通过阅读源码并结合实例,我们不仅理解了其原理,还能自信应对面试中的技术探讨。希望这篇博客对你深入掌握反射有所帮助!

2025-03-13 15:21:07 627

空空如也

空空如也

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

TA关注的人

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