- 博客(21)
- 收藏
- 关注
原创 mybatis中常见配置概述
原生的JDBC,驱动连接,sql处理,结果集映射,参数转换都需要自己处理,比较麻烦。使用连接池进行连接的统一管理;SQL和代码分离,集中管理;结果集映射处理;参数映射和动态sql拼接重复sql提取缓存处理插件机制。
2023-04-15 11:06:04
254
原创 ReentrantLock源码分析
从上面可以清晰的看出,公平锁和非公平锁的差别就是,非公平锁上来之后,先用CAS的方式更改state的状态,更改成功,表示获取锁资源成功。因为在addWaiter操作时,是先将当前Node的prev指针指向前面的节点,然后是将tail赋值给当前Node,最后才是能上一个节点的next指针,指向当前Node。CAS的调用,compareAndSetState(0,1)调用的是AQS中的方法,本质是调用unsafe.compareAndSwapInt()方法,是一个原子方法;
2023-03-15 01:51:50
263
原创 并发编程中原子性,有序性,可见性
CPU在处理时,需要将主内存数据同步到寄存机中再执行指令,执行完指令后,需要将寄存器数据扔回到主内存中,但是寄存器数据同步到主内存是遵循MESI协议的,换句话说,不是每次操作结束就将CPU缓存数据同步到主内存,造成多个线程看到的数据不一样。:指令在CPU调度执行时,CPU会为了提升执行效率,在不影响结果的前提下(满足happens-before原则),对CPU指令进行重新排序。可以通过加锁实现操作的原子性,java中加锁有两种形式,通过synchronized关键字,lock锁。:单例模式DCL双重判断。
2023-03-14 23:54:46
41
原创 i++不是原子性原理性验证(java)
第三步: 然后在当前目录执行javap -v Test.class,会展示出对应的汇编指令。而并发编程的原子性指的是:一个或多个指令在CPU执行过程中不允许中断的。事务是一个最小的执行的单位,一次事务的多次操作要么都成功,要么都失败。答案是否定的,下面通过查看i++对应的汇编指令,进行相应的证明。:将CPU寄存器中的结果甩到主内存中。:从主内存拉取数据到CPU寄存器;:在寄存器内部对数据进行+1;
2023-03-14 23:41:51
145
原创 logback.xml配置文件详解
日志级别从低到高:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。当日志的级别大于或等于设置的日志级别时才会输出。
2023-02-25 16:27:31
5935
原创 JWT官网中文简介
jwt全称是JSON WEB TOKEN:JSON Web TOKEN(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输JSON对象信息。此信息可以被验证和信任,因为它是数字签名的。JWT可以使用秘钥(如:使用HMAC算法)或公钥/私钥对(如:使用RSA或ECDSA)进行签名。
2023-02-25 10:45:27
792
原创 链表中的节点每k个一组翻转-java实现
如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样。将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表。
2023-02-20 08:23:28
491
原创 java中依赖冲突利用idea如何解决
首先打开pom.xml文件,点下面的Dependency Analyzer,然后搜索产生冲突的jar包路径信息,如springfox,可以查出对应的冲突信息,然后排除下对应的依赖即可。
2023-02-08 22:08:22
354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人