- 博客(22)
- 收藏
- 关注
原创 HashMap看这一遍就够了
/确定了数组拓容阈值为capacity*loadFactor=16*0.75=12。//this(数组初始长度:16,负载因子:0.75)//capacity最终结果一定是2的n次幂。//确定了负载因子为0.75。//数组初始长度为16。
2023-07-13 12:04:47
126
原创 CAS,AQS,volatile,native,synchronized,lock关键字解读以及它们之间的联系(高频面试)
lfence:load | 在lfence指令前的读操作当必须在lfence指令后的读操作前完成。缓存一致性协议:现代CPU的数据一致性实现 = 缓存锁(MESI ...) + 总线锁(据说是拉高北桥芯片上的一根电容,把通往资源的通道堵死,达到资源独占的目的)astore_1,指令重排乱序,先执行了m=0默认值,然后赋值给Instance(astore_1这个操作),然后才赋的初始值m=8。底层是基于AQS实现的,有一个基于CAS维护的state变量来实现锁的操作,而ReentrantLock是;
2023-07-12 18:11:47
223
原创 多线程,并发编程(一)
不同的硬件和不同的操作系统在内存上的操作有一定差异的。Java为了解决相同代码在不同操作系统上出现的各种问题,用JMM屏蔽掉各种硬件和操作系统带来的差异。让Java的并发编程可以做到跨平台。JMM规定所有变量都会存储在主内存中,在操作的时候,需要从主内存中复制一份到线程内存(CPU内存),在线程内部做计算。然后再写回主内存中(不一定!原子性的定义:原子性指一个操作是不可分割的,不可中断的,一个线程在执行时,另一个线程不会影响到他。i < 100;i++) {
2023-07-11 16:35:43
451
1
原创 Runtime Data Area(运行时数据区)
为了提高io的访问速度,1.7之后jvm新增了直接内存,jvm可以直接访问操作系统管理的内存,用户空间可以直接访问内核空间,归操作系统管(NIO,零拷贝)1.7(永久代 permanert space).启动前必须指定内存大小,不能更改,字符串常量在这,在1.8之后位于堆,FGC不会清理。栈遵循先进后出的原则,一个java线程对应一个栈,每一个方法对应一个栈帧,方法执行完之后出栈。每一个局部便变量表操作时,都会进栈,用完出栈,在赋值给局部变量表。符号引用转直接引用,找到调用的方法。堆的内存划分之后再说。
2023-07-05 17:32:08
82
1
原创 GarBage Collector And GC tuning垃圾回收和调优(二)
设置新生代大小为10M,最小堆大小40M,最大堆大小60M,打印 这个文件运行jvm的命令 行参数,打印GC信息。永久代:必须指定限定大小,常常产生内存溢出,元数据不需要指定,也可以指定,上限取决于物理内存大小。1.6,.1.7传统行业CMS(1.4之后就有了),1.7才有的G1,一般1.8才用G1,1.9默认G1。内存泄漏指对象用完没有回收,一直占着这块地,内存溢出是指不断产出对象,内存撑不住了,暴了。Time:user(用户时间),sys(内核时间),real(总时间)堆之内:新生代,老年代。
2023-07-03 18:10:14
177
1
原创 Mysql数据库Sql优化
循环插入io消耗过大,也不建议一次批量操作太多的数据,如果数据太多数据库响应也会很慢。临时表会被自动删除,从而保证数据库整齐、高效,使用union来创建查询的时候,我们只需要用UNION作为关键字把多个select语句连接起来就可以了。使用union关键字后,可以获取排重后的数据。而如果使用union all关键字,可以获取所有数据,包含重复的数据。如果没有走索引,排除没有创建,那么就是失效了,检查sql原因改就行。这样即使误操作,比如把id搞错了,也不会对太多的数据造成影响。
2023-06-27 17:34:33
512
1
原创 Mysql常见的锁类型
排他其它操作(InnoDB进行DDL操作时,会默认加上)Mysql中的共享锁和排他锁都属于悲观锁。:共享读,解决了脏读问题。
2023-06-26 18:02:46
153
1
原创 MySql事务隔离级别
问题:当别人新增一条数据时(读到了新的一行数据,产生幻觉:幻读)解决:具体情况具体分析,学会合理使用事务隔离级别。介绍:可以重复读(中间过程不可以修改数据)问题:必须等到提交后才能读,不可以重复读。介绍:顾名思义,读到了未提交的事务。介绍:串行执行事务,保证事务原子性。介绍:顾名思义,读取已提交的事务。问题:读到了脏数据(脏读)问题:效率低下,造成阻塞。解决:读已提交的数据。
2023-06-26 17:22:07
81
1
原创 MySql存储引擎看这一篇就够了
基于 MySQL 5.7.28 版本介绍(CSV、Archive、Memory、InnoDB、MyISAM。其它引擎就不过多介绍)
2023-06-25 17:16:09
331
1
原创 Mysql的底层结构?
MySQL通过识别字符串中列名、表名、where、select/update/insert 等MySQL关键字,在根据语法规则判断sql是否满足语法,最终会生成一个抽象语法树(AST)。逻辑优化主要进行等价谓词重写、条件化简、子查询消除、连接消除、语义优化、分组合并、选择下推、索引优化查询、表查询替换视图查询、Union替换or操作等。存储引擎是可插拔式的,常见的存储引擎有MyISAM、InnoDB、Memory等,MySQL5.5之前默认的是MyISAM,之后默认的是InnoDB。
2023-06-25 15:37:48
344
原创 使用Canal实现mysql binlog增量订阅数据
是由公司业务改造搜索功能,使用ES搜索引擎中间件,那么我们需要将mysql中的数据同步至ES服务中,最总选择使用alibaba的canal增量订阅和解析工具。
2023-06-25 15:12:25
287
原创 怎样实现redis持久化?
RDB,就是把内存数据以快照的形式保存到磁盘上。和AOF相比,它记录的是某一时刻 的数据,并不是操作。RDB持久化,是指在指定的时间间隔内,执行指定次数的写操 作,将内存中的数据集快照写入磁盘中,它是Redis默认的持久化方式。执行完操作 后,在指定目录下会生成一个dump.rdb文件,Redis 重启的时候,通过加载dump.rdb 文件来恢复数据。
2023-06-25 14:59:48
80
原创 如何保持mysql和redis数据一致性?
在进行写操作时,先更新 MySQL 里的数据,再删除 Redis 里该数据对应的缓存。在读操作时,先从 Redis 缓存中获取数据,若没有则从 MySQL 查找,然后将查找到的数据写入 Redis 缓存中。例如,使用 Binlog 和 Canal 进行 MySQL 数据的订阅和读取,并将订阅到的数据写入 Redis 缓存中。在进行写操作时,同时更新 MySQL 和 Redis 中的相应数据。这种方式保持了 MySQL 和 Redis 数据的强一致性,但可能会降低写操作的性能和增加系统的复杂度。
2023-06-25 14:52:22
2725
原创 多线程如何保证线程安全
3调用ThreadLocal的set()方法时,实际上就是往ThreadLocalMap设置值,key是ThreadLocal对象本身,值是传递进来的对象 4.调用ThreadLocal的get()方法时,实际上就是从ThreadLocalMap获取值,key是ThreadLocal对象本身。3.使用ThreadLocal保证每个线程对同一个对象只创建一次==>较好的方法。(ThreadLocal提供了线程的局部变量,每个线程都可以通过。来对这个局部变量进行操作,但不会和其他线程的局部变量进行冲突,
2023-06-25 14:50:34
361
原创 Date和LocalDate和LocalDateTime和·LocalTime(date和datetime)的区别:
Date可读性差,使用SimpleDateFormate进行转换会有线程安全问题(共享变量多线程同时使用该对象会造成乱套),所以使用LocalDateTime代替(缺点:设置时间效率低一点,线程安全),LocalDateTime(yyyy-MM-dd hh:mm:ss),LocalTime(hh:mm:ss),LocalDate(yyyy-mm-dd)
2023-06-25 14:42:16
781
原创 char和varchar的区别
varchar更适用于可变长度字符串的存储,char属于固定长度字符串类型存储。对于未知长 度的字符串存储varchar更适合。
2023-06-25 14:39:37
436
原创 @responsebody注解的作用
在Springboot中根本不需要做什么,主要返回值是一个对象,传递给浏览器后,都会将这个对象转换成json字符串,key对应对象字段名称,value对应字段值。
2021-07-08 20:32:24
1226
原创 JSONObject详解
结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(阿里的json很好用,还有一个谷歌Gson也不错。
2021-06-26 13:13:37
2350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人