operate mow 3.15
3.15
操作系统
CPU伪共享
多个线程读写同一个cache line的不同变量时,cache line失效的情况
eg:线程A读取数据a,线程B读取数据b而恰巧a b在同一个cache line中,A读取的时候将cache line标记为独享状态,B读取的时候标记为共享状态,A修改的时候将B中标记为失效状态,A中为修改状态,B准备修改时发现A是修改状态,将其写入内存,然后再从内存中读取b,并标记为修改状态。
可以看出B有一次无效的cache line读取
解决方法:避免热点数据都在同一个cache line中
空间换时间:
__cacheline_aligned_in_smp命令,声明变量时在后面加上这个
ringbufferpad:
我的理解是在缓存行其他地方写入7个long数据,剩下一个用来存取频繁读取数据
CPU如何选择线程
进程、线程 ---- task_struct ----任务
优先级数值越小,优先级越高
实时任务:0-99
普通任务:100-139
调度类 | 调度器 | 调度策略 | 运行队列 |
---|---|---|---|
Deadline | Deadline调度器 | SCHED_DEADLINE(按照距离deadline时间长短) | dl_rq |
Realtine | RT调度器 | SCHED_FIFO(同等优先级先来先上) || SCHED_RR(同等优先级时间片轮转) 高优先级可以插队 | rt_rq |
Fair | CFS调度器 | SCHED_NORMAL || SCHED_BATCH | cfs_rq |
普通任务完全公平调度最重要,基于CFS
完全公平调度
每个任务有一个virtual runtime,cpu会优先选择virtual runtime值小的任务
virtual runtime = 实际运行时间 * NICE_0_LOAD/ 权重
nice值越小,权重越大
CPU运行队列
cpu执行时,按dl_rq—rt_rq—cfs_rq,即实时任务优于普通任务
其中cfs_rq是有红黑树实现的,cpu调度时从最左侧叶子节点(vruntime最小)开始
调整优先级
我们启动任务时如果没有特意指定优先级,那么就是普通任务,采用CFS调度
想要任务优先级提高,可以指定nice值
nice取值-20 — 19, -20最高优先级, 19最低优先级
priotity(new) = priority(old) + nice 0-99实时任务 100 - 139普通任务
可以用以下命令指定nice值,启动时 nice -n -3;已经运行的进程 renice -5
普通任务变为实时任务命令:
chrt -f 1 -p pid , 指定优先级为1,SCHED_FIFO
计算机网络
http1.1优化
小林给了三种思路:
避免发送http请求:
缓存,在第一次http请求得到响应后,客户端将响应存储到设备中,key是url,value是响应
在下一次请求时,客户端会先将url与自己的缓存区进行对比,若是相同就直接获取响应,不用再请求服务器。
当然,响应可能会过期,所以服务器对客户端的http响应头部会有一个预估过期时间,当超过了过期时间,客户端会重新向服务器发起请求,这个请求可以带有之前响应的摘要,服务器收到请求时会将当前响应与之前的响应作对比,若是相同,就给一个空响应304,提示客户端所缓存的响应仍旧有效
减少http请求次数:
重定向请求:代理服务器进行重定向操作;将重定向的url缓存到客户端本地
合并请求:
合并资源,以一个大文件代替多个小文件;有隐患,如果一个小文件改变,得重新下载整个大文件
延迟发送请求:按需获取,当前只获取需要的资源,
减小服务器响应数据大小:压缩
有损压缩和无所压缩
带宽与延迟:网络带宽和网络延迟有什么区别? - 来收哥的回答 - 知乎 https://www.zhihu.com/question/300728455/answer/522085346
对头阻塞-------多路复用:在一个连接中并发多个请求或回应,A耗时长就B先来
原来运营商所指的带宽的单位是bit,而我们品尝下载速度的单位是byte,……
http/1.1协议性能问题
延迟大;
并发连接有限;将页面资源分散到不同域名
http头部冗长重复; 小文件合成大文件 将数据嵌入html中减少请求次数
服务端不能推送;
队头堵塞
HTTP/2
(29条消息) 操作起来 day2_weixin_43615058的博客-CSDN博客
没有引入新的协议名,用http表示明文协议,用https加密协议
只在应用层做了改变,将http分解成了语义和语法两部分,语义中请求方法,状态码,头字段保持不变
语法方面则基本改变了http的传输格式
头部压缩:
http1.1报文由head+body组成,只压缩了body,HTTP2把head也压缩了
HPACK:用长度小的索引号表示重复的字符串,再用Huffman编码数据,50-90%的压缩率
静态表:共61组,写到http/2框架里的
动态表:index从62起步,编码解码时随时更新。但是服务器那端会有一个http2_max_requests设置,超过这个就会关闭连接释放内存
session && session ticket :会话复用TLS,省掉交换会话密钥过程
二进制帧
首部 + 消息负载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SU3RIuY9-1647355093863)(E:/typora/3.15.assets/image-20220315151516705.png)]
帧头很小,9个字节
帧长度 + 帧类型(数据、控制) + 标志位 (流优先级等信息)+ 最高位保留不用(R) + 流标识符(用来标记这个帧属于哪个流,方便流的组装)
帧数据:HPACK压缩好的http头部和包体
并发传输
多个stream复用一条tcp连接
不同stream的帧可以乱序发送,同一stream的帧严格有序,一个stream可以有多个message(http报文),一个message可以有多个frame,客户端streamid奇数,服务器偶数,若超过最大数,释放连接
服务器推送资源
Leetcode
组合总和
class Solution {
public:int sum = 0;vector<vector<int>>ans;vector<int>path;void bt(vector<int>& nums, int target, int index){if(sum >= target){if(sum == target) ans.push_back(path);return;}for(int i = index ; i < nums.size() ; i++){sum += nums[i];path.push_back(nums[i]);//index i 的区别应该就是排列组合的区别//是否加1 就是是否可重复选区的区别bt(nums, target, i);sum -= nums[i];path.pop_back();}}vector<vector<int>> combinationSum(vector<int>& candidates, int target) {bt(candidates, target, 0);return ans;}
};
跳跃游戏(做错啦,想复杂啦)
其他
粘度选择不同,Nu值不同,粘度不同—普朗特数不同
tor> combinationSum(vector& candidates, int target) {
bt(candidates, target, 0);
return ans;
}
};
跳跃游戏(做错啦,想复杂啦)## 其他粘度选择不同,Nu值不同,粘度不同---普朗特数不同
operate mow 3.15相关推荐
- C#编程利器之四:委托与事件(Delegate and event) (上)
本文试图在.net Framework环境下,使用C#语言来描述委托.事件的概貌.希望本文能有助于大家理解委托.事件的概念,理解委托.事件的用途,理解它的C#实现方法,理解委托与事件为我们带来的好处. ...
- 设计模式11-桥接模式
桥接模式:将抽象出来的那部分和它的实现(方法.操作)部分分离,使它们可以独立变化.(两者间通过构造函数注入依赖) 1 namespace DesignModel.桥接模式 2 { 3 4 /// &l ...
- 看《你必须知道的.NET》有感--工厂模式的另类解读
最近在看博客园里的推荐的<你必须知道的.NET>,对里面有一段关于银行的客户和职员的安排的程序有点兴趣.这里我把他改了下,促进理解: Code 1using System; 2us ...
- 北风设计模式课程---享元模式
北风设计模式课程---享元模式 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 1.享元模式的本质是什么? 池技术:各种缓存池都是享元模式的体现 说到享元模 ...
- LeetCode 6055. 转化时间需要的最少操作数(贪心)
文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 current 和 correct ,表示两个 24 小时制时间 . 24 小时制时间 按 "HH:MM" 进行格式化 ...
- C#编程之委托与事件(一)
多线程程序设计是一个庞大的主题,而本文试图在.net Framework环境下,使用C#语言来描述委托.事件.多线程程序及反射的概貌.希望本文能有助于大家理解委托.事件.多线程及反射的概念,理解委托. ...
- 15个著名的设计心理学原理以及在设计中的应用
你是否有在听别人说某某原理法则时一脸懵B的时候?明明知道这个原理却说不出它的名字?不要紧,本文就来介绍与人机交互设计相关的15个常见的设计心理学原理,帮助你了解产品的定位,需求目的和交互逻辑,洞悉用户 ...
- 常用JavaScript函数 1 - 15 (自我总结)
常用JavaScript函数 16 - 30(自我总结) 常用JavaScript函数 31- 46 (自我总结) 1. 调整图片大小,不走形(FF IE 兼容)/ 剪切图片(overflow:hi ...
- Proxifier v3.15
这玩意突然更新,增加不少功能修复不少bug...也是翻墙神作! Proxifier allows network applications that do not support working th ...
最新文章
- android Json解析详解
- nodejs-文件系统
- 北斗导航 | 完全自主研发国产高端三维激光雷达助力中国测绘技术发展
- java list 循环赋值_Java List集合的坑(add方法报空指针,循环赋值时list已保存的值会改变)...
- 程序员被纳入新生代农民工;“腾讯视频崩了”上热搜;英特尔发布全新独立显卡品牌 Arc|极客头条...
- 等级考试(四):二级C++---回首往昔考试历程
- tfs nginx 端口调用失败?
- WebService学习总结(6)——WebService常用接口
- python --opencv图像处理Canny算子边缘检测(Roberts算子、Prewitt算子、Sobel算子、Laplacian算子、Scharr 算子、 LOG 算子)
- opencv warp(扭曲)球面投影的原理
- excel单元格使用公式进行币种自动转换,亿,万,元
- kubernetes device or resource busy的问题
- 机器学习——聚类算法(一)
- android立体3D效果_3D立体画手绘墙体彩绘
- Zookeeper一致性级别分析,含爱奇艺,小米,腾讯,阿里
- STM32中断优先级NVIC
- 我提莫谢谢你!给我100块羞辱离职,原来是激励我“卧薪尝胆”!
- cpolra实现内网穿透,无须公网ip
- 小学生掌握的stem教育
- fluent瞬态计算终止条件在哪里设置_fluent模拟表面喷涂
热门文章
- 选下拉框的的值对应上传相应的图片_excel表格下拉菜单调用对应数据,如何在excel中实现,选择下拉菜单某一项,该表格中就出现选项对应的数据?...
- 2014小米,百度,pptv,去哪儿笔试题目回忆
- 猴子都能懂得Git(入门篇汇总版)持续更新中~~~
- vscode用tensorboard报错 We failed to start a TensorBoard session due to the following error: Command fa
- C++ OpenCV无法调用视频的问题
- 智慧景区电子票务系统人脸识别售检票基本思路
- 华人民共和国道路交通安全法
- CH579实现一个最小外围设备(Peripheral)
- 【机器学习之模型融合】Voting投票法简单实践
- CRS-1705: Found 1 configured voting files but 2 voting files are required