当前位置: 首页 > news >正文

9.18学习记录

深拷贝和浅拷贝的区别

浅拷贝会创建一个新的对象,与原对象共用一个内部对象

深拷贝会完全复制整个对象,包括内部对象

Java对象创建过程

  1. 类加载
  2. 内存分配
  3. 初始化零值
  4. 设置对象头

HashMap底层实现

  1. 首先他是来存储键值对的,非线程安全的
  2. null作为键只能有一个
  3. JDK1.8之前时数组+链表,之后是数组+链表+红黑树
  4. 当链表个数大于等于8个并且数组长度大于等于64链表变成红黑树
  5. 初始值为16,每次扩容*2
  6. 负载因子:数据个数大于负载因子*数组长度就要调用resize方法

延迟队列

底层是一个基于 PriorityQueue 实现的一个无界队列

通过 ReentrantLock 实现了互斥访问和 Condition 实现了线程间的等待和唤醒操作

spring事务底层是怎么实现的

支持两种类型的事务

  1. 编程式事务声明
    1. 通过TransactionTemplate或者TransactionManager手动管理事务
  2. 使用 @Transactional注解进行事务管理
  3. 三个重要接口
    1. Platformtransactionmaneger
    2. transactionDefinition
    3. Transactionstatus
  4. 事务属性
    1. 隔离级别
    2. 事务超时
    3. 传播行为
    4. 回滚规则
    5. 是否只读

Springboot集成的servlet容器有哪些?

  1. Tomcat:易于使用和配置。默认
  2. Jetty:适用于长连接和通信
  3. Undertow:高并发场景

Mybatis的多级缓存是什么?

一级缓存是 MyBatis 自动开启的,主要用于减少同一 SqlSession 内的重复查询。

二级缓存需要显式配置,并且可以在多个 SqlSession 之间共享,适用于跨事务的查询优化。

jvm内存区域

  1. 程序计数器:唯一不会发生内存溢出的位置,用于记录程序执行位置,便于线程切换之后恢复
  2. 虚拟机栈:由栈帧组成,包括局部变量表,方法返回参数,操作数栈,动态链接
  3. 本地方法栈:调用本地方法
    1. 存放对象实例,几乎所有的对象实例以及数组都在这里分配内存
    2. 堆是垃圾收集器管理的主要区域
  4. 方法区
    1. 存储已被虚拟机加载的 类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据

MySQL聚簇索引和非聚簇索引的区别

聚簇索引:只有叶子节点存放数据

优点:查找快。范围查找速度非常快

缺点:依赖有序的数据。更新代价大

非聚簇索引:叶子节点存放指针

优点:更新代价小

缺点:依赖有序数据,可能会二次查询

什么情况下会发生内存泄露?

  1. 没有正确释放内存
  2. 循环引用无法被检测到
  3. 将对象添加到静态集合类

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++:日期类的实现
  • 20240918 每日AI必读资讯
  • GEE教程:1950-2023年ECMWF数据中积雪的长时序统计分析
  • MySQL学习(视图总结)
  • 安卓将本地日志上传到服务器
  • 高效容器化技术(1)---容器化技术简介
  • 如何快速学习拼音打字?
  • Java程序流程控制
  • 基于Linux和C++实现的RabbitMQ风格消息队列:设计与实现
  • 第二届Apache Flink极客挑战赛冠军比赛攻略_SkyPeaceLL队
  • VirtualBox 7.1.0 发布下载 - 开源跨平台虚拟化软件
  • 大数据和代理:揭示它们之间的微妙联系
  • STM32 + W5500 实现HTTPS !
  • 从Profinet到Ethernet IP网关技术重塑工业网络,数据传输更流畅
  • Vue3 父组件向子组件传值:异步数据处理的显示问题
  • Angular6错误 Service: No provider for Renderer2
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Github访问慢解决办法
  • JavaScript函数式编程(一)
  • LeetCode29.两数相除 JavaScript
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Map集合、散列表、红黑树介绍
  • Redash本地开发环境搭建
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Selenium实战教程系列(二)---元素定位
  • tab.js分享及浏览器兼容性问题汇总
  • VuePress 静态网站生成
  • Vue实战(四)登录/注册页的实现
  • webpack入门学习手记(二)
  • 创建一种深思熟虑的文化
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 如何设计一个比特币钱包服务
  • 算法---两个栈实现一个队列
  • 学习Vue.js的五个小例子
  • 异常机制详解
  • 用Canvas画一棵二叉树
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • # Redis 入门到精通(一)数据类型(4)
  • #{}和${}的区别是什么 -- java面试
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (C语言)球球大作战
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (苍穹外卖)day03菜品管理
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)Eureka服务搭建,服务注册,服务发现
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (一)Linux+Windows下安装ffmpeg
  • (译) 函数式 JS #1:简介
  • (转)iOS字体