Java
文章平均质量分 89
小巫程序Demo日记
攀登者,分享在公司中用到的技术,学到的技术,复习温习以前的知识点,学习前沿技术,深扒技术底层原理,多看计算机网络和操作系统,了解计算机,并且在实战中合理使用技术,明白技术原理和技术的实现过程。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
反射的底层原理
Java反射机制的核心是Class对象,它存储了类的所有元数据。调用Method.invoke()时,JVM采用两阶段优化策略:前15次使用JNI本地调用(慢),超过阈值后动态生成字节码实现(快)。这种设计平衡了偶尔反射调用的初始化开销和频繁调用的性能需求,体现了JVM在性能优化上的极致考量。通过sun.reflect.inflationThreshold参数可控制切换时机,展现了典型的"空间换时间"和"延迟优化"思想。原创 2025-06-23 12:23:05 · 658 阅读 · 0 评论 -
Java反射原理,为什么都在用反射?
摘要:反射是Java的"魔法"特性,通过JVM方法区的Class对象实现运行时动态操作类的能力。虽然存在性能开销,但其在框架开发中价值显著:1)实现终极解耦,支撑Spring等框架的IoC机制;2)构建插件化系统,如IDE扩展功能。各大厂(阿里、腾讯等)的中间件和微服务框架都深度依赖反射。典型应用如数据中台项目通过反射动态实例化插件,实现配置化和扩展性,遵循开闭原则。合理使用反射能以微小性能代价换取系统的高度灵活性。原创 2025-06-23 12:15:09 · 847 阅读 · 0 评论 -
JuniversalCharde-Java实现自动编码转换全解
以下是代码中涉及的所有知识点,附上详细说明。这个代码展示了如何用 Juniversalchardet 检测文件编码,用 Apache POI 读取 Excel 文件。注释里详细解释了每一步的目的和逻辑,用大白话把技术要点讲得明明白白。希望这能帮您彻底搞懂代码的原理!如果还有啥疑问,随时告诉我哦!s。原创 2025-03-14 16:49:49 · 1111 阅读 · 0 评论 -
Map技术讲解+实战Demo
通过这篇文章,我们从多个角度剖析了 Java 的。原创 2025-03-13 11:59:51 · 1035 阅读 · 0 评论 -
距离算法-----如何在Java中使用,使用场景有什么
Levenshtein 距离(也叫编辑距离)是一种衡量两个字符串之间相似度的算法。它计算的是将一个字符串转换为另一个字符串所需的最少编辑操作次数。插入:在字符串中插入一个字符。删除:从字符串中删除一个字符。替换:将字符串中的一个字符替换为另一个字符。每种操作计为一步,Levenshtein 距离就是完成转换所需的最小步数。距离越小,两个字符串越相似。将方法放入你的 Java 项目中,可以作为工具函数使用。Levenshtein 距离是一个简单却强大的算法,通过动态规划高效计算两个字符串之间的编辑距离。原创 2025-03-07 10:30:00 · 817 阅读 · 0 评论 -
线程创建与管理(一文讲清)
线程创建:继承Thread类或实现Runnable接口。线程管理:启动、停止(中断/标志位)、暂停(sleep/wait)、优先级。商城实战:用户请求处理、后台任务、定时任务。现实案例:用户下单的多线程优化。线程池:提升性能,管理线程。线程安全:通过volatile或Lock解决。原创 2025-03-04 10:20:47 · 696 阅读 · 0 评论 -
线程中断使用场景:个性化推荐系统
快速响应用户的终止请求;处理超时任务,避免用户等待过久;管理资源,优化高并发性能;处理错误和异常,确保系统健壮性;实现线程间通信和测试调试。通过合理使用线程中断,推荐系统可以提升用户体验、增强稳定性,并在复杂场景下高效运行。原创 2025-03-04 09:59:02 · 702 阅读 · 0 评论 -
小巫程序Demo日记:详细讲解 `ReentrantLock`(现实与企业应用场景)
通过现实和企业场景的类比,的强大特性一目了然。它不仅支持可重入,还提供中断、超时、公平锁和条件变量等功能,是复杂并发场景下的理想选择。无论是银行转账、任务队列还是支付系统,它都能帮助开发者构建高效、安全的并发程序。原创 2025-03-03 21:07:53 · 1088 阅读 · 0 评论 -
Java中,spark提供的Dataset详解
Java和scala的Dataset的创建方式有所不同,因为Java的API和类型系统与Scala不同。比如,Scala中的隐式转换和case类在Java中并不适用,需要用Java Bean或Encoders来明确指定类型。基本操作部分,比如show()和printSchema(),这些方法在Java中应该是一样的,因为Spark的DataFrame/Dataset API在Scala和Java中是统一的。我们可能需要知道如何在Java中调用这些方法,尤其是链式调用时是否需要分号。原创 2025-02-28 09:48:28 · 1708 阅读 · 0 评论 -
Java实现文件解压上传和自动分类的全流程,看完不明白直接喷——小妹和天狗的爱情故事
看不懂吗,no,看得懂吗,no,其实这就是一个基于SpringMVC的一个大体架构图,我直接甩出来看不懂是很正常的,看懂了说明你跟我是同步在线的,那么开始吧,我在给个图大家就应该看得懂了。那么昨晚和主管聊了之后,我的大脑就浮现大量的思维架构图,脑图,还有实现方法,但是奈何太困了,就告了段落,那么接下来,我将会吧我的思维架构脑图通过一个架构图,让各位能够先直观的看到。这也就是一整个文件上传分类和解压的过程了,大家有需要源码的callme,我会发给大家哦,今天就到这了,溜了溜了。然后把和男生的照片全删了。原创 2025-02-27 21:05:54 · 1115 阅读 · 0 评论 -
那些年,业务经理提出的需求——通过配置文件实现模板的清洗
配置驱动的处理是指通过外部配置文件(而不是代码)来描述程序的行为。(什么意思呢,比如我们在打王者,我们可以通过外部的手柄来操控手机的操作,那么当我们想要更换键位的时候,我们可以直接通过更换手柄的操作顺序就可以实现这个功能了)。数据结构的定义:比如列名映射规则。(我们王者的手柄键位对应的王者键位)业务规则:比如如何识别文件类型和处理模板扩展性支持:当有新的文件类型或逻辑时,只需要更新配置文件,而不需要修改代码。通过上述方法,我们可以用一个配置文件实现自动配置的Java程序。原创 2025-02-26 10:09:50 · 1180 阅读 · 0 评论 -
线程中断----一文全解,Java最初1.0->5.0->8.0
定义:线程中断是通过方法设置线程的中断状态(interrupt status),提示线程停止或检查中断信号。特点中断是合作的,线程不会立即停止,而是需要自行检查中断状态或处理。中断状态是一个布尔标志,由设置为 true,线程可通过或检查。某些阻塞操作(如sleep()wait()join())被中断时会抛出,并清除中断状态。Java 5 的提升:通过包,提供了执行者框架和Future接口,系统化管理线程中断,适合传统并发任务。Java 8 的提升。原创 2025-02-25 15:44:00 · 823 阅读 · 0 评论 -
线程同步——多线程必修课
线程同步是多线程编程中的核心概念,指在多个线程同时运行的环境中,通过控制线程的执行顺序和对共享资源的访问权限,确保共享数据的一致性和完整性。简单来说,线程同步就像是给多个线程“排队”,避免它们同时操作共享资源导致混乱。原创 2025-02-25 15:24:53 · 853 阅读 · 0 评论 -
守护线程------后台工作的经纪人
它在后台运行,为程序的主流程(用户线程)提供支持;它不阻止程序退出,当用户线程结束时,它会自动终止。这种特性使得守护线程非常适合处理那些“辅助性质”的任务,既保证了程序的正常运行,又不会干扰程序的整体生命周期。原创 2025-02-25 15:17:03 · 406 阅读 · 0 评论 -
线程池中,阻塞队列LinkedBlockingQueue和SynchronousQueue的区别
是一个基于链表实现的阻塞队列,遵循 FIFO(先进先出)原则。它可以指定容量,如果不指定,默认是无界的(容量为。是 Java 并发包中两种常见的阻塞队列,它们在设计和应用场景上有很大的不同。是一个特殊的阻塞队列,它的特别之处在于它不存储元素。),反之亦然,就像一个“接力棒”传递。)必须等待一个取出操作(原创 2025-02-23 20:22:06 · 392 阅读 · 0 评论 -
ReetrantLock和synchronized的区别
是 Java 并发编程中的一把利器,提供了比更灵活的锁机制。通过支持中断、超时、公平锁和条件变量,它适用于各种复杂的并发场景。原创 2025-02-23 20:17:34 · 1021 阅读 · 0 评论 -
使用企业和现实例子,快速读懂Java中的线程池ThreadPoolExecutor
简单来说, 是 Java 提供的一个工具,用来管理一组线程(可以想象成一群工人),让它们高效地完成各种任务(比如处理请求)。它最大的好处是避免频繁创建和销毁线程(就像不每次有活儿就临时雇人又立刻解雇),从而节省资源,提高效率。现实例子:想象一家餐厅,经理不想每次来客人都临时招服务员,而是维持一个固定的服务团队,根据客流量灵活调整人数。这就是 的核心思想。企业例子:在一个电商网站中,每天有成千上万的用户下单。如果每次下单都新建一个线程处理,那服务器很快就会崩溃。 就像一个“任务分配中心”,用有限的线程处理所原创 2025-02-23 19:19:44 · 722 阅读 · 0 评论 -
CopyOnWriteList-Java多线程如何保证线程安全1
实现了List接口,是包的一部分。它通过“写时复制”(Copy-On-Write)机制确保线程安全,适合读操作频繁、写操作稀少的场景。线程安全:所有写操作(add、set、remove)都是线程安全的,读操作无锁。迭代器安全:迭代器基于快照,不会因并发修改抛出。核心优点读操作高效,无锁,适合读多写少。迭代器安全,防止。核心缺点写操作成本高,涉及数组复制,内存开销大。不适合写频繁或列表很大的场景。适用场景:日志系统、缓存、事件监听器列表。常见面试题和Vector的区别是什么?原创 2025-02-23 16:12:41 · 922 阅读 · 0 评论 -
Java集合中的Set
想象一个图书管理员,他根据每本书的编号(哈希值)快速找到对应的书架。:图书管理员不仅根据编号放置书籍,还记录了书的添加顺序。:图书管理员是个整理狂,他按照书名的字母顺序排列书架。接下来,我们将逐一剖析这些实现的底层原理,并通过一个博客系统的实战 demo 来展示它们的实际应用。为了更深入地理解这些实现,我们来看看它们的简化源码(基于 OpenJDK 的实现)。就像一个俱乐部,每个成员(元素)都必须是唯一的。让我们通过一个实际的博客系统示例,展示如何使用不同。通过博客系统的实战 demo,我们看到了不同。原创 2025-02-23 15:01:43 · 1081 阅读 · 0 评论 -
Java反射——Class类名反射
Class 类是 Java 反射和动态加载的核心,提供了访问类元数据的能力。通过 .class、getClass() 和 Class.forName() 可获取 Class 实例,反射用于运行时操作类,动态加载支持按需加载类。这些机制在框架开发和插件系统中尤为重要,但需注意安全性和性能问题。方法描述示例适用场景.class编译时常量,直接获取 Class 实例已知类,静态使用getClass()从实例获取 Class 实例已知对象,运行时获取动态加载类并获取 Class 实例。原创 2025-02-22 20:41:25 · 691 阅读 · 0 评论 -
Java中的异常处理
总结而言,Java的异常处理为我们提供了更清晰的错误管理模式, 它强调“把正常流程和异常流程分离”,帮助我们在架构上实现更整洁、更易维护的代码。但在实际开发中,还要根据项目规模和设计思路,对异常进行精准的分层处理和记录,这样才能在出现错误时能快速定位并止损,把问题的影响降到最低。在一个复杂的企业应用中,业务逻辑层通常只关注“正常流程”如何执行,而异常处理(尤其是通用的异常处理,如网络超时、数据库连接异常等)常常会集中放置在统一的处理切面、过滤器或拦截器中。—— 既要精准识别异常,又要保留足够的诊断信息。原创 2025-02-22 19:55:09 · 850 阅读 · 0 评论 -
八股——HashMap和ArrayList
1. 基础概念类问题Q: HashMap和ArrayList的底层数据结构是什么?默认初始容量?修正答案HashMap数据结构:数组 + 链表/红黑树(JDK8+)。数组中的每个元素称为“桶”(bucket),每个桶可能存储链表节点(Node)或红黑树节点(TreeNode默认初始容量:16。ArrayList数据结构:动态数组(默认初始容量:10。2. 扩容机制类问题Q: HashMap和ArrayList的扩容条件及扩容后大小?修正答案HashMap触发条件:当元素数量超过。原创 2025-02-22 19:44:55 · 499 阅读 · 0 评论 -
HashMap底层原理
这就是HashMap的基本实现原理。它通过哈希表的方式实现了高效的键值对存储,并通过链表和红黑树解决了哈希冲突问题。这种多层次的冲突解决方案使得HashMap在绝大多数实际应用场景中都能保持接近O(1)的操作效率。这些特点使HashMap成为Java中最常用的集合类之一,特别适合需要高效键值对存储和查找的场景。这些机制共同保证了HashMap在不同场景下的高效性能。合理的初始容量和负载因子。原创 2025-02-22 19:24:03 · 904 阅读 · 0 评论 -
ArrayList底层源码详解
深入分析ArrayList的添加元素和扩容机制。好的,让我们继续分析ArrayList的其他重要方法。好的,让我们从ArrayList最基础的类定义和成员变量开始分析。好的,让我们来分析ArrayList的三个构造方法。原创 2025-02-22 19:14:39 · 503 阅读 · 0 评论
分享