springIOC和AOP学习笔记
@TOC
前言记录AOP IOC学习心得
一、IOC控制反转,将创建bean和管理bean的依赖的工作交给容器处理,控制权从自己手中转移到容器中,是一种思想,依赖注入是实现这种思想的方式
1.依赖注入(DI)IOC的实现方式有依赖查找和依赖注入,一般使用依赖注入
1.1 依赖注入的三种方式1.构造器注入:IOC会检查被注入对象的构造方法,取得它所依赖的对象列表,为其注入相应的对象。优点是构造完成就处于就绪状态可以马上使用,缺点是构造方法无法被继承,不能设置默认值,若依赖的对象列表很多,会导致构造对象的参数列表很长,对于非必需的依赖处理可能要引入多个构造方法,造成参数列表的变动,不方便维护。
2.setting注入:不能马上使用,能设置默认值,可以被继承。
3.接口注入:必须通过实现接口为bean注入对象,使用少,因为需要实现不必要的接口,侵入性强
1.2 依赖注入的注解@Autowired:自动按类型再根据id@Resource:根据id@value:注入基本数据类型和String
2 bean的作用域singleton单例:默认作用域,不管收到多少bean请求,在容器中只存在唯一 ...
VALIDATOR参数验证
VALIDATOR参数验证
注解方法开启验证
是否复杂对象,对属性开启验证
属性注解描述
默认注解包含
不满足验证时,可自定义注解
注解功能实现使用注解
Hystrix 的原理与使用
Hystrix 的原理与使用前言分布式系统环境中,服务间的依赖非常常见,一个业务调用通常依赖多个基础服务。 当进行同步调用时,当库存服务不可用时,订单服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个订单服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。
服务雪崩效应的定义服务雪崩效应是一种因 服务提供者 的不可用导致 服务调用者 的不可用,并将不可用 逐渐放大 的过程.如果所示:
上图中, A为服务提供者, B为A的服务调用者, C和D是B的服务调用者. 当A的不可用,引起B的不可用,并将不可用逐渐放大C和D时, 服务雪崩就形成了.
服务雪崩效应形成的原因我把服务雪崩的参与者简化为 服务提供者 和 服务调用者, 并将服务雪崩产生的过程分为以下三个阶段来分析形成的原因:
服务提供者不可用
重试加大流量
服务调用者不可用
服务雪崩的每个阶段都可能由不同的原因造成, 比如造成 服务不可用 的原因有:
硬件故障:如服务器宕机,机房断电,光纤被挖断等。
程序Bug:如程序逻辑导致内存泄漏,JVM长时间FullGC等。
...
大厂面试必备之消息队列连环问【转载】
大厂面试必备之消息队列连环问【转载】开门见山,我们直接从常见的面试问题入手:
如何保证消息不丢失?
如何处理重复消息?
如何保证消息的有序性?
如何处理消息堆积?
当然在剖析这几个问题之前需要简单的介绍下什么是消息队列,消息队列常见的一些基本术语和概念。
接下来进入正文。
什么是消息队列来看看维基百科怎么说的,顺带学学英语这波不亏:
In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content. Group communication systems provide similar kinds of functio ...
Oauth2.0 实现短信验证码登录过程详解
Oauth2.0 实现短信验证码登录过程详解前言公司新分配了微服务的项目,要求在已有密码登陆的架构上增加手机验证码登陆功能,原有的密码登陆都没摸清的我懵逼了,百度看了很多Spring Security 和 OAuth2基本概念还有一些如何实现短信验证码登录功能的博客,很多文章一上来就给你展示n个类的,或者直接贴上一大堆代码的,对于才了解一点基本概念的我来说属实有点难啃,好在找到了一位大佬将思路以及实现写的很清晰的文章,鉴于大佬的文章图片挺模糊的,我把这几天弄出来的功能简单整理一下,做个记录。(不想看分析,想直接简单粗暴开始干的请直接跳到标题为编码阶段的开始看)
阅读本文需要的基础知识:
熟练掌握Java
掌握了Spring Boot基础知识
默认已经整合好密码模式
架构搭建本文只说验证码登录相关部分,默认大家Spring Cloud OAuth2这部分环境已经搭建好。Spring Cloud OAuth2 实现用户认证及单点登录
需求OAuth 2 有四种授权模式,分别是授权码模式(authorization code)、简化模式(implicit)、密码模式(resource o ...
Spring Security 和 OAuth2的简单介绍
Spring Security 和 OAuth2的简单介绍Spring SecuritySpring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权。
它是一个专注于为Java应用程序提供认证和授权的框架。像所有的Spring项目一样,Spring Security的真正威力在于它可以很容易地扩展以满足客户的需求。
做web应用时,一般都需要用到安全框架,而现在web应用中,主要有两套安全框架,就是shiro 和 spring security。
功能上两者都差不多,shiro有的功能spring security都有,而且spring security还有一些额外的功能,就是对OAuth的支持。上图是网上的一些对比,如果是做单体项目,shiro足以,如果是分布式项目,推荐spring security 和 oauth2.0。
OAuth2OAuth 2.0是业界标准的授权协议。OAuth 2.0注重客户端开发者的简单性,同时为Web应用、桌面应用、手机和客厅设 ...
SQL 编写规范
SQL 编写规范注意事项
UPDATE、DELETE 操作不使用 LIMIT,必须走 WHERE 精准匹配,LIMIT 是随机的,此类操作会导致数据出错。
禁止使用INSERT INTO t_xxx VALUES(xxx),必须显式指定插入的列属性,避免表结构变动导致数据出错。
SQL 语句中最常见的导致索引失效的情况需注意:隐式类型转换,如索引 a 的类型是 varchar,SQL 语句写成 where a = 1; varchar 变成了int。
对索引列进行数学计算和函数等操作,例如,使用函数对日期列进行格式化处理。join 列字符集不统一。
多列排序顺序不一致问题,如索引是 (a,b),SQL 语句是 order by a b desclike。模糊查询使用的时候对于字符型xxx%形式可以走到一些索引,其他情况都走不到索引。
使用了负方向查询(not,!=,not in 等)。==
建议事项
按需索取,拒绝select *,规避以下问题:无法索引覆盖,回表操作,增加 I/O。额外的内存负担,大量冷数据灌入innodb_buffer_pool_size,降低查询命中 ...
JReble破解
生成 GUID 的网址https://www.guidgen.com/
用这个网址 + 生成的 GUID 激活1https://jrebel.qekang.com/
如:1https://jrebel.qekang.com/2df0fa47-95ba-4dec-911b-4209a64b32d4
粘贴到Team URL 第一个框中1IntelliJ IDEA -->Preferences -->JReble --> Change License
设置离线模式 来防止失效1IntelliJ IDEA -->Preferences -->JReble --> Work offline