摘要:
在上一次写的文章中,为大家说到了如何动态的从数据库加载用户、角色、权限信息,从而实现登录验证及授权。在实际的开发过程中,我们通常会有这样的一个需求:当用户多次登录失败的时候,我们应该将账户锁定,等待一定的时间之后才能再次进行登录操作。
一、基础知识回顾
要实现多次登录失败账户锁定的功能,我们需要先回顾一下基... 阅读原文
2019-11-29 00:00:03 阅读(2456) 评论(0)
摘要:
背景
在项目的部署过程中,一般是打成 war 或者 jar 包,这样一般存在两种问题:
即使是配置文件修改,也还需要整个项目重新打包和部署。
整个项目只有一套环境,不能切换。
针对上面的问题,可以使用外部化配置来解决。
需求
由于服务器上的应用服务器存放路径未知,只知应用服务器的目录结构。所以需要通过文件... 阅读原文
2019-11-28 21:28:02 阅读(2489) 评论(0)
摘要:
稀疏数组
基本介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
如下图所示:
稀疏数组的处理方法:
记录数组一共有几行几列,有多少个不同的值;
把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模;
稀疏数组转换思路
二维数组转稀疏数组思路:
... 阅读原文
2019-11-28 20:19:03 阅读(2398) 评论(0)
摘要:
有点笨,参考了好几篇大佬们写的文章才整理出来的笔记....
字面意思上解释,线程池就是装有线程的池,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程的复用。
好处
多线程产生的问题
一般我们使用到多线程的编程的时候,需要通过new Thread(xxRunn... 阅读原文
2019-11-28 19:03:02 阅读(2381) 评论(0)
摘要:
1、单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】:单一职责原则想表达的核心思想就是“高内聚”,一个模块只完成一项功能。在面向对象设计中,一个类只应该负责一项职责,如果同时承担太多职责,就等于把这些职责耦合在了一起。
2、里氏替换原则【LISKOV SUBSTITUTI... 阅读原文
2019-11-28 17:27:04 阅读(3604) 评论(0)
摘要:
思路:前端利用 jsencrypt.js 将用户名密码加密. 后台解密账户密码.
提供一个js连接:https://passport.cnblogs.com/scripts/jsencrypt.min.js
提供一个密钥生成连接:http://web.chacuo.net/netrsakeyp... 阅读原文
2019-11-28 16:42:04 阅读(2429) 评论(0)
摘要:
1.cglib
BeanGenerator beanGenerator = new BeanGenerator();
beanGenerator.addProperty("id", Long.class);
beanGenerator.addProperty("username", String.cl... 阅读原文
2019-11-28 14:49:02 阅读(2440) 评论(0)
摘要:
将字节码文件加载到内存中并生成相应的对象步骤:
加载
连接(验证-准备-解析)
初始化
1.装载:将Java二进制代码导入jvm中,生成Class文件。2.连接:
a)校验:检查载入Class文件数据的正确性
b)准备:给类的静态变量分配存储空间
c)解析:将符号引用转成直接引用3:初... 阅读原文
2019-11-28 13:55:01 阅读(2317) 评论(0)
摘要:
相比于逻辑回归,在很多情况下,SVM算法能够对数据计算从而产生更好的精度。而传统的SVM只能适用于二分类操作,不过却可以通过核技巧(核函数),使得SVM可以应用于多分类的任务中。
本篇文章只是介绍SVM的原理以及核技巧究竟是怎么一回事,最后会介绍sklearn svm各个参数作用和一个demo实战的内容,尽量... 阅读原文
2019-11-28 13:46:04 阅读(3730) 评论(0)
摘要:
本文以在CentOS 7.6中安装JDK8为例进行安装,其他系统和版本都是大同小异的。
下载
进入Oracle官方网站的下载页面。
首先,接受许可协议,如下图:
然后,根据Linux系统的位数选择要下载的压缩包。怎么知道Linux系统的位数呢?可以执行下面的命令:
getconf LONG_BIT
如果显示... 阅读原文
2019-11-28 13:13:02 阅读(2331) 评论(0)