- 博客(109)
- 收藏
- 关注
原创 【思维导图】并发编程
偏向锁就是当一个线程想要获取锁时,会在对象头中存储这个线程id并且将对象头里的偏向锁标识设置为1,如果下次同一个线程想要再次获取同一把锁时,首轻先判断的就是对象头中的线程id是否与自己的相同,如果相同,则这个线程直接获取锁成功。而如果不同的线程想要获取这把锁,则会将这个偏向锁升级为轻量级锁。乐观锁认为自己在使用数据时不会有其他线程来修改数据,因此在读取数据时不会添加锁,只有修改数据前数据是否有被其他线程修改,如果没有其他线程修改,那么就放心大胆的修改数据,而如果数据被其他线程修改,那么自己就修改数据失败。
2025-01-31 20:53:36
922
原创 【思维导图】java
封装就是使用private修饰属性或方法,这样类的对象就没法直接访问或修改属性,只能通过get/set方法进行访问或修改。封装的好处:降低代码的耦合度,利于维护;通过get/set方法访问属性的时候,可以增加一些额外的逻辑,这是单独访问属性无法做到的。继承就是子类继承父类,子类继承了父类所有的方法和属性。并且子类还可以增加一些自己的属性和方法。继承的好处是提高代码的复用性,比如说一个类想要拥有另一个类的属性和方法,就可以采用继承的方式实现。
2025-01-30 10:40:35
1102
原创 jdk1.7的hashmap为什么会出现死循环问题
如果数组的这个下标位置中有元素且判断出这个元素的key与待插入的元素key相等,那么用新元素的value值替换,结束。需要注意的是线程1和线程2的e都指向了key:3这个元素,e.next都指向了key:7这个元素。假设现在线程1挂起,线程2接着执行transfer方法剩余的逻辑,得到如下新扩容后的数组,因为是头插法,导致7和3的位置颠倒了。由于一个线程使用的是头插法进行迁移数据到新开辟的数组中,使得链表中的数据是颠倒的顺序。线程1自己也开了个扩容后的新数组,但是头插法插入元素仍然是用的上图元素的地址。
2024-11-15 18:00:13
427
原创 Servlet.service() for servlet [dispatcherServletnested exception is java.lang.NullPointerException错误
NullPointerException、servlet 、dispatcherServletnested
2024-08-30 17:58:20
267
原创 docker启动mysql报错:Exited (1) 6 minutes ago: Failed to find valid data directory…;连接mysql报错2003。解决思路
docker启动mysql报错:Exited (1) 6 minutes ago: Failed to find valid data directory…;连接mysql报错2003
2024-08-27 17:09:15
299
原创 ### Cause: java.sql.SQLException: The server time zone value ‘�й���ʱ��‘ is unrecognized……异常解决
settings-->editor-->Inspections-->将Mapper xml inspection 的勾去掉。解决方法:在连接数据库的配置文件中的url后面添加上时区。1.在学mybatis入门程序的时候出现标题这个错误。这样namespace写啥都不会报错。
2024-05-04 10:08:27
341
原创 mybatis出现类似于’Cause: java.sql.SQLException: Parameter index out of range (4 > number of parameters, …
错误记录
2024-04-13 19:54:53
387
原创 could not find artifact mysql:mysql-connector-java:pom:8.0.36 in aliyunmaven问题解决
一开始,我还以为自己需要手动引入mysql jar包到本地仓库,解决方法:只要修改成 "#" 就解决了。然后就是各种搜索要怎么手动引入……
2024-04-01 20:25:19
1662
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人