- 博客(27)
- 资源 (3)
- 收藏
- 关注
原创 Mybatis源码-一条sql语句中占位符既有#{}也有${} 会不会存在注入的问题
Mybatis源码-一条sql语句中占位符既有#{}也有${} 会不会存在注入的问题 本文测试的表数据(这只是该表部分数据) StudentMapper.java @Mapper public interface StudentMapper { List<Student> getByName(@Param("stu") Student student); } 先分析一条sql语句的占位符全是#{}的情况 mapper.xml查询语句 <select id="getByName
2020-11-22 16:34:57
855
原创 1.mybatis源码(1)-一条sql语句中占位符既有#{}也有${} 会不会存在注入的问题
本文测试的表数据(这只是该表部分数据) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLy4Z5mc-1606032514826)(https://i.loli.net/2020/11/22/R8dQL9DksEmT5Yu.png)] StudentMapper.java @Mapper public interface StudentMapper { List<Student> getByName(@Param("stu") Student stud
2020-11-22 16:10:26
512
原创 2.使用@validated校验入参
使用@validated校验入参 GET请求方式使用@Validated来校验入参DTO的属性 @Data public class GetDTO implements Serializable { private static final long serialVersionUID = 3210527646315462832L; @NotEmpty(message = "id不能为空") @ApiModelProperty(value = "账号名称:手机号、邮箱、 系统用户名、或第三
2020-11-06 20:53:52
1327
原创 1.@RequestBody和@RequestParam的区别
post请求 不用@RequestBody注解 @RequestMapping("/post/test") @PostMapping public String testPost(StudentDTO dto) { return dto.toString(); } 如果后台接口是这样写的话,前端请求接口用form-data、x-www-form-urlencoded、application/json这三种方式发送请求,后端接口都不能接收到参数的值。 用@RequestBody注解 @RequestMap
2020-11-01 10:45:31
1283
2
原创 1.根据异常的堆栈信息排查异常出现的原因
根据异常的堆栈信息排查异常出现的原因 异常堆栈信息示例 java.lang.NullPointerException: null at com.fdd.op.common.exception.GlobalExceptionHandler.resolveException(GlobalExceptionHandler.java:222) at com.fdd.op.gateway.server.exception.JsonExceptionHandler.handle(JsonExceptionHandl
2020-10-31 22:14:54
967
原创 RabbitMQ入门篇、介绍RabbitMQ常用的五种模式
RabbitMQ 认识RabbitMQ AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有 RabbitMQ等。 注意事项: 一个队列可以绑定到多个交换机上 RabbitMQ六种工作模式 RabbitMQ官网6种工作模式的介绍:https://www.r
2020-09-13 22:40:48
1080
原创 4.RabbitMQ死信队列
RabbitMQ死信队列 概念介绍 相关概念 DLX:(dead-letter-exchange的缩写)死信队列交换机 DLK:(dead-letter-routing-key的缩写)死信队列routingKey TTL:(time-to-live的缩写)存活时间 DLX、DLK、TTL三者关系的解释 当一个队列A设置了这三个属性时,如果队列A里面的消息变成了死信时,会被路由到与DLX交换机进行绑定的队列上,并且routingKey是DLK指定的。 什么时候消息会变成死信消息呢? 消息被拒绝(ba
2020-09-13 21:39:50
1182
原创 3.RabbitMQ结合发送邮件的场景
RabbitMQ结合发送邮件的场景 主要内容 了解如何实现发送邮件 通过RabbitMQ实现异步发送邮件(避免主要业务进行阻塞) 正文 maven依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outp
2020-09-13 21:36:51
580
原创 2.RabbitMQ的SimpleMessageListenerContainer使用
RabbitMQ的SimpleMessageListenerContainer使用 主要内容 SimpleMessageListenerContainer和ChannelAwareMessageListener的使用 并发配置,设置最小和最大消费者数量 设置消息确认机制(NONE、MANUAL、AUTO三种) 正文 maven依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sour
2020-09-13 21:35:52
5232
1
原创 1.SpringBoot整合RabbitMQ
SpringBoot整合RabbitMQ 主要内容 SpringBoot整合RabbitMQ(SpringBoot 1.3.3.RELEASE版本) 发送数据到rabbitMQ 监听RabbitMQ队列并消费该队列中的消息 整合过程 maven依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.o
2020-09-13 21:33:29
297
原创 InnoDB和MyISAM两者的对比
InnoDB和MyISAM两者的对比 前言 什么叫聚集索引(也叫聚簇索引) 满足一下两点: 数据存储在主键索引中 表行中数据的物理顺序与主键值的逻辑(索引)顺序相同 正文 可参考:https://blog.youkuaiyun.com/qq_35642036/article/details/82820178 事务 InnoDB:InnoDB支持事务,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务 MyISAM:
2020-09-12 20:35:53
370
转载 Redis分布式锁的会出现的问题
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将...
2020-04-26 16:28:06
1129
转载 Java面试官最爱的volatile关键字
在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(JMM),Java并发编程的一些特性都牵扯出来,深入地话还可以考察JVM底层实现以及操作系统的相关知识。 下面我们以一次假想的面试过程,来深入了解下volitile关键字吧! 面试官: Java并发这块了解的怎么样?说说你对v...
2020-02-21 10:32:14
178
原创 1.多线程诊断工具jconsole、jstack、查看字节码
本文主要讲解在多线程下,如何使用诊断工具jconsole、jstack、字节码反编译。 jconsole 首先使用win+r快捷键调出运行窗口,然后再输入jconsole执行。 然后连接自己的程序。 连接好后,可以在线程选项模块中查看各个线程的状态。 jstack 在windows环境下,可以先在cmd命令行执行jps 用以查看相关的程序进程的pid。 在使用jstack pid命令查看...
2020-02-15 10:02:43
524
原创 02.理解线程的stop和interrupt方法的区别
public class Test3 { public static void main(String[] args) { Object o = new Object(); Thread t = new Thread(() -> { synchronized (o) { try { ...
2020-01-27 17:51:39
1896
原创 1.对《Java高并发编程详解:多线程与架构设计》书做一个总结(第一篇)
1.问题分析工具 jconsole jstack jstat jvisualvm jProfiler 前4个工具是在jdk的bin目录下的,最后一个是一个收费的工具。 还有一个class字节码反编译命令:javap -c class文件名 2.线程生命周期的状态 new:线程的创建。 Runnable:可运行状态,就是线程调用了start方...
2020-01-14 14:32:47
443
原创 1.总结一位神秘大佬的话,希望大家看完也能有一些思考
1.关于技术 不要过度追求新技术、新框架,每年流行的都不一样 你确定能追上吗? 框架 就是设计思想的具体实现 是个完整的项目 成千上万人的技术成果 你凭啥觉得自己能全部搞懂 能追的上 等你把新技术、新框架琢磨透了 黄花菜都凉了 我们应该要抓住技术中那些不变的:数据结构、算法、设计模式、计算机底层原理、JVM、多线程、并发、设计思想。这些大部分是脱离了计算机语言或框架...
2020-01-09 21:11:26
244
原创 1.volatile的有序性-单例模式双重检测锁为什么要用volatile?
本篇文章想解释一下单例模式-双重检测锁为什么要用volatile关键字这个问题 先看代码: public class Singleton { static Singleton instance; public Object o; public Singleton() { this.o = new Object(); } static...
2020-01-06 16:27:58
503
1
转载 mysql b+Tree每层能存多少条数据?b+Tree每层有多少分支?
InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。 在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),...
2019-12-05 10:21:07
3635
2
原创 1.sql表关联查询没走索引
背景:A表字段aid和B表的aid是关联的字段,并在各自的表中 该字段都建了索引,但是A和B表同过aid关联查询时却没有走索引。 原因: 1.可能是aid在A表和B表的字符集不相同,字符集不相同会导致不走索引。 ...
2019-10-31 09:49:24
1420
原创 02.Linux设置tomcat传输数据大小maxPostSize
遇到两次这个问题,记录一下。 登录的时候后台获取不到验证码,本地环境是tomcat7.32,服务器是tomcat7.82,一样的配置,本地没有发生这样的情况。查询资料发现tomcat7配置的时候,把maxPostSize=”0”的配置去掉的时候问题消失。 根据以往的经验,maxPostSize=”0”不就是不限制post数据的大小的么,怎么还反倒限制了数据的大小了呢? 因为项目里面要post一...
2019-10-11 20:38:33
686
原创 01.Linux设置tomcat远程debug端口
首先使用idea远程debug的方式: 设置过程: 1.首先进入到tomcat的bin目录,然后修改该目录下的catalina.sh 添加或将JAVA_OPTS设置为如下: JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5555" 其中address=5555设置的就是远程调用使用...
2019-10-11 20:32:59
919
原创 01_jenkins的安装
安装环境的要求: 最低配置: 不少于256M内存,不低于1G磁盘,jdk版本>=8 安装步骤: 安装jdk1.8://为了方便,这里安装openjdk yum install -y java-1.8.0-openjdk wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenki...
2019-10-08 22:23:54
145
原创 idea中tomcat输出日志乱码
tomcat乱码输出如上, 解决办法: 在idea安装目录的bin目录下面,找到idea.exe.vmoptions和idea64.exe.vmoptions文件,并在这两个文件的末尾加上一下两行配置 -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8 最后成功。 ...
2019-08-06 10:12:52
205
原创 Calendar的灵活使用
Calendar calendar = Calendar.getInstance(); //当前时间往后加一天 calendar.add(Calendar.DAY_OF_MONTH, 1); //当前时间往后加3小时 calendar.add(Calendar.HOUR_OF_DAY, 3); Date newDate = calendar.getTime(); ...
2019-06-05 10:07:07
262
原创 maven 引用其他项目引用的包出现BOOT-INF问题
maven 引用其他项目引用的包的子模块出现BOOT-INF问题 在B项目中引入A项目的类,但是发现怎么也引入不进来 再来看看依赖进来的jar,发现被依赖进来A项目的包下面多了一个BOOT-INF目录, 再去A项目里面找原因,发现在A项目的pom.xml文件中有一个maven的打包插件 <build> <plugins> <...
2019-05-28 09:56:48
3285
1
idea2020-mybatis_log_plugin.rar
2021-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅