PS:此文章为系列文章,建议从第一篇开始阅读. 在我们之前的文章中,我们当时获取到Token令牌时,此时的令牌时存储在内存中的,这样显然不利于我们程序的扩展,所以为了解决这个问题,官方给我们还提供了其它的方式来存储令牌,存储到数据库或者Redis中,下面我们就来看一看怎么实现. 不使用Jwt令牌的实现 存储到数据库中(JdbcTokenStore) 使用数据库存储方式之前,我们需要先准备好对应的表.Spring Security OAuth仓库可以找到相应的脚本:https://github.c…
写在前边 本文对Spring Security OAuth2的token使用Redis保存,相比JWT实现的token存储,Redis可以随时吊销access_token,并且Redis响应速度很快,没有加密解密的过程 本文源代码在redis-token-saved模块中,仓库地址:https://github.com/hellxz/spring-security-oauth2-learn 这里就不做测试了,仅做简记 代码层级 Maven依赖 <parent> <groupId>o…
序 Spring Security OAuth2的demo在前几篇文章中已经讲过了,在那些模式中使用的都是RemoteTokenService调用授权服务器来校验token,返回校验通过的用户信息供上下文中获取 这种方式会加重授权服务器的负载,你想啊,当用户没授权时候获取token得找授权服务器,有token了访问资源服务器还要访问授权服务器,相当于说每次请求都要访问授权服务器,这样对授权服务器的负载会很大 常规的方式有两种来解决这个问题: 使用JWT作为Token传递 使用Redis存储Tok…
在前一篇博文中,我们初步地了解了refresh token的用途——它是用于刷新access token的一种token,并且用简单的示例代码体验了一下获取refresh token并且用它刷新access token.在这篇博文中,我们来进一步探索refresh token. 之前只知道refresh token是用于刷新access token的,却不知道refresh token凭什么可以刷新access token?知其然,却不知其所以然. 这是由于之前没有发现refresh token…
一. mysql 数据库 1.安装方式 ①yum安装 ②源代码编译安装 ③rpm包安装 yum安装的前提条件,是准备好yum源,可以选择163源,清华源,阿里云源,等等等 .安装mariadb的yum源有俩,一个是阿里云的yum源,可能版本较低,并且软件包很小,功能很少 yum install mariadb-server mariadb -y 二个是mariadb官方的yum源 ,配置方式是什么?就是如何定制yum源? 方法:在/etc/yum.repos.d目录下,建立一个repo文件就是y…
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 之前我们为了保证数据库中的表是最新的,只是简单地在 onUpgrade()方法中删除掉了当前所有的表,然后强制重新执行了一遍 onCreate()方法.这种方式在产品的开发阶段确实可以用,但是当产品真正上线了之后就绝对不行了.想象以下场景,比如你编写的某个应用已经成功上线,并且还拥有了不错的下载量.现在由于添加新功能的原因,使得数据库也需要一起升级,然后用户更新了这个版本之后发现以前程序中存储的本地数据全部丢失了.…
转载原地址 http://www.bozhiyue.com/mianshiti/_net/2016/0728/314239.html (一) 为什么要用哈希函数来加密密码 如果你需要保存密码(比如网站用户的密码),你要考虑如何保护这些密码数据,象下面那样直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码. 解决的办法是将密码加密后再存储进数据库,比较常用的加密方法是使用哈希函数(Hash Function).哈希函数的具体定义,大家可以在网上或者相关书籍中查…
唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <数据(Data)> 了解有关数据部分.涉及存储及数据库的概念:知识与技能的层次(知道.理解),理论与实践的方面(原理). <数据模型>结构数据:关联分析.分类分析.聚类分析.非结构数据:文本分析.图形图像分析.音频视频分析.<数据技术>采集.存储.清洗.挖掘.视图.<数据计算>实时流处理计算.延迟批处理计算. <数据统计量>趋势升降(平均数…
转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素). List操作,redis中的List在在内存中按照一个name对应一个List来存储.如图: 二:列表常用操作 1)lpush(name,values)  在name对应的l…
上一篇博客中,Spring Security教程(一):初识Spring Security,我把用户信息和权限信息放到了xml文件中,这是为了演示如何使用最小的配置就可以使用Spring Security,而实际开发中,用户信息和权限信息通常是被保存在数据库中的,为此Spring Security也提供了通过数据库获得用户权限信息的方式.本教程将讲解使用数据库管理用户权限. 一.引入相关的jar包 这个例子用的是mysql数据库和c3p0开源的jdbc连接池,在项目的pom.xml中引入jar包…
前言: 服务器默认的session存放方式是file.当客户端发送请求带有PHPSESSID时是顺序的去比对session存储文件,如果有5000个session文件,那就有可能需要比对4998次那么效率是相对较低的.所以我们可以将session存储到数据库.redis或者memcache. 对于我个人理解,对于缓存的效率,由快到慢如下 redis.memcache(存在内存) file(存在文件) mysql(存在数据库) 存在内存中肯定访问的更快,所以就更改服务器配置将session存储在r…
什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命令并将响应发送回客户端. Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件.它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询,…
笔记-数据库-redis 1.      redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 strings,hashes,lists,sets,有序集合sorted sets . 数据库已经有很多了 ,db2,oracle,mysql,为什么还需要redis呢? 设计源自需求,redis的面对的需求是跨程序的内存级别的数据共享和管理,简单来说,有一小部分数据需要能够拥有内存速度级别的快速访问,又要…
首先观看视频简介 云数据库 Redis 版是一项易于部署和管理的按需数据库服务,与 Redis 协议兼容.云数据库 Redis 版通过从内存缓存中检索数据而提供高速数据读写功能,并通过同时使用内存和硬盘存储而确保数据持久性 — 特别适合于要求高性能的 Web 应用. 云数据库 Redis 版的 Key-Value 型存储服务支持多种数据类型,如字符串.列表.集合.有序集合.哈希表,并支持许多其他高级功能,如事务.消息订阅与发布 (Sub/Pub). 云数据库 Redis 版在云中提供有网络安全保…
Spring Security教程(二):自定义数据库查询   Spring Security自带的默认数据库存储用户和权限的数据,但是Spring Security默认提供的表结构太过简单了,其实就算默认提供的表结构很复杂,也不一定能满足项目对用户信息和权限信息管理的要求.那么接下来就讲解如何自定义数据库实现对用户信息和权限信息的管理. 一.自定义表结构 这里还是用的mysql数据库,所以pom.xml文件都不用修改.这里只要新建三张表即可,user表.role表.user_role表.其中u…
我们知道OAuth2的官方提供了四种令牌的获取,简化模式,授权码模式,密码模式,客户端模式.其中密码模式中仅仅支持我们通过用户名和密码的方式获取令牌,那么我们如何去实现一个我们自己的令牌获取的模式呢?下面我们将以用户名,密码,角色三个信息的方式来获取令牌. 在授权模式中,授权模式的核心接口是 TokenGranter ,他拥有一个抽象实现类 AbstractTokenGranter ,我们需要自定义新的 grant type ,就再写一个他的子类即可,如下: public class Accou…
公众号链接 最高级的红酒,一定要掺上雪碧才好喝. 基于这样的品味,我设计出了一套在经典nosql数据库redis上实现SQL引擎的方法.既然redis号称nosql,而我偏要把SQL加到redis上,于是这个技术方案取名为[YesSql]. 1.在redis上实现SQL查询的技术基础 redis上可以执行lua.整个SQL引擎就是在lua上解析SQL语句,执行,并返回结果. lua有很好的正则表达式引擎,因此解析SQL语法变得简单. redis提供map, zset这样的数据结构,很容易实现列存…
一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇文章中我们将会简单介绍Redis的入门,数据类型,常用命令以及如何在Java中操作Reids元素等内容 本篇内容属于<瑞吉外卖>的知识科普部分,有兴趣可以查看一下<瑞吉外卖>的相关文章内容 Redis入门 在下面我们将会介绍Redis的简介以及Redis的下载和相关配置 Redis简介…
//将购物车产品加入到cookie中,方式同浏览记录.Java实现购物车,方式一(简易版):存储在session中.这种方式实现还不严谨,大家看的时候看思路即可.(1). JSP页面中,选择某一款产品,将产品id一并传递给Servlet进行接收.```<a href="<%=path %>/servlet/do_home_control?param=addShoppingCar&ep_id=${p.ep_id}">放入购物车</a>```(2…
原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可以先使用delete()方法将Book表中的数据删除, 然后再使用insert()方法将新的数据添加到表中.我们要保证的是,删除旧数据和添加新数据的操作必须一起完成,否则就还要继续保留原来的旧数据.                 Button replaceData = (Button) find…
原文链接:http://www.orlion.ga/603/ 一.创建数据库 Android为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类, 借助这个类就可以非常简单地对数据库进行创建和升级. SQLiteOpenHelper是一个抽象类,其中有两个抽象方法分别是onCreate()和onUpgrade(),分别在这两个方法中实现创建和升级数据库的逻辑 SQLiteOpenHelper还有两个十分重要的实例方法,getReadableDatabase(…
今天在将一个 SQL Server 2000 数据库附加到 SQL Server 2005时出现如下的错误:附加数据库对于服务器失败(Microsoft.SqlServer.Smo),无法升级数据库test,因为它是只读的,或者具有只读文件.请将数据库或文件设为可写,然后重新运行恢复操作. (Microsoft SQL Server,错误: 3415) 查看了数据库文件,他们并没有只读属性,在 SQL Server 2000 中附加都是一切正常的啊. 经查阅资料,发现并不是文件只读的问题,严格说…
假如我们已经创建好了一个数据库,随着功能需求的增加,想在数据库中再添加一个表,如果直接在之前的代码中插入一个表,会发现创建表失败,这是因为该数据库已经存在.该如何解决呢? 1.卸载程序,重新编译安装. 这是一个最简单直接的方法,但是只是为了多一个表就如此“暴力”,显得十分极端,也不恰当. 2.升级数据库 修改代码 public class MyDatabaseHelper extends SQLiteOpenHelper { …… @Override public void onUpgrade(…
使用SQL2012附加一个数据库时报出了以下错误:“无法升级数据库....因为此版本的 SQL Server 不支持该数据库的非发布版本(539).不能打开与此版本的 sqlserver.exe 不兼容的数据库.必须重新创建该数据库.” 详细截图如下: 经过检索得知:原来539 是Sql Server2000数据库的内部版本号,也就是说要附加的数据库文件是由Sql Server 2000创建的,但是我们知道Sql Server 2012 数据库是不兼容Sql Server 2000数据库的.如下…
前言 最近在GitHub上看了一份关于基于runtime封装的对象存储型数据库的开源代码,觉得非常值得分享记录一下,在IOS中对数据库的操作一般通过CoreData和SQLite,CoreData 虽然能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象,期间不需要编写SQL语句,但使用起来并不是那么方便,而SQLite则需要用户编写相应的数据库语句,看起来不是很美观,所以大家一般都会将其进行封装,让其使用起来更加方便,而LHDB就是建立在SQLi…
图片以二进制存储于数据库表中.在显示RDLC报表时,把图片呈现出来. 好吧. 把存储过程写好: CREATE PROCEDURE [dbo].[usp_File_Select] AS SELECT [Afd_nbr],[Picture],[PictureType],[FileExtension] FROM [dbo].[ApiFileDemo] GO Source Code 在网站中,创建一个实体,是程序从数据库获取数据: public DataTable GetFiles() { sp.Con…
方案1:修改数据库编码 为什么我们设置表的的字符类型为utf8却不能存放emoji呢?原来utf8可能是2或3或4个字节,而mysql的utf8是3个字节,存放一个emoji是需要4个字节的,自然不够.Mysql数据库在5.5.3之后开始支持utf8mb4字符集,所以mysql版本是5.5.3+的都可以设置让数据库存储Emoji表情,如果你的应用有移动端的,最好一开始设计数据库的时候就使用utf8mb4字符集,当然没用的也可以通过如下方式修改: 编辑mysql配置文件vim /etc/my.cn…
Oracle对自己产品也一样,对于自己的产品在不同的时期,支持的强度是不一样的.大体分来,支持的强度分为三个级别:Premier Support(最高优先级的支持),Extended Support(中等优先级的支持),Sustaining Support(最低优先级的支持) 1.从产品发布为期5年的标准支持服务期-Premier support 2.随后为期3年的延展支持服务期---------extended support 3.接下来进入持久支持服务期--------------susta…
ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu…
xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android…