随笔分类 -  Java基础

摘要:Java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在JVM中把变量值存储到内存和从内存中取出变量值的底层细节。 此处的变量不包括局部变量和方法变量,因为这些变量是线程私有的,不会被共享,自然不会存在竞争问题。 Java内存模型规定了所有的变量都存储在主内存(Main Memory)中。 阅读全文
posted @ 2025-12-17 16:52 wang_longan 阅读(11) 评论(0) 推荐(0)
摘要:实现类的加载过程的代码被称为类加载器(Class Loader) 对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中唯一性,每个类加载器都拥有一个独立的类名称空间。即比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源 阅读全文
posted @ 2025-12-17 12:49 wang_longan 阅读(29) 评论(0) 推荐(0)
摘要:Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称为虚拟机的类加载机制。 与哪些在编译时需要进行连接的语言不同,在Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略让Java 阅读全文
posted @ 2025-12-17 12:25 wang_longan 阅读(18) 评论(0) 推荐(0)
摘要:Java的垃圾收集器(Garbage Collection,简称GC) 垃圾收集器需要完成三件事: 哪些内存需要回收 什么时间回收 如何回收 第一步垃圾收集器需要找出哪些内存需要回收,这就需要垃圾回收算法找出哪些对象可以回收 找出哪些对象需要回收(标记算法) 引用计数算法 在对象中添加一个引用计数器 阅读全文
posted @ 2025-12-17 10:35 wang_longan 阅读(11) 评论(0) 推荐(0)
摘要:1、Lambda表达式初步认识 java是一个面向对象的语言,而Lambda表达式却是一个匿名函数,因此java把Lambda表达式抽象成一个匿名内部类(jdk中没有抽象出来,但是它是一个匿名内部类的实现,在下面的截图中,很明显可以看到是一个内部类的地址 为了证实如上所说,我就随手写了一个lambd 阅读全文
posted @ 2023-04-25 16:03 wang_longan 阅读(38) 评论(0) 推荐(0)
摘要:线程池ThreadPoolExecutor 1、线程池介绍 1.1 线程池概念 Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容 阅读全文
posted @ 2022-08-25 21:03 wang_longan 阅读(168) 评论(0) 推荐(0)
摘要:springboot创建自定义拦截器 在springboot中创建拦截器很方便,首先创建自定义拦截器,自定义拦截器需要实现HandlerInterceptor接口,然后根据自己的需求去重写相应的方法。 下面例子自定义两个拦截器,TestInterceptor1和TestInterceptor2 pa 阅读全文
posted @ 2021-12-08 10:41 wang_longan 阅读(376) 评论(0) 推荐(0)
摘要:背景 sun被oracle收购之后,慢慢的各种资源开始限制,现在从oracle官网下载jdk很是麻烦,很多公司开始使用openjdk,可是因为墙的存在,下载速度很慢,然后就出现了国内的各种下载源,这里使用的是清华大学的,速度很快,资源也很丰富。 访问下边链接即可下载所需的openjdk 根据需要下载 阅读全文
posted @ 2021-08-14 21:22 wang_longan 阅读(224) 评论(0) 推荐(0)
摘要:背景 一般公司开发的项目上线前都会做安全审核,为了保护一些私密代码和一些敏感信息,均需要加密处理,比如各种密码、license处理的等,就用到jar包混淆。 混淆工具 jar包混淆工具挺多的,实现原理不尽相同,这里使用的classfinal, classfinal介绍 ClassFinal是一款ja 阅读全文
posted @ 2021-08-12 11:33 wang_longan 阅读(6014) 评论(0) 推荐(0)
摘要:1、Stream概述 Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。 那么什么是Stream? Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行 阅读全文
posted @ 2021-08-11 15:35 wang_longan 阅读(82) 评论(0) 推荐(0)
摘要:为什么使用JWT? 随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token 阅读全文
posted @ 2021-07-28 16:04 wang_longan 阅读(206) 评论(0) 推荐(0)
摘要:背景 也许大家在使用流时因为未关闭、或者未正常关闭引发了很多问题。其实java7引入了自动关闭流机制,只是我们未使用而已。 自动关闭流例子 import java.io.*; public class AutoCloseTest { public static void main(String[] 阅读全文
posted @ 2021-06-10 16:05 wang_longan 阅读(2437) 评论(0) 推荐(0)
摘要:什么是序列化、意义及使用场景 序列化:将对象写入到IO流中 反序列化:从IO流中恢复对象 意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。 使用场景:所有可在网络上 阅读全文
posted @ 2021-06-10 14:06 wang_longan 阅读(584) 评论(0) 推荐(0)
摘要:lombok项目背景 官方介绍如下: Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java. Never write anoth 阅读全文
posted @ 2021-06-08 15:20 wang_longan 阅读(169) 评论(0) 推荐(0)