Surprise

托管节点池助力用户构建稳定自愈的 Kubernetes 集群

≯℡__Kan透↙ 提交于 2021-02-06 14:57:18
简介: 随着容器技术的不断发展迭代,Kubernetes 已成为云原生时代的标准操作系统,那么如何构建一个稳定自愈的云原生操作系统事关重大。尤其是分布式环境下,各类硬件和软件故障已成为常态,直接导致 Kubernetes 集群工作节点时常处于一种不稳定的状态,人肉运维不仅效率低下,误操作及 24 小时 OnCall 也是巨大的挑战,因此容器服务通过托管节点池为用户提供了一个自愈的免运维的云上 Kubernetes 集群服务。本文将重点介绍如何通过托管节点池实现 Kubernetes 节点自愈能力 随着容器技术的不断发展迭代,Kubernetes 已成为云原生时代的标准操作系统,那么如何构建一个稳定自愈的云原生操作系统事关重大。尤其是分布式环境下,各类硬件和软件故障已成为常态,直接导致 Kubernetes 集群工作节点时常处于一种不稳定的状态,人肉运维不仅效率低下,误操作及 24 小时 OnCall 也是巨大的挑战,因此容器服务通过托管节点池为用户提供了一个自愈的免运维的云上 Kubernetes 集群服务。本文将重点介绍如何通过托管节点池实现 Kubernetes 节点自愈能力。 首先,我们需要定义什么是节点自愈? 什么是节点自愈? Kubernetes 集群作为一个典型的分布式系统,是由一组 Master 管控节点,加上若干个运行工作负载的节点组成

Oh my God, Swagger API文档竟然可以这样写?

心不动则不痛 提交于 2020-12-17 14:27:11
最好的总会在不经意间出现。 “ 作为后端程序员,免不了与前端同事对接API, 一个书写良好的API设计文档可有效提高与前端对接的效率。 为避免联调时来回撕逼,今天我们聊一聊正确编写Swaager API文档的姿势。 基础Swagger用法 在 ConfigureServices 配置Swagger文档,在 Configure 启用中间件 // Install-Package Swashbuckle.AspNetCore 略 services.AddSwaggerGen( options => { options.SwaggerDoc("v1", new OpenApiInfo { Title = "EAP API", Version = "v1" }); } ); --- app.UseSwagger(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("/swagger/v1/swagger.json", "EAP API"); }); 应用会在 /Swagger 页面加载最基础的API文档。 以一个最简单的Post请求为例, 细数这最基础Swagger文档的弊病 : [HttpPost] public async Task<bool> AddHotmapAsync([FromBody]

测测你的数学直觉

依然范特西╮ 提交于 2020-11-25 19:08:11
已知: 新冠测试的准确率: 新冠患者被测出positive的概率是0.9 非新冠患者被测试出negative的概率是0.9 整个人群的新冠患者比例是0.1 如果一个人被测试出positive,那他是新冠的概率更接近以下哪个: 0.4 0.5 0.6 0.7 0.8 0.9 1 如果不知道如何下手,可以参考贝叶斯定理。 来一起算一算: 是不是有点surprise。对于发病率较低的疾病,比如说0.01,一样的准确度,测试出是阳性的结果,实际上是阳性的概率只有0.083. Plot一个图给大家看看。x轴为发病率,y轴为测试出阳性的人的得病概率。 为什么会有这种直觉误差呢。这就是统计学上最经典的样本分布不均匀的问题。如果实际发病率达到了0.5(样本分布均匀),那么: P(TestPositive/Positive)=P(Positive/TestPositive)=0.9 那直觉就对了。 还记得模型评分里提到的那个例子吗?对于疾病的预测,如果预测全部false,准确率可以达到(1-发病率), 也就是发病率为0.01的疾病,模型什么都不做,就可以达到准确度99%。 另外提醒,瑞典的参与新冠测试的人,基本上都症状差不多match了,所以测试出是positive,就基本上是positive了。而本文的例子是大街上随便抓一个去测试的案例。 本文分享自微信公众号 - 一起learn大数据和机器学习

Linux信号(Understanding Linux Kernel 3rd)

烈酒焚心 提交于 2020-11-21 06:13:39
总览 产生 内核或应用程序产生,一份简短的信息。 传递 挂起状态 非挂起状态 信号类型 发给进程的信号(所有线程共享) 发给线程的信号 处理者 进程信号是其中一个没有屏蔽这个信号的线程处理。 线程就是指定线程处理。 处理方式 do_signal 处理 创建对应的特定栈帧来处理。 信号处理函数 整个进程中的线程共享。 有默认也有自定义。 需要的信息也可以自定义。 信号的作用 简讯 一份简短的信息。 生产者是内核或进程。 处理者是具体的线程或者是进程组中符合处理条件的线程。 内容 标准的信号就只有一个数字。 32 位的整数,每一位对应一个信号位。 支持实时信号的系统是 64 位,即两个 long . 信号定义 trap -l 用上面的指令罗列出支持的信号。 在编程中一般是宏定义,然后每个宏对应一个数字。 #define SIGHUP 1 #define SIGINT 2 #define SIGQUIT 3 #define SIGILL 4 #define SIGTRAP 5 #define SIGABRT 6 #define SIGIOT 6 #define SIGBUS 7 #define SIGFPE 8 #define SIGKILL 9 #define SIGUSR1 10 #define SIGSEGV 11 #define SIGUSR2 12 #define

NVMe时代全面到来 华为距离登顶全球存储市场还有多远?

爱⌒轻易说出口 提交于 2020-08-12 16:34:00
走在存储行业前沿,华为NVMe SSD存储历尽千帆仍少年。 出品 | 常言道 作者 | 丁常彦 如果说全闪存是未来存储市场的大势所趋,那么NVMe SSD则是全闪存市场的发展大势; 如今,全球各大存储厂商都在加速推出基于NVMe的新一代存储产品,华为同样也在积极投身这一代表存储技术未来走向的前沿领域。 日前,入选华为“天才少年”的两名博士生,在加入华为后也将从事华为存储相关的研究,新型存储介质(NVM,SMR)、数据库和键值存储系统正是他们的研究方向之一。 事实上,早在2005年,华为就开始了闪存技术的研究,经过十多年的持续积累,目前华为已经是存储行业内拥有SSD盘片级专利最多的厂家之一。尤其 在NVMe(非易失性内存主机控制器接口规范)领域,华为更是在业内唯一端到端开发了NVMe SSD盘、NVMe闪存控制器和NVMe全闪存操作系统的企业,并在新一代OceanStor全闪存中率先实现了全系列端到端NVMe产品。 梁启超在《少年中国说》中如是说:少年智则国智,少年富则国富;少年强则国强,少年独立则国独立……通过“天才少年”计划聚拢高端人才的华为存储,不仅要成为NVMe SSD的引领者,距离登顶全球存储市场也已经不远。 成为存储事实标准 NVMe时代全面到来 NVM(非易失性存储器)是一种计算机即使关闭电源也能够保存已保存数据的存储器;与易失性存储器不同

[UVA11300]Spreading the Wealth

末鹿安然 提交于 2020-08-08 12:51:12
2020.7.30新更新,之前不会用 \(\LaTeX\) ,现在加上了…… 博客园上整个重写了,丢了一条LC大佬的评论QAQ 题目 原题链接 解说 真是一道苏维埃气息极其浓郁的题目啊,共产主义马上就要实现了!(财富液化委员会表示很赞) 但可惜的是这道题并没有那么友善。这是一道数学题。(兄弟们把害怕打在公屏上) 在经过繁杂的思考的思考后,我觉得思路大概就是下面这样: 首先非常显然最后所有人的金币都要变成 \(ave=\frac{sum}{n}=\frac{A_1+A_2+A_3+ \dots + A_n}{n}\) ( \(A_i\) 为原数组)。 由于金币只能在相邻的人之间传递,所以我们不妨设 \(X_i\) 代表 \(i\) 向 \(i-1\) 号传递的硬币(正负表示方向,正数表示 \(i\) 向 \(i-1\) 传递的,负数表示 \(i-1\) 向 \(i\) 传递的,自然, \(0\) 代表不用传递。由于是一个环, \(X_1\) 就表示 \(1\) 和 \(n\) 号之间的关系)。 由于最后所有人金币均为 \(ave\) ,所以每个人的原金币减给出去的加拿过来的结果必定是 \(ave\) ,即 \(A_i-X_i+X_{i+1}=ave\) 。移个项,我们得到 \(X_{i+1}=ave-A_i+X_i\) 。由此,我们可以得到一列数组: \[X_2=ave-A_1+X

Python推荐系统库Surprise

浪尽此生 提交于 2020-05-04 05:16:12
Surprise(Simple Python Recommendation System Engine)是一款推荐系统库,是scikit系列中的一个。简单易用,同时支持多种推荐算法。基础算法、协同过滤、矩阵分解等 Surprise使用 Surprise里有自带的Movielens数据集。 1、载入自带数据集 from surprise import Dataset,evaluate,print_perf # 默认载入movielens数据集 data=Dataset.load_builtin( ' ml-100k ' ) # k折交叉验证 data.split(n_folds=3 ) # 假设使用SVD矩阵分解 algo= SVD() # 在数据集上测试效果(评估) perf=evaluate(algo,data,measures=[ ' RMSE ' , ' MAE ' ]) print_perf(perf) 2、载入自己的数据集 # 指定文件所在路径 file_path=os.path.expanduser( ' 文件路径 ' ) # 告诉文本阅读器,文本的格式是怎样的 reader=Reader(line_format= ' ' ,seq= ' \t ' ) # 加载数据 data=DataSet.load_form_file(file_path,reader=reader)

拥抱幸福 就在人间的四月天

五迷三道 提交于 2020-04-07 12:00:11
“小美,嫁给我吧!”这突如其来的一嗓子,令一条腿尚悬在店门外的小美惊了一跳。定睛一看,交往多年的男朋友牛牛正单膝跪地,手捧着鲜红的玫瑰花。瞬间,她的眼泪夺眶而出。这一刻,她已等得太久,太久…… 牛牛早些年开始创业,先是做实体,后来新零售崛起,***零售凌空出世,对线下实体门店和线上电商都带来了强大冲击,多数企业举步维艰。牛牛追赶时代浪潮,也同步做起了电商。但是,竞争残酷,线上线下的全面融合,亦未能救其于水火。他深陷于库存积压、销路不畅的困境,现金流吃紧,债台高筑,再加上一场突如其来的疫情,公司走到破产边缘。银行贷不到款,而处于资本寒冬的投资机构,更是无意出手。牛牛每天焦头烂额,早已把小美抛诸脑后。 “你不是说一定要等公司效益好转,现金流的窟窿堵上了,才……”,小美的话还没说完,牛牛便塞了一块巧克力过来,笑道:“小美,是‘财富风暴’!它解决了我的所有问题!你知道吗,在‘财富风暴’的帮助下,我缔造了疫情之下的商业神话!” 牛牛所言不虚,在这个孕育希望的季节,他创造了逆增长奇迹。小美很是惊叹,没想到数日未见,颓废的牛牛变得如此自信而有力量。怪不得今天突然让她过来,说有surprise。 看着一脸茫然的小美,牛牛得意洋洋,揭秘他与“财富风暴”的不解之缘…… 春暖花开日,绝处逢生时。原来,是邮箱里的一封推广邮件,令牛牛看到黎明的曙光。那封邮件的标题是,“创新企业增加收入的法宝——财富风暴”

拥抱幸福 就在人间的四月天

≯℡__Kan透↙ 提交于 2020-04-07 09:47:20
“小美,嫁给我吧!”这突如其来的一嗓子,令一条腿尚悬在店门外的小美惊了一跳。定睛一看,交往多年的男朋友牛牛正单膝跪地,手捧着鲜红的玫瑰花。瞬间,她的眼泪夺眶而出。这一刻,她已等得太久,太久…… 牛牛早些年开始创业,先是做实体,后来新零售崛起,***零售凌空出世,对线下实体门店和线上电商都带来了强大冲击,多数企业举步维艰。牛牛追赶时代浪潮,也同步做起了电商。但是,竞争残酷,线上线下的全面融合,亦未能救其于水火。他深陷于库存积压、销路不畅的困境,现金流吃紧,债台高筑,再加上一场突如其来的疫情,公司走到破产边缘。银行贷不到款,而处于资本寒冬的投资机构,更是无意出手。牛牛每天焦头烂额,早已把小美抛诸脑后。 “你不是说一定要等公司效益好转,现金流的窟窿堵上了,才……”,小美的话还没说完,牛牛便塞了一块巧克力过来,笑道:“小美,是‘财富风暴’!它解决了我的所有问题!你知道吗,在‘财富风暴’的帮助下,我缔造了疫情之下的商业神话!” 牛牛所言不虚,在这个孕育希望的季节,他创造了逆增长奇迹。小美很是惊叹,没想到数日未见,颓废的牛牛变得如此自信而有力量。怪不得今天突然让她过来,说有surprise。 看着一脸茫然的小美,牛牛得意洋洋,揭秘他与“财富风暴”的不解之缘…… 春暖花开日,绝处逢生时。原来,是邮箱里的一封推广邮件,令牛牛看到黎明的曙光。那封邮件的标题是,“创新企业增加收入的法宝——财富风暴”

具有ID的DOM树元素是否会成为全局变量?

本秂侑毒 提交于 2020-03-03 18:18:25
在研究一个简单的HTMLElement包装器的想法时,我偶然发现了Internet Explorer和 Chrome 的以下内容: 对于DOM树中具有ID的给定HTMLElement,可以使用其ID作为变量名称来检索div。 所以对于像 <div id="example">some text</div> 在 Internet Explorer 8 和Chrome中,您可以执行以下操作: alert(example.innerHTML); //=> 'some text' 要么 alert(window['example'].innerHTML); //=> 'some text' 那么,这是否意味着 DOM树中的每个元素都将 转换为全局名称空间中的变量? 并且这是否还意味着可以用它代替这些浏览器中的 getElementById 方法? #1楼 如前面的答案中提到的,此行为称为 window对象上的命名访问 。 某些元素的 name 属性值和所有元素的 id 属性值都可以用作全局 window 对象的属性。 这些被称为命名元素。 由于 window 是浏览器中的全局对象,因此每个命名元素都可以作为全局变量进行访问。 它最初是由Internet Explorer添加的,最终由所有其他浏览器实现,只是为了与依赖此行为的网站兼容。 有趣的是,Gecko(Firefox的渲染引擎)选择仅以