BloomFilter布隆过滤器使用

从上一篇可以得知,BloomFilter的关键在于hash算法的设定和bit数组的大小确定,通过权衡得到一个错误概率可以接受的结果。 算法比较复杂,也不是我们研究的范畴,我们直接使用已有的实现。 google的guava包中提供了BloomFilter类,我们直接使用它来进行一下简单的测试。 新建一个maven工程,引入guava包 com.go...
阅读(245) 评论(0)

使用BloomFilter布隆过滤器解决缓存击穿、垃圾邮件识别、集合判重

Bloom Filter是一个占用空间很小、效率很高的随机数据结构,它由一个bit数组和一组Hash算法构成。可用于判断一个元素是否在一个集合中,查询效率很高(1-N,最优能逼近于1)。 在很多场景下,我们都需要一个能迅速判断一个元素是否在一个集合中。譬如: 网页爬虫对URL的去重,避免爬取相同的URL地址; 反垃圾邮件,从数十亿个垃圾邮件列表中判断某邮箱是否垃圾邮箱(同理,垃圾短信); ...
阅读(213) 评论(1)

使用redis计数来控制单位时间内对某接口的访问量,防止刷验证码接口之类的

使用自定义注解的方式,在需要被限制访问频率的方法上加注解即可控制。 看实现方式,基于springboot,aop,redis。 新建Springboot工程,引入redis,aop。 创建注解 package com.tianyalei.annotation; import org.springframework.core.Ordered; import org.springframew...
阅读(218) 评论(0)

2 秒杀系统模拟基础实现,使用Redis实现

这一篇,我们来使用redis进行数据存储。 新建一个redis的service实现类 package com.tianyalei.service; import com.tianyalei.model.GoodInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframew...
阅读(406) 评论(0)

1 秒杀系统模拟基础实现,使用DB实现

本文根据动脑学院的一节类似的课程,改编实现。分别使用DB和redis来完成。 隔离的解释 业务隔离:将秒杀业务独立出来,尽量不与其他业务关联,以减少对其他业务的依赖性。譬如秒杀业务只保留用户id,商品id,数量等重要属性,通过中间件发送给业务系统,完成后续的处理。 系统隔离:将秒杀业务单独部署,以减少对其他业务服务器的压力。 数据隔离:由于秒杀对DB的压力很大,将DB单独部...
阅读(326) 评论(0)

Springboot使用定时任务,Spring Schedule

定时任务的实现方式有多种,例如JDK自带的Timer+TimerTask方式,spring 3.0以后的调度任务(Scheduled Task),Quartz等。 Timer+TimerTask是最基本的解决方案,但是比较远古了,这里不再讨论。Spring自带的Scheduled Task是一个轻量级的定时任务调度器,支持固定时间(支持cron表达式)和固定时间间隔调度任务,支持线程池管...
阅读(123) 评论(0)

SpringBoot中logback日志保存到mongoDB

前面提到过logback输出日志的多种方式,这一篇看一下自定义Appender,将logback输出的日志保存到mongo中。 自定义Appender非常简单,继承一下AppenderBase类即可。 可以看到有个AppenderBase,有个UnsynchronizedAppenderBase,还有个AsyncAppenderBase继承了UnsynchronizedAppender...
阅读(239) 评论(0)

Logback各Appender详解及配置

转载自:http://blog.csdn.net/doraemon_wu/article/details/51972261 Logback将执行日志事件输出的组件称为Appender,实现的Appender必须继承 ch.qos.logback.core.Appender 接口 接口如下: package ch.qos.logback.core; import ch...
阅读(130) 评论(0)

springboot中使用logback

Springboot默认集成的就是logback,logback相对来说是优秀于log4j的,log4j2也是参考了logback的设计。本篇就是来看看如何使用logback。 新建一个Springboot项目,勾选web就OK了,项目会自动集成logback。 控制台日志 写一个controller测试一下: import org.slf4j.Logger; import org.slf...
阅读(692) 评论(0)

SpringBoot中Mongo查询条件是集合中的字段的处理

MongoRepositoryMongoRepository和普通的Repository一样,继承PagingAndSortingRepository,支持分页和普通的CRUD。之前已经提过Jpa的一些基本操作,下面讲几个 稍微特殊点的。List findByAddressZipCode(ZipCode zipCode); List findByEmailAddres...
阅读(284) 评论(0)

SpringBoot事务管理:声明式事务和编程式事务。将Service层的事务执行结果传递出去

在SpringBoot中使用事务很简单,这一篇不是为了讲事务,主要是讲一下一个工具类,将需要加入事务的Service层代码作为参数传递出去并返回事务的执行结果(成功和回滚)。 声明式事务 在SpringBoot中声明式事务最常见,就是把需要事务的方法用@Transactional标注一下就行了,这个一般用在Service层。标注后该方法就具备了事务的能力,出错了会自动回滚。 在大部分场景下,...
阅读(1280) 评论(0)

Jpa使用说明

jpa使用说明...
阅读(1178) 评论(0)

Springboot中对jpa动态查询条件的封装

jpa对于固定参数的条件查询比较简单,可以在Repository中直接用参数名来查询。但是对于不固定的参数查询就比较麻烦了,官方提供的是继承JpaSpecificationExecutor,然后自己拼接Specification。这一篇主要是对Specification进行封装,让写法更友好. 代码参考:http://lee1177.iteye.com/blog/1994295。感觉还不够完整,回...
阅读(1917) 评论(0)

SpringMVC参数校验,包括JavaBean和基本类型的校验

该示例项目使用SpringBoot,添加web和aop依赖。 SpringMVC最常用的校验是对一个javaBean的校验,默认使用hibernate-validator校验框架。而网上对校验单个参数,譬如String,int之类的资料极少,这一篇就是讲这个的。校验JavaBeanpackage com.example.bean;import org.hibernate.validator.con...
阅读(2155) 评论(5)

SpringMVC源码解析,看SpringMVC的工作流程

SpringMVC在使用过程中,大多是使用注解,对它的实现接口之类的关系理解变得模糊, 通过对XML配置的理解,可以理清各个类的关系,譬如控制器类要实现Controller接口。 接触SpringMVC,对它的xml文件配置一直比较模模糊糊,最近花了一点时间稍微看了下源代码,再加上调试,开始逐渐理解它,网上的类似的内容有很多,写本文主要是自己加深一下理解。本文适合用过SpringMVC的开发...
阅读(1367) 评论(0)
22条 共2页1 2 下一页 尾页
    个人资料
    • 访问:96851次
    • 积分:1515
    • 等级:
    • 排名:千里之外
    • 原创:58篇
    • 转载:19篇
    • 译文:0篇
    • 评论:19条
    博客专栏