- 博客(15)
- 收藏
- 关注
原创 你知道为什么String被设计为是不可变的
3.缓冲hashcode,在java中很多地方都会使用到,所以在String创建的时候就会计算hashcode值,然后保存在hash上,使用的时候直接取,提高效率。1.利用常量池的特性,达到复用,节省内存空间,比如S1和S2的值相同,那么会指向同一个常量。String是一个常量,一旦我们创建就没有办法改变它的值(不考虑反射特殊场景)2.用作HashMap的k的时候,k有一个最重要的特性就是不可变。4.线程安全,因为不可变,所以天然的保证线程安全。
2023-06-01 17:21:17
71
1
原创 springMVC的流程
用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件。 前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc.xml中配置的或者注解的url与对应的处理类找到并进行存储,用map<url,handler>这样...
2021-03-19 17:21:33
71
原创 事务的基本要素(ACID)、事务的并发问题、MySQL事务隔离级别
事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据
2021-03-19 17:19:08
98
原创 MySQL中InnoDB和MyISAM对比
事务InnoDB支持事务InnoDB支持行级锁锁MyISAM不支持事务MyISAM支持表级锁定存储InnoDB,基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,它的索引文件和数据是存放到一起的,MyISAM是分开存储的。MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型, .frm文件存储表定义,数据文件的扩展名为.MYD, 索引文件的扩展名是.MYI。索引InnoDB(.
2021-03-19 17:14:36
235
原创 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
167
原创 sleep和wait的区别
一、sleep是线程方法,wait是Object方法二、sleep不释放lock,wait会释放三、sleep不依赖同步方法,wait需要四、sleep不需要被唤醒,wait需要
2021-03-19 16:59:22
64
原创 抽象类和接口的区别
抽象类:抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。抽象类的特点:a、抽象类不能被实例化只能被继承;b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;d、一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类;e、抽象类可以包含属性、方法、构造方法,但是构
2021-03-19 16:57:15
57
原创 fastjson中List 转 JSONArray、JSONArray 转 List、String 转 List
.List 转 JSONArrayJSONArray array = new JSONArray();List<T> list = JSONObject.parseArray(array.toJSONString(), T.class);JSONArray 转 ListJSONArray cases = JSONArray.parseArray(JSON.toJSONString(list));String 转 ListList<T> list = JSON.
2020-09-25 13:36:23
286
原创 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
163
原创 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
759
1
原创 springboot1.x和springboot2.x中RedisCacheManagerde的变化,把jdk序列化变成json序列化
在springboot 2.x的版本RedisCacheManager和1.x的版本有很大的区别在1.x中写法如下@Configurationpublic class MyRedisConfig { @Bean public RedisTemplate<Object, Empoyee> stuRedisTemplate( RedisConnectionFactory redisConnectionFactory) thr...
2020-09-18 21:07:30
208
原创 使用idea的时候修改连接数据库的url启动后连接的还是以前的数据库url
今天帮同学解决一个连接数据库的问题(使用的软件idea),明明已经在配置文件中修改了连接数据库的url,但是使用的还是修改前的url,导致读取不出数据库中的内容。原因的你修改的代码,没有更新到你布置的tomcat中,解决方法如下。1.找到你的项目路径2.进入如下路径,用记事本打开你的配置文件3.你会看到里面的文件和你idea写的内容不同,手动修改一下就可以了,然后去idea中直接运行就可以了...
2020-09-18 21:06:47
1923
原创 ajax和$post请求不执行回调函数
$.ajax({ url:"/user/register",//url地址 dataType:"json",//返回的数据类型 type:"post",//发起请求的方式,get/post data:$("#registerForm").serialize(), succ...
2020-09-18 21:06:14
833
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人