java
文章平均质量分 75
墨子白
修学储能,先博后渊
展开
-
Maven 依赖
使用 Maven 构建产生的构件(例如 Jar 文件)被其他的项目引用,那么该构件就是其他项目的依赖。原创 2024-06-28 16:51:38 · 498 阅读 · 0 评论 -
String.compareTo()方法详解
是一种高效且直接的方式来比较字符串的字典顺序。理解其工作原理对处理字符串排序和比较非常有帮助。更多消息资讯,请访问昂焱数据。原创 2024-06-15 13:52:36 · 619 阅读 · 0 评论 -
Bigdecimal 除法用法
在开发中遇到了一个Bigdecimal的问题,在此记录一下。指定其保留位数。见修改代码。代码中使用了 BigDecimal 做精确计算,在做除法时,系统抛出 “ Non-terminating decimal expansion;因为BigDecimal 是不可变的、任意精度的有符号十进制数,所以可以做精确计算。但在除法中,准确的商可能是一个无限长的十进制扩展;例如,1 除以 3 所得的商。原创 2024-06-04 16:10:04 · 549 阅读 · 0 评论 -
sql 学习基础篇
组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据在selecte统计函数中的字段,不能和普通的字段放在一起;B:right (outer) join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。10、说明:几个简单的基本的sql语句。原创 2024-05-25 11:31:39 · 393 阅读 · 0 评论 -
后端技术常用网站
用于接收Kafka的数据并处理。HTTP和反向代理web服务器。七牛云 - 对象储存。原创 2024-05-19 22:34:31 · 583 阅读 · 0 评论 -
Java 集合概述
Java 集合,也叫作容器,主要是由两大接口派生而来:一个是Collection接口,主要用于存放单一元素;另一个是Map接口,主要用于存放键值对。对于CollectionListSetQueueMap。原创 2024-05-12 22:38:55 · 308 阅读 · 0 评论 -
CountDownLatch 详解
其原理主要基于一个计数器,该计数器在初始化时设定一个值,每当一个线程完成了自己的任务后,计数器的值就会减一,当计数器的值变为零时,所有等待的线程都会被唤醒。CountDownLatch 主要用于解决一个或多个线程需要等待其他线程完成某些操作后才能执行的场景,例如多个线程同时进行数据加载,但需要等待所有数据加载完毕后再进行后续处理,这时就可以使用 CountDownLatch 来实现线程间的协调与同步。的作用允许 count 个线程阻塞在一个地方,直至所有线程的任务都执行完毕。原创 2024-05-10 09:23:29 · 693 阅读 · 0 评论 -
如何配置线程池大小
🌈 拓展一下(参见:issue#1737open in new window):线程数更严谨的计算的方法应该是:最佳线程数 = N(CPU 核心数)∗(1+WT(线程等待时间)/ST(线程计算时间)),其中 WT(线程等待时间)=线程运行总时间 - ST(线程计算时间)。如果设置的线程池数量太小的话,如果同一时间有大量任务/请求需要处理,可能会导致大量的请求/任务在任务队列中排队等待执行,甚至会出现任务队列满了之后任务/请求无法处理的情况,或者大量任务堆积在任务队列导致 OOM。原创 2024-04-30 15:16:38 · 745 阅读 · 0 评论 -
Java8 新特性实战--Date-Time API
这是对从常用的时间实例来对比 java.util.Date 和新 Date 有什么区别。用的代码该改改了。原创 2024-04-01 22:23:48 · 404 阅读 · 0 评论 -
Java8 新特性实战--Interface 函数式接口
java 8引入了函数式接口的概念,,也称 SAM 接口,即 Single Abstract Method interfaces,有且只有一个抽象方法,但可以有多个非抽象方法的接口。函数式接口可以使用Lambda表达式来创建该接口的对象,从而简化了代码。通过函数式接口,Java 8引入了函数式编程的特性,使得在处理一些简单的逻辑时更加简洁和优雅。注解,但其内部包含多于一个抽象方法,则编译器会产生一个错误。注解,但是只要符合函数式接口的定义就是函数式接口,与是否有。方法中调用了传入的函数式接口的。原创 2024-03-30 23:35:52 · 311 阅读 · 0 评论 -
Java8 新特性实战--Interface
Oracle 于 2014 发布了 Java8(jdk1.8),诸多原因使它成为目前市场上使用最多的 jdk 版本。为了不脱离队伍太远,对Java8新特性做一些总结梳理。它较 jdk.7 有很多变化或者说是优化,比如 interface 里可以有静态方法,并且可以有方法体,这一点就颠覆了之前的认知;数据结构里增加了红黑树;还有众所周知的 Lambda 表达式等等。本文不能把所有的新特性都给大家一一分享,只列出比较常用的新特性给大家做详细讲解。更多相关内容请看。原创 2024-03-30 11:15:46 · 428 阅读 · 0 评论 -
Java SPI 机制
首先需要定义一个服务接口,该接口定义了服务的契约,即提供了一组操作或功能。所有服务提供者都需要实现这个接口。原创 2024-03-27 21:12:36 · 1061 阅读 · 0 评论 -
Java transient 关键字
修饰的字段不会被序列化,因此在反序列化时,这些字段将被赋予默认值,而不是之前序列化时的数值。修饰敏感数据字段可以确保数据在序列化时不被泄露,但在反序列化后需要手动处理这些字段,以防止数据丢失或出现意外情况。在 Java 中,如果某个字段不想被序列化(即不希望被写入到序列化的数据流中),可以使用。关键字可以灵活控制哪些字段需要被序列化,但需要注意序列化与反序列化带来的影响,并在设计中合理使用。,因此在对象序列化时,该字段的内容不会被写入序列化的数据流中,从而保护敏感数据不被序列化保存。原创 2024-03-23 23:00:37 · 353 阅读 · 1 评论 -
Java 构造方法
在Java中,构造方法(Constructor)是一种特殊类型的方法,用于初始化对象。构造方法与类同名,没有返回类型(包括void),并且在创建对象时被自动调用。原创 2024-03-18 22:11:51 · 838 阅读 · 0 评论 -
面向对象三大特征封
封装是指将数据和操作数据的方法(即行为)捆绑在一起,形成一个独立的、对外部隐藏内部细节的单元。通过封装,可以限制对数据的访问,并确保数据的完整性和安全性。继承是指一个新类(子类)可以继承一个已有类(父类)的属性和方法,从而实现代码的重用和扩展。子类可以通过继承获取父类的特性,并且可以根据需要添加新的属性和方法或者修改已有的属性和方法。继承特点多态是指同样的消息作用于不同的对象上会产生不同的结果。通过多态,可以用统一的接口来操作不同的对象,从而提高代码的灵活性和可扩展性。原创 2024-03-18 20:26:13 · 811 阅读 · 0 评论 -
什么是字节码?采用字节码的好处是什么?
HotSpot 采用了惰性评估(Lazy Evaluation)的做法,根据二八定律,消耗大部分系统资源的只有那一小部分的代码(热点代码),而这也就是 JIT 所需要编译的部分。字节码通常不针对特定的硬件平台,而是针对虚拟机设计的,它不面向任何特定的处理器,只面向虚拟机。Java 程序运行时相对来说还是高效的(不过,和 C、 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。原创 2024-03-13 20:41:46 · 1041 阅读 · 0 评论 -
Java 语言“编译与解释并存”
因此,Java 的执行过程实际上是一个编译与解释相结合的过程:首先将源代码编译成字节码,然后在运行时通过 JVM 进行解释执行,并且在需要时进行即时编译优化。Java 语言被称为“编译与解释并存”的原因在于它采用了一种特殊的执行方式,即先编译成字节码(bytecode),然后由 Java 虚拟机(JVM)来解释执行这些字节码。:JVM 在运行时负责将字节码文件解释成特定平台的机器码,然后执行。:为了提高性能,JVM 还会对频繁执行的字节码进行即时编译,将其编译成本地机器码,以便直接在硬件上执行。原创 2024-03-10 23:31:32 · 329 阅读 · 0 评论 -
Java 语言有哪些特点
虽然相对于一些编译型语言会有一定的性能损失,但通过虚拟机和即时编译器等技术,Java 在性能上取得了较好的平衡。:Java 是一种面向对象的编程语言,支持封装、继承和多态等面向对象的特性。:Java 设计简洁、易读易写,摒弃了一些复杂和冗余的特性,使得初学者能够快速入门。:Java 拥有庞大的开源社区和丰富的开源项目,提供了大量的开源库、框架和工具,加快了开发速度,并且可以共享和学习他人的经验。:Java 内置了对多线程编程的支持,提供了线程相关的类和方法,开发人员可以方便地创建和管理多线程应用程序。原创 2024-03-10 23:15:12 · 361 阅读 · 0 评论 -
自增自减运算符 i++,++i,i--,--i小窍门
在写代码的过程中,常见的一种情况是需要某个整数类型变量增加 1 或减少 1,Java 提供了一种特殊的运算符,用于这种表达式,叫做自增运算符(++)和自减运算符(--)。原创 2024-03-10 11:13:58 · 413 阅读 · 0 评论 -
Java 方法的类型
实例方法属于类的实例,必须通过类的实例(对象)来调用。实例方法可以访问和修改对象的实例变量,也可以调用其他实例方法。大多数情况下,我们编写的方法都是实例方法。:静态方法属于类本身,可以直接通过类名来调用,无需创建类的实例。静态方法不能直接访问实例变量和实例方法,但可以访问类的静态变量和调用其他静态方法。通常用于定义工具方法或者与整个类相关的操作。:抽象方法没有方法体,只有声明而没有实现。它必须出现在抽象类中,抽象类本身不能被实例化,因此抽象方法只能通过子类来实现。原创 2024-03-10 10:58:31 · 1149 阅读 · 0 评论 -
Java 可变长参数
从 Java5 开始,Java 支持定义可变长参数,所谓可变长参数就是允许在调用方法时传入不定长度的参数。可变长参数允许方法接受任意多个相同类型的参数,在方法内部可以将这些参数视为数组来处理。Type...可变长参数只能作为方法的最后一个参数,一个方法最多只能有一个可变长参数。当调用带有可变长参数的方法时,可以向方法传递任意数量的实参,编译器会将这些实参封装成数组,并传递给方法内部进行处理。如果没有实参传递给可变长参数,那么该参数将被视为长度为 0 的数组。原创 2024-03-09 11:05:19 · 470 阅读 · 0 评论 -
Java 静态变量
在 Java 中,静态变量(也称为类变量)是指被声明为 static 关键字的变量,它们属于类而不是实例。静态变量在类加载时被初始化,且所有实例共享同一份静态变量副本。静态变量可以通过类名直接访问,而不需要创建类的实例。// 静态变量// 静态常量// 静态代码块(用于初始化静态变量)static {// 初始化静态变量dataType表示静态变量的数据类型;是静态变量的名称;是静态常量的名称,使用final关键字修饰;value是静态变量或常量的初始值;原创 2024-03-07 22:36:41 · 1795 阅读 · 0 评论 -
java对象所占内存大小输出
计算java对象所占内存大小。原创 2024-02-22 20:58:51 · 834 阅读 · 0 评论 -
Semaphore(信号量)
Semaphore(信号量)可以用来控制同时访问特定资源的线程数量。原创 2024-02-03 11:53:11 · 900 阅读 · 0 评论 -
Java集合如何选择
Java 集合框架中的各种集合类和接口可以存储不同类型和数量的对象,同时还具有多样化的操作方式。总的来说,Java 集合提高了数据的存储和处理灵活性,可以更好地适应现代软件开发中多样化的数据需求,并支持高质量的代码编写。其中,HashSet 是最常用的无序实现类,LinkedHashSet 保持元素插入的顺序,TreeSet 则按照元素的自然顺序进行排序。如果需要存储一组元素,并且希望元素有序且可以重复,可以选择使用 List 接口的实现类,如 ArrayList 或 LinkedList。原创 2024-01-27 23:05:29 · 339 阅读 · 0 评论 -
集合框架底层数据结构总结
先来看一下Collection接口下面的集合。原创 2024-01-27 12:26:45 · 387 阅读 · 0 评论 -
List, Set, Queue, Map 四者的区别
总的来说,List、Set、Queue、Map 都有各自的特点和适用场景。需要根据实际情况选择合适的集合类型来进行开发。原创 2024-01-25 21:40:05 · 314 阅读 · 0 评论 -
序列化VS反序列化
如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。序列化(Serialization)是指将对象转换为字节序列的过程,也可以称之为对象的持久化。在 Java 中,可以通过实现 Serializable 接口来实现对象的序列化。序列化后的字节序列可以保存到文件、数据库或网络中,以便在需要时进行读取和传输。反序列化(Deserialization)则是将字节序列转换为对象的过程,即恢复出原始的对象。原创 2024-01-22 22:55:39 · 423 阅读 · 0 评论 -
java 注解
Annotation(注解)是一种元数据,是 Java5 开始引入的新特性,它为在代码中添加特定的标记和信息提供了一种简洁的方式。注解可以被用于类、方法、字段和其他程序元素上,以便在编译时、运行时或者通过反射机制获取这些注解,并且根据注解中的信息做出相应的处理。// 可以包含成员变量和默认值// 其他元素...@interface关键字用于声明一个注解。是注解的名称,由开发人员自定义命名。memberName是注解的成员变量名称,也由开发人员自定义命名。type。原创 2024-01-17 23:15:39 · 925 阅读 · 0 评论 -
Exception 和 Error
在 Java 中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。Throwable类有两个重要的子类:Exception、Error。它们分别用于表示异常和错误。原创 2024-01-16 09:46:36 · 865 阅读 · 0 评论 -
String intern()方法
String intern()方法是一个 native(本地)方法,其作用是将指定的字符串对象的引用保存在字符串常量池中,并返回常量池中对应的字符串引用。原创 2024-01-10 22:34:10 · 537 阅读 · 0 评论 -
Java hashCode() 和 equals()的若干问题解答
因为两个相等的对象的 值必须是相等。也就是说如果 方法判断两个对象是相等的,那这两个对象的 值也要相等。 如果重写 时没有重写 方法的话就可能会导致 方法判断是相等的两个对象, 值却不相等。总结:思考:重写 时没有重写 方法的话,使用 可能会出现什么问题? 在使用 HashMap 或其他基于哈希表的数据结构时,如果我们重写了 方法但没有重写 方法,可能会导致以下问题:键冲突:HashMap 使用键的哈希码来确定键值对的存储位置,当两个对象的 返回不同的值时原创 2024-01-08 23:12:11 · 911 阅读 · 1 评论 -
BigDecimal的性能问题
BigDecimalBigDecimal是 Java 中用于精确计算的数字类,它可以处理任意精度的小数运算。由于其精确性和灵活性,BigDecimal在某些场景下可能会带来性能问题。BigDecimal。原创 2024-01-08 22:15:38 · 865 阅读 · 0 评论 -
Java hashCode()
在 Java 中,hashCode()是Object类中的一个方法,用于返回对象的哈希码。哈希码是一个整数值,由对象的内容和内部状态计算得出。以下是关于hashCode()方法的详解:ObjecthashCode()hashCode()HashMapHashSethashCode()方法的默认实现是将对象的内部地址转换成一个整数值,但这种实现方式往往不够准确。在实际编程中,需要重写hashCode()方法,以根据对象的内容和内部状态计算哈希码。原创 2024-01-02 22:43:13 · 892 阅读 · 0 评论 -
Java Object类详解
Java 中的 Object 类是所有类的根类,它位于 java.lang 包中。所有其他类都直接或间接地继承自 Object 类。以下是关于 Object 类的详解。原创 2023-12-27 23:26:01 · 773 阅读 · 0 评论 -
Java 和 C++ 的区别
总的来说,Java 更加注重安全性和跨平台特性,适用于大型应用和企业级系统开发;而 C++ 更加灵活和高效,适用于对性能要求较高的应用以及系统级别的开发。选择使用哪种语言取决于项目需求、开发人员的经验和个人偏好。Java 和 C++ 是两种非常流行的编程语言,它们在很多方面有着显著的区别。原创 2023-12-26 23:02:05 · 397 阅读 · 0 评论 -
设计文档和技术方案的区别
设计文档和技术方案的区别原创 2023-12-26 22:58:32 · 641 阅读 · 0 评论 -
Java 语法糖
前面介绍了11种Java中常用的语法糖。由于篇幅问题,其他还有一些常见的语法糖比如字符串拼接其实基于 StringBuilder,Java10 里面的 var 关键字声明局部变量采用的是智能类型推断这里就不提了。所谓语法糖就是提供给开发人员便于开发的一种语法而已。但是这种语法只有开发人员认识。要想被执行,需要进行解糖,即转成JVM认识的语法。当把语法糖解糖之后,你就会发现其实日常使用的这些方便的语法,其实都是一些其他更简单的语法构成的。原创 2023-12-26 22:56:28 · 1024 阅读 · 0 评论 -
Java 语言有哪些特点
平台无关性:Java程序可以在不同的操作系统上运行,只需将Java源代码编译成字节码文件(.class文件),然后在Java虚拟机(JVM)上执行。强类型检查:Java是一门静态类型语言,变量类型必须在编译时确定,并且进行强类型检查,可以减少类型相关的错误。开放性:Java是一门开放的语言,拥有庞大的开发者社区和丰富的第三方库支持,可以快速获取解决方案和资源。大型标准库:Java拥有丰富的标准类库,涵盖了各种常用功能,开发人员可以直接使用这些库,提高开发效率。原创 2023-12-20 22:59:14 · 460 阅读 · 0 评论 -
Java 语言关键字
Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。原创 2023-12-13 23:22:45 · 843 阅读 · 0 评论