- 博客(4)
- 收藏
- 关注
原创 透过DCL单例深入理解volatile关键字作用与原理
譬如:某一时刻有N个线程调用此方法,其中只有一个线程可以进入被synchronized修饰的代码块中,其他N-1个线程都被阻塞在外,当第一个线程初始化单例完成后,释放锁,如果不加singleton==null的话就会造成重复。2.lock指令:总线锁,在同一时刻只有一个线程能操作内存(主存)中的数据,会导致其他CPU核心中的缓存失效(缓存一致性协议:MESI),所有cpu都有这个指令。当然,指令重排序在单线程的中不会有问题,因为指令重排序的定义就是:指令重排序不会影响单线程环境下的结果最终一致性。
2024-07-08 10:26:28
913
1
原创 Nacos服务器ip和项目ip不同导致服务无法访问
公司的开发环境服务器很久不用了,导致调试功能和查找bug都不是很方便,所以就琢磨着直接在idea本地项目连接测试环境的数据库,在历经千辛万苦的摸索之后,终于连上了测试环境的数据库,但是随之而来的新问题更让人头疼,真是一波还未平息,一波又来侵袭~。公司的测试服务器是阿里云,而我idea本地启动项目是在公司的内网,这就导致本地启动的项目注册到nacos后的地址仍然是内网地址,从而通过网关访问找不到注册的服务,直接报错502Bad Gateway。这里我使用的是网云穿(有免费套餐),免费的还有Natapp。
2024-06-28 15:38:34
863
原创 在Java项目中连接需要SSH隧道的数据库
提供的ssh转发功能实现:使用servlet监听器在web项目启动时连接到ssh服务器,在初始化dataSource时将数据库连接请求转发到目标数据库,后续所有对数据库的操作都通过转发实现对目标数据库的操作。公司的开发环境已经日式衰微,再加上测试人员测试都在测试环境上,但是测试环境的数据库需要通过ssh隧道才能连接上,于是研究了一波,才有了下文。最后数据库如下配置,我这里使用的是Druid连接池。
2024-06-27 10:55:45
571
原创 MYSQL中var和varchar类型的区别
我们在建表的时候如果使用char的话,那么使用char类型的字符串占用的字节空间是固定的,如果长度不满50个字符,则会默认填充0(二进制)。例如:该字段只存放了长度为20的字符串,那么该字段实际占用字节数就是字符串长度的字节数(但是mysql会维护一个字段去保存使用varchar类型的字段的实际长度,若长度小于255,则维护的字段是一个字节,若大于255,则需要两个字节),所以varchar的实际占用字节数=字符串占用字节数+保存字符串占用字节数的字节。
2024-06-25 11:07:05
284
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人