InfraPub 为您找到相关结果 44

Python3: 二分法查找的两种实现方法

二分法是一种基础的、简单而高效的算法,又称为折半。顾名思义,就是将待查表一分为二,从而减少了次数,提高了效率。但缺点就是待查表必须为顺序表,并且待查表在时不宜做增删操作。 其最优时间复杂度为O(1),最坏时间复杂度为O(logn)。代码样例: ``` # coding:utf-8 方法一:递归法 def binarySearch_01(listx, item): """Be of recursion""" length = len(listx) if length > 0: #定义中间值下标: split = length // 2 if listx[split] == item...阅读全文

Vagrant 2.0 正式发布,支持更多的虚拟化平台

Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境。Vagrant 2.0 已正式发布。 Vagrant 2.0 支持在 VirtualBox, VMware, Hyper-V, Docker, AWS, GCP 等平台上配置开发环境,它可以虚拟化 Windows, macOS 和其他十多种新的操作系统。Vagrant 2.0 可与 Vagrant Cloud 配合使用,用于和使用“盒子”。 完整更改列表请 查看更新日志 ,Vagrant 的 发布主页 和 下载地址 。 Vagrant 是一款用于构建及配置虚拟开发环境的软件,基于 Ruby,主要以命令行的方式运行。 主要使用 Oracle 的开源 VirtualBox 虚拟化系统,与 Chef,Salt...阅读全文

博文 2017-10-09 10:12:31 debian.cn

蓝牙 5.1 规范正式公布:达成厘米级定位精度

得益于传输距离更广(300 米)、功耗更低、速度更快(2Mbps)、可同时连接两个音频设备等特性,蓝牙 5.0(2016 年 6 月正式发布)正快速普及中。 本周,蓝牙 SIG 组织宣布, 蓝牙 5.1 已交付开发者,新变化中最值得一说的便是位置( “direction finding” )特性。蓝牙组织希望借助 5.1 标准,取代 Wi-Fi 的辅助定位角色,为需要 GPS 等位置服务的场景助力, 包括确定距离甚至精确位置 。 蓝牙 SIG 称,5.1 的定位精度可达厘米级(目前 1 到 10 米),在室内导航、快速找寻手环/遥控板等情景,将发挥重要作用。 其它特性还有优化的 GATT(通用属性配置文件),提高配对和通信速度;有助于避免数据包冲突的随机信道索引确保蓝牙广告抵达率等。...阅读全文

Docker CE 19.03 正式发布 无需root权限

docker/engine#260现在允许设置 buildkit 输出 docker/cli#1766 Dockerfile 特定的 dockerignore 文件 (例如,Dockerfile.dockerignore) 以被忽略的路径 docker/engine#215自动检测 x86、ARM 和 ARM 64 二进制文件是否可以执行进程 docker/engine#215更新 buildkit 到 1f89ec1 docker/engine#260默认情况下使用 Dockerfile 版本 docker/dockerfile:1.1 docker/engine#215不再依赖外部映像进行复制/添加操作 docker/engine#215 Client 在 docker update 中添...阅读全文

博文 2019-07-24 21:30:05 debian.cn

aptitude 与 apt

一些发行版中我们也能看到它的身影。 Apt是一个很完整和先进的软件包管理程序,使用它可以让你又简单,又准确的找到你要的的软件包, 并且安装或卸载都很简洁。 它还可以让你的所有软件都更新到最新状态,而且也可以用来对 Debian/Ubuntu 进行升级。apt是需要用命令来操作的软件,不过现在也出现了很多有图形的软件,比如 Synaptic, Kynaptic 和 Adept。 命令样例 下面将要介绍的命令大部分需要sudo,使用时请将“packagename”和“string”替换成您想要安装或者的程序。 apt-get update —— 在修改/etc/apt/sources.list或者/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保您的软件...阅读全文

博文 2021-01-28 17:50:09 get 的区别与联系

开源团队协作 TMS 发布新版本 v2.10.0

TMS 是一个用 Java 语言开发的,类似 Slack、Barrychat 的团队协作沟通Web平台,同时也是一个支持博文wiki撰写,国际化翻译管理的 Web管理系统。近期,TMS 发布了新版本 v2.10.0。 新功能: #IHIS4: 博文最近编辑文章列表,方便找到最近编辑创建的文章, 待办事项管理(让繁多的待办事项有条不紊的备忘记录,然后逐步攻破,减少记忆负担,提高工作利率不是一丢丢) 频道组(聊天频道支持创建分组,方便一次性 @多人 ,减少@具体用户的数次(爽的不要不要的) 优化改进: #II5PA: 游客可见博文 分享链接 复制分享 博文过滤清除过滤条件,输入框获取输入焦点 #II9N9: 沟通频道,按标签检索过滤 #IINTK: 沟通内容页面当 window...阅读全文

博文 2018-05-01 23:03:20 debian.cn

如何使用 ipset 将单个国家的所有IP加入黑名单

ipset 是 iptables 的扩展,它允许你创建匹配整个地址集合的规则,而不像普通的 iptables 链只能单IP或单网段匹配。 ipset 规则中的IP地址集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的,从而减少系统资源占用或网络拥塞。IPset 也具备一些新防火墙设计方法,并简化了配置。ipset 的官网:http://ipset.netfilter.org 下面我们以一个实际场景为样例,介绍如何在Debian系统中,使用 ipset 将单个国家的左右 IP段 加入黑名单。 #### 准备工作:安装 ipset、或者网段列表 sudo apt-get -y install ipset wget -P . http://www.ipdeny.com...阅读全文

博文 2021-02-06 16:43:47 joseph

Debian 如何修改默认网卡为 eth0

Debian 系统安装以后,可能会遇到网卡设备名不是常见的 eth0 的情况。我们有没有办法统一网卡设备名称呢? 在服务器环境中,统一网卡设备名是很有必要的。标准化的配置会节省我们大量的时间,这些时间可能会花在排障、监控的配置、状态收集脚本的调整等。 这里我们介绍如何把 Debian 系统中的网卡从非 eth0,调整为 eth0,这个设备名是各 Linux 系统中比较通用的网卡设备名。下面我们以设备名 ens3 为例,介绍在Debian 系统中,如何修改网卡设备名为 eth0 的具体步骤。 首选,我们需要编辑 grub 的配置文件,修改启动参数。使用编辑器打开 /etc/default/grub, : GRUB_CMDLINE_LINUX="" 找到这行,并修改为...阅读全文

博文 2019-07-12 13:59:08 debian.cn

Debian 如何安装无线网卡驱动

在安装 Debian 10 的时候提示没有iwlwifi驱动,因为当时没有安装有 iwlwifi 的驱动盘,跳过后开机发现没有 wifi。这里我们将介绍,有线网正常的状态下,如何下载安装 iwlwifi 驱动,并开启 wifi 。 因为我用的是 Intel Wireless-N 的无线网卡,所以本教程以 Intel Wireless-N 为例说明。如果你使用的是其他厂商的无线网卡,请参考 Debian wiki,相应的配置方法。如果不确定无线网卡的型号,可以通过命令 lspci 查询,或者在 dmesg 的命令输出中找到线索。 更新安装源 我们需要添加 non-free 的安装源,到系统中,更新 /etc/apt/sources.list,添加以下记录: deb http...阅读全文

博文 2020-02-19 15:18:51 debian.cn

PostgreSQL 13 正式版发布

PostgreSQL 13 已正式发布,新版本对索引和系统进行了重大改进,大型数据库因此受益甚多,包括节省了空间并提高了索引的性能,使用聚合或分区的查询的响应时间更快,使用增强的统计信息时更好的查询计划(query planning)等。 除了并行化清理(parallelized vacuuming)和增量排序(incremental sorting)等呼声较高的功能外,PostgreSQL 13 还为大大小小的工作负载提供了更好的数据管理体验,并对日常管理进行了优化,为应用开发者提供了更多便利,并增强了安全性。 性能提升 在先前 PostgreSQL 版本的基础上,PostgreSQL 13 可以有效地处理 B 树索引(PostgreSQL 的标准索引)中的重复数据,从而降低 B 树...阅读全文

博文 2020-10-04 20:07:23 debian.cn

Prometheus 常用 PromQL 语句样例

PromQL 是 Prometheus 提供的一个函数式的表达式语言,可以使用户实时地和聚合时间序列数据。表达式计算结果可以在图表中展示,也可以在 Prometheus表达式浏览器中以表格形式展示,或者作为数据源,以 HTTP API 的方式提供给外部系统使用。PromQL 虽然以 QL 结尾,但是它不是类似 SQL 的语言,因为在时间序列上执行计算类型时,SQL 语言相对缺乏表达能力。而 PromQL 语言表达能力非常丰富,可以使用标签进行任意聚合,还可以使用标签将不同的标签连接到一起进行算术运算操作。内置了时间和数学等很多函数可以使用 选择序列选择指定指标名称的序列最新样本: my_metric_name选择指定指标名称序列5分钟的样本范围: my_metric_name[5m]筛...阅读全文

博文 2021-02-09 11:07:15 51CTO博客

Zoom 5.0是重大更新 增强加密功能提供更多安全选项

许他们在多个账户之间链接联系人,这样人们可以轻松安全地搜索和会议、聊天和电话联系人。商业、企业和教育计划的管理员可以在 Zoom Dashboard 中查看他们的会议是如何连接到 Zoom数据中心。这包括任何连接到HTTP隧道服务器的数据中心,以及会议室连接器和网关等。...阅读全文

博文 2020-04-23 07:54:44 debian.cn

Google 开源漏洞扫描系统 Tsunami

谷歌已宣布将其内部使用的 Tsunami 漏洞扫描程序进行开源,以帮助其他组织保护用户数据。Tsunami 将不会成为谷歌的正式品牌产品,而是由开源社区以类似于管理 Kubernetes(另一种谷歌内部工具)的方式来维护。 “我们已经向开源社区发布了 Tsunami 安全扫描引擎。我们希望该引擎可以帮助其他组织保护其用户数据。我们还希望促进协作,并鼓励安全界在 Tsunami 之上创建和共享新的探测器。” 与其他漏洞扫描程序不同的是,Tsunami 本就是秉承着以大型企业为使用对象的初衷而进行构建的,旨在包含数十万个设备的大型网络中的漏洞。谷歌方面表示,其设计的漏洞扫描程序具有极强的适应性,Tsunami 能够扫描多种设备类型,而无需为每种设备运行不同的扫描仪。 Tsunami 在扫描...阅读全文

博文 2020-07-16 10:25:50 debian.cn

SonarQube 8.4 发布,分析时间最多可减少 80%

SonarQube v8.4 发布了。SonarQube 是一个用于管理源码质量的平台,帮助开发者编写干净的代码,其支持的语言包括:Python、Java、PHP、C#、C、Cobol、PL/SQL 与 Flex 等。 此版本扩展了 OWASP(Open Web Application Security Project,开放式 Web 应用程序安全项目)类型覆盖范围、带来了更快的分析速度、热备份和更快的启动。 Python 添加了 XSS 检测,以及另外 4 个 OWASP Top 10 类型 此版本中添加了一个与 XSS 相关的 Security Hotspot:S5247 在模板引擎中已关闭自动转义的所有位置。XSS 在OWASP Top 10 中属于 A7,此版本还增加了其它四个...阅读全文

博文 2020-07-13 12:55:22 debian.cn

Linux基金会推出ACT项目 帮助开发者遵守开源许可证

的资助和支持。” 据悉,目前已确定将成为 ACT 的一部分的四个项目为: FOSSology:开源许可证合规性软件系统和工具包,允许用户从命令行运行许可证,版权和导出控制扫描。 QMSTR:该工具创建了一个集成的开源工具链,可实现许可证合规性管理的行业最佳实践。QMSTR 集成到构建系统中,以了解软件产品及其来源和依赖性。开发者可在本地运行 QMSTR 以验证结果,查看问题并生成合规性报告。 SPDX Tools:软件包数据交换(SPDX)是用于传达软件物料清单信息的开放标准,包括组件、许可证、版权和安全参考。 Tern: 这是一款检查工具,用于容器映像中安装的软件包的元数据。它可以更深入地了解容器的物料清单,从而可以更好地决定基于容器的基础架构、集成和部署策略。...阅读全文

博文 2018-12-09 13:32:56 debian.cn

Linux Systemd被爆远程漏洞 CVE-2017

"dns_packet_new" 函数中, 它是一个 dns 响应处理程序组件, 它为本地应用程序提供网络名称解析。 根据星期二发布的一个公告, 当系统试图在攻击者控制的 dns 服务上主机名时, 经过精心构造的恶意 dns 响应,可以远程崩溃 " systemd-resolved " 程序。 最终, 大量 dns 响应会溢出目标计算机的缓冲区, 从而使攻击者改写其内存,引发远程代码执行。这意味着攻击者可以通过其恶意的 dns 服务,在目标系统或服务器上,远程执行任何恶意软件。 ubuntu 开发者Chris Coulson在开发规范中这样描述, “直到 233版本的 systemd , certain sizes passed to dns_packet_new in systemd-resolved can...阅读全文

博文 2017-07-02 09:39:36 9445 影响多种Linux系统

Ruby 2.5.0 稳定版发布

法代码覆盖。分支代码覆盖指检查哪些分支被覆盖到,哪些没有。而方法覆盖在指可以测量方法是否被调用。基于这些新特性运行你的测试用例,你可以精确地知道哪些分支和方法被运行,并更精确地计算测试的代码覆盖程度。[功能 #13901] 新增 Hash#slice [功能 #8499] 和 Hash#transform_keys。[功能 #13583] Struct.new 现在可以被用于创建含有关键字参数的类。[功能 #11925] Enumerable#any?, all?, none? 和 one? 可以接受一个模式作为参数。[功能 #11286] 删除顶层常量。[功能 #11547] 我们最喜爱的库之一 pp.rb,现已自动加载。无需手动写 require "pp" 来加载。[功能...阅读全文

博文 2017-12-25 21:59:41 debian.cn

Debian软件包常用管理命令整理

在Debian及其衍生的系统中,我们需要经常使用的软件包管理命令,对系统进行管理,以便系统达到预期的状态。Debian系统中,常用的软件包命令有 apt、apt-get、dpkg、apt-cache等,这里我们着重列举常见的一些用法。 软件包查询(不需要sudo权限) $ apt-cache search pkg_keyword #列出匹配关键字的软件包 $ apt search pkg_keyword #列出匹配关键字的软件包,包括了版本信息 $ apt list pkgname #该软件包,会显示版本信息 $ apt-cache show pkgname #查询软件包详细信息 $ apt show pkgname #查询软件包详细信息 $ apt-cache depends...阅读全文

Raspberry Pi 推出 Zero W

W 在推出当天就发货超过 10000 台 。 Pi Zero W 在性能特性、软件兼容性和通用输入输出(GPIO)配置上与前面的版本基本相同,因此也能受益于 Pi 设备丰富的应用和附件。Raspberry Pi 还具有一个大型的活跃社区,该社区是围绕 Raspberry Pi 基金会构建的,各类主题和用例的指导信息非常方便。 尽管 Pi Zero W 的功能并未超越前期版本的 Pi,但是它可以使有联网需求项目的实现更快速也更容易,而且与添加 WiFi 或蓝牙所导致的开销相比,所需的额外投资也是可控的。如果 Pi Zero W 能紧跟需求,将会在大量的物联网项目中发挥核心作用。 查看英文原文: Raspberry Pi Launch Zero W...阅读全文

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

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

AWS EKS 添加IAM用户角色 - SRE运维博客

的联合身份用户。如果使用不属于 aws-auth ConfigMap 的 IAM 用户或角色访问 Amazon EKS 控制台,则无法看到 Kubernetes 工作负载。也不会看到集群的概览详细信息。所以要向其他 AWS 用户或角色授予与集群交互的能力,您必须在 Kubernetes 中编辑 aws-auth ConfigMap。 因为部门有不通的角色,所以想基于不通的角色分配不同的权限,下面是记录添加一个对 EKS 只有只读权限的 AIM 用户。 {{< notice info "注意:" >}} 如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您使用的是最新版的 AWS CLI。 {{< /notice >}} 为 IAM 用户或角色配置权限 要具有主要...阅读全文

博文 2022-12-19 21:15:27 博客园

Tmux 快速教程:快捷键和配置

示当前的时间 ctrl + z 挂起当前会话 窗口操作 c 创建新窗口 & 关闭当前窗口 [0-9] 数字键切换到指定窗口 p 切换至上一窗口 n 切换至下一窗口 l 前后窗口间互相切换 w 通过窗口列表切换窗口 , 重命名当前窗口,便于识别 . 修改当前窗口编号,相当于重新排序 f 在所有窗口中关键词,便于窗口多了切换 面板操作 " 将当前面板上下分屏(我自己改成了 |) % 将当前面板左右分屏(我自己改成了 -) x 关闭当前分屏 ! 将当前面板置于新窗口,即新建一个窗口,其中仅包含当前面板 ctrl+方向键 以1个单元格为单位移动边缘以调整当前面板大小 alt+方向键 以5个单元格为单位移动边缘以调整当前面板大小 q 显示面板编号 o 选择当前窗口中下一个面板 方向键 移动光标选择...阅读全文

博文 2017-11-07 15:17:49 debian.cn

十个增加 Linux Shell 脚本趣味的小工具

nmap或者port扫描器: # find out if TCP port 25 open or not (echo >/dev/tcp/localhost/25) &>/dev/null && echo "TCP port 25 open" || echo "TCP port 25 close" 你可以 使用循环来开着的端口: echo "Scanning TCP ports..." for p in {1..1023} do (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open" done 输出: Scanning TCP ports... 22 open 53 open 80 open 139 open 445...阅读全文

博文 2018-04-09 09:38:50 debian.cn

谷歌开源了代码评审规范:好坏代码应这样来判断

谷歌开源了一套代码评审(Code Review)规范,它是谷歌一套通用的工程实战指南,几乎涵盖了所有编程语言与各种类型的项目,这个规范代表了谷歌长期发展以来最佳实战经验的集合,谷歌表示希望开源项目或其他组织能够从这套规范中受益。 代码评审,也称代码复查,如果一个团队正在使用任务分支工作流,那么在所有代码编写完成并通过自动化测试之后,在代码合并之前,就会启动代码评审。通常的目的是系统缺陷,保证软件总体质量和提高开发者自身水平,代码评审的所有工具和过程都是为了这个目的而构建的。代码评审对于敏捷团队来说的作用如下: 代码评审共享知识通过代码评审可以更好的进行工作评估代码评审能让你享受休假通过代码评审指导新工程师 既然代码评审要进行众多的检查,那么找一个优秀的评审者就非常重要了。一般对于变更列...阅读全文

博文 2019-09-10 17:19:13 debian.cn

如何校验 Debian 软件包的 MD5

/dbus-1/interfaces/org.freedesktop.Accounts.User.xml OK /usr/share/dbus-1/interfaces/org.freedesktop.Accounts.xml OK /usr/share/dbus-1/system-services/org.freedesktop.Accounts.service OK /usr/share/doc/accountsservice/README OK /usr/share/doc/accountsservice/TODO OK .... 为了能够校验每个软件包的每个文件和配置文件,任何变化,请加入-a或--all选项: $ sudo debsums --all 校验所有配置文件的MD5和...阅读全文

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

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

Kubernetes对象的关系。 豆荚在Kubernetes中无处不在,因此了解它们将有助于您的工作。部署概述 - 提供部署概述 。 了解部署控制器如何工作非常有用,因为它们在无状态应用程序中经常用于扩展和不健康应用程序的自动修复。服务概述 - 涵盖服务,Kubernetes集群中另一个常用对象。 了解服务类型及其选项对于运行无状态和有状态应用程序至关重要。 您可以研究的其他重要概念是Volumes , Ingresses和Secrets ,所有这些在部署生产应用程序时都会派上用场。 Kubernetes提供了许多功能和特性。 Kubernetes官方文档是了解概念,特定于任务的指南以及各种对象的API参考的最佳位置。...阅读全文

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

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

MongoDB 是一个多租户系统,它会尽可能地占用内存,因此最好是安装在服务器上,最大限度地提供内存,即使是开发工作。在服务器上使用默认端口安装而不启用身份验证是在自找麻烦,尤其是可以在查询中运行任意 JavaScript 时(例如把$where 作为注入攻击的载体)。 身份验证方法有多种,但是用户 ID/密码凭证最容易安装和管理。当你考虑 基于 LDAP 的身份验证 时,可以采用那个方法。在我们谈论安全时,MongoDB 必须保持最新,而且,在日志里未授权访问的迹象总是值得的。我不喜欢使用默认端口。 忘记限制 MongoDB 的攻击面 MongoDB 的 安全检查清单 为降低网络渗透和数据泄露风险提供了很好的建议。我们很容易会认为,开发服务器不需要高等级的安全。不是这样的:安全对于所有...阅读全文

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

1440次申请VPC IP和释放VPC IP操作。 然而,经过数天的测试统计,发现通过该CronJob,集群每天申请IP次数高达2500以上, 而释放的的IP次数也达到了1800。申请和释放次数都超过了1440,而且申请次数超过了释放次数,意味着,部分分配给Pod的VPC IP被无效占用而消失了。 CNI:待删除的IP去哪儿了? 仔细分析CNI插件的运行日志,很快发现,CNI在执行拆除SandBox网络动作(CNI_COMMAND=DEL)中,存在不少无法找到Pod IP的情况。由于UK8S 自研的CNIPod IP依赖正确的Pod网络名称空间路径(格式:/proc/10001/net/ns),而kubelet传给CNI的NETNS环境变量参数为空字符串,因此,CNI无法获取待释放的VPC...阅读全文

Web前端知识体系精简

,但Javascript在函数Function对象中建立了原型对象prototype,并以Function对象为主线,从上至下,在内部构建了一条原型链。 简单来说就是建立了变量机制,当访问一个对象的属性时,先对象本身是否存在,如果不存在就去该对象所在的原型连上去找,直到Object对象为止,如果都没有找到该属性才会返回undefined。 因此我们经常会利用函数的原型机制来实现JS继承。关于函数原型链可参考博客:JS原型对象和原型链 2、函数作用域 函数作用域就是变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。在JS中没有会块级作用域,只有函数作用域,因此JS中还存在着另外一种怪异现象,那就是变量提升。关于作用域的介绍请参考博客:函数的作用域和作用域链 3、函数指针...阅读全文

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

成功运作一个开源项目的15个要点

少。 2、透明 这一点很容易理解:我们要使得社区可以观察和了解你正在做的事情:使用易于的可公开访问的源代码存储库,使用面向公众的问题跟踪软件,在社区可以找到的地方公布发布计划,以及在公共论坛捕获会议记录(例如归档邮件列表)。 3、开放 对于很多开源项目来说,“透明度”和“开放性”意味着同一件事,但其实这两个术语的含义截然不同。开放不仅仅指的是“一目了然”(这与透明本质上是一样的)。对于许多人来说,开源的“开放”意味着开放新思想,或开放参与。参与开源项目的规则对于每个人应该是一样的(“公平的竞争环境”):仅仅接受几个补丁是不够的,你必须对新的思路点子开放。总之,你必须允许别人参与你的项目,放弃对项目的绝对控制。 4、保持“公平的竞争环境” 这并不一定意味着你必须让任何人加入项目,而是要确保...阅读全文

博文 2017-11-08 09:58:28 debian.cn

在TKE上使用Kubecost进行成本管理

() × a.MemTotalCost() - CPU 的成本效率:cpuCostEff = a.CPUEfficiency() × a.CPUTotalCost() - **总成本效率**:totalEff=(MemCostEff + cpuCostEff) / (a.CPUTotalCost() + a.MemTotalCost()) ### 优化建议 在判断哪些业务需要优化以及如何优化成本结构,可以先 TOP 10 的某种资源浪费,例如资源的 Usage 和 Request 差别较大,可以根据应用监控画像给出推荐的 Request,最后计算出每种资源可节省的成本。 ### 评估经济学边际成本 关于节点自动扩容部分,可以衡量一个集群中每个节点,假设 CPU 和 Mem 每增加 1C1G,最终成本达到多少,是否会出现规模...阅读全文

Apollo 配置中心简单介绍

cluster概念后,配置的规则就显得重要了。 比如应用部署在A机房,但是并没有在Apollo新建cluster,这个时候Apollo的行为是怎样的? 或者在运行时指定了cluster=SomeCluster,但是并没有在Apollo新建cluster,这个时候Apollo的行为是怎样的? 接下来就来介绍一下配置获取的规则。 4.4.1 应用自身配置的获取规则 当应用使用下面的语句获取配置时,我们称之为获取应用自身的配置,也就是应用自身的application namespace的配置。 Config config = ConfigService.getAppConfig(); 对这种情况的配置获取规则,简而言之如下: 首先运行时cluster的配置(通过apollo.cluster指定)如果没有找...阅读全文

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

如何写好技术文档 — 来自十多年的文档经验总结

你搭建起整个文档的框架。 - WHEN: 明确文档的创建、Review和更新日期。因为文档也有时效性,明确相关日期可以避免阅读者踩坑。 - WHERE: 文档应该放在哪! 建议一个组织或者团队有统一的永久文档存放地址,并且有版本控制。最好是方便、使用和分享。 - WHY: 为什么要写这篇文档, 你期望读者读完后从文档中获得什么! ### 三段式写作 ### 写文章一般都会有三个部分,专业写作者也讲究凤头、猪肚、豹尾,这三个词概括出了好文章三部分应有的特点。技术文档也算是文章的一种,所以一般也都会有这三部分,每个部分有其自己的作用,比如第一部分阐述问题,中间部分介绍具体的解决方案,第三部分总结要点。 但这也并不以为着文档应该有三个部分,如果文档内容比较多,可以将其做更细致的拆解,可以适当增...阅读全文

博文 2021-07-30 16:15:13 joseph

我要彻底放弃 Debian 操作系统!-Michael Stapelberg

Debian中的使用尤为广泛,所以感觉这很讽刺啊。为了掩盖这个问题,我们使用了Gmane,但在过去几年中Gmane可谓是非常不稳定。 我设法提供了一个线程列表的归档,但我们的列表管理员似乎并不关心,而且也不想支持这个项目。 Debian很难机器读取 虽然肯定有办法通过程序的方式处理Debian包,但这种体验一点也不愉快。一切似乎都十分缓慢而且很麻烦。我只选了三个简单的例子来说明我的观点。 Debiman需要piuparts的帮助,才能分析每个包显示联机帮助页等内容的替代机制。这是因为维护者的脚本通过调用shell脚本来修改备用数据库。如果没有实际安装包,你就无法得知它对备选的数据库做了哪些更改。 pk4需要维护自己的缓存,才能根据包的名称包的元数据。其他工具在每次调用时都需要从头开始解析apt数据...阅读全文

博文 2019-03-22 17:01:23 Michael Stapelberg

Git 介绍与使用详解

没有中央服务器,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。举个例子,要浏览项目的历史,Git 不需外连到服务器去获取历史,然后再显示出来——它只需直接从本地数据库中读取。 你能立即看到项目历史。 如果你想查看当前版本与一个月前的版本之间引入的修改,Git 会到一个月前的文件做一次本地的差异计算,而不是由远程服务器处理或从远程服务器拉回旧版本文件再来本地处理。 2.安装、配置Git 2.1GUI可视化界面推荐 1.GitForWindows https://gitforwindows.org/ 自带GIT BASH和GIT GUI 2.TortoiseGit https://tortoisegit.org/download/ 3...阅读全文

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

Monit:开源服务器监控工具

> | MATCHING > 是程序的pid文件的绝对路径。pid文件是一个包含进程唯一ID的文件。如果pid文件不存在或不包含正在运行的进程的PID编号,则Monit将调用该条目的start方法(如果已定义)。 是使用PID文件的替代方法,并使用进程名称模式匹配来要监视的进程。选择具有最长正常运行时间的最顶部匹配的父级,因此如果进程名称是唯一的,则此检查形式是最有用的。应该尽可能使用Pid文件,因为它定义了预期的PID。您可以测试一个进程是否匹配来自命令行使用的模式monit procmatch "regex-pattern"。这将列出匹配或不匹配的所有进程,regex模式。 文件 CHECK FILE PATH 阅读全文

博文 2023-04-12 15:21:43 阿里云开发者社区

最全的 DevOps 工具集合

用 Marathon 的 Apache Mesos 架构,©AdrianMouat 如图所见,集群中有四个元素。ZooKeeper 帮助 Marathon Mesos master 的地址,可以使用多个实例来处理故障。 Marathon 负责启动、监视并扩展容器。Mesos master 将分配给节点的任务发送给 Marathon,并在节点具有一些可用的 CPU/RAM 时向 Marathon 提出要约。Mesos slaves 负责运行容器并提交自身可用资源的列表。 Kubernetes Kubernetes 是用于 Docker 容器的编排系统,使用标签和 pods 的概念将容器分为许多逻辑单元。Pod 是 Kubernetes 与其他两种解决方案之间的主要区别所在——它们是位于同...阅读全文

博文 2021-05-26 14:35:21 博客园

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

KEYS命令,严格禁止在生产环境中使用) Redis的数据结构和相关常用命令 本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令。本节只对Redis命令进行扼要的介绍,且只列出了较常用的命令。如果想要了解完整的Redis命令集,或了解某个命令的详细使用方法,请参考官方文档:https://redis.io/commands Key Redis采用Key-Value型的基本数据结构,任何二进制序列都可以作为Redis的Key使用(例如普通的字符串或一张JPEG图片) 关于Key的一些注意事项: 不要使用过长的Key。例如使用一个1024字节的key就不是一个好主意,不仅会消耗更多的内存,还会导致的效率降低 Key短到缺失了可读性也是不好的,例如”u1000flw”比起...阅读全文

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

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

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

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

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

RBAC 授权器举例,当请求进入时,授权器会将用户的初始状态缓存下来,然后用它来检索与 etcd 中的用户关联的所有 角色(Role)和 角色绑定(RoleBinding)。那么问题来了,Controller 是如何访问和修改这些资源对象的呢?事实上 Kubernetes 是通过 Informer 机制来解决这个问题的。 Infomer 是一种模式,它允许 Controller 缓存在本地内存中的数据(这份数据由 Informer 自己维护)并列出它们感兴趣的资源。 虽然 Informer 的设计很抽象,但它在内部实现了大量的对细节的处理逻辑(例如缓存),缓存很重要,因为它不但可以减少对 Kubenetes API 的直接调用,同时也能减少 Server 和 Controller 的大量重复性...阅读全文

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

提问的智慧 – 全文

自大,烦请检查你的假设,我们并未要求你崇拜我们,事实上,假如你做了力所能及的努力,我们大多将非常乐意平等地与你交流,并欢迎你接纳我们的文化。我们认为试图去帮助那些不愿自助的人是一件没有效率和效果的事情。所以,我们宁愿被称作傲慢,也不去做愚蠢的事[7]。 所以,你无须拥有很高超技术也可以吸引我们的注意,前提是你必须表现出解决此问题的积极态度:热切关注、深入分析、试图努力过解决此问题的方法,并且乐意主动参与到解决问题的组织,分享你的想法。如果你做不到使你与众不同,我们建议你付费寻求他人帮助,而不是要求黑客提供无偿的帮助。 如果你决定向我们求助,不想成为一名loser,或者不想被看成一个lose,我们有一个立竿见影的方法:(1)有技术含量地提问,(2)像是一个有智慧有自信和会思考的人那样去提问...阅读全文

博文 2009-10-01 13:18:00 debian.cn

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

pipeline),而且提供了不可变性和一致性。 不可变性确保所有访问Prodspec的执行者都能基于相同的数据做决策。比如,如果一个服务器负责认证某个asset是否可以安全地推送,执行推送的服务器保证是在相同的数据上工作。缓存变得至关重要,可以在事后检查用于自动决策的信息。 一致性很重要,因为我们很少孤立地asset。asset可能需要引用其他asset来组合出完整的配置。如果这些asset的内容来自不同的时间点,则可能最终得到错误的假设。想象一下,在Shakespeare服务中,一个集群的容量减少了,这个变更需要减小该集群中前端job的大小和相应的负载均衡器配置。如果没有一定的一致性,Annealing可能会在更新负载均衡器配置之前就减少了job的大小,这可能会导致服务的过载。 生成...阅读全文

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