- 博客(15)
- 收藏
- 关注
原创 你知道为什么String被设计为是不可变的
3.缓冲hashcode,在java中很多地方都会使用到,所以在String创建的时候就会计算hashcode值,然后保存在hash上,使用的时候直接取,提高效率。1.利用常量池的特性,达到复用,节省内存空间,比如S1和S2的值相同,那么会指向同一个常量。String是一个常量,一旦我们创建就没有办法改变它的值(不考虑反射特殊场景)2.用作HashMap的k的时候,k有一个最重要的特性就是不可变。4.线程安全,因为不可变,所以天然的保证线程安全。
2023-06-01 17:21:17
149
1
原创 springMVC的流程
用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件。 前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc.xml中配置的或者注解的url与对应的处理类找到并进行存储,用map<url,handler>这样...
2021-03-19 17:21:33
121
原创 事务的基本要素(ACID)、事务的并发问题、MySQL事务隔离级别
事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据
2021-03-19 17:19:08
143
原创 MySQL中InnoDB和MyISAM对比
事务 InnoDB支持事务 InnoDB支持行级锁 锁 MyISAM不支持事务 MyISAM支持表级锁定 存储 InnoDB,基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,它的索引文件和数据是存放到一起的,MyISAM是分开存储的。 MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型, .frm文件存储表定义,数据文件的扩展名为.MYD, 索引文件的扩展名是.MYI。 索引 InnoDB(.
2021-03-19 17:14:36
299
原创 CAS的ABA问题
一、什么是ABA问题? 考虑如下操作: 并发1(上):获取出数据的初始值是A,后续计划实施CAS乐观锁,期望数据仍是A的时候,修改才能成功 并发2:将数据修改成B 并发3:将数据修改回A 并发1(下):CAS乐观锁,检测发现初始值还是A,进行数据修改 上述并发环境下,并发1在修改数据时,虽然还是A,但已经不是初始条件的A了,中间发生了A变B,B又变A的变化,此A已经非彼A,数据却成功修改,可能导致错误,这就是CAS引发的所谓的ABA问题。 二、解决办法 ABA问题的优化 ABA问题导.
2021-03-19 17:04:54
250
原创 sleep和wait的区别
一、sleep是线程方法,wait是Object方法 二、sleep不释放lock,wait会释放 三、sleep不依赖同步方法,wait需要 四、sleep不需要被唤醒,wait需要
2021-03-19 16:59:22
117
原创 抽象类和接口的区别
抽象类: 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。抽象类的特点: a、抽象类不能被实例化只能被继承; b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法; c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public; d、一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类; e、抽象类可以包含属性、方法、构造方法,但是构
2021-03-19 16:57:15
101
原创 fastjson中List 转 JSONArray、JSONArray 转 List、String 转 List
.List 转 JSONArray JSONArray array = new JSONArray(); List<T> list = JSONObject.parseArray(array.toJSONString(), T.class); JSONArray 转 List JSONArray cases = JSONArray.parseArray(JSON.toJSONString(list)); String 转 List List<T> list = JSON.
2020-09-25 13:36:23
371
原创 Mysql5.7报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
问题出现的原因:MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。) 方法一: 用sql查询: select @@gl
2020-09-24 17:12:23
219
原创 SpringBoot实体类加上@Data无法使用getter/setter方法的解决方法
1.添加pom文件 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> </dependency> 2.安装Lombok插件 settings ---->plugins ----->搜索Lombok--...
2020-09-18 21:08:02
1036
1
原创 springboot1.x和springboot2.x中RedisCacheManagerde的变化,把jdk序列化变成json序列化
在springboot 2.x的版本RedisCacheManager和1.x的版本有很大的区别 在1.x中写法如下 @Configuration public class MyRedisConfig { @Bean public RedisTemplate<Object, Empoyee> stuRedisTemplate( RedisConnectionFactory redisConnectionFactory) thr...
2020-09-18 21:07:30
263
原创 使用idea的时候修改连接数据库的url启动后连接的还是以前的数据库url
今天帮同学解决一个连接数据库的问题(使用的软件idea),明明已经在配置文件中修改了连接数据库的url,但是使用的还是修改前的url,导致读取不出数据库中的内容。原因的你修改的代码,没有更新到你布置的tomcat中,解决方法如下。 1.找到你的项目路径 2.进入如下路径,用记事本打开你的配置文件 3.你会看到里面的文件和你idea写的内容不同,手动修改一下就可以了,然后去idea中直接运行就可以了 ...
2020-09-18 21:06:47
2164
原创 ajax和$post请求不执行回调函数
$.ajax({ url:"/user/register",//url地址 dataType:"json",//返回的数据类型 type:"post",//发起请求的方式,get/post data:$("#registerForm").serialize(), succ...
2020-09-18 21:06:14
962
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅