- 博客(27)
- 资源 (5)
- 收藏
- 关注
原创 linux下安装以及卸载mysql数据库的那些事er
系统:centos6.8mysql:5.1.73安装方式:yum卸载:在执行安装操作之前,清先确保你的机器里没有mysql服务。①:执行以下命令查看系统中已经安装的mysql:rpm -qa |grep -i mysql②:删除yum remove 系统显示已安装的mysql③:删除系统中的mysql文件夹执行以下命令查询mysql文件夹:f...
2019-07-18 13:32:18
219
原创 SpringSecurity学习之路12-完成短信验证码的开发
目的:在验证码的重构完成之后,已经实现了发送验证码的功能,接下来要做的就是将短信验证码登录的逻辑添加就如程序里。使用户可以以账号、密码或手机号加验证码的方式登录。下图是短信验证码的实现逻辑:当用户以用户名+密码的形式登录时,经过UsernamepasswordAuthenticationFilter,将用户信息封装为一个token。然后AuthenticationManager是会根据...
2019-06-16 15:02:04
650
原创 SpringSecurity学习之路11-实现记住我的功能
目的:用户勾选记住我之后,一段时间内免登陆。{都是接着之前的代码,一点点加、重构代码的,不会在这里详细叙述之前提到的东西,以后的篇幅也是这样}下图是关于SpringSecurity的原理介绍:当登录成功之后,RememberService会将Token存储进浏览器Cookie,再将它写入进数据库里。当再次进行登录操作时,便会拿着浏览器中的token去数据库中查找,查找成功之后便会调...
2019-06-10 18:07:03
234
原创 SpringSecurity学习之路10-图片验证码与手机验证码的重构
为了达到可重用、可配置的目的,使用到了自定义properties类,可以读取在application.properties中的配置信息。这些配置的优先级是:请求参数配置 > application.properties配置 > 自定义properties类配置。自定义properties的方法如下:省略get/set方法注意:以prefix的imooc.securit...
2019-06-10 11:51:48
299
原创 SpringSecurity学习之路9-实现验证码功能
步骤:定义一个封装验证码信息的类,ImageCode。写一个生成验证码的接口,利用随机数生成验证码,并将生成的验证码信息存储进session。springsecurity是由一系列filter接口来实现的,自定义一个filter继承OncePerRequestFilter,实现校验验证码的逻辑功能。将这个自定义的filter添加进入springsecurity链中。Ima...
2019-06-10 10:17:54
219
原创 SpringSecurity学习之路8-重构用户登录
目的:在没有提供自定义登录页面的情况下,系统提供默认的登录页面。①:application.properties 里写明 默认的登录页面在以下路径中新建三个类:先看SecurityProperties类,代码如下:它是一个properties的配置类,后面主要是通过它来调用值。prefix的值是根据application.properties里定义的名字来的,是一个前...
2019-05-30 18:02:43
470
2
原创 SpringSecurity学习之路6-基本原理{基于表单的验证}
在之前的所有程序中,只要知道了访问地址就可以对其进行访问。接下来使用SpringSecurity来为程序添加保护。主要学习到的有:身份认证(你是谁)、授权(你能做什么)和攻击保护(防止伪造身份)。先看看SpringSecurity的基本原理:通过Filter过滤器链来实现安全验证,执行逻辑如下图:首先会判断请求体中是否包含用户名、密码信息,如果有那就会被第一个绿色Filter处理。否则...
2019-05-20 10:36:50
160
原创 BCryptPasswordEncoder加密、验证策略
通过查看源码,了解PasswordEncoder加密以及验证密码(数据库存储的加密密码与用户输入的密码比较)的流程、方式。加密:BCryptPasswordEncoder类有三个构造方法,影响了盐的生成,如果在生成BCryptPasswordEncoder对象的时候没有指定任何参数(或只指定了一个参数),BCrypt会提供默认值,最终都会调用BCrypt.gensalt(streng...
2019-05-15 14:50:01
35590
2
原创 SpringSecurity学习之路7-自定义用户认证逻辑
在上文中,每次登陆的密码都是由系统随机生成的,这不符合实际应用,用户输入账号密码后应从数据库或其他存储中查找是否匹配。在SpringSecurity中,通过实现UserDetailsService接口的loadUserByUsername()方法来完成用户登录的自定义验证。下面首先是自定义用户身份校验逻辑:loadUserByUsername()方法的返回值类型是UserDetai...
2019-05-14 16:27:34
584
原创 SpringMVC下文件的上传与下载
首先要在pom.xml中加入以下依赖:利用commons组件来实现文件的上传与下载工作。下面是关于文件上传的代码:下面是关于文件下载的代码:至此关于文件的上传与下载介绍完毕。...
2019-05-14 09:48:16
113
原创 SpringSecurity学习之路5-使用WireMock伪造服务接口
在前后端分离下,在上一节中我们使用了Swagger来生成html文档。这些文档中包含了关于控制器、属性的介绍,以及对应的URL路径,前端只需要根据URL路径来进行访问。如果后端的开发还未完成,而前端需要调用接口,就可以使用WireMock来伪造服务。使用方法:首先下载jar包,步骤如下:执行第三步之后,运行第四步命令执行jar包。在命令末尾添加 --port 9999可以自定义Wi...
2019-05-13 10:38:27
257
原创 SpringSecurity学习之路4-利用多线程提高Restful服务性能
知识点一:使用Runnerable异步处理Restful服务知识点二:使用DeferredRestful异步处理Restful服务同步处理逻辑如下:假如要处理创建订单的请求,如上图所示,采用同步方式时,吞吐率无疑很低。异步处理逻辑如下:通过主线程调用副(子)线程的方式,能够提高系统的吞吐率。这种方式很直观,也很简单。实现代码如下:执行后控制台输出结果通过控...
2019-05-11 17:34:31
594
原创 Filter、Interceptor和Aspect
Filter:遵从J2EE规范,通过Request和Response获取请求体和返回体信息。主要方法有init()、destroy()和doFilter()。主要代码逻辑都写在doFilter()里。不能获取到处理URL请求的方法的信息。Interceptor:是Spring框架提供支持的。相比于Filter,它能获取处理URL请求的方法信息。如果被Interceptor...
2019-05-11 10:45:29
141
原创 SpringSecurity学习之路3-异常处理,APP与浏览器端的不同
SpringSecurity学习之路1SpringSecurity学习之路2-处理创建请求,数据校验本篇将会介绍到的有:SpringBoot关于异常处理的介绍,其中包括SpringBoot异常处理原理(浏览器与APP的不同)、自定义异常处理方式。看以下代码,我直接抛出了一个运行时异常:启动之后,通过浏览器访问时会显示以下错误信息:通过APP访问该地址时(Restlet...
2019-05-02 17:28:13
757
原创 SpringSecurity学习之路2-处理创建请求,数据校验
SpringSecurity学习之路1在本篇中将会介绍到的内容有:@RequestBody注解、日期类型参数的处理、@Valid注解和BindingResult。先看@RequestBody注解的使用。场景:前后端分离,后端使用Restful风格进行开发。例子,创建用户请求,并期望返回用户ID信息。下面是Controller代码:测试代码如下:PS:如果这段测试代码你看不...
2019-05-01 20:41:07
249
原创 SpringSecurity学习之路1
项目结构:自上而下分别为:①父模块,主要负责项目管理、版本控制;②后期为springSecurity加入手机验证登录等功能时使用;③面向浏览器所做的配置,如集群中session的处理;④security核心文件都在这里存放;⑤具体业务。引入了③的配置,刚开始学,先从面向浏览器③开始。在引入了相关依赖和插件之后,在⑤中写一个hello spring security...
2019-04-30 17:29:37
746
原创 EqualsBuilder与HashCodeBuilder
两个类都是在import org.apache.commons.lang3.builder包下,可以帮助我们很好的重写equals与hashCode方法。先写个简单的实体类:package kevin.bean;import org.apache.commons.lang3.builder.EqualsBuilder;import org.apache.commons.l...
2019-04-04 15:36:54
404
2
转载 dubbo service、reference配置文件
dubbo 和spring一块使用,service是把已有的service服务发布成dubbo服务,即通过ref引用已存在的service服务(即已存在的spring bean对象)reference是通过引用外部提供的dubbo服务,生成可供使用的service服务的,id属性自定义spring bean标识 供消费客户端服务使用的dubbo服务端和客户端的这两个属性定义没有相关性,通过接口...
2019-03-14 13:33:24
3181
原创 Jquery中json的使用
方式一①:在pom.xml中加入依赖: <!-- 映射JSON --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifac...
2019-03-12 10:54:00
1691
原创 tomcat虚拟路径
昨天在为毕设加一个头像小功能,因为涉及到图片的上传、保存与读取问题,而用户上传的图片又不可能保存在工程文件夹里,所以就由此牵出了使用不同开发工具配置tomcat虚拟路径的问题。为什么要配置虚拟路径 这是我工程目录:D:\IJWorkspace\MavenStudy 这是我存放头像文件的目录:F:\touxiang在代码里写&lt;img src="F:\touxiang\*.jpg"&g...
2019-03-06 10:10:52
422
原创 zookeeper与dubbo的关系
dubbo建议使用zookeeper作为服务的注册中心。zookeeper的作用zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是ip地址和服务名称的对应关系。当然也可以 通过硬编码的方式把这种对应关系在调用方业务代码中实现,但是如果提供服务的机器挂掉,调用者无法知晓,如果不更改代码,会继续请求挂掉的机器提供服务。zookeeper通过心...
2019-03-04 16:43:50
375
转载 什么时候使用CountDownLatch
正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点:CountDownLatch是什么?Count...
2019-03-04 15:44:58
307
原创 zookeeper原生API操作
/** * Zookeeper 学习 * watcher(事件监听器) * @author Kevin */public class ZookeeperBase { /** * zookeeper地址 */ static final String CONNECT_ADDR = "192.168.73.128:2181,192.168.73.131:...
2019-03-04 14:48:27
337
原创 zookeeper_ZKClient
操作zookeeper原生API过于繁琐。原生API: 不能递归创建:如若不存在“/local”,那么在直接创建"/local/tmp"则会报错。 不能递归删除:如若存在“/local/tmp”,那么在做删除"/local"时就会报错。 watch的监听是一次性的,只能手动将其设置为true才可以。在使用ZKClient在创建节点的时候,如若是递归创建,则不能为节点赋值。非递归创建:...
2019-03-04 14:43:14
293
原创 zookeeper初识
ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。ZooKeeper 一个最常...
2019-03-04 14:15:49
325
原创 dubbo初识
为什么用dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 **1,远程通讯:** 提供对多种基于长连接的NIO(java non-blocking IO,java非阻塞式IO)框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 **2,集群容错** 提供基于接...
2019-03-04 13:09:04
423
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人