![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSE
G0_hw
路漫漫其修远兮,吾将上下而求索
https://github.com/Go007/
https://gitee.com/hong_007/projects
展开
-
List 如何一边遍历,一边删除?
一. 第一时间想到的错误方式原创 2020-06-12 15:33:16 · 569 阅读 · 0 评论 -
Java8新特性解析
一.Java8新特性的主要内容点Lambda表达式函数式接口方法引用与构造器引用Stream API接口中的默认方法与静态方法新时间日期API其他新特性二.Java8新特性简介速度更快代码更少(增加了新的语法Lambda表达式)强大的Stream API便于并行最大化减少空指针异常 Optional其中最为核心的是Lambda表达式与Stream API...原创 2017-10-25 11:20:32 · 511 阅读 · 0 评论 -
Java中的并发工具类
前言:JDK1.5中增加了几个线程同步辅助器(并发工具类),CountDownLatch,CyclicBarrier,Semaphore分别提供了一种并发流程控制的手段,Exchanger则提供了在线程间交换数据的一种手段.1.等待多线程完成的CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作.例如,应用程序的主线程希望在负责启动框架服务的线程已经...原创 2018-10-18 19:21:20 · 187 阅读 · 0 评论 -
Java8 In Action-2.函数式数据处理(四)
4.并行数据处理与性能4.1并行流Stream.parallelStream:把集合转换为并行流并行流就是一个把内容分成多个数据块,并用不同的线程分别处理每个数据块的流。这样一来,你就可以自动把给定操作的工作负荷分配给多核处理器的所有内核,让它们都忙起来。public static void main(String[] args) throws IOException { ...原创 2018-09-30 22:51:44 · 169 阅读 · 0 评论 -
Java8 In Action-附录B.类库的更新
B.1 集合Collection API在Java 8中最重大的更新就是引入了流,除此之外,Collection API还有一部分更新.B.1.1 其他新增的方法1. MapMap接口的变化最大,它增加了多个新方法,利用这些新方法能更加便利地操纵Map中的数据。//getOrDefault方法就可以替换现在检测Map中是否包含给定键映射的惯用方法。//如果Map中不存在这样的键映射,...原创 2018-10-06 16:42:00 · 162 阅读 · 0 评论 -
Java8 In Action-附录A.其他语言特性的更新
Java 8中其他的三个语言特性的更新,分别是重复注解(repeated annotation)、类型注解(type annotation)和通用目标类型推断(generalized target-type inference)。A.1 注解Java 8在两个方面对注解机制进行了改进,分别为: 你现在可以定义重复注解 使用新版Java,你可以为任何类型添加注解Java中的注解是一种对...原创 2018-10-06 15:55:17 · 203 阅读 · 0 评论 -
Java8 In Action-2.函数式数据处理(三)
3.用流收集数据你可以把Java 8的流看作花哨又懒惰的数据集迭代器。它们支持两种类型的操作:中间操作(如filter或map)和终端操作(如count、 findFirst、 forEach和reduce) 。中间操作可以链接起来,将一个流转换为另一个流。这些操作不会消耗流,其目的是建立一个流水线。与此相反,终端操作会消耗流,以产生一个最终结果,例如返回流中的最大元素。它们通常可以通过优化流水...原创 2018-09-30 21:32:52 · 187 阅读 · 0 评论 -
Java8 In Action-3.超越 Java 8 (二)
2.函数式编程的技巧2.1无处不在的函数“函数式编程”意指函数或者方法的行为应该像“数学函数”一样——没有任何副作用。让函数可以像任何其他值一样随意使用:可以作为参数传递,可以作为返回值,还能存储在数据结构中。能够像普通变量一样使用的函数称为一等函数(first-class function)。这是Java 8补充的全新内容:通过::操作符,你可以创建一个方法引用,像使用函数值一样使用方法,也...原创 2018-10-04 22:17:31 · 346 阅读 · 0 评论 -
Java8 In Action-3.超越 Java 8 (一)
1.函数式的思考1.1实现和维护系统共享的可变数据使用可变的共享数据结构会使程序的各个组成部分变得很难追踪.如果一个方法既不修改它内嵌类的状态,也不修改其他对象的状态,使用return返回所有的计算结果,那么我们称其为纯粹的或者无副作用的。更确切地讲,到底哪些因素会造成副作用呢? 除了构造器内的初始化操作,对类中数据结构的任何修改,包括字段的赋值操作(一个典型的例子是setter方法...原创 2018-10-03 23:34:08 · 260 阅读 · 0 评论 -
Java8 In Action-3.高效 Java 8 编程(五)
5.新的日期和时间API第三方的日期和时间库,比如Joda-Time.Java 8在java.time包中整合了很多Joda-Time的特性。5.1LocalDate、 LocalTime、 Instant、 Duration 以及 Periodpublic static void main(String[] args) { /** * 使用 LocalDa...原创 2018-10-02 22:00:40 · 115 阅读 · 0 评论 -
Java8 In Action-3.高效 Java 8 编程(四)
4.CompletableFuture:组合式异步编程原创 2018-10-02 17:10:26 · 254 阅读 · 0 评论 -
Java8 In Action-3.高效 Java 8 编程(三)
3.用Optional取代null3.1如何为缺失的值建模采用防御式检查减少 NullPointerException//每个null检查都会增加调用链上剩余代码的嵌套层数public String getCarInsuranceName(Person person) { if (person != null) { Car car = person.getCar(); if (ca...原创 2018-10-01 23:20:30 · 171 阅读 · 0 评论 -
Java中的线程池
前言:Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池.合理使用线程池可以带来以下好处:降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁带来的消耗;提高响应速度,当任务到达时,任务可以不需要等到线程创建直接使用池中已有的线程就能立即执行;提高线程的可管理性,线程是稀缺资源,如果无限制创建,不仅会消耗系统资源,还会降低系统的稳定性,使...原创 2018-10-20 18:57:39 · 122 阅读 · 0 评论 -
使用extends定制化类
一.场景示例微服务间经常会涉及到服务的相互调用,现在假设某个服务对外暴露的接口规定入参格式都为Map<String,String>.二.常见的参数封装方式 Integer a = 123; Long id = 123L; Boolean flag = Boolean.TRUE; String b = "abc"; ...原创 2018-11-13 18:01:25 · 219 阅读 · 0 评论 -
线程安全之CAS
反编译:多线程下的i++操作:原创 2020-06-16 23:38:18 · 300 阅读 · 0 评论 -
Java集合去重合并以及汇总操作
一.背景在实际开发中,我遇到了一个场景,需要对两个数据源集合进行去重合并,并且对去重合并后的结果集进行数据标签加工汇总。二.场景演示现在有两个数据源集合,分别来自不同的端,且两个数据源集合中结构是相同的。模拟数据源集合1: Map<String, Object> m0 = new HashMap<>(); m0.put("birthd...原创 2019-04-27 17:14:52 · 2652 阅读 · 0 评论 -
高性能NIO编程
在传统的BIO中,服务端的Socket s = ss.accept()会阻塞直到有客户端连接进来,同时,一旦与客户端的连接建立,在while(mess = reader.readLine() != null)中也会阻塞直到读取到客户端有发送数据过来,此时,别的客户端想建立连接只能等待。Thread t = new Thread(new Runnable{});开辟了两块空间,一块是Ja...原创 2019-05-21 22:56:40 · 189 阅读 · 0 评论 -
多线程并行编程的设计
package com.hong.concurrent;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;/** * Created by John on 2019/1/24. * 场...原创 2019-06-04 23:04:46 · 179 阅读 · 0 评论 -
Java8 In Action-3.高效 Java 8 编程(二)
2.默认方法default关键字,默认方法的引入就是为了以兼容的方式解决像Java API这样的类库的演进问题的,它让类可以自动地继承接口的一个默认实现,为接口的演进提供了一种平滑的方式,你的改动将不会导致已有代码的修改。...原创 2018-10-01 22:06:20 · 183 阅读 · 0 评论 -
Java8 In Action-3.高效 Java 8 编程(一)
1.为改善可读性和灵活性重构代码改善代码的可读性三种简单的重构,利用Lambda表达式、方法引用以及Stream改善程序代码的可读性: 重构代码,用Lambda表达式取代匿名类 用方法引用重构Lambda表达式 用Stream API重构命令式的数据处理从匿名类到 Lambda 表达式的转换...原创 2018-10-01 17:06:02 · 247 阅读 · 0 评论 -
Java8 In Action-2.函数式数据处理(二)
2.使用流原创 2018-09-27 11:38:18 · 290 阅读 · 0 评论 -
Java8 In Action-2.函数式数据处理(一)
1.引入流1.1流是什么?流是Java API(java.util.stream.Stream)的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码了!总结一下, Java 8中的Stream API可以让你写出这样的代码:声明性——更简洁,更易...原创 2018-09-24 23:32:14 · 295 阅读 · 0 评论 -
Java8 In Action-1.基础知识
一.基础知识Java8带来的最重要的改变是引入了函数式编程的思想,在多核和处理大型数据集的计算应用下,带来了如Lambda(匿名函数) 、流、默认方法等核心特性,比之前的命令式更适应新的体系架构.新的编程概念1.1流处理流是一系列数据项,一次只生成一项.程序可以从输入流中一个一个读取数据项,然后以同样的方式将数据项写入输出流。一个程序的输出流很可能是另一个程序的输入流。Stream ...原创 2018-09-24 16:08:17 · 1419 阅读 · 0 评论 -
Java泛型的坑
一.问题 Spring Boot + Spring Cloud + FastJSON A服务中如下代码:import com.alibaba.fastjson.JSON;import com.dafycredit.common.model.Result;import org.apache.commons.collections4.map.HashedMap;import org....原创 2018-09-23 21:33:35 · 346 阅读 · 0 评论 -
Java中的批量操作实现
package com.h.collection;import java.util.ArrayList;import java.util.List;/** * Created by John on 2017/9/11. */public class Test { public static void main(String[] args) { List&amp;amp;lt;String&amp;amp;gt;原创 2017-09-11 23:13:16 · 7276 阅读 · 1 评论 -
java.util.concurrent的学习
一.volatile与内存可见性volatile关键字:当多个线程对共享数据进行操作时,可以保证内存中的数据可见. * 内存可见性:每个线程都有自己的工作内存,对于共享数据,每个线程会从主存中拷贝一份副本到自己的工作内存,操作的也是这个工作内存的副本.因此当一个线程对共享数据进行写操作进而刷新共享数据到主存中,另外一个线程并没有感知到主存中的共享数据已经发生了变化,仍然操作的是自己工作内存中的旧原创 2018-05-06 22:48:46 · 492 阅读 · 0 评论 -
NIO
转载自:https://www.cnblogs.com/xiaoxi/p/6576588.html Java NIO:IO与NIO的区别 一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用原创 2018-06-02 20:02:20 · 252 阅读 · 0 评论