概述 工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。 guava的优点: 高效设计良好的API,被Google的开发者设计,实现和使用 遵循高效的java语法实践 使代码更刻度 ...
分类:
其他好文 时间:
2019-09-23 14:58:07
阅读次数:
90
本随笔旨在分享一些结构化编程思想,如有不妥,望指正,共同学习共同进步!! 1、非空断言 使用jdk自带的Objects类 使用开源guava库 2、非空赋值 使用场景:构造器、java bean的setter方法中 使用jdk自带的Objects类 使用开源guava库 3、guava的参数校验 这 ...
分类:
编程语言 时间:
2019-09-21 23:23:05
阅读次数:
87
前言通过Python爬取十万博文之后,最重要的是要让互联网用户访问到,那么如何做呢?选型从后台框架、前端模板、数据库连接池、缓存、代理服务、限流等组件多个维度选型。后台框架SpringBoot2+、JPA前端框架Vue模块框架Thymeleaf数据库连接池HikariCP缓存Redis限流Guava代理服务Nginx文章编辑Markdown架构博文我们可以通过以下方式访问:https://blog
分类:
编程语言 时间:
2019-09-21 09:25:41
阅读次数:
108
概述 工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。 guava的优点: 高效设计良好的API,被Google的开发者设计,实现和使用 遵循高效的java语法实践 使代码更刻度 ...
分类:
其他好文 时间:
2019-09-20 16:50:17
阅读次数:
82
缓存分为本地缓存和远端缓存。常见的远端缓存有Redis,MongoDB;本地缓存一般使用map的方式保存在本地内存中。一般我们在业务中操作缓存,都会操作缓存和数据源两部分。如:put数据时,先插入DB,再删除原来的缓存;ge数据时,先查缓存,命中则返回,没有命中时,需要查询DB,再把查询结果放入缓存 ...
分类:
系统相关 时间:
2019-09-19 01:13:23
阅读次数:
178
一、背景 1. Optional类主要解决空指针异常的问题,避免显式判断空指针,减少null的防御性检查 2. 借鉴了google guava的Optional类 3. Optinal类里有一个字段value,主要就是对value是否为Null的判断和操作 二、创建Optional类的实例,1个构造 ...
分类:
编程语言 时间:
2019-09-17 12:22:26
阅读次数:
119
目的:提高可用性 通过ExecutorService实现队列泄洪 将有并发压力的下游代码放入到线程池的submit方法中,如下: 通过Guava RateLimit 负载均衡的情况下,在单机内部实现限流 需要加入Guava依赖 在方法入口内加上以下代码: 最后: 这里只简单描述了如何最简单的使用,降 ...
分类:
编程语言 时间:
2019-09-13 17:50:51
阅读次数:
120
某些热点数据在短时间内可能会被成千上万次访问,所以除了放在redis之外,还可以放在本地内存,也就是JVM的内存中。 我们可以使用google的guava cache组件实现本地缓存,之所以选择guava是因为它可以控制key和value的大小和超时时间,可以配置LRU策略且guava是线程安全的。 ...
分类:
系统相关 时间:
2019-09-09 19:29:40
阅读次数:
141
RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率。 通常可应用于抢购限流防止冲垮系统;限制某接口、服务单位时间内的访问量,譬如一些第三方服务会对用户访问量进行限制;限制网速,单位时间内只允许上传下载多少字节等 ...
分类:
其他好文 时间:
2019-09-09 19:16:20
阅读次数:
133
Reference: https://time.geekbang.org/column/article/112160 背景 生产环境中可以用生产者消费者模式来实现瞬时高并发的流量削峰,然而这样做虽然缓解了消费方的压力,但生产方则会因为瞬时高并发,而发生大量线程阻塞。面对这样的情况,有什么方式可以优化 ...
分类:
编程语言 时间:
2019-09-08 09:51:18
阅读次数:
119