JCTools简介

2017-09-04
阅读 3 分钟
11.4k
JCTools是一款对jdk并发数据结构进行增强的并发工具,主要提供了map以及queue的增强数据结构。原来netty还是自己写的MpscLinkedQueueNode,后来新版本就换成使用JCTools的并发队列了。

HashedWheelTimer算法详解

2017-09-03
阅读 18 分钟
20.5k
George Varghese 和 Tony Lauck 1996 年的论文:Hashed and Hierarchical Timing Wheels: data structures to efficiently implement a timer facility提出了一种定时轮的方式来管理和维护大量的Timer调度算法.Linux 内核中的定时器采用的就是这个方案。

分布式id生成方案概述

2017-09-02
阅读 3 分钟
15.6k
序 本文主要来聊聊分布式id的生成方案。 目标 业务系统需要什么样的ID生成器中提出了几点目标: 唯一性 时间相关 粗略有序 可反解 可制造 主要思路 对于每个标识,都需要有一个命名空间(namespace),来保证其相对唯一性。分布式的ID生成,以Twitter Snowflake为代表的, Flake 系列算法采用的就是划分命名空间并行生成...

拖拽数据库设计方案小结

2017-09-01
阅读 1 分钟
5.5k
序 对于公告或者菜单或者帖子通常会有拖拽排序的需求,这个时候数据库设计呢。本文就来简述一下几个方案。 方案概述 方案 概述 优点 缺点 存json 对于每次排序,涉及影响的列表作为一个大json重新更新 省事 列表太大的话,每次更新太多不好 每次更新受影响记录的排序字段 假设有个position字段,每拖拽其中一条记录,则...

java计算集合对称差

2017-08-31
阅读 2 分钟
4.3k
两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。集合A和B的对称差通常表示为AΔB,对称差的符号在有些图论书籍中也使用符号⊕来表示。例如:集合{1,2,3}和{3,4}的对称差为{1,2,4}。

重复消费input stream的方法

2017-08-30
阅读 1 分钟
5.6k
本文介绍一下如何重复消费input stream,普通的inputStream,消费一次之后,就不能再用了,有时候需要重复消费的话,就必须自己缓存一下。这里定义了ReuseableStream类,可以用来实现这个目的。

threeten-extra使用实例

2017-08-28
阅读 2 分钟
3.3k
序 threeten-extra是一个基于java8的java.time的扩展包,本文简单介绍一下threeten-extra的使用实例。 maven {代码...} 实例 获取日期的年、月、周、天、时、分 {代码...} 获取am或pm时间 {代码...} 获取月或年中的天数 {代码...} 获取上/下一工作日 {代码...} 获取时间距离 {代码...} doc threeten-extra

webmagic小试牛刀

2017-08-27
阅读 2 分钟
3.2k
序 webmagic是java里头比较优秀的一个爬虫框架: 使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。 默认使用了Apache HttpClient作为下载工具。 这里展示一下入门级使用。 maven {代码...} 启动类 {代码...} PageProcessor 核心的工作主要是自定义PageProcessor,比如 {代码...} 这里使用了xpath的语法...

phanbedder使用实例

2017-08-26
阅读 3 分钟
2.7k
PhantomJS是个好东东,很多时候爬虫需要用到,但是这个有windows、linux、mac的版本,想要跨平台的话,需要自己再处理一下,幸好有了phanbedder帮我们做了这个事情,这样就引一下jar包就完事了。

敏感词检测算法小结

2017-08-25
阅读 2 分钟
9.9k
failure表作用是在goto表中匹配失败后状态跳转的依据,这点与KMP中next表的作用相似。(这个表是trie树没有的,加了这个表,AC自动机就看起来不像一棵树,而像一个图)

java字符全角半角转换

2017-08-24
阅读 2 分钟
13.1k
序 本文展示一下如何将char进行半角与全角转换。 术语 全角 SBC case Sexagesimal to Binary Converter 60进制转为2进制 半角 DBC case Decimal to Binary Converter 10进制转为2进制 工具类 {代码...} 验证 {代码...} 输出 {代码...} doc Java工具类——全角半角字符相互转换

Trie树使用实例

2017-08-23
阅读 1 分钟
4.4k
序 本文简单介绍下apache collection4中的PatriciaTrie的使用。 Trie树 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构。 应用经常被搜索引擎系统用于文本词频统计。同时,它也是很多算法和复杂数据结构的基础,如后缀树,AC自动机等 优点最大限度地减少无谓的字符串比较,查询效率比哈希表...

docker运行storm及wordcount实例

2017-08-22
阅读 6 分钟
5.4k
序 本文简单介绍下怎么使用docker运行storm以及在springboot中使用storm。 docker-compose {代码...} 启动之后访问192.168.99.100:8080就可以看见storm-ui的界面 wordcount实例 TestWordSpout {代码...} WordCountBolt {代码...} PrintBolt {代码...} 本地运行 {代码...} 远程提交 修改提交方式,然后打jar包 {代码...} ...

httpclient参数配置

2017-08-21
阅读 24 分钟
13.5k
httpclient-4.5.3-sources.jar!/org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.java

restTemplate访问https

2017-08-20
阅读 2 分钟
19.7k
序 本文简述一下怎么使用restTemplate来访问https。 maven {代码...} 这里使用httpclient的factory 配置 {代码...} 验证 {代码...} doc Small hack to avoid SSL validation in Spring RestTemplate

zuul修改请求url

2017-08-19
阅读 2 分钟
8.9k
除了修改请求参数、设置响应header,响应body外,还有一种需求就是url重新,或者是修改url,这里简述一下怎么在zuul修改url。

修复zuul跨域配置异常

2017-08-18
阅读 1 分钟
10k
多次请求的时候,会把这些header再带过来,然后请求zuul转发的接口又在写入一次,造成重复了,方案就是zuul转发的时候,过滤掉这些header,比如

zuul自定义SimpleHostRoutingFilter

2017-08-17
阅读 5 分钟
6.4k
zuul的SimpleHostRoutingFilter主要用来转发不走eureka的proxy,里头是使用httpclient来转发请求的,但是有时候我们需要改动相关httpclient的配置,这个时候,就需要修改SimpleHostRoutingFilter了,这里讲一下如何扩展SimpleHostRoutingFilter。

httpclient访问https

2017-08-16
阅读 4 分钟
5.4k
本文从spring cloud netflix zuul里头摘出httpclient访问https/http的源码,展示一下怎么用httpclient去访问https。

spring security动态配置url权限

2017-08-15
阅读 5 分钟
26.3k
对于使用spring security来说,存在一种需求,就是动态去配置url的权限,即在运行时去配置url对应的访问角色。这里简单介绍一下。

spring security运行时配置ignore url

2017-08-14
阅读 4 分钟
16.5k
以前用shiro的比较多,不过spring boot倒是挺推崇自家的spring security的,有默认的starter,于是也就拿来用了。

列出spring security的所有SecurityFilterChain

2017-08-13
阅读 2 分钟
3.4k
spring-security-config-4.1.4.RELEASE-sources.jar!/org/springframework/security/config/http/HttpSecurityBeanDefinitionParser.java

tomcat如何关闭response的outputStream

2017-08-12
阅读 9 分钟
5.8k
在写文件下载的时候,遇到了一个问题,就是这个ServletOutputStream到底要不要自己flush以及close。这里以tomcat容易为例,解读一下。

docker运行mywebsql

2017-08-11
阅读 1 分钟
3.8k
MyWebSql 是一个基于Web的MySQL/Postgres数据库管理客户端,除了操作表格数据外,还可以对包括视图,存储过程,触发器和函数在内的对象进行控制。支持数据和查询结果的导入导出,还内置一个带语法着色功能的SQL编辑器。这里讲述一下怎么用docker快速跑起来。

springboot集成mqtt

2017-08-10
阅读 3 分钟
15.5k
MQTT(Message Queuing Telemetry Transport)是基于二进制消息的发布/订阅编程模式的消息协议,非常适合需要低功耗和网络带宽有限的IoT场景。这里简单介绍一下如何在springboot中集成。

springboot中使用esper入门

2017-08-09
阅读 4 分钟
5.4k
esper是一个比较经典的CEP(Complex Event Processing)的开源实现(开源协议为GPL v2),这里简单介绍下如何在springboot中使用。

springboot配置okhttp3

2017-08-08
阅读 3 分钟
15.8k
okhttp在android开发当中非常流行,对比restTemplate来说,相对简洁一点,这里简单介绍下怎么在springboot中配置。

hyperloglog的java版使用

2017-08-07
阅读 2 分钟
9.2k
对于海量数据来说,数据内存占用会变得很高. Probabilistic数据结构牺牲了一下准确率去换取更低内存占用。比如一个HyperLogLog的数据结构只需要花费12KB内存,就可以计算接近2^64个不同元素的基数,而错误率在1.625%.

bloomfilter的简单实现

2017-08-06
阅读 5 分钟
6.6k
布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素很可能在。

聊聊base62与tinyURL

2017-08-05
阅读 3 分钟
17.3k
还记得二进制转十进制的算法么,从右到左用二进制的每个数去乘以2的相应次方,次方要从0开始。62进制转10进制也类似,从右往左每个数*62的N次方,N从0开始。