(未完结)阶段小总结(一)——大数据与Java

jdk8-21特性

核心特征:

(8)lambda,stream api,optional,方法引用,函数接口,默认方法,新时间Api,函数式接口,并行流,ComletableFuture。

(9)模块系统,jshell命令工具直接写java代码,集合的of方法,接口的private方法,Stream的takeWhile和dropWhile,多版本兼容jar,optional新增ifPresentOfElse(),or(),更强大的ProcessHandle获取进程信息,响应式流。

(10)var局部变量类型推断,不可变集合的增强(CopyOf),Optional.orElseThrow(),并行全垃圾回收器(G1),DK默认包含CA根证书,支持TLS安全通信, 线程本地握手,版本号改为基于发布周期(如10.0.1),非之前的1.8.0_291格式

(11)HTTP Client API(正式版),允许在Lambda表达式中使用var声明参数(需显式注解@NonNull等),字符串增强方法isBlank()lines()repeat(),新的文件读写方法(Files类),直接运行.java文件(无需先编译),Epsilon垃圾回收器,JVM内部优化,允许嵌套类直接访问彼此的私有成员,JVM新增CONSTANT_Dynamic常量池类型,提升动态语言支持,移除Java EE和CORBA模块(如javax.xml.ws),原商业版JFR成为开源功能,用于低开销性能监控。

(12-16)简化switch语法,支持返回值和多标签匹配,Shenandoah GC低停顿时间的垃圾回收器,适合大堆内存应用,Microbenchmark Suite(JMH集成)JDK内置微基准测试工具,

简化多行字符串书写,避免转义符String json = """ { "name": "Java", "version": 13 } """;动态CDS归档,底层NIO实现优化,提升性能,instanceof模式匹配(预览)直接类型转换,减少冗余代码,Record类(预览),NullPointerException增强,明确提示NPE发生的具体变量,ZGC(生产就绪)。

(17)record类,密封类,隐藏类,模式匹配,文本块,swith增强,新ZGC/Shenandoah GC,弃用Applet API,强封装JDK内部API,伪随机数生成器(新API),移除实验性AOT和JIT编译器,外部函数和内存API(孵化器模块)

(18-20)默认UTF-8字符集,简易Web服务器(jwebserver)

(21)虚拟线程,记录模式,匹配模式再增强,分代ZGC,有序集合,外部函数与内存API, 弃用Windows 32位安装包,密钥封装机制API(KEM)

jvm

内存模型:本地方法栈,pc register,虚拟机栈,堆

作用:

堆:

类加载器的双亲委派机制:

加载流程:

gc

有哪些垃圾回收器:

gc算法:

arthas

内存泄漏定位过程以及使用的命令:

确认泄漏现象 → 定位TOP对象 → 追踪引用链 → 监控增量 → 分析创建路径 → 生成堆转储 → 修复代码 → 验证回收

# 查看JVM内存实时状态(重点关注Old Gen)
dashboard -i 3000 -n 3 | grep -E 'Heap|Old Gen'

# 监控GC活动(频繁Full GC是泄漏标志)
jvm | grep -A 5 'GC'

# 统计堆内存中对象数量TOP 10(立即执行)
memory --classloader -t 10

# 示例输出(泄漏对象通常数量异常):
# com.example.CacheEntry   1,234,567  1.2GB
# java.util.HashMap$Node   890,123    450MB


# 获取对象实例地址(以com.example.CacheEntry为例) vmtool --action getInstances --className com.example.CacheEntry --limit 1 # 输出实例地址后,追踪GC Roots引用路径 ognl '@com.taobao.arthas.core.advisor.Advice@toGCRoots(<INSTANCE_ADDRESS>)'

# 每30秒统计一次泄漏对象的增量(持续观察)
monitor -c 30 -n 5 'java.lang.Class getInstancesCount "com.example.CacheEntry"'

# 动态观察对象创建堆栈(关键!)
stack com.example.CacheManager "addEntry" -n 10

# 生成轻量级堆转储(建议低峰期执行)
heapdump --live /tmp/leak_snapshot.hprof

# 仅dump可疑对象(减少文件大小)
heapdump --include com.example.CacheEntry /tmp/partial_dump.hprof

# 检查对象是否被正确释放(对比操作前后)
watch com.example.CacheService clearCache '{params,returnObj,throwExp}' -n 5 -x 3

# 追踪对象finalize情况
trace java.lang.Object finalize -n 5

  1. 临时缓解‌:通过Arthas强制清除泄漏集合(慎用!)

    ognl '@com.example.CacheManager@clearAll()'

  2. 立即告警‌:当Old Gen使用率超过90%时触发告警

    jvm | grep 'Old Gen' | awk '{if($3>90) print "ALERT"}'

cpu过高:

dashboard -i 2000 -n 3

thread -n 5前五个cpu占用最高的完整堆栈 最忙的5个线程的堆栈(推荐)

thread -b看哪里阻塞死锁堆栈

thread pid查看指定线程的完整堆栈

watch com.example.aa.类名 方法名 '{params,returnObj,throwExp}' -n 5 -x 3通过输出最近5次方法的调用查看这个方法的参数返回和异常 

trace 类名 方法名 -n 5过输出最近5次方法调用查看方法得耗时

stack 类名 方法名 -n 5通过输出最近5次方法的调用栈 查看被哪里调用了

monitor -c 10 -n 5 'java.lang.Class getInstancesCount "com.example.*"' 每10秒统计一次类实例数(持续监控)

jad 类名 反编译看下代码是不是没更新

# 1. 启动采样(默认30秒)
profiler start

# 2. 停止采样生成SVG
profiler stop --format svg

# 3. 下载文件并用浏览器打开

其它场景:

线程

生命周期:

线程池:

java原生包:java.util.concurrent.Executor创建线程池:固定线程数的,单线程的,带缓存的,周期性执行的,自定义的,jdk7开始有的ForkJoinPool

spring封装:

org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor

org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor

每个参数的意思:

拒绝策略:

CallerRunsPolicy是不是立即调用:

匹配队列:

ThreadLocal原理:

Volitale原理:

指令重排原理:

乐观锁:

悲观锁:

事务

acid:

事务隔离级别:

spring事务原理和流程:

分布式事务原理和流程:

mysql

函数:

索引:

事务:

锁:

存储结构:

同步机制:

优化:

redis

数据类型:

缓存击穿:

缓存穿透:

缓存雪崩:

分布式锁实现原理:

lua:

redis与mysql的同步机制与原理:

mongodb

存储格式:

索引:

优化:

原理:

rocketmq / kafka

角色:

消息路由:

顺序消费如何保证:

重试队列机制:

死信队列机制:

背压机制:

sharding-jdbc

大数据分库分表方案:

具体配置:

spring全家桶

如何理解spring:

如何理解springboot:

springboot如何优化启动速度和内存占用量:

springcloud有哪些组件:

springcloudalibaba有哪些组件:

版本对应问题:

nacos:

openfeign:

setinel:

loadbalance:

seata:

es

归档方案:

复杂的查询语句:

ik分词器原理:

算法

设计模式

单例:

工厂:

策略:

发布订阅:

责任链:

装饰器:

适配器模式:

微服务架构设计原则

分布式系统设计模式

Flink

Spark

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920526.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式Linux驱动开发:设备树与平台设备驱动

嵌入式Linux驱动开发&#xff1a;设备树与平台设备驱动 引言 本笔记旨在详细记录嵌入式Linux驱动开发中设备树&#xff08;Device Tree&#xff09;和平台设备驱动&#xff08;Platform Driver&#xff09;的核心概念与实现。通过分析提供的代码与设备树文件&#xff0c;我们…

【完整源码+数据集+部署教程】骨折检测系统源码和数据集:改进yolo11-EfficientHead

背景意义 骨折作为一种常见的骨骼损伤&#xff0c;其诊断和治疗对患者的康复至关重要。传统的骨折检测方法主要依赖于医生的经验和影像学检查&#xff0c;如X光、CT等&#xff0c;这不仅耗时&#xff0c;而且容易受到主观因素的影响。随着计算机视觉和深度学习技术的迅猛发展&a…

面试记录7 c++软件开发工程师

开目 一面&#xff1a; 自我介绍你做的xxx应用是用c做的吗&#xff0c;是在window平台吗具体做的事情是什么你说的2D3D的结构是什么样的&#xff0c;怎样去做校验有没有二维到三维或者三维到二维的数据转换两个向量怎么去做校验做的什么优化有调用第三方库吗是用的什么工具&…

计算机网络:服务器处理多客户端(并发服务器)

一、服务器处理多客户端&#xff08;并发服务器&#xff09;&#xff08;一&#xff09;listen:监听客户端的连接请求&#xff0c;放入请求队列&#xff08;二&#xff09;accpet&#xff1a;请求队列中提取已连接的请求&#xff0c;返回连接好的fd&#xff08;循环accpet即可&…

Ansible自动化运维:原理以及安装教程

目录 Linux Ansible&#xff1a;作用与原理详解 一、Ansible 的核心作用 1. 配置管理&#xff08;Configuration Management&#xff09; 2. 应用部署&#xff08;Application Deployment&#xff09; 3. 任务编排&#xff08;Orchestration&#xff09; 4. 其他扩展作用 二、A…

[机器学习]基于K-means聚类算法的鸢尾花数据及分类

基于Kmeans&#xff0c;对鸢尾花数据集前两个特征进行聚类分析通过迭代优化&#xff0c;将150个样本划分到K个簇中。目标函数&#xff1a;最小化所有样本到其所属簇中心的距离平方和。算法步骤&#xff1a;随机初始化K个簇中心。将每个样本分配到最近的中心。计算均值确定每个簇…

Altium Designer 22使用笔记(10)---PCB铺铜相关操作

目录 01 | 简 述 02 | 环境描述 03 | 铺 铜 04 | 铺铜挖空 05 | 敷铜合并 06 | 敷铜的修改 07 | 总 结 01 | 简 述 在PCB设计阶段&#xff0c;除了布局、布线操作需要频繁进行调整外&#xff0c;铺铜操作的使用也非常频繁&#xff1b;因此本篇文章的主要内容为&#xff…

leetcode 338 比特位计数

一、题目描述二、解题思路我们可以借助位运算的思想来解决这个问题。通过kk&(k-1)来消除k中最右边为1的比特位&#xff0c;每次消除后进行count&#xff0c;当k为0时&#xff0c;表示所有的1消除完毕&#xff0c;此时的count即为所有1的个数。三、代码实现时间复杂度&#…

PHP的md5()函数分析

MD5&#xff08;Message-Digest Algorithm 5&#xff09;是一种广泛使用的哈希函数&#xff0c;由Ronald Rivest于1991年设计&#xff0c;属于密码散列算法家族。其核心功能是将任意长度的输入数据&#xff08;如字符串、文件等&#xff09;通过不可逆的数学运算转换为固定长度…

【面试场景题】怎么做业务领域划分

文章目录一、核心原则&#xff1a;以业务为中心&#xff0c;而非技术二、具体步骤&#xff1a;从业务理解到边界定义1. 深入理解业务&#xff1a;梳理业务全景2. 识别核心领域与支撑领域3. 划分“限界上下文”&#xff1a;定义领域边界4. 定义领域内的“聚合”&#xff1a;细化…

海量小文件问题综述和解决攻略(二)

1. 解决NameNode的内存问题 上面的内容提到过每个block的元数据都需要加载到NameNode的内存中&#xff0c;这导致一个Hadoop集群在NameNode中存储的对象是有上限的&#xff0c;并且对象太多会带来启动时间较长以及网络延迟的问题。常见的有两种解决方案&#xff0c;减少集群的…

《开发避坑指南:从异常中读懂系统的“求救信号”》

异常现象从不只是孤立的“故障”&#xff0c;而是系统发出的“健康预警”。太多团队困在“出现问题-临时修复-再次复发”的循环里&#xff0c;将精力消耗在表面问题的扑救上&#xff0c;却忽视了背后潜藏的架构缺陷、逻辑漏洞与环境适配盲区。真正成熟的开发思维&#xff0c;是…

数字孪生技术为UI前端赋能:实现产品性能的实时监测与预警

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!过去十年&#xff0c;前端技术栈翻天覆地&#xff1a;React/Vue/Angular、Webpack/Vite、Serve…

【性能优化】Unity 渲染优化全解析:Draw Call、Batch、SetPass 与批处理技术

Unity 渲染优化全解析&#xff1a;Draw Call、Batch、SetPass 与批处理技术 在 Unity 开发中&#xff0c;性能优化是保证游戏流畅的核心环节。尤其在移动端或 VR/AR 场景&#xff0c;Draw Call 过多、材质切换频繁都会严重影响帧率。 本文将从 Unity Statistics 面板参数解析…

基于Spring Boot的短信平台平滑切换设计方案

基于Spring Boot的短信平台平滑切换设计方案 案例背景 在电商系统中&#xff0c;短信服务是用户注册、登录验证、订单通知等环节的关键基础设施。由于业务需求或成本优化&#xff0c;企业可能需要在不同短信平台&#xff08;如阿里云、腾讯云、云片等&#xff09;之间进行切换。…

信息技术发展

信息技术是研究如何获取信息、处理信息、传输信息和使用信息的技术。计算机硬件控制器、运算器、存储器、输入设备、输出设备。计算机软件系统软件、应用软件、中间件。通信系统包括源系统、传输系统、目的系统。网络基础 个人局域网、局域网、城域网、广域网、公用网、专用网。…

2023年12月GESP5级C++真题解析,包括选择判断和编程

一、选择题&#xff08;每道题2分&#xff0c;共30分&#xff09; 1、下面C代码用于求斐波那契数列&#xff0c;该数列第1 、2项为1&#xff0c;以后各项均是 前两项之和。下面有关说法错误的是( ) A. fiboA( ) ⽤递归⽅式&#xff0c;fiboB() 循环⽅式 B. fiboA( ) 更加符合…

C++ 面试高频考点 力扣 704.二分查找 基础二分查找 题解 每日一题

文章目录二分查找&#xff1a;从基础原理到代码实现二分查找的特点算法重点题目描述&#xff1a;LeetCode 704. 二分查找为什么可以用二分查找&#xff1f;暴力算法解法二分查找解法核心逻辑&#xff1a;三种情况的处理二分查找什么时候结束&#xff1f;为什么二分查找一定是对…

《UE5_C++多人TPS完整教程》学习笔记45 ——《P46 待机与跳跃动画(Idle And Jumps)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P46 待机与跳跃动画&#xff08;Idle And Jumps&#xff09;》 的学习笔记&#xff0c;该系列教学视频为计算机工程师、程序员、游戏开发者、作家&#xff08;Engineer, Programmer, Game Developer, Author&#xff09…

2025年03月 Scratch 图形化(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 气球初始位置如下图所示,运行下列程序,气球会朝哪个方向移动?( ) A:水平向右 B:垂直向下 C:水平向左 D:垂直向上 答案:A 气球水平向右移动 第2题 使用下列哪个选项可以将…