固态硬盘的 PCIE、SATA、M2、NVMe、AHCI 如何理解
以说是插槽的形状,而 PCI-E 跟 SATA3 就是数据从硬盘到 CPU 或者内存走的通道,而 NVME 跟 AHCI 就是针对 PCI-E 跟 SATA 通道的“交通规则”。...阅读全文
以说是插槽的形状,而 PCI-E 跟 SATA3 就是数据从硬盘到 CPU 或者内存走的通道,而 NVME 跟 AHCI 就是针对 PCI-E 跟 SATA 通道的“交通规则”。...阅读全文
channel通道golang的并发模型是序列通信处理CSP(communicating sequential process)——使用通信来共享内存 ,避免goroutine因竞争共享内存频繁加锁产生的性能问题。基本数据结构golang中提供了一个特殊的类型channel实现goroutine之间的通信。channel类似于队列,先进先出。channel数据结构源码在src/runtime/chan.go下。chan 使用 hchan 表示,它的传参与赋值始终都是指针形式,每个 hchan 对象代表着一个 chan。hchan 中包含一个缓冲区 buf,它表示已经发送但是还未被接收的数据缓存。buf 的大小由创建 chan 时的参数来决定。qcount 表示当前缓冲区中有效数据的总量...阅读全文
-cachedfree: 未使用的内存 memFree & swapFree in /proc/meminfoshared: tmpfs使用的内存 shmem in /proc/meminfobuffers:被内核缓冲去使用的内存cached: 被页缓存和slabs使用的内存buffers/cache: 表示buffers和cache的总和swap: 交换分区的使用量2.3 buffer和cache会使用内存吗?答案是肯定的,先来了解下buffer和cache。cache(缓存)官方定义是用来弥补高速设备和低速设备之间的访问速度不匹配而预留的一段空间,用来加快资源的访问。 简单讲就是读的更快。buffer(缓冲)是为了做资源写入整形,计算机遇到大量的“小规模IO”时,会将其整形为少量的“大规模IO”,降低写入次...阅读全文
个容器就可以跑起来,而不用知道它的节点在哪里,即 Serverless 形态。一旦这种技术更加成熟,对容器技术的落地也有很大的推动作用。另一方面,Serverless 形态也给用户节省了大量的成本,按需付费,免去用户的运维成本。我觉得 K8S 的落地已经是个趋势了,是不可避免的,但是 K8S 本身是要往前进步,它的革命还没有完成。 容器与 Serverless:覆盖场景不同,非替换关系 记者:你觉得现在目前 Serverless 的发展对于容器这种创新技术的迭代升级有什么影响?是不是可以让容器更加的轻量化? 叶理灯:不完全是这样,其实 Serverless 刚出现的时候是针对计算的。计算分很多层次,有物理机、虚拟机、容器和 Serverless。Serverless 刚出来的时候,它等同于...阅读全文
“ 以 docker 为代表,轻量、便携的 container 使得打包和发布应用非常容易。系列文章容器原理主要分析 container 用到的核心技术,主要包括 Linux namespace,cgroups,overlayfs,看完这些内容,你将可以手动创建一个和 container 类似的环境。 cgroup(control group)是一个内核特性,用于限制、统计、隔离一组进程的资源(CPU、内存、磁盘、网络等),首字母不要大写。 “ “cgroup” stands for “control group” and is never capitalized. 单数形式(cgroup)指所有特性,也可以作为“cgroup controllers”的修饰。 复数形式(cgroups)指...阅读全文
,该公司以其目前的形式既不会繁荣,也不会为这种社会需要服务。Twitter需要作为一家私营公司进行转型"。 在周五提交的一份美国证券交易委员会文件中,马斯克阐述了他为这笔交易筹资的计划,其中包括250亿美元的贷款和220亿美元的个人股权。分析师认为,这些贷款可能使Twitter每年的服务成本高达10亿美元,或约占该公司年收入的20%。 在马斯克宣布收购计划后不久,Twitter的董事会曾制定了一项"毒丸"措施,表明它打算抵制马斯克的收购。目前还不清楚是什么导致该公司改变了主意。纽约时报》周一的一篇报道描述了Twitter员工对这一消息的分歧,他们几乎没有收到有关正在进行的谈判的信息。 目前还不清楚马斯克将对Twitter产生什么影响,或者他将从哪里开始改变Twitter。当...阅读全文
Insights这次在Paul Cormier的主题演讲里小小的露了一下脸,不过场下的很多场合都有不同红帽项目的负责人提及该项目。Insights可以视为一个基础设施监控平台,它自动采集并分析服务运行数据,以提供问题预测(而不仅仅是报警)的能力。由于该产品中使用了机器学习技术,因此也有人形容Insights是红帽的AI服务(虽然官方说明中并未提及)。 Red Hat Insights产品发布于2016年,目前已经与红帽Linux发行版RHEL、OpenStack发行版RDO、虚拟化产品RHEV、OpenShift、安全监控与打补丁产品Satellite、跨云管理平台CloudForms、以及上述自动化平台Ansible进行了集成。 就笔者看来,也许未来每个红帽产品都会被要求实现下述三个方面的集成: 可用容...阅读全文
无人驾驶、工业自动化等需要低时延、高可靠连接的业务。 推进5G和车联网的融合发展 车联网是5G技术率先应用的领域 共同探索5G在垂直行业领域的应用和拓展,车联网是5G技术率先应用的领域。无人驾驶是通信和计算在5G时代的价值交汇,目前中国ICT产业链推动的LTE-V标准,已备受国际重视,形成了一定的先发优势。 为推进5G和车联网的融合发展,针对该标准,工信部已与交通、公安等多个部委成立了车联网专项委员会。 从产业应用角度,基于5G网络的创新技术,例如VR/AR视频技术、无人驾驶技术等。华为、中兴、爱立信、诺基亚、英特尔、高通等厂商,都成为战略聚焦领域挑之一。 共同探索5G在垂直行业领域的应用 5G三大垂直市场是哪些 据爱立信近日发布《5G进度调研》,2017年度报告上指出,许多运营商都加快了备...阅读全文
、Linux Mint 这样基于 APT 的操作系统)提供的离线状态下 APT 包管理器。使用 apt-offline,我们可以在离线状态下完整地更新、升级我们的 Debian 系统。这个程序是用 Python 开发的兼具 CLI 和图形界面的跨平台工具。 准备工作 一个已经联网的操作系统(Windows 或者 Linux)。本文中为了便于理解,我们称之为在线系统。 一个离线操作系统(Debian 及其衍生版本)。我们称之为离线系统。 有足够空间容纳所有更新包的 USB 驱动器或者外接硬盘。 安装配置 apt-offline Apt-Offline 可以在 Debian 及其衍生版本的默认仓库中获得。如果你的在线系统是运行的 Debian、Ubuntu、Linux Mint,及其它基于 DEB 的操作...阅读全文
PromQL 是 Prometheus 提供的一个函数式的表达式语言,可以使用户实时地查找和聚合时间序列数据。表达式计算结果可以在图表中展示,也可以在 Prometheus表达式浏览器中以表格形式展示,或者作为数据源,以 HTTP API 的方式提供给外部系统使用。PromQL 虽然以 QL 结尾,但是它不是类似 SQL 的语言,因为在时间序列上执行计算类型时,SQL 语言相对缺乏表达能力。而 PromQL 语言表达能力非常丰富,可以使用标签进行任意聚合,还可以使用标签将不同的标签连接到一起进行算术运算操作。内置了时间和数学等很多函数可以使用 选择序列选择指定指标名称的序列最新样本: my_metric_name选择指定指标名称序列5分钟的样本范围: my_metric_name[5m]筛...阅读全文
Debian 项目牵头人(DPL,Debian Project Leader)Jonathan Carter 表示:“ Debian 这一 Linux 主要发行版目前面临的问题,并非在于缺少资金,而是缺少志愿开发人员。” Jonathan Carter 指出,Debian 社区的主要问题并非在于缺少资金,而是缺少志愿开发人员。 相对于数以千计依赖 Debian 的组织而言,Debian 项目在规模上相形见绌。除 Ubuntu 之外,还有其它一些广为使用的发行版都是基于 Debian 的,其中包括 Devuan、Kali、Knoppix、LMDE、Raspberry Pi OS(原 Raspbian)、SteamOS 和 Tails 等。 一些 Linux 发行版是基于 Ubuntu 的,除...阅读全文
software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。 2) LINUX 下安装软件方法命令方法 Hencoff的专栏 05-30 1万+ 一般有三种常见的安装方法: 1. 图形界面安装: synaptic software management (好像都是deb包) 2. 终端命令行方式。安装源程序包(tar, Z, gz, bz2, tar.gz, tar.bz2, tar.Z, rar, zip),rpm包,deb包 (详情见下) 3. 终端apt方式。 (好像都是deb包) 通过apt-get下载下来的包存放在 / 如何解压deb文件 swordinhand的专栏 10-26 1490 有两种方法 第一种 [code="bash"]dpkg -x xx.deb...阅读全文
embed.FS func main() { print(s) print(string(b)) data, _ := f.ReadFile("hello.txt") print(string(data)) } 输出结果: 吃煎鱼 吃煎鱼 吃煎鱼 我们同时在一个代码文件中进行了多个 embed 的注解声明。 并且针对 string、slice、byte、fs 等多种类型进行了打包,也不需要过多的处理,非常便利。 拓展用法 除去基本用法完,embed 本身在指令上也支持多种变形: //go:embed hello1.txt hello2.txt var f embed.FS func main() { data1, _ := f.ReadFile("hello1.txt") fmt.Println...阅读全文
励 Debian 做出改变,继而改进开发者参与维护的体验。Rails 核心成员纷纷宣布离职继不久之前 Rust 审核团队集体离职事件,近日,又有人发现不少 Rails 核心成员纷纷宣布离职。这还要溯源到去年 4 月,Basecamp 创始人以及 Rails 创建者不允许员工在内部谈论种族等政治话题,这引起了员工很多不满,很多人觉得自己被限制了自由言论。当时,很多核心员工选择离职来表示抗议。随着事情不断的发酵,DHH(Rails 创建者)关闭了自己推特的评论功能。如今 DHH 表示他无缘参加今年的 RailsConf 主题演讲,举办方给出的理由是因为去年他大部分时间都不在线。于是 DHH 就吐槽认为这是无稽之谈,不仅发文列举了他去年为Rails的贡献,还表示这是对政治和形态意识差异的报复。在这...阅读全文
Top 20,还有很长的路要走。 以下为 Top 20-50 的编程语言榜单: 第 51-100 名如下,由于它们之间的数值差异较小,仅以文本形式列出(按字母排序): ActionScript, Alice, Apex, B4X, bc, Bourne shell, C shell, Chapel, CL (OS/400), Clojure, Common Lisp, Crystal, cT, Elixir, Emacs Lisp, Erlang, Forth, GAMS, Hack, Icon, IDL, Inform, Io, J#, JScript, Korn shell, Ladder Logic, Limbo, LPC, ML, Modula-2, MQL5, NATURAL...阅读全文
基本概念 Prometheus 所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB):属于同一指标名称,同一标签集合的、有时间戳标记的数据流。除了存储的时间序列,Prometheus 还可以根据查询请求产生临时的、衍生的时间序列作为返回结果。 样本在时间序列中的每一个点称为一个样本(sample),样本由以下三部分组成: 指标(metric):指标名称和描述当前样本特征的 labelsets; 时间戳(timestamp):一个精确到毫秒的时间戳; 样本值(value): 一个 folat64 的浮点型数据表示当前样本的值。
,LFS 绝对配得上称为一本好书,或者说一本好教材。市面上,很难再找到一本如此具体又如此精炼的教材了。 首先,它并不是只是讲讲简单概念,它很具体,具体到就是一个例子,一个告诉你怎么亲手构建出属于自己的 Linux 系统的例子。 其次,它很精炼,它的精炼表现在两个方面:系统构建出来不臃肿;文字描述很精炼。 最后还有一点,这一点至关重要。尽管文字的描述非常精炼,甚至是精炼到枯燥,但是作为一本教材,作者无时无刻不再想尽办法,让你学到东西。无论是编译指令下方各个参数的介绍,还是软件包安装小节下方软件包内容的介绍,作者真的是想尽办法的试图把知识传递给读者。 LFS 没有缺点吗? 那自然是有的,可以原封不动的照抄上面的优点。辩证的看待这些优点,你就会发现这些优点是有代价的。 首先,由于这个例子过于生动形象,所...阅读全文
。 • 自动测试:包括单元、集成和端到端测试,会使用到 Roboelectric、XCTest、JUnit 和 WebDriver 等工具。 在代码变更的生命周期内,每次提交都会执行移动构建并运行测试栈,这样就会运行很多次。单单 Android 一天就有 5 万到 6 万个构建版本。移动部署系统遵循较早的基于 Web 的模式,每周发布一次,按 cherry-picking 策略随机选择变更。尽管代码传输速度和发布频率有所增长,但工程师的生产率保持不变。然而,本文提到的标准(代码行和推送次数),可能并非衡量生产率的最佳标准。 据 2016 年 IEEE 的论文和相关讨论,Facebook 早在 2005 年就利用了某种形式的 CD。该论文中的一些结论列出了 CD 成功的先决条件:可观的持续投资、高度熟...阅读全文
入 API 来模拟关键类文件和运行时工件的描述,特别是可从常量池加载的常量。在新的 java.lang.invoke.constant 包中定义了一系列基于值的符号引用(JVMS 5.1)类型,它们能够描述每种可加载常量。符号引用以纯 nominal 形式描述可加载常量,与类加载或可访问性上下文区分开。有些类可以作为自己的符号引用(例如 String),而对于可链接常量,定义了一系列符号引用类型(ClassDesc、MethodTypeDesc、MethodHandleDesc 和 DynamicConstantDesc),它们包含描述这些常量的 nominal 信息。 One AArch64 Port, Not Two 只保留一个 AArch64 实现 删除了与 arm64 相关的所有源...阅读全文
你可以通过 iftop、Nethogs 和 vnstat 这三个 Linux 网络命令,了解有关你网络连接的大量信息。iftop 通过进程号跟踪网络连接,Nethogs 可以快速显示哪个在占用你的带宽,而 vnstat 作为一个很好的轻量级守护进程运行,可以随时随地记录你的使用情况。 iftop iftop 监听你指定的网络接口,并以 top 的形式展示连接。 这是一个很好的小工具,用于快速识别占用、测量速度,并保持网络流量的总体运行。看到我们使用了多少带宽是非常令人惊讶的,特别是对于我们这些还记得使用电话线、调制解调器、让人尖叫的 Kbit 速度和真实的实时波特率的老年人来说。我们很久以前就放弃了波特率,转而使用比特率。波特率测量信号变化,有时与比特率相同,但大多数情况下不是。 如果你只...阅读全文
(canary)和分阶段(phased)推出部署(rollout);本地持久卷(Local Persistent Volume)。当前以Alpha版发布,允许用户通过标准的PersistentVolumeClaims/PersistentVolume接口及StatefulSets中的StorageClasses访问本地存储卷;DaemonSets。该特性用于确保给定的Pod对每个节点准确地执行和运行一次,现已添加了rollback和history功能;新提供的StorageOS Volume插件,它可在本地的或附加的节点存储上提供在整个集群范围内高可用的持久卷。 在可扩展性方面,1.7中以Beta版的形式添加了API聚合层,允许用户在他们的集群中添加Kubernetes风格的预先构建的、用户定义的或是第...阅读全文
结果发布到IM中,比如 HipChat、JIRA 或者 Slack 等。 自动修复 - 识别和验证OpenStack计算节点上的硬件故障,正确排空实例并向管理员发送关于潜在停机时间的电子邮件,但如果出现任何问题 - 冻结工作流程并呼叫PagerDuty唤醒人员。 持续部署 - 与Jenkins一起构建和测试,配置新的AWS群集,基于NewRelic的应用程序性能数据,打开负载均衡器的一些流量,以及前滚或回滚。 Stackstorm工作原理 主要组件角色: 传感器(Sensors) 用于分别接收或监视事件的入站或出站集成的Python插件。 当来自外部系统的事件发生并由传感器处理时,StackStorm触发器将发射到系统中。 触发器(Triggers)外部事件的StackStorm表示形式...阅读全文
)敏感数据处理的反对权:GDPR说明条款第69条:数据主体应有权利反对特殊情形的个人数据(即宗教、种族、工会成员等敏感数据)的处理,应当由控制者来证明控制者不可抗拒的合法利益与数据主体的利益或者基本自由或权利产生冲突。 (3)直接营销及用户画像的反对权:GDPR说明条款第70条:当以直接营销为目的处理个人数据时,数据主体应有权在任何时间反对免费的处理,包括与该直接营销有关的用户数据画像。 (4)对“行使公务”的反对权:GDPR第21条第1款:数据主体有权反对控制者为了执行公共利益领域的任务,或行使控制者既定的公务职权之必要,对其个人数据进行的处理,包括根据这些条款进行的用户数据画像。除非控制者能够证明其合法利益高于数据主体的利益、权利和自由,或者法定请求权的确立、行使和抗辩有强有力的法律依据...阅读全文
作者:京东零售 石朝阳 在说IO多路复用模型之前,我们先来大致了解下Linux文件系统。在Linux系统中,不论是你的鼠标,键盘,还是打印机,甚至于连接到本机的socket client端,都是以文件描述符的形式存在于系统中,诸如此类,等等等等,所以可以这么说,一切皆文件。来看一下系统定义的文件描述符说明: 从上面的列表可以看到,文件描述符0,1,2都已经被系统占用了,当系统启动的时候,这三个描述符就存在了。其中0代表标准输入,1代表标准输出,2代表错误输出。当我们创建新的文件描述符的时候,就会在2的基础上进行递增。可以这么说,文件描述符是为了管理被打开的文件而创建的系统索引,他代表了文件的身份ID。对标windows的话,你可以认为和句柄类似,这样就更容易理解一些。 由于网上对linux...阅读全文
。事实上,Linux出色的可靠性与灵活性使它成为关键性基础设施内不可或缺的核心要素。 那么究竟是什么神奇的力量让Linux这样一位“私生子”变成世界的主宰?根据VAR Guy网站的总结,Linux成功的原因包括分布式开发方法、务实的意识形态、切实可行的内核设计以及庞大且活跃的Linux社区。 2. Fedora 25成为首款默认使用Wayland的Linux发行版 Fedora 25将Wyland作为它兼容机上的默认显示协议。为什么选择Wayland?Fedora开发者Matthias Clasen表示它能够实现客户端间彼此隔离、更适合现代显示系统(不包含不必要的核心字体或核心渲染等‘累赘’)且能够实现原有X系统无法实现的多种功能(例如输入转换以及在合并桌面与全屏客户端之间进行顺畅过渡...阅读全文
意,可以形象的把它理解为一个封闭的包裹,这个包裹就是一个函数,当然还有函数内部对应的逻辑,包裹里面的东西就是自由变量,自由变量可以在随着包裹到处游荡。当然还得有个前提,这个包裹是被创建出来的。 在通过Python的语言介绍一下,一个闭包就是你调用了一个函数A,这个函数A返回了一个函数B给你。这个返回的函数B就叫做闭包。你在调用函数A的时候传递的参数就是自由变量。 举个例子: def func(name): def inner_func(age): print 'name:', name, 'age:', age return inner_func bb = func('the5fire') bb(26) # >>> name: the5fire age: 26 这里面调用func的时候就产生...阅读全文
我们很高兴在今年之内进行第四次——也是最后一次版本更新公告,即Kubernetes 1.9的诞生! 今天发布的版本在发展水平方面更加突出,功能越来越丰富,稳定性更为强大,社区贡献也更加令人瞩目。作为今年年内的第四次成果发布,我们希望借此机会回顾Kubernetes项目在各个关键性领域取得的进展。其中特别值得一提的是Apps Workloads API正式发布通用稳定版。这将确保潜在用户切实获得运行关键性任务工作负载时所必需的功能稳定性。项目的另一大重要里程碑则在于以测试版本形式提供Windows支持能力,这为众多仅面向Windows的应用程序与工作负载开启了一扇通往Kubernetes的大门,从而显著扩展了Kubernetes的实施场景与企业就绪水平。 Workloads API通用版本...阅读全文
/Native 已支持用于开发 iOS 应用,这也将是 Kotlin/Native 0.4 的特性之一。虽然对 iOS 开发的支持仍处于早期阶段,但确实已经实现了,这是在所有平台上使用 Kotlin 进行开发的重要一步。 官方还特意展示了利用 Kotlin/Native 开发的两款应用(Spinner app (GitHub)、KotlinConf app (GitHub)),它们都可以运行于 iOS 和 Android 平台。Android 和 iOS 平台共享了不少代码,其中包括大多数图形处理、声音播放和用户输入响应代码。 两款应用都已开源,你可以将它们作为模板,仅使用 Kotlin 构建自己的跨平台移动应用。点此可了解其中一款应用。 IDE 对 Kotlin/Native 的支持 Kotlin...阅读全文
包已安装的情况下,合适的设备可以在使用 USB 端口连接到系统的同时自动设置使用无驱动后端。新的通用 open 命令新增加的 open 命令将作为 xdg-open(默认)或者 run-mailcap 的别名出现,具体实现则由 update-alternatives 系统管理。它旨在作为命令行交互工具,帮助用户使用默认的应用程序打开文件;所使用的程序按照具体情况可以是图形界面程序。控制组 v2在 bullseye 中,systemd 默认使用控制组 v2(cgroupv2),它提供了统一的资源控制层级架构。如果有需要,可以使用内核命令行参数重新启用旧有的 cgroups;持久化 systemd 日志在 bullseye 中的 systemd 默认启用了持久日志的功能,日志文件存放于 /var...阅读全文
。Steve 的工作超越了技术卓越。他在展示这两个项目时起到了关键作用,表明人类和社区元素的重要性不亚于,甚至可能超过我们聚集在一起与世界分享的礼物。 Steve 对自由软件开发社会方面的奉献不仅限于解决社会不公正和不平等问题。他非常坚定地认为,我们都应该做自己:人们帮助他人,并从中获得乐趣。Steve 在我们的开发者会议上倡导了这一点,表明尽管有所有的 Hacking 和讨论,我们也可以成为一个没有严格形式的社交群体。他向我们展示了我们仍然可以完成手头的业务,并在做这件事的同时享受乐趣。自那以后,DebConf 的组织者一直受到他的想法的影响。 Steve Langasek在Debian和开源社区中的贡献确实深远而广泛。以下是他在Debian、Samba、PAM、LDAP等方面的具体贡献和角色的详细...阅读全文
LSI业务正专注于提高NPU(神经处理单元)和调制解调器等基本芯片的性能,并通过与全球行业领先的公司合作,创新CPU(中央处理单元)和GPU(图形处理单元)技术。系统LSI业务也在继续其在超高分辨率图像传感器方面的工作,以便其芯片能够像人眼一样捕捉图像,并且还计划开发能够发挥人类所有五种感官作用的传感器。新一代逻辑芯片亮相三星电子在技术日展台上首次披露了一些先进的逻辑芯片技术,包括5G Exynos Modem 5300、Exynos Auto V920和QD OLED DDI,这些芯片是移动、家电和汽车等各个行业的重要组成部分。今年新发布或宣布的芯片,包括高端移动处理器Exynos 2200,以及20万像素的ISOCELL HP3--拥有业界最小的0.56微米(μm)像素的图像传感器也在展出之...阅读全文
FX.apollo)的配置信息,默认按照表格模式展示、编辑。用户也可以切换到文本模式,以文件形式查看、编辑。页面上可以方便地进行发布、回滚、灰度、授权、查看更改历史和发布历史等操作。...阅读全文
玲珑,面面俱到 作为一个开发者,你很可能希望为开源项目解决一个特定的痛点。或许你想要运行在一个目前还不支持的系统上,抑或你很希望改革社区目前使用的安全技术。想要引进新技术,特别是比较有争议的技术,最好的办法就是让人无法拒绝它。你需要透彻地了解底层代码,考虑每个极端情况。在不影响已实现功能的前提下增加新功能。不仅仅是完成就行,还要在特性的完善上下功夫。 糜不有初,鲜克有终 开源社区也有许多玩玩就算的人,但是承诺了就不要轻易失信。不要就因为提交被拒就离开社区。找出原因,修正错误,然后再试一试。当你开发时候,要和整个代码库保持一致,确保即使项目发生变化而你的补丁仍然可用。不要把你的代码留给别人修复,要自己修复。这样可以在社区形成良好的风气,每个人都自己改。 这些“潜规则”看上去很简单,但是还是有许...阅读全文
(NameSpace) HDFS 支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。 Namenode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被 Namenode 记录下来。 HDFS 会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。 4. NameNode 元数据管理 我们把目录结构及文件分块位置信息叫做元数据。NameNode 负责维护整个 HDFS 文件系统的目录树结构,以及每一个文件所对应的 block 块信息(block 的...阅读全文
本文大部分内容翻译总结自《Software Engineering at Google》 第10章节 Documentation。 另外,该书电子版近日已经可以免费下载了 https://abseil.io/resources/swe_at_google.2.pdf,有兴趣的同学可以下载翻阅下。 首先声明,本问所说的文档不仅限于纯文本文档,还包含代码注释(注释也是一种特殊形式的文档)。 ## 文档的重要性 ## 高质量的文档对于一个组织或团队来说有非常多的益处,比如让代码和API更容易理解、错误更少;让团队成员更专注于目标;也可以让一些手工操作更容易;另外如果有新成员加入的话有文档也会让他们更快融入…… 写文档有比较严重的收益滞后性,不像测试,你跑一个测试case,它能立即告诉你是对还是错...阅读全文
”、“梅花”等。从这一点上看,域名的独有性,似乎更好一些。 从商业的角度来看,域名因其独特性,可以把它当作一个企业的网上商标。不过,可以肯定地说,域名与商标没有绝对的联系。 在这个眼球经济时代,作为企业,最理想的状态,当然是希望它的实物商标与网上商标保持高度一致的,以使大众无论从哪个途径,都能将目光聚焦在它的身上,为此,企业们也付出了巨大的努力,比如商标之争比较有名的当属“加多宝”和“王老吉”,域名方面,作为米农,所听到见到的域名仲裁案例也不在少数。 由于域名和商标分属不同领域的不同系统,再加上时间差的原因,一般企业想要达到理想状态,是有难度的。比如说,自已注册的商标,其对应的域名不一定是未注册状态,这个时候,域名权与商标权,甚至商号权、网站名称权等就形成了冲突。除了收购外,另外一个途径就是仲裁...阅读全文
高可用性。使Prometheus高可用的一种方式是运行多个实例去scraping相同的作业。这些实例在抓取指标时会因微小的时间间隔差异而在数据中产生细微差异。此外,如果其中一个实例宕机了几个小时,那么当查询转发到该实例时,将会出现数据空白。如果我们使用grafana这样的工具将指标展示为图形,我们可能会得到不同的样本值或有数据缺失的图形。可以将Cortex配置为从多个HA Prometheus实例读取数据。它从一个主实例main接受指标,并从其他实例放弃该度量。一旦这个副本掉线,Cortex会无缝切换到另一副本并将其标记为主副本main。为此,Cortex着眼于两个标签,一个共同的标签与一个集群(或一组Prometheus)相关联,另一个识别副本。全局指标视图可以将Prometheus实例配...阅读全文
broker-0、broker-1等…… Topic:消息的主题,可以理解为消息的分类,kafka的数据就保存在topic。在每个broker上 都可以创建多个topic。实际应用中通常是一个业务线建一个topic。 Partition:Topic的分区,每个topic可以有多个分区,分区的作用是做负载,提高kafka的吞 吐量。同一个topic在不同的分区的数据是不重复的,partition的表现形式就是一个一个的⽂件夹! Replication:每一个分区都有多个副本,副本的作用是做备胎。当主分区(Leader)故障的 时候会选择一个备胎(Follower)上位,成为Leader。在kafka中默认副本的最大数量是10 个,且副本的数量不能大于Broker的数量,follower和leader绝对...阅读全文
服务化项目服务不可用几十分钟,造成订单数减少几十万笔,损失百万资金。 原因分析 当时是没有定位到具体的原因的,但是下面的原因也是一部分可能引起宕机的情况。 某服务化项目的业务增速非常快,在高峰期,数据库QPS突破35000,系统处于高负荷状态。 在高峰期如果同时执行几个全表扫描的SQL,会造成数据库压力急剧上升,应用超时增多,前端应用超时,用户重试,流量飙升,形成了雪崩效应。 主要原因在与一些老项目的SQL查询性能较差,并且使用的主库,对数据库影响较大。数据库QPS太高,但是缓存方案因为人手原因一直没有落地,慢SQL的问题处理优先级应该提升。 改进方案 针对每个应用建一个数据库账号,严格按照规范使用 缓存优化方案即时落地,慢SQL问题优先处理,集中处理目前已经发现的慢SQL(查询时间超过1S...阅读全文
加公共论坛讨论或直接联系本网站),在您的同意及确认下,我们可能会以线上或线下注册表格的形式要求您提供如下个人资料和信息: • 具体信息,比如姓名,年龄,出生日期,电子邮箱,手机号码等; • 一般性信息,比如您的性别,年龄,职业,兴趣爱好等; • 仅在特定情况下(比如您需要付费才能享有的服务或产品,或参加本网站参与或组织的抽奖或竞赛活动),我们会要求您提供个人付款信息和身份证件信息,比如信用卡号码或身份证及护照号码。 我们自动收集的信息。 当您浏览本网站时(不管是否注册或登录),本网站可能自动收集与您相关的如下信息: 请注意,本隐私权声明不适用于任何向您提供服务的第三方主体,包括那些可能向本网站披露信息的第三方。 您的浏览器类型和浏览器语言、操作系统类型、宽...阅读全文
尽管围绕 Debian Live 项目发生了很多戏剧性事件,关于 Debian Live 项目结束的公告的影响力甚至小于该项目首次出现时的公告。主要开发者的离开是最显而易见的损失,而社区对他本人及其项目的态度是很令人困惑的,但是这个项目也许还是会以其它的形式继续下去。 所以 Debian 仍然会有更多的工具去创造启动光盘和其他介质。尽管是用这样一种有遗憾的方式,项目创始人 Dabiel Baumann 和 Debian CD 团队以及安装检测团队之间出现的长期争论已经被「解决」了。 在 11 月 9 日, Baumann 发表了题为「 Debian Live 项目的突然结束」的一篇公告。在那篇短文中,他一一列举出了自从这个和他有关的项目被发起以来近 10 年间发生的不同的事件,这些事件可以...阅读全文
一些发行版中我们也能看到它的身影。 Apt是一个很完整和先进的软件包管理程序,使用它可以让你又简单,又准确的找到你要的的软件包, 并且安装或卸载都很简洁。 它还可以让你的所有软件都更新到最新状态,而且也可以用来对 Debian/Ubuntu 进行升级。apt是需要用命令来操作的软件,不过现在也出现了很多有图形的软件,比如 Synaptic, Kynaptic 和 Adept。 命令样例 下面将要介绍的命令大部分需要sudo,使用时请将“packagename”和“string”替换成您想要安装或者查找的程序。 apt-get update —— 在修改/etc/apt/sources.list或者/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保您的软件...阅读全文
| | [dovecot](https://packages.debian.org/src:dovecot) | 修复搜索包含畸形MIME邮件的邮箱时的崩溃问题 | | [dpdk](https://packages.debian.org/src:dpdk) | 新的上游稳定发布 | | [edk2](https://packages.debian.org/src:edk2) | CryptoPkg/BaseCryptLib:修复NULL析出[CVE-2019-14584] | | [emacs](https://packages.debian.org/src:emacs) | OpenPGP用户ID没有电子邮件地址时,不要崩溃 | | [fcitx](https://packages.debian.org...阅读全文
作为最成功的微型计算机,开源的树莓派(Raspberry Pi)在技术圈和学术界一直广受编程爱好者的好评,各路大神基于树莓派制作的新奇设备层出不穷,围绕这款微型计算机已经形成了一种独特的 DIY 文化,相关的开源软件生态也十分丰富。 树莓派最初是剑桥大学计算机系的一个实验性项目,创始人 Eben Upton 召集了一群教师、学者和计算机爱好者,希望设计出一种能激励儿童参与编程的小型计算机。这个计算机的灵感来自 1981 年 Acorn 公司的 BBC Micro 计算机。第一台树莓派 ARM 原型机安装在一个与 USB 记忆棒大小相同的盒子里,它的一端是 USB 端口,另一端是HDMI 端口。2012 年 2 月 29 日,首批树莓派正式发售,定价为 35 美元。 根据树莓派官方统计的数...阅读全文
三个编译注释,你可以使用它们来给编译器发送指令。这些注释会在稍后再做更详细的介绍。 Java注释可以在编译时(build-time)时使用,当你编译你的工程时。编译过程包括生成源代码,编译资源文件,生成XML文件(如:部署表述文件),以及将编译好的代码或文件打包成一个jar文件等。编译过程通常是由诸如Apache Ant或Apache Maven之类的编译工具自动完成的。编译工具会浏览你代码中的特定注释,并基于这些注释生成源代码或其他文件。 通常情况下,Java注释在代码编译完成后就变得不可见了。但是存在这种可能,你可以定义自己的注释,并使它们在运行时仍然可见。之后可以通过反射机制来访问这些注释来影响你的程序。 注释的基本知识 注释的最简单形式如下: @Entity 字符@告诉编译器这是一个...阅读全文
的资源。例如,如果您的集群的利用率仅为25%,以资源的最大使用量和 Request 来衡量,则 Allocate idle costs 会按比例增加每个 pod/NS/Deployment 的成本到原来的4倍。 6. **图表选择**: 切换到条形图视图以查看所选窗口的汇总成本,或切换到时间序列视图以查看成本随时间的变化。 7. **附加选项**: 查看其他选项以将成本数据导出为 CSV 或查看帮助文档。 ### Assets  Kubecost Assets 视图显示了按集群中单个资源细分的 Kubernetes 集群成本(例如,按节点、磁盘...阅读全文
Debian和Ubuntu都有一组官方授予的针对贡献者的成员角色,他们可以以参加选举或其他官方决策等方式参与到项目的治理中,同时这也是给贡献者分配工作的一种手段,大部分贡献者对他们获得的身份都感到很自豪。 在一个发行版的发展过程中,成员结构扮演中重要的角色:它定义了受项目欢迎的贡献者类型,以及项目对贡献者的期望和贡献者拥有的权利。最后,这种方式形成了项目招募新贡献者的吸引力,而只有不断吸收新贡献者才能使项目保持活力。 本文将以Debian和Ubuntu对比为例,介绍不同背景的社区成员是如何进行贡献以及官方认可的。 简介 在具体介绍开始之前,先为大家简单的介绍一下Debian和Ubuntu这两个项目。 Debian是由各种开源协议下的自由软体组成的作业系统,由“Debian计划”组织维护...阅读全文
SyncTest(); @Override public void run() { synchronized (instance) { } } public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new SyncTest()); Thread t2 = new Thread(new SyncTest()); t1.start(); t2.start(); t1.join(); t2.join(); } } 阻塞和非阻塞阻塞和非阻塞通常用来形容多线程间的相互影响。比如一个线程占用了临界区的资源,那么其他需要这个资源的线程就必须等待。等待的过程会使线程挂起,也就是阻塞。如果临界区...阅读全文
,就因为dev团队正在推出的破烂玩应,他们大半夜的得被叫起来。这种思维方式基本上已经过时了,正是思维方式使得人们都觉得干运维这一行的都是深深厌恶自己,一根接一根不停抽烟。这是由于缺乏同理心而产生的避重就轻、刻薄的想法。如果凌晨两点出现内存不足的异常,要不要去警告那些没有远见或者能力的运维人员去解决这个问题呢?还是说我们应该警告那些对系统相当熟悉的开发者呢?后一种做法似乎是明显的,但是关键在于他们需要被授权获悉状况,调试后自动解决。 其实新运维模式本质上应该把运维看作是一个产品团队,其产品就是基础设施。就像开发者把 API 作为他们提供的服务,运维把 API 以工具、UI、自动化、基础设施即代码、可观察性和警戒的形式作为他们提供的基础设施。 @perterbourgon 关于这个话题,我有很多想...阅读全文
的,愚蠢的计算机操作员。 [6]指乐于分享,懂得专研和回报的人。 [7]人必自助而后人助之,而后天助之。出自《周易·系辞上》 提问前需要做的事情 在通过邮件、讨论组、论坛或社区提问之前,请先尝试做以下事情寻找答案: 使用论坛、知乎、百度知道、Quaro的搜索功能; 善用google、百度或其他搜索引擎在网络搜寻; 阅读说明书或者使用手册; 阅读网站上「常见问题解答」(FAQ); 自己检查或做试验; 请教熟悉此问题的朋友; 如果你是程序员,尝试阅读源代码。 提问时,请先表明你已做了上述事情,这将有助于改变你是懒又肥的寄生虫形象,同时给别人一种你不会浪费别人时间的印象。提问时最好再总结一下你从中学到的东西 ,我们喜欢那些善于学习总结的人,也喜欢回答他们提出的问题。 运用搜索策略,比如利用...阅读全文