java
香山上的麻雀1008
大数据
展开
-
ConcurrentLinkedHashMap 自动实现LRU策略
本文转载自: https://blog.csdn.net/newbie0107/article/details/102512599<!-- https://mvnrepository.com/artifact/com.googlecode.concurrentlinkedhashmap/concurrentlinkedhashmap-lru --><dependency> <groupId>com.googlecode.concurrentlinkedhash转载 2021-08-10 13:39:10 · 1305 阅读 · 0 评论 -
Java 自定义实现LRU HashMap
LinkedHashMap继承自HashMap,内部提供了一个removeEldestEntry方法,该方法正是实现LRU策略的关键所在,且HashMap内部专门为LinkedHashMap提供了3个专用回调方法,afterNodeAccess、afterNodeInsertion、afterNodeRemoval,这3个方法的字面意思非常容易理解,就是节点访问后、节点插入后、节点删除后分别执行的行为。基于以上行为LinkedHashMap就可以实现一个LRUCache的功能了。关于LinkedHashM转载 2021-08-10 11:27:22 · 426 阅读 · 0 评论 -
java8解析带有 AM/PM 的12小时制 时间字符串
今天遇到了这样的一件事,时间字段是12小时制的,而且是带有AM/PM 的字符串,怎么解析成标准化的时间格式呢?时间数据样本:12/25/2020 11:27:49 AM经过一番探索后发现代码可以这样写:DateTimeFormatter df = DateTimeFormatter.ofPattern("MM/dd/yyyy h:mm:ss a",Locale.ENGLISH);LocalDateTime dateTime = LocalDateTime.parse(str, df);Syst原创 2021-03-26 16:28:51 · 1858 阅读 · 0 评论 -
线程池(五)线程池四种拒绝策略
简介线程池等待队列已经排满,再也塞不下新的任务了,同时线程池的maximumPoolSize线程也达到了最大值,无法继续为新任务服务。这个时候我们需要拒绝策略机制合理的处理这个问题。JDK内置的拒绝策略:AbortPolicy(默认):直接抛出RejectedExecutionException异常阻止系统正常运行。CallerRunsPolicy:"调用者运行"一种调节机制,该策略既...原创 2020-02-04 20:29:13 · 467 阅读 · 2 评论 -
scala 数组 传入 java可变参数列表的方法中
scala数组是用Array[String]来表示:def main(args: Array[String]): Unit = {}如果这个args传入java的参数列表 为String[] 的方法内 是可以正常转换的。但是如果传入java方法的参数列表为可变参数String...时就会报错,这时应该用:public static void test(String... args){...}在scala代码中调用上述java方法时,应该这样写:def main(args: Array[原创 2021-01-23 16:42:04 · 1176 阅读 · 1 评论 -
java String类型删除第一个出现的特定字符串
String 类 方法 replaceFirst () 查找第一次出现的指定字符解决方法:下面代码只删除str中第一次出现的ddd字符串String str="dddkkkddd";String d=str.replaceFirst("ddd", "");System.out.println(d);转载 2021-01-22 10:18:46 · 7886 阅读 · 0 评论 -
使用Java中的Stream流的方式实现单词的频次统计
单词的频次统计是学习大数据中的一个相当经典的案例。像使用MapReduce、Scala、Spark、Hive等技术都可以完成,相应的操作。在Java8中,其新增的特性Stream流,也可以很简单的完成单词频次统计的案例。下面上一段代码:@Test public void test() { List<String> list = Arrays.asList("hello"...原创 2020-03-08 18:23:45 · 848 阅读 · 0 评论 -
线程池(一)为什么用线程池,线程池的优势?
线程池做的工作主要是控制运行的线程的数量,处理过程中,将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出的数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点:线程复用、控制最大并发数、管理线程。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等待线程创建就能立即执行。提高...原创 2020-02-03 09:53:33 · 567 阅读 · 0 评论 -
java 使用反射方式 获取对象
假设有一个类Abc,我们要用反射方式获取这个类的对象:public class Abc { private HashMap map; public HashMap getMap() { return map; } public Abc(HashMap map) { this.map = map; }}反射方法获取类对象伪代码:public static void main(String[] args) { try {原创 2020-09-18 09:26:33 · 548 阅读 · 0 评论 -
Java8中的LocalDateTime和时间戳timestamp互相转换
将timestamp转为LocalDateTimepublic LocalDateTime timestamToDatetime(long timestamp){ Instant instant = Instant.ofEpochMilli(timestamp); return LocalDateTime.ofInstant(instant, ZoneId.sys...原创 2019-11-14 17:48:04 · 25036 阅读 · 1 评论 -
JDK安全证书导入踩过的坑记录
1.JDK导入证书 keytool -import -trustcacerts -alias aaa -file ceshi.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit; ps:(1).aaa为导入证书的名称,自己定义 (2).执行命令行后要输入的密令:changeit2.查看cacerts中的证书列表 keytool -list -keystore "%JAVA_HOME%/jre/lib/se转载 2020-09-10 17:06:36 · 2845 阅读 · 4 评论 -
Java虚拟机垃圾回收(三) 7种垃圾收集器
在《Java虚拟机垃圾回收(一) 基础》中了解到如何判断对象是存活还是已经死亡?在《Java虚拟机垃圾回收(二) 垃圾回收算法》了解到Java虚拟机垃圾回收的几种常见算法。 下面先来了解HotSpot虚拟机中的7种垃圾收集器:Serial、P...转载 2019-09-22 15:00:23 · 343 阅读 · 0 评论 -
java中volatile关键字详解
Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块(synchronized) 和 volatile 关键字机制。synchronized同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用synchronized 修饰的方法 或者 代码块。volatil...原创 2019-03-31 09:51:13 · 314 阅读 · 0 评论 -
栈上分配与逃逸分析
引言:栈上分配与逃逸分析是在JVM层面进行java性能优化的一个技巧,本文将深入解读其应用以及原理。1. &amp;nbsp;什么是栈上分配?&amp;nbsp; &amp;nbsp;栈上分配主要是指在Java程序的执行过程中,在方法体中声明的变量以及创建的对象,将直接从该线程所使用的栈中分配空间。 一般而言,创建对象都是从堆中来分配的,这里是指在栈上来分配空间给新创建的对象。2. &amp;nbsp;什么是逃逸?&am转载 2019-03-18 15:04:37 · 857 阅读 · 0 评论