T31训练营笔记(8)集合与并发编程

本文深入探讨了T31系统的功能树结构,包括用例图中角色和功能模块,以及部署图中微服务与数据库部署。重点讲解了数据结构与时间复杂度,介绍了HashMap的内部机制,并涉及java.util.stream.Collectors的使用技巧。此外,文章还涵盖了并发处理的基础概念、线程安全、锁机制及线程池的作用。
摘要由CSDN通过智能技术生成

1. T31系统功能树
1.1 用例图与功能树
(1)用例图关注有哪些角色,角色能够干什么
(2)功能树关注有哪些大的功能模块,功能模块能够实现什么能力
1.2 部署图
关注部署元素:微服务、数据库
关注部署关联元素:注册中心、消息中间件

2. 集合规约
2.1 数据结构与时间复杂度
(1)数据结构指逻辑意义上的数据组织方式及其相应的处理方式
(2)数据处理方式:增删改查
(3)时间复杂度从好到坏:常数级、对数级、线性级、线性对数级、平方级、指数级、阶乘级
(4)数据结构的优化与运算规模有关,也与调用频率有关
2.2 HashMap的基本概念
(1)table存储所有节点数据的数组
(2)slot哈希槽。即table[i]这个位置
(3)bucket哈希桶。table[i]上所有元素形成的表或树的集合
2.3 HashMap的初始容量分配算法
2.4 HashMap计算落槽位置
2.5 在使用java.util.stream.Collectors类的toMap()方法转为Map集合时
(1)一定要使用含有参数类型为BinaryOperator,参数名为mergeFunction的方法,否则当出现相同key值时会抛出IllegalStateException异常。
(2)值不能为null
2.6 ArrayList的subList结果不可强转称ArrayList 

3. 并发处理
3.1 并行与并发
并行是指同时处理多任务的能力
并发是指在某个时间段内,多任务交替处理的能力
3.2 线程安全
(1)线程安全只在多线程环境下才出现
(2)高并发场景下的线程安全考量维度:数据单线程内可见、只读对象、线程安全类、同步与锁机制
3.3 锁
(1)锁出现的原因:资源竞争出现
(2)Java常用锁实现方式:并发包中的锁类、同步代码块
3.4 AQS本质:解决多线程访问共享资源并发问题的同步管理框架
3.5 线程池
(1)线程可以拥有自己的操作栈、程序计数器、局部变量表等资源,它与同一进程内的其他线程共享该进程的所有资源。
(2)线程池作用:
管理并复用线程、控制最大并发数;
增加对线程的管理,快速排查问题;
实现任务线程队列缓存策略和拒绝机制;
实现某些与时间相关的功能,如定时执行、周期执行等;
隔离线程环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值