Java 基础
文章平均质量分 88
Java 基础知识
大家都说我身材好
兴趣是最好的老师
展开
-
万字详解 TCP协议,TCP开发绝不能错过
TCP(Transmission Control Protocol)是一种在计算机网络中广泛使用的传输层协议。它负责提供可靠的、面向连接的数据传输服务,确保数据能够按照正确的顺序和完整性传递。提供可靠的数据传输:TCP协议通过序号、确认和重传机制来确保数据的可靠传输。发送方将每个数据包进行编号,并在接收方收到数据后进行确认,如果数据包丢失或损坏,发送方将重新传输它们,以确保数据的完整性和准确性。原创 2023-07-19 11:00:44 · 694 阅读 · 0 评论 -
万字详解 Stream 流式编程,写代码也可以很优雅
Stream(流)是 Java 8 引入的一个新的抽象概念,它代表着一种处理数据的序列。简单来说,Stream 是一系列元素的集合,这些元素可以是集合、数组、I/O 资源或者其他数据源。Stream API 提供了丰富的操作方法,可以对 Stream 中的元素进行各种转换、过滤、映射、聚合等操作,从而实现对数据的处理和操作。Stream API 的设计目标是提供一种高效、可扩展和易于使用的方式来处理大量的数据。原创 2023-07-13 11:32:44 · 250 阅读 · 0 评论 -
一文搞懂 Java 集合,再也不用担心集合数据类型的操作了
Java集合是用于存储和操作一组对象的数据结构。它提供了一组接口和类,用于处理不同类型的集合数据,如列表、集、映射等。Java集合的主要作用是:存储对象:Java集合可以存储不同类型的对象,并提供了方便的方法来添加、删除和访问集合中的元素。管理数据:集合提供了多种数据结构,如列表、集、映射等,可以根据不同的需求选择合适的数据结构来管理数据。比如,列表可以按照插入顺序存储数据,集可以保证元素的唯一性,映射可以通过键值对来存储和访问数据等。原创 2023-07-10 16:55:09 · 466 阅读 · 0 评论 -
浅谈 UUID 生成原理及优缺点
UUID 是一套用于生成全局唯一标识符的标准,具有唯一性、随机性等特性,可以在分布式系统中使用。UUID 的生成方式有多种,其中最为常用的是基于算法的 UUID 生成方式和基于硬件的 UUID 生成方式。UUID 在数据库主键、分布式系统、日志跟踪和安全领域等方面有广泛的应用。虽然 UUID 具有很多优点,但也存在一些缺点,比如占用空间大、不易读懂、不适合顺序访问和算法复杂等。综合来看,UUID 是一种非常有用的标识符生成方式,在实际开发中应根据具体情况选择合适的 UUID 生成方式。原创 2023-06-09 09:16:26 · 6818 阅读 · 1 评论 -
定时任务 Cron 表达式,了解一下?
Cron表达式是一种广泛应用于Linux系统的时间表示格式,常用于定时任务的调度。Cron表达式可以通过指定不同的时间参数,描述一个在未来某个时间点执行的任务。Spring框架也提供了相关支持基于@Scheduled注解,我们可以通过Cron表达式来使用重复性的定时任务。本文介绍了Cron表达式的语法和含义,并结合Spring @Scheduled注解给出了一个实际场景示例。通过该示例,我们可以熟悉如何使用Cron表达式来定义定时任务,并掌握Spring框架实现定时任务的基本方法。原创 2023-06-08 09:54:12 · 8246 阅读 · 2 评论 -
本文试图教会你使用 枚举 Enmu,进来了解一下?
枚举类型是 Java 中的一种特殊类型,它用于表示一组固定值。类型安全:枚举类型可以避免传入无效的值或者字符串拼写错误等问题。易读易维护:通过采用命名约定和语义约定,使得代码更加可读、易于理解和维护。扩展性:枚举类型支持定义方法、字段、接口等高级特性,使得枚举常量能够像普通类一样拥有行为和状态。状态码、状态标识等一组固定值的表示。星期、月份、季节等一组固定值的表示。颜色、性别、血型等一组固定取值的表示。开关、状态机、状态转换等复杂业务逻辑的建模。原创 2023-06-05 10:29:01 · 458 阅读 · 0 评论 -
Swagger 文档工具介绍及Spring boot 项目集成案例
Swagger 是由 Tony Tam 创建的一个开源工具集,旨在帮助开发者设计、构建、记录和使用 RESTful API。Swagger 提供了一组工具,使得我们可以创造性的深入到 API 的设计、开发和测试阶段中,从而提高 API 的设计质量和开发效率。Swagger 的核心是 Swagger Specification,这是一种定义 API 的标准格式,以 OpenAPI Specification(前身是 Swagger Specification)的形式存在。原创 2023-05-29 16:01:07 · 2065 阅读 · 0 评论 -
一文读懂 Java 递归,你不得不会的技能
Java递归是指在方法的执行过程中,通过调用自身的方式来实现重复执行一段代码的机制。它是一种非常有用的编程技术,特别是在处理树形数据结构或者分治算法时,递归能够简化代码实现,并使代码更易于理解和维护。原创 2023-05-26 09:20:20 · 1935 阅读 · 0 评论 -
Maven 项目管理构建工具详解
Maven 提供了一套标准化的生命周期模型,在生命周期中定义了一些默认的阶段及其执行顺序,可以通过配置 pom.xml 文件来定义自己的构建生命周期,或重载默认生命周期模型。settings.xml 文件位于 MAVEN_HOME/conf 目录下,也可以放到用户目录下的 .m2 目录中,使得每个用户都可以针对自己的需要进行特定的配置。上面的代码中,maven-compiler-plugin 是用于 Maven 编译过程的一个插件,它包含了一个名为 compile 的目标,用于对 Java 源码进行编译。原创 2023-05-24 15:17:39 · 1632 阅读 · 0 评论 -
JUnit 使用详解,让你的项目健壮起来
JUnit 是一个基于 Java 语言的测试框架,最初是由 Kent Beck 和 Erich Gamma 开发的。JUnit 提供了一系列的 API ,可以帮助开发者编写和执行单元测试,并通过 TDD(Test-Driven Development,测试驱动开发)来保证代码质量。JUnit 不需要依赖任何 IDE 或者插件,只需要用 Java 编写测试类即可。JUnit 可以在命令行环境下运行,也可以在 IDE 中运行。原创 2023-05-23 18:08:37 · 6922 阅读 · 0 评论 -
Java 断言 assert 你真的会用嘛?
1.1 什么是断言?断言是编程中常用的一种技术手段,它用于在程序执行时验证某些条件是否满足。如果条件成立,则程序继续执行;否则程序抛出异常或直接终止。Java 断言机制就是一个典型的断言实现,在代码中使用 assert 断言关键字定义一个条件表达式来验证程序假设的正确性。1.2 断言的作用断言的主要作用是在开发和调试阶段快速定位和解决问题,有效避免因为程序中存在非预期的逻辑错误而导致程序崩溃或产生误判的情况。原创 2023-05-23 15:30:16 · 3214 阅读 · 0 评论 -
Java 数组全解析
Java 数组是一种有序、固定长度并且具有相同数据类型元素的集合,它是 Java 语言中最常用的数据结构之一。在 Java 中,数组可以是基本数据类型的数组,也可以是对象类型的数组。原创 2023-05-23 14:44:42 · 621 阅读 · 0 评论 -
MySQL 常用数据类型,看看你们是不是都知道
MySQL 是一款流行的开源数据库管理系统,在 Web 开发、大数据处理等领域被广泛应用。作为关系型数据库,MySQL 支持多种数据类型,包括整数类型、浮点数类型、日期与时间类型、字符串类型、枚举和集合类型、布尔类型、位类型、极限值类型、JSON 类型和空间数据类型等。本文将全面详细地介绍 MySQL 数据库中常用的数据类型。原创 2023-05-23 09:49:08 · 1341 阅读 · 0 评论 -
java中 instanceof 关键字详解及原理解析
需要注意的是,使用instanceof关键字检查一个对象的类型可能会降低代码的可读性和可维护性,因此应该尽可能避免在程序中过多地使用它。例如,我们可以使用instanceof关键字来检查一个对象是否是某个类或接口的实例,如果是,就可以调用相应的方法或进行相应的处理。如果object是class的实例,或者是class实现的接口的实例,或者是class数组的实例,那么instanceof关键字返回true;否则,返回false。其中,object是一个对象的引用,class可以是类、接口、数组类等类型。原创 2023-05-05 16:25:18 · 1580 阅读 · 0 评论 -
Java 8以后的LocalDateTime 你真的会用嘛?
本文从 LocalDateTime 类的创建、转换、格式化与解析、计算与比较以及其他操作几个方面详细介绍了 LocalDateTime 类在 Java 8 中的使用。掌握 LocalDateTime 类的使用可以大大提高日期时间处理效率和质量,希望本文对读者有所帮助。原创 2023-05-19 15:24:04 · 839 阅读 · 0 评论 -
MD5 算法
MD5(Message Digest Algorithm 5)是消息摘要算法的一种,它可以将任意长度的“消息”(也可以是文件)计算出一个固定长度的“摘要”,通常是128位。MD5广泛应用于数字签名、数据完整性校验、密码存储等领域。在Java中,可以使用java.security.MessageDigest类来实现MD5算法。原创 2023-05-17 13:43:27 · 3418 阅读 · 0 评论 -
如何进行Java 单元测试
Java 单元测试是指对软件中的最小可测试单元进行测试,以保证代码的质量和正确性,并且可以加速开发过程。本文将全面详细地介绍 Java 单元测试相关知识点,包括单元测试的定义、优点和流程、JUnit 测试框架、Mockito 框架、持续集成、代码覆盖率和测试驱动开发等,希望读者能够了解这些知识点,并更好地应用它们来提升自己的开发水平。单元测试的定义单元测试是指对软件中的最小可测试单元进行测试,包括函数、方法和类等。它可以独立地测试每个组件,以保证代码的质量和正确性,并且可以加速开发过程。原创 2023-05-17 09:12:03 · 1923 阅读 · 0 评论 -
Java Date 对象详解
本文介绍了 Java Date 对象及时间格式化。Java Date 类表示日期和时间,可以存储从 1970 年 1 月 1 日零时开始累计的毫秒数,在多线程环境下可能会发生并发问题,并且易混淆和不支持国际化。Java 提供了 SimpleDateFormat 类来格式化和解析日期和时间,存在线程安全、易混淆和不支持国际化等问题。Java 8 引入了新的时间日期 API(Java Time API),提供了更加易于理解和使用的类和方法,并且克服了存在的许多问题。原创 2023-05-16 17:11:17 · 8495 阅读 · 1 评论 -
Java Math对象详解
Java的Math对象是jdk中的一个数学类,它提供了各种数学操作的方法,包括绝对值、取整、幂次方、三角函数、对数函数、最小值和最大值等。Java的Math对象是jdk中的一个数学类,提供了很多常用的数学计算方法,比如绝对值、平方根、三角函数等。在使用这些方法时,需要将角度转换为弧度,可以使用Math.toRadians()方法进行转换。在使用Math.pow()方法时,如果参数b为负数,可以先将参数a取倒数,然后再计算乘方。Math对象提供了三个取整方法:ceil()、floor()、round()。原创 2023-05-16 13:46:37 · 702 阅读 · 0 评论 -
Java 快速排序
快速排序是一种常用的基于比较的排序算法,其时间复杂度为 O(nlogn),并且具有稳定性和广泛的应用场景。本文将全面详细的讲解一下 Java 中快速排序算法的原理、实现以及时间复杂度等问题。原创 2023-05-15 11:17:00 · 7039 阅读 · 1 评论 -
Java 插入排序详解
插入排序算法是一种简单但实用的排序方法,其中直接插入排序适用于小规模数据的排序,而希尔排序则适用于大规模数据的排序。由于它们都是基于数组结构实现的排序算法,因此它们都不适用于链表结构的数据。在实际应用中,插入排序算法的优点是简单易懂、实现方便,缺点是时间复杂度较高,不适合处理大规模数据;而希尔排序算法通过增加步长来提高效率,但其时间复杂度与步长有关,也不稳定。因此,在实际工作中,我们需要根据具体的场景选择合适的排序算法。原创 2023-05-15 11:09:25 · 1966 阅读 · 0 评论 -
Java 序列化详解
Java 序列化(Serialization)是指将一个 Java 对象转换成字节序列,以便在网络上传输或存储在本地磁盘中。而反序列化(Deserialization)则是将已经序列化的字节序列恢复为 Java 对象。Java 提供了自带的序列化机制,可以通过实现 Serializable 接口以及使用 ObjectOutputStream 和 ObjectInputStream 类来实现序列化和反序列化。原创 2023-05-15 10:50:57 · 2477 阅读 · 2 评论 -
Java 异常处理详解
Java 异常处理机制是 Java 编程中至关重要的一部分。一个好的 Java 程序应该能够正确地处理异常,避免异常泄露到用户界面,保证程序的健壮性和稳定性。在 Java 开发过程中,需要充分认识和了解异常处理的相关知识和技巧,并且在编写代码时合理地使用异常处理机制。原创 2023-05-13 14:34:37 · 2469 阅读 · 0 评论 -
Java 正则表达式
本文介绍了 Java 中的正则表达式,包括基本概念、语法规则和常用方法。在使用正则表达式时,应该根据需要选择合适的元字符和限定符,并注意性能问题。同时,建议使用可读性强且易于维护的规则,以提高代码的可读性和可维护性。原创 2023-05-11 15:17:00 · 1966 阅读 · 0 评论 -
Java 线程与进程的概念
Java中,线程与进程都是非常重要的概念。原创 2023-05-10 18:07:36 · 786 阅读 · 0 评论 -
Java BigDecimal对象详解
在实际开发中,当需要处理高精度计算或金额计算时,一定要使用BigDecimal类型,以避免出现错误的计算结果。这些基本类型在处理浮点数时,可用的有效精度是固定的。例如,对于float类型,可以保留7位有效数字,在进行复杂计算时,可能会发生精度丢失。在Java中,当需要进行高精度计算时,可以使用BigDecimal代替基本数据类型,从而避免产生精度丢失。在金融领域,金额计算需要非常高的精度,因此也需要使用BigDecimal来处理这类操作,以避免金额计算过程中产生精度丢失,导致计算结果错误。原创 2023-05-10 10:58:47 · 1534 阅读 · 0 评论 -
Java 中String对象详解
在 Java 中,字符串是一种常见的数据类型,经常用于存储一些文本信息。而String类则是Java提供的专门用于字符串操作的类,在Java标准库中,它位于java.lang包中。String类是不可被继承的final类,即它不能被其他类所继承,也就是说它不能被修改。String类是通过使用Unicode字符集来表示字符串的,这使得Java支持多语言字符集。由于String类的不可变性(immutable),所以它可以作为安全的参数发送给诸如网络连接或数据库链接之类的方法,而不必担心其被篡改。原创 2023-05-10 10:43:31 · 4149 阅读 · 0 评论 -
Java 中注解的详细介绍及使用
Java 注解,也称为 Java Annotations,是一种元数据(Meta-data)标记语言,它在 Java 代码中添加了额外的信息和说明。通过上述示例,我们可以看出注解在 Java 代码中的应用非常灵活,可以满足很多特殊需求。例如,我们可以通过自定义注解为某些方法添加事务支持、权限校验等功能,在实际的开发中具有很大的应用价值。当我们定义一个注解时,可以使用元注解(Meta-annotation)来指定注解的生命周期、作用范围等属性。接下来,我们通过一个具体的示例来说明如何定义和使用注解。原创 2023-05-08 10:35:39 · 2074 阅读 · 0 评论