
Java基础
文章平均质量分 89
小巫程序Demo日记
攀登者,分享在公司中用到的技术,学到的技术,复习温习以前的知识点,学习前沿技术,深扒技术底层原理,多看计算机网络和操作系统,了解计算机,并且在实战中合理使用技术,明白技术原理和技术的实现过程。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
同步与异步?从一个卡顿的Java服务说起
同步 vs 异步:从4秒到2秒的性能优化 本文通过一个Java服务接口优化案例,生动演示了同步与异步编程的区别。原接口同步调用两个外部服务(各耗时2秒),总响应时间长达4秒,导致服务器线程资源被大量占用。通过引入Java 8的CompletableFuture进行异步改造,将两个任务并行执行后,总响应时间优化至2秒(取最慢任务耗时)。关键改进在于使用supplyAsync()将任务提交到线程池异步执行,主线程仅需等待最终结果。这种异步模式显著提升了服务吞吐量和资源利用率,展现了异步编程在高并发场景下的优势。原创 2025-07-21 11:36:17 · 725 阅读 · 0 评论 -
重载与重写?别再死记硬背了!我用“点咖啡”和“做家务”的故事给你讲明白
【摘要】本文用生活化案例解析Java中重载与重写的核心区别。重载(Overload)如同咖啡店点单,在同一个类中方法名相同但参数不同(如orderCoffee()、orderCoffee("拿铁")),提供多种调用方式;重写(Override)则像父子做家务,子类继承父类方法后重新定义实现(如Son重写Father的doChores()方法),体现多态性。两者关键差异在于:重载发生在同类,参数必须不同;重写需跨父子类,参数必须相同。通过"点咖啡"和"做家务&原创 2025-07-21 11:35:17 · 1035 阅读 · 0 评论 -
深拷贝和浅拷贝的区别
本文通过一个实际案例深入解析了Java中深拷贝与浅拷贝的区别。作者以自己踩过的线上事故为例,展示了浅拷贝如何导致共享数据被意外修改:当克隆包含可变对象(如List)的类时,浅拷贝仅复制引用而非对象本身,导致原对象和克隆对象仍共享同一数据。为解决此问题,文章详细介绍了深拷贝的实现方法,包括重写clone()方法、使用拷贝构造函数和序列化方式,强调对可变对象必须创建新实例。最后总结何时使用浅拷贝(仅含基本/不可变类型)和何时必须用深拷贝(含可变对象),并推荐拷贝构造函数作为最佳实践。全文通过"遥控器&原创 2025-07-15 17:02:29 · 756 阅读 · 0 评论 -
为什么Java更建议使用Builder模式编码?
Builder模式优雅地解决了复杂对象构建问题,避免了伸缩构造函数的混乱和JavaBean的不安全性。它通过分离构建过程与对象表示,使用链式调用实现流畅的API,并通过build()方法创建不可变的最终对象。这种方式既保证了对象创建的灵活性,又确保了对象状态的完整性和线程安全性,是构建复杂DTO的理想选择。原创 2025-07-15 16:09:04 · 381 阅读 · 0 评论 -
==和equals有什么区别?看不懂隔着网线过来打我
本文通过一个实际案例详细解析了Java中==、equals和hashCode的区别与联系。作者在工作中遇到两个内容相同的用户对象用==比较不相等的问题,发现==比较的是对象内存地址而非内容。随后尝试用equals仍失败,发现默认继承Object类的equals本质上仍是==比较,必须重写该方法。最后使用HashSet时发现仍需重写hashCode,因为哈希集合依赖hashCode定位对象。文章强调Java的铁律:重写equals必须同时重写hashCode,并总结了三个概念的本质区别:==比较身份、equa原创 2025-07-15 15:57:03 · 353 阅读 · 0 评论 -
反射的底层原理
Java反射机制的核心是Class对象,它存储了类的所有元数据。调用Method.invoke()时,JVM采用两阶段优化策略:前15次使用JNI本地调用(慢),超过阈值后动态生成字节码实现(快)。这种设计平衡了偶尔反射调用的初始化开销和频繁调用的性能需求,体现了JVM在性能优化上的极致考量。通过sun.reflect.inflationThreshold参数可控制切换时机,展现了典型的"空间换时间"和"延迟优化"思想。原创 2025-06-23 12:23:05 · 621 阅读 · 0 评论 -
Java反射原理,为什么都在用反射?
摘要:反射是Java的"魔法"特性,通过JVM方法区的Class对象实现运行时动态操作类的能力。虽然存在性能开销,但其在框架开发中价值显著:1)实现终极解耦,支撑Spring等框架的IoC机制;2)构建插件化系统,如IDE扩展功能。各大厂(阿里、腾讯等)的中间件和微服务框架都深度依赖反射。典型应用如数据中台项目通过反射动态实例化插件,实现配置化和扩展性,遵循开闭原则。合理使用反射能以微小性能代价换取系统的高度灵活性。原创 2025-06-23 12:15:09 · 717 阅读 · 0 评论 -
Java基础八股文 - 面试者心理历程与标准答案
Java基础面试要点:面向对象三大特性(封装、继承、多态)详解,基本数据类型和引用类型区别分析,String不可变设计原理及StringBuilder/StringBuffer对比,equals和hashCode重写契约关系,异常处理机制分类与最佳实践。面试时既要掌握核心概念,又要结合实际代码示例,展现深度理解。(149字)原创 2025-06-22 16:57:21 · 831 阅读 · 0 评论 -
Java数据清洗三剑客:SubString、replace与replaceAll实战指南(基础篇)
掌握这三个方法,足以应对企业开发中80%的基础数据清洗需求。复杂数据建议使用正则表达式工具测试(如RegExr),避免直接在生产环境调试。思考题:如果遇到需要清理的JSON数据中的转义字符,该如何处理?原创 2025-03-26 16:24:20 · 742 阅读 · 0 评论 -
JuniversalCharde-Java实现自动编码转换全解
以下是代码中涉及的所有知识点,附上详细说明。这个代码展示了如何用 Juniversalchardet 检测文件编码,用 Apache POI 读取 Excel 文件。注释里详细解释了每一步的目的和逻辑,用大白话把技术要点讲得明明白白。希望这能帮您彻底搞懂代码的原理!如果还有啥疑问,随时告诉我哦!s。原创 2025-03-14 16:49:49 · 1020 阅读 · 0 评论 -
Map技术讲解+实战Demo
通过这篇文章,我们从多个角度剖析了 Java 的。原创 2025-03-13 11:59:51 · 962 阅读 · 0 评论 -
小巫程序Demo日记:详细讲解 `ReentrantLock`(现实与企业应用场景)
通过现实和企业场景的类比,的强大特性一目了然。它不仅支持可重入,还提供中断、超时、公平锁和条件变量等功能,是复杂并发场景下的理想选择。无论是银行转账、任务队列还是支付系统,它都能帮助开发者构建高效、安全的并发程序。原创 2025-03-03 21:07:53 · 957 阅读 · 0 评论 -
线程的六大状态----了解线程的状态周期,编写更优雅的代码
Java 线程的生命周期包括六个状态,这些状态由Thread类的getState()方法返回,类型为枚举。状态名称描述NEW线程刚创建,未调用start()方法,处于初始状态。RUNNABLE线程正在运行或准备运行,等待 CPU 调度,包括执行中和就绪状态。BLOCKED线程等待获取 monitor 锁,通常在尝试进入已锁定的 synchronized 块时。WAITING线程无限期等待其他线程的特定动作,如wait()join()或park()。线程等待特定时间,如或带超时的。原创 2025-02-25 15:12:37 · 939 阅读 · 0 评论 -
进程和线程的区别----现实+技术+历史
进程是程序运行的实例,有自己的内存空间;线程是进程内的执行单元,共享进程内存(你可以把JVM想象成你的手机,那么你手机的游戏就是一个进程,你的手机肯定不止只有一个游戏,你打开两款游戏,一款王者荣耀,一款和平精英,你会发现,这两个游戏之间互不联系且不干扰,它们独自占着一个内存空间,但是你王者里的操作就是线程了,当你点击移动和攻击时,就是两个线程同时进行,这个线程会等待你的指令,它们通过合理的调度和共享同一个内存空间,实现了合作)。进程用于隔离任务,线程用于进程内的并发执行。原创 2025-02-25 14:51:51 · 1127 阅读 · 0 评论 -
手把手教你使用Java四大核心特性,构建一个学生管理系统
封装:私有属性 + Getter/Setter,数据安全得很。继承继承Student,扩展功能。抽象Person抽象类定了通用规则。多态用父类引用管子类,灵活得很。原创 2025-02-22 22:45:43 · 731 阅读 · 0 评论 -
Java基础-抽象
在 Java 中,抽象是指从具体事物中提取共同特征,形成一个通用的模板或蓝图的过程。它允许程序员定义事物的基本行为或结构,而无需提供具体的实现细节。抽象的本质是隐藏复杂性,只暴露必要的接口或功能给外部使用。抽象类(Abstract Class)接口(Interface)抽象类是用abstract关键字定义的类,它不能直接实例化(即不能用new创建对象)。抽象方法:没有实现(没有方法体),必须由子类重写。具体方法:有实现,子类可以直接使用。// 抽象方法,无实现// 具体方法,有实现。原创 2025-02-22 22:32:04 · 347 阅读 · 0 评论 -
Java基础-封装
封装是 Java 面向对象编程的一个基本原则,它通过将**数据(属性)和操作数据的方法(行为)**捆绑在一个类中,并控制外部对这些类成员的访问来实现。简单来说,封装就像给类的内部数据和实现细节加上了一层“保护壳”,只允许通过特定的方式(通常是方法)来访问或修改它们。通过以上讲解,您应该明白了 Java 中的封装是什么、如何实现,以及它的重要性。封装通过访问修饰符和Getter/Setter 方法将数据和行为捆绑在一起,隐藏内部细节,保护数据安全,同时提高代码的可维护性。原创 2025-02-22 22:27:58 · 886 阅读 · 0 评论 -
Java太难学了,继承和多态是什么意思啊到底(一文搞懂)
学习链接可以参考基础篇的两篇文章,本文只是做个总结。原创 2025-02-22 22:17:33 · 898 阅读 · 0 评论 -
Java基础-多态(一文让你彻底读懂Java多态)
多态是面向对象编程的核心特性,允许同一个接口或方法在不同对象上表现出不同的行为。编译时多态:通过方法重载(overload)实现,编译器根据参数类型和数量选择方法。运行时多态:通过方法重写(override)和继承实现,运行时根据对象实际类型调用方法。例如,Animal类有方法,Dog和Cat分别重写为“汪汪”和“喵喵”,运行时根据对象类型决定输出。多态(Polymorphism)是 OOP 的重要特性,允许对象在运行时根据实际类型选择方法。代码灵活性:同一个接口或方法可以有多种实现,适应不同对象。原创 2025-02-22 21:53:24 · 765 阅读 · 0 评论 -
Java基础-继承
继承是 Java OOP 的重要支柱,子类通过继承父类的字段和方法,可以直接使用这些功能,而无需重新定义。代码重用:减少重复代码,提升开发效率。层次结构:通过“is-a”关系(如“狗是动物”)组织类,反映现实世界的分类。多态支持:通过方法重写实现运行时多态。例如,现实生活中,人类可以继承父母的某些特征(如身高、肤色),但也可能有自己的独特技能(如绘画)。在 Java 中,Dog类可以继承Animal类的eat()方法,并添加bark()方法。原创 2025-02-22 21:39:57 · 906 阅读 · 0 评论