SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (一) 简介与配置

项目Github地址: https://github.com/baiye21/ShiroDemo SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (一) 简介与配置 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (二) 认证 SpringBoot 基于Shiro + Jwt + Redis的用户权限管理 (三) 鉴权 一,大体功能 1.登录成功返回access_token 用户通过用户密码进行login,验证成功后生成一个access_token返回给前端,之后的请求都需要将access_token放在Request Header部Authorization字段中,才能正常访问。 2.后续请求需携带access_token 将自定义的JwtFilter拦截器加入到了Shiro的过滤器中,没有在过滤链中的请求URL,进入拦截器,获取请求Header的access_token,进行shiro的token登录认证授权。 3.Redis保存refresh_token 生成access_token时,有效载荷中加入当前时间戳与用户id,同时往Redis插入一条key为固定前缀加用户id,value为时间戳的refresh_token的记录,过期时间要比access_token长,当发给用户的access_token过期后,查找refresh_token记录,若refresh_token有效,则重新生成access_token返回给前端,之后请求需要携带新的access_token,从而实现access_token的自动刷新。 4.多个Realm 通过继承ModularRealmAuthenticator,实现shiro的多realm认证,正常登录使用PasswordRealm,Token认证使用DemoRealm授权,还可以扩展追加其他方式的认证Realm。 二,Shiro简介 1.ShiroAPI Shiro不太了解的话,建议看 Shiro官方API ,至少红色框出来的部分耐心浏览一遍,将会对Shiro的认证与鉴权流程有一个大概的了解,这里把比较重要的组成图,认证和授权流程图截取出来放在后面了。 2.Shiro主要组成 Authentication : 认证Authorization : 授权Session Management : session 管理 Cryptography : 密码匹配 3.Authentication 认证流程(doGetAuthenticationInfo) 4.Authorization 授权流程(doGetAuthorizationInfo ) 三,项目介绍 一,测试数据库表, 项目只是演示Demo,就不弄用户权限表,角色表之类的了,一张表搞定。表结构如下 CREATE TABLE `m_user` ( `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', `user_id` varchar(20) NOT NULL COMMENT '用户ID', `user_name` varchar(20) NOT NULL COMMENT '用户名', `pass_word` varchar(255) NOT NULL COMMENT '密码', `account_type` char(1) NOT NULL COMMENT '账号类型', `permission_type` varchar(3) NOT NULL COMMENT '权限类型', `del_flg` char(1) DEFAULT '0' COMMENT '删除flag', `reg_account` varchar(20) DEFAULT NULL COMMENT '登录者', `reg_time` datetime DEFAULT NULL COMMENT '登录时间', `upd_account` varchar(20) DEFAULT NULL COMMENT '更新者', `upd_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表' 二,项目结构 项目结构如下图,

普通for,增强for,forEach,stream.forEach四种遍历方法

java8新出的循环方式,在网上有大量的道友说用流的方式效率反而更低了。 大量的结论表明,这种方式只是语法糖(for-forEach-stream三种遍历方法执行效率比较与选用思考 - ZZY1078689276的专栏 - CSDN博客 https://blog.csdn.net/ZZY1078689276/article/details/79430772)这篇文章一样的内容看了不止一次,我都不知道谁先写的。。 不过,耳听为虚,眼见为实,上代码亲自试验: public static void main(String[] args) { // 测试源 List sourceList = new ArrayList<>(); for (int i = 0;i<10;i++) { sourceList.add(“第” + i + “条数据”); } System.out.println(“数据条数:” + sourceList.size()); long a1=System.currentTimeMillis(); for (int i = 0;i < sourceList.size();i++) doSome(); long a2=System.currentTimeMillis(); System.out.println(“普通for循环用时:” + (a2-a1)); long b1=System.currentTimeMillis(); for (String t:sourceList) doSome(); long b2=System.currentTimeMillis(); System.out.println(“增强for循环用时:” + (b2-b1)); long c1=System.currentTimeMillis(); sourceList.forEach((t)-> doSome()); long c2=System.currentTimeMillis(); System.out.println(“forEach循环用时:” + (c2-c1));

Flutter bugly native崩溃-ALooper_pollOnce

错误日志 #00 pc 000000000006f06c /apex/com.android.runtime/lib64/bionic/libc.so (abort+160) #01 pc 00000000002c0e1c /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #02 pc 00000000002e1238 /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #03 pc 00000000002e1b4c /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #04 pc 00000000002e31fc /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #05 pc 0000000000318ff8 /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #06 pc 000000000030b8a0 /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #07 pc 0000000000311208 /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #08 pc 00000000002e2584 /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #09 pc 00000000002e49ec /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #10 pc 0000000000017d8c /system/lib64/libutils.so (_ZN7android6Looper9pollInnerEi+856) #11 pc 0000000000017994 /system/lib64/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+56) #12 pc 0000000000013684 /system/lib64/libandroid.so (ALooper_pollOnce+96) #13 pc 00000000002e4afc /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #14 pc 00000000002e1884 /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #15 pc 00000000002e359c /data/app/com.jancsinn.label-RzHisDk1xqVVsQQ3ZRWQMQ==/lib/arm64/libflutter.so #16 pc 00000000000ce1b0 /apex/com.

计算机应用实习大纲,最新计算机应用实习目的

下面应届毕业生求职网为大家提供了最新计算机应用实习目的,仅供参考,欢迎浏览: 一、 实习目的 计算机应用实习一般安排在短学期进行,是理论联系实际的重要实践性教学环节。 通过计算机应用实习,了解计算机的一些基本软件,例如Microsoft Word 2003,了解Word 的处理方法,熟悉对的排版工作,可以很好的对一篇文章进行漂亮的排版。熟悉掌握Excel 的制作,学会对一些表格、函数、复杂图像的绘制。可以很好的插入所需的图像。要很好的掌握它们的功能。同时加强对PPT的制作,可以很好的制作一个漂亮的、完美的、所需的PPT。培养处理一些学习中遇到的问题的解答能力。 同时,巩固有关计算机软件的知识,扩大知识面,培养和提高发现问题、认识问题、分析问题及解决问题的能力,进行从理论到实践,再从实践到理论的过程。提高个人的综合素质和解决实际困难的能力。为后续有关计算机课程的学习奠定基础。 二、 实习要求 1实习期间,听从老师的安排和指导。 2要在规定的时间,到达实习目的,不可以迟到,早退,或者不去的。 3实习期间,不允许穿拖鞋,衣着要整洁,在机房不可乱扔垃圾,乱吐痰,遵守机房的规章制度。不可违纪。 4在实习期间,电脑不可以随便整治,按照老师的要求好好的完成作业。 5最后的实习日志,要按照老师和实习大纲的要求,完成所有的任务工作,并且要按时要实习日志和实习报告。 三、 实习时间与安排 7月18~19日,进行Word 的学习,对文章进行排版。 7月20~21日,进行对Excel 的学习,对表格进行输入,和Word 编辑器的练习。图像绘制和图标的插入。 7月22日,对PPT进行制作。 四、 实习内容 计算机Word 的实习 今天下午老师带领我们大家,进行对Word 练习和熟悉。首先对文章进行排版,在老师的要求大家学习排版。并且对文章的页眉和页脚进行设置。还学习在指定区域插入所需的截图,对数字的上下标进行设置。再次利用软件盘对一些常见的符号进行输入。同时学习文本框的插入和应用。段落的缩进和悬挂进行设置。学会对文章的目录进行设置,并可以很好的排版,达到老师的要求。 再次就是利用Word 中的公式编辑对一些常见的公式和符号进行输入,并了解个公式的含义,加深理解个功能键,于此,进行函数图形的插入,学习函数图形的输入。 计算机Excel 实习 这两天主要学习对表格的输入,和一些图表的插入。并且会对指定区域的数字进行加法、减法、和求平均值,或者其他的一些常见要求。并且学习表格颜色的填充,或者数字降序或者顺序排列功能。学习了对常见三角函数图像的绘制工作,还有对文本框的插入,可以插入数字,也可以插入图像。还学习了表格的合并和等行、等列的插入。或在指定位置插入所需的表格。同时学会如何设置表格的边框和底纹。 学习制作PPT 在老师的指导下,今天我们学习幻灯片制作和美化。学习对幻灯片中文字美化,并且学会如何丰富幻灯片。对指定的幻灯片进行动画的处理,或者超链接的插入。对一些文字的插入顺序进行处理。 五、 实习的体会和收获 这次计算机实习实习丰富了我在计算机方面的知识,熟悉了对Microsoft Office 中的Word、Excel和PPT应用,加深了对其功能得了解,这使我向更深的层次迈进,对我在今后的社会当中立足有一定的促进作用,但我也认识到,要想做好这方面的工作单靠这这几天的实习是不行的,还需要我在平时的学习和工作中一点一点的积累,不断丰富自己的经验才行。我面前的路还是很漫长的,需要不断的努力和奋斗才能真正地走好。 我了解到在学习中老师不肯能把所有的东西都教会你,在学校中老师只是大概提了一些的东西甚至一点都没有提到的知识在做项目的时候却用到了。就需要你快速的学习能力,接受能力,并且把所学到的东西快速的运用到实践中去。 实践,就是把我们在学校所学到的理论知识,运用到客观实际中去,使自己所学的理论知识有用武之地。只学习不实践,那么所学就等于零。理论应该与实践相结合。而另一方面,实践可以为以后找工作打下基础。通过,,这段时间的实习,我学到了一些在课堂上学不到的东西。因为在这里身处的环境不同,所接触的人与事也不相同,从中学到的东西自然就不一样了。要学会在实践中学习,从学习中实践。这样对以后的学习和工作很好的指导意义,也为以后做了很好的准备。 我通过,,这次为时几个月的实践,从另一个侧面检验了自己的各方面的情况,培养了自己发现问题、分析问题、解决问题的能力和与人交往的能力;同时也发现一些了自己的不足,使我在以后的学习中不断的弥补和提高。可以说,这次实践让我是“受益匪浅”。

python基础教程:运算符

逻辑运算符 not and or and 示列 h= 10 and 3 > 1 #h = 10 and True (>运算优先级高于and or not)---> 10 and True 返回 True 注意:所有非0数字在逻辑判断时布尔值都为True 先执行运算符,比较的的到的值, 注意 3>1 得到的不是数字,是bool值成立为True 不成立为False or 示列 v = True val = v if v else 666 va2 = v or 666 print(val,va2) #True True val = v or 666 # 源码中常见 python连续判断逻辑 10>5>1 ----> 10>5 and 5>1 #执行结果 true 字符串格式化 %s %d %f 占位符 %s %()字符串占位符 %d %() 数字占位符 一个占位符可以简写 %s %直接加要替换的字符

SpringBoot项目启动时配置文件的加载顺序和动态指定外部配置文件

我们都知道springboot启动会扫描一下位置的application.properties或者application.yml作为默认的配置文件, 今天来总结下SpringBoot的配置文件的加载顺序, 以及如何在jar包启动或者idea中启动springboot项目时如何动态指定配置文件 配置文件的优先级 配置文件路径的加载顺序 工程根目录:./config/工程根目录:./classpath:/config/classpath:/ ps: classpath: 即放在resources里面 properties和yml的加载顺序 bootstrap.properties优先于application.properties properties优先于yml 顺序为properties>yaml>yml profile文件的加载顺序 优先加载带profile的配置文件 jar包外部的application-{profile}.propertie或application.yml(带spring.profile)配置文件 jar包内部的application-{profile}.propertie或application.yml(带spring.profile)配置文件 其次加载不带profile的配置文件 jar包外部的application.propertie或application.yml(不带spring.profile)配置文件 jar包内部的application.propertie或application.yml(不带spring.profile)配置文件 加载的优先级顺序是从上向下加载,并且所有的文件都会被加载,高优先级的内容会覆盖底优先级的内容,形成互补配置 SpringBoot项目Jar包启动时指定外部配置文件 java -jar test.jar --spring.config.name=test1 --spring.config.location=D:/config/test/ 如果需要指定多个目录或者文件, 逗号分开即可,并且需要注意的时,如果目录,目录结束的/不能省略。 SpringBoot项目Idea中启动时指定外部配置文件 VM Options : -Dspring.config.location=D:/CONFIG/test/ Environment variables: spring.config.location=D:/CONFIG/test/

Windows 11 TPM2.0问题及解决方法

关注“郑州行疆户外”订阅号。 回复“win11”,下载windows11系统。 回复“问题”,查看windows11安装过程中遇到的问题及其解决方法。 随着2021年6月24日,微软正式发布会上确定windons系统为windows11,也展示了最新系统的界面机器性能。只不过暂未正式发布版本,只出了一个预览版,也就是给一些电脑爱好者提前出了一个版本,暂时还不是稳定版本,所以暂时不要盲目的升级到WIndows11,避免电脑数据的丢失和电脑不嫩正常使用。 示例一:TPM2.0问题 TPM2.0模块自从windows11发布以来,也成为了非常热门的话题。 也可以看看官方的TPM1.2与2.0的介绍:https://docs.microsoft.com/zh-cn/windows/security/information-protection/tpm/tpm-recommendations#tpm-12-vs-20-comparison 大概的都是如下图类似的提示: 解决方案: 除 win11 的之外,再下载一个 Win10 镜像文件; 将 Win10 镜像文件内 source 文件夹下的 install.wim 替换为 Win11 镜像文件内同文件夹下的同名文件; 然后再使用 Win10 镜像文件制作启动盘或点击 setup.exe 文件进行安装。 其他问题,关注公众号,回复“问题”,查看。 未完,待更 。。。

mysql查看版本的方法

在日常项目开发过程中,我们经常要连接自己的数据库,此时不知道数据库的版本是万万不可的。今天小树懒来给大家总结一下查看mysql版本的方法。 MySQL查看版本的方法主要有以下四种 方法1: 没有连接到MySQL终端下直接使用mysql命令。打开cmd,切换至 MySQL的bin目录,运行以下命令: [root@localhost lib]# mysql -V mysql Ver 15.1 Distrib 5.5.47-MariaDB, for Linux (x86_64) using readline 5.1 方法2: 同样在终端使用命令 [root@localhost lib]# mysql --help | grep Distrib mysql Ver 15.1 Distrib 5.5.47-MariaDB, for Linux (x86_64) using readline 5.1 方法3: 如果已经连接到了 MySQL ,则可以登陆mysql之后使用内置命令 mysql> select version(); +----------------+ | version() | +----------------+ | 5.5.47-MariaDB | +----------------+ 1 row in set (0.00 sec) 方法4: 同样登录MySQL,使用内置命令 mysql> status; -------------- mysql Ver 15.

Java和c++的栈和队列的异同

Java和c++的栈和队列的异同 Java默认使用Deque Deque方法的区别 传统的queue是以低地址端为队头,高地址端为队尾 传统的stack是以低地址端为栈底,高地址端为栈顶 pop(),push(),poll(),offer(),remove()这类传统方法在deque中都是以高地址为队头的方法,这些方法在queue和stack中 都是以低地址到高地址为参考系的方法 而add(),addFirst(),addLast(),offerFirst(),offerLast(), pollFirst(),pollLast(),removeFirst(),removeLast(),peekFirst,peekLast,getFirst,getLast都是以低地址到高地址为参考系的方法,也是deque中新增的方法 c++ 顺序容器还有以下常用成员函数: front():返回容器中第一个元素的引用。back():返回容器中最后一个元素的引用。push_back():在容器末尾增加新元素。pop_back():删除容器末尾的元素。insert(…):插入一个或多个元素。该函数参数较复杂,此处省略。 c++中没有同时删除并返回值的方法,需要先用front(),或back() 返回元素,再用pop_back()或pop_front()删除元素

Could not get unknown property ‘manifestOutputDirectory‘问题解决

今天早上更新Android Studio的gradle插件,后来编译的时候遇到了一个问题: Could not get unknown property 'manifestOutputDirectory' for task ':app:processDebugManifest' of type com.android.build.gradle.tasks.ProcessMultiApkApplicationManifest. 后来解决了,是因为华为推送的一个插件引起的, classpath 'com.huawei.agconnect:agcp:1.3.1.300' ,把插件版本换个版本就行了, 换成 classpath 'com.huawei.agconnect:agcp:1.4.1.300'就解决了这个问题

在idea中将java项目的单个类打包成jar包

今天我遇到了一个需求,要使用Intellij Idea 将java项目打包成jar使用。 新建项目 导出jar包 File -> project structure Artifacts -> + -> JAR -> from modules with dependencies… 在Main Class中选择要打包的类 Build -> Build Artifacts 点击后,继续如下的操作,导出jar 最后生成jar包

最详细Windows11安装来了

最详细win11虚拟机安装 一,开头 hi.大家好 前几天大晚上的微软发布了最新的Windows11系统,网上也有很多关于win11的帖子,看的我心痒痒,光看不练假把式,先来看看win11尝鲜版吧。 二,win11预览版的下载 Windows11预览版本:https://cloud.189.cn/t/Vbaym2bqUjqy 有4.5个g可以先提前下载 要下载安装虚拟机软件,这里用Oracle VM VirtualBox,可以在官网上安装 传送门:https://www.virtualbox.org/ 这里要下载Windows hosts版本 下载好后 双击安装 自定义安装位置 然后就是无脑下一步 等待一会儿 有防火墙的话会有这个弹窗,选择安装即可 点击完成 点击建新 设置名称,文件夹位置,注意这里版本要选择Windows 10 (64-bit) 接下来选择默认就可以 这里注意要硬盘大小要设置的大于9个g,不然后面会有问题 设置完点击创建就会是这样子(这里我一开始是设置的1.07个g太小了) 然后点击启动,发现没有虚拟机文件 这里把鼠标移到设备->选择虚拟盘 找到刚刚下载的win11 iso文件 然后重启虚拟机即可。 如出现下图即进入系统安装 等待一会 语言设置只有English,不过没关系后面还可以设置,时间可以选择中国Chinese也可以直接next 点击 install now 现在安装 等待一会儿 没有密钥,直接点击I don’t have a product key 选择Windows11 home,点击next 勾选 i accept,然后点击next 这里是创建虚拟机所以不用保存Windows之前的文件,设置和应用,所以选择第二个。 如果之前设置的硬盘大小太小了这里会有问题 错误的,需要重新设置 正确的,直接点击next 接下来就是等待,等待,等待即可 等待过后,安装完成进入初始化阶段 选择China->yes 设置键盘的布局,选择US->yes 如果还有其他的窗口就直接选择skip跳过即可 这里设置账号,选择用电话号码登录或邮箱登录都可以,要能接受到信息的号码或邮箱 这里我是用电话号码,输入电话号码->next 设置8位数以上的密码,然后next 设置你的姓名 设置出生年月 设置PIN,理解为登入时用到的密码即可 重复输入两遍 这里是问你你的电脑是用来干啥的,直接点击skip跳过即可 然后就会出现如下界面,耐心等待即可

windows11系统正版来了,windows11系统官方版下载方式,windows11系统镜像来了

微软自2015年1月21日发布windows10后长达6年之久没有了window系统的大版本更新。终于在近两天发布了windows11。要知道windows8于2012年10月发布,在仅仅两年多的时间后,微软便马不停蹄发布了windows10。当然,这或许也和windows8的口碑一般有关。如不及时进行更新,将流失大批用户。11发布后,喜欢新鲜事物的小伙伴应该想立马体验它。小编也是捕捉到了这一点,赶紧为用户朋友们带来。可能有朋友也听到过类似传闻:windows10将是最后一个windows版本!现实还是啪啪打了传言者的脸。11与10相比,系统操作方面也做了不小的变动。但用户使用习惯后应该会有不错的使用体验。UI上也有明显的改动,据说11上能直接安装安卓软件,不知真假,还等用户朋友们前去验证。需要体验新系统的朋友可别错过了这个windows11官方正式版镜像文件。 windows11系统镜像文件(获取请点此处) 1、将下载好的镜像文件进行解压,得到下图所示文件集合; 2、双击“setup.exe”开始安装; 3、点击next即可; 4、国家选择China; 5、选择安装工作模式或学校模式; 6、等待安装完成即可(安装完成后为英文); 7、将本站提供的windows 11中文补丁直接解压到系统根目录,或是解压后将Windows文件复制到C盘中,有提示重复的点跳过。

计算机网络——奈氏准则和香农定理

奈氏准则 采样定理 假设原始信号中的最大频率为f,那么采样频率F必须≥2f 码间串扰 具体的信道所能通过的频率范围总是有限的(具体的信道带宽是固定的),所以信号中的大部分高频分量过不去,在传输过程中会衰减,导致在接收端收到的信号的波形失去了码元之间的清晰界限 带宽 在计算机网络中,带宽用来表示网络中某信道传送数据的能力,因此网络带宽表示在单位时间内网络中的某信道所能通过的“最高数据率”,带宽的单位就是数据率的单位,即bit/s 信道带宽则是信道能通过的最高频率和最低频率之差 奈奎斯特定理 为了寻找在保证不出现码间串扰的条件下码元传输速率的最大值,提出了奈奎斯特定理 在理想低通(没有噪声、带宽有限)的信道中,为了避免码间串扰 极限码元传输率为2WBaud(W是理想低通信道的带宽,单位为Hz) 在理想带通的条件下 最高的码元传输速率为WBaud W是理想低通信道的带宽,单位为Hz 2W为在理想低通(没有噪声、带宽有限)的信道中的极限码元传输率 N表示每个码元离散电平的数目(有M种不同的码元,比如N=16,则log216 = 4,需要4位二进制位) 理想低通信道下最大数据传输速率=2W log2N bit/s 归纳总结与例题 由上述公式可知,奈奎斯特定理仅仅是给出了无噪声情况下码元最大传输速率,即2W,并没有给出最大数据传输率,因此可以改变log2N,只要N足够大(即编码足够好),使得一个码元携带无穷个比特,那么最大数据传输速率就可以无穷大! 对一个无噪声的4kHz信道进行采样,可达到的最大数据传输速率是多少? [无限大] 思路一:在4kHz的信道上,采样频率需要8kHz(每秒可进行8k次采样)。如果每次采样可以取得16bit的数据,那么信道就可以发送128k bit/s的数据;如果每次采样可以取得1024bit的数据,那么信道就可以发送8M bit/s的数据。所以说只要编码足够好(每个码元能够携带更多地比特),最高码元传输速率是可以无限大的思路二:根据公式可知,N可以无穷大,因此最高码元传输速率是可以无限大的 tips:这里关键在于信道是无噪声的,如果在一个有噪声的4kHz的信道中,根据香农定理则不允许最大数据传输率为无限大 在无噪声的情况下,若某通信链路的带宽为3kHz,采用4个相位,每个相位具有4种振幅的QAM调制技术,则该通信链路的最大数据传输率是多少? [24000 bit/s] 4个相位,每个相位具有4种振幅的QAM调制技术,则有4*4=16种不同的组合,log216 = 4,则1个码元可携带4bit信息量,奈氏准则 最高信息传输速率=2W Baud=2 × 3k Hz=6000Baud 最大数据传输速率=2W log2N = 6000 × 4 = 24000 bit/s 采用8种相位,每种相位各有两种幅度的QAM调制方法,在1200Baud的信号传输速率下能达到的数据传输速率是多少? [4800 bit/s] 8种相位,则一共有8 × 2=16 种码元,每个码元携带log216=4 bit的信息数据传输速率= W log2N = 1200 × 4 = 4800 bit/s 对于某带宽为4000Hz的低通信道,采用16种不同的物理状态来表示数据,按照奈奎斯特定理,信道的最大传输速率是多少? [32 kb/s]

object_detection_demo系列

文章目录 object_detection_demo系列 object_detection_demo系列 网址这里找啊fdsfd object_detection_demo\app\src\main\java\com\baidu\paddle\lite\demo\object_detection\MainActivity.java package com.baidu.paddle.lite.demo.object_detection; import android.Manifest; import android.app.ProgressDialog; import android.content.ContentResolver; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.preference.PreferenceManager; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.text.method.ScrollingMovementMethod; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.io.File; import java.io.IOException; import java.io.InputStream; public class MainActivity extends AppCompatActivity { private static final String TAG = MainActivity.

安装apex不成功的解决方法

git clone https://github.com/NVIDIA/apex cd apex git checkout f3a960f80244cf9e80558ab30f7f7e8cbf03c0a0 python setup.py install --cuda_ext --cpp_ext apex github需要外网才能下载,所以可以先下载到本地进行操作

SQL注入-盲注篇,获取数据库的连接用户等信息(1)

一、概述 最近在工作时,发现某系统有SQL注入漏洞,post请求,但由于有安全监控,因此不敢直接使用SQLMAP跑,因此手工进行注入验证。 二、具体详情 根据源代码审计,发现xxx.java文件存在大量sql注入漏洞,通过对其中一个进行验证(其他类似),跟踪数据流,构造其请求是http:// ****:**/**/**/**Detail.json,参数是serialNo。 1、正常构造请求如下,serialNo的内容是0,可发现返回查询结果,且长度是364047 2、修改serialNo的内容为0' ,可发现返回结果异常。 3、修改serialNo的内容为0' and 1=1--#,可发现结果正常,长度为131691。 因此可判定该参数确实存在sql注入漏洞。因此开始获取数据库信息。 4、利用length函数,获取数据库当前用户的长度,该长度可以手工尝试,或者爆破。 可发现,当设置长度大于7时返回正常,设置长度大于8时返回异常,因此,可判定当前user的长度为8。 5、接下来,利用substr函数,获取user的具体内容,此处以前两个字母为例,其他类似。可以利用爆破,也可以手工一个个尝试。 1)第一个字母,当设置起大于“l”时正常,大于“m”时异常,可判断第一个字母是m; 2)同理获取,第二个字母,当设置起大于“c”时正常,大于“d”时异常,可判断第二个字母是d; 同理可获取其他字母,因此当前user是:mdcq****,数据库类型是DB2 6、利用上述方式,可进一步获取数据库表名、字段名、字段内容等信息。当然如果无需逃避监控,可直接使用sqlmap进行脱库。 三、后续 这次未遇到基于时间的盲注,下次遇到后再增加。

10部顶级数学纪录片

来源| 数学加油吧 数学是人类的高级思维活动,越往顶层走,需要的各种思维能力就越多。观看数学纪录片就是个绝佳的选择,既形象又有趣。这里有10部顶级数学纪录片,无论作为兴趣启蒙,还是培养数学思维,绝对值得观看和收藏! NO.1 数学的故事 The Story Of Maths 历史上最聪明的人为何对数学如此痴迷? 豆瓣评分:8.9 网友Sophie Z:一共4辑,很精致,讲到中国的数学时惊喜了。 网友雨宫萤:适合给10岁左右的小朋友看,用来激发探究数学世界的兴趣。 如何提高孩子学习数学的兴趣?不如先从故事的角度了解数学的进化史,感受一下数学大咖们是如何接触那些世纪难题的。数学的发展史也是一部缩影版的人类文明史。 《数学的故事》是BBC的4集科学史纪录片,在分析科学进步内在动因的同时,史诗般地还原了数学科学迤逦前行的整个进程,通过在对“东方数学”体悟和对“西方数学”构建的冲突和融合中,百科全书式直视科学思想史全景,再现文明瑰丽绽放的经典时刻。 主讲人Marcus du Sautoy 是一位数学教授,他带领观众走访数学家的故乡,来到这些经典时刻发生之地,真实地呈现牛顿、莱布尼兹、高斯等数学家探索著名理论的历程。 纪录片前两集讲述数学的起源,展现文明古国的先辈们在生产生活中的发明和创造。其中,中国的贡献主要是中国剩余定理和秦九韶用类似牛顿的方法求高次方程的近似解。 第三集主要介绍自希腊帝国灭亡后、工业革命之前的数学世界。第四集讲述最近300年的演变历史。 这场意义不凡的旅行,展现了数学这门科学波澜壮阔的历史场景。由古及今,在探索数学的征途中,我们一直都在路上。 NO.2 统计学的乐趣 The Joy of Stats 掌握分析数据的能力,就能跳出直觉理性看问题! 豆瓣评分:8.5 网友PuDding_Yong:主持人超有魅力!片子中的统计演示都极为有趣,属于任何人看了都会感兴趣的纪录片~ 网友伊瓦:超有趣!对数据统计燃起了浓浓爱意~ 看到“统计学”,你首先想到什么?是让人眼花缭乱的表格,还是各种晦涩难懂的术语? 其实,统计学并不遥远,从日常生活到科学研究,到处都有它的踪影,统计学也并不枯燥。在BBC的这部纪录片中,明星教授Hans Rosling用新奇的方式、先进的技术和幽默的语言,讲述了很多奇奇怪怪的统计案例。 他用统计学结合电脑科技展现了一幅我们从未见过的画面,也是我们从来无法想象到的画面。 比如,平均数是统计中一个很重要的概念,但是光看它,却会得出一个荒谬结论:把马云和6个穷人放在一起,平均每个人都坐拥好几个亿的财富。 再比如,把来自不同地方的香蕉放在猩猩和大学生面前,猩猩能选出来,大学生却只能瞎猜。如果猩猩选择的正确率更高,能说明动物比人类聪明吗? 这些例子让我们看到,统计学并非简单地处理数字,而是用相关性揭示一些人们忽略的原理。掌握分析数据的能力,能让我们跳出直觉理性严谨思考问题。 NO.3 终极密码 The Code 揭开事物背后的数字规律,我们生活在一个充满数字的抽象世界! 豆瓣评分:8.5 网友合纥:π很神奇,分形几何很神奇,“众人的智慧“也很神奇。想起以前看宇宙起源的纪录片中说的,宇宙的初始是一个数字,一生万物,奇。 网友HICAP:终于明白那些人天天念叨的大数据是咋回事了! 我们一直在探寻人类最古老的一个疑问:为什么世界是这个样子的?从宏伟的大教堂到北美的周期蝉,从多佛比目鱼到蜿蜒的海岸线,从海洋深处的鹦鹉螺,到美妙的音乐,从繁忙的机场,到浩瀚的星空……正是它们一起构成了密码世界—— 一个充满了数字的抽象世界。 数学规律、几何定律,影响了生物的繁衍,影响了星体的运行,支撑着教堂的穹顶。这是一个神奇而迷人的世界,它与我们真实生活的世界大不相同。 这部同样来自BBC的纪录片共有3集,分别从“数字、形状、预测”三个方向探寻隐藏在宗教、建筑、艺术、生物等大自然和人类生活中的终极密码——数学。 数字间有着令人迷惑的奇妙的联系,只有通过这些密码我们才能了解掌控着整个宇宙的法则,从而揭开这个世界的真相。 生命的历程是求真、求善、求美的过程。数学为什么吸引我们?因为她就是真善美的化身,是生命真谛的呈现。本片用震撼的视觉语言,从点滴的生命现象阐释了数学的真善美。 NO.4 伟大的疯狂 A Brilliant Madness 在无常命运中保持美丽心灵的数学家约翰·纳什。 豆瓣评分:8.8 网友文心孤竹:在这部纪录片里可以看到《美丽心灵》男主角纳什的真身,天才和疯子往往只有一线之隔,就看你身边的人对于天赋的尊重和对于异类的包容。 网友合纥:两次因妄想型精神分裂而住院,却又神奇的康复,而且之后性情大变。光这两就够神奇了,何况还是博弈理论的始祖。这种传奇人物大概都是上天派来的。 约翰·纳什,数学家,诺贝尔经济学奖的获得者,电影《美丽心灵》的原型,曾患有长达30年的精神分裂。 比起艺术化的电影《美丽心灵》,这部纪录片更值得一看,因为它更完整地记录了纳什的生平,并且对理论发现的全过程进行了更深入的探索。 纳什在事业一帆风顺时罹患精神分裂症,面对只能好转、无法治愈的疾病,他在妻子的陪伴下不懈努力,完全通过意志力工作,最终战胜心魔,并登上科研的巅峰。他的一生,在得与失的博弈中取得了均衡。 1950年,22岁的纳什博士毕业,仅仅27页的博士论文中提出了一个重要概念,也就是后来被称为“纳什均衡”的博弈理论。 在纳什看来,数学能揭示命运的规律、人生的奥秘。这就是为什么他不满足于像其他数学学者一样,用现有的理论解决问题、发表论文。 在上世纪70年代,纳什的博弈论被运用到了美国的经济建设和国际贸易等实际领域,产生了巨大的影响力。1994年,他和其他两位博弈论学家共同获得了诺贝尔经济学奖。

上海有哪些牛逼的互联网公司?

来源:https://zhuanlan.zhihu.com/p/191577083 第一梯队:六巨头 1.阿里巴巴(阿里上海研发中心,闵行大虹桥,本地生活总部:盒马/口碑,阿里国际站等,10-10-5,加班氛围浓,年底一般1+3=4个月,极少数最多可拿7个月,考核按3-6-1比例); 2.腾讯(腾讯华东总部,徐汇漕河泾,游戏、人工智能、云计算等,10-10-5,归属感强,食堂伙食好。年底标准2个月,一般能拿4个月,极少数拿8个月,部分团队n个月,考核按 1 星到 5 星); 3.字节跳动(上海研发中心、巨量引擎,闵行漕河泾,抖音、游戏、教育等,字节本体和巨量引擎差距较大,不同岗位加班差距很大,大小周发明家。年终0-6个月,一般拿3个月,少数5个月以上); 4.蚂蚁集团(上海研发中心,唯一未上市巨头,浦东支付宝大厦,支付宝、蚂蚁科技中心等,10-10-5,比较卷,年终与阿里类似); 5.美团点评(大众点评,长宁北新泾,生活服务平台,10-9-5,年底一般3.5个月,其中0.5个月上半年绩效工资+0.5个月下半年绩效工资+2.5个月年终奖工资); 6.拼多多(总部,长宁娄山关路,综合电商,周末给加班费,猝死1例;年底一般4个月,其中固定年终奖 2 个月,在春节前发放;绩效年终奖则根据 “ 271 ” 的绩效考核评定后发放,70% 的员工能拿 2 个月)。 第二梯队:背靠巨头 or 小巨头 1.哔哩哔哩(总部,杨浦五角场,视频平台,10-8-5,年奖一般3个月) 2.滴滴出行(上海分公司,静安区共和新路,出行平台,10-10-5,年奖一般3个月) 3.携程(总部,长宁大虹桥,OTA巨头,少数低加班频次,10-7-5,年奖一般3个月) 4.饿了么(总部,普陀近铁城市广场,阿里本地生活,10-9-5,年奖一般2个月) 5.阅文集团(总部,浦东张江高科,网文平台,腾讯,10-7-5,年奖一般1.5个月) 6.哈啰出行(总部,闵行莘庄,出行平台,阿里系独立公司,10-10-5,年奖一般2个月) 7.趣头条(总部,浦东广兰路,资讯类网文类,含趣头条和米读,10-10-5,年奖一般3个月) 8.快手(上海分公司,少量人员,徐汇漕河泾,短视频,大小周,年奖一般4个月,一日四餐免费) 9.百度(上海分公司,浦东中科路,研发/电销团队,9-9-5,年奖一般3个月) 10.京东(上海分公司,宝山呼兰路,综合电商,9-9-5,年奖一般2个月) 11.网易(上海分公司,徐汇漕河泾,10-8-5,年奖一般3个月) 第三梯队:独角兽or垂直领域or互联网+ 电商类 得物App(总部,杨浦黄兴路,炒鞋电商,9-9-5,大小周,周末给加班费,年底1个月➕四个季度各0.75个月) 唯品会(上海分公司,闵行申长路,品牌特卖,9-9-5,部分大小周) 叮咚买菜(总部,浦东广兰路,生鲜电商,9-9-5,大小周) 返利网(总部,徐汇龙漕路,导购电商,9-8-5,年底1个月) 小红书(总部,黄浦新天地,内容电商,10-9-5) 洋码头(总部,静安江场三路,跨境电商,加班不明) 达达&京东到家(总部,杨浦东方渔人码头,电商及本地生活劳动力外包,9-9-5) 微盟(总部,宝山淞发路,SaaS小程序服务商,9-7-5,年底1个月) 宝尊电商(总部,静安万荣路,toB,淘宝代运营,9-8-5,周末给加班费,年底1个月) 找钢网(总部,嘉定区新培路,钢铁产业链电商平台,9-9-5,年底一般0.5个月) 资讯类 虎扑(总部,虹口足球场,篮球等门户网,9-6-5,部分部门大小周) 爱奇艺(上海分公司,长宁临虹路,百度,9-7-5,加班有加班费) 即刻(总部,杨浦淞沪路,互联网资讯,加班不明) 任意门(总部,产品:soul,浦东大唐国际,即时通讯,10-8-5) 喜马拉雅(总部,浦东丹桂路,电台类,10-7-5,部分10-10-5) 蜻蜓FM(总部,浦东陆家嘴软件园,音频电台类,10-7-5,部分10-10-5) 樊登读书(总部,长宁遵义路,音频读书类,部分9-9-5,部分9-6-5) 咪咕(上海分公司,浦东金桥,移动下属视频/音乐类,加班不明) 旅游类 同程艺龙(上海研发中心,长宁中山公园,旅游一线,加班不明) 驴妈妈(总部,嘉定景域大道,旅游二线,9-8-5,近年有年奖拖欠情况) 途牛(上海分公司,松江嘉松南路,旅游二线,加班不明) 人工智能&商业智能 触宝(总部,闵行新龙路,触宝输入法、触宝电话等海外市场为主,10-9-5) 商汤(总部,徐汇漕河泾,人工智能领域,9-8-5,猝死1例,年奖一般3个月) 旷视(上海分公司,徐汇虹漕路,人工智能领域,年奖一般2个月) 依图(总部,长宁区娄山关路,人工智能领域,年底1-2个月) 云从(上海分公司,浦东张江高科,人工智能领域) ucloud(总部,杨浦区隆昌路,IaaS、PaaS服务商) 泛微网络(总部,闵行联航路,主要产品:eteams,OA类SaaS服务商) 声网(总部,杨浦五角场,音视频PaaS服务商)