自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 Bloom filter(布隆过滤器)学习与使用总结

一、简介当我们使用主流数据结构如 Lists, Maps, Sets, Trees等等时,我可以得到确切的结果,无论这个数据存在或是不存在。概率数据结构能够提供一种基于内存的,快速的查找出一种可能而非确切的结果。这种概率数据结构就是布隆过滤器(Bloom filter)。布隆过滤器可以检查值是“可能在集合中”还是“绝对不在集合中”。定义Bloom过滤器实质上由长度为m的位向量或位列表(仅包含0或1位值的列表)组成,最初所有值均设置为0,如下所示:在哈希表中,我们使用单个哈希函数,因此仅获得单个索

2020-09-03 14:18:59 3278 1

转载 看完这篇就可以理解volatile关键字了!亲测有效!

volatile 这个关键字可能很多朋友都听说过,或许也都用过。在 Java 5 之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在 Java 5之后,volatile 关键字才得以重获生机。volatile 关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于 volatile 关键字是与Java 的内存模型有关的,因此在讲述 volatile 关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了 volatile 关键字的实现原理,最后给出了几个

2020-09-03 11:21:18 136

转载 公司的API接口被刷了怎么办?如何限流?

api限流的场景限流的需求出现在许多常见的场景中1.秒杀活动,有人使用软件恶意刷单抢货,需要限流防止机器参与活动2.某api被各式各样系统广泛调用,严重消耗网络、内存等资源,需要合理限流3.淘宝获取ip所在城市接口、微信公众号识别微信用户等开发接口,免费提供给用户时需要限流,更具有实时性和准确性的接口需要付费。api限流实战首先我们编写注解类AccessLimit,使用注解方式在方法上限流更优雅更方便!三个参数分别代表有效时间、最大访问次数、是否需要登录,可以理解为 seconds 内最多访问

2020-09-03 09:57:44 608

原创 Java8的 Stream 流学习与使用总结

1. Stream 流介绍Stream的原理:将要处理的元素看做一种流,流在管道中传输,并且可以在管道的节点上处理,包括过滤筛选、去重、排序、聚合等。元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。Stream 流的使用总是按照一定的步骤进行,可以抽象出下面的使用流程。数据源 -> 数据处理/转换-> 结果处理1.1. 数据源数据源也就是数据的来源,可以通过多种方式获得 Stream 数据源,下面列举几种常见的获取方式。• Collection.stream();

2020-09-02 18:02:43 652

原创 HTTP 请求和 RPC 调用哪个好?

HTTP协议,以其中的Restful规范为代表,它可读性好,且可以得到防火墙的支持、跨语言的支持。Restful优势很大,大有超过RPC的趋势。但是HTTP也有其缺点,这是与其优点相对应的。首先是有用信息占比少,毕竟HTTP工作在第七层,包含了大量的HTTP头等信息。其次是效率低,还是因为第七层的缘故。还有,其可读性似乎没有必要,因为我们可以引入网关增加可读性。此外,使用HTTP协议调用远程方法比较复杂,要封装各种参数名和参数值。而RPC则与HTTP互补,RPC的全称是Remote Procedure

2020-09-02 16:50:53 338

转载 了解一下Java中的回调机制

在一个应用系统中, 无论使用何种语言开发, 必然存在模块之间的调用, 调用的方式分为几种:*1. 同步调用*同步调用是最基本并且最简单的一种调用方式, 类 A 的方法 a() 调用类 B 的方法 b(), 一直等待 b() 方法执行完毕, a() 方法继续往下走. 这种调用方式适用于方法 b() 执行时间不长的情况, 因为 b() 方法执行时间一长或者直接阻塞的话, a() 方法的余下代码是无法执行下去的, 这样会造成整个流程的阻塞.2. 异步调用异步调用是为了解决同步调用可能出现阻塞, 导致

2020-09-01 18:48:30 104

转载 类加载流程,类加载机制及自定义类加载器详解(面试再也不怕了)

一、引言当程序使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、链接、初始化三个步骤对该类进行类加载。二、类的加载、链接、初始化1、加载类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象。类的加载过程是由类加载器来完成,类加载器由JVM提供。我们开发人员也可以通过继承ClassLoader来实现自己的类加载器。加载的class来源• 从本地文件系统内加载class文件• 从JAR包加载class文件• 通过网络加载class文件• 把一个

2020-08-31 14:52:44 258

转载 单点登录原理与简单实现

一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求,响应合法请求,忽略非法请求;要鉴别浏览器请求,必须清楚浏览器请求状态。既然http协议无状态,那就让服务器和浏

2020-08-31 13:58:55 107

转载 扫码登录实现原理

需求介绍首先,介绍下什么是扫码登录。现在,大部分同学手机上都装有qq和淘宝,天猫等这一类的软件。而开发这些app的企业,都有他们相对应的网站。为了让用户在使用他们的网站时,登录更加方便和安全。这些企业提供了, 使用手机,扫一扫,就可以登录的服务。网页登录时的效果如下:有很多小伙伴可能会感到很神奇,网页上只是显示了个二维码,它怎么就知道是哪个手机扫到了二维码,并且进行登录的呢?而且,登录完成以后,还能直接把用户信息显示给用户,真的是很神奇啊。原理解释网页端+服务器接下来就是对于这个服务的详细实现。

2020-08-31 10:54:16 509

转载 Lambda 表达式语法与使用总结

1. Lambda 介绍在 Java 中 Lambda 表达式(lambda expression)是一个匿名函数,在编写 Java 中的 Lambda 的时候,你也会发现 Lambda 不仅没有函数名称,有时候甚至连入参和返回都可以省略,这也让代码变得更加紧凑。2. Lambda 语法Lambda 的语法主要是下面几种。(params) -> expression(params) -> {statements;}Lambda 的语法特性。使用 ->分割 Lambda

2020-08-28 17:28:22 851

原创 Spring事务失效原因与处理

Spring事务失效的原因主要有以下几种:1.非public方法失效@Transactional只有标注在public级别的方法上才能生效,对于非public方法将不会生效。这是由于Spring AOP不支持对private、protect方法进行拦截。声明 @Transactional 的目标方法时,Spring Framework 默认使用 AOP 代理,在代码运行时生成一个代理对象,再由这个代理对象来统一管理。声明式事务原理是Spring事务会为@Transaction标注的方法的类生成AOP增强

2020-08-28 16:43:24 1596

转载 Spring Aop 扫盲

关于AOP面向切面编程(Aspect-oriented Programming,俗称AOP)提供了一种面向对象编程(Object-oriented Programming,俗称OOP)的补充,面向对象编程最核心的单元是类(class),然而面向切面编程最核心的单元是切面(Aspects)。与面向对象的顺序流程不同,AOP采用的是横向切面的方式,注入与主业务流程无关的功能,例如事务管理和日志管理。Spring的一个关键组件是AOP框架。虽然Spring IoC容器不依赖于AOP(意味着你不需要在IOC中

2020-08-28 14:12:47 63

转载 常用的设计模式汇总,超详细!

单例模式简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来也很容易,直接看demo吧public class Singleton { private static Singleton singleton; private Singleton() { }

2020-08-27 17:02:21 128

转载 QPS、TPS、并发用户数、吞吐量关系

1、QPSQPS Queries Per Second 是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。2、TPSTPS Transactions Per Second 也就是事务数/秒。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,3、QPS和TPS区别1、Tps即每秒处

2020-08-27 15:53:41 786

转载 Spring的Controller是单例还是多例?怎么保证并发的安全

controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。我们下面来简单的验证下:@Controllerpublic class ScopeTestController { private int num = 0; @RequestMapping("/testScope") public void testScope() { System.out.println(++num); } @

2020-08-27 15:39:54 86

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除