手记
文章平均质量分 84
hi,你礼貌吗
热衷分享,希望有朝一日能在分享与交流中遇见一位引路人为我解惑。
展开
-
实践检验乐观锁与悲观锁
前言在实际生产环境中,往往会遇到热门的产品,导致短时间内大量用户涌入。比如某款新手机上市,会在某个时间点开抢,这时就需要面对这个高并发现象。我们就通过简单的模拟实验,复现这个场景并解决。模拟过程(这里针对单一商品,一次只能购买一个)环境配置并测试直接使用Mybatis作为我们的持久层框架。1、搭建Mybatis环境(参考:Mybatis快速开始)。建立如下两张表和相应持...原创 2019-03-04 23:41:05 · 293 阅读 · 0 评论 -
java web中的拦截器、过滤器和监听器
目录介绍一下过滤器实现拦截器实现Servlet监听器实现介绍一下1、过滤器和拦截器(只针对Servlet的Filter接口和SpringMVC的HandlerInterceptor接口,不针对其它实现方式,手撸服务器的大神再见)过滤器和拦截器都是将客户端的请求进行拦截处理,然后将请求转交给下一资源。其处理方式如下图所示。拦截器和过滤都能实现相同的功能,那么...原创 2019-07-13 20:06:23 · 298 阅读 · 1 评论 -
Redis使用笔记
redis安装参考:https://blog.csdn.net/weixin_41381863/article/details/88231397数据结构及常用生产场景1、String(字符串)--一个键最大能存储512MB字符串是最常用的数据类型,能够存储任何类型的字符串(即任意key-value),当然也包括二进制、json化的对象、甚至是Base64编码之后的图片。在Redis中一...原创 2019-07-04 15:21:54 · 183 阅读 · 1 评论 -
拒绝长篇大论,快速使用JWT(json web token)
拒绝搬砖,拒绝长篇大论什么是JWTJWT全称json web token。是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。它其实就是平常用的token认证机制,只不过它有它自己的一套规范。根据JWT规范生成的token字符串由三部分组成:头部、载荷、签名。示例(中间由.隔开):相较于普通的token生成方式,JWT生成的token由上面...原创 2019-06-27 12:00:11 · 590 阅读 · 1 评论 -
Mybatis调用存储过程
开始之前1、搭建好mybatis环境并建立如下的表和对应的实体类------------------------------------------------------------------------------------------------------public class TUserPO { private Integer userId; priva...原创 2019-07-02 10:15:19 · 182 阅读 · 0 评论 -
Spring Boot实践 | 利用Spring Security快速实现权限控制
目录开始之前快速开始使用内存签名服务使用数据库签名服务使用自定义签名服务限制请求强制使用HTTPS防止跨站点伪造请求用户认证功能在java web工程中,一般使用Servlet过滤器(Filter)对于请求进行拦截,然后在Filter中通过自己的验证逻辑来决定是否放行请求。基于这一原理,常用的SpringMVC实现了自己的拦截器,同样的,Spring Sec...原创 2019-06-12 14:08:58 · 783 阅读 · 1 评论 -
JSR303参数校验使用手记
参数校验的必要性千篇一律,就不在多言了。快速开始1、引入jar包springboot项目中引入jar包(有了springboot就是好,jsr303直接成了一个starter,不用再去担心版本,jar包不对什么的了)。<dependency> <groupId>org.springframework.boot</groupId> <a...原创 2019-05-31 15:31:38 · 623 阅读 · 1 评论 -
记一次由jar包冲突引起的异常--Java.Lang.NoSuchMethodError
问题描述需求需要将svg文件转为pdf文件,引用了batik jar包。异常在运行的时候就出现以下异常信息:java.lang.NoSuchMethodError: ....commons-logging....SimpleLog.setLevel(int)....大致就是:没有SimpelLog类中setLevel(int)方法(明明有commons-logging的j...原创 2019-05-09 17:14:17 · 2250 阅读 · 1 评论 -
spring项目中利用junit单元测试及多线程测试笔记
单元测试的好处不用多说,就光光是能减少bug,减少调试时间,就值得我们认真去对待。快速开始偷个懒,文章基于springboot配置单元测试引入jar包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot...原创 2019-05-06 23:06:16 · 5863 阅读 · 1 评论 -
重试框架spring retry使用笔记
在项目开发中,经常会遇到需要重试的地方。除了自己写循环(不是那么优雅,也不方便维护,关键是可能还不那么可靠)重试之外,还可以使用spring retry。spring retry主要实现了重试和熔断。不适合重试的场景:参数校验不合法、写操作等(要考虑写是否幂等)都不适合重试。适合重试的场景:远程调用超时、网络突然中断等可以重试。在spring retry中可以指定需要重试的...原创 2019-05-06 00:16:42 · 973 阅读 · 1 评论 -
Protostuff 序列化简单示例
Protostuff(官网:www.protostuff.io)是谷歌开发的一种数据交换格式工具,独立于语言和平台,类似于json。Google提供了多种语言的实现:java、c++、go和python。对象利用Protostuff序列化之后可读性比xml和json差,但是速度要快得多,空间占用也要小得多。注意:Protostuff 只能直接序列化简单的pojo类。简单的示例1、引入相...原创 2019-04-15 10:40:05 · 519 阅读 · 1 评论 -
记google guava使用大杂烩
Guava是一种基于开源的Java库,Google Guava源于2007年的"Google Collections Library"。这个库是为了方便编码,并减少编码错误。这个库用于提供集合,缓存,支持原语句,并发性,常见注解,字符串处理,I/O和验证的实用方法。使用起来也很方便,只需要导入以下jar包即可。<dependency> <groupId>c...原创 2019-04-12 17:26:57 · 172 阅读 · 0 评论 -
Spring中常用的工具类大杂烩
Spring除了给我们提供IoC和AoP之外,还为我们提供了很多工具类,方便开发。BeanUtils在我们的开发中经常会遇到对象的相互转换,比如DTO转VO,PO转VO.......BeanUtils类就为我们提供了简便快捷的操作。方法:/** * 将给定源bean的属性值复制到目标bean中. * 注意事项:源bean和目标bean 的属性名称和类型要相同; * ...原创 2019-04-12 10:15:35 · 261 阅读 · 0 评论 -
SQL中的内连接查询和外连接查询
在项目开发中,单表的查询肯定无法满足所有的业务,所以很多时候都是多表的连接查询。接下来总结一下SQL中的多表关联查询,以MySQL为例。前期准备在数据库中创建以下几张表并添加一些数据。1、部门表(tb_dept),如下2、员工表(tb_emp),如下。可以看到后勤中心是没有员工的,一会看区别。3、工资表(tb_salary),如下三张表的关系是,一个部门有多个员...原创 2019-03-14 21:31:00 · 24468 阅读 · 7 评论 -
Spring核心之IoC的两种实现方式
前言在刚接触java的时候,映像最深刻的一句话就是:需要使用对象的时候,就直接new一个对象即可。但是,像对于Mybatis中的核心对象SqlSessionFactory、工作流引擎Activity中的核心对象ProcessEngine,还有我们的业务逻辑组件、数据库操作组件等等,只要核心对象一创建,就应该在应用执行期间都存在,且不应该在应用期间重复创建。我们当然可以用单例模式处理,但是当大量...原创 2019-03-07 00:12:46 · 7676 阅读 · 0 评论 -
Spring核心之AOP的两种实现方式
前言AOP是一种思想,并不是Spring独有的,所有符合AOP思想都可以看作AOP的实现。在进入Spring AOP之前,先对它的一些术语做一个了解,它们是构成Spring AOP的基本组成部分。名称 说明 切面(Aspect) 切面是对象操作过程中的截面,实际上"切面"是一段程序代码,这段代码将被"植入"到程序本身的流程中去,所谓的"面向切面编程"正是指这个。 连接点...原创 2019-03-13 23:02:17 · 421 阅读 · 0 评论 -
Servlet3.0 注解特性
虽然很久没有单独的使用Servlet技术了,但是本着温故而知新的态度,整理记录一下笔记。注:tomcat7以上才支持Servlet3.0注解支持Servlet、Filter、Listener无需在web.xml中进行配置@WebServlet注解作用:声明Servlet组件(无需配置web.xml)。主要属性:属性 类型 描述 name String...原创 2019-07-14 15:48:56 · 144 阅读 · 1 评论