10 2021 档案
摘要:在企业开发中, 对数据库的批量操作, 是一个非常常见的操作, Mybatis提供了批量执行器, 来支持批量操作. 1. Mybatis sql执行器 Mybatis 支持全局修改执行器, 参数名为: defaultExecutorType. 但是笔者并不推荐这种方式,笔者建议在获取sqlSessio
阅读全文
摘要:前言 在我们平时开发中,使用数据库连接池时使用阿里的Druid连接池已经比较常见了,但是我们在集成到Springboot时似乎非常简单,只需要简单的配置即可使用,那么Druid是怎么加载的呢,本文就从源码层面进行揭秘 使用 首先简单的介绍下如何使用 1、pom.xml加载jar包,直接使用集成spr
阅读全文
摘要:在用springboot做接口开发时,遇到一个问题:Getting NoSuchMethodError:javax.servlet.ServletContext.getVirtualServerName() 原因是: getVirtualServerName 方法是在 servlet3.1之后引入的
阅读全文
摘要:在使用springboot集成mybatis时,可能会遇到这个问题。 出现这个问题的原因一般是: Mapper interface和xml文件的定义对应不上(需要检查包名,namespace) 函数名称等能否对应不上(需要比较细致的对比,经常就写错了一两个字母搞的很长时间找不到错误) 解决的思路一般
阅读全文
摘要:回顾一下类加载过程 类加载过程:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。 一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去自定义类加载器去控制字节流的获取方式(重写一个类加载器的 loadClass() 方法)。 数组类型不
阅读全文
摘要:类的生命周期 类加载过程 加载 验证 准备 解析 初始化 卸载 类的生命周期 一个类的完整生命周期如下: 类加载过程 Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢? 系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分
阅读全文
摘要:为什么要把堆和栈区分出来呢? 堆中存什么?栈中存什么? 为什么不把基本类型放堆中呢? 为什么要把堆和栈区分出来呢? 第一,从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这样分开,使得处理逻辑更为清晰。分而治之的思想。这种隔离、模块化的思想在软件设计的方方面面都有体现。 第二,堆与栈的分离,使
阅读全文
摘要:ApplicationContext对象是Spring开源框架的上下文对象实例,在项目运行时自动装载Handler内的所有信息到内存。 传统的获取方式有很多种,不过随着Spring版本的不断迭代,官方也慢慢的不建议使用部分方式。 下面我简单介绍一种Spring官方推荐使用的方式! 基于SpringB
阅读全文
摘要:注意:调用者要被spring管理 目录 方式一 注解@PostConstruct 方式二 启动类ApplicationContext 方式三 手动注入ApplicationContext 方式一 注解@PostConstruct import com.example.javautilsproject
阅读全文
摘要:这里使用fastJson的JSON.parseObject()方法,左边是json字符串,右边是要转换的实体类,即上面生成的实体类 String jsonResult = getGJInquirtTicketJsonStr(departCity, arriveCity, startDate); Sy
阅读全文
摘要:首先讲一下hashMap扩容为2的幂次.为什么呢? 假设HashMap的容量为15转化成二进制为1111,length-1得出的二进制为1110 哈希值为1111和1110 那么两个索引的位置都是14,就会造成分布不均匀了,增加了碰撞的几率,减慢了查询的效率,造成空间的浪费。 总结:因为2的幂-1都
阅读全文
摘要:Java开发工具 Idea Java反编译工具 Java Decompiler
阅读全文
摘要:实现ApplicationRunner,并重写run方法即可 @Component public class InitPortJob implements ApplicationRunner { private final static Logger logger = LoggerFactory.g
阅读全文
摘要:默认情况下,Spring 为我们提供了一个 RedisTemplate 来进行对 Redis 的操作,但是 RedisTemplate 默认配置的是使用Java本机序列化。 这种序列化方式,对于操作字符串或数字来说,用起来还行,但是如果要对对象操作,就不是那么的方便了。 所以我们需要配置合适的序列化
阅读全文
摘要:使用fluent mybatis可以不用写具体的xml文件,通过java api可以构造出比较复杂的业务sql语句,做到代码逻辑和sql逻辑的合一。 不再需要在Dao中组装查询或更新操作,在xml或mapper中再组装参数。 那对比原生Mybatis, Mybatis Plus或者其他框架,Flue
阅读全文
摘要:String s1 = new String("abc");这句话创建了几个字符串对象? 会创建 1 或 2 个字符串: 如果字符串常量池中已存在字符串常量“abc”,则只会在堆空间创建一个字符串常量“abc”。 如果字符串常量池中没有字符串常量“abc”,那么它将首先在字符串常量池中创建,然后在堆
阅读全文
摘要:Java 基本类型的包装类的大部分都实现了常量池技术。 Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回 True Or False。
阅读全文
摘要:1. 准备工作 2. su 命令介绍及主要用法 2.1 - 参数 2.2 切换到指定用户 2.3 -c 参数 3. sudo 命令介绍及主要用法 3.1 主要用法 3.2 sudo 工作原理 3.3 思考 4. 二者的差异对比 这篇文章来系统总结一下 su 和 sudo 这两个命令。 1. 准备工作
阅读全文
摘要:虽然线程组看上去很有用处,实际上现在的程序开发中已经不推荐使用它了,主要有两个原因: 1.线程组ThreadGroup对象中比较有用的方法是stop、resume、suspend等方法,由于这几个方法会导致线程的安全问题(主要是死锁问题),已经被官方废弃掉了,所以线程组本身的应用价值就大打折扣了。
阅读全文
摘要:如果给你一个包含一亿行数据的超大文件,让你在一周之内将数据转化导入生产数据库,你会如何操作? 由于时间紧,而数据量又超大,所以需要: 拆分文件 多线程导入 拆分文件 首先我们可以写个小程序,或者使用拆分命令 split 将这个超大文件拆分一个个小文件。 -- 将一个大文件拆分成若干个小文件,每个文件
阅读全文
摘要:多继承虽然能使子类同时拥有多个父类的特征,但是其缺点也是很显著的,主要有两方面: (1)如果在一个子类继承的多个父类中拥有相同名字的实例变量,子类在引用该变量时将产生歧义,无法判断应该使用哪个父类的变量。 例如:类ClassA: public class ClassA { protected int
阅读全文
摘要:引言 什么是跨域(CORS) 什么情况会跨域 解决方案 前端解决方案 后端解决方案 具体方式 一、使用Filter方式进行设置 二、继承 HandlerInterceptorAdapter 三、实现 WebMvcConfigurer 四、使用Nginx配置 五、使用 @CrossOrgin 注解 S
阅读全文
摘要:事务回滚机制 其实,讨论MySQL的事务回滚机制,也就是在说MySQL的事务原子性是如何实现的(关于事务之前文章中有过简单介绍)。 所谓原子性,就是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做;如果事务中的一个sql语句执行失败,则已执行的语句必须回滚,数据库会退回到事务前的状
阅读全文
摘要:我们知道Redis是支持事务的,但是它里面的事务为什么不支持回滚呢? 1.在Redis中,命令只会因为错误的语法而失败,或者是命令用在了错误类型的键上面; 也就是说,从实用的角度说,失败的命令是由编译错误造成的,而这些错误应该在开发过程中被发现,而不应该出现在生产环境中。 2.因为不需要对回滚进行支
阅读全文