Java基础
文章平均质量分 70
java基础知识
曹朋羽
学无止境
展开
-
java 异常处理
也称为运行时异常(Runtime Exception),这类异常在编译时不强制要求进行处理,可以选择性地捕获和处理。jdk中已经定义了很多常见的异常,但是在系统开发的时候一般还是会自定义一些与业务相关的异常,用来区分不同的业务场景,使错误更明确。特别是在进行接口开发时。如果不想在当前代码块进行处理异常,可以将异常继续抛出到方法签名上,由调用该方法 的地方进行处理,方法异常抛出使用throws关键字,可以指定多个。使用throw抛出的异常,这里就是一种受检查异常,在被调用地方必须要进行代码显示的处理异常。原创 2024-03-05 20:09:18 · 369 阅读 · 0 评论 -
java generics(泛型)
泛型可以定义在类,接口和方法上。泛型使用 < >来指定泛型类型。如上,类变量flag在class定义时候指定为泛型,在对应使用泛型变量flag的地方都需要使用泛型进行接收和传递。原创 2024-03-04 21:50:08 · 790 阅读 · 0 评论 -
java 日期时间处理
java的日期时间处理,在java8之前主要使用Date和Calender类来进行构造,在java8后,在java.time包中引入了更多的类来处理日期时间。具有更好的可读性、易用性和线程安全性。原创 2024-03-01 16:43:18 · 1293 阅读 · 0 评论 -
java Annotation(注解)
在了解注解定义之前要首先来看下jdk提供的几个原注解,因为注解定义需要依赖这几个原注解。@Target指定注解适用的目标元素类型,包括类、方法、字段等。可以使用多个 ElementType 枚举值进行组合。ElementType 的枚举值:ElementType .TYPE:表示类或接口或注解上ElementType .FIELD:表示使用在字段属性上ElementType .METHOD:表示使用在方法上ElementType .PARAMETER:表示使用在参数上。原创 2024-02-29 15:59:31 · 844 阅读 · 0 评论 -
java I/O流操作
Java I/O(输入/输出)指的是Java编程语言中用于处理输入和输出的API。Java提供了丰富的I/O类和接口,可以用于读取和写入文件、网络通信、内存操作等。对于输入流InputStream的操作一般都是read进行读取操作,输出流OutStream是write、print这种进行输出写入操作。后面介绍的API方法都遵循这种方法定义。另外所有的流都实现了Closeable接口,一般在基类进行实现。当一个流不再使用时及时的关闭流是很有必要的。原创 2024-02-28 10:28:07 · 1132 阅读 · 0 评论 -
java 动态代理
在Java中,动态代理是一种代理模式的实现,代理是对被代理目标对象的一个包装,对目标对象的方法进行调用,不会直接调用目标对象,而是通过代理,这样代理在真实方法调用前后可以设置一些业务逻辑,而不用修改原始类的方法。原创 2024-02-27 17:04:50 · 322 阅读 · 0 评论 -
java reflection(反射)
Java反射是指在运行时动态地获取类的相关信息并进行操作的机制。java中一切皆对象,同样的对于一个class类文件,java同样可以提取出其对应的信息进行封装成不同的对象。反射的过程就是将class文件中的成员信息进行解析成对应类型的变量。对应成员类型在java.lang.reflection包下。主要有构造函数(Constructor),属性(Field),方法(Method),修饰符(Modifier)。原创 2024-02-27 10:06:08 · 967 阅读 · 0 评论 -
java RMI(远程方法调用)
java RMI(Remote Method Invocation)远程方法调用。为什么称为远程方法调用呢?因为是两个JVM间进行通讯。两个JVM一个作为服务提供端,另一个作为服务调用端。首先需要定义一个远程调用的接口,这个接口要继承Remote接口。并且远程接口方法要抛出RemoteException异常。然后在服务端进行RemoteService接口方法的实现。原创 2024-02-26 15:06:07 · 422 阅读 · 0 评论 -
java 序列化
Java 序列化是 Java 编程语言中用于将对象转换为字节流或将字节流转换回对象的机制。通过序列化,可以实现对象的持久化存储、网络传输以及跨平台数据交换。序列化后的字节流是平台无关的,因此一台机器的序列化数据在另一台机器上可以反序列化。对象要想可以序列化,首先要实现java.io.Serializable接口。这是一个标记接口,没有任何方法需要实现。实现Serializable接口后,可以使用ObjectOutputStream 类来进行生成字节流。原创 2024-02-26 10:53:15 · 482 阅读 · 0 评论 -
Java SPI(Service Provider Interface)
Java SPI是Java标准库提供的一种服务发现机制,它通过在classpath下约定的META-INF/services目录中,定义接口和其实现类之间的对应关系,从而动态加载目标接口的实现类。也不够灵活,不能通过一些条件去更精确的加载自己想要的服务实现类。使用Java SPI 可以在不引入任何三方框架前提下实现解耦,接口的定义与具体业务实现分离开来。并且在不改变原逻辑情况下,通过修改配置实现类来修改实现。这里最后Cat和Dog两个实现类的sayHello方法都会被调到。通过一个实际例子来具体看一下。原创 2023-10-13 16:15:36 · 87 阅读 · 0 评论 -
JAVA类加载机制
java类加载机制类加载过程加载(Loading)Loading is the process of finding the binary representation of a class or interface type with a particular name and creating a class or interface from that binary representation. 通过类全名获取其class的二进制流。 在java堆中生成一个代表该类的C原创 2021-08-22 22:53:55 · 153 阅读 · 0 评论 -
SM2加解密
需要使用SM2进行加解密,百度查询的都是自己生成密钥对,然后进行加解密。现在密钥对已给,需要构造加解密公私钥对象进行加解密操作。最后找到hutool工具包直接可以根据公私钥进行构造一SM2对象。查看源码研究了下翻译一下使用bouncycastle包进行实现大致如下这样添加依赖包<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</art原创 2021-05-31 15:44:30 · 6468 阅读 · 2 评论 -
inputstream读取数据不全
TCP通讯使用定长报文。格式:请求 :6byte(表示后续报文长度len)+ byte[len]响应: 6byte(表示后续报文长度len)+ byte[len]从响应inputstream里按长度头里收到的len继续接收数据,发现有接收不全的情况。通讯程序大概这样:Socket socket = null;InputStream inputStream = null;OutputStream outputStream = null;byte[] data = {};//要发送的数据tr原创 2021-04-09 14:00:21 · 1513 阅读 · 0 评论 -
java 内存模型
这里写自定义目录标题java内存模型 (JMM :java memory model)内存原子操作内存原子操作原则jjava内存模型 (JMM :java memory model)主内存和工作内存java的共享变量都存储在主内存中,每个线程在使用时会从主内存复制一份变量值到本地工作内存中存储一个副本。当对变量改变时,再将变量刷新到主内存中。内存原子操作看了些文章和视频,总觉得不够权威,然后去oracle官网去找相关的内存原子操作说明。花了很长时间最后还是找到了,在JVM规格说明书介绍里,并且原创 2021-03-28 22:41:31 · 109 阅读 · 0 评论 -
记一次生产ORACLE数据库突然查询变慢
数据库:oracle有一个流水表,表数据量千万级,一个管理台常用条件分页查询突然变慢,有日期条件且有索引。部署服务器是多台,数据库查询操作使用Hibernate框架。逐台服务器sql日志跟踪排查,根据hibernate发出sql语句,在oracle数据库检查对应的执行计划,使用视图:v$sql:获取找到sql语句对应的sql_id和plan_hash_value。再从v$sql_plan根据上面两个条件找到对应的执行计划。由于hibernate生成sql语句每台机器虽然界面操作查原创 2020-12-24 19:36:23 · 1158 阅读 · 1 评论 -
struts2 s:text 标签取值范围问题
<s:text name="name"></s:text>维护一个已有项目使用该标签读取值时出现问题,会有请求数据串通的问题,B请求会访问到A请求设置的数据。貌似是全局变量的样子。查看官方说明:Render a I18n text message.The message must be in a resource bundle with the sam...原创 2018-09-26 15:00:58 · 1109 阅读 · 0 评论