redis中的三种不常见数据类型之geo 这次介绍一个在地理定位系统中使用的比较多的一种数据类型——geo。geo是geography的缩写,说明和地理位置有关,geohash可以认为是一种特殊的编码格式。 geo介绍geo是redis在3.2.0及以上版本,中的一个特殊的集合,提供存储经纬度,计算距离范围等功能。和bitmap,hyperloglog不同的是,geo在redis中存储的类型是zset。也就是说除了支持geo相关的ap 2020-10-24 redis geohash
redis中的三种不常见数据类型之hyperloglog 上次介绍了bitmap和bloomfilter,这次介绍一个在大数据领域比较常见的数据类型或者说一种算法——hyperLogLog。 HyperLogLog介绍redis中的HyperLogLog是一个基数计数器,在2.8.9及以上版本中提供。所谓基数(Distinct Value,简称DV)是指一个集合当中不相同元素的个数,而HyperLogLog就是这样一个计数器,能够用极小空间,来统计集 2020-10-24 redis hyperloglog
redis中的三种不常见数据类型之bitmap 除了常见的五种数据类型之外,在redis的高版本中,开始支持一些相对高级的数据结构;下面介绍一下redis中的位图(bitmap)。 bitmap介绍bitmap即位图,redis在2.2.0及以上版本开始支持。位图的功能是支持基本的位操作,可以通过给定的api修改或者读取数据中某个位上的值。虽然bitmap新增了相关的api,但本质上在redis中还是以字符串的形式存储的。 比如big这个字 2020-10-23 redis bitmap
Spring Security 如何优雅的过滤掉静态页面请求 在最近的开发过程中遇到一个问题,某个java服务采用spring security开启了认证,但是同时又需要采用swagger生成在线api文档,如果从这些请求中过滤掉swagger的请求成了一个问题。 想到的方法一,用正则过滤: @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAda 2020-06-30 Spring
日志归档工具logrotate介绍 缘起对于日志的归档,轮转以及清理,很多框架都已经支持,比如logback,log4j等,对于logrotate鲜有用武之地。 不过最近做一个项目的时候,客户环境存在大量的syslog,但是对这类syslog日志确没有做定时的清理和归档,于是看了下centos自带的logrotate工具,还是蛮方便的。 业务需求希望能够做到日志轮转,保留一周的日志,每天的日志保存到一个文件中,一周之前的日志,自动删 2020-06-17 logrotate
Freemarker中如何进行Json转化 缘起之前在开发过程中,freemarker的解析经常遇见一些问题,这里将这些问题做一下记录. 比如,如下错误,是因为freemarker模板中出现了一个全角的中文空格,导致解析出现失败. Error:(1, 1) java: 非法字符: '\ufeff' 需求需求是,从freemarker中构造出一个Json,然后将这个json进行url编码,放到一个url后面,用户点击这个 2019-07-26 Freemarker Freemarker
ControllerAdvice注解 基本功能准确的来说,这个是springmvc中的一个注解.从Advice后缀可以看出,这个注解是针对Controller的一个增强.在对外提供Http接口支持的时候,往往有很多通用的业务逻辑.最常见的是同样的异常处理逻辑.为了避免大块的try-catch块的出现,可以通过此注解提供一个异常处理的增强来解决. @ExceptionHandler在ControllerAdvice类中标注某个方法,用于 2019-07-08 Spring Spring
Spring学习之Profile和Lookup注解 在编码过程中遇到一个Profile和Lookup注解的问题,这里记录一下.Profile的原意是剖面的意思,Profile在官方的API文档中,是如此描述的: A profile is a named logical grouping that may be activated programmatically via ConfigurableEnvironment.setActivePro 2019-07-02 Spring Spring
Java诊断工具Arthas之watch命令 Arthas是一个开源的Java诊断工具,详见:https://alibaba.github.io/arthas/index.html. 今天第一次在项目中排查问题使用到它,发现其功能确实很强大.这里记录一下watch命令的使用. 安装安装JDK然后以jar包的形式运行即可. wget https://alibaba.github.io/arthas/arthas-boot.jar java 2019-07-01 Arthas Arthas
JUC共享锁之Semaphore Semaphore原意是指信号量,从API的注释:”Semaphores are often used to restrict the number of threads than can access some (physical or logical) resource”可以看出,Semaphore一般是用来限制线程能够使用的资源个数. 应用场景在Web开发中,Semaphore可以用来限 2019-06-24 Java并发基础 Java