Java
Stream、Collector、字符串、集合代码示例
「已注销」
这个作者很懒,什么都没留下…
展开
-
BuggyApp——模拟JVM性能
推荐一款实用的工具:BuggyApp下载地址:https://gitee.com/DHing/codes/b3ewz9pcfy826doaksunl95/raw?blob_name=buggyApp.jar Buggy App是一个简单的Java应用程序,它模拟不同的性能问题,例如内存泄漏,OutOfMemoryError,CPU峰值,线程泄漏,StackOverflowError,死锁,无响应等等。使用此应用程序,您可以模拟环境中的各种性能问题。以下是一些可以使用Buggy App...原创 2020-10-30 16:38:01 · 354 阅读 · 0 评论 -
Java 封装阿里云 RocketMQ
前言: 基于阿里云rocketMQ收发消息进行封装,介于官方的案例实在太不灵活。在项目开发中耦合度太高,故封装一套嵌入方便的组件,希望能够有所帮助。 不做过多介绍,本文主要是针对收发消息进行介绍,解锁更多功能可以参考官方文档。 以下内容只列举了部分代码,完整代码实现请参考: https://gitee.com/DHing/ali-rocket-mq/tree/master/rocket-mq1.导入最新client:compile 'com.al...原创 2020-09-04 16:32:41 · 2201 阅读 · 0 评论 -
Redis 实现高可用延迟队列
前言: 用过的延迟任务处理队列(RocketMQ、KafKa、Redisson等),对于一些要求比较高的场景是无法运用于生产环境的,一旦机器宕机或者应用重启会导致队列消息丢失,从而造成无法挽回的损失。Redisson JDK内置的延迟队列或者基于时间轮算法的队列,都无法保证生产系统的高可用性,而Redisson很好的解决了这个问题。Redisson在基于NIO的Ne...原创 2020-02-18 14:56:27 · 849 阅读 · 0 评论 -
JDK11 HttpClient
Java 11的HttpClient 小示例:import java.net.URI;import java.net.http.*;import java.net.http.HttpClient.Redirect;import java.net.http.HttpClient.Version;import java.time.Duration;/*@author dhing*...原创 2020-01-03 14:51:00 · 516 阅读 · 0 评论 -
Spring Boot2 with JSP View
前言:Spring Boot2 使用JSP视图创建Web应用程序JDK 8+或OpenJDK 8+ Maven 3+1.从Spring Initializer构造项目结构:2.pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/...原创 2020-01-02 14:49:23 · 276 阅读 · 0 评论 -
SpringBoot 2.0 整合阿里云OSS
前言现在很多网站/应用都采用了动静分离的架构进行部署。 主机采用的是阿里云的 ECS,使用 CDN 做静态内容分发,不过静态文件还是存储在 ECS,采用的是 Nginx 做动静分离。简介阿里云 OSS,海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%的数据可靠性。使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类...原创 2019-10-24 14:03:53 · 647 阅读 · 1 评论 -
Spring 使用 @Async 捕获异常
前言: 在使用Spring项目使用@Async注释时捕获异常。当多个线程进行任务异步调用出现异常时,解决方案非常简单,需要注入自己的Exception处理程序,以便在执行@Async方法时捕获到异常。1.AsyncConfigurer:AsyncConfigurer是Spring提供的接口,它提供了两种方法,一种是覆盖TaskExecutor(Threadpool),另一种是...原创 2019-03-25 11:19:25 · 7565 阅读 · 2 评论 -
Spring @Async 使用
前言: 任何与业务逻辑没有直接关联的逻辑(横切关注点)或在调用者上下文中不需要响应以确定下一个流或任何业务的逻辑是Asyncronization的理想候选者。在Spring中使用@Async注释使用异步,如果你在方法上使用随机的@Async注释并且认为你的方法将在一个单独的线程中以异步方式调用这是错的。要知道@Async如何工作的和它的特性,不然你就无法理解异步行为。@Asy...原创 2019-03-15 11:02:09 · 9332 阅读 · 0 评论 -
正则表达式匹配IP地址
前言: IPv4地址可以用表示32位整数值的任何符号表示。它们通常用点十进制表示法编写,它由地址的四个八位字节组成,以十进制数字表示并用.点分隔。例如,四点IP地址172.16.255.1import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author dhing */...原创 2019-03-13 20:54:25 · 6539 阅读 · 0 评论 -
Java 自定义HashSet实现
前言: HashSet是一种数据结构为基本操作(add,remove,containsandsize)提供恒定的时间性能,假设哈希函数在桶之间正确地分散元素。有许多方法可以实现这种数据结构。这篇文章主要使用链表+数组在Java中简单实现hashmap。1.定义一个表示链表节点的类class Node<T> { T data; N...原创 2019-03-13 16:39:49 · 6733 阅读 · 0 评论 -
Java12 字符串 API 新特性
前言: JDK 12版本中将出现的新API方法将于3月19日发布。与JEP-334: JVM Constants API.有关。String#indent(int)该方法允许我们调整String实例的缩进。String result = "foo\nbar\nbar2".indent(4);System.out.println(result);// foo// ...原创 2019-03-12 20:38:10 · 7722 阅读 · 0 评论 -
Java 多线程知识
前言: 多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲。在平时工作中如若使用不当会出现数据错乱、执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关重要。本文从基础概念开始到最后的并发模型由浅入深,讲解下线程方面的知识。概念梳理本节我将带大家了解多线程中几大基础概念。并发与并行并行,表示两个线程同时做事情...原创 2019-02-28 11:50:51 · 305 阅读 · 0 评论 -
Java 访问者设计模式
前言: 访问者模式,是行为型设计模式之一。访问者模式是一种将数据操作与数据结构分离的设计模式,它可以算是 23 中设计模式中最复杂的一个,但它的使用频率并不是很高,大多数情况下,你并不需要使用访问者模式,但是当你一旦需要使用它时,那你就是需要使用它了。 当我们想要在不改变类的情况下为对象结构的类定义新操作时,我们使用访问者模式。想象一下,对API执行HTTP请求的软件场景。...原创 2019-02-25 16:03:38 · 289 阅读 · 0 评论 -
Java 模板方法设计模式
前言: 模板方法的概念:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。 通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。 ...原创 2019-02-25 14:35:08 · 321 阅读 · 0 评论 -
Java 11字符串Api 新特性
前言: 发布的LTS JDK 11 release了解到对String字符串有些Api更改。1.String#repeatrepeat()方法:此方法允许将字符串与其自身连接给定次数。var string = "foo bar ";var result = string.repeat(2); // foo bar foo bar@Testvoid shouldR...原创 2019-02-22 15:14:12 · 7025 阅读 · 0 评论 -
CountDownLatch、Semaphore等4大并发类详解
通常我们所说的并发包也就是java.util.concurrent,Java并发编程集中在这个并发包种,主要包含:Java并发工具类和并发容器等。并发工具包1.并发工具类提供了比synchronized更加高级的各种同步结构:包括CountDownLatch、CyclicBarrier、Semaphore等,可以实现更加丰富的多线程操作。2.并发容器提供各种线程安全的容器:最常...转载 2019-02-12 14:27:16 · 597 阅读 · 0 评论 -
java 注解实现一个可配置线程池
前言 项目需要多线程执行一些Task,为了方便各个服务的使用。特意封装了一个公共工具类,下面直接撸代码:PoolConfig(线程池核心配置参数):/** * <h1>线程池核心配置(<b style="color:#CD0000">基本线程池数量、最大线程池数量、队列初始容量、线程连接保持活动秒数(默认60s)</b>)</h1&...原创 2019-01-15 19:12:56 · 9493 阅读 · 7 评论 -
Java删除Map中元素
前言: 关于Java从Map中删除元素的使用,可以使用删除单个元素的事实Map.remove。示例:初始化一个Map对象Map<Integer, String> map = new HashMap<>();map.put(1, "value 1");map.put(2, "value 2");map.put(3, "value 3");map....原创 2019-03-07 11:40:00 · 11792 阅读 · 0 评论 -
Java ArrayList 、LinkedList 集合
前言: ArrayList、LinkedList是用于存储对象引用列表的两个Java Collection Framework类。ArrayList、LinkedList都实现了List接口。List Interface List只是元素的有序集合(也称为序列)。它添加了面向位置的操作,可用于快速访问,添加和删除列表中特定索引位置的元素...原创 2019-02-25 16:35:38 · 269 阅读 · 0 评论 -
Java 从List中删除空值
目前: 介绍一下使用普通的Java,Java 8 lambda和一些第三方库从JavaList中删除空值。1. Java 7或更低版本:public void removeAllNullsFromListWithJava7OrLower() { List<String> list = new ArrayList<>(Arrays.asL...原创 2019-03-19 20:25:54 · 11697 阅读 · 1 评论 -
Java Streams 中的异常处理
前言: Stream API 和 Lambda 是Java8的重要特性让我们可以使用更具功能性的语法风格。但是在编写的代码时候一个更大的问题是如何处理lambda中的已检查异常。但是不能直接调用从Lambda抛出异常!但是可以在Lambda中做一个简单的try-catch并将异常包装成一个RuntimeException。/**###很显然这不是一种好的表现方式##**/...原创 2019-03-19 15:18:01 · 5105 阅读 · 0 评论 -
Java8 对Map进行排序
前言: 随着Java 8的Stream之后推出后可以很优雅实现Map的排序。示例:final Map<String, Integer> wordCounts = new HashMap<>();wordCounts.put("USA", 100);wordCounts.put("jobs", 200);wordCounts.put("softwa...原创 2019-03-14 18:52:53 · 11864 阅读 · 0 评论 -
Java Map.merge() 使用
前言: 关于Map.merge()这可能是Key-Value中最通用的操作。但它也相当模糊很少使用。merge():它将新值置于给定键下(如果不存在)或更新具有给定值的现有键(UPSERT)。示例://计算唯一的单词出现次数var map = new HashMap<String, Integer>();words.forEach(word -> ...原创 2019-03-11 13:10:48 · 14955 阅读 · 0 评论 -
Java8 Stream Collectors 使用
前言: java.util.stream.Collectors.* 类为我们提供了丰富的对流的操作,对此写了一些较为测试案例:import java.text.DecimalFormat;import java.util.*;import java.util.concurrent.ConcurrentMap;import static java.util.Compara...原创 2019-03-13 17:05:32 · 6796 阅读 · 0 评论 -
Java Stream groupingBy() 操作
对Stream的List<T>等更多操作进行操可参考:https://blog.csdn.net/u011663149/article/details/86743930前言: groupingBy() 提供与SQL的GROUP BY子句类似的功能,只有Java Stream API才有。为了使用它,我们需要指定一个用于执行分组的属性。我们通过提供功能接口的实现来实...原创 2019-02-22 18:52:43 · 13123 阅读 · 0 评论 -
JDK12 Stream Api : teeing()
前言: JDK 12中添加了一个新的流API收集器:Teeing()。Collectors#teeing 简单地说,它允许使用两个独立的收集器收集流,然后使用提供的双功能合并结果。 例如,通过使用它可以计算所有流值的预期值:// import static java.util.stream.Collectors.*;Double ev = Stream.of(1...原创 2019-02-22 14:55:25 · 8058 阅读 · 0 评论 -
Stream 操作List<T>集合 JDK8
前言:java8提供了很多操作集合的,以下是写的一些简单的案例。希望能有用 (* ̄︶ ̄)。更多Stream操作可参考:https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi//** * @author DHing */public class Streams { public static void m...原创 2019-02-01 19:02:25 · 8024 阅读 · 0 评论 -
SpringBoot Nacos注册中心
前言在之前的 Dubbo 服务开发中,我们一般使用 Zookeeper 作为注册中心,同时还需要部署 Dubbo 监控中心和管理后台。Nacos 注册中心Nacos 是阿里巴巴的开源的项目,全称 Naming Configuration Service ,专注于服务发现和配置管理领域。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速...原创 2019-08-29 11:42:08 · 1870 阅读 · 2 评论