![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA杂项
文章平均质量分 79
一些JAVA语法
CodeCharm——CC
没有人不可替代,只是时间问题。
展开
-
【异常】JAVA常见异常
受检异常需要在编译时处理,而非受检异常通常是在运行时抛出,并且不强制要求在编译时处理。这些异常在编译时必须要处理,通常需要使用 try-catch 块或在方法签名中声明。当应用程序试图通过字符串名称加载类时,如果在类路径中找不到对应的类,则抛出此异常。当方法在不适当的时刻被调用时抛出。当试图将字符串转换为数值类型时,如果字符串的格式不正确,则抛出此异常。通常在输入输出操作失败或中断时抛出,比如文件操作、网络通信等。这些异常在编译时不强制要求处理,通常在运行时抛出。当试图将对象强制转换为不兼容的类型时抛出。原创 2024-06-06 15:36:06 · 842 阅读 · 0 评论 -
【JAVA】JSONObject.fromObject(message)引发的JSONObject 详解
JSONObject是处理 JSON 数据的一个核心类,它提供了一种轻量级的数据结构,可以方便地解析和生成 JSON 格式的数据。以下是对JSONObject的一个简要介绍,包括其用途、基本操作和常用方法。JSONObject 的用途解析 JSON 字符串:将 JSON 格式的字符串解析成 Java 对象,以便于访问和操作其中的数据。生成 JSON 字符串:将 Java 对象转换成 JSON 格式的字符串,以便于数据交换和存储。原创 2024-05-27 10:52:28 · 959 阅读 · 0 评论 -
【网络】gateway 可以提供的一些功能之三 “ 支持Eureka服务发现 ”
因为在微服务架构中,服务数量庞大且动态变化,需要一种机制来管理和发现这些服务,而 Eureka 作为一种服务注册中心,提供了服务注册和发现的功能,可以让服务之间相互发现和通信。而网关则负责对外提供服务的入口,并进行流量控制、安全检查、请求转发等功能,通过与 Eureka 集成,网关可以动态地从 Eureka 中获取服务信息,实现请求的转发和路由,从而简化了服务间通信的管理和维护。这样做的好处是,网关和微服务之间的通信变得更加灵活和动态,可以随时根据服务的变化来调整路由规则,同时也方便了服务的管理和监控。原创 2024-05-10 17:21:18 · 522 阅读 · 0 评论 -
【JAVA】JAVA的垃圾回收机制详解
对于Java的垃圾回收机制,它是Java虚拟机(JVM)提供的一种自动内存管理机制,主要负责回收不再使用的对象以释放内存空间。需要注意的是,全局变量的生命周期与整个应用程序的生命周期相同,因此如果全局变量引用的对象一直存在于内存中而不被释放,可能会造成内存泄漏。因此,在使用全局变量时要合理管理其生命周期,确保不再需要时及时释放,以减少内存占用和提高系统性能。原创 2024-05-10 15:02:26 · 1163 阅读 · 1 评论 -
【JAVA】JAVA中的静态变量、全局变量
因此,静态变量的作用范围是可以限定的,取决于其访问修饰符和所在的包结构。在实际开发中,要根据需求合理定义静态变量的访问修饰符,以确保数据的安全性和封装性。虽然静态变量可以被整个类的实例对象共享,但并不意味着它一定是全局的,它的作用范围是有限的,主要取决于其定义的位置和可访问性。通常情况下,单例模式中的静态变量是私有的,并且通过静态方法来获取该实例。被用来统计创建的对象个数,在每次创建对象时增加计数器的值。全局变量在Java中指的是整个应用程序范围内可访问的变量,通常是通过静态变量或者单例模式来实现的。原创 2024-05-09 17:45:56 · 1236 阅读 · 0 评论 -
【JAVA】类加载过程,以及类加载器
启动类加载器(Bootstrap Class Loader):负责加载Java的核心类库,例如java.lang.Object等。扩展类加载器(Extension Class Loader):负责加载Java的扩展类库,例如java.lang.String等。应用程序类加载器(Application Class Loader):也称为系统类加载器,负责加载应用程序的类,例如项目中自定义的类。自定义类加载器:开发者可以根据需要编写自定义的类加载器,用于加载特定的类或者资源。原创 2024-05-09 17:34:44 · 1124 阅读 · 0 评论 -
【注解】 @SneakyThrows 自动捕获并处理异常
SneakyThrows 是 Lombok 库中的一个注解,用于简化 Java 异常处理的代码。这个注解可以自动抛出检查型异常(checked exceptions),而无需在方法签名中显式声明 throws 子句。这样做可以减少代码的冗余,特别是在你不想处理异常或只是想向上传递异常的情况下。原创 2024-04-28 11:09:05 · 1394 阅读 · 1 评论 -
【idea】idea 中 git 分支多个提交合并一个提交到新的分支
- `commit`:命令用于将你的代码变更保存到**本地代码仓库**中,它创建了一个新的提交(commit)记录,记录了代码的变更内容以及相关的提交信息(如作者、时间、提交说明等)。- `push`:命令用于将本地仓库中的代码推送(上传)到**远程代码仓库**,将你的代码变更分享给其他开发者或者备份到远程服务器。- `cherry pick`:命令用于从一个分支中**选择性地合并某个提交(commit)到当前分支**,它允许你只合并需要的提交而不是整个分支的变更。- `squash`: 用于将**多原创 2024-04-25 16:21:24 · 3897 阅读 · 2 评论 -
【JAVA】java 中的Stream 常用函数
Java中的Stream是一种用于处理集合元素的工具,它提供了一种流式操作的方式,可以轻松地对集合进行过滤、映射、聚合等操作,以及进行并行处理。Stream是Java 8引入的一种新的抽象概念,它代表了一种数据元素的序列。Stream不是数据结构,而是数据元素的流水线,可以进行一系列的操作来处理这些元素。原创 2024-04-25 11:33:00 · 1142 阅读 · 0 评论 -
【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串
如果contentKeyword参数为NULL,那么就返回空字符串,然后检查bp.title或bp.content是否包含该关键词的子串。可以有多个参数,如果第一个参数不为空,则返回第一个参数的值;如果第一个参数为空,则继续检查第二个参数,以此类推。这一点在构建包含潜在NULL值的数据库查询时特别重要,因为它可能影响到你的查询结果。函数是一个非常实用的字符串函数,用于将两个或多个字符串参数连接成一个单一的字符串。函数总是返回第一个非空参数的值。,也不会影响其他条件的判断,从而实现了动态条件的查询。原创 2024-04-24 17:11:51 · 2800 阅读 · 0 评论 -
【注解】Mapper的注解 @Mapper、@Repository、@MapperScan
Mapper是 Mybatis 的注解,和 Spring 没有关系,是 Spring 的注解,用于声明一个 Bean。是Spring Boot 提供的注解,用于指定要扫描的Mapper接口包路径,并将这些接口自动注册为Spring Bean。原创 2024-04-24 09:28:18 · 2315 阅读 · 0 评论 -
【JAVA】final
在Java中,final是一个关键字,它可以用于声明类、方法和变量。final当final关键字用于变量时,这意味着该变量一旦被初始化之后,其值就不能再被改变。对于基本数据类型,这意味着你不能改变基本值;对于引用类型的变量,这意味着你不能再让它引用另一个对象,但是所指向的对象的内部状态是可以改变的(除非对象本身也全部由final字段组成)。当一个方法被声明为final时,这意味着这个方法不能在子类中被覆盖(重写)。这常用于防止继承层次中的行为被修改,或者确保方法的行为在整个继承结构中保持一致性。原创 2024-04-22 17:11:21 · 209 阅读 · 0 评论 -
【JAVA】Assert.isTrue()来做判断,并抛出异常
是一种断言(Assertion)方法,通常用于测试或验证代码中的逻辑条件是否为真。在许多编程语言和测试框架中都有类似的断言方法,用于编写单元测试或确保代码中的条件符合预期。必须为真,否则会抛出一个断言错误,并显示指定的错误消息。这种断言方法对于确保代码中的逻辑正确性非常有用,尤其在编写单元测试时能够帮助捕捉潜在的问题。方法通常是测试框架中的一部分,如果你想使用它,需要确保你的项目中已经包含了对应的测试库,并按照该测试框架的规范来编写和运行测试代码。它用于在测试中验证某个条件是否为真。原创 2024-04-11 19:49:30 · 1802 阅读 · 0 评论 -
【数据库】GROUP BY 详解、示例、注意事项
GROUP BY语句在 SQL 中用于将来自数据库表的记录分组,以便可以对每个组执行聚合函数(如COUNT()MAX()MIN()SUM()AVG()等)。使用GROUP BY时,数据库会根据一个或多个列的值将结果集分为多个分组,在每个分组内可以独立地使用聚合函数。GROUP BY通常与SELECT语句一起使用,以汇总每个分组的数据。原创 2024-04-11 16:28:11 · 11475 阅读 · 0 评论 -
【JAVA】StringBuffer详解,和StringBuilder区别
StringBuffer 是 Java 中用于表示可变字符序列的一个类。它和是线程安全的,这意味着它的方法是同步的,可以在多线程环境中安全地使用。相比之下,不是线程安全的,但它在单线程环境下运行得更快。由于中的大多数方法都通过使用内部锁同步,这就使得它在多线程操作中可以避免数据不一致的问题。然而,这种线程安全特性也意味着如果你的应用不需要在多线程环境中操作字符串,使用可能会导致不必要的性能开销。原创 2024-04-08 15:14:36 · 1199 阅读 · 0 评论 -
【JAVA】StringBuilder 详解,append 源码分析,及其底层思想剖析应用
StringBuilder 是一个在 Java 编程语言中非常有用的类,用于创建和操作动态字符串。与字符串(String)类不同,StringBuilder 允许进行可变字符串操作,这意味着你可以在不生成新对象的情况下修改字符串的内容,从而提高了处理字符串时的效率和性能。StringBuilder 类是在 Java 5 中引入的,作为一个对 StringBuffer 类的轻量级和不同步的替代品。由于StringBuilder 不是线程安全的。原创 2024-04-08 14:38:32 · 945 阅读 · 0 评论 -
【软考】23种设计模式详解,记忆方式,并举例说明
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式是工厂方法模式的一种扩展,它用于处理多维度的大规模产品族,而不是单一产品的创建问题。抽象工厂模式可以想象成一个大型工厂,这个大工厂里有好几个小工厂,每个小工厂负责生产一系列相关的产品。这种设计模式的核心就是帮助我们在不直接指定具体类的情况下创建一系列相关或依赖对象。原创 2024-04-07 16:31:31 · 2846 阅读 · 0 评论 -
【JAVA】多种情况下的判空操作
这种判断适用于需要处理具有实际内容的字符串,即字符串中包含有意义的字符或数据。例如,输入框中的用户输入、文件中的文本内容等,这些内容可能对程序逻辑有影响,因此需要确保字符串不为空,才能继续进行后续的处理或操作。需要注意的是,这些方法适用于不同类型的数据,包括字符串、字符数组、集合、Map、数组以及普通对象。在判空时,**通常会先判断对象或字符串不为 null,然后再进一步判断对象或字符串是否为空或空白字符。例如,输入框中的用户输入如果只包含空格或空白字符,可能需要视作空值处理,而不是有效的数据。原创 2024-03-20 14:35:53 · 1210 阅读 · 0 评论 -
【JAVA】Date、LocalDate、LocalDateTime 详解,实践应用
在 Java 中,处理日期和时间的方式经历了演变。在Java 8 之前,主要使用 java.util.Date 类来表示日期和时间,但它存在一些问题,如不可变性、线程安全性等。Java 8 引入了新的日期时间 API,位于 java.time 包中,提供了更加强大、易用和安全的日期时间处理方式。原创 2024-03-13 15:07:05 · 2840 阅读 · 1 评论 -
【JAVA】Collections.sort()方法详解
是 Java 集合框架(Java Collections Framework)中的一个静态方法,用于对列表(List)中的元素进行排序。此方法利用了 Java 的泛型机制,可以很方便地对各种类型的列表进行排序。源码方法体:参数list:需要排序的列表。列表中的元素必须实现了 Comparable 接口,以便能够比较它们的大小。原创 2024-03-11 15:25:52 · 5887 阅读 · 1 评论 -
【JAVA】《接口,抽象方法,抽象类 》之四 、开发实践
首先定义一个接口,其中包含一个抽象方。这种设计模式的应用场景是在需要一种默认的行为,但这种行为又可能因为不同的子类而不同的情况下。**抽象类提供了一个默认的行为实现**,**同时通过接口定义了子类必须实现的抽象方法**,**而具体的实现则由子类完成**。这样一来,所有的子类都可以通过继承抽象类来获得默认的行为,同时又能够自由地实现接口定义的抽象方法。原创 2024-02-20 14:20:09 · 1315 阅读 · 1 评论 -
【JAVA】《接口,抽象方法,抽象类 》之二 、抽象方法详解
接口中的方法通常都是抽象方法,但自从 Java 8 开始,接口也可以包含默认方法(Default Method)和静态方法(Static Method)。如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,**那么子类必须实现这些抽象方法,除非子类自己也声明为抽象类。类分别实现了该方法,提供了自己的面积计算逻辑。这样,无论是圆还是矩形,都可以通过统一的方法来计算它们的面积。在编写代码时,应该根据具体的需求和设计原则来合理使用抽象方法,确保代码的清晰、可读和易于维护。抽象方法不能是私有的或静态的。原创 2024-02-20 11:27:24 · 869 阅读 · 0 评论 -
【java】《接口,抽象方法,抽象类 》之一、接口详解
当一个接口被多个类实现时,如何确定使用的是哪个类的方法实现体,通常取决于调用方选择的对象类型。在 Java 中,方法的具体实现取决于对象的运行时类型(而不是编译时类型),这就是动态绑定(Dynamic Binding)的概念。接口定义了一组方法的签名,但没有提供方法的实现。类可以实现(implement)接口,从而承诺提供接口中定义的方法的实现。如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,那么子类必须实现这些抽象方法,2.6、使用抽象方法的注意事项。方法,实现了多态的应用。原创 2024-02-20 11:25:03 · 912 阅读 · 0 评论 -
【JAVA】《接口,抽象方法,抽象类 》之三 、抽象类详解
抽象类通常包含抽象方法,这些方法没有具体的实现,而是留给子类来实现。抽象类提供了一种抽象的、规范性的概念,用于表示一组类共同的特征和行为。如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,那么子类必须实现这些抽象方法,2.6、使用抽象方法的注意事项。抽象类是一种特殊的类,它。下面介绍一下抽象类。2.1、抽象方法概念。原创 2024-02-20 11:20:01 · 888 阅读 · 0 评论 -
【数据库】数据库模式有哪些?举例说明。
将对象的概念引入数据库设计中,通过对象、类、继承、多态等概念来组织和管理数据。常见的数据库模式包括关系模式、文档模式、图模式等。每种数据库模式都有其适用的场景和优缺点,选择合适的数据库模式需要综合考虑数据的结构、访问模式、性能要求以及团队的技术能力等因素。这种模式简单直接,适用于简单的应用场景,但不利于数据的组织和管理。使用关系型数据库管理系统(RDBMS)存储数据,通过**表、列和关系(主键、外键)**来组织和管理数据。使用文档数据库存储数据,数据以文档的形式组织,通常使用JSON、XML等格式。原创 2024-02-19 16:47:12 · 1517 阅读 · 0 评论 -
【JAVA】java泛型 详解
这意味着在运行时,泛型类型的信息会被擦除,而泛型参数会被替换为其边界类型或 Object 类型。,但在编译后的字节码中,泛型类型信息会被擦除,使得所有类型参数都被替换为它们的擦除类型。尽管类型擦除在一定程度上降低了泛型的灵活性,但它确保了与之前版本的兼容性,并且使得泛型代码能够在不同版本的 Java 中正常运行。类型参数可以在方法的返回类型之前声明,并在方法调用时指定具体的类型。参数化类型是一种在类、接口或方法中使用的类型,它可以接受一个或多个类型参数。类的实例时,可以指定具体的类型,例如。原创 2024-02-19 11:24:39 · 798 阅读 · 0 评论 -
【JAVA】泛型,泛型变量,通配符 <?> ,原理及应用详解
它可以用在泛型声明中,允许声明一个参数化类型的引用,但不具体指定参数的类型。这种用法可以使得代码更加灵活,可以处理多种类型的参数。通过这种方式,我们可以在不改变 Main 类的代码的情况下,根据不同的需求动态地传入不同类型的处理器,实现更高的灵活性和复用性。泛型是 Java 中一种强大的特性,它允许在编写类、接口和方法时使用参数化类型,使得代码可以更加灵活、通用和类型安全。可以应用于软件设计的各个方面,提供灵活性、通用性和类型安全性,使得代码更加易于维护和扩展。,分别处理字符串和整数类型的输入。原创 2024-02-19 10:29:46 · 1146 阅读 · 0 评论 -
【JAVA】List.addAll 详解
本篇文章介绍了方法的基本语法、返回值、使用方法及注意事项。通过本文的介绍,相信大家已经对于该方法的使用有了一定的了解和掌握。原创 2024-02-18 10:26:04 · 4590 阅读 · 0 评论 -
【JAVA】ReentrantLock 显式锁定的类
是 Java 中用于进行显式锁定的类,它提供了与关键字类似的互斥性和可重入性,但相比于,它提供了更灵活的锁定方式。下面对。原创 2024-02-02 18:32:57 · 842 阅读 · 0 评论 -
【JAVA】CopyOnWriterArrayList 详解
这样,读操作可以直接访问原始数据而不需要加锁,提高了读操作的性能,但写操作的性能相对较低。原创 2024-02-02 17:28:09 · 1245 阅读 · 0 评论 -
【多线程】ThreadLocal 作为类的私有静态字段实践
在上述示例中,threadLocal 是类的私有静态字段,确保了不同线程访问的是同一个 ThreadLocal 变量,但每个线程都能够拥有自己独立的值。ThreadLocal 通常作为类的私有静态字段存在的主要原因是为了确保每个线程都能够拥有自己独立的 ThreadLocal 变量。原创 2024-01-25 19:42:27 · 346 阅读 · 0 评论 -
【注解】java 元注解详解,非得给你讲明白
元数据(Metadata)是描述数据的数据,即用来描述其他数据的数据。在软件开发中,元数据提供关于代码、类、方法、字段等程序元素的信息。原创 2024-01-25 17:22:26 · 483 阅读 · 0 评论 -
【多线程】多线程安全,为什么不安全,要怎么做保证其安全,实例
多线程安全是指在多线程环境下,对共享的数据进行操作时,保证这些操作能够正确、稳定地执行,不会导致数据不一致、异常等问题。多线程不安全通常是因为多个线程同时访问、修改了共享的数据,导致一些不可预料的结果。原创 2024-01-24 19:33:35 · 1400 阅读 · 0 评论 -
【多线程】ThreadLocal 详解,举例说明
是 Java 中的一个,用于在多线程环境下保持变量的独立性。每个线程都可以独立地设置和获取的值,而不会影响其他线程。通常情况下,被用来在方法或类之间传递变量。原创 2024-01-24 19:32:28 · 1630 阅读 · 0 评论 -
【集合】JAVA中的集合以及判空操作大全
Java中有几种主要的集合框架,包括ListSetMap等,每种都有不同的特点和适用场景。ArrayListLinkedListVectorListHashSetTreeSetSetHashMapTreeMapLinkedListStack这些集合类各有优劣,选择合适的集合类取决于具体的业务需求。在实际开发中,常常需要根据不同的场景灵活使用这些集合类。原创 2024-01-24 16:08:03 · 507 阅读 · 0 评论 -
【注解】@AllArgsConstructor 全部都有,自动生成构造函数,举例说明
注解,Lombok 自动生成了一个包含所有字段的构造函数。你可以在 main 方法中看到,我们可以直接使用这个构造函数创建 Example 类的实例,而不必手动编写包含所有字段的构造函数。修饰的字段,那么这个字段也会包含在生成的构造函数中,但你需要确保这些。这个构造函数接受类中所有字段作为参数,并将这些参数赋值给对应的字段。Lombok 中还有另外一个按需自动生成构造函数的注解,参考。字段在声明时已经被初始化,因为生成的构造函数中不会为。是 Lombok 提供的一个注解,需要注意的是,如果你使用了。原创 2024-01-22 15:17:38 · 1079 阅读 · 0 评论 -
【注解】@RequiredArgsConstructor 按需自动生成构造函数,举例说明
注解自动生成一个构造函数,该构造函数接受标记为final的类字段作为参数。,你无需手动编写构造函数,只需在类的字段上添加final修饰符并使用注解即可。是Lombok库中的一种注解,它用于自动生成构造函数,特别是对于final字段的构造函数。示例:以下是一个带有该注解的类,其中有三个字段,两个带有final,一个不带,没有手写构造函数。支持不同的构造函数风格,例如全参构造函数、部分参数构造函数、以及构造函数的访问级别(,你可以减少手动编写构造函数的错误和忘记初始化字段的问题,从而提高了代码的可维护性。原创 2024-01-22 15:03:59 · 815 阅读 · 0 评论 -
【注解】@Bean(initMethod = “start“, destroyMethod= “shutdown“)
在使用 Spring Framework 进行项目开发时,可以使用 @Bean 注解的 initMethod 和 destroyMethod 属性来指定在 Bean 初始化和销毁时调用的方法。确保在项目的配置类(例如 Spring Boot 的主配置类)中包含了 RocketMQ 配置的相关部分,并且在需要的地方注入 DefaultMQProducer 进行消息发送即可。方法启动 RocketMQ 生产者,而在 Spring 容器销毁时,将会调用。这样,在 Spring 容器初始化时,将会调用。原创 2024-01-18 11:15:01 · 1032 阅读 · 0 评论 -
【注解】@JsonIgnoreProperties 指示在序列化和反序列化过程中要忽略的属性。
是 Jackson 库中的注解,用于指示在序列化和反序列化过程中要忽略的属性。具体来说,可以用在和上。原创 2024-01-16 16:02:24 · 967 阅读 · 0 评论 -
【多线程】线程是什么?多线程为什么?怎么做?通俗易懂讲解多线程
这两种方式都允许程序员创建并发执行的线程,但一般来说,推荐使用实现 Runnable 接口的方式,因为这样可以避免类的单继承限制。比如,你在餐馆里吃饭,服务员A正在为你点菜,服务员B却正在给其他客人上菜,服务员C则在收拾餐桌。:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。多个服务员可以同时为不同客人提供服务,提高了服务的响应速度。方法,然后创建该类的实例,将其作为参数传递给 Thread 类的构造函数,最后调用 start 方法启动线程。原创 2024-01-16 14:57:12 · 582 阅读 · 0 评论