DevOps 越来越流行,2019 年这八大趋势值得关注
息,帮助执行琐碎的任务,从而让 IT 人员能够完成更有针对性的工作。它们可以学习模式、预测问题并提出解决方案。如果 DevOps 的目标是统一开发和运营,AI 和 ML 可以消除过去二者之间的一些“对抗”状态。 本文转自微信公众号:高效开发运维...阅读全文
息,帮助执行琐碎的任务,从而让 IT 人员能够完成更有针对性的工作。它们可以学习模式、预测问题并提出解决方案。如果 DevOps 的目标是统一开发和运营,AI 和 ML 可以消除过去二者之间的一些“对抗”状态。 本文转自微信公众号:高效开发运维...阅读全文
播,Windows 和 Linux 的开放源码贡献者能够共享两个生态系统的精华。 2.兼容性 目前尚不清楚如果 Windows 用户空间从 NT 迁移到 Linux 内核,是否能够保持良好的兼容性,特别是那些拥有关键任务应用、付费获取的东西。 Windows 没有像 Linux 那样严格区分内核空间和用户空间。NT 内核大约有 400 个已记录的 syscalls 以及大约 1700 个已记录的 Win32 API 调用。对于重新部署从而确保 Windows 开发者和他们工作达到预期的兼容性这是非常庞大的工作量,这完全超过了 Wine 提供的修正贡献。 Linux 在 arm64 上只有 313 个 syscalls,而另一个原因是微软已经从 WSL 1 中的 syscall 翻译层...阅读全文
代码、撰写文档、修正错误。所有的这些不受待见的任务在一个健康的社区中都是必要的。 为什么要在优雅地写代码前做这些呢?这是一种信任,更重要的是,不要只关注自己开发的功能,而是要关注整个社区的动向。 博闻强识,敦善不怠 当你在某个社区中建立起自己的声望,那么很有必要全面了解该项目和代码。不要停留于任务状态上,而是要去钻研项目本身,理解那些超出你擅长范围之外的知识。不要只把自己的理解局限于开发者,这样会让你着眼于让你的代码有更大的影响,而不只是你那一亩三分地。 打个比方,你已经完成了一个网络模块的测试版本。你测试了一下,觉得不错。然后你把它开放到社区,想要更多的人测试。结果发现,当它以特定的方式部署时,有可能会破坏安全设置,还可能导致主存储泄露。如果你将代码视为一个整体时问题就可以迎刃而解,而不是...阅读全文
. }() doSomethingForAWhile() <-c // Wait for sort to finish; discard sent value. 上面的示例中,在子goroutine中进行排序操作,主goroutine可以做一些别的事情,然后等待子goroutine完成排序。 接收方会一直阻塞直到有数据到来。如果channel是无缓冲的,发送方会一直阻塞直到接收方将数据取出。如果channel带有缓冲区,发送方会一直阻塞直到数据被拷贝到缓冲区;如果缓冲区已满,则发送方只能在接收方取走数据后才能从阻塞状态恢复。 3. 消息传递 我们来模拟一下经典的生产者-消费者模型。 func Producer (queue chan<- int){ for i:= 0; i < 10; i++ { queue <- i } } func...阅读全文
。我满足于坚持使用默认设置,不过我很欣赏这一点:Debian提供了一种选择,然后放心让用户做出正确的选择。 4.不一样的说明文档 Debian的说明文档散布于无数个网站,并不经常被讨论。然而,这些年来,我发现,如果我将“Debian”添加到我的互联网搜索,选择近些年来的结果,几乎总是会找到一个网页给出详细的逐步说明,帮助解决我要解决的那个问题。 3.迅速修复错误 我没听说过另外哪个发行版像Debian这么迅速地应对安全或者技术问题。无论Debian维护人员是单枪匹马还是团队合作,他们的响应时间表明了勤勤恳恳的工作态度,值得用户依赖。如果说Debian有时似乎比其他发行版更频繁地更新,那不是由于它有更多的错误,而是由于被其开发人员疏忽的错误比较少。 2.控制安装环节 Debian很早以前就取得了...阅读全文
: Temperature/speed normal Apr 20 00:12:20 vivek-desktop mysqld: Database Server failed 8. setterm 命令 这个命令可以设置中断的属性。下面的例子是强制屏幕全黑15分钟,并且60分钟后把显示器设为待机状态: setterm -blank 15 -powersave powerdown -powerdown 60 下面这段命令可以在中断显示加下划线的文字: setterm -underline on; echo "Add Your Important Message Here" setterm -underline off 或者你可以关闭光标: setterm -cursor off 9. smbclient:向 MS...阅读全文
状态。这一步遇到困难,可以参考这个 Youtube 视频。6 APP读取的时候会跳出检测,这时候不要动,等待读取完毕。同样需要一些耐心,多试试,不难。7 给身份证拍个照。点击【下一个】开始给身份证正面拍照。点击【下一个】开始人脸识别,这一步开始人脸验证。注意,不要裸露上身。8 这些信息填完之后,点击【提供我的详细信息】,开始填写自身国家、职业、公司等详细信息。在这之前,首先是检查你之前填写的姓名和邮箱等信息。9 选择工作类型,选择【受雇】或者【自雇】。填写税务信息。纳税人识别号为自己身份证号。10 这里选择 【不,我未曾/没有担任重要的公职,也不是一名已/被委托担任公共职务的公共职者 的家庭成员或关系亲近的人】然后,勾选电子邮件和短信,☑️ 勾选 【本人确认懂英文,并同意以英文形式...阅读全文
Debian 和 Ubuntu 是有史以来最具有影响力的两大 Linux 发行版。在大约285个活跃发行版当中,有132个源自Debian (也包括Ubuntu本身),另有67个直接源自Ubuntu。不过在Ubuntu和Debian之间作一个选择并非易事。说到底,选择Ubuntu还是选择Debian用来制定业务战略,取决于你在平台支持、用户控制级别、易用性及另外一些关键问题方面的使用偏好。 如果要求你解释一下 Debian和Ubuntu 之间的区别,大多数会这样回答:Ubuntu是面向新手的发行版,而Debian是面向专家的发行版。这样的描述部分正确,但同时夸大其辞。Debian的声誉建立在10多年前的状态;如今,允许每个用户可以选择众多的实际控制特性。 同样,从设计概念来看,Ubuntu...阅读全文
给了你更多的控制,但这种便利是有成本的。 像 Studio 3T 这样的工具使构建准确的 MongoDB 聚合查询变得更容易。它的聚合编辑器特性使你可以一次对一个阶段应用管道操作符,你可以在每个阶段验证输入和输出,更便于调试。 使用快速写 永远不要把 MongoDB 设为低稳定性的高速写。看上去,“file-and-forget”模式使得写入速度变快了,因为命令在实际写入任何东西前就返回了。如果系统在数据写入磁盘之前崩溃了,就会丢失,存在出现不一致状态的风险。所幸,64 位的 MongoDB 启用了“日志(Journaling)”。 MMAPv1 和 WiredTiger 存储引擎都使用日志预防上述情况,不过,在日志关闭的情况下,WiredTiger 也可以在还原过程中恢复到最后一致的 检查...阅读全文
探针则不会生效。译者:还有一点尽量为 Pod 内的所有容器都定义探针。使用自动缩放在适当的情况下,可以使用自动缩放来动态调整 pod 的数量(Pod 水平自动缩放器,HPA)、pod 消耗的资源量(Pod 垂直自动缩放器, VPA)或集群中的节点数量(集群自动缩放器,CA),具体取决于 对资源的需求。Pod 水平自动扩缩器还可以根据 CPU 需求扩展复制控制器、副本集或有状态集。使用缩放也带来了一些挑战,例如不在容器的本地文件系统中存储持久数据,因为这会阻止水平自动缩放。相反,可以使用 PersistentVolume。当集群上存在高度可变的工作负载并且可能根据需求在不同时间需要不同数量的资源时,集群自动缩放器非常有用。 自动删除未使用的节点也是省钱的好方法!译者:更多自动缩放的内容,可以浏...阅读全文
决定离开贡献18年之久的 Debian。促使他离开的直接原因是,Debian 社区对于是否接受 systemd(一种 init 进程)争执不下。这件事引起了 Debian 内部长达数年的争论,至今仍然没有定论。 当然,systemd 事件仅仅是一个引子,Joey 已经感受到了 Debian 社区背后所隐藏的某种“病态”。 “ 我第一次感觉到 Debian 的这种(病态),是在 Debian 改变‘ /usr/doc’这一错误的文件保存路径(系统文件的标准要求被保存在‘usr/share/doc’中)的时候,完成这样一个再简单不过的操作更改,Debian 居然花了6年之久。” 在 Joey Hess 看来,这实在太荒诞了。 要知道,Joey 并不是为此离开的第一位前辈。此前,Matthew...阅读全文
1.新的问题influxdb目前支持内存型索引inmem及文件型索引tsi1。之前追踪篇将influxd索引修改为tsi1之后,经过一段时间的运行,从监控观察到,由于调用方采用异步队列+批处理的方案将数据写入influxdb,会在某些时刻调用方内部出现数据堆积,指标如图:横坐标: 时间轴,从12-29 00:00 到 12-30 00:00纵坐标: 队列中数据堆积长度,坐标最大值250k,即最大25w个数据堆积从上图可以看到,当天监控出现数次堆积,上午7:00-10:00尤为严重。在堆积时,登录influxdb服务器,查看机器状态如下:top - 09:40:58 up 120 days, 19:18, 1 user, load average: 32.29, 32.32, 29.82...阅读全文
服务化项目服务不可用几十分钟,造成订单数减少几十万笔,损失百万资金。 原因分析 当时是没有定位到具体的原因的,但是下面的原因也是一部分可能引起宕机的情况。 某服务化项目的业务增速非常快,在高峰期,数据库QPS突破35000,系统处于高负荷状态。 在高峰期如果同时执行几个全表扫描的SQL,会造成数据库压力急剧上升,应用超时增多,前端应用超时,用户重试,流量飙升,形成了雪崩效应。 主要原因在与一些老项目的SQL查询性能较差,并且使用的主库,对数据库影响较大。数据库QPS太高,但是缓存方案因为人手原因一直没有落地,慢SQL的问题处理优先级应该提升。 改进方案 针对每个应用建一个数据库账号,严格按照规范使用 缓存优化方案即时落地,慢SQL问题优先处理,集中处理目前已经发现的慢SQL(查询时间超过1S...阅读全文
)、consumer(消息消费者)都可以是分布式的。 在消息的生产时可以使用一个标识topic来区分,且可以进行分区;每一个分区都是一个顺序的、不可变的消息队列, 并且可以持续的添加。 同时为发布和订阅提供高吞吐量。据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。 消息被处理的状态是在consumer端维护,而不是由server端维护。当失败时能自动平衡 1.1.3. 常用的场景 监控:主机通过Kafka发送与系统和应用程序健康相关的指标,然后这些信息会被收集和处理从而创建监控仪表盘并发送警告。 消息队列: 应用程度使用Kafka作为传统的消息系统实现标准的队列和消息的发布—订阅,例如搜索和内容提要(Content Feed)。比起大多数的消息系统来说,Kafka...阅读全文
%之间。MariaDB公司运营同名的开源数据库,背后获得阿里巴巴、英特尔公司支持。该公司提供了数据库的云计算服务。该公司首席执行官迈克尔·霍华德(Michael Howard)在接受采访时介绍说,本公司服务价格相当于客户在亚马逊选择MariaDB数据库时的一半。霍华德表示:“如果你拥有绝对优势,就好像亚马逊在基础设施领域那样,那么你将会千方百计盘活这种优势。”数据迁移亚马逊迄今为止并未推出专门的产品,来覆盖自家生态内或生态之外的数据迁移。针对不同的业务方式或者迁移方法,亚马逊收取不同费用,这些费用还可能叠加。对于外迁数据,上述“数字海洋”公司收取的费用低于亚马逊。麦基姆介绍说,在云计算公司涉及到数据迁移的网络带宽成本上,厂商购买越多、成本也就越低,“亚马逊提供数字外迁的成本要比数字海洋公司低...阅读全文
Docker基于mamespace、cgroups、chroot等技术来构建容器,不是一个系统调用就能搞定,容器是一个用户态的概念。本文中Docker软件工程师Michael Crosby深入探讨了Docker对namespace技术的应用。 相信你在很多地方都看到过“Docker基于mamespace、cgroups、chroot等技术来构建容器”的说法,但你有没有想过为何容器的构建需要这些技术? 为什么不是一个简单的系统调用就可以搞定?原因在于Linux内核中并不存在“linux container”这个概念,容器是一个用户态的概念。 Docker软件工程师Michael Crosby将撰写一些列博客,深入到Docker运行的背后,探索在 docker run这段代码的背后发生了什么...阅读全文
一些发行版中我们也能看到它的身影。 Apt是一个很完整和先进的软件包管理程序,使用它可以让你又简单,又准确的找到你要的的软件包, 并且安装或卸载都很简洁。 它还可以让你的所有软件都更新到最新状态,而且也可以用来对 Debian/Ubuntu 进行升级。apt是需要用命令来操作的软件,不过现在也出现了很多有图形的软件,比如 Synaptic, Kynaptic 和 Adept。 命令样例 下面将要介绍的命令大部分需要sudo,使用时请将“packagename”和“string”替换成您想要安装或者查找的程序。 apt-get update —— 在修改/etc/apt/sources.list或者/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保您的软件...阅读全文
馈项目,这将是项目最好的贡献来源。有些贡献者甚至将是加入项目团队的绝佳候选人。开发采用者和扩展者的生态系统是延长项目使用寿命的好方法。 10、与开发社区联系 开发社区由项目团队成员和贡献者组成。为社区内的沟通提供众所周知的渠道。明确的沟通渠道将有助于开发人员的合作。 11、有计划 很容易就会陷入只专注软件开发的模式,但和任何进程(特别是软件开发过程)一样,有些极致的方法至关重要。确保你的项目采用开发方法,并且有人拥有该流程(例如项目负责人)。制定计划可以帮助开发人员知道他们在哪里可以贡献最大的价值,并使采纳者和扩展者更容易实现他们自己的计划(从而取得成功)。像对待任何其他软件开发项目一样地对待你的开源项目。 12、管理品牌 你的项目将有一个品牌。项目的名称是其身份;项目logo以及任何产品的...阅读全文
firewalld),因此也推荐使用此方法。检查 firewalld 运行状态,输出应为 running:1firewall-cmd --state接下来设置端口转发:123456sudo firewall-cmd --zone=public --permanent --add-port 本机端口号/tcpsudo firewall-cmd --zone=public --permanent --add-port 本机端口号/udpsudo firewall-cmd --zone=public --permanent --add-forward-port=port=本机端口号:proto=tcp:toport=目标端口号:toaddr=目标地址sudo firewall-cmd --zone=public...阅读全文
起运维人员挖矿导致百度损失 2.7 万的事件,同样是运维人员在“涉险”,为什么是运维人员呢? “运维”人员在企业的价值,他们自己的调侃是:当企业没有发生技术故障的时候,大家感觉不到运维人员的存在。当企业发生故障的时候,大家感觉到运维人员确实没有存在的必要。 但调侃归调侃,这反映了技术运维人员在企业中面临的尴尬处境,但实际上,运维人员对于一家企业运营维护的保障,确实是很重要的。他们的职责包括服务器的部署、配置、维护;互联网平台的部署、升级、迁移、数据备份恢复;监控服务器,平台的运行,系统优化等,可以说,他们掌握了企业的后门,一旦运维部门发生危险,公司有可能陷入瘫痪状态,因此,一直以来,运维人员也拥有很多访问权限,而这却变成了运维人员不惜“涉险”的一个原因之一。 于是,如何对运维人员进行权限管理...阅读全文
Thrift 缺失的能力。 Thriftgo 目前虽然仅支持生成 Golang Thrift 代码,但其定位是可支持各语言的 Thrift 代码生成,未来如果有需求,我们会考虑生成其他语言的代码。同时我们也会尝试将其回馈至 Apache Thrift 社区。 Netpoll-http2 Netpoll-http2 基于 Golang 标准库 golang.org/x/net/http2 的源码替换 go net 为 Netpoll,目前用于 Kitex 对 gRPC 协议的支持,对 HTTP2 有需求的外部开发者也可以使用此库。 前面提到字节跳动会坚持内外维护一套代码,为了遵守长期投入承诺,其基础架构团队已经将与内部生态没有耦合的项目,如 Netpoll,直接迁移到 CloudWeGo 开源库,并将内...阅读全文
sharedMem。PSS(Proportional Set Size):按照比例将内存的大小加到RSS中。USS(Unique Set Size):进程独占的物理内存大小。usedMem分为 active & inactiveactive:表示这部分的内存正在被某个特定的进程使用,不太可能被收回。inactive:表示这部分内存是被分配到某个不在running状态的进程,有可能会被回收。Linux会维护一个LRU List用来管理活动页和非活动页的回收。 简单讲, 越接近该List的末尾,该页面被回收的概率就越大,反之,越接近列首,则更不易被回收。 linux内核会维护两类LRUList——active list和inactive list,刚访问过的页面放入active list,长时间未访问的页面放入...阅读全文
/no,通过配置项[appendfsync]指定: appendfsync no:不进行fsync,将flush文件的时机交给OS决定,速度最快 appendfsync always:每写入一条日志就进行一次fsync操作,数据安全性最高,但速度最慢 appendfsync everysec:折中的做法,交由后台线程每秒fsync一次 随着AOF不断地记录写操作日志,必定会出现一些无用的日志,例如某个时间点执行了命令SET key1 “abc”,在之后某个时间点又执行了SET key1 “bcd”,那么第一条命令很显然是没有用的。大量的无用日志会让AOF文件过大,也会让数据恢复的时间过长。 所以Redis提供了AOF rewrite功能,可以重写AOF文件,只保留能够把数据恢复到最新状态的最小写...阅读全文
源文档的排序获取第一个文档数据 db.ruochen.aggregate([{$group: {_id: "$by", url: {$first: "$url"}}}]) $last 根据资源文档的排序获取最后一个文档数据 db.ruochen.aggregate([{$group: {_id: "$by", url: {$last: "$url"}}}]) 管道 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数 MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理 管道操作是可以重复的 表达式:处理文档并输出 表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档 常用操作 $project:修改输入文档的结构...阅读全文
Debian 章程最初制定的时候,尽管感觉到了不妥,但我没有发声。我很清楚,这份有毒的章程正在缓慢且坚定地引导 Debian 走向病态。 在2021年11月的一次访谈中,Joey 直言 “Debian 章程有毒”。在 Debian 章程的框架下,Joey 感到紧张,因为这些章程正在拖延着所有的决策。 同样是在2014年,同样是因为这场旷日持久的 syetemd 论战,当年的 Debian 技术委员会成员 Colin Watson 和 Russ Allbery 先后在 Debian 邮件列表上宣布了辞职声明。在 Russ Allbery 的辞职信中,他提到了 Joey: Finally, I've been thinking hard about Debian project governance in...阅读全文
(Kubernetes中的节点指服务器)负责管理集群的状态。 它运行Etcd ,它在将工作负载调度到工作节点的组件之间存储集群数据。 两个工人节点 工作节点是运行工作负载 (即容器化应用程序和服务)的服务器。 一旦工作人员分配了工作负载,工作人员将继续运行您的工作负载,即使主计划在调度完成后停止工作也是如此。 通过添加工作人员可以增加群集的容量。 完成本指南后,如果群集中的服务器具有足够的CPU和RAM资源供应用程序使用,您将拥有一个可以运行容器化应用程序的集群。 几乎任何传统的Unix应用程序(包括Web应用程序,数据库,守护程序和命令行工具)都可以进行容器化,并在集群上运行。 群集本身将在每个节点上消耗大约300-500MB的内存和10%的CPU。 设置群集后,您将向其部署Web服务器Nginx ,以确保它...阅读全文
", "h", "m" 时间后缀, 若不使用后缀则表示以秒为单位。 MaxRetentionSec= 日志文件的最大保留期限。 当日志文件的最后修改时间超过此期限后将被删除。 默认值零表示不使用基于时间的日志删除策略。 通常并不需要使用基于时间的日志删除策略,因为由 SystemMaxUse= 与 RuntimeMaxUse= 控制的基于文件大小的日志滚动策略 已经可以确保日志文件的大小不会超标。 可以使用 "year", "month", "week", "day", "h", "m" 时间后缀, 若不使用后缀则表示以秒为单位。 SyncIntervalSec= 向磁盘刷写日志文件的时间间隔,默认值是五分钟。 刷写之后,日志文件将会处于离线(OFFLINE)状态。 注意,当接收到 CRIT...阅读全文
费者和管理客户端KIP-630:Kafka Raft 快照我们在 3.0 中引入的一个主要功能是 KRaft 控制器和 KRaft 代理能够为名为 __cluster_metadata 的元数据主题分区生成、复制和加载快照。Kafka 集群使用此主题来存储和复制有关集群的元数据信息,如代理配置、主题分区分配、领导等。随着此状态的增长,Kafka Raft Snapshot 提供了一种有效的方式来存储、加载和复制此信息.KIP-746:修改 KRaft 元数据记录自第一版 Kafka Raft 控制器以来的经验和持续开发表明,需要修改一些元数据记录类型,当 Kafka 被配置为在没有 ZooKeeper (ZK) 的情况下运行时使用这些记录类型。KIP-730:KRaft 模式下的生产者 ID...阅读全文
“sidecar”概念,其中平台容器(译者注:此处指 sidecar 代理容器)可以在部署时以后期绑定操作功能的形式,与应用程序容器动态注入到一起,。服务网格使用这种 sidecar 方法在运行时将代理添加到应用程序 pod 中,并连接这些代理以处理所有传入和传出流量。这允许服务网格以与应用程序代码解耦的方式交付功能。应用程序和平台之间的关注点分离是服务网格主张的核心价值:当然,这些功能可以直接在应用程序中实现,但是通过解耦,我们允许安全团队和开发人员相互独立地迭代,同时仍然努力实现安全但功能齐全的应用程序的共同目标。由于服务网格处理进出应用程序之间的默认网络,因此它可以很好地处理零信任问题:工作负载身份可以从 Kubernetes 中的 pod 身份而不是其 IP 地址中获取。可以通过在双向 TLS 中...阅读全文
627891 > 627891.svg -d N 分析持续时间(以秒为单位)。如果未提供启动,恢复,停止或状态选项,则探查器将运行指定的时间段,然后自动停止。 -i N 设置分析间隔(以纳秒或者毫秒等作为单位),默认分析间隔为10ms。 -o 转储文件的格式。 等待15s,就会产生结果,生成 627891.svg 文件。vim 627891.svg 并删除第一行,然后下载到本地并使用浏览器打开。 结果如下图,此图俗称火焰图,主要看每个方法的横轴长度,占用横坐标越长的操作,其占用的 cpu 即最长,很直观的。 9.2 性能黑点分析 我们首先发现下图红框内的代码存在严重的性能问题。在append的过程中,获取线程 stack 的过程耗时比较大。从火焰图中分析,耗时占据了接近50%的是,一个logger操作...阅读全文
="petrolimage.jpeg" alt="Petrol price drops">
This is the forth hike in petrol prices in two month and the third in case of diesel in one fortnight.
12. 拼写检查 spellcheck 是一个取值可以为空字符串、true 和 false 的枚举属性。如果指定其状态为 true,就表示元素将会接受对其的拼写和语法检查。 element.forceSpellCheck() 将强制用户代理在文...阅读全文,并定义相关的分发策略,就足以实现 Kubeflow 的同步策略。 初始化 TFJob 后,将会在每个 worker 节点上创建一个新的 **TF_CONFIG** 环境变量。其中包含了关于训练批次、当前训练迭代以及 TFJob 用于执行分布式训练的其他参数的信息。通过与各种 Kubernetes 控制器、 API 进行交互,Tf-operator 协调训练过程,并维护在清单中定义的预期状态。 另外,通过 tf-operator,异步训练模式可以使用 **ParameterServerStrategy**。在[这里](https://iamondemand.com/blog/scaling-tensorflow-models-on-kubernetes/)(以及下面),你将看到一个由 tf...阅读全文
。 4、盒子模型 Box 盒子模型是css最重要的一个概念,也是css布局的基石。 常见的盒子模型有块级盒子(block)和行内盒子(inline-block),盒子最关键的几个属性包括margin、border、padding和content,这几个元素可以设置盒子和盒子之间的关系以及盒子和内容之间的关系。还有一个问题是计算盒子的大小,需要注意的是,box-sizing属性的设置会影响盒子的width和height。只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。 5、弹性布局 Flex Flex布局的容器是一个伸缩容器,首先容器本身会更具容器中的元素动态设置自身大小;然后当Flex容器被应用一个大小时(width和height),将会自动调整...阅读全文