InfraPub 为您找到相关结果 11

深入理解Golang之context

消,将返回nil。Err 如果Done返回的channel没有关闭,将返回nil;如果Done返回的channel已经关闭,将返回非空的值表示任务结束的原因。如果是context被取消,Err将返回Canceled;如果是context超时,Err将返回DeadlineExceeded。Value 返回context存储的对中当前key对应的值,如果没有对应的key,则返回nil。可以看到Done方法返回的channel正是用来传递结束信号以抢占并中断当前任务;Deadline方法指示一段时间后当前goroutine是否会被取消;以及一个Err方法,来解释goroutine被取消的原因;而Value则用于获取特定于当前任务树的额外信息。而context所包含的额外信息对是如何存储的呢...阅读全文

博文 2021-01-27 09:05:27 知乎

Debian 10使用 Wine 安装配置微信、QQ与TIM

法)能够显示中文了。你说还有中文不能显示,还有方框,那确实是会有的。但笔者水平有限,也不懂怎么解决了。。 追求精致的读者,可以在终端中输入regedit打开wine的注册表,追踪[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]作更细致的尝试,比如其他注册表的值,比如把相关的字体复制过去。 wine安装exe软件 参考:deepin wiki中wine安装,在终端中执行 wine uninstaller 会弹出如下窗口 点击界面的Install可以浏览目录的exe文件安装。注意上面界面找不到你要的东西,则在File of types中下拉选择,可以显示更多安装包。 点击下面方框...阅读全文

Golang Context 探究

&valueCtx{parent, key, val} } // context.valueCtx 中存储的对与 context.valueCtx.Value 方法中传入的参数不匹配 // 就会从父上下文中查找该键对应的值直到在某个父上下文中返回 nil 或者查找到对应的值 func (c *valueCtx) Value(key interface{}) interface{} { if c.key == key { return c.val } return c.Context.Value(key) } 在 context 传递数据的场景一般很有限,比较常见的使用场景是传递请求对应用户 token 以及用于进行分布式追踪的 trace id。不建议用来传递请求参数。 我用下面这种图来展示...阅读全文

博文 2021-02-25 09:27:27 lxkaka

聊聊很重要的内核技术eBPF

或bpftrace等项目间接使用eBPF,这些项目在eBPF之上提供了抽象,并且不需要直接编写程序,而是提供了指定基于意图的定义的功能,然后使用eBPF实施。 如果不存在更高级别的抽象,则需要直接编写程序。 Linux内核希望eBPF程序以字节码的形式加载。虽然当然可以直接编写字节码,但更常见的开发实践是利用LLVM之类的编译器套件将伪C代码编译为eBPF字节码。 在编写eBPF程序之前,需要简单了解几个概念。 1)map(映射) :BPF最令人着迷的方面之一是,内核上运行的代码和加载了该代码的程序可以在运行时使用消息传递相互通信。 BPF映射是驻留在内核中的/存储。任何BPF程序都可以访问它们。在用户态中运行的程序也可以使用文件描述符访问这些映射。只要事先正确指定数据大小,就可以在映射...阅读全文

博文 2020-08-16 11:08:44 debian.cn

使用 MongoDB 之前应该知道的 14 件事

返回一个空的记录集 。 Lookup 而没有索引支持 Lookup 的功能和 SQL 联合查询类似。为了获得良好的性能,作为外键的上需要有索引。这并不明显,因为其使用并没有在 explain() 中报告。这些索引并不包含在 explain() 记录的索引里,那些索引是供管道操作符$match、$sort 出现在管道开始时使用的。现在,索引可以覆盖聚合管道的任何阶段 。 不使用多条更新 db.collection.update() 方法用于修改一个已存在文档的一部分或全部,或者是整个替换一个已存在的文档,这取决于你提供的 更新参数 。除非你设置 multi 参数,更新匹配查询条件的所有文档,否则它不会更新集合里的所有文档。这一点不是那么明显。 忘记哈希对象中键序的意义 在 JSON 中,一...阅读全文

Gitlab CI 配置文件 .gitlab

no 定义此作业完成部署的环境名称 coverage no 定义给定作业的代码覆盖率设置 script script是Runner执行的yaml脚本。举个例子: job: script: "bundle exec rspec" 该参数也可以用数组包含多个命令: job: script: - uname -a - bundle exec rspec 有时候,script命令需要被单引号或者是双引号包裹起来。举个例子,当命令中包含冒号(:)时,script需要被包在双引号中,这样YAML解析器才可以正确解析为一个字符串而不是一个对(key:value)。使用这些特殊字符的时候一定要注意::,{,},[,],,,&,*,#,?,|,-,<,>,=,!。 stage stage允许一组jobs进入...阅读全文

博文 2018-12-12 21:01:19 ci.yaml 详解(上)

译:Kubernetes 最佳实践

道实现自动化,这将提高应用程序部署效率和速度。CI/CD 还将提供部署的审计跟踪。Git 应该是所有自动化的单一事实来源,并将实现对 K8s 集群的统一管理。还可以考虑使用专用的基础架构交付平台,例如 Spacelift,它最近引入了 Kubernetes 支持。缩小容器的大小较小的映像大小将有助于加快构建和部署速度,并减少容器在 K8s 集群上消耗的资源量。应尽可能删除不必要的软件包,并应优先使用诸如 Alpine 之类的小型操作系统分发映像。较小的图像可以比较大的图像更快地拉取,并且消耗更少的存储空间。遵循这种方法还将提供安全优势,因为恶意行为者的潜在攻击媒介将会减少。用标签整理对象K8s 标签是附加到对象用来组织集群资源的对。标签应该是有意义的元数据,提供一种机制来跟踪 K8s 系...阅读全文

博文 2022-09-13 19:32:21 atbug.com

最全 MongoDB 基础教程

回的键。查询时返回文档中所有, 只需省略该参数即可(默认省略) # 以易读的方式读取数据 db.ruochen.find().pretty() 操作 格式 范例 RDBMS中的类似语句 等于 {key:value} db.ruochen.find({'by':'ruochen'}).pretty() where by = 'ruochen' 小于 {key:{$lt: value}} db.ruochen.find({'likes': {$lt:3}}).pretty() where likes < 3 小于或等于 {key:{$lte: value}} db.ruochen.find({'likes': {$lte:2}}).pretty() where likes <= 2 大于...阅读全文

博文 2021-02-22 07:45:45 OSChina

Web前端知识体系精简

) 对style的操作(对不同的属性操作,影响不一样) 还有一种是用户的操作,比如改变浏览器大小,改变浏览器的字体大小等(回流+重绘) 4、本地存储 本地存储最原始的方式就是 cookie,cookie 是存放在本地浏览器的一段文本,数据以对的形式保存,可以设置过期时间。 但是 cookie 不适合大量数据的存储,因为每请求一次页面,cookie 都会发送给服务器,这使得 cookie 速度很慢而且效率也不高。因此cookie的大小被限制为4k左右(不同浏览器可能不同,分HOST),如下所示: Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。 Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号...阅读全文

博文 2021-01-28 17:50:33 debian.cn

kubectl 创建 Pod 背后到底发生了什么?—探寻 Kubectl 创建 Pod 的原理

源状态时,kube-apiserver 就会调用这些 API 组。每个 API 组都会遍历它的所有组版本,并且将每个 HTTP 路由映射到 REST 路径中。当请求的 METHOD 是 POST 时,kube-apiserver 就会将请求转交给 资源创建处理器。 现在 kube-apiserver 已经知道了所有的路由及其对应的 REST 路径,以便在请求匹配时知道调用哪些处理器和存储。多么机智的设计!现在假设客户端的 HTTP 请求已经被 kube-apiserver 收到了: 如果处理链可以将请求与已经注册的路由进行匹配,就会将该请求交给注册到该路由的专用处理器来处理;如果没有任何一个路由可以匹配该请求,就会将请求转交给基于路径的处理器(比如当调用 /apis 时);如果没有任何一...阅读全文

博文 2022-04-18 16:18:04 CSDN

谷歌公开了内部管理Infra层的两个工具的Paper

题,详见图3。 图3:每个服务模型必须和每个基础架构提供者集成 如果只需要处理几个基础架构提供者,N*M问题还是可以管理的。随着基础架构提供者数量的增多(看看Google Cloud,AWS和Microsoft Azure上的产品数量),这些集成的数量和质量问题就开始出现了。 实际上减少基础架构提供者的数量不太实际。每个提供者都在提供不同的服务(比如,存储,pub/sub系统等),并且一些冗余不得不存在,就算定义好规则也会有很多异常情况出现。使用单个服务模型也不现实——这个模型必须能够暴露所有基础架构提供者的每一个特性,这违反了服务模型的初心。 Google的工程师们花费了大量时间将他们需要的服务模型连接到想要使用的基础架构上。我们显然需要一种不同的配置方案。 — 2 — 大规模部署 在...阅读全文

博文 2023-01-08 11:23:20 CSDN博客