
Java基础
文章平均质量分 90
本专栏面向Java初学者,系统讲解核心语法与编程思想,涵盖数据类型、流程控制、面向对象三大特性、集合框架、异常处理等核心知识。通过清晰示例、常见错误分析及实用编码技巧,帮助读者快速掌握基础,培养规范编码习惯。内容简洁易懂,适合零基础入门或巩固基础,为后续进阶学习铺路。一起开启Java编程之旅!
讲文明的喜羊羊拒绝pua
拥有8年Java后端与大数据平台开发经验,曾在大疆等知名公司主导核心平台建设,具备丰富的架构设计与落地能力。擅长调度系统、存算分离湖仓架构与组件容器化,推动多个系统实现高可用、易扩展。在技术上,深入掌握Java并发编程与JVM调优,熟悉Spark、Flink、Kafka等大数据组件,具备DS、Amoro、Celeborn等开源项目贡献经验,具备强实战力与技术深度。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java的四种引用类型-强软弱虚
Java的四种引用类型-强软弱虚强引用软引用弱引用虚引用强引用软引用弱引用虚引用原创 2020-08-05 13:21:56 · 338 阅读 · 0 评论 -
设计模式学习笔记
设计模式学习笔记面向对象六大设计原则开闭原则单一职责原则里式替换原则依赖倒转原则接口分离原则迪米特原则认识设计模式设计模式创建型工厂模式简单工厂模式工厂方法模式抽象工厂模式单例模式原型模式构建者模式结构型行为型面向对象六大设计原则开闭原则Open Closed Principle核心思想:对扩展开放,对修改关闭也就是说,对已经使用的类的改动是通过增加代码进行的,而不是修改现有代码单...原创 2020-04-09 20:41:41 · 610 阅读 · 0 评论 -
Java设计模式系列-01 七大原则、23种设计模式之创建型模式
本文介绍了Java设计模式的核心概念与七大原则,重点解析了原型模式、单例模式等常见设计模式的实现方式及应用场景。文章通过UML类图和代码示例,详细讲解了单一职责原则、接口隔离原则等设计原则的实际应用,并分析了Spring框架中设计模式的具体使用(如原型模式在Bean配置中的应用)。设计模式能有效提高代码的可维护性、扩展性和复用性,是成为合格软件工程师的必备技能。文中还通过金融借贷平台的状态模式案例,展示了如何用设计模式解决复杂业务逻辑问题。原创 2020-06-26 22:24:22 · 680 阅读 · 0 评论 -
Java设计模式系列-03 23种设计模式之行为型模式
本文介绍了模板方法模式在Java设计模式中的应用。该模式通过抽象类定义算法骨架,将特定步骤延迟到子类实现,适用于豆浆制作等流程固定的场景。关键点包括: 基本结构:抽象类(SoyaMilk)定义模板方法(make)和抽象方法(addCondiments),子类(RedBeanSoyaMilk)实现具体步骤 钩子方法:通过customerWantCondiments()让子类控制流程分支 Spring应用:IOC容器初始化时refresh()方法采用模板模式,包含obtainFreshBeanFactory等标原创 2020-07-02 22:34:03 · 718 阅读 · 1 评论 -
Java设计模式系列-02 23种设计模式之结构型模式
本文介绍了Java设计模式中的适配器模式,主要包括三种类型:类适配器、对象适配器和接口适配器。适配器模式用于解决接口不兼容问题,通过转换接口实现不同类的协同工作。类适配器通过继承实现,对象适配器通过组合实现(更常用灵活),接口适配器则通过抽象类选择性实现接口方法。文章以充电器为例说明类适配器原理,并展示了SpringMVC框架中HandlerAdapter的应用源码分析,体现了适配器模式在实际开发中的价值。该模式提高了代码复用性,符合开闭原则,是结构型设计模式的重要实现方式。原创 2020-06-27 21:27:44 · 656 阅读 · 0 评论 -
JDK源码系列-02 LinkedList
LinkedList是Java集合框架中基于双向链表实现的List,具有有序性、允许元素重复等特点。其数据结构由Node类构成,每个节点包含prev和next指针,实现双向链接。由于链表结构特性,LinkedList查询效率较低(需遍历节点),但增删操作高效(仅需调整指针)。源码分析显示,add()和remove()方法通过修改节点引用实现快速插入删除,而get()方法需遍历导致查询慢。LinkedList无需扩容机制,内存允许时可无限扩展,同时支持作为栈、队列或双端队列使用。原创 2021-06-13 17:47:34 · 637 阅读 · 0 评论 -
JDK源码系列-03 HashMap
HashMap是Java中基于哈希表实现的Map接口,主要特点包括无序性、键唯一性、允许键值对为null。JDK1.8后底层结构优化为数组+链表+红黑树,当链表长度超过8且数组容量大于64时转换为红黑树以提升查询效率。存储过程通过哈希函数计算键的索引位置,解决哈希冲突采用拉链法。HashMap非线程安全,初始容量为16,加载因子0.75决定扩容时机。源码分析显示其put方法包含数组初始化、节点插入、链表转树等关键逻辑。数据结构演进从纯数组+链表到引入红黑树,显著提高了大规模数据下的操作性能。原创 2021-05-24 23:22:35 · 261 阅读 · 2 评论 -
JDK源码系列-01 ArrayList
ArrayList是List接口的动态数组实现,具有查询快、增删慢的特点。其底层使用Object[]数组存储数据,默认初始容量为10(JDK1.8首次添加时初始化),最大容量为Integer.MAX_VALUE-8。扩容机制为原容量的1.5倍,通过Arrays.copyOf实现。ArrayList线程不安全,多线程操作可能导致数据不一致问题。源码分析表明,无参构造时数组初始为空,首次添加时扩容到10;带容量构造则直接创建指定大小的数组。建议已知大小时预设置初始容量以提高性能原创 2021-05-23 22:12:35 · 258 阅读 · 4 评论 -
JavaSE系列-08 加密与安全
本文介绍了加密与安全领域的基础知识,主要包括: 编码算法:详细讲解了URL编码和Base64编码的规则及Java实现方式,Base64适用于文本协议传输二进制数据。 摘要算法:阐述了哈希算法的特性(固定输出、碰撞率低等),重点介绍了MD5和SHA系列算法,以及如何通过加盐(salt)增强安全性。 加密算法:概述了对称加密原理,对比了DES、AES等算法的密钥长度和工作模式,特别说明了ECB模式的基本实现方法。 文章通过具体代码示例展示了各种算法的实际应用,为开发人员提供了加密安全技术的实用参考。原创 2018-12-18 16:49:25 · 4447 阅读 · 4 评论 -
JavaSE系列-01 面向对象编程
面向对象编程(OOP)的核心概念包括类(class)和实例(instance)的关系、数据封装、继承和多态。类作为对象模板,通过字段(field)封装数据,实例则是具体对象。方法封装了访问实例字段的逻辑,构造方法(Constructor)用于初始化对象。方法重载(Overload)允许同名方法根据参数不同执行不同功能。继承实现代码复用,多态(Polymorphic)使方法调用取决于运行时实际类型。抽象类(Abstract Class)和接口(Interface)定义了规范,接口更强调纯抽象。原创 2018-12-11 17:12:36 · 333 阅读 · 0 评论 -
JavaSE系列-11 网络编程、JDBC编程、函数式编程
本文介绍了Java编程中的网络编程(Socket TCP/UDP)、JDBC编程和函数式编程。重点讲解了TCP协议下客户端与服务器端通信的实现方式,包括单线程和多线程模型,展示了ServerSocket和Socket类的使用方法。UDP编程部分说明了无连接通信的特点及DatagramSocket的使用。此外还涉及JDBC数据库连接和函数式编程概念。文中提供了TCP/UDP的完整代码示例,包括服务器端响应"time"命令返回当前时间的功能实现,并建议将多线程模型改为线程池实现作为练习。原创 2018-12-21 18:06:55 · 1152 阅读 · 0 评论 -
JavaSE系列-02 异常处理
尽量使用JDK已定义异常可以定义新的异常类型:1)从适合的Exception派生2)从RuntimeException派生先定义BaseException(从适合的Exception派生),再派生子类自定义异常应该提供多个构造方法可以使用IDE根据父类快速创建构造方法。原创 2018-12-12 15:47:19 · 293 阅读 · 0 评论 -
JavaSE系列-03 反射与泛型
本文介绍了Java反射机制和泛型相关概念。反射部分详细讲解了Class类的使用,包括获取Class实例、获取类信息、创建实例、访问字段、调用方法、构造方法调用以及获取继承关系的方法。注解部分阐述了注解的定义和使用,包括元注解(@Target、@Retention、@Repeatable、@Inherited)的作用,以及如何在运行时处理注解。文章通过代码示例展示了如何利用反射API读取RUNTIME类型的注解,并说明了注解在工具处理中的应用场景。原创 2018-12-12 18:23:38 · 447 阅读 · 2 评论 -
JavaSE系列-04 集合
Java集合框架提供了多种数据结构,包括List、Set和Map。List是有序列表,分为ArrayList和LinkedList;Set存储不重复元素,分为HashSet和TreeSet;Map是键值映射表,常用HashMap和TreeMap。使用集合时需注意实现equals()和hashCode()方法,以确保正确操作。Properties类用于读取配置文件,TreeMap/TreeSet支持自定义排序。练习示例展示了如何利用LinkedHashSet去除List中的重复元素同时保留原始顺序。原创 2018-12-13 17:17:59 · 410 阅读 · 0 评论 -
JavaSE系列-09 多线程编程
多线程编程是Java并发模型的基础,本文介绍了线程的基本概念、创建方法、状态管理和中断机制。主要内容包括:进程与线程的区别,通过继承Thread类或实现Runnable接口创建线程,线程的6种状态(New、Runnable、Blocked等),使用join()等待线程结束,以及通过interrupt()或标志位中断线程。特别强调了volatile关键字在共享变量可见性中的作用,并介绍了守护线程的特点和使用场景。多线程编程需要处理共享数据和同步问题,复杂度较高但又是Java开发的必备技能。原创 2018-12-19 22:46:02 · 438 阅读 · 0 评论 -
JavaSE系列-05 IO编程
Java IO编程基础摘要:IO编程分为字节流(InputStream/OutputStream)和字符流(Reader/Writer)。File类用于操作文件和目录,提供创建、删除、读取等基本功能。InputStream/OutputStream是所有IO流的基类,提供read/write等核心方法,使用try-with-resources可自动关闭流。Filter模式通过组合方式扩展流功能,避免子类爆炸。练习包括目录遍历显示和文件复制操作,通过缓冲区提升IO效率。注意IO操作是阻塞的,同步IO在java原创 2018-12-14 12:46:34 · 225 阅读 · 0 评论 -
JavaSE系列-10 Maven、XML和JSON
本文介绍了Maven项目构建工具和XML/JSON两种数据格式。Maven通过pom.xml管理Java项目依赖,使用groupId、artifactId和version定位jar包,支持依赖管理和构建流程自动化。还介绍了Maven插件使用和模块化管理方法。XML是可扩展标记语言,常用于配置文件;JSON是轻量级数据交换格式,适用于前后端数据传输。两者都是常见的数据结构化表示方式,在软件开发中各有应用场景。原创 2018-12-20 12:47:42 · 389 阅读 · 0 评论 -
JavaSE系列-06 处理日期和时间
本文介绍了Java处理日期和时间的方法,包括新旧API对比和转换。旧API使用Date和Calendar类,存在时区和格式化问题;新API(JDK 1.8+)提供了LocalDateTime、ZonedDateTime等更清晰的日期时间处理方式。文章详细讲解了时区转换、格式化、加减运算等操作,并给出了数据库类型与Java类的映射关系。最后提供了实际应用中的最佳实践,包括时间格式转换方法和根据时区打印时间的示例代码。原创 2018-12-14 15:58:45 · 271 阅读 · 0 评论 -
JavaSE系列-07 JUnit单元测试、正则表达式
本文介绍了JUnit单元测试和正则表达式的核心内容。JUnit部分讲解了单元测试的概念、TDD开发模式、JUnit设计架构(含TestCase、TestSuite等组件),详细说明了JUnit 3.x-5.x版本差异、断言方法、测试编写规范,以及@Before/@After等生命周期注解的使用方法。正则表达式部分阐述了匹配规则(如\d、\w等元字符)、复杂匹配(^$[]等)和分组匹配(通过Matcher提取子串),并以QQ号验证、年份匹配等实例演示实际应用。两者均强调通过具体代码示例和测试用例来验证功能实现原创 2018-12-14 19:02:05 · 1103 阅读 · 0 评论 -
超级玛丽游戏代码解析
这是一个简单的Java实现的超级玛丽游戏程序。程序包含三个类:SuperMaria(主程序)、Window(游戏窗口)和Maria(角色控制)。用户可自定义游戏界面尺寸,通过WASD键控制角色移动,其中'W'上、'S'下、'A'左、'D'右,程序会实时显示角色位置("@"表示)和移动轨迹("-"表示背景)。游戏包含边界检测功能,当输入"#"时游戏结束。该程序展现了基本的面向对象编程思想和游戏交互逻辑。原创 2020-07-22 09:31:58 · 138 阅读 · 0 评论