道
2022-03-01 16:08:26 10 举报
AI智能生成
程序员的总结之道
作者其他创作
大纲/内容
阳
得
增效
使用率
利用率
效率
分
并行,并发
成本
计算机的成本主要考虑
CPU
IO
应用
数据库执行sql前执行成本的计算
Msql5.7
算法
单表
全表扫描
记录数*磁盘IO系数+常数项
走索引
索引记录数*0.2+范围记录数*1.0+常数项
系数
内存IO系数0.2
内存建表系数2.0
磁盘建表系数40.0
磁盘IO系数1.0
cpu系数0.2
主要用于内存中的比较
hashtable 的扩容的阈值
JDK1.8CurrentHashMap中链表转红黑树,和红黑树转链表的值不一致
原因是要考虑到转换时候自身消耗的成本
T->L 8
L->T 6
LOG2 8=3
5
LOG2 6=2.5
3.5
树的查询成本O(LOG N)
链表的查询成本O(N)
时间
空间
CPU
内存
外存
阴
失
和
时空同步
方法是
信号量
CAS
锁
降本
CPU的使用成本
内存的使用成本
术
缓存技术
提问
什么时候可以用缓存技术?
回答
当前的结果将来可能再次使用到。
存取前的结果的代价 比 从新从头获得结果的代价的要小的多
其中时间上包括读取和计算汇总等
纯速度读取优势的缓存
说明
利用读取速度的优势,把数据缓存在读取速度快的地方
应用
CPU多级缓存架构
内存->磁盘
磁盘的缓存(ssd和机械)
数据库中的数据缓存到Redis中
MySQL中的hashtable缓存索引
计算结果的缓存
说明
将一系列计算结果存储下来,留着将来使用。
使用
数据报表
并发
一个人同时干多分活
怎样能充分利用这一个人
首先需要先分析要干的活的特征
总体上其实就是一个统筹方法的问题
如需要完成洗衣、做饭、烧水
工具有洗衣机、蒸饭锅、热水壶、燃气灶只能有一个火
总结
每项任务一般都是在两种状态之间切换,可操作阶段和等待结果阶段。
想要充分发挥自己,就需要让自己不再一个活上死等结果。等待阶段时候可以看看其它任务的执行情况。(对应算法是循环检查,非阻塞)
但是如果真是没有事可做时候,就只会给自己添类。做了不必要的检查。
但是如果真是没有事可做时候,就只会给自己添类。做了不必要的检查。
一个活需要等待某些结果时候,可以做下一个活。
并行
多个人同时干活
优点
批量
干活时候按照一定数量的方式一批一批的处理
如数麦子两个两个的数,或者多个一起数
如装麦子进袋子,我拿个工具一次装很多。
要点
量的大小需要根据实际情况决定
缓冲池也包含批量的思想
优点
一般能执行效率
符合了当前的批量策略就减少了伪共享
两组数据在同一个缓存行,会有伪共享问题。当多个线程同时操作两组数据时候就可能造成竞争
举例
从cup到内存到磁盘到网络无不存在批量的思想
如cup中的64位和32位等都是一次计算多个
如cup中的缓存行是以行为单位
如内存页的读取
如磁盘的读取时按块来读取的一次读取一块及其后面的部分
JVM对空间分配是顺序一整块分配
jvm对象回收是一批一批的回收
mysql 操作磁盘保存时候一般都先放在缓冲池,然后批量保存
mysql 申请磁盘空间是按页申请的一个页4k
缓冲池
缺点
批量的大小要根据实际业务及测试决定
占用空间较大
比如内存批量到磁盘
需要在磁盘内准备好批量的数据
同步和异步
同步和异步都是针对于当前想要获取结果的相对处理方式
就是结果的获取到底是几个人完成的
俩人配合完成一个人负责则发布任务,一个人负责处理任务的方式叫异步。
一个人独立完成叫做同步
同步
一个人干活
单线程执行
阻塞
事件触发的机制来实现
非阻塞
非阻塞只是在无结果返回时候不阻塞,是一种轮询检查的策略。
异步
多线程配合
多个人配合干活
优点
不需要阻塞等待结果,只需要做自己的事情。需要提供个异步回调的接口。
减少了轮询检查或阻塞等待资源浪费。
缺点
增加复杂性
增加了一个工作线程(可能不是在本应用内)的调用。
如果结果返回的很快,效率和资源利用率没有同步高。(本机本程序内涉和他人交涉,本机内其他应用涉及其他公司的交涉,其网络的程序涉及国家交涉)(线程上下文,进程,网络+进程)(隐士开销缓(cpu 高速缓冲区)存失效等)
阻塞和非阻塞
阻塞与非阻塞也是真的与结果的活动方式
如干活时候我想放满一桶水。我开开水龙头,等待水放满。两部但是等待水放满过程我可以不再水桶边等待,去做别的事情。然后定期检查,或者增加触发事件、使自己能够知道水满了,然后去处理。
法
分治
快速排序
归并排序
桶排序
进程
线程
合并
锁
信号量
CAS
规律
复用
资源的重复利用
子主题
池化技术
连接池
代码的复用
common
基础设施复用
Infrastructure-as-a-Service(基础设施即服务)
平台的复用
Platform-as-a-Service(平台即服务)
软件的复用
Software-as-a-Service(软件即服务)
中台
集中方便复用、管理、变化、节约资源
得
集中式的管理比较方便,一处改造好。处处可用
易于代码维护,只维护一份核心代码即可
得在于一
失
失在于一
一处出问题,处处出问题。
业务中台
技术中台
数据中台
缓存
批量
局部性原理
局部性原理往往伴随使用缓存
怎么样提升得到结果的速度
缓存
算法
并发
并发
怎么样提高计算速度
算法
并发
并行
缓存
缓存计算结果
成本与结果的变化决定适合哪个方案
0 条评论
下一页