JAVA
文章平均质量分 61
Mr_PH
为了将来更优秀的自己
展开
-
JAVA并发编程基础-重排序
重排序在执行程序时为了提高性能,编译器和处理器常常会对指令做重排序。这些重排序都可能导致多线程程序出现内存可见性问题。重排序类型 编译器优化的重排序:编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。 指令级并行的重排序:现代处理器采用了指令级并行技术(ILP)来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应及其执行的执行顺序。 内存系统的重排序:由于处理器使用缓存使用缓存和读/写缓冲区,这使得夹杂和存储操作看上去可能实在乱序执行。 J原创 2021-04-13 15:12:42 · 233 阅读 · 1 评论 -
JAVA并发编程基础
并发编程中的关键问题 线程之间如何通信 共享内存的并发模型中:线程之间通过读写内存中的公共状态来隐式进行通信 信息传递的并发模型中:线程之间没有公共状态,线程间通过明确的发送信息方式来显性进行通信 线程之间如何同步 共享内存的并发模型中:同步是显性进行的,程序员通过显式指定某个方法或代码在线程之间互斥执行 信息传递的并发模型中:由于信息的阿松必须在消息的接收之前,因此同步是隐式进行的 线程: 并发执行的活动实体通信:原创 2021-04-13 11:25:48 · 182 阅读 · 0 评论 -
JAVA 基本数据类型
java是一种强类型的编程语言,也就是说我们需要为每一个变量都声明一种类型。java为我们的提供了8种基本数据类型(primitive type);包含四种整形(byte,short,int,long)、两种浮点型(float,double)、一种用于表示Unicode 编码的字符单元的字符类型 char 和 一 种用于表示真值的 boolean 类型。整形: 整形用以表达没...原创 2018-09-06 18:01:44 · 358 阅读 · 0 评论 -
Stream 的常用操作
Intermediate :一个流可以后面跟随零个或多个 intermediate 操作。其目的主要是打开流,做出某种程度的数据映射/过滤,然后返回一个新的流,交给下一个操作使用。这类操作都是惰性化的(lazy),就是说,仅仅调用到这类方法,并没有真正开始流的遍历。 map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 l...原创 2018-09-05 15:30:48 · 748 阅读 · 0 评论 -
Stream转为其他数据结构
Stream<String> stream = Stream.of("a","b", "c");//转为数组String[] strArray1 = stream.toArray(String[]::new);// 转为 Collection 的实现类List<String> list1 = stream.collect(Collectors.toList(...原创 2018-09-05 15:29:14 · 1082 阅读 · 0 评论 -
Stream 的常用构建方式
1 、通过其本身的静态方法构建//01 通过Stream 自身的静态方法 of 构建Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5); 2 、通过数组进行构建//02 通过数组进行构建//本质通过Stream 自身的静态方法 of 构建String [] strArray = new S...原创 2018-09-05 15:28:10 · 511 阅读 · 0 评论 -
lambda的递归
package testLambda;import java.util.function.IntUnaryOperator;/** * lambda的递归 * @author P H * @date 2018/8/31 15:48 */public class LambdaRecursion { //IntUnaryOperator 表示对单个int值的操作数的操作...原创 2018-09-05 15:24:40 · 1145 阅读 · 0 评论 -
常用lamdba函数式接口
/** * Interface ToIntFunction<T> * 计算 int 值的函数可以用来拆包 * ToIntFunction<T> * ToLongFunction<T> * ToDoubleFunction<T> 这三个方法作用类似,不再赘述 */ToIntFunction<Integer> toIntFun...原创 2018-09-05 15:23:08 · 327 阅读 · 0 评论 -
Java内置的四大核心函数式接口
java提供的函数式接口放置在java.util.function 下 函数式接口 参数类型 返回类型 用途 Consumer<T> 消费型接口 T void 对类型为T的对象应用操作,包含方法 : ...原创 2018-09-05 15:21:46 · 767 阅读 · 0 评论 -
lambda表达式基本原理
一般来说,任何lambda表达式都可以看做声明在函数式接口中的单个抽象方法的实现1. lambda的使用需要 “函数式接口” 的支持函数式接口:接口中只有一个抽象方法的接口,称为函数式接口,函数式接口(Functional Interface):就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为lambda表达式。函数式接口可以现有的函...原创 2018-09-05 15:20:47 · 1378 阅读 · 1 评论 -
lambda表达式基本语法
1 、无参数,无返回值() -> System.out.println("hello World")Runnable hello_world = () -> System.out.println("hello World");hello_world.run(); //控制台输出hello World2 、有参数,无返回值(x) -> System.out.pr...原创 2018-09-05 15:18:49 · 863 阅读 · 0 评论 -
JAVA设计模式-工厂模式
核心本质1. 实例化对象:用工厂方法代替new操作2. 将选择实现类、创建对象统一管理和控制。从而将调用者和我们的实现类解耦。分类:简单工厂模式:用来生产同一等级结构中的任意产品(对于新增加的产品,需要修改已有代码)工厂方法模式:用来生产同一等级结构中的固定产品(支持增加任意产品)抽象工厂模式:用于生产不同产品族的所有产品(支持增加产品族,对于新增加的产品无能为力)原创 2017-10-10 20:58:44 · 285 阅读 · 0 评论 -
JAVA设计模式-单例模式(Singleton)的五种实现方式
单例(Singleton)模式 也叫单态模式我在另一篇文章中已经介绍过了过关于单例模式的简单描述和优缺点,感兴趣的朋友可以点击下面的连接,在这里我就不在赘述。单例模式(Singleton)应用场景和优缺点本篇文章主要介绍单例模式常见的5种实现方式,分别是:懒汉式、饿汉式、双重检测锁式、静态内部类式和枚举单例。下面我将为大家逐个介绍他们的特点和实现方式。饿汉式(线原创 2017-10-10 14:42:02 · 446 阅读 · 0 评论