在 Java 17 中,如果你遇到错误信息 module java.base does not “opens java.time” to unnamed module,这通常是因为你试图反射访问 java.base 模块中的 java.time 包,而该包并没有被明确地打开给未命名模块。
从 Java 9 开始引入的模块系统对反射访问进行了更严格的控制。默认情况下,只有当一个包被显...阅读全文
堆栈是一种简单的数据结构,是一种只允许在其一端进行插入或删除的线性表。
允许插入或删除操作的一端称为 栈顶,另一端称为 栈底,对堆栈的插入和删除操作被称 入栈和 出栈。
有一组CPU指令可以实现对进程的内存实现堆栈访问。其中, POP指令实现 出栈操作, PUSH指令实现 入栈操作。
CPU的 ESP寄存器 存放 当前线程...阅读全文
在Java的web开发中,下载中文文件名乱码问题是经常遇到的。对于这个问题,不同的浏览器,解决的方法不太一样。IE通过URLEncoder对filename进行UTF8编码。而其他的浏览器(firefox、chrome、safari、opera),则要通过字节转换成ISO8859-1了。
示例代码(通过测试):
if (request.getHeader(“User-Agent”)...阅读全文
使用 UltraEdit 打开 .class 文件,第一行内容:
00000000h: CA FE BA BE 00 00 00 32 00 A9 07 00 02 01 00 37 ; 漱壕…
前四个字节为固定的 CA FE BA BE ,接下来的四个字节为次版本号(0000)和主版本号(0032)。
32:JDK1.6
31:JDK1.5
30:JDK1.4
2F:JDK1.3阅读全文
线程局部变量(ThreadLocal)为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。
ThreadLocal()
创建一个线程本地变量。
T get()
返回此线程局部变量的当前线程副本中的值,如果这是线程第一次调用...阅读全文
1、继承:利用extends关键字直接继承一个类。
当Sub类和Base类在同一个包时Sub类继承Base类中的public/protected/默认级别的变量和方法
在不同包时继承public/protected级别的变量和方法。
2、重载:如果有两个方法的名称相同,但参数不一致,这样一个方法是另一个方法的重载。
方法名相同
方法的参数类型...阅读全文
SimpleDateFormat 不是线程安全的,通常我们在类中 private static SimpleDateFormat formatTime=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”)这样使用,在web的并发请求中会产生java.lang.NumberFormatException: multiple points异常信息。请注意以下几点:
1、确保不会在多线程状态下使用同一个...阅读全文
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**AES 是一种可逆加密算法,对用户的敏感信息加密处理
* 对原始数据进行AES加密后,在进行Base64编码转化;
*/
public c...阅读全文
使用cipher可以很容易的实现3des加密,但是跟其他平台开发的3des加密对接来说,通常会有一些问题。最近 一个项目java 要调用.net的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题,这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255
需要注意的是确定Mode和Padd...阅读全文
xml为我们在网络交换数据带来很大方便,在java中可以使用saxbuilder来操作xml格式文件,下面介绍一下saxbuilder的常用方法.
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
(1)使用JDOM首先要指定使...阅读全文