MyBatis中$和#的区别

日常 

在MyBatis中,$和#是两种不同的参数占位符语法,它们在SQL语句中的使用方式和执行效果是不同的。$符号表示占位符的值会被直接拼接到SQL语句中,不会进行预编译处理。这意味着,$符号后的参数值会被直接替换到SQL语句中,而不是被编译为参数,并在执行前传递给数据库。因此,使用$符号时需要注意SQL

使用Crontab创建定时任务

运维 

介绍crond 和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。crond是它的守护进程。cron服务是一个定时执行的服务,可以通过

解决因添加同步锁导致的事务失效问题


在使用@Transactional注解的方法内部使用synchronized,在方法执行完毕后锁就会被释放,而此时事务可能还没有被提交,此时若有其他线程对数据进行修改会出现并发安全问题。若将锁加在函数调用的地方,将整个方法进行加锁。这样当方法执行完毕且事务也提交完毕之后锁才会被释放。public i

第三章-运行时数据区

JVM 

运行时数据区概述及线程前言本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区运

第二章-类加载机制

JVM 

内存结构概述简图详细图中文版注意:方法区只有HotSpot虚拟机有,J9,JRockit都没有类加载器子系统类加载器子系统作用:类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则

第一章-JVM与Java体系架构

JVM 

JVM的架构模型Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。具体来说:这两种架构之间的区别:基于栈的指令集架构基于栈式架构的特点:设计和实现更简单,适用于资源受限的系统;避开了寄存器的分配难题:使用零地址指令方式分配指令流中的指令大部分是零

SpringBoot日志相关


调试代码运营期间记录信息峰值流量,平均响应时长报错信息记录运维数据,扩容、宕机、报警日志级别TRAC:运行堆栈信息DEBUG:程序员调试代码使用INFO:记录运维过程数据WARN:记录运维过程报警数据ERROR:记录错误堆栈信息FATAL:灾难信息(已与ERROR合并)基础使用引入lombok依赖创

Spring部分底层原理


SPring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。Spring的构成核心容器(Spring Core)核心容器提供Spring框架的基础功能。Spring以bean的方式进行java应用的各大组件及关系的组织和管理。Spring使用BeanFactory来产生和管理bean

RSET风格

日常 

REST(Representational State Transfer)传统风格资源描述形式:http://localhost/user/getById?id=1http://localhost/user/saveUserREST风格描述形式http://localhost/user/1http:

SpringBoot临时配置及多环境配置编写


临时属性设置不修改application.yml文件即可修改端口号等信息java -jar xxx.jar --server:port=8080将启动端口临时设置为8080,其中server.port为properties文件中的书写格式如需修改多个属性,使用空格分割即可java -jar xxx.