javase
文章平均质量分 93
tangyaya8
这个作者很懒,什么都没留下…
展开
-
Java8-Optional容器使用
前言作为Java程序员,NullPointException是我们在开发调试中最常见的一个异常,原因也很简单,我们使用了一个没有被任何对应引用的值,它的值为null,所以在获取其对象时,系统会抛出NullPointException,就像这样:public class TestNullPointException{ @Test public void test_null_point_exception(){ String nullRefStr = null; boolean isEQ =原创 2021-03-09 10:36:21 · 306 阅读 · 1 评论 -
CompletableFuture 合并操作
背景最近在使用CompletableFuture做异步代码的重构,其中遇到了一些问题,记录下来。需求批量请求下游RPC的List,然后合并为一个List代码1.模拟调用下游请求 private CompletableFuture<List<Integer>> getIntegerList(int startIndex, int size) { return CompletableFuture.supplyAsync(() -> {原创 2020-10-11 00:27:39 · 5191 阅读 · 0 评论 -
Java泛型浅究(一)
泛型是什么?引用维基百科上的一段介绍泛型的话泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。泛型是存在于强类型语言中(先编译后运行)的一种机制,它其实提供了一种容器,它本质上是一个“代码模板”,可让开发者定义类型安全数据结构,无需处理实际数据类型,或者也可以说提供了一种抽象的数据结构,提高了编码的容错性,同时,也提高了代码的可读性。很多编程语言提供了泛型支持原创 2020-06-21 00:35:36 · 383 阅读 · 0 评论 -
java effective
服务提供者框架:服务接口提供注册API服务访问API(提供给客户端)服务提供者接口,如果没有可以通过反射获取原创 2019-08-28 00:27:07 · 119 阅读 · 0 评论 -
java8合并两个Map
合并两个Map需求:如果两个Map有冲突则Value取第二个Map中的Value例子准备实体类import lombok.*;@Getter@Setter@ToString@AllArgsConstructor@NoArgsConstructorpublic class Employee { private Long id; private String nam...原创 2019-06-10 20:54:59 · 20650 阅读 · 3 评论 -
java8行为参数化
函数式编程在很多语言中,函数式一等公民,比如Golang,Python,Scala,但是在java8之前,java一直是值是一等公民,想要传递一个行为或者一个方法给另外一个方法,必须要将这个方法包装在一个类中,如果这样要传递多个行为,代码将会爆炸。。。实体类:package com.tangdandan.domain;import lombok.AllArgsConstructor;i...原创 2018-12-21 10:39:02 · 163 阅读 · 0 评论 -
java8---Optional容器
背景:1965年,英国一位名为Tony Hoare的计算机科学家在设计ALGOL W语言时候提出了null引用的想法,ALGOL W是第一批在堆上分配记录类型的语言之一,Hoare选择用null这种代替空引用,其理由是简单,但是后来的很多语言都采用了类似的设计方式,比如我们熟悉的Java,但是这种方式在开发中为我们带来了巨大的麻烦,我们几乎无时不刻要判断某个对象是否为空,然后才能对其做一些其他...原创 2018-09-28 15:26:05 · 223 阅读 · 0 评论 -
JAVA8--Time新特性
为什么引入新的时间类库在JDK1.0的时候,java提供了java.util.Date类,正如类名所示,这个类不能表示日期,只能以毫秒的精度表示时间,并且年份的起始是从1900年开始,月份是从0开始,在JDK1.1的时候对Date类进行了修改,并引入了新的类java.util.Calendar类,但是Calendar依旧没有很好的解决历史遗留的问题,并且java中有两个类,程序员不知道在何时选...原创 2018-09-27 13:14:54 · 166 阅读 · 0 评论 -
Java中创建Stream
Java8之后,jdk为我们提供了很多特性,函数式编程就是其中的重点,要真正的使用函数式编程,要掌握流(Stream)的使用流的创建方式用值来创建流和Arrays类提供的静态方法Arrays.asList(T t)有点类似,Stream.of(T t)Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5, 6...原创 2018-08-26 23:46:22 · 341 阅读 · 0 评论 -
关于hashmap的散列程度分析
背景先从查找算法说起,我们知道常用的查找算法有顺序查找(时间复杂度为O(n)),二分查找(时间复杂度为O(log2n)),二叉查找树查找(O(longN)),有基于Hash表的算法时间复杂度只有O(1) 但是基于hash表的算法要额外维护一个hash表,这也是用空间换时间的例子吧.什么是HashMaphashMap可以拆分为hash和map,hash是一个函数,或者说算法,用来计...原创 2018-04-04 14:53:17 · 794 阅读 · 0 评论 -
动态代理及其实现
代理方式实现优点缺点特点JDK静态代理代理类与委托类实现同一接口,并且在代理类中需要硬编码接口实现简单,容易理解代理类需要硬编码接口,在实际应用中可能会导致重复编码,浪费存储空间并且效率很低好像没啥特点JDK动态代理代理类与委托类实现同一接口,主要是通过代理类实现InvocationHandler并重写invoke方法来进行动态代理的,在invoke方法中将...原创 2018-03-15 13:48:23 · 103 阅读 · 0 评论 -
Java NIO学习(二)
三种IO在Java语言诞生以来,很多方面都在与时俱进或者不停的调优,影响虚拟机性能之一的IO同样也发生了几大阶段的变化B I/OBlock I/O(同步阻塞I/O): 在应用程序发起I/O请求的时候,线程只能等待数据返回,在此期间不能做其他任何的事儿;N I/ONew I/O(同步非阻塞I/O): JDK1.4之后,学习了Linux系统的多路复用技术(Select模式) ...原创 2018-03-15 10:35:45 · 112 阅读 · 0 评论 -
Java NIO学习(一)
什么是NIO顾名思义N:New I/O;在JDK1.4发布的时候,为Java语言带来了有别与传统I/O的操作方式,提高了读写速率和设备利用率;但是此API只能进行同步阻塞,同步非阻塞,还不能完全利用及其的硬件,在JDK1.7发布时,带来了NIO2.0,它提供了异步I/O操作方式. SUN官方标榜的特性如下:为所有原始类型提供缓存(Buffer)支持字符集编码解决方案Channel:...原创 2018-02-26 19:41:40 · 136 阅读 · 0 评论 -
JAVA动态代理之CGLIB
CGLIB介绍在Java中常使用的动态代理有两种:1.JDK的动态代理2.第三方的CGLIB代理 由于JDK的动态代理基于接口(只有接口,才能对目标对象代理),在实际生产中,由于不可能所有的类都有接口,所以基于SAM的CGLIB代理出现了,它的优点是:无需目标对象有接口,之要求它不是final的,因为CGLIB的原理是,继承目标类,来实现代理.使用CGLIB代理完成HELLO WOR原创 2018-02-04 20:41:01 · 185 阅读 · 0 评论