聊一聊安全且正确使用缓存的那些事 —— 关于缓存可靠性、关乎数据一致性
在分布式系统盛行的今天,缓存充当着扛压屏障的作用,一旦缓存出现问题,对系统影响也是致命的。本文我们一起聊聊如何安全且可靠的使用缓存,聊聊缓存击穿、缓存雪崩、缓存穿透以及数据一致性、热点数据淘汰机制等。
聊一聊作为高并发系统基石之一的缓存,会用很简单,用好才是技术活
在服务端开发中,缓存常常被当做系统性能扛压的不二之选。在实施方案上,缓存使用策略虽有一定普适性,却也并非完全绝对,需要结合实际的项目诉求与场景进行综合权衡与考量,进而得出符合自己项目的最佳实践。
编码中的Adapter,不仅是一种设计模式,更是一种架构理念与解决方案
编码中的Adapter,不仅是一种设计模式,更是一种架构理念与解决方案
在项目编码中经常会遇到一些新的需求试图复用已有的功能逻辑进行实现的场景,但是已有的逻辑又不能完全满足新需求的要求,所以就会出现各种生搬硬套的操作。本篇文档就一起来聊一聊如何借助Adapter实现高效复用已有逻辑、让代码复用起来更加的得体与优雅。
大家好,又见面了。
不知道下面这玩意大家有没有见过或者使用过?这是一个插座转换器 ...
JAVA中容器设计的进化史:从白盒到黑盒,再到跻身为设计模式之一的迭代器
容器设计是项目编码中非常常见的一个场景,本文从项目中习以为常的一些场景作为切入点,聊一聊容器设计的一些思考、聊一聊元素遍历的思路、以及身为设计模式之一的迭代器模式。
大家好,又见面了。
在我们的项目编码中,不可避免的会用到一些容器类,我们可以直接使用List、Map、Set、Array等类型。当然,为了体现业务层面的含义,我们也会根据实际需要自行封装一些专门的Bean类,并在其中封装集合数据来 ...
用好JAVA中的函数式接口,轻松从通用代码框架中剥离掉业务定制逻辑
大家好,又见面了。
今天我们一起聊一聊JAVA中的函数式接口。那我们首先要知道啥是函数式接口、它和JAVA中普通的接口有啥区别?其实函数式接口也是一个Interface类,是一种比较特殊的接口类,这个接口类有且仅有一个抽象方法(但是可以有其余的方法,比如default方法)。
当然,我们看源码的时候,会发现JDK中提供的函数式接口,都会携带一个 @FunctionalFunction注解,这个注释 ...
不堆概念、换个角度聊多线程并发编程
大家好,又见面了。
在上一篇文档《JAVA基于CompletableFuture的流水线并行处理深度实践,满满干货》中,我们一起探讨了JAVA中并行编码的相关内容,在文中也一起比较了并行与并发的区别。作为姊妹篇,这里我们就再展开聊一聊关于并发相关的内容。
俗话说,双拳难敌四手。俗话还说,人多力量大。
在现实生活中,我们通过团队化的方式来获得比单兵作战更高的单位时间内整体产出速度。同样,在编码世界 ...
使用JAVA CompletableFuture实现流水线化的并行处理,深度实践总结
大家好,又见面啦。
在项目开发中,后端服务对外提供API接口一般都会关注响应时长。但是某些情况下,由于业务规划逻辑的原因,我们的接口可能会是一个聚合信息处理类的处理逻辑,比如我们从多个不同的地方获取数据,然后汇总处理为最终的结果再返回给调用方,这种情况下,往往会导致我们的接口响应特别的慢。
而如果我们想要动手进行优化的时候呢,就会涉及到串行处理改并行处理的问题。在JAVA中并行处理的能力支持已经相 ...
讲透JAVA Stream的collect用法与原理,远比你想象的更强大
大家好,又见面了。
在我前面的文章《吃透JAVA的Stream流操作,多年实践总结》中呢,对Stream的整体情况进行了细致全面的讲解,也大概介绍了下结果收集器Collectors的常见用法 —— 但远不是全部。
本篇文章就来专门剖析collect操作,一起解锁更多高级玩法,让Stream操作真正的成为我们编码中的神兵利器。
初识Collector先看一个简单的场景:
现有集团内所有人员列表 ...
是时候优雅地和NullPointException说再见了
NullPointException应该算是每一个码农都很熟悉的家伙了吧?谁的代码不曾抛过几个空指针异常呢…
比如:你写了段如下的代码:
public void getCompanyFromEmployee() {
Employee employee = getEmployee();
Company company = employee.getTea ...
全面吃透JAVA Stream流操作,让代码更加的优雅
在JAVA中,涉及到对 数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理。
例如,现在有这么一个需求:
从给定句子中返回单词长度大于5的单词列表,按长度倒序输出,最多返回3个
在JAVA7及之前的代码中,我们会可以照如下的方式进行实现:
/**
* 【常规方式】
* 从给定句子中返回单词长度大于5的单 ...