h2

802.11协议精读26:802.11e(TXOP,Block_ACK)

廉价感情. 提交于 2020-03-20 23:47:52
3 月,跳不动了?>>> 序言 802.11e是802.11协议中,一个阶段性的改良版本。我们目前绝大部分802.11协议用到的MAC层接入机制,都是基于802.11e时期开始定义的。在802.11初期,仅有的PCF和DCF两种机制,不能够满足网络不同业务的增长,所以才有了802.11e诞生。在此之后,关于QoS问题也俨然成为802.11中的一个典型问题被进一步讨论,在实现上有ATF,在协议上还有802.11aa和802.11ae等相关版本,都是针对QoS而言的。 本文针对802.11e的相关功能做一份阐述。之前我们有一篇关于《 802.11协议精读21:802.11e的优先级 》阐述了802.11协议中的QoS映射关系,本文着重讨论的就是802.11中的协议规则,也就是当给数据包标记后,如何为其在无线端口提供QoS保障的功能。 Remark: 以下几篇有关802.11e的文章,参考《802.11 QoS Overview》 by Philippe Klein,该资料笔者也备份如下, 802.11e slide (Philippe Klein) 。 802.11e和WMM 802.11e于2004年正式通过,是802.11协议中关于QoS的一份重要补充。802.11协议最初是为了数据的无线通信,而针对于语音等相关有QoS需求的业务没有考虑。所以随着802.11发展的越来越快

参考这套代码,辩论赛也能搬到线上

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-20 23:43:15
3 月,跳不动了?>>> 你熟悉辩论么?如果不熟悉,“奇葩说”总是看过的吧?我们这次想聊聊辩论赛的“未来”。 说是“未来”,或许现在也同样适用。在疫情还未解除的情况下,很多线下活动都无法进行,辩论就是其中之一。不过已经有人将这个场景从线下搬到了线上。 我们 2019 年 RTC 创新编程挑战赛的三强之一,“辩之竹”团队实现了一套功能完整的辩论系统,能计时、在线辩论、裁判视频点评,还能统计票数等。而且,它已经应用于很多辩论比赛中。于是我们让“辩之竹”撰写分享了一下作品的初衷,还有核心功能的实现: 项目介绍 为解决传统辩论赛UI丑、各系统相互割裂、线下举办各类成本等问题,特开发此系统。该套系统完全体包括: 可定制的赛事计时器 赛程、评委和辩手 管理后台 赛程查看和无纸化提交分数的小程序 赛后即时点对点反馈个人表现的辩力提升系统 远程裁决的视频会议部分 项目初心 作为一个大学生,我们经常在大学举办各类辩论赛,但是在当前的辩论赛事中,长期存在着五大问题,即如图: image.png 日程查看不直观 计时器简陋不美观 统计票数麻烦且不环保 复盘数据获取困难 优质裁判资源稀少 除了以上问题,其实我们也发现现在的辩论赛非常受限于场地的局限,就算同一学校的两支辩论队也要解决申请教室、邀请评委、宣传吸引观众等问题,更别说如果是两所学校,两个城市,甚至两个国家的辩论队之间要举办比赛了

React Hook + TS 购物车实战(性能优化、闭包陷阱、自定义hook)

╄→гoц情女王★ 提交于 2020-03-20 23:42:54
3 月,跳不动了?>>> 前言 本文由一个基础的购物车需求展开,一步一步带你深入理解React Hook中的坑和优化 通过本篇文章你可以学到: ✨React Hook + TypeScript编写 业务组件 的实践 ✨如何利用React.memo 优化性能 ✨如何避免Hook带来的 闭包陷阱 ✨如何抽象出简单好用的 自定义hook 预览地址 https:// sl1673495.github.io/rea ct-cart 代码仓库 本文涉及到的代码已经整理到github仓库中,用cra搭建了一个示例工程,关于性能优化的部分可以打开控制台查看重渲染的情况。 https:// github.com/sl1673495/re act-cart 需求分解 作为一个购物车需求,那么它必然涉及到几个需求点: 1. 勾选、全选与反选。 2. 根据选中项计算总价。 需求实现 获取数据 首先我们请求到购物车数据,这里并不是本文的重点,可以通过自定义请求hook实现,也可以通过普通的useState + useEffect实现。 const getCart = () => { return axios ( '/api/cart' ) } const { // 购物车数据 cartData , // 重新请求数据的方法 refresh } = useRequest < CartResponse > (

802.11协议精读27:再谈802.11e的优先级(Admission Control)

你说的曾经没有我的故事 提交于 2020-03-20 23:42:42
3 月,跳不动了?>>> 序言 本文按照顺序是应该讨论EDCA/HCCA的,但是在此之前,我们需要重新回顾下802.11e中的优先级部分。我们知道802.11协议实际上是一个纵深很长的协议,因为802.11既需要考虑到商业级WiFi的场景和需求,又需要考虑到低成本轻量级的终端。所以其设计的部分实际上有很多潜在内容,很不好让别人理解。 好比前面我们说了802.11e的优先级有默认的4种类型,但是实际上情况下,用户能不能根据自己需求自定义呢。这里就是本文讨论的Admission Control机制了,所以本文我们要说明下802.11e中几个非常容易混淆的概念, TID , TC , TS , TSpec,TClas 。 再谈802.11的优先级 在我们前面的说明中,我们知道在802.11e中一共定义了4种流量种类。分别如下: 上图说明,当流量MSDU到达802.11e定义的MAC层时,会根据其802.1D的tag标识被分别存放到4个不同的queue里,分别是AC_VO,AC_VI,AC_BE,AC_BK。这里对应关系我们在《 802.11协议精读21:802.11e的优先级 》一文中梳理过。 但是如果结合下图,估计很多人会比较晕,前面是4个优先级队列,然后下图变成了8个优先级队列了,笔者在这个点上也晕了很久。 这是802.1D(802.1p)和802.11的QoS对应关系

Service Worker简易教程

我的梦境 提交于 2020-03-20 23:41:56
3 月,跳不动了?>>> 面试中经常问 service worker 的内容,但是网上没有一篇文章完整的 简介 W3C 组织早在 2014 年 5 月就提出过 Service Worker 这样的一个 HTML5 API ,主要用来做持久的离线缓存。 浏览器中 js 运行中单一主线程中,同一时间只能做一件事情。 如果一段代码运算太过耗时,就会一直占用浏览器主线程,造成性能下降。基于这个问题, W3C 提出了 web Worker ,将耗时太长的任务交给 web worker ,然后通过 post Message 告诉主线程,主线程通过 onMessage 得到结果。 但是 web Worker 是临时的,每次运行的结果不能持久的保持下来,下次有复杂的运算,还需要重新计算一次。为了解决这个问题,推出了 Service Worker ,相对于 web worker 增加了离线缓存能力。 Service Worker 主要有以下特点和功能: 离线缓存 消息推送 请求拦截 如何使用 Service Worker 注册 创建一个 html ,底部加入注册 service Worker if ( 'serviceWorker' in navigator) { window .addEventListener( 'load' , () => { navigator.serviceWorker

Edge换谷歌内核是好事?扒扒Chrome的黑历史-太平洋电脑网

穿精又带淫゛_ 提交于 2020-03-20 23:38:45
3 月,跳不动了?>>>   [PConline 杂谈]微软Edge 浏览器 换用Chromium内核已经不是新闻了,Chromium内核的Edge也已经正式发布,虽然没有通过Windows Update推送,但大家可以手动到Edge官网下载安装。很多人认为这是一件好事,毕竟Edge在过去几年不成气候,兼容性似乎不太令人满意,早换成主流的Chromium内核,对于用户体验是有好处的。 Edge已经换用了Chromium内核   Edge换用Chromium内核后,产品力的提升,是显而易见的。但这对于整个网络生态来说,真的是一件好事吗?Edge换用Chromium,乃至更早之前的Opera浏览器弃用自家内核、换用和Chrome一样的Blink,都有自己的苦衷。Chrome系浏览器已经形成垄断之势,Chrome面对竞争,耍过不少小手段,今天就一起来说说这方面的话题,大家应该对垄断心怀警惕。 Opera/Vivaldi:资深受害者   我们先从经典的Opera浏览器说起。如果你关注浏览器,应该知道Opera引领了很多浏览器的先进设计,例如快速拨号、标签页等等。   而Opera的原创内核Presto用户体验也很好,这个内核的渲染机制比较独特,会首先读取网页的框架,然后再文字、图片和其他元素逐渐在框架的相应位置显示。这样的好处就是,文字等可读性高的内容可以第一时间就呈献给用户

作为程序员,有没有让你感到既无语又崩溃的代码注释?

只谈情不闲聊 提交于 2020-03-20 23:31:53
3 月,跳不动了?>>> 作为一个程序员,可谓是天天熬夜来加班,也无法阅遍无数的程序代码,不知道有多少次见到那些让人既感到无语又奔溃的代码注释了。你以为自己能读懂这些代码,并且有信心可以优化这些代码,一旦你开始尝试这些代码,你将会被困在无尽的通宵中,在咒骂中结束这段痛苦的历程。 更有有网友直言,自己写代码都是拼音变量名和中文注释,害怕被踢出程序员队伍。下面这个代码注释大概说出了很多写代码人的心声了。 //我写这一行的时候,只有上帝和我知道我在写什么 //现在,只有上帝知道了 让人哭笑不得的代码注释,就是这么优秀的 更有隔空diss类代码注释 //somedev1 - 6/7/02 添加对登录屏幕的暂时追踪功能 //somedev2 - 5/22/07 暂时个屁 傲娇型代码注释 //就不给你们写注释 //这代码写得这么费劲 //所以你们读着也得费劲 未解之谜代码 Sasha Krassovsky 曾经有一次, 从学生交给他的代码里随便挑了一份来看,然后发现了这么一条注释: /* Do NOT delete this comment */ /* 不要删除这段注释 */ 好奇心驱使,他想要试一下如果把注释删除了到底会怎么样。所以他就删除了,然后重新编译。结果程序真的就不能运行了。然后他把注释重新加回去,结果又好了。 删掉注释以后会报错 LINK1000,根据链接器错误文档的说明

今日 Paper | CausalML;隐式函数;慢动作视频重建;交叉图卷积网络等

有些话、适合烂在心里 提交于 2020-03-20 23:23:20
3 月,跳不动了?>>> 目录 CausalML:用于因果机器学习的Python包 用于3D重建和形状补全的特征空间中的隐式函数 基于混合成像系统的慢动作视频重建 交叉图卷积网络(Cross-GCN):使用k顺序特征交互来增强图卷积网络 选择核网络 CausalML:用于因果机器学习的Python包 论文名称:CausalML: Python Package for Causal Machine Learning 作者: Huigang Chen* 发表时间:2020/3/2 论文链接: https://paper.yanxishe.com/review/14227?from=leiphonecolumn_paperreview0318 推荐原因 本文主要内容: 本文提出了一种新的机器学习算法包——CausalML,这是一种采用ython语言编写而成用于解决因果推理(causalinference)与机器学习(machine learning)任务的算法,并且已经封装成型,提供了API接口供学习者使用。对于CausalML包的使用用途,作者从三方面进行介绍,分别为 定位优化(Targeting Optimization)、因果影响分析(Causal Impact Analysis)以及模型的个性化(Personalization)。此外作者也对后续的研究提出了自己的观点。总之

今日 Paper | 双向ConvLSTMU-Net卷积;SAU-Net;立体匹配;深度语义分割等

偶尔善良 提交于 2020-03-20 23:23:04
3 月,跳不动了?>>> 目录 具有稠密连接的双向ConvLSTMU-Net卷积 SAU-Net:基于空间注意力的密集型U-N网络在脊柱三维MRI分割中的应用 学会自适应的立体匹配 自然和医学图像的深度语义分割:综述 深度学习在股市预测中的应用:最新进展 具有稠密连接的双向ConvLSTMU-Net卷积 论文名称:Bi-Directional ConvLSTM U-Net with Densley Connected Convolutions 作者:Reza Azad; Maryam Asadi-Aghbolaghi; Mahmood Fathy; Sergio Escalera 发表时间:2019/9/15 论文链接: https://paper.yanxishe.com/review/13536?from=leiphonecolumn_paperreview0317 推荐原因 在常规的 U-Net 中,他们直接将 encoded feature 直接拷贝并且结合到 decoding 的分支中。本文提出使用 BConvLSTM 的方法来处理 encoding 和 decoding feature,更好的进行结合。此处使用的 ConvLSTM 是来自于: Convolutional LSTM Network: A Machine Learning Approach for

实操教程丨使用Pod安全策略强化K8S安全

岁酱吖の 提交于 2020-03-20 23:18:47
3 月,跳不动了?>>> 本文来自 Rancher Labs 什么是Pod安全策略? Kubernetes Pod安全策略(PSP)是Kubernetes安全版块中极为重要的组件。Pod安全策略是集群级别的资源,用于控制Pod安全相关选项,并且还是一种强化Kubernetes工作负载安全性的机制。Kubernetes平台团队或集群运维人员可以利用它来控制pod的创建以及限制特定的用户、组或应用程序可以使用的功能。 举个简单的例子,使用PSP你可以: 防止特权Pod启动并控制特权升级。 限制Pod可以访问的主机命名空间、网络和文件系统 限制可以运行pod的用户/组。 限制Pod可以访问的Volume 限制其他参数,如运行时配置文件或只读根文件系统 在本文中,我们将向你展示在Rancher中如何通过启用一个简单的Pod安全策略来强化你的Kubernetes安全。 Pod安全策略真的可以增强K8S的安全性吗? 是的,Pod安全策略确实可以增强Kubernetes的安全性。它提供了Kubernetes原生控制机制,可以防止威胁而不影响性能,这与agent必须拦截主机上的每个动作有所区别。 如果你尚未在集群中启用PSP(或执行访问控制之类的等效方法),则Kubernetes用户可能会生成特权集群。这将会被恶意利用,例如提升特权进而突破容器隔离并访问其他Pod/服务。 如果没有限制Pod