InfraPub 为您找到相关结果 239

理解 Linux 的虚拟内存

有些矛盾。于是翻一下资料重新整理一下这些知识,希望下次在用到它们时能更顺畅。转载意,请注明来源,文章持续修订。 由来 虚拟内存 毋庸置疑,虚拟内存绝对是操作系统中最重要的概念之一。我想主要是由于内存的重要”战略地位”。CPU太快,但容量小且功能单一,其他 I/O 硬件支持各种花式功能,可是相对于 CPU,它们又太慢。于是它们之间就需要一种润滑剂来作为缓冲,这就是内存大显身手的地方。 而在现代操作系统中,多任务已是标配。多任务并行,大大提升了 CPU 利用率,但却引出了多个进程对内存操作的冲突问题,虚拟内存概念的提出就是为了解决这个问题。 虚拟内存简单直观的解释 操作系统有一块物理内存(中间的部分),有两个进程(实际会更多)P1 和 P2,操作系统偷偷地分别告诉 P1 和 P2,我的整个内存...阅读全文

博文 2018-11-25 11:03:49 debian.cn

“Debian 章程有毒” - OSCHINA

1996年,Bruce Perens 接下了 Debian 创始人 Ian Murdock 的接力棒,成为 Debian 社区历史上第二位当家人。也就在这一年,不满20岁的 Joey Hess 为了满足自己打包游戏的爱好成为了 Debian 成员之一。 某天,加利福尼亚州的阳光正好,旧金山湾区(硅谷所在地)的某一角落,Bruce Perens 敲响了 Joey —— 这位刚来此地工作的年轻人的大门。 “I’m going to take you on a tour of the Bay Area. ” 他们开着车意地在湾区闲逛,当经过各大科技公司时,也会聊上两句。这次兜风是 Joey 第一次和社区的人面基,从此开启了 Joey 通往这个全新世界的大门,而 Bruce Perens 这位大...阅读全文

博文 2021-12-06 13:55:33 中文开源技术交流社区

Debian 往事: 与已故创始人 Ian Murdock 的昔日访谈

也是吸引用户的关键因素之一。 开发一个新版本就必定会面临新的编程难题。不过 Murdock 自有他的「秘密武器」: 我倒是无知者无畏,因为不了解自己将会面对什么,于是也就无所畏惧。我只知道我的目标和方向,但我当时完全不知道这一路会有多艰难。除此之外,Debian 的「分散式」定位就是用户可以时参与开发过程前来帮忙。Debian 是开放式的,因此有些我不精通的地方我可以向公众寻求帮助。比如我有个 2400 波特的调制解调器,但是我这辈子都没用过以太网卡,所以关于这方面我实在了解不多;但是有人肯定比我精通,可以帮我们忙。 Murdock 指出,Debian 的这个优势其实也同样是 Linux 和其他所有免费软件的最大武器。 这就是为什么 Linux 这样的软件质量会如此之高,因为它并不是单单为...阅读全文

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

阿里巴巴版 JDK 首发 GA 版 生产环境可用

Dragonwell JDK 尽快在生产环境中可用。该版本同步了 OpenJDK 上游社区 jdk8u212-b04 的最新更新,并通过了阿里巴巴内部生产环境测试。该项目最初开源时,阿里云智能基础产品事业部资深技术专家李三红在接受 InfoQ 独家专访时反复强调一个观点: Alibaba Dragonwell 一定是 OpenJDK 的下游,每个 Alibaba Dragonwell 发行版都会同步上游最新更新,并经过阿里巴巴内部大规模的应用集群测试。同时,阿里巴巴也会积极将 AJDK 上的技术积累贡献到 OpenJDK,积极参与社区的项目更新和维护。 除了同步上游社区,Dragonwell 8.0.0 还修复了一些在阿里巴巴场景下发现的重要 Bug。同时,该版本提供了默认安全证书,并会时更新维护。 此外...阅读全文

博文 2019-07-11 10:24:52 debian.cn

分布式运行时 Dapr 知多少

常见做法。 那如何解决侵入性的问题呢?这个问题着容器编排技术的成熟有了新的解法。Kubernetes可以不侵入应用层,在容器层解决问题,比如K8S Service就具有服务发现、负载均衡的能力,HPA具有动态扩容的能力。着K8S的快速发展,云原生的概念,也就越来越深入人心,那如何利用好K8S提供的基座能力,将更多的分布式能力下沉,让应用开发回归业务呢?其中Service Mesh提出的Sidecar模式,就很好的解决了微服务架构中网络通信的问题。Sidecar主要就是用来处理诸如服务发现、负载均衡、请求熔断等一系列非业务需求,应用在部署时动态插入Sidecar,服务间的通信通过Sidecar进行代理,以完成对服务间网络通信的接管。 到这里,微服务开发在Service Mesh的帮助下,已...阅读全文

Kubernetes源码探疑:Pod IP泄露排查及解决方法

对于云主机与云主机之间,只有轻微差异(小包场景下,pps 会有 3~5% 损耗),而且Pod网络性能各项指标(吞吐量,包量,延迟等)不会着节点规模增大而削减。而Flannel UDP,VXLan模式和Calico IPIP的模式存在明显的性能消耗。Pod能直通公有云和物理云。对于使用公有云和物理云的用户而言,业务上K8S少了一层障碍,多了一份便利。而Flannel的host gw模式下,容器无法访问公有云和物理云主机。 而CNI的工作流程如下所示。 创建Pod网络过程: 删除Pod网络过程: Pod IP 消失问题的排查与解决 为了测试CNI插件的稳定性,测试同学在UK8S上部署了一个CronJob,每分钟运行一个Job任务,一天要运行1440个任务。该CronJob定义如下...阅读全文

从 Debian 安装 Proxmox VE,并配置网络和双硬盘

本文记录如何从 Debian 安装 Proxmox VE,以及配置 IPv4 和 IPv6 网卡,为硬盘分区。 预配置系统装好后,从 NOCIX 后台面板取得 登陆用户名 和 密码。 用户名是 customer密码是一串机生成的字符串 使用 su 切换到 root 还需要输入密码,这样频繁操作比较麻烦。 免密登陆 root安装 sudo 实现免密 su 12apt updateapt install -y sudo 修改 /etc/sudoers 文件注意:只能用 visudo 交互式来修改 sudoers 文件 这是为了防止被脚本修改,就别想用 echo 来改了 visudo 会验证配置的格式,如果不验证,而你写的配置有问题,那么你无法切换到 root,而只有 root 用户才能修改...阅读全文

博文 2021-03-01 20:20:31 驱蚊器喵的插座

2017 年会是 Serverless 爆发之年吗

与不同的服务直接通信。相比之下,传统系统中所有通信经由后端服务器来实现。让前端与服务进行通信有助于减少创建环节、尽快获得所需的资源。 与第三方服务集成如果第三方服务能提供价值,并减少自定义代码,那么自然它们就很有价值。开发人员可以通过引入第三方服务来减少自己实现各种业务逻辑的需要,可以减少小型公司的开发成本,避免价格、性能、可用性等要素上的劣势。 未来趋势 着移动和物联网应用蓬勃发展,伴着面向服务架构(SOA)以及微服务架构(MSA)的盛行,造就了 Serverless 架构平台的迅猛发展。在 Serverless 架构中,开发者无须考虑服务器的问题,计算资源作为服务而不是服务器的概念出现,这样开发者只需要关注面向客户的客户端业务程序开发,后台服务由第三方服务公司完全或者部分提供,开发者...阅读全文

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

Gitlab CI 配置文件 .gitlab

。 默认情况下,job artifacts 只正对成功的jobs收集。 artifacts用于指定成功后应加到job的文件和目录的列表。只能使用项目工作间内的文件或目录路径。如果想要在不通的job之间传递artifacts,请查阅依赖关系。以下是一些例子: 发送binaries和.config中的所有文件: artifacts: paths: - binaries/ - .config 发送所有没有被Git跟踪的文件: artifacts: untracked: true 发送没有被Git跟踪和binaries中的所有文件: artifacts: untracked: true paths: - binaries/ 定义一个空的dependencies可以禁用artifact传递: job...阅读全文

博文 2018-12-12 21:09:02 ci.yaml 详解(下)

DPDK Graph Pipeline 框架简介与实现原理

的介绍 graph walk 的概念简单明了,它总是有次序地去完成一系列操作: 21行:定位下一个需要处理的 node 23行:准备下一个需要处理的 node 的 objects /报文 29行:处理定位好的 node 32行:检查 graph walk 是否完成 在 graph walk 层面来看,最重要的就是第一步:定位下一个要处理的 node。DPDK 的 graph 框架利用了 circular buffer 和带的 head 和 tail 指针定位下一个 node,如果 head 不等于 tail 指针,这就代表了 circular buffer 里有需要处理的 node,而在 libgraph 库中,这些待处理的 node 也被称为 pending stream。 回到第一步...阅读全文

博文 2023-02-09 07:13:55 掘金

译:Kubernetes 最佳实践

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

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

Git 介绍与使用详解

将develop中的代码合并到maser,保证master稳定 5.打标签(tag) 通常,发布一个版本时,会在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照 git tag v1.0.0 //创建轻量标签v1.0.0 git tag -a v1.0.0 -m ’my version 1.0.0‘ //创建注标签 git tag //列出标签 git push --tags //推到远端 git tag -d 1.0.0 //删除本地tag 注意:tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支: git...阅读全文

博文 2017-02-25 09:00:27 程序员

深入理解Golang之context

++ { messages <- i } time.Sleep(5 * time.Second) close(done) time.Sleep(1 * time.Second) fmt.Println("main process exit!") } 上述例子中定义了一个buffer为0的channel done, 子协程运行着定时任务。如果主协程需要在某个时刻发送消息通知子协程中断任务退出,那么就可以让子协程监听这个done channel,一旦主协程关闭done channel,那么子协程就可以推出了,这样就实现了主协程通知子协程的需求。这很好,但是这也是有限的。如果我们可以在简单的通知上加传递额外的信息来控制取消:为什么取消,或者有一个它必须要完成的最终期限,更或者有多个取消选项,我们需要根据额外的信息来判断...阅读全文

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

CCPA vs. GDPR:欧美这两部个人数据保护法有什么差异?

议》时就条款与件达成一致,甚至导致主合同交易因此被中止。 GDPR及其相关解释至今未给出完整的穷尽式列举,即便是第29工作组对“个人数据”的概念进行了解释,但也并未采取列举式的定义[3]。 1.2 CCPA对个人信息的定义——抽象定义与实例列举两种方式结合 相比GDPR而言,《加州消费者隐私法案》(CCPA)第1798.145节对消费者“个人信息”进行了更为具体的规定,用“定义+不完全列举”的方式明确了哪些个人信息受CCPA的管辖。在GDPR的基础上,CCPA所列举的”个人信息”的范围更加广泛: (1) 与GDPR关注“特定个人”的信息不同,CCPA将“特定家庭的信息”也纳入管辖范围; (2) 与GDPR强调数据对“特定个人”的指向性不同,按照CCPA规定:如果一些信息可以直接指向”设备...阅读全文

Apollo 配置中心简单介绍

, ctrip apollo, disconf, hawk 等配置中心的功能点。综合比较下来携程apollo 更具有优势。 二、简单介绍携程Apollo配置中心 1、What is Apollo 1.1 背景 着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址…… 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。 Apollo配置中心应运而生! 1.2 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范...阅读全文

博文 2021-04-09 17:53:51 CSDN

深度解密基于 eBPF 的 Kubernetes 问题排查全景图

一、当 Kubernetes 成为云原生事实标准,可观测性挑战之而来当前,云原生技术以容器技术为基础,通过标准可扩展的调度、网络、存储、容器运行时接口来提供基础设施。同时,通过标准可扩展的声明式资源和控制器来提供运维能力,两层标准化推动了开发与运维关注点分离,各领域进一步提升规模化和专业化,达到成本、效率、稳定性的全面优化。在这样的大技术背景下,越来越多的公司引入了云原生技术来开发、运维业务应用。正因为云原生技术带来了越发纷繁复杂的可能性,业务应用出现了微服务众多、多语言开发、多通信协议的鲜明特征。同时,云原生技术本身将复杂度下移,给可观测性带来了更多挑战:​1、混沌的微服务架构,多语言和多网络协议混杂业务架构因为分工问题,容易出现服务数量多,调用协议和关系非常复杂的现象,导致的常见问题...阅读全文

博文 2022-03-21 09:11:51 joseph

Redis 命令、特性介绍与性能调优

field对应对象的field即可。 Hash的优点包括: 可以实现二元查找,如”查找ID为1000的用户的年龄” 比起将整个对象序列化后作为String存储的方法,Hash能够有效地减少网络传输的消耗 当使用Hash维护一个集合时,提供了比List效率高得多的机访问命令 与Hash相关的常用命令: HSET:将key对应的Hash中的field设置为value。如果该Hash不存在,会自动创建一个。时间复杂度O(1) HGET:返回指定Hash中field字段的值,时间复杂度O(1) HMSET/HMGET:同HSET和HGET,可以批量操作同一个key下的多个field,时间复杂度:O(N),N为一次操作的field数量 HSETNX:同HSET,但如field已经存在,HSETNX不会进行任...阅读全文

博文 2018-10-27 10:37:55 debian.cn

OpenAI掌门人Sam Altman:AI的下一个发展阶段_OneFlow

些AI应用还可令科学家如虎添翼。在他眼中,AI是一个可以孵化出无数工具,推动各行各业前进的基础平台。 着AI行业的不断进步,AI应用不再只是充斥着行业热词的纸上项目,已经发展为成熟的工具,助力多个行业的生产服务,也必将催生出无数新企业。 各种AI工具已显现出巨大的日常应用潜力,可以实现人类的各种想法,改善人类的工作方式,比如由Stability.ai发布的开源Stable Diffusion模型,Microsoft和OpenAI联合打造的AI编程工具Copilot,OpenAI开发的语言生成模型GPT-3和图像生成平台DALL-E以及爆火的聊天机器人模型ChatGPT。 Sam Altman还表示,5年后,我们应该不会再使用Transformer模型了。虽然Transformer很好,但他...阅读全文

博文 2023-02-04 15:55:11 CSDN博客

7大维度看国外企业为啥选择gRPC打造高性能微服务

。 仪表板的发布在进行中,工程团队将Bugsnag的后端功能分解成称之为管道(pipeline)的微服务体系。将管道扩展到支持发布,意味着增加新的服务,并修改现有服务,也可预见到许多新的服务器和客户端的交互。为了处理上述架构的变化,需要采用一致性的方式来设计,实施和集成企业的服务。Bugsnag是一家多语言的公司,服务是用Java,Ruby,Go和Node.js等多语言编写,因此企业需要一种与平台无关的方法。 本文将介绍为什么我们最终选择了gRPC作为Pipeline的默认通信框架。 达到REST API设计的极限 现有系统传统上使用具有JSON有效载荷的REST API进行同步通信。这种选择是基于占压倒性比例的成熟度、熟悉度和工具的可用性做出的,但是着跨洲际工程团队的增长,企业需要设计一致的...阅读全文

博文 2018-03-19 17:51:32 debian.cn

社交巨人Facebook使用Linux和Btrfs的姿势

Mason:因为在主线内核上我们无法做自己想做的事——我们不得不fork一个自己的版本,以便微调、修改和允许在我们特有使用情况下打补丁到这个内核里。我们的目标是,在人力可控的范围内将fork版做到最小。在我们把内核从4.0升级到4.6的过程中(我们现在还没完成),当我们只用一个补丁就能够获得一个相当可观的生产工作负载性能提升时,我打心里为此感到高兴。我们打过补丁的4.0版本的内核拥有和未修改的普通4.6版本的内核相同的性能。这也是我们团队的长期目标:紧主线内核的步伐,以便我们能从一个内核版本快速过渡到另一个版本。 Linux.com:我见过太多跑在旧内核上的Linux机器,然而您的目标却是尽可能使用新版本的内核。这样做有什么好处? Chris Mason:对一个工程师团队来说,最大的好处就是利于我...阅读全文

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

分布式任务调度平台 XXL

期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址; 6、弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务; 7、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、机、一致性 HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等; 8、故障转移:任务路由策略选择” 故障转移” 情况下,如果执行器集群中某一台机器故障,将会自动 Failover 切换到一台正常的执行器发送调度请求。 9、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度; 10、任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务; 11、任务失败重试...阅读全文

博文 2018-11-05 21:47:15 JOB 2.0.0 发布

Spinnaker 介绍 – Netflix 的持续交付平台

然避免不了,为了更加从容的应对这些故障,就搞了一个工具 Chaos Monkey 会机停止生产环境中的虚拟机,通过观察系统在真实故障中的表现来确保程序的健壮性,也通过实战来验证各种高可用技术是否靠谱。接着冒出了 Chaos Gorilla,会停止一整个可用域中的所有机器;最后还有Chaos Kong,直接停掉一整个 Region,非常有挑战精神(丧心病狂)。 为了更好的观察系统在故障时的情况,还研发了全局可视化系统,代号 Flux,可以将整个系统的逻辑架构和各服务之间的流量可视化在大屏幕上,效果图如下: 他们每个月有一个活动:将一个 Region 里的机器全部关掉,看 Netflix 服务是否正常。有兴趣看视频的可以移步这里。 另外,Netflix 除了云服务,还有自建CDN,即 Open...阅读全文

博文 2018-12-21 19:30:47 debian.cn

什么是线程安全,以及并发需要知道的几个概念

,因为一个CPU一次只能执行一条指令,这种情况就是并发,系统看似能处理多任务是因为不停的切换任务,但因为时间非常短,所以在我们的感官来说就是同时进行的。而计算机系统真实的并行是着多核CPU的出现才有的。 临界区临界区表示公共资源或是共享数据,可以被多个线程使用。但是每次只能有一个线程使用它,一旦临界区的资源被占用,其他线程就必须等到资源释放后才能继续使用该资源。在Java程序开发中,对于这样的资源一般都需要做同步的操作,例如下面的这段代码,用的就是synchronized关键字来对临界区资源进行同步。 public class SyncTest implements Runnable { //临界区资源 public static SyncTest instance = new...阅读全文

博文 2018-12-31 20:44:06 debian.cn

隐私声明

关注册信息后方能使用,如果您无法提供此类信息,可能会不能使用对应服务。如果您注册了本网站,您可以时查阅或编辑您提交给本网站的个人信息,但出于安全性和身份识别的考虑,您可能无法修改注册时提供的初始注册信息及其他验证信息。 5. 用户发布信息 本网站的部分服务允许用户发布自己的信息、视频、照片、观点、博客等等,请注意上述内容自发布之时起成为公开信息,请在公布您的联系信息、财务信息或其他个人信息之前做出谨慎判断。我们将无法阻止上述信息以不符合本隐私权声明和适用法律法规的方式被使用。 6. 未成年人的个人信息保护 本网站非常重视对未成年人个人信息的保护。若您是18周岁以下的未成年人,在使用本网站的服务前,应事先取得您家长或法定监护人的书面同意。 7. 隐私权声明的更新...阅读全文

Golang 中的 channel 通道详解

channel的容量。对于内置的len函数,如果传入的是channel,那么将返回channel内部缓存队列中有效元素的个数。因为在并发程序中该信息会着接收操作而失效,但是它对某些故障诊断和性能优化会有帮助。package main import "fmt" func main() { ch := make(chan int, 10) // 创建一个最大容量为10的channel ch <- 233 ch <- 2 ch <- 3 fmt.Println(cap(ch)) // 10 fmt.Println(len(ch)) // 3 fmt.Println(<-ch) // 233 fmt.Println(len(ch)) // 2 } 向缓存Channel的发送操作就是向内部缓存队列的尾部插入元素...阅读全文

Golang Context 探究

) (Context, CancelFunc) { return WithDeadline(parent, time.Now().Add(timeout)) } func WithDeadline(parent Context, d time.Time) (Context, CancelFunc) { // 如果父节点 context 的 deadline 早于指定时间。直接构建一个可取消的 context。 // 原因是一旦父节点超时,自动调用 cancel 函数,子节点也会之取消。 // 所以不用单独处理子节点的计时器时间到了之后,自动调用 cancel 函数 if cur, ok := parent.Deadline(); ok && cur.Before(d) { // The current...阅读全文

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

Docker 17.06 社区版发布

配置信息: $ echo "This is a config" | docker config create test_config - $ docker service create --name=my-srv —config=test_config … $ docker exec -it 37d7cfdff6d5 cat test_config This is a config 证书轮换的优化 Swarm mode中内置的公钥基础设施(PKI)系统使得可以安全地部署一个容器调度系统。Swarmz中的节点使用双边TLS来认证、授权和加密他们之间,以及和Swarm其他节点的通讯。因为这些都依赖于证书,所以经常轮换很重要。自从Swarm mode伴Docker 1.12发布以来,已经能以一小...阅读全文

博文 2017-06-30 23:08:57 debian.cn

基于thanos搭建分布式prometheus

: path: /data/thanos-receive-data type: DirectoryOrCreate - name: thanos-receive-config configMap: name: thanos-receive-config 细节大家可以自己慢慢看,我讲一下关键: 用statefulset部署集群,因为这是一个有状态的存储集群,不能便漂移。 因为是分布式存储集群,要通过POD亲和性避免2个POD跑到1个Node上。 核心配置是声明receive集群的地址列表,这里利用headless service可以直接拿到每个POD的dns name,是有规则的。 每个thanos receive实例的启动参数中指定replica标签唯一标识它。 thanos-receive集群的...阅读全文

博文 2021-03-01 13:02:46 鱼儿的博客

HAProxy用法详解 最详细中文文档

查可能会带来意外问题;此选项用于将其检查的时间间隔长度上增加或减小一定的机时长; – tune.bufsize :设定buffer的大小,同样的内存条件小,较小的值可以让haproxy有能力接受更多的并发连接,较大的值可以让某些应用程序使用较大的cookie信息;默认为16384,其可以在编译时修改,不过强烈建议使用默认值; – tune.chksize :设定检查缓冲区的大小,单位为字节;更大的值有助于在较大的页面中完成基于字符串或模式的文本查找,但也会占用更多的系统资源;不建议修改; – tune.maxaccept :设定haproxy进程内核调度运行时一次性可以接受的连接的个数,较大的值可以带来较大的吞吐率,默认在单进程模式下为100...阅读全文

博文 2014-05-10 17:14:46 debian.cn

Web前端知识体系精简

用它们 速度 - 已缓存资源加载得更快 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。 8、Canvas 和 SVG Canvas 通过Javascript 来绘制 2D 图形。Canvas 是逐像素进行渲染的。在 Canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。 SVG 是一种使用 XML 描述 2D 图形的语言。SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。你可以为某个元素加 JavaScript 事件处理器。在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。 Canvas和SVG相比...阅读全文

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

互联网协议正在发生变化

。 现在,核心互联网协议的重要改变已经开始了。虽然它们意图与互联网大部分兼容(因为,如果不兼容的话,它们不会被采纳),但是它们可能会破坏那些在协议中没有规定的地方,或者根本就假设那些地方不存在变化。 为什么我们需要去改变互联网 有大量的因素推动这些变化。 首先,核心互联网协议的局限性越来越明显,尤其是考虑到性能的时候。由于在应用和传输协议方面的结构性问题,网络没有得到高效使用,导致终端用户认为性能不能满足要求(特别是,网络延迟)。 这就意味着人们有强烈的动机来演进或者替换这些协议,因为有 大量的经验表明,即便是很小的性能改善也会产生影响。 其次,演进互联网协议的能力 —— 无论在任何层面上 —— 会着时间的推移变得更加困难,这主要是因为上面所讨论的对网络的非预期使用。例如,尝试去压缩响应的...阅读全文

三个技巧 大幅减少 Docker 镜像体积

个。 镜像的层就像 Git 的提交(commit)一样。Docker 的层用于保存镜像的上一版本和当前版本之间的差异。就像 Git 的提交一样,如果你与其他存储库或镜像共享它们,就会很方便。 实际上,当你向注册表请求镜像时,只是下载你尚未拥有的层。这是一种非常高效地共享镜像的方式。但额外的层并不是没有代价的。层仍然会占用空间,你拥有的层越多,最终的镜像就越大。Git 存储库在这方面也是类似的,存储库的大小着层数的增加而增加,因为 Git 必须保存提交之间的所有变更。 过去,将多个 RUN 语句组合在一行命令中或许是一种很好的做法,就像上面的第一个例子那样,但在现在看来,这样做并不妥。 1. 通过 Docker 多阶段构建将多个层压缩为一个 当 Git 存储库变大时,你可以选择将历史提交记录...阅读全文

博文 2018-09-06 10:50:29 debian.cn

粘合万种芯片的“万能胶” 是摩尔定律的续命丹吗? - 硬件

。”平板电脑应用处理嚣,自动驾驶域处理器,数据中心应用处理器将是Chiplet率先落地的三个领域。也是解决chiplet‘鸡’和‘蛋’的问题的原动力。”也就是说,虽然Chiplet有能力延续摩尔定律,但对于绝大多数不太先进的芯片公司而言,是没有必要早早就为芯片万能胶买单。因此也就能够理解,为何UCIe产业联盟是由几家芯片巨头携手共建的了。但不可否认的是,性能、功耗和面积的升级依然是芯片界向前发展的目标,着越来越多的终端产品开始用得起更加先进的工艺制程时,芯片万能胶主流时代就不会再遥远。会有那么一天,但芯片万能胶的复用能力达到一定水平时,就有能力完全战胜晶体管集成了。如果您对文章内容有疑问,欢迎添加作者微信Yolanda_Zuu进一步讨论交流。作者 | 吴优编辑 | 包永刚访问:京东商城...阅读全文

博文 2022-04-08 07:35:46 cnBeta.COM

Debian 9 使用kubeadm创建 k8s 集群(下)

索运行Nginx的端口。 Kubernetes将自动分配一个大于30000的机端口,同时确保该端口尚未受到其他服务的约束。 要测试一切是否正常,请通过本地计算机上的浏览器访问http:// worker_1_ip : nginx_port或http://worker_2_ip : nginx_port 。 您将看到Nginx熟悉的欢迎页面。 如果要删除Nginx应用程序,请先从主节点删除nginx服务: kubectl delete service nginx 运行以下命令以确保已删除该服务: kubectl get services 您将看到以下输出: OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes...阅读全文

博文 2019-05-13 22:57:41 debian.cn

kubelet 中垃圾回收机制的设计与实现

如下: 当容器镜像挂载点文件系统的磁盘使用率大于--image-gc-high-threshold时(containerRuntime 为 docker 时,镜像存放目录默认为 /var/lib/docker),kubelet 开始删除节点中未使用的容器镜像,直到磁盘使用率降低至--image-gc-low-threshold 时停止镜像的垃圾回收。kubelet GarbageCollect 源码分析kubernetes 版本:v1.16GarbageCollect 是在 kubelet 对象初始化完成后启动的,在 createAndInitKubelet 方法中首先调用 kubelet.NewMainKubelet 初始化了 kubelet 对象,后调用...阅读全文

博文 2021-02-05 17:48:22 知乎

Kafka生产问题总结以及性能优化

again. //回滚事务 producer.abortTransaction(); } producer.close(); 2.1.10 kafka高性能的原因 磁盘顺序读写:kafka消息不能修改以及不会从文件中间删除保证了磁盘顺序读,kafka的消息写入文件都是追加在文件末尾,不会写入文件中的某个位置(机写)保证了磁盘顺序写。数据传输的零拷贝读写数据的批量batch处理以及压缩传输 数据传输零拷贝原理:...阅读全文

博文 2023-01-05 23:16:48 CSDN博客

协议介绍之深入了解 gRPC

HTTP/1.x 做过推送的同学,大概就知道有多么的痛苦,因为 HTTP/1.x 并没有推送机制。所以通常两种做法: Long polling 方式,也就是直接给 server 挂一个连接,等待一段时间(譬如 1 分钟),如果 server 有返回或者超时,则再次重新 poll。 Web-socket,通过 upgrade 机制显式的将这条 HTTP 连接变成裸的 TCP,进行双向交互。 相比 Long polling,笔者还是更喜欢 web-socket 一点,毕竟更加高效,只是 web-socket 后面的交互并不是传统意义上面的 HTTP 了。 Hello HTTP/2 虽然 HTTP/1.x 协议可能仍然是当今互联网运用最广泛的协议,但着 Web 服务规模的不断扩大,HTTP/1.x 越...阅读全文

博文 2017-06-22 11:08:48 debian.cn

六大算法之三:动态规划【转载】

已知问题规模为n的前提A,求解一个未知解B。(我们用An表示“问题规模为n的已知条件”) 此时,如果把问题规模降到0,即已知A0,可以得到A0->B. 如果从A0添加一个元素,得到A1的变化过程。即A0->A1; 进而有A1->A2; A2->A3; …… ; Ai->Ai+1. 这就是严格的归纳推理,也就是我们经常使用的数学归纳法;对于Ai+1,只需要它的上一个状态Ai即可完成整个推理过程(而不需要更前序的状态)。我们将这一模型称为马尔科夫模型。对应的推理过程叫做“贪心法”。 然而,Ai与Ai+1往往不是互为充要条件,着i的增加,有价值的前提信息越来越少,我们无法仅仅通过上一个状态得到下一个状态,因此可以采用如下方案: {A1->A2}; {A1, A2->A3}; {A1,A2,A3...阅读全文

博文 2021-07-31 07:18:53 CSDN博客

深入了解Docker背后的namespace技术

-rwxr-xr-x 1 nobody nogroup 8408 Nov 16 22:40 uts -rw-r--r-- 1 nobody nogroup 1694 Nov 16 22:36 uts.c 这是个很简单地例子,但是细想你会发现通过user namespace,可以以root权限在容器中运行(不是主机系统中的root)。不要忘记你可以时更改 ls -la到bash中,并通过shell深入了解namespace。 总结 本文中,我们回顾了mount,network,user,PID,UTS和IPC Linux namespace,并没有修改太多代码,只是增加了一些flag。复杂的工作集中在管理多个内核子系统的交互。就像我一开始提到的,namespace只是我们用来创建容器的一种工具,我希...阅读全文

博文 2015-05-17 10:03:00 debian.cn