摘要: 先来提出问题和给出答案,之后再刨根问底的揭开面纱: 问:volatile 的可见性和禁止指令重排序是怎么实现的? 答:可见性:是通过缓存一致性协议来达到的 禁止指令重排序:JMM 模型里有 8 个指令来完成数据的读写,通过其中 load 和 store 指令相互组合成的 4 个内存屏障实现禁止指令重 阅读全文
posted @ 2020-04-28 16:10 星火燎原智勇 阅读(706) 评论(1) 推荐(3) 编辑
摘要: 摘要:这次solr底层升级是一次比较大的升级。从底层搜索引擎 solr4.8 升级到 solr6.4.2,由于solr底层从6.x开始以来的jdk必须指定为1.8,而且很多内部实现类都已经废弃或者干脆被砍掉了,这样就导致了很多实现类都需要进行兼容性的处理,第三方依赖的库也需要跟着进行升级改造。例如I 阅读全文
posted @ 2017-03-06 23:36 星火燎原智勇 阅读(1201) 评论(1) 推荐(2) 编辑
摘要: 背景 mac 上安装了多个 jdk 版本,而 MacOS 默认会选择在 /Library/Java/JavaVirtualMachines 目录下的最新版本作为当前JDK版本,但是我们有的时候又不想使用当前这个默认版本,接下来解决如何随意切换 jdk 版本的骚操作了。 查看 macOS 下 JDK 阅读全文
posted @ 2022-02-22 17:29 星火燎原智勇 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 概要说明:这里汇总了线上常用到的各种按行读取方法 1、BufferedReader import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ReadFileL 阅读全文
posted @ 2021-05-19 23:47 星火燎原智勇 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 1、Object TO List<?> java中如果需要将一个object转成list,大部分人会直接使用强制类型转换:(List<String>) obj这样。这样强制转换编译会提示Unchecked cast: 'java.lang.Object' to 'java.util.List<jav 阅读全文
posted @ 2021-05-19 23:39 星火燎原智勇 阅读(3990) 评论(0) 推荐(0) 编辑
摘要: 一、数组初始化 1、静态初始化 int[] intArr = new int[]{1,2,3,4,5,9}; 2、简化静态初始化 String[] strArr = {"张三","李四","王二麻"}; 3、动态初始化 int[] price = new int[4]; price[0] = 99; 阅读全文
posted @ 2021-05-18 23:30 星火燎原智勇 阅读(225) 评论(0) 推荐(0) 编辑
摘要: java 类型 占用字节数 byte 1 short 2 char 2 int 4 float 4 long 8 double 8 string 英文字符占用 1 个字符 中文字符 GBK 编码占用 2 个字符,UTF-8 占用 3 个字符 阅读全文
posted @ 2021-05-18 21:37 星火燎原智勇 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 命令参数 备注 mvn -v --version 显示版本信息; mvn -V --show-version 显示版本信息后继续执行Maven其他目标; mvn -h --help 显示帮助信息; mvn -e --errors 控制Maven的日志级别,产生执行错误相关消息; mvn -X --d 阅读全文
posted @ 2021-05-18 21:33 星火燎原智勇 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 背景 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变的更加简洁紧凑。 语法 lambda 表达式的语法格式如下: (parameters) -> expr 阅读全文
posted @ 2021-04-22 23:22 星火燎原智勇 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 背景 Java 8 API 添加了一个新的抽象称为:流Stream,它可以让你以一种声明的方式处理数据。Stream API 可以极大提高写出高效率、干净、简洁的代码。 这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。具体类似于如 阅读全文
posted @ 2021-04-22 23:14 星火燎原智勇 阅读(115) 评论(0) 推荐(0) 编辑
摘要: Linux grep 命令用于查找文件里符合条件的字符串。 grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。 语法结构 grep 参数 符合文本样式 文件 参数 -A 10 : 除了显示符合范本样式的 阅读全文
posted @ 2021-04-21 20:27 星火燎原智勇 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 前提 在 Java8 中,我们可以通过使用 forEach 的新功能结合 Stream 可以更加方便的对 Map、List、Set等集合进行遍历。 主题 Loop a Map Loop a List forEach and Consumer forEach and Exception handlin 阅读全文
posted @ 2021-04-18 23:06 星火燎原智勇 阅读(1553) 评论(0) 推荐(0) 编辑
摘要: 背景 接着《1、Optional 应用》的基础,我们直接来看下线上的实际应用。 线上示例 1、案例一:循环内部判空 原始代码 List<ConstantScoreQueryBuilder> validBuilderList = Lists.newArrayList(); for (ConstantS 阅读全文
posted @ 2021-04-18 22:08 星火燎原智勇 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 前言 相信不少小伙伴已经被java的NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过“防止 NPE,是程序员的基本修养。”但是修养归修养,也是我们程序员最头疼的问题之一,那么我们今天就要尽可能的利用Java8的新特性 Optional来尽量简化代码同时 阅读全文
posted @ 2021-04-15 21:14 星火燎原智勇 阅读(2620) 评论(0) 推荐(0) 编辑
摘要: 1、jps jps主要用来输出JVM中运行的进程状态信息。常用参数命令: jps -v -v 输出传入JVM的参数 使用这个命令我们可以很轻松的查看相应服务的启动参数与配置。 2、jstack jstack -l pid | jstack -m pid #-l long listings,会打印出额 阅读全文
posted @ 2020-09-30 12:23 星火燎原智勇 阅读(285) 评论(0) 推荐(0) 编辑
摘要: Multiset集合 Multiset是什么?顾名思义,Multiset和Set的区别就是可以保存多个相同的对象。在JDK中,List和Set有一个基本的区别,就是List可以包含多个相同对象,且是有顺序的,而Set不能有重复,且不保证顺序(有些实现有顺序,例如LinkedHashSet和Sorte 阅读全文
posted @ 2020-09-12 22:52 星火燎原智勇 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 一、cat 参数规范 二、cat API 1. 查看集群健康情况 GET /_cat/health?v 2. 查看集群上整个索引 或 指定索引 统计信息 GET /_cat/indices?v GET /_cat/indices/food20200909?v 3. 查看集群整体分片 或 指定索引分片 阅读全文
posted @ 2020-09-10 12:05 星火燎原智勇 阅读(486) 评论(0) 推荐(0) 编辑