- 博客(27)
- 资源 (3)
- 收藏
- 关注
原创 Mybatis源码-一条sql语句中占位符既有#{}也有${} 会不会存在注入的问题
Mybatis源码-一条sql语句中占位符既有#{}也有${} 会不会存在注入的问题本文测试的表数据(这只是该表部分数据)StudentMapper.java@Mapperpublic interface StudentMapper { List<Student> getByName(@Param("stu") Student student);}先分析一条sql语句的占位符全是#{}的情况mapper.xml查询语句<select id="getByName
2020-11-22 16:34:57 730
原创 1.mybatis源码(1)-一条sql语句中占位符既有#{}也有${} 会不会存在注入的问题
本文测试的表数据(这只是该表部分数据)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLy4Z5mc-1606032514826)(https://i.loli.net/2020/11/22/R8dQL9DksEmT5Yu.png)]StudentMapper.java@Mapperpublic interface StudentMapper { List<Student> getByName(@Param("stu") Student stud
2020-11-22 16:10:26 409
原创 2.使用@validated校验入参
使用@validated校验入参GET请求方式使用@Validated来校验入参DTO的属性@Datapublic class GetDTO implements Serializable { private static final long serialVersionUID = 3210527646315462832L; @NotEmpty(message = "id不能为空") @ApiModelProperty(value = "账号名称:手机号、邮箱、 系统用户名、或第三
2020-11-06 20:53:52 1152
原创 1.@RequestBody和@RequestParam的区别
post请求不用@RequestBody注解@RequestMapping("/post/test")@PostMappingpublic String testPost(StudentDTO dto) { return dto.toString();}如果后台接口是这样写的话,前端请求接口用form-data、x-www-form-urlencoded、application/json这三种方式发送请求,后端接口都不能接收到参数的值。用@RequestBody注解@RequestMap
2020-11-01 10:45:31 1125 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 821
原创 RabbitMQ入门篇、介绍RabbitMQ常用的五种模式
RabbitMQ认识RabbitMQAMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有 RabbitMQ等。注意事项:一个队列可以绑定到多个交换机上RabbitMQ六种工作模式RabbitMQ官网6种工作模式的介绍:https://www.r
2020-09-13 22:40:48 968
原创 4.RabbitMQ死信队列
RabbitMQ死信队列概念介绍相关概念DLX:(dead-letter-exchange的缩写)死信队列交换机DLK:(dead-letter-routing-key的缩写)死信队列routingKeyTTL:(time-to-live的缩写)存活时间DLX、DLK、TTL三者关系的解释当一个队列A设置了这三个属性时,如果队列A里面的消息变成了死信时,会被路由到与DLX交换机进行绑定的队列上,并且routingKey是DLK指定的。什么时候消息会变成死信消息呢?消息被拒绝(ba
2020-09-13 21:39:50 873
原创 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 473
原创 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 4770 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 211
原创 InnoDB和MyISAM两者的对比
InnoDB和MyISAM两者的对比前言什么叫聚集索引(也叫聚簇索引)满足一下两点:数据存储在主键索引中表行中数据的物理顺序与主键值的逻辑(索引)顺序相同正文可参考:https://blog.csdn.net/qq_35642036/article/details/82820178事务InnoDB:InnoDB支持事务,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务MyISAM:
2020-09-12 20:35:53 271
转载 Redis分布式锁的会出现的问题
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将...
2020-04-26 16:28:06 1040
转载 Java面试官最爱的volatile关键字
在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(JMM),Java并发编程的一些特性都牵扯出来,深入地话还可以考察JVM底层实现以及操作系统的相关知识。下面我们以一次假想的面试过程,来深入了解下volitile关键字吧!面试官: Java并发这块了解的怎么样?说说你对v...
2020-02-21 10:32:14 117
原创 1.多线程诊断工具jconsole、jstack、查看字节码
本文主要讲解在多线程下,如何使用诊断工具jconsole、jstack、字节码反编译。jconsole首先使用win+r快捷键调出运行窗口,然后再输入jconsole执行。然后连接自己的程序。连接好后,可以在线程选项模块中查看各个线程的状态。jstack在windows环境下,可以先在cmd命令行执行jps 用以查看相关的程序进程的pid。在使用jstack pid命令查看...
2020-02-15 10:02:43 433
原创 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 1710
原创 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 366
原创 1.总结一位神秘大佬的话,希望大家看完也能有一些思考
1.关于技术不要过度追求新技术、新框架,每年流行的都不一样 你确定能追上吗?框架 就是设计思想的具体实现 是个完整的项目成千上万人的技术成果 你凭啥觉得自己能全部搞懂 能追的上等你把新技术、新框架琢磨透了 黄花菜都凉了我们应该要抓住技术中那些不变的:数据结构、算法、设计模式、计算机底层原理、JVM、多线程、并发、设计思想。这些大部分是脱离了计算机语言或框架...
2020-01-09 21:11:26 189
原创 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 408 1
转载 mysql b+Tree每层能存多少条数据?b+Tree每层有多少分支?
InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),...
2019-12-05 10:21:07 3483 2
原创 1.sql表关联查询没走索引
背景:A表字段aid和B表的aid是关联的字段,并在各自的表中 该字段都建了索引,但是A和B表同过aid关联查询时却没有走索引。原因:1.可能是aid在A表和B表的字符集不相同,字符集不相同会导致不走索引。...
2019-10-31 09:49:24 1254
原创 02.Linux设置tomcat传输数据大小maxPostSize
遇到两次这个问题,记录一下。登录的时候后台获取不到验证码,本地环境是tomcat7.32,服务器是tomcat7.82,一样的配置,本地没有发生这样的情况。查询资料发现tomcat7配置的时候,把maxPostSize=”0”的配置去掉的时候问题消失。根据以往的经验,maxPostSize=”0”不就是不限制post数据的大小的么,怎么还反倒限制了数据的大小了呢?因为项目里面要post一...
2019-10-11 20:38:33 584
原创 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 796
原创 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 102
原创 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 144
原创 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 198
原创 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 3100 1
idea2020-mybatis_log_plugin.rar
2021-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人