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相关推荐

  1. C#编程利器之四:委托与事件(Delegate and event) (上)

    本文试图在.net Framework环境下,使用C#语言来描述委托.事件的概貌.希望本文能有助于大家理解委托.事件的概念,理解委托.事件的用途,理解它的C#实现方法,理解委托与事件为我们带来的好处. ...

  2. 设计模式11-桥接模式

    桥接模式:将抽象出来的那部分和它的实现(方法.操作)部分分离,使它们可以独立变化.(两者间通过构造函数注入依赖) 1 namespace DesignModel.桥接模式 2 { 3 4 /// &l ...

  3. 看《你必须知道的.NET》有感--工厂模式的另类解读

    最近在看博客园里的推荐的<你必须知道的.NET>,对里面有一段关于银行的客户和职员的安排的程序有点兴趣.这里我把他改了下,促进理解: Code   1using System;   2us ...

  4. 北风设计模式课程---享元模式

    北风设计模式课程---享元模式 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 1.享元模式的本质是什么? 池技术:各种缓存池都是享元模式的体现 说到享元模 ...

  5. LeetCode 6055. 转化时间需要的最少操作数(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 current 和 correct ,表示两个 24 小时制时间 . 24 小时制时间 按 "HH:MM" 进行格式化 ...

  6. C#编程之委托与事件(一)

    多线程程序设计是一个庞大的主题,而本文试图在.net Framework环境下,使用C#语言来描述委托.事件.多线程程序及反射的概貌.希望本文能有助于大家理解委托.事件.多线程及反射的概念,理解委托. ...

  7. 15个著名的设计心理学原理以及在设计中的应用

    你是否有在听别人说某某原理法则时一脸懵B的时候?明明知道这个原理却说不出它的名字?不要紧,本文就来介绍与人机交互设计相关的15个常见的设计心理学原理,帮助你了解产品的定位,需求目的和交互逻辑,洞悉用户 ...

  8. 常用JavaScript函数 1 - 15 (自我总结)

    常用JavaScript函数 16 - 30(自我总结) 常用JavaScript函数 31- 46 (自我总结) 1.  调整图片大小,不走形(FF IE 兼容)/ 剪切图片(overflow:hi ...

  9. Proxifier v3.15

    这玩意突然更新,增加不少功能修复不少bug...也是翻墙神作! Proxifier allows network applications that do not support working th ...

最新文章

  1. android Json解析详解
  2. nodejs-文件系统
  3. 北斗导航 | 完全自主研发国产高端三维激光雷达助力中国测绘技术发展
  4. java list 循环赋值_Java List集合的坑(add方法报空指针,循环赋值时list已保存的值会改变)...
  5. 程序员被纳入新生代农民工;“腾讯视频崩了”上热搜;英特尔发布全新独立显卡品牌 Arc|极客头条...
  6. 等级考试(四):二级C++---回首往昔考试历程
  7. tfs nginx 端口调用失败?
  8. WebService学习总结(6)——WebService常用接口
  9. python --opencv图像处理Canny算子边缘检测(Roberts算子、Prewitt算子、Sobel算子、Laplacian算子、Scharr 算子、 LOG 算子)
  10. opencv warp(扭曲)球面投影的原理
  11. excel单元格使用公式进行币种自动转换,亿,万,元
  12. kubernetes device or resource busy的问题
  13. 机器学习——聚类算法(一)
  14. android立体3D效果_3D立体画手绘墙体彩绘
  15. Zookeeper一致性级别分析,含爱奇艺,小米,腾讯,阿里
  16. STM32中断优先级NVIC
  17. 我提莫谢谢你!给我100块羞辱离职,原来是激励我“卧薪尝胆”!
  18. cpolra实现内网穿透,无须公网ip
  19. 小学生掌握的stem教育
  20. fluent瞬态计算终止条件在哪里设置_fluent模拟表面喷涂

热门文章

  1. 选下拉框的的值对应上传相应的图片_excel表格下拉菜单调用对应数据,如何在excel中实现,选择下拉菜单某一项,该表格中就出现选项对应的数据?...
  2. 2014小米,百度,pptv,去哪儿笔试题目回忆
  3. 猴子都能懂得Git(入门篇汇总版)持续更新中~~~
  4. vscode用tensorboard报错 We failed to start a TensorBoard session due to the following error: Command fa
  5. C++ OpenCV无法调用视频的问题
  6. 智慧景区电子票务系统人脸识别售检票基本思路
  7. 华人民共和国道路交通安全法
  8. CH579实现一个最小外围设备(Peripheral)
  9. 【机器学习之模型融合】Voting投票法简单实践
  10. CRS-1705: Found 1 configured voting files but 2 voting files are required