随笔分类 - Spring Boot/Cloud
Spring全家桶
摘要:#### 1. 简介 在开发中,经常需要根据条件过滤大批量的JSON类型数据。如果仅需要过滤这一种类型,将JSON转为List后过滤即可;如果相同的条件既想过滤数据库表中的数据、也想过滤内存中JSON数据,甚至想过滤Elasticsearch中的数据,那可使用本博客中的方案,使用标准的SQL语法实现
阅读全文
摘要:1. 简介 在日常开发中一些关键的业务服务,期望在高并发状态下可以正常工作,或在异常情况时可以记录当时的性能信息,所以就需要进行监控。常见的监控例如:Prometheus可以实现这个需求,如果需要更加简单方便的自主监控能力,可以引入本博客中的方案。 2. 相关博客 Promtail+Loki+Gra
阅读全文
摘要:1. 简介 在日常的WEB开发中都会使用数据库存储信息。大多数情况我们只是使用了数据库,而无法感知业务对数据库的压力,从而无法有目的的提升性能。在使用数据库时,都会选用常见的C3P0、DBCP、Hikari、Druid连接池,虽然SpringBoot官方强调Hikari性能更好,但我更倾向于功能更加
阅读全文
摘要:1. 简介 在分布式业务开发中,很多场景都需要添加分布式锁。在具体实践过程中,研发人员都需要自行实现,导致实现方式不统一,代码风格迥异,难以维护。 在Mybatis-Plus生态中,Lock4j提供了支持redission、redisTemplate、zookeeper的分布式锁组件,简单易用,功能
阅读全文
摘要:1. 简介 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。 Disruptor区别于K
阅读全文
摘要:1. 简介 日常开发中需要查询Elasticsearch中的数据时,一般会采用RestHighLevelClient高级客户端封装的API。项目中一般采用一种或多种关系型数据库(如:Mysql、PostgreSQL、Oracle等) + NoSQL(如:Elasticsearch)存储方案;不同关系
阅读全文
摘要:1. Caffeine简介 Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。借鉴Google Guava和ConcurrentLinkedHashMap的经验,实现内存缓存。 缓存和ConcurrentMap有点相似,但还是有所区别。最根本的区别是Concurrent
阅读全文
摘要:1. 简介 Mybatis是目前比较主流的持久层框架,使用非常广泛。Mybatis-Plus是基于Mybatis增强工具包,越来越受到开发人员的喜爱。 在使用Mybatis-Plus开发时,简单的crud可以直接使用其提供的接口或使用条件构造器。但对于关联表的查询,不论Mybatis还是Mybati
阅读全文
摘要:1. 简介 在日常开发中,经常会遇到需要预览附件的需求,如果附件类型为图片、文本、PDF或者网页文件,则直接可以在浏览器预览;如果附件类型为Word、Excel、PPT等文件,则需要通过工具转换为PDF后在浏览器预览。 本博客使用LibreOffice和Hutool实现文件预览简单示例。 Libre
阅读全文
摘要:1. 简介 WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterpris
阅读全文
摘要:1. Dubbo简介 Apache Dubbo 是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉
阅读全文
摘要:1. 简介 项目中对日志的收集往往是非常重要的,不仅方便开发人员快速定位问题,而且越来越多的客户需要查询用户行为日志、用户审计日志等。因此,在收集日志时,不仅要考虑功能实现,而且要考虑可靠性、稳定性和不耦合性。 在每个操作和每个方法都加上日志处理肯定时不现实的,因此使用Spring提供的AOP原理就
阅读全文
摘要:1. 简介 在开发中,经常会遇到需要读取配置文件参数的情况,因此需要开发人员能优雅的读取配置文件参数值。 2. 配置文件 在resource目录下新建配置文件application.yml: product: name: Demo author: C3Stones sys: module: - co
阅读全文
摘要:1. 简介 随着现在前后端分离项目愈发普及,面临第一步的问题即为跨域。一般的URL地址(例如:https://www.cnblogs.com/cao-lei/)由协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址组成,当协议、域名(子域名 + 主域名)、端口号这三项中有一项不同,则认为为
阅读全文
摘要:1. 简介 JetCache是基于Java开发的统一API和使用简单的缓存框架,它提供的注解比Spring Cache中的注解更加强大。JetCache中的注释支持原生TTL,两级缓存和分布式自动刷新,也可以手动编写实例。目前有四个实现:RedisCache、TairCache(在Github上不是
阅读全文
摘要:1. 简介 提到监控系统,zabbix具有绝对的地位,它提供分布式系统监视以及网络监视功能的企业级的开源解决方案,能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。但是针对于容器监控却有点力不从心,因此出现了Prometheus。Prome
阅读全文
摘要:1. 简介 Spring Retry是从Spring Batch独立出来的一个功能,主要实现了重试和熔断。 在一般业务中,需要重试的场景有很多,比如网络中断,连接超时时,可能需要重试机制进行重试或者熔断(终止重试)。Spring Retry提供了丰富的重试功能,只需简单配置即可实现。 2. 示例代码
阅读全文
摘要:1. 简介 Hutool是一个小而全的Java工具类库,Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。强烈推荐大家使用。 Java针对MS Office的操作的库屈指可数,比较有名
阅读全文
摘要:1. 简介 WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。 WebSocket的出现是为了解决Http协议只能在客户端发送请求后服务端响应请求的问题,它允许服务端主动向客户端发送请求。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直
阅读全文
摘要:1. 简介 XSS,即跨站脚本编制,英文为Cross Site Scripting。为了和CSS区分,命名为XSS。 XSS是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的
阅读全文