关闭
当前搜索:

BloomFilter布隆过滤器使用

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

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

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

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

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

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

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

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

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

分布式锁 Java常用技术方案

前言:       由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。所以自己结合实际工作中的一些经验和网上看到的一些资料,做一个讲解和总结。希望这篇文章可以方便自己以后查阅,同时要是能帮助到他人那也是很好的。   ===========================================...
阅读(401) 评论(0)

4 手写实现SpringMVC,第四节:匹配用户请求、执行映射方法

在上一篇我们已经完成了配置的url到方法的映射,并且完成了method的各参数的注解、参数名、类型等的映射配置。 这一篇就很简单了,就是通过获取request的请求地址和参数,和已经加载好的映射进行比对,如果匹配上了就执行对应的方法。 直接上代码: @Override protected void doPost(HttpServletRequest req, HttpServletR...
阅读(755) 评论(3)

3 手写实现SpringMVC,第三节:通过反射给属性和参数注入值

在上一篇已经完成了读取beanName->Object映射关系的功能,这一篇就是把读取到的映射注入到属性中。 在WebController里定义了需要被Autowired的两个Service,myQueryService和modifyService,下面来给他们赋值。 通过反射给属性赋值...
阅读(921) 评论(0)

2 手写实现SpringMVC,第二节:自定义注解及反射赋值

还是回到最终要实现的效果。 可以发现,这里面使用了大量的自定义注解,并且还有autuwire的属性也需要被赋值(Spring的IOC功能)。 先来创建自定义注解 注意,根据不同的注解使用的范围来定义@Target,譬如Controller,Service能注解到类,RequestMapping能注解到类和方法,AutoWired只能注解到属性。 Autowired /**...
阅读(1492) 评论(0)

1 手写实现SpringMVC,第一节:项目基本结构

SpringMVC是当今最流行的web框架之一,下面就以如何手工实现一个类似SpringMVC的框架,来看一下SpringMVC是如何工作的。 最终目标是达到如下类似于SpringMVC的项目呈现 @Controller @RequestMapping("/web") public class MyAction { @Autowired QueryService querySe...
阅读(1526) 评论(0)

Springboot使用定时任务,Spring Schedule

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

SpringBoot中MongoDB注解概念及使用

spring-data-mongodb主要有以下注解@Id主键,不可重复,自带索引,可以在定义的列名上标注,需要自己生成并维护不重复的约束。如果自己不设置@Id主键,mongo会自动生成一个唯一主键,并且插入时效率远高于自己设置主键。原因可参考上一篇mongo和mysql的性能对比。 在实际业务中不建议自己设置主键,应交给mongo自己生成,自己可以设置一个业务id,如int型字段,用自己设置的业...
阅读(3222) 评论(3)

MongoDB与MySQL的插入、查询性能测试

转载自:http://blog.csdn.net/clh604/article/details/19608869 1.1  MongoDB的简单介绍 在当今的数据库市场上,MySQL无疑是占有一席之地的。作为一个开源的关系型数据库,mysql被大量应用在各大网站后台中,承担着信息存储的重要作用。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为oracle旗下...
阅读(962) 评论(0)

SpringBoot中logback日志保存到mongoDB

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

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...
阅读(1747) 评论(0)
131条 共9页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:306160次
    • 积分:3941
    • 等级:
    • 排名:第9311名
    • 原创:97篇
    • 转载:34篇
    • 译文:0篇
    • 评论:135条
    博客专栏
    友情链接
    最新评论