
java基础
文章平均质量分 73
cj_eryue
工作之余的学习
展开
-
Java 中如何终止一个正在运行的线程
Java 线程中断的三种实现方式:volatile 标志位:通过设置标志位,使线程正常退出,能够确保线程根据业务逻辑安全停止。Thread.stop() 方法:已废弃,不推荐使用,因为会导致线程安全问题和资源泄漏。Thread.interrupt() 方法:推荐使用,通过设置中断标志来提示线程停止,能够优雅的停止线程。原创 2025-03-31 10:23:56 · 956 阅读 · 0 评论 -
正则表达式的常见语法
在Java中使用正则表达式进行字符串匹配可以说是一个很重要的技能,尤其对于需要进行文本处理或者字符替换的程序来说,更是必不可少的技术手段原创 2024-04-23 20:22:02 · 568 阅读 · 0 评论 -
java RMI 技术介绍和实践
RMI 基本思想是远程方法调用,即客户端调用某个方法,其本质是将这个方法的调用请求,发送给服务器,由服务器代为执行,且,服务器将执行结果回送客户端。对于客户端而言,RMI 只要求客户端针对方法本身,产生一种错觉:方法是在本地被调用的;对于服务器而言,RMI 相当于要处理一个来自客户端的“请求”;这个请求针对某个方法。原创 2023-11-08 11:16:38 · 1976 阅读 · 0 评论 -
服务器执行命令或脚本的两种方式
Java的Runtime类和ProcessBuilder类都允许Java程序启动一个新的进程并执行特定的命令,通过标准输入输出流进行数据交换。Runtime类适用于简单的命令执行,ProcessBuilder类则更加灵活,适用于复杂的命令和参数传递。原创 2023-10-27 10:19:31 · 493 阅读 · 0 评论 -
CopyOnWriteArrayList原理分析
CopyOnWriteArrayList 类的所有可变操作(add,set 等等)都是通过创建底层数组的新副本来实现的。当 List 需要被修改的时候,我并不修改原有内容,而是对原有数据进行一次复制,将修改的内容写入副本。写完之后,再将修改完的副本替换原来的数据,这样就可以保证写操作不会影响读操作了。原创 2023-06-14 15:04:23 · 519 阅读 · 0 评论 -
泛型的介绍以及原理
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。原创 2023-05-30 14:13:16 · 1975 阅读 · 0 评论 -
ArrayList源码分析
ArrayList的底层原理1,底层用Object数组来存储元素;2,有扩容机制,默认扩容机制是10,每次扩容都是扩容到之前的1.5倍;3,添加元素到指定位置可能会移动很多元素并且可能会触发扩容机制,如果是添加元素到末尾那么只可能触发扩容机制;4,删除指定位置的元素可能会移动很多元素,删除末尾元素代价是最小的,ArrayList删除元素是将末尾元素置为null;5,查询或者修改某个具体位置的元素是很快的;原创 2023-02-07 16:48:12 · 411 阅读 · 0 评论 -
Base64编码知识记录
目录编码说明编码方式体积增大= 等号demoBase64 是一种基于 64 个可打印字符来表示二进制数据的表示方法,由于 2^6=64,所以每 6 个比特为一个单元,对应某个可打印字符。Base64 常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据。Base64 编码要求把 3 个 8 位字节(3*8=24)转化为 4 个 6 位的字节(4*6=24),之后在 6 位的前面补两个 0,形成 8 位一个字节的形式。 如果剩下的字符不足 3 个原创 2022-11-09 17:53:35 · 628 阅读 · 0 评论 -
StringUtils.leftPad的用法
StringUtils.leftPad的用法。格式化缩进空格原创 2022-08-31 20:54:42 · 4674 阅读 · 0 评论 -
Jackson框架处理多态类
Jackson框架处理多态类原创 2022-06-28 20:08:52 · 987 阅读 · 0 评论 -
序列化和反序列化的概念及应用
1、序列化和反序列化的概念序列化:把对象转换为字节序列的过程。 反序列化:把字节序列恢复为对象的过程称。2、什么情况下需要序列化把内存中的对象状态保存到一个文件中或者数据库中时候; 用套接字在网络上传送对象的时候; 通过RMI传输对象的时候;3、如何实现序列化实现Serializable接口即可package com.cjian.ser;import java.io.Serializable;/** * @Author: cjian * @Date: 2022/2/2原创 2022-02-23 19:16:10 · 976 阅读 · 0 评论 -
Linux零拷贝原理
前言大白话解释,零拷贝就是没有把数据从一个存储区域拷贝到另一个存储区域。但是没有数据的复制,怎么可能实现数据的传输呢?其实我们在java NIO、netty、kafka遇到的零拷贝,并不是不复制数据,而是减少不必要的数据拷贝次数,从而提升代码性能零拷贝的好处 内核空间和用户空间 缓冲区和虚拟内存 传统的 I/O mmap+write 实现的零拷贝 sendfile 实现的零拷贝 带有DMA收集拷贝功能的sendfile实现的零拷贝 java提供的零拷贝方式零拷贝的好处减少..原创 2021-07-15 15:40:25 · 150 阅读 · 0 评论 -
JUC——volatile关键字的使用以及底层原理浅析
volatile在平常开发中可能使用的场景有限,但是在JUC包下却是被大量使用我们先来先看一个列子:package com.cjian.JUC;/** * @description: * @author: CJ * @time: 2020/12/9 14:02 */public class VolatileDemo { public static void main(String[] args) { ThreadDemo threadDemo = ne..原创 2020-12-14 17:27:45 · 248 阅读 · 0 评论 -
强软弱虚引用
1.强引用package com.cjian.threadlocal;import java.io.IOException;/** * @description:强引用 * @author: cWX969834 * @time: 2020/11/12 18:52 */public class NormalReferenceTest { public static void main(String[] args) throws IOException { .原创 2020-11-12 22:00:55 · 197 阅读 · 0 评论 -
红黑树
二叉查找树:1.至多两个子节点;2.左子节点小于父节点,右子节点大于父节点平衡二叉树(AVL):1.具有二叉树的全部特性;2.每个节点的左子树和右子树的高度差至多等于1。为什么有了二叉平衡树(AVL)还需要红黑树?虽然AVL解决了二叉查找树退化为近似链表的缺点,能够把查找时间控制在O(logn),不过却不是最佳的。因为平衡树要求每个节点的左子树和右子树的高度差至多为1,这个要求太严格了,导致每次进行插入/删除节点的时候,几乎都会破坏平衡树的第二个规则,进而我们都需要.原创 2020-08-28 10:11:28 · 194 阅读 · 1 评论 -
HashMap的容量为什么是2的n次幂小记
HashMap的容量为什么是2的n次幂,和这个(n - 1) & hash的计算方法有着千丝万缕的关系,符号&是按位与的计算,这是位运算,计算机能直接运算,特别高效,&的计算方法是,只有当对应位置的数据都为1时,运算结果也为1,当HashMap的容量是2的n次幂时,(n-1)的2进制也就是1111111***111这样形式的,这样与添加元素的hash值进行位运算时,能够充分的散列,使得添加的元素均匀分布在HashMap的每个位置上,减少hash碰撞,下面举例进行说明由图...原创 2020-08-18 17:06:37 · 439 阅读 · 0 评论 -
一道题明白类的加载和对象的初始化顺序
-------献给我的女票大人,么么哒 记得有次她截了个图给我,问我,这个主函数里为什么调用不到这个类里面的一个方法,我一眼就看出来,这个方法没有被static修饰啊,你也没有创建一个该类的实例啊,当然调用不到啊,(ps:得意一把),因此觉得她在这块有点薄弱啊,哈哈,当然啦,老婆大人的技术还是很好的,就是有点呆笨呆笨的不多说,直接上代码,有错的地方请大家原创 2016-02-20 11:55:23 · 725 阅读 · 0 评论 -
HashMap底层tableSizeFor方法小记
static final int MAXIMUM_CAPACITY = 1 << 30; /** * Returns a power of two size for the given target capacity. */ static final int tableSizeFor(int cap) { /** * 这是为了防止,cap已经是2的幂。如果cap已经是2的幂, 又没有执行这个减1操作,则执行完后面...原创 2020-08-18 12:25:20 · 284 阅读 · 0 评论 -
位运算符小记
操作符 描述 例子 & 如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100 | 如果相对应位都是 0,则结果为 0,否则为 1 (A | B)得到61,即 0011 1101 ^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001 〜 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 (〜A)得到-61,即1100 0011 << .原创 2020-08-11 10:43:42 · 182 阅读 · 0 评论