- 博客(14)
- 资源 (6)
- 收藏
- 关注
转载 Springboot 拦截器配置(登录拦截)
注意这里环境为springboot为2.1版本1.编写拦截器实现类,实现接口 HandlerInterceptor,重写里面需要的三个比较常用的方法,实现自己的业务逻辑代码(就是自己拦截器拦截时做什么处理)import java.io.IOException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframewo
2020-05-30 15:56:19 397
转载 单点登录配合拦截器使用案例
1.定义拦截器://定义用户拦截器public class UserInterceptor implements HandlerInterceptor{ @Autowired private JedisCluster jedisCluster; private ObjectMapper objectMapper = new ObjectMapper(); /** * 1.获取用户Cookie获取token数据 * 2.判断token
2020-05-30 15:01:16 418
转载 json过滤某些属性之@JsonIgnore
使用Jackson相关的注解时一定要注意自己定义的属性命名是否规范。命名不规范时会失去效果。(例如Ename ,Eage 为不规范命名。“nameE”,“ageE”为规范命名)我在此处掉坑半个小时。至于命名规范,大家自己搜索。其实不要太奇葩的命名都是可以得。如果使用@JsonIgnore注解不起效时请注意一下你的属性名字是否规范1、@JsonIgnoreProperties此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。写法将此标签加在mod
2020-05-30 13:24:51 951
原创 金额,重量,成绩不使用浮点数来表示,而使用整型
金额、重量、成绩等数据库字段推荐使用int或bigint类型。通常我们数据库设计中金额,重量等涉及到小数位的字段会用float或decimal,mysql还可以用double,但往往每笔金额的计算我们只需要精确到分,重量精确到克,最佳的设计是用int型来代替浮点型,如果涉及到的数字比较大,超过int型的取值范围(-2,147,483,6482,147,483,647),最大金额为21474836.47,即两千多万,或者2147483.647公斤,哪么我们可以用bigint,c#中使用long类型(9,22
2020-05-22 17:01:11 2468 10
转载 TimeUnit用法
TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段1、主要作用1.时间颗粒度转换2. 延时2、常用的颗粒度TimeUnit.DAYS //天TimeUnit.HOURS //小时TimeUnit.MINUTES //分钟TimeUnit.SECONDS //秒TimeUnit.MILLISECONDS //毫秒TimeUnit.NANOSECONDS //毫微秒Time
2020-05-12 20:40:23 12674
转载 一个java项目的开发流程
1、项目启动1)、项目组成立(公司成员、客户成员)2)、制定项目预期目标3)、制定项目计划周期4)、建立好项目组成员沟通机制2、需求调研1)、创建调研计划、协调调研时间2)、收集客户资料,获取客户需求所有的资料都需要保留一份,资料中存疑的需要及时询问3)、编写需求文档重点描述出客户的业务流程和性能要求。采用Word、Excel、Rose等形式。4)、需求变更记录5)、确定...
2020-05-07 14:09:15 1422
转载 spring 注解@Autowired是如何实现的
@Autowired这个注解在spring的源代码里的定义,如下所示:package org.springframework.beans.factory.annotation; import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation...
2020-05-07 13:32:26 972
原创 StringUtils.isEmpty()与StringUtils.isBlank()区别与选择
先上源码:public static boolean isEmpty(CharSequence cs) { return cs == null || cs.length() == 0; }public static boolean isBlank(CharSequence cs) { int strLen; if (cs != null...
2020-05-03 13:15:20 435
转载 必须有数字和字母组合的密码正则表达式
要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间。^(?![0-9]+)(?![a−zA−Z]+)(?![a-zA-Z]+)(?![a−zA−Z]+)[0-9A-Za-z]{8,16}$分开来注释一下:^ 匹配一行的开头位置(?![0-9]+)预测该位置后面不全是数字(?![a−zA−Z]+) 预测该位置后面不全是数字(?![a-zA-Z]+)预测该位置后面不全...
2020-05-03 10:42:03 2709
转载 时空复杂度O(1)、O(log n)、O(n)、O(n log n)、O(n^2)是什么意思
这些都是算法时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。O(1)解析O(1)就是最低的时空复杂度了,也就是耗时/耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时/耗空间都不变。 哈希算法就是典型的O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标(不...
2020-05-01 22:02:07 750
原创 位运算符—与(&)、或(|)、非!(~)、异或(^)
位运算符的计算主要用在二进制中。实际开发中也经常会遇到需要用到这些运算符的时候,同时这些运算符也被作为基础的面试笔试题。如果以开关开灯论:有这样两个开关,0为开关关闭,1为开关打开。与(&)运算与运算进行的是这样的算法:0&0=0,0&1=0,1&0=0,1&1=1在与运算中两个开关是串联的,如果我们要开灯,需要两个开关都打开灯才会打开。理...
2020-05-01 21:03:19 692
转载 多线程情况下如何保证线程安全
一、线程安全等级其实线程安全并不是一个“非黑即白”单项选择题。按照“线程安全”的安全程度由强到弱来排序,我们可以将java语言中各种操作共享的数据分为以下5类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。1、不可变 在java语言中,不可变的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再采取任何的线程安全保障措施。如final关键字修饰的数据不可修改...
2020-05-01 15:50:18 3092
转载 count(*)和count(1),count(列名)的区别
从执行结果来说: count(1)和count(*)之间没有区别,因为count(*)count(1)都不会去过滤(排除)空值, 但count(列名)就有区别了,因为count(列名)会去过滤空值。从执行效率来说: 他们之间根据不同情况会有些许区别,MySQL会对count(*)做优化。 (1)如果表中只有一列,则count(*)效率最优 ...
2020-05-01 15:23:38 323
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人