Java8 CompletableFuture异步编程 CompletableFuture是Java 8引入的一个强大的异步编程工具,它实现了Future和CompletionStage接口,提供了丰富的API来简化异步操作。与传统的Future相比,CompletableFuture支持非阻塞的回调机制,允许通过观察者模式在计算结果完成时立即通知监听者,避免了轮询或阻塞主线程的问题。该类提供了一系列方法用于创建异步任务(如runAsync、supplyAsync)、处理任务完成后的结果(如whenComplete、handle)、以及组合多个异步任务(如thenCombine、applyToEither)。此外,CompletableFuture还支持多任务组合操作(如allOf等待所有任务完成, anyOf只要有一个任务完成),使得复杂的异步流程控制变得更加简单直观。示例代码展示了如何使用这些方法进行异步任务的创建、结果处理及任务间的协调。 2021-07-11 1018 0 java 总结 java8 多线程
Java多线程实现的四种方式 本文介绍了Java中四种实现多线程的方法:1)继承Thread类并重写run方法;2)实现Runnable接口,通过其实例对象作为Thread构造函数的参数;3)使用Callable与FutureTask结合创建线程,这种方式支持获取执行结果;4)利用线程池创建线程,此法能有效管理资源,保持性能稳定。每种方式都附有示例代码说明其实现细节。其中,前两种方式不支持直接从线程中获取返回值,而Callable和FutureTask则提供了这一功能。最后强调了线程池在资源管理和性能优化方面的优势。 2021-07-08 991 0 java 总结 多线程
SpringCache Spring从3.1版本开始引入了`Cache`和`CacheManager`接口来统一不同缓存技术,并支持JCache(JSR-107)注解以简化开发。`Cache`接口的实现包括`RedisCache`、`EhCacheCache`等。每次调用需要缓存的方法时,Spring会检查该方法是否已执行过,若存在结果则直接返回缓存中的数据;否则执行方法并将结果缓存后返回。 使用步骤如下: 1. 添加依赖:`spring-boot-starter-cache`。 2. 在配置文件中指定缓存类型(如Redis)及过期时间。 3. 编写配置类设置缓存序列化方式及其他属性。 4. 通过`@EnableCaching`启用缓存功能。 Spring Cache提供了多个注解如`@Cacheable`用于定义缓存、`@CachePut`更新缓存、`@CacheEvict`清除缓存等。此外,`@Caching`可以组合多种缓存操作。对于缓存问题,如穿透、击穿和雪崩,Spring提供了相应解决方案,例如缓存空值、加锁以及随机过期时间策略。针对读多写少且一致性要求不高的场景,Spring Cache是一个很好的选择。 2021-07-03 1891 0 java 总结 锁 springboot 分布式 微服务
分布式锁Redisson Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, B 2021-07-02 1956 0 java 总结 锁 redis 分布式 微服务
本地缓存与分布式缓存 缓存在服务端编程当中,缓存主要是指将数据库的数据加载到内存中,之后对该数据的访问都在内存中完成,从而减少了对数据库的访问,解决了高并发场景中数据库容易成为性能瓶颈的问题;以及基于内存的访问速度高于磁盘的访问速度的原理(数据库读取数据一般需要从磁盘读取),提高了数据的访问速度和程序性能。本地缓存本地缓 2021-07-01 1193 0 java 总结 redis 分布式 微服务
Elasticsearch:springboot整合high-level-client及使用 本文介绍了如何在SpringBoot项目中整合Elasticsearch的high-level REST客户端。首先,需要在`pom.xml`文件中添加与Elasticsearch版本相匹配的依赖,并通过配置属性指定版本。接着,创建一个配置类`GuliESConfig`来初始化`RestHighLevelClient`实例。文章还提供了两个示例:一个是使用`IndexRequest`保存数据到Elasticsearch,另一个是通过`SearchRequest`和DSL查询语言从Elasticsearch检索数据并执行聚合分析。这些操作展示了如何设置索引请求、构建查询条件以及处理返回的结果。 2021-06-26 1273 0 java 总结 Elasticsearch
Elasticsearch安装ik分词器(docker)以及自定义词库 本文介绍了Elasticsearch中分词器(tokenizer)的作用及如何安装和使用中文分词器IK Analyzer。分词器用于将文本分割成独立的词元(tokens),并记录其位置和偏移量。Elasticsearch自带多种分词器,但默认的Standard Analyzer对中文支持不佳,因此需要安装专门针对中文的IK分词器。文章详细说明了通过Docker环境安装IK分词器的步骤,包括查看Elasticsearch版本、下载对应版本的IK分词器、解压安装以及设置文件权限等,并展示了如何使用IK分词器进行中文文本分析。此外,还介绍了如何自定义IK分词器的词库配置文件以添加自定义词汇,并通过重启Elasticsearch使更改生效。最后,文章提到了如何利用Nginx来托管自定义的分词文件。 2021-06-26 1039 0 总结 Elasticsearch