自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixiaohuai的博客

任何质变都来自于量变的积累。

  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 分布式文件存储FastDFS之安装Nginx实现文件访问

目录一、概述二、安装Nginx一、概述前面一篇文章已经成功实现了文件上传到Storage中,但我们暂时还不能下载文件,需要安装Nginx作为服务器以支持Http方式访问文件。Nginx只需要安装到StorageServer所在的服务器即可,用于访问文件。二、安装Nginx【a】安装nginx所需环境安装gcc-c++、PCRE pcre-devel、zlib、OpenSSL由于上一篇文章已经安装过gcc-c++了,这里无需重复安装。[root@localho..

2020-11-30 17:10:34 60

原创 分布式文件存储FastDFS之环境搭建篇

目录一、概述二、下载安装 libfastcommon三、下载安装FastDFS四、配置FastDFS跟踪器(Tracker)五、配置 FastDFS 存储 (Storage)六、文件上传测试七、总结一、概述前面一篇文章我们对FastDFS进行了详细的介绍,相信小伙伴们对分布式文件存储有了进一步认识。本篇文章我们将在Linux环境下搭建一个FastDFS环境。二、下载安装 libfastcommonlibfastcommon是从 FastDFS 和 FastDHT

2020-11-30 16:56:35 57

原创 分布式文件存储FastDFS之基础知识篇

一、分布式文件系统分布式文件系统 (Distributed File System) 是一个软件/软件服务器,这个软件可以用来管理文件。但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节点上,这些服务器节点通过网络相连构成一个庞大的文件存储服务器集群,这些服务器都用于存储文件资源,通过分布式文件系统来管理这些服务器上的文件。常见的分布式文件系统有:FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS等。二、FastDFS简介

2020-11-24 16:12:52 95

原创 【Shiro第九篇】SpringBoot + Shiro整合JWT

一、概述JWT,即Json Web Token,JWT作为当下比较流行的身份认证方式之一主要的特点是无状态,把信息放在客户端,服务器端不需要保存session,适合在分布式环境下使用。传统的Token认证方式:用户登录,服务器端返回Token,并将Token保存在服务器端,以后用户再次访问时,需携带Token,服务器端获取Token后,再去数据库中获取Token进行校验。 基于JWTToken认证方式:用户登录,服务器端给用户返回一个Token,但是服务器端不保存,以后用户再次访问时,需要携带To

2020-11-21 17:07:01 91

原创 【Shiro第八篇】SpringBoot + Shiro使用Shiro标签

一、概述前面的文章总结了Shiro如何实现用户授权功能,并且当用户访问未授权的资源时,会跳转到未授权页面,在实际项目中,一般如果当前用户登录后,针对某个资源,如果没有授权,那么这些资源压根就不应该展示出来,所以Shiro提供了标签用于控制这些资源的显示隐藏。实际上Thymeleaf官方并没有提供Shiro的标签,我们需要引入第三方实现thymeleaf-extras-shiro。接下来就通过案例说明Thymeleaf整合Shiro标签实现资源的控制。二、Shiro标签的使用【a】引入thym

2020-11-21 11:50:59 125

原创 【Shiro第七篇】SpringBoot + Shiro实现会话管理

一、概述Shiro 提供了完整的企业级会话管理功能,不依赖于底层容器(如 web 容器 tomcat),不管 JavaSE 还是 JavaEE 环境都可以使用,提供了会话管理、会话事件监听、会话存储 / 持久化、容器无关的集群、失效 / 过期支持、对 Web 的透明支持、SSO 单点登录的支持等特性,即直接使用 Shiro 的会话管理可以直接替换如 Web 容器的会话管理。二、重要概念会话所谓会话,即用户访问应用时保持的连接关系,在多次交互中应用能够识别出当前访问的用户是谁,且可以在多次交互中

2020-11-21 10:45:19 131

原创 【Shiro第六篇】SpringBoot + Shiro集成缓存功能

一、概述Shiro 提供了类似于 Spring 的 Cache 抽象,即 Shiro 本身不实现 Cache,但是对 Cache 进行了又抽象,方便更换不同的底层 Cache 实现。Shiro 提供的 Cache 接口:public interface Cache<K, V> { //根据Key获取缓存中的值 public V get(K key) throws CacheException; //往缓存中放入key-value,返回缓存中之前的值

2020-11-20 21:31:05 65

原创 【Shiro第五篇】SpringBoot + Shiro实现用户授权功能

一、概述在前面一篇文章:SpringBoot + Shiro实现用户身份认证功能中,我们的自定义Realm继承了AuthenticatingRealm,并实现了doGetAuthenticationInfo()方法完成了用户认证操作,但是AuthenticatingRealm仅仅只是提供了用户认证的功能,在实际工作中,一般不使用AuthenticatingRealm抽象类,通常我们都使用AuthorizingRealm抽象类:public abstract class AuthorizingR

2020-11-20 10:12:51 209

原创 【Shiro第四篇】SpringBoot + Shiro实现记住登录状态

一、概述Shiro 提供了记住我(RememberMe)的功能,比如访问如淘宝等一些网站时,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问,基本流程如下:首先在登录页面选中 RememberMe 然后登录成功;如果是浏览器登录,一般会把 RememberMe 的 Cookie 写到客户端并保存下来; 关闭浏览器再重新打开;会发现浏览器还是记住你的; 访问一般的网页服务器端还是知道你是谁,且能正常访问; 但是比如我们访问淘宝时,如果要查看我的订单或进行支付时,此时还是需要

2020-11-20 09:09:47 110

原创 【Shiro第三篇】SpringBoot + Shiro实现用户认证(密码加密)

一、概述前面一篇文章我们通过示例详细说明了Shiro如何进行用户身份认证的,但是我们是比对的明文密码,本篇文章将总结一下Shiro的加密功能,实现密文的比对。如果还没有阅读前面一篇Shiro实现用户身份认证的,可以通过下面的链接进行阅读:https://weishihuai.blog.csdn.net/article/details/109779347二、调整Shiro全局配置类【a】Shiro全局配置类中注入HashedCredentialsMatcher密码匹配凭证管理器/**

2020-11-19 14:24:33 62

原创 【Shiro第二篇】SpringBoot + Shiro实现用户身份认证功能

一、概述前面一篇文章,我们已经总结了Shiro相关的一些概念以及架构知识,相信小伙伴们对Shiro安全框架都有了一定的认识。本篇文章我们将通过示例详细说明在日常工作中常见的-----用户身份认证功能。什么是身份认证呢,简单理解,就是在应用中谁能证明他就是他本人。一般提供如他们的身份 ID 一些标识信息来表明他就是他本人,如提供身份证,用户名 / 密码来证明。在 shiro 中,用户需要提供principals(身份)和credentials(证明)给 shiro,从而应用能验证用户身份:...

2020-11-18 20:04:10 133

原创 【Shiro第一篇】 Shiro权限框架简介

一、Shiro概述Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。并且相对于其他安全框架,如Spring Security等,Shiro 要简单的多。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shir

2020-11-18 20:02:43 54

原创 Redis为什么这么快?

一、Redis为什么这么快?Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。以下几点造就了Redis非常快的特点:单线程不用处理上下文的切换,cpu利用率会比多线程高;采用单线程避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU。不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为出现死锁而导致的性能消耗。数据结构简单,操作节省时间;数据结构简单,对数据操作也

2020-11-18 09:41:03 76

原创 数据结构之红黑树插入案例详解

一、概述前面一篇文章介绍了红黑树插入的几种情况以及怎么自平衡操作,但是理论知识比较多,不好理解,今天我们用一个简单的示例总结一下前面的一些自平衡操作,包括变色、左旋、右旋等。二、红黑树插入案例【a】首先我们先准备一颗已经平衡的红黑树,如下图:

2020-11-17 20:19:58 71

原创 数据结构之红黑树插入详解

一、概述红黑树是一颗二叉平衡树,并且查找不会破坏树的平衡,所以查找跟二叉平衡树的查找没有什么区别,可以看前面的文章进行学习,这里不再过多阐述。本节我们主要总结红黑树插入相关的知识。二、红黑树插入红黑树的插入包含两个步骤:在树中查找插入的位置;插入后自平衡;查找流程:从根节点开始查找;若根节点为空,那么插入节点作为根节点,结束;若根节点不为空,那么把根节点作为当前节点;若当前节点为null,返回当前节点的父节点,结束;若当前节点key等于查找key,那么该key所在节点就是插入节点

2020-11-16 20:44:25 87

原创 数据库索引是什么,它的作用是什么?

一、概述数据库索引是为了提高查询速度而对表字段附加的一种标识。简单来说,索引其实是一种数据结构。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。首先我们需要明白为什么索引会提高查询速度,数据库在执行一条SQL语句的时候,默认扫描方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历

2020-11-14 21:02:29 174

原创 数据结构之红黑树简介

一、红黑树定义红黑树是二叉查找树,二叉查找树这一数据结构并不难,而红黑树之所以难是难在它是自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时,需要重新自处理达到平衡状态。红黑树是一种含有红色和黑色节点并能自平衡的二叉查找树,红黑树和其他二叉查找树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的性质,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的:它可以在 O(log n) 时间内做查找,插入和删除,这里的 n 是树中元素的

2020-11-14 08:26:47 80

原创 数据结构之B+树删除详解

一、概述B+树的删除规则:下面我们以上面插入构建的B+树做一些删除操作。【a】删除前B+树结构

2020-11-06 20:00:07 126

原创 数据结构之B+树插入详解

一、简介B+树是B树的一种变形形式,一颗B+树包含根节点、内部节点和叶子节点,B+树上的叶子节点存储关键字以及相应记录的地址,叶子节点以上各层作为索引使用。一棵m阶的B+树定义如下:1)根结点最少包含1个关键字个数,最多包含m-1个关键字;2)B+树内部结点不保存数据,只用于索引,所有数据(或者说记录)都保存在叶子结点中;3)内部结点最少有ceil(m / 2) - 1个关键字,最多有m-1个关键字(或者说内部结点最多有m个子树);4)内部结点中的key都按照从小到大的顺序排列,对于内部结点

2020-11-06 19:57:05 158

zipkin-server jar.zip

spring cloud zipkin服务链路跟踪server相关jar包,下载完成之后使用java -jar zipkin-server-2.12.9-exec.jar方式运行,就能启动zipkin-server,不建议自己搭建zipkin-server

2020-08-29

空空如也

空空如也

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

TA关注的人 TA的粉丝

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