Shiro @RequiresPermissions是如何运转的

参考大佬博文:https://blog.csdn.net/medelia/article/details/86692521最近SpringBoot项目安全策略是采用比较流行的shiro框架,是我做的第一个springBoot项目,也是第一次使用shiro。废话不多说,框架是公司大佬设计的:在查看日志方法上面加了RequiresPermissions。那么只有当用户拥有这个sys:log:content字符串时才能访问此方法。那怎么知道用户拥有这个字符串呢?????自己必须定义一个方法.
分类: 其他 发布时间: 03-29 10:23 阅读次数: 0

外部无法捕捉Realm的doGetAuthenticationInfo方法抛出的异常

shiro权限框架,用户登录方法的subject.login(token)会进入自定义的UserNamePasswordRealm类的doGetAuthenticationInfo身份验证方法,通常情况,doGetAuthenticationInfo写法如下: /** * 登录认证 subject.login()登录时调用 * @param authenticationToken * @return * @throws AuthenticationExc
分类: 其他 发布时间: 03-29 10:23 阅读次数: 0

xxl-job 定时任务简单使用

相关博文连接:https://blog.csdn.net/jzx937345232/article/details/99292049由于之前一直使用的是Quartz实现定时任务,本次项目中使用了xxl-job,之前没有接触过,就上网了解了下,入门还是比较简单,很快可以上手。xxl-job 定时任务分析:XXL-JOB是一个轻量级分布式任务调度平台,调度采用中心式设计,“调度中心”基于集群Quartz实现并支持集群部署。任务分布式执行,任务"执行器"支持集群部署。xxl-job 设计分两个模块
分类: 其他 发布时间: 03-29 10:23 阅读次数: 0

面试必备:常用的设计模式总结

设计模式是程序员在设计过程中多年的最佳实践沉淀,可以提高工程师之间研发质量,沟通效率。我在X游戏接入平台中使用了模板方法模式,场景:研发的游戏需要推向不同的渠道,每个渠道的用户登录和充值接口的实现都不太一样,而X游戏平台作为一个游戏接入不同渠道的服务平台需要保证游戏接入的一致性,以及消除到不同渠道的差异性。使用模板方法的好处:固定了游戏接入的流程:都有登录,充值接入; 解耦了协议和实现:每个渠道按照对应的对接协议差别的接入,在上层抹掉差差异。 扩展性更好;可以轻松的增加新渠道; 可以更灵活
分类: 其他 发布时间: 03-29 10:22 阅读次数: 0

RabbitMQ整合SpringBoot

RabbitMQ:消息发送确认 与 消息接收确认(ACK):https://www.jianshu.com/p/2c5eebfd0e95springboot2.3.1整合RabbitMQ多种工作模式 发送确认,手动应答:https://blog.csdn.net/leilei1366615/article/details/107373033/之前一直以为只有一个消息接受确认,看到上篇博文让我茅塞顿开,还分一个发送确认;其中消息接受确认可以分为手工和自动。1.RabbitmqConfig.ja
分类: 其他 发布时间: 03-29 10:22 阅读次数: 0

使用BeanUtils.describe将对象转换成Map时,数组字段的值只获取到第一个元素

情景:在开发过程中,需要将两个对象实体的值进行对比处理:使用BeanUtils.describe将两个对象转换成Map进行遍历对比数据,注意:BeanUtils是org.apache.commons.beanutils下的问题:发现BeanUtils.describe转换后的Map的泛型是<String,String>此时获取到的字段如果是数组类型的话只获取了第一个元素解决:使用PropertyUtils.describe方法的到的Map的泛型是<String,Object
分类: 其他 发布时间: 03-29 10:22 阅读次数: 0

Sql分组查询,如何把纵向显示的结果变成横向显示

建库并录入数据:create table BookLibary([图书馆] varchar(10),[科目] varchar(10),[数量] int)insert into BookLibaryselect 'A','语文',5union all select 'B','数学',6union all select 'C','英语',3union all select 'B','语文',4union all select 'A','数学',3表数据:图书馆 科目...
分类: 其他 发布时间: 03-29 10:22 阅读次数: 0

常用类(StringBuffer/System/RunTime/Date)

一、StringBuffer假拼接public class Demo { public static void main(String[] args) { //字符串 String是一个不可改变的量 String str = "听闻远方有你"; str += "动身跋涉千里"; str += "我吹过你吹过的风"; str += "这算不算相拥"; /* * 上面到底有几个字符串??
分类: 其他 发布时间: 03-29 10:20 阅读次数: 0

【每日蓝桥】43、一六年省赛Java组真题“压缩变换”

你好呀,我是灰小猿,一个超会写bug的程序猿!欢迎大家关注我的专栏“每日蓝桥”,该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想、数据结构等内容,帮助大家学习到更多的知识和技术!标题:压缩变换小明最近在研究压缩算法.他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比。然而,要使数值很小是一个挑战.最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面出现的数字很大可能是刚出现过不久的数字.对于这种特殊的序列,小明准备对序列
分类: 其他 发布时间: 03-29 10:20 阅读次数: 0

【每日蓝桥】44、一七年省赛Java组真题“纸牌三角形”

你好呀,我是灰小猿,一个超会写bug的程序猿!欢迎大家关注我的专栏“每日蓝桥”,该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想、数据结构等内容,帮助大家学习到更多的知识和技术!标题:纸牌三角形A,2,3,4,5,6,7,8,9共9张纸牌排成-一个正三角形(A按1计算).要求每个边的和相等.下图就是- -种排法(如有对齐问题,参看p1.png).这样的排法可能会有很多.如果考虑旋转、镜像后相同的算同一种,- -共有多少种不同的排法呢?请你计算
分类: 其他 发布时间: 03-29 10:20 阅读次数: 0

【每日蓝桥】45、一七年省赛Java组真题“承压计算”

你好呀,我是灰小猿,一个超会写bug的程序猿!欢迎大家关注我的专栏“每日蓝桥”,该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想、数据结构等内容,帮助大家学习到更多的知识和技术!标题:承压计算X星球的高科技实验室中整齐地堆放着某批珍贵金属原料.每块金属原料的外形、尺寸完全- -致,但重量不同.金属材料被严格地堆放成金字塔形.其中的数字代表金属块的重量(计量单位较大).最下一层的X代表30台极高精度的电子秤.假设每块原料的重量都十分精确地平
分类: 其他 发布时间: 03-29 10:20 阅读次数: 0

【每日蓝桥】46、一七年省赛Java组真题“魔方状态”

你好呀,我是灰小猿,一个超会写bug的程序猿!欢迎大家关注我的专栏“每日蓝桥”,该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想、数据结构等内容,帮助大家学习到更多的知识和技术!标题:魔方状态二阶魔方就是只有2层的魔方,只由8个小块组成.如图pl.png所示.小明很淘气,他只喜欢3种颜色,所有把家里的二阶魔方重新涂了颜色,如下:前面:橙色右面:绿色上面:黄色左面:绿色下面:橙色后面:黄色请你计算一下,这样的魔方被打乱后,一
分类: 其他 发布时间: 03-29 10:20 阅读次数: 0

MySQL5.7数据库的安装与配置

Windows10下安装MySQL5.7首先我们需要获取到MySQL的安装包,这里推荐安装的是MySQL5.7的解压缩版。百度搜索MySQL找到MySQL的官方网站,下载开发工具还是从官网下载的好,原因吗…不多说了…这里给大家准备好MySQL5.7的下载地址,因为刚刚推出了新的MySQL8。稳定性有待市场验证,不考虑这么高的版本,不过据MySQL官方文档介绍,速度是MySQL5.7的2倍,这个听起来挺吓人的~~~MySQL5.7的下载地址:https://dev.mysql.com/downloads
分类: 其他 发布时间: 03-29 10:19 阅读次数: 0

利用pip安装Django

**利用pip安装Django**对于Django的安装,建议采用pip包管理系统这一方法。在shell提示符下运行以下命令,并利用pip安装Django。pip install Django==3.1.2 你也可以选择其他版本,注意:不同版本,里面的方法会有所变动安装好后,Django将被安装于虚拟环境下的site-packages/目录下。检测Django是否已经安装成功。针对于此,可在终端上运行python,导入Django并检查版本>>> import dja
分类: 其他 发布时间: 03-29 10:19 阅读次数: 0

运行Django开发服务器

Django中包含了轻量级的Web服务器,并可快速运行代码,且无需花费额外的时间配置产品服务。当运行Django开发服务器时,会不断检查代码中的更改内容,从而不必在代码更改后手动重新进行加载,但是如果你添加了新的文件,需要手动重启,否则Django无法识别。运行Django开发服务器:在项目的更文件夹下输入下列命令,即可启动开发服务器:python manage.py runserver对应的结果如下:System check identified no issues (0 silenced).
分类: 其他 发布时间: 03-29 10:19 阅读次数: 0

有关Django项目设置中的setting.py文件主要配置简述

setting.py文件中涵盖了Django所包含的多项设置,但仅是Django设置的一部分内容。读者可以访问 https:docs.djangoproject.com/en/3.0/ref/settings/查看全部设置项和默认值。下列设置项应格外重视:DEBUG:定义为一个布尔值,表示开启/禁用当前项目的调试模式。如果DEBUG为True,当应用程序抛出未捕获异常时,Django将显示详细的错误页面。如果要发布项目上时,需将其设置为False,以免暴露某些与产品相关的敏感参数。ALLOWED_HO
分类: 其他 发布时间: 03-29 10:19 阅读次数: 0

Django中项目和应用程序的区别及如何创建应用程序

在Django中,项目:被视为基于某些设置项的Django安装结果;应用程序:表示为模型、视图、模板、以及URL的组合;应用程序与框架进行交互,提供特定的功能,并可在不同的项目中加以复用。我们可以将项目视为一个站点,其中包含了多个应用程序,例如:博客、wiki或者论坛等,同时还可以被其他项目予以复用。创建应用程序在项目的根目录中,可运行下列命令:python manage.py startapp blog这将生成该应用程序的基本结构,如下所示:上述文件具体解释如下:admin.py:
分类: 其他 发布时间: 03-29 10:19 阅读次数: 0

激活django应用程序

为了使Django跟踪应用程序,同时可针对其模型创建数据表,我们需要对其予以激活。对此,可编辑settings.py文件,并向INSTALLED_APPS设置中加入xx.apps.xxxxConfig。其中:xx:指的是 项目下的应用名(通过startapp命令建的那个名字),xxxx:指的是 项目名,如下所示:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.con
分类: 其他 发布时间: 03-29 10:19 阅读次数: 0

Django设置并使用迁移方案

在Django中编写好models.py文件后,根据所创建的模型类,我们需要对此定义数据库表。Django配置了迁移系统,跟踪模型产生的变化内容,并将其传送至数据库中。相应的,migrate命令可针对 INSTALLED_APPS 列出的全部应用程序执行迁移操作并同步对应的数据库(其中包含了当前模型和现有的迁移内容)。首先需要针对我们的模型创建初始迁移。在项目的根目录中,可运行下列命令(makemigrations最好后面跟个应用名,不跟也没关系):python manage.py makemigrat
分类: 其他 发布时间: 03-29 10:19 阅读次数: 0

Django针对模型创建管理站点

根据各位曾定义的模型,我们来创建简单的管理站点并对应用进行适当管理。Django包含了内建的管理接口,这对于编辑内容来说十分有用。通过读取模型元数据,同时提供针对编辑内容的产品接口,Django可自动构建管理站点。用户可直接对其加以使用,并配置模型的显示方式。django.contrib.admin 已包含与INSTALLED_APPS设置中,因而无须对其予以添加。创建超级用户首先需要创建一个用户并管理站点。对此,可运行下列命令:python manage.py createsuperuser
分类: 其他 发布时间: 03-29 10:19 阅读次数: 0