白名单实现分享——ES、bitmap

平台—新白名单

一、背景

平台,基于白名单制,原有流程:

  1. 运营后台导入用户pin列表,把这一批用户分配给产品(一个或多个);
  2. 现有pin列表,根据id范围分配给产品(一个或多个);

原有白名单分配流程,操作较简单,但由于用户质量参差不齐,运营同学无法精准的通过增减白名单,来控制产品的进件人数,同时,用户在风控侧有大量的风控数据,根据用户风险的变化情况,来给产品增减白名单,从而达到精准运营和风险控制。

在这样的背景下,新白名单的基本诉求:

  1. 根据风控指标筛选,并支持按风控规则比例分配名单
  2. 支持实时进行本产品或不同产品间,进行用户的排斥筛选
  3. 能按照指定的方式,全量或部分删减已经配置的白名单列表

目前这些功能已经全部实现。

一个实用的小工具——TodoList

起因

每周五(六)下午都会有人吼一声:“又要写周报了,我这周都干什么了啊?!!”,写周报的确是一件令人痛苦的事情。以前,作为一个兢兢业业的后端接口搬砖的,工作比较单一,基本都是:某某模块接口设计,表设计,接口编写,接口测试…现在工作内容多而杂,到周五下午写周报基本抓狂状态。
突然想起来,以前学习js时,老师的一个小demo,一个小巧的待办事项列表工具,抓过来用了一段时间,自己又改造了下代码,感觉挺好使的,不光解决周五周报的问题,同时,对于梳理每天的工作也很有帮助,慢慢发现工作任务分配,工作思路等都清晰了不少。
这个小工具,对于和我有同样需求的人可能有点价值,本着“独乐了不如众乐乐”的精神,这里提供源代码和一个在线的页面。
源代码:https://github.com/kevinlsui/TodoList.git
网页:https://kevinlsui.github.io/TodoList/

jvm——运行时数据区域

《深入理解Java虚拟机》是一本能让java开发者废寝忘食的书。
最初拿到这本书,自己还是一个完全懵懂、“知其然而不知其所以然”的java菜鸟,现在可能好一点了,这本书也来来回回翻了好几遍,对jvm有了一定的认识。最近要找工作,又重新学习了下,总结一下一些基本的知识点。
本文主要总结一下jvm的运行时数据区域

JS高级知识——面向对象

前言

学好JS,走遍天下都不怕

JS,全称JavaScript。在我印象中,它就是一个弱语言,各种语法诡异难懂,各种用法千奇百怪,全靠背,没有规律可循(可能也是我学艺不精,大神勿喷)。但是,随着前端的大热,NodeJs的火爆情形,真的是“学好JS,走遍天下都不怕”。
最近,工作中需要去接触公司封装的一个js类库,以及前端工作做的越来越多,需要阅读优秀框架的源码,js面向对象是时候拿出来梳理一下了。

jvm——垃圾回收机制

《深入理解Java虚拟机》是一本能让java开发者废寝忘食的书。
最初拿到这本书,自己还是一个完全懵懂、“知其然而不知其所以然”的java菜鸟,现在可能好一点了,这本书也来来回回翻了好几遍,对jvm有了一定的认识。最近要找工作,又重新学习了下,总结一下一些基本的知识点。
本文主要总结一下jvm的垃圾回收相关内容

jvm——调优工具

注:以下工具均为jdk自带,本文测试使用的jdk1.7

简单的命令行工具

查看某一jvm进程中,各个线程的状态

  1. cmd → jps,显示当前机器所有的jvm进程,选择要查看进程对应的ID
  2. cmd → jstack 100000(对应进程id),然后观察各个线程的状态,关于线程的几种状态,可查看总结的文章

界面工具

jdk自带的命令行工具很多,上面只是两个比较常用的。
而jdk对应的JAVA_HOME/bin中的jvisualvm.exe,综合了各个命令行工具的功能,并且提供了图像化界面,是我们使用最多的调休工具。
具体使用,双击exe文件打开,里面的各项内容,只要具备虚拟机的基本知识都能看懂的。

常用的插件:
1.Visual GC : 统计垃圾回收

布隆过滤器

推荐博客

题目:1亿(10亿,100亿?)个垃圾邮件地址,建立一个黑名单库,使得所用空间最小,查询速度快,准许一点误差。
思路:

  1. 常规方法,把这1亿个地址放入数组,每次来一个url,去循环数组,去判断是否属于黑名单;(对于这种大数据量的,基本不可能,占空间大,查询速度慢)
  2. 哈希表,每一个地址通过哈希函数,放入类似hashmap结构中,每次来url,快速定位到该键值对,可知是否属于黑名单;(占据空间还是太大,但是速度应该可以,仍然不可取)
  3. 布隆过滤器。(专门为这种大数据操作而生,人类智慧真是令人感叹!!!)
|