INDEX.LIST 2023-01-09 2023-04-02 编程语言 / Java 5 分钟读完 (大约815个字)INDEX.LIST一、INDEX.LIST 是什么?jar 包里面声明的索引列表,描述了 jar 包下所有的资源文件的路径,包含了应用程序及其扩展程序中的包的位置信息。 其作用就类似一个索引目录,目的是为了快速定位,类加载器会使用它来提高类的加载速度。 java, jar 阅读更多
jar 命令 2023-01-09 2023-04-02 编程语言 / Java 4 分钟读完 (大约607个字)jar 命令一、jar命令语法123456789101112131415161718用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...选项: -c 创建新档案 -t 列出档案目录 -x 从档案中提取指定的 (或所有) 文件 -u 更新现有档案 -v 在标准输出中生成详细输出 -f 指定档案文件名 -m 包含指定清单文件中的清单信息 -n 创建新档案后执行 Pack200 规范化 -e 为捆绑到可执行 jar 文件的独立应用程序指定应用程序入口点 -0 仅存储; 不使用任何 ZIP 压缩 -P 保留文件名中的前导 '/' (绝对路径) 和 ".." (父目录) 组件 -M 不创建条目的清单文件 -i 为指定的 jar 文件生成索引信息 -C 更改为指定的目录并包含其中的文件(可以理解为首先cd到指定目录)如果任何文件为目录, 则对其进行递归处理。清单文件名, 档案文件名和入口点名称的指定顺序与 'm', 'f' 和 'e' 标记的指定顺序相同。 java, jar 阅读更多
String.replaceAll() 2023-01-09 2023-04-02 编程语言 / Java 4 分钟读完 (大约582个字)String.replaceAll()String.replaceAll() 方法的定义和实现是这样的: 123public String replaceAll(String regex, String replacement) { return Pattern.compile(regex).matcher(this).replaceAll(replacement);} 第1个参数是正则表达式,第2个参数则是替换的字符串。 java, 字符串 阅读更多
Java 反射调用有可变参数的方法 2023-01-09 2023-04-02 编程语言 / Java 6 分钟读完 (大约912个字)Java 反射调用有可变参数的方法Java 反射经常会用到,但是在反射可变参数时,写法和平时有点不同。 以下面的类作为反射对象试验: 12345class Parameters { public int multi(Object... args) { return args.length; }} java, 反射, 可变参数 阅读更多
Java 的格式化字符串 2023-01-08 2023-04-02 编程语言 / Java 17 分钟读完 (大约2523个字)Java 的格式化字符串一、格式化 Formatter 参考了 C 语言的 printf() 函数,但 Java 的格式化会更严格一些 同时定制化增加了 Java 语言的一些特性,使得格式化更适用于 Java 语言 java, 字符串, 格式化 阅读更多
16_03_Happen-Before原则的借助 2022-05-15 2023-04-03 编程语言 / Java 5 分钟读完 (大约770个字)Happen-Before原则的借助Happen-Before 原则可以保证变量的可见性,因此可以通过 “借助” 的方式,来间接地实现对无锁保护变量的安全性保护。 “借助” 技术,一般将程序次序规则和其他某个规则(比如监视器锁规则或者 volatile 变量规则)结合起来实现的。 这种 “借助” 技术,对于代码语句的顺序非常敏感,因此很容易出错,属于一种高级技术。 java, 并发编程 阅读更多
16_02_Java内存模型 2022-05-15 2023-04-03 编程语言 / Java 20 分钟读完 (大约3074个字)Java内存模型一、什么是内存模型?缓存一致性问题: 在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存(Main Memory) 当多处理器对同一块主内存区域进行操作时,可能会导致各自的缓存数据不一致,这就是缓存一致性问题 java, 并发编程 阅读更多
16_01_并发问题来源 2022-05-15 2023-04-03 编程语言 / Java 7 分钟读完 (大约1035个字)并发问题来源一、缓存带来的可见性问题 计算机中可以保存数据的地方有几个:寄存器、缓存、主内存 原始数据都保存在主存上,最初的读取和最终的写入,都是在主存上操作 CPU 与主存之间存在缓存,每个 CPU 都有自己独立的的缓存 操作数据时,首先要将原始数据从主存中读取到 CPU 的缓存中,然后再对缓存的数据进行操作 单 CPU 下,一个线程对缓存的修改,对于另一个线程来说是可见的,因为只有一个缓存 多 CPU 下,线程可能运行在不同 CPU 上,操作的是各自不同的缓存,相互之间是不可见的 java, 并发编程 阅读更多
15_02_原子变量 2022-05-15 2023-04-03 编程语言 / Java 6 分钟读完 (大约849个字)原子变量一、原子变量类原子变量类相当于是一种泛化的 volatile 变量,能够支持原子和有条件的读写操作。 1.1 原子类型 标量类:AtomicInteger、AtomicLong、AtomicBoolean、AtomicReference 数组类:AtomicIntegerArray、AtomicLongArray、AtomicBooleanArray 更新器类:AtomicIntegerFieldUpdater、AtomicLongFieldUpdater、AtomicBooleanFieldUpdater 复合变量类:AtomicMarkableReference java, 并发编程 阅读更多
15_01_CAS操作 2022-05-15 2023-04-03 编程语言 / Java 6 分钟读完 (大约912个字)CAS 操作一、锁的劣势 采用独占的方式访问锁的守护变量 获取锁,存在挂起和恢复线程的问题,这些操作都比较耗时 等待锁时,线程不能做其他的事情 容易出现活跃性故障,比如死锁、活锁等 锁竞争激烈时,线程调度开销会非常大 java, 并发编程 阅读更多