消息队列-RabbitMQ
2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。
优点:由于 erlang 语言的高并发特性,性能较好;吞吐量到万级,MQ 功能比较完备,健壮、稳定、易用、跨平台、支持多种语言 如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持 AJAX 文档齐全;开源提供的管理界面非常棒,用起来很好用,社区活跃度高;更新频率相当高 https://www.rabbitmq.com/news.html
缺点:商业版需要收费,学习成本较高
结合erlang 语言本身的并发优势,性能好时效性微秒级,社区活跃度也比较高,管理界面用起来十分方便,如果你的数据量没有那么大,中小型公司优先选择功能比较完备的 RabbitMQ。
主要概念生产者
产生数据发送消息的程序是生产者
交换机
交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个 ...
demopost
这是一篇测试文章
缓存问题总结
一、缓存穿透:*“查无此物”的攻击*** ****缓存穿透是指客户端请求的**数据在缓存中和数据库中都不存在**,这样缓存永远不会生效,*这些请求都会打到数据库*。** **1.1 原因分析
恶意请求:黑客暴力扫描不存在的ID(如-1、0等非法值)
逻辑缺陷:业务未校验参数有效性,直接透传至数据库
** **1.2 解决方案方案一:布隆过滤器(Bloom Filter)
原理:预加载所有可能存在的数据哈希值到布隆过滤器中,查询时先判断数据是否存在。
代码示例
1234567891011121314151617// 使用Guava实现布隆过滤器BloomFilter<Long> bloomFilter = BloomFilter.create( Funnels.longFunnel(), 1000000, // 预期元素量 0.01 // 误判率);// 预热数据for (long id : validIds) { bloomFilter.put(id);}// 查询拦截public St ...
spring-cloud 文档(更新中)
Spring Cloud 优缺点其主要优点有:
1、 集大成者,SpringCloud包含了微服务架构的方方面面;2、 约定优于配置,基于注解,没有配置文件;3、 轻量级组件,SpringCloud整合的组件大多比较轻量级,且都是各自领域的佼佼者;4、 开发简便,SpringCloud对各个组件进行了大量的封装,从而简化了开发;5、 开发灵活,SpringCloud的组件都是解耦的,开发人员可以灵活按需选择组件;
它的缺点:
1、 项目结构复杂,每一个组件或者每一个服务都需要创建一个项目;2、 部署门槛高,项目部署需要配合Docker等容器技术进行集群部署,而要想深入了解Docker,学习成本高;
spring security 快速使用 (1)
重写默认配置通过之前的学习,我们已经知道了第一个项目的默认配置,接下来我们就来尝试替换它们。在本节中,我们将介绍如何配置UserDetailsService和PasswordEncoder.这两个组件参与身份验证的处理,大多数应用程序都会根据其 需求对它们进行自定义,但是关于这两个组件的细节我们仍然是放到后面细讲,目前我们只需了解如何插入自定义实现。
重写UserDetailsService组件前文里我们就提到过,UserDetailsService我们可以选择创建自己的实现,或者使用Spring Security提供的预定义实现。但是本节并不打算详细介绍前两者,而是使用Spring Security提供的一个名为InMemoryUserDetailsManager的实现。通过这个示例,我们将了解如何将这类对象插入架构中。
紧接着之前第一个Spring Security的程序示例,我们对其进行修改,让其改成拥有自己管理的凭据并将其用于身份验证。所以在此我们并不会实现UserDeatilsService,但需要使用Spring Security提供的实现类。
InMemoryUserDe ...
spring security 快速使用 (2) OAUTH2
Oauth2 概念和授权码模式鸽了很久,其实也因为自己确实比较忙,加之自己在造demo的时候也遇到了很多问题,并且网上这方面的解答非常之少,不过也正是因为少,才更加让我想写这样的知识分享,最终,在一篇博客的解答下解决了问题,本节我们就开始Oauth2的学习。在之前的学习中,我们可以说SpringSecurity本身的基础学习差不多告一段落,大家已经可以通过自己的能力去搭建一个SpringSecurity的安全应用。
那么接下来我们就接着学习OAuth2这样一个庞大的主题,我们在这一章主要介绍一个概要,即OAuth2是什么,然后将会把它应用到一个关注使用单点登录(SSO)进行身份验证的应用程序上。这里之所以选用SSO,是因为其非常简单,也非常有用。
OAuth2框架在大多数情况下,OAuth2被称为授权框架(或规范框架),其主要目的是允许第三方网站或应用程序访问资源。有时人们也把OAuth2称为一项委托协议。无论如何称呼它,重要的是要记住OAuth2不是一个特定的实现或库。也可以将OAuth2流程定义应用于其他平台、工具或语言。这里将介绍如何实现OAuth2与SpringBoot和Spr ...
spring-boot 常用配置(更新中)
设计的目标
为所有使用 Spring 的开发者提供一个更简单,快速的入门体验
提供一些常见的功能、如监控、WEB容器,健康,安全等功能
干掉XML,遵循规范,开箱即用
Spring Initializr(官方的构建插件,需要联网)
常用配置详解12345<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>
提供配置项自动提示功能。
自定义配置文件
定义一个名为 my2.properties 的资源文件,自定义配置文件的命名不强制 application 开头
123my2.age=22my2.name=Levinmy2.email=1837307557@qq.com
其次定义 MyProperties2.jav ...
springMVC 源码分析
springMvc 架构流程和各个组件
用户发送请求至前端控制器DispatcherServlet。
DispatcherServlet收到请求调用HandlerMapping处理器映射器。
处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
DispatcherServlet调用HandlerAdapter处理器适配器。
HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
Controller执行完成返回ModelAndView。
HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
ViewReslover解析后返回具体View。
DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
DispatcherServlet ...
springMVC 文档手册
Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。处理器是你的应用中注解了@Controller和@RequestMapping的类和方法,Spring为处理器方法提供了极其多样灵活的配置。Spring 3.0以后提供了@Controller注解机制、@PathVariable注解以及一些其他的特性,你可以使用它们来进行RESTful web站点和应用的开发。
DispatcherServletSpring MVC框架,与其他很多web的MVC框架一样:请求驱动;所有设计都围绕着一个中央Servlet来展开,它负责把所有请求分发到控制器;同时提供其他web应用开发所需要的功能。不过Spring的中央处理器,DispatcherServlet,能做的比这更多。它与Spring IoC容器做到了无缝集成,这意味着,Spring提供的任何特性,在Spring MVC中你都可以使用。
下图展示了Spring Web M ...
spring 文档手册
spring 框架介绍
核心容器
核心容器由以下模块组成,spring-core, spring-beans,spring-context,spring-context-support,和spring-expression (Spring表达式语言)。
spring-core和spring-beans模块提供了框架的基础功能,包括IOC和依赖注入功能。 BeanFactory是一个成熟的工厂模式的实现。你不再需要编程去实现单例模式,允许你把依赖关系的配置和描述从程序逻辑中解耦。
上下文(spring-context)模块建立在由Core和Beans模块提供的坚实的基础上:它提供一个框架式的对象访问方式,类似于一个JNDI注册表。上下文模块从Beans模块继承其功能,并添加支持国际化(使用,例如,资源集合),事件传播,资源负载,并且透明创建上下文,例如,Servlet容器。Context模块还支持Java EE的功能,如EJB,JMX和基本的远程处理。ApplicationContext接口是Context模块的焦点。 spring-context-support支持整合普通第三方库 ...