普通视图

发现新文章,点击刷新页面。
昨天以前首页

时代不同, 我儿子10岁就能通过github pages做一个静态网站


今天,我二娃搞了一个网页/网站,他通过 GitHub Pages 完成的,其实不难。几天前,他注册了一个 GitHub 账户(被戏称为全世界最大的“同志网站”——gayhub),取了个 ID,叫做 faceless15748。他说 faceless15 已经被人注册了。

他还自学了 HTML 和 Markdown,并且稍微懂一些 JavaScript 和 CSS。比我十岁时强多了。我十岁的时候,记得的只有在院子里玩泥巴。

我娃自己查文档、搜索,还会用 Copilot,他说以后想和我一样成为软件工程师。我竟然有点小小的感动。

在这个信息化的时代,技术的门槛越来越低。回想起我小时候,接触计算机和编程的机会并不多,学习的资源也十分有限。然而,今天的孩子们拥有无数的学习机会和工具,他们可以通过网络和开源项目实现几乎任何想法。

ryan-first-website-github-pages-scaled 时代不同, 我儿子10岁就能通过github pages做一个静态网站 学习笔记 折腾 教娃 教育 生活 程序员 编程 网站信息与统计 育儿

我儿子的第一个网站是架在Github上的静态网页。

my-son-ryan-first-website-version-2 时代不同, 我儿子10岁就能通过github pages做一个静态网站 学习笔记 折腾 教娃 教育 生活 程序员 编程 网站信息与统计 育儿

第二个版本,加了个图片,家里的猫Pyro

什么是 GitHub Pages?

GitHub Pages 是一个免费的静态网站托管服务,用户可以通过 GitHub 仓库将 HTML、CSS 和 JavaScript 文件上传,并托管成一个网站。这个服务特别适合个人、项目或组织展示,甚至可以直接用来做博客或者作品集。

如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用)

GitHub Pages 的最大优势之一就是无需服务器支持。所有的文件都会被托管在 GitHub 提供的全球 CDN(内容分发网络)上,加载速度非常快,且完全免费。更重要的是,GitHub Pages 完全支持自定义域名,允许你轻松地展示个人创作。

本文一共 550 个汉字, 你数一下对不对.
时代不同, 我儿子10岁就能通过github pages做一个静态网站. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 时代不同, 我儿子10岁就能通过github pages做一个静态网站 学习笔记 折腾 教娃 教育 生活 程序员 编程 网站信息与统计 育儿
The post 时代不同, 我儿子10岁就能通过github pages做一个静态网站 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 教娃编程有趣的瞬间 vlog视频集合 教娃700天:写在教娃编程700天, what’s next?。有很多有意思的瞬间记录一下,持续更新。 和孩子一起打闹,学习,成长。 教娃编程孩子有趣的瞬间 vlog(Day 641) 娃说我不够 Senior(Day 701) Bro.. I thought you’re like...
  2. 如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用) 创建一个 GitHub Pages 站点是一个简单的过程,可以免费为你的个人、项目或组织创建网站/博客。按照此指南开始。 步骤 1:创建 GitHub 仓库 登录你的 GitHub 账户。 点击“新建”来创建仓库。 对于个人站点,命名为 .github.io。 对于项目站点,使用任何有效的名称。...
  3. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. 最好的发财策略就是忘记它 在群里我和 @nationalpark 说到我用STEEM换了3000多个 YOYOW的时候我还有点沾沾自喜, 谁知道他一针见血: 听说你是steem换的我顿时心理平衡了 才突然想起来, 我半个月前是拿 500 个 STEEM 换了 将近3300个YOYOW. 今天 STEEM的价格8美元,...
  6. 面试刷题更像是一种服从性测试 在许多求职者看来,面试中的刷题环节似乎是对技术能力的直接考察。然而,从另一个角度来看,这一过程或许更像是一场服从性测试。 想象一下,当一个公司要求候选人解决复杂的算法问题或设计一个系统架构时,真正的目的并不仅仅是判断候选人是否能完成这项任务。许多时候,公司更关心的是你是否愿意花时间和精力去迎合他们的流程和标准。 为什么这样说呢?从实际工作中来看,绝大多数岗位并不需要员工每天都在解决高难度的算法问题或从零设计分布式系统。相反,工作中的任务更偏向于理解业务逻辑、维护现有系统以及团队协作。那么,为什么刷题依然是很多公司青睐的筛选方式? 答案或许在于,刷题能有效筛选出那些愿意投入大量时间准备,并在面试中展现高度配合精神的候选人。这种配合精神,是公司希望在未来的工作中看到的品质。一旦你通过了这些测试,公司就会认为你是一个值得信赖的员工,一个能遵从流程、适应规则并在需要时投入额外努力的人。 还有就是以前说的:面试刷力扣是大公司过滤的成本较低的方法之一:为啥有名的IT公司的程序员面试都这么难?,可以过滤掉大部分 False Positive,当然也有可能过滤掉人才(胜任工作的求职者)。不过对于大厂来说,招进来一个False Positive的损害要远远比错过一个False Negative大。 此外,随着AI技术的飞速发展,刷题的技术价值正在逐渐降低。像ChatGPT这样的AI工具,已经可以轻松解决LeetCode或Codeforces上的许多高难度问题,并给出清晰的解题过程。这表明,算法题不再是人类独有的技术优势,而是可以被高效地自动化处理的任务。这种变化进一步凸显了刷题在实际工作中的局限性,因为日常工作更多依赖于沟通、业务理解和对系统的长期维护,而不是短时间内解决某个抽象问题。 OpenAI推出o3大语言AI模型。 Codeforces 评分:2727——相当于全球人类程序员编码竞赛中,排名第 175 位。...
  7. 英国 NatWest 银行推出 Reward Current Account 用来交水电费等帐单可以省钱 英国 NatWest 银行推出 Reward Current Account 银行帐号, 每个月需要交会费 3 英镑, 一年则需要36英镑 并不便宜, 但是好处是 只要通过该帐号以 Direct...
  8. 科学上网 通过 CloudFlare Worker 搭建 Js Proxy代理 CloudFlare 的 Worker 就是 Serverless (无服务器, 所有程序跑在云端). 以前是付费的, 现在免费了. 免费帐号可以创建30个 Worker, 每个帐号每天可以有10万次免费请求. 超过了可以配置 Fail Open...

如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用)


创建一个 GitHub Pages 站点是一个简单的过程,可以免费为你的个人、项目或组织创建网站/博客。按照此指南开始。

步骤 1:创建 GitHub 仓库

  • 登录你的 GitHub 账户。
  • 点击“新建”来创建仓库。
  • 对于个人站点,命名为 .github.io。
  • 对于项目站点,使用任何有效的名称。

步骤 2:添加你的站点文件

使用以下命令克隆仓库到本地机器:

git clone https://github.com/<username>/<repository-name>.git

创建一个 index.html 文件,包含你想要的内容。这里是一个例子:

<!DOCTYPE html>  
<title>我的 GitHub 页面</title>
<h1>欢迎访问我的站点</h1>
<p>这是我的第一个 GitHub Pages 站点。</p>

或者,你可以使用 README.md(Markdown)作为首页。

## 我的 Github 页面
### 欢迎访问我的站点
THis is my first Github Pages site.

将你的更改提交并推送到 GitHub:

git add .
git commit -m "Initial commit"
git push origin main
how-to-setup-github-pages-static-apps 如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用) Github 学习笔记 小技巧 程序设计 网站信息与统计 计算机 计算机

Github 上启用 Github Pages 的步骤

步骤 3:启用 GitHub Pages

  • 转到你的仓库设置。
  • 在侧边栏点击“Pages”。
  • 在“源”下选择分支(例如,main)和文件夹(如果适用)。
  • 点击“保存”。

步骤 4:查看你的站点

  • 对于个人站点:访问 https://<username>.github.io/。
  • 对于项目站点:访问 https://<username>.github.io/<repository-name>/。

步骤 5:自定义你的站点

要添加主题,请转到 Pages 设置并选择“选择一个主题”。

你还可以上传额外的 HTML、CSS 和 JavaScript 文件以进行进一步的自定义。

为什么 GitHub Pages 是“无服务器静态应用” / Serverless Apps

GitHub Pages 作为无服务器静态应用运行,因为它们直接向用户提供预构建的静态 HTML、CSS 和 JavaScript 文件,而不依赖后端服务器或运行时动态内容生成。相反,这些文件托管在 GitHub 的全球内容分发网络(CDN)上,确保快速有效的交付。

优点:

  • GitHub 提供的免费托管。
  • 不需要服务器维护。
  • 由于 CDN 分布,加载速度快。
  • 简化了静态站点的部署和扩展。

缺点:

  • 仅限于静态内容;不支持像数据库这样的服务器端功能。
  • 高级工作流的自定义需要技术知识。
  • 依赖于 GitHub 的基础设施。

GitHub Pages 的总结

GitHub Pages 是一个令人赞叹的免费托管网站的工具。只需几步,你就可以为你的项目、作品集或个人使用创建一个站点。通过利用无服务器模型,你可以构建轻量、高效且维护最小的站点。

英文:How to Setup and Create GitHub Pages (Serverless Static Apps)

本文一共 587 个汉字, 你数一下对不对.
如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用) Github 学习笔记 小技巧 程序设计 网站信息与统计 计算机 计算机
The post 如何轻松创建并托管你的 GitHub Pages 站点 (无服务器静态应用) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 英国房子的EPC节能报告(Energe/Efficiency Performance Certificate) EPC (Energe/Efficiency Performance Certificate) 是英国房子的节能报告, 法律上规定, 每个房子都必须要有一个EPC报告, 报告的有效期为十年. 房东在把房子出租或者想卖房的时候, 这个EPC就必须有效, 在一些情况下 比如出租房子的时候, 这个EPC报告还必须符合一些最低标准, 比如房子必须满足 F档(类似及格线)...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 最好的发财策略就是忘记它 在群里我和 @nationalpark 说到我用STEEM换了3000多个 YOYOW的时候我还有点沾沾自喜, 谁知道他一针见血: 听说你是steem换的我顿时心理平衡了 才突然想起来, 我半个月前是拿 500 个 STEEM 换了 将近3300个YOYOW. 今天 STEEM的价格8美元,...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. 英国TESCO超市有偿回收瓶子 前不久, 英国剑桥 Bar Hill 的的 TESCO乐购超市推出了一个回收瓶子的机器, 这机器就在超市入入口出. 只需要把瓶子放进去, 机器自动识别, 然后每个瓶子10P也就是相当于1块人民币. 完成后会给个小票, 买东西可以拿来当折扣用. 如果嫌麻烦, 在回收完成还可以选择捐给慈善机构. 机器非常人性化,...
  6. 面试刷题更像是一种服从性测试 在许多求职者看来,面试中的刷题环节似乎是对技术能力的直接考察。然而,从另一个角度来看,这一过程或许更像是一场服从性测试。 想象一下,当一个公司要求候选人解决复杂的算法问题或设计一个系统架构时,真正的目的并不仅仅是判断候选人是否能完成这项任务。许多时候,公司更关心的是你是否愿意花时间和精力去迎合他们的流程和标准。 为什么这样说呢?从实际工作中来看,绝大多数岗位并不需要员工每天都在解决高难度的算法问题或从零设计分布式系统。相反,工作中的任务更偏向于理解业务逻辑、维护现有系统以及团队协作。那么,为什么刷题依然是很多公司青睐的筛选方式? 答案或许在于,刷题能有效筛选出那些愿意投入大量时间准备,并在面试中展现高度配合精神的候选人。这种配合精神,是公司希望在未来的工作中看到的品质。一旦你通过了这些测试,公司就会认为你是一个值得信赖的员工,一个能遵从流程、适应规则并在需要时投入额外努力的人。 还有就是以前说的:面试刷力扣是大公司过滤的成本较低的方法之一:为啥有名的IT公司的程序员面试都这么难?,可以过滤掉大部分 False Positive,当然也有可能过滤掉人才(胜任工作的求职者)。不过对于大厂来说,招进来一个False Positive的损害要远远比错过一个False Negative大。 此外,随着AI技术的飞速发展,刷题的技术价值正在逐渐降低。像ChatGPT这样的AI工具,已经可以轻松解决LeetCode或Codeforces上的许多高难度问题,并给出清晰的解题过程。这表明,算法题不再是人类独有的技术优势,而是可以被高效地自动化处理的任务。这种变化进一步凸显了刷题在实际工作中的局限性,因为日常工作更多依赖于沟通、业务理解和对系统的长期维护,而不是短时间内解决某个抽象问题。 OpenAI推出o3大语言AI模型。 Codeforces 评分:2727——相当于全球人类程序员编码竞赛中,排名第 175 位。...
  7. 英国 NatWest 银行推出 Reward Current Account 用来交水电费等帐单可以省钱 英国 NatWest 银行推出 Reward Current Account 银行帐号, 每个月需要交会费 3 英镑, 一年则需要36英镑 并不便宜, 但是好处是 只要通过该帐号以 Direct...
  8. 离开 NPower – 在英国选择便宜的电气公司 extraenergy 在彻底离开 谢菲尔得的那一天 和房东一起读了 电表, 公寓里只用电 没有媒气 所以做饭也用电 特别贵. 虽然在 13年底装了 两个电表. 白天一个 晚上 12点到早上7点另一个表, 所以两个计费....

Sui区块链编程: 获取最新块高度(NodeJs/Javascript函数 Latest Block Number/Height)


获取最新区块号(高度)是开发人员在去中心化系统中常见的任务。如果你正在使用 Sui 区块链,并希望通过 Node.js 和 JavaScript 获取最新的区块高度,以下是一个简单的实现方法。

Sui 是一个高性能、可扩展的区块链,以低延迟和创新架构而闻名。与 Sui 的交互需要利用其 API,这些 API 允许开发人员无缝查询区块链数据并与智能合约交互。首先,确保你已在计算机上设置了 Node.js 环境并安装了必要的依赖项。

了解 Sui 区块链:Sui区块链简介

首先,创建一个新的 Node.js 项目。你可以使用以下命令初始化项目:

mkdir sui-block-height
cd sui-block-height
npm init -y

接下来,安装 Axios 库,它通常用于在Node.js中发起 HTTP 请求。我们将用它从 Sui 区块链 API 获取数据:

npm install axios

现在,创建一个名为 getLatestBlock.js 的文件,并在你喜欢的代码编辑器中打开。在这个脚本中,我们将编写一个函数来获取最新的区块高度。Sui 区块链提供了一个 RPC 端点,允许你查询其状态。这个端点是获取区块数据的关键。

以下是代码:

const axios = require('axios');

// Sui RPC 端点 - 如果使用特定网络,请替换为实际端点 
const SUI_RPC_URL = 'https://fullnode.sui.io/v1';

async function getLatestBlockHeight() {
    try {
        // 向 Sui RPC 端点发送 POST 请求
        const response = await axios.post(SUI_RPC_URL, {
            jsonrpc: '2.0',
            id: 1,
            method: 'sui_getLatestCheckpointSequenceNumber',
            params: []
        });
        if (response.data && response.data.result !== undefined) {  
            console.log(`最新区块高度: ${response.data.result}`);  
            return response.data.result;  
        } else {  
            throw new Error('响应结构异常');  
        }  
    } catch (error) {  
        console.error('获取区块高度失败:', error.message);  
        throw error;  
    }  
}

// 运行函数
getLatestBlockHeight().catch((err) => {
    console.error('Failed to fetch the block height:', err);
});

Node.js 代码解析

  • Axios 请求:我们使用 Axios 向 Sui RPC 端点发送 POST 请求。方法 sui_getLatestCheckpointSequenceNumber 用于获取区块链上的最新区块号(或检查点序列号)。
  • 错误处理:正确的错误处理可以确保网络错误或响应格式异常被记录,便于调试。
  • 日志记录:函数将最新的区块高度输出到控制台,这对于快速测试或调试非常有用。

在运行脚本之前,确保 Sui RPC 端点正确且可访问。示例中提供的 URL 指向 Sui 主网的全节点端点。如果你使用的是测试网或本地实例,请将 SUI_RPC_URL 变量替换为合适的端点。

运行脚本的命令:

node getLatestBlock.js

如果设置正确,你应该在控制台中看到打印的最新区块高度。此函数可以轻松集成到更大的应用程序中,或通过修改 RPC 方法和参数来适应其他区块链数据的获取需求。

实时交互区块链数据是构建去中心化应用程序的关键技能。借助 Sui 区块链强大的 API 和 Node.js 的简单性,你可以快速获取最新区块高度,并将此信息用于各种用途,例如监控网络、更新用户界面或触发应用程序中的特定操作。

随着 Sui 生态系统的发展,及时关注其文档和最佳实践可以确保你的集成高效且可靠。

英文:NodeJs/Javascript Function to Get the Latest Block Number (Height) on the Sui Blockchain

Sui 区块链编程

本文一共 729 个汉字, 你数一下对不对.
Sui区块链编程: 获取最新块高度(NodeJs/Javascript函数 Latest Block Number/Height). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c Sui区块链编程: 获取最新块高度(NodeJs/Javascript函数 Latest Block Number/Height) Javascript Node Js Sui 区块链 学习笔记 小技巧 程序设计 计算机
The post Sui区块链编程: 获取最新块高度(NodeJs/Javascript函数 Latest Block Number/Height) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 油管视频/Youtube Premium会员的好处: 用了就回不去了 从前年开始,我成为了 YouTube 会员,不过中间时断时续,因为觉得价格有点贵。在英国,YouTube 家庭会员每月费用是 19.99 英镑(可供五位家人共享),而个人会员则是每月 12.99 英镑。去年回国前,我暂停了一段时间的会员服务,但回到英国后发现自己已经离不开 YouTube 会员了。 成为会员的最大好处就是没有广告。最初,YouTube 是没有广告的,但随着平台上视频数量激增,广告也逐渐多了起来。如今,YouTube 已然是长视频的王者,谷歌当年的收购绝对算得上是一次非常成功的商业决策,足以写进教材。随着视频数量越来越多,用户一辈子也看不完平台上的内容,所需的服务器资源也水涨船高。因此,谷歌插入广告确实无可厚非。然而,从最开始的一两个广告,到如今非会员用户每隔五分钟就得忍受一次广告,用户体验确实大打折扣。 会员的另一个好处是可以下载视频,不过并不是直接下载为视频文件.mp4,而是保存在设备上。这样一来,可以提前下载好音乐或视频,开车时就无需耗费流量了。 此外,YouTube...
  2. 负电价活久见: 安装Octopus智能电表省电费甚至赚钱 前几周我的电气公司 Octopus 终于来装智能电表了(Smart Meter),虽然是免费安装的,但是排队排了有两三年了吧。因为之前一直写邮件催的时候就老是说 Not Ready。 收到邮件说可以安装智能电表我还是相当开心和期待的,因为已经听说这玩意好,但是还是得亲身体验一下。工程师来安装大概不到2小时,其中需要停电闸一会儿,重新接下线。装好后,给了个小册子,自动切换到了 Agile 的电价,也就是每半小时的电价都不一样,提前一天可以在手机App和网站上查得。 正好在原来的电价计费合同快要结束前2天换到了智能电表计价 Octopus Agile方式,但是系统还是扣了我75英镑 Exit Fee (提前合同结束得交违约费),不过我一个电话打过去,公司很爽快就给我退了。...
  3. 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
  4. HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
  5. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  6. 给孩子零花钱培养孩子正确的金钱观价值观 两个娃已经不知不觉7岁8岁了. 媳妇和我商量一下决定给孩子每人每周5英镑的零花钱(Pocket Money). 这样他们慢慢的就有自己的小积蓄备将来不时之需: 比如朋友聚会生日啥的需要准备礼物. 同时, 我们决定不再给孩子买零食(薯片啥的). 孩子一天好几餐, 晚上睡觉前还得吃零食, 我们就多买了很多水果面包, 健康的食物多吃一些总不是啥坏事. 孩子可以用这些零钱买自己想要的东西, 我们也不再过问. 孩子有自己的决定权. 第一周的时候,...
  7. 剑桥网红餐厅 The Ivy Cambridge Brasserie 上周刚过40岁生日,媳妇带我去剑桥的一家网红餐厅——The Ivy Cambridge Brasserie。这家餐厅是朋友推荐的,和那家Trinity一样很有名,可惜我们在剑桥待了近10年才知道。 The Ivy Cambridge Brasserie 是剑桥市中心一家备受欢迎的网红餐厅,位于历史悠久的 Trinity Street。餐厅设计时尚典雅,融合了现代与经典元素,为食客提供了一个舒适而奢华的用餐环境。这里的菜单丰富多样,覆盖全天用餐,从早餐到晚餐以及下午茶,提供英式经典美食如松露鸡肉派、英式早餐等,也有一些国际风味的菜肴。得天独厚的位置和独特的氛围使得 The Ivy Cambridge Brasserie...
  8. Pi币简介: 这真的是区块链上的虚拟货币么? 前几年就听说有一个币叫Pi,但又有听说这币就是屎币不靠谱,说是手机装个APP就能挖。 Pi币(Pi Network)是一种由移动应用程序推广的加密货币项目,据称其目标是让普通人能够通过手机“挖矿”来获得加密货币。以下是对Pi币的详细介绍: Pi币的特点与工作机制 挖矿方式 Pi币的挖矿与传统的工作量证明(PoW,如比特币)不同,它通过一款手机应用完成。用户每天登录应用,点击“挖矿”按钮,即可开始“挖矿”。这种机制主要是为了降低参与的技术门槛和硬件成本。 共识机制 Pi币声称使用的是一种基于“Stellar Consensus Protocol”(SCP,恒星共识协议)的机制。这种共识机制并不像比特币或以太坊那样依赖大量计算能力,而是依赖信任图谱,即用户间的信任关系来达成共识。 无需耗费算力 Pi币的挖矿并不依赖用户手机的计算资源,因此不会显著增加电池消耗或数据使用。这与其他加密货币的能耗问题形成了鲜明对比。 网络层级 先锋(Pioneer):普通用户,每天签到获得Pi币。 贡献者(Contributor):构建信任图谱,通过邀请新用户加入。...

Python 中寻找数据的众数: mode vs multimode


在 Python 中寻找数据的众数

statistics.mode() 函数是 Python 中 statistics 模块的一部分,它返回数据集中出现次数最多的单个值(众数)。与 multimode() 不同,mode() 如果数据集包含多个众数(即多模态数据)或数据为空,则会引发错误。

以下是一些示例来说明 mode() 的行为:

mode() 的语法

statistics.mode(data)

data: 一个序列(例如 list、tuple),其中的元素是可散列的,用于确定众数。

示例

单一众数(单模态数据)
from statistics import mode
data = [1, 2, 2, 3, 4]
result = mode(data)
print(result)  # 输出: 2
字符串作为数据
from statistics import mode
data = ["apple", "banana", "apple", "cherry"]
result = mode(data)
print(result)  # 输出: "apple"
多模态数据(引发错误)

如果有多个众数,mode() 会引发 StatisticsError。

from statistics import mode
data = [1, 1, 2, 2, 3]
try:
    result = mode(data)
except StatisticsError as e:
    print(e)  # 输出: "no unique mode; found 2 equally common values"
无重复值(引发错误)

如果数据集中没有值重复,mode() 会引发 StatisticsError。

from statistics import mode
data = [1, 2, 3, 4, 5]
try:
    result = mode(data)
except StatisticsError as e:
    print(e)  # 输出: "no unique mode; found 5 equally common values"
空数据集(引发错误)

如果数据集为空,mode() 会引发 StatisticsError。

from statistics import mode
data = []
try:
    result = mode(data)
except StatisticsError as e:
    print(e)  # 输出: "no mode for empty data"

在 Python 中寻找多众数

在 Python 中,术语 multimode 通常指 statistics.multimode() 函数,这是 Python 3.8 中 statistics 模块的一部分。此函数用于找到数据集中出现次数最多的值(众数)。与 statistics.mode() 不同,后者仅返回单个众数(如果数据集是多模态的会引发错误),而 multimode() 可以处理包含多个众数的多模态数据集。

语法

statistics.multimode(data)

data: 一个序列(例如 list、tuple),其中的元素是可散列的,用于查找众数。

行为

返回输入数据中所有众数的列表。如果没有元素重复,则返回所有唯一值的列表,因为在这种情况下每个值都是众数。

示例

单一众数
from statistics import multimode
data = [1, 2, 2, 3, 4]
result = multimode(data)
print(result)  # 输出: [2]
多个众数
from statistics import multimode
data = [1, 1, 2, 2, 3]
result = multimode(data)
print(result)  # 输出: [1, 2]
无重复值
from statistics import multimode
data = [1, 2, 3, 4, 5]
result = multimode(data)
print(result)  # 输出: [1, 2, 3, 4, 5]

主要特性

多模态支持:可以处理包含多个同频值的数据集。
优雅地处理唯一数据:如果没有重复值,则返回所有唯一值。
灵活的输入类型:适用于任何可散列对象的序列,包括字符串和元组。

字符串示例

data = ["apple", "banana", "apple", "cherry", "banana", "banana"]
result = multimode(data)
print(result)  # 输出: ['banana']

使用场景

  • 分析调查结果或投票中具有多个最受欢迎选项的情况。
  • 识别数据集中可能共享最高频率的频繁模式。

局限性

如果数据集很大,计算众数可能会消耗大量计算资源,因为它需要统计所有元素的出现次数。

mode 与 multimode 的比较

特性 mode() multimode()
返回值 单个最频繁的值 所有最频繁值的列表
多模态数据行为 引发 StatisticsError 返回所有众数
空数据集行为 引发 StatisticsError 返回空列表
最佳用途 适用于期望唯一众数的单模态数据 适用于包含多个众数的多模态数据或任意数据

如果不确定数据是否包含多个众数或无重复值,multimode() 是更安全的选择。

英文:The mode vs multimode in Python

本文一共 702 个汉字, 你数一下对不对.
Python 中寻找数据的众数: mode vs multimode. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c Python 中寻找数据的众数: mode vs multimode Python Python 学习笔记 数学 程序设计 计算机
The post Python 中寻找数据的众数: mode vs multimode first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 西瓜视频再也上传不了视频了(字节头条: 抖西合并) 上两个月,我再也没法在西瓜视频上上传我的视频了,也从此少了一个同步视频备份的地方了。现在登陆西瓜平台,要发视频的话会立马转到抖音创作者中心,然后我尝试通过手机号+SMS验证码的方式登录,提示我“请使用抖音手机APP登录” 原来西瓜视频国外的用户,可以通过手机号SMS+验证码的方式登陆网站,上传视频的。由于我人在英国,装的是英国的App Store,无法安装国内的西瓜视频APP,使用上有点不方便的。后来为了同步到国内的抖音平台,让我姐帮我绑定了她的抖音账号,可能就是因为这样,现在强制我得通过抖音平台来发视频了。等哪天有空我让我姐试试是否可以解绑。 西瓜视频已经合并到抖音平台上了,字节头条也不再单独运营西瓜视频了。 我发了邮件问西瓜视频,得到的回复:“您好,若您可以登录账号,请前往抖音,在设置内选择【我的客服】在线咨询,详细描述您的问题并提供问题界面截屏。若您无法登录账号,您可以拨打 95152 热线咨询,热线接听时间为8:30-22:00” 再问:您好,我们国外的用户没法装抖音啊。。。之前西瓜视频一直是 国外手机号登录的。 答:您好,您可以通过以下几种方法找到西瓜客服帮你解决问题:1.手机端入口:【西瓜视频App】更新至最新版本 【我的】-【创作中心】-【问题反馈】2.手机端入口:【西瓜视频App】-【我的】-【反馈与帮助】【意见反馈】3.电脑端入口:登陆【西瓜创作平台西瓜创作平台】点击右下角【问题咨询】。 西瓜视频是由字节跳动公司推出的一款视频分享平台,旨在提供用户一个便捷的观看和创作短视频的空间。西瓜视频自推出以来,凭借其丰富的内容、强大的推荐算法以及用户互动功能,逐渐成为中国大陆地区受欢迎的视频平台之一。 主要特点: 内容丰富:西瓜视频涵盖了多种类型的视频内容,包括娱乐、搞笑、影视、音乐、游戏、教育、科技等,满足不同用户的兴趣需求。 个性化推荐:依托字节跳动强大的机器学习和人工智能技术,西瓜视频通过分析用户的观看历史和行为习惯,提供精准的个性化推荐,提升用户的观看体验。...
  4. MySQL参数一键配置脚本: 有效提升数据库性能 我一直是自己租用VPS服务器,然后搭建各种服务,比如博客就是Apache2+MySQL数据库。一般来说就是默认参数,没有去管,不过最近发现MySQL的性能参数都很保守,不能发挥整个服务器的性能。 然后我就网上搜索了一下,根据参数配置建议,用ChatGPT写了以下Python和BASH脚本。只需要在需要优化的服务器上,跑一下该脚本,然后就会显示参数配置,然后直接把参数添加到MySQL数据库配置参数文件上: /etc/mysql/mysql.conf.d/mysqld.cnf 然后运行: service mysql restart 重启MySQL服务器。 运行了几周,发现效果很好,博客反应速度也快了很多,这很大原因是根据了内存增加了MySQL缓存大小。 Python脚本优化MySQL数据库参数 把下面的Python脚本存成 mysql_config.py 然后运行 python3 mysql_config.py...
  5. 世界再无OneKey币圈美元虚拟卡了 我前两年就了解到OneKey这个币圈虚拟货币出金卡,不过去年年底才注册使用的。当时还花了99美元一步升级到顶级黑卡。然后这一年陆陆续续用了这卡,但用得不多,主要就用于支持一些VPS主机费还有CloudFlare,ChatGPT Pro等。 这个卡是美国地址,卡号有两个段,Visa 和 Mastercard,不过由于地址是美国的,刷卡可能会有问题。比如我ChatGPT Pro注册帐号是英国的,然后用这卡支付了几个月,突然有一天帐号就被封,被告知:您的付款记录很可疑。 印象中,用这虚拟货币Crypto Card美元出金卡有手续费,但是并没有啥Cash Back返现卡,如果是非美元购物则会有另一笔手续费,所以我很少用这卡出金变现。 前两个月,OneKey宣布关闭: 关于 OneKey Card 服务停用通知 尊敬的用户,为提高服务质量和优化产品供应,我们将按照以下时间表停用...
  6. 负电价活久见: 安装Octopus智能电表省电费甚至赚钱 前几周我的电气公司 Octopus 终于来装智能电表了(Smart Meter),虽然是免费安装的,但是排队排了有两三年了吧。因为之前一直写邮件催的时候就老是说 Not Ready。 收到邮件说可以安装智能电表我还是相当开心和期待的,因为已经听说这玩意好,但是还是得亲身体验一下。工程师来安装大概不到2小时,其中需要停电闸一会儿,重新接下线。装好后,给了个小册子,自动切换到了 Agile 的电价,也就是每半小时的电价都不一样,提前一天可以在手机App和网站上查得。 正好在原来的电价计费合同快要结束前2天换到了智能电表计价 Octopus Agile方式,但是系统还是扣了我75英镑 Exit Fee (提前合同结束得交违约费),不过我一个电话打过去,公司很爽快就给我退了。...
  7. 步步高多媒体学生电脑 汇编程序设计 – 1 英文同步 90年代后期步步高生产的软驱一号(又称步步高多媒体学生电脑)和98型学生电脑都带了软驱,一按电源件, 都从软盘启动(98型可以从内置的电子盘启动) 步步高提供了直接在学习机上写汇编开发的工具 BASM. BASM 可以用来写 6502 汇编,并可以编译成 CMD 小型可执行程序 不支持 EXC 程序. CMD...
  8. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner) 我每天都在力扣上刷题。力扣有国服和美服,我两边都会打卡。每天打卡可以获得积分,而积分可以兑换各种礼物,比如T恤、卫衣、水壶,甚至可以用来抵扣一个月的会员费用。 我从2018年8月开始刷题找工作(当时去伦敦面试亚马逊),从那时起每年都会续费会员,费用是159美元,相当于每月13.25美元。我觉得这是对自己最值得的投资。买了力扣会员,就会有动力刷题、思考,通过不断练习让自己熟能生巧,保持一定的竞争力。 到目前为止,我已经用积分兑换了7-8件力扣的衣服,其中有2-3件是卫衣。国内的礼物我都寄到姐姐家。 前不久,我收到了力扣的邮件,说我获得了DCC奖励。我也不知道为什么会获得这个奖,随手回了邮件。没多久,就收到了一件新版的力扣衬衫。 英文:Leetcode DCC Winner T-shirt 本文一共 291 个汉字, 你数一下对不对. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner)....

MySQL参数一键配置脚本: 有效提升数据库性能


我一直是自己租用VPS服务器,然后搭建各种服务,比如博客就是Apache2+MySQL数据库。一般来说就是默认参数,没有去管,不过最近发现MySQL的性能参数都很保守,不能发挥整个服务器的性能。

然后我就网上搜索了一下,根据参数配置建议,用ChatGPT写了以下Python和BASH脚本。只需要在需要优化的服务器上,跑一下该脚本,然后就会显示参数配置,然后直接把参数添加到MySQL数据库配置参数文件上: /etc/mysql/mysql.conf.d/mysqld.cnf

然后运行: service mysql restart 重启MySQL服务器。

运行了几周,发现效果很好,博客反应速度也快了很多,这很大原因是根据了内存增加了MySQL缓存大小。

Python脚本优化MySQL数据库参数

把下面的Python脚本存成 mysql_config.py 然后运行 python3 mysql_config.py

def get_total_ram():
    with open('/proc/meminfo', 'r') as f:
        for line in f:
            if line.startswith("MemTotal:"):
                total_ram_kb = int(line.split()[1])
                return total_ram_kb * 1024  # 转换为字节(bytes)
    return 0  # 如果未找到 MemTotal,则返回 0

def calculate_mysql_settings():
    # 获取总内存(以字节为单位)
    total_ram = get_total_ram()

    # 根据总内存(以字节为单位)计算 MySQL 配置
    innodb_buffer_pool_size = int(total_ram * 0.3)  # 使用内存的 30%
    key_buffer_size = min(total_ram * 20 // 100, 512 * 1024 * 1024)  # 使用内存的 20%,最大限制为 512MB
    sort_buffer_size = min(total_ram * 25 // 1000, 4 * 1024 * 1024)  # 使用内存的 0.25%,最大限制为 4MB
    read_rnd_buffer_size = min(total_ram * 625 // 100000, 512 * 1024)  # 使用内存的 0.0625%,最大限制为 512KB
    tmp_table_size = max_heap_table_size = min(total_ram * 5 // 100, 64 * 1024 * 1024)  # 使用内存的 5%,最大限制为 64MB
    join_buffer_size = min(total_ram * 2 // 1000, 4 * 1024 * 1024)  # 使用内存的 0.2%,最大限制为 4MB
    table_open_cache = min(400 + (total_ram // 64), 2000)  # 根据内存动态计算,最大限制为 2000
    thread_cache_size = min(total_ram * 15 // 1000, 100)  # 使用内存的 1.5%,最大限制为 100
    innodb_log_buffer_size = min(total_ram * 5 // 100, 16 * 1024 * 1024)  # 使用内存的 5%,最大限制为 16MB

    # 以字节为单位打印配置
    print(f"MySQL 配置(基于总内存 {total_ram / (1024 * 1024):.2f} MB):")
    print("将以下内容添加到 /etc/mysql/mysql.conf.d/mysqld.cnf 的末尾\n")
    
    print(f"innodb_buffer_pool_size = {innodb_buffer_pool_size}")
    print(f"key_buffer_size = {key_buffer_size}")
    print(f"sort_buffer_size = {sort_buffer_size}")
    print(f"read_rnd_buffer_size = {read_rnd_buffer_size}")
    print(f"tmp_table_size = {tmp_table_size}")
    print(f"max_heap_table_size = {max_heap_table_size}")
    print(f"join_buffer_size = {join_buffer_size}")
    print(f"table_open_cache = {table_open_cache}")
    print(f"thread_cache_size = {thread_cache_size}")
    print(f"innodb_log_buffer_size = {innodb_log_buffer_size}")

    # 打印自定义设置
    print("expire_logs_days = 3")
    print("max_binlog_size = 100M")

if __name__ == "__main__":
    calculate_mysql_settings()

会打印出类似以下的配置:

innodb_buffer_pool_size = 626468044
key_buffer_size = 417645363
sort_buffer_size = 4194304
read_rnd_buffer_size = 524288
tmp_table_size = 67108864
max_heap_table_size = 67108864
join_buffer_size = 4176453
table_open_cache = 2000
thread_cache_size = 100
innodb_log_buffer_size = 16777216
expire_logs_days = 3
max_binlog_size = 100M

添加到MySQL的配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf 然后重启数据库即可:service mysql restart

BASH脚本优化MySQL数据库参数

以下是完成同样功能的BASH脚本。

#!/bin/bash

# 获取总内存大小(以字节为单位)
get_total_ram() {
    # 从 /proc/meminfo 中提取总内存(以 kB 为单位)
    total_ram_kb=$(awk '/^MemTotal:/ {print $2}' /proc/meminfo)
    if [[ -z "$total_ram_kb" ]]; then
        echo 0  # 如果未找到 MemTotal,则返回 0
    else
        echo $((total_ram_kb * 1024))  # 将 kB 转换为字节
    fi
}

# 根据总内存大小计算 MySQL 配置
calculate_mysql_settings() {
    # 获取总内存(以字节为单位)
    total_ram=$(get_total_ram)

    # 计算 MySQL 配置参数
    innodb_buffer_pool_size=$((total_ram * 30 / 100))  # 使用内存的 30%
    key_buffer_size=$(($((total_ram * 20 / 100)) < $((512 * 1024 * 1024)) ? $((total_ram * 20 / 100)) : $((512 * 1024 * 1024))))  # 使用内存的 20%,最大限制为 512MB
    sort_buffer_size=$(($((total_ram * 25 / 1000)) < $((4 * 1024 * 1024)) ? $((total_ram * 25 / 1000)) : $((4 * 1024 * 1024))))  # 使用内存的 0.25%,最大限制为 4MB
    read_rnd_buffer_size=$(($((total_ram * 625 / 100000)) < $((512 * 1024)) ? $((total_ram * 625 / 100000)) : $((512 * 1024))))  # 使用内存的 0.0625%,最大限制为 512KB
    tmp_table_size=$((total_ram * 5 / 100 < 64 * 1024 * 1024 ? total_ram * 5 / 100 : 64 * 1024 * 1024))  # 使用内存的 5%,最大限制为 64MB
    max_heap_table_size=$tmp_table_size  # 临时表大小等于最大堆表大小
    join_buffer_size=$(($((total_ram * 2 / 1000)) < $((4 * 1024 * 1024)) ? $((total_ram * 2 / 1000)) : $((4 * 1024 * 1024))))  # 使用内存的 0.2%,最大限制为 4MB
    table_open_cache=$(($((400 + total_ram / 64)) < 2000 ? $((400 + total_ram / 64)) : 2000))  # 根据内存动态计算,最大限制为 2000
    thread_cache_size=$(($((total_ram * 15 / 1000)) < 100 ? $((total_ram * 15 / 1000)) : 100))  # 使用内存的 1.5%,最大限制为 100
    innodb_log_buffer_size=$(($((total_ram * 5 / 100)) < $((16 * 1024 * 1024)) ? $((total_ram * 5 / 100)) : $((16 * 1024 * 1024))))  # 使用内存的 5%,最大限制为 16MB

    # 打印配置(以字节为单位)
    echo "MySQL 配置(基于总内存 $((total_ram / (1024 * 1024))) MB):"
    echo "将以下内容添加到 /etc/mysql/mysql.conf.d/mysqld.cnf 的末尾"
    echo
    echo "innodb_buffer_pool_size = $innodb_buffer_pool_size"
    echo "key_buffer_size = $key_buffer_size"
    echo "sort_buffer_size = $sort_buffer_size"
    echo "read_rnd_buffer_size = $read_rnd_buffer_size"
    echo "tmp_table_size = $tmp_table_size"
    echo "max_heap_table_size = $max_heap_table_size"
    echo "join_buffer_size = $join_buffer_size"
    echo "table_open_cache = $table_open_cache"
    echo "thread_cache_size = $thread_cache_size"
    echo "innodb_log_buffer_size = $innodb_log_buffer_size"
    echo
    echo "expire_logs_days = 3"  # 日志过期天数设置为 3 天
    echo "max_binlog_size = 100M"  # 最大二进制日志大小设置为 100M
}

# 主函数调用
calculate_mysql_settings

需要注意的是,我在脚本后面加入了一些我自定义的配置,根据需求自行修改即可。在配置文件里,后面定义的会覆盖前面的,这就是为什么要添加到文件尾的原因。

其中最关键的配置 innodb_buffer_pool_size 我设置为使用当前内存的30%,如果服务器只有数据库/博客这个功能,可以适当的提高比例,比如60%-80%。

英文:Python/Bash Script to Print the Optimized Parameters for MySQL Servers

运维/DevOps

本文一共 812 个汉字, 你数一下对不对.
MySQL参数一键配置脚本: 有效提升数据库性能. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c MySQL参数一键配置脚本: 有效提升数据库性能 MySQL 学习笔记 数据库 计算机 计算机 运维 运维 DevOps
The post MySQL参数一键配置脚本: 有效提升数据库性能 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  2. 一张图告诉你北京的雾霾有多严重 一北京的朋友朋友圈发的: 左上为全新口罩;右上为全新口罩本周一到周五每天室外戴20分钟左右;左下为全新口罩今早室外+公交车戴一个半小时;右下为全新口罩今早开车戴一小时左右. 还有这图 空气污染 – 红色的是严重的.中国,尤其是华北地区,是全球最红的地区,没有”之一”. 本文一共 113 个汉字, 你数一下对不对. 一张图告诉你北京的雾霾有多严重. (AMP 移动加速版本) 赞赏我的几个理由. ¥...
  3. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  4. 穷举算法的应用 – 去除EXCEL文件中的保护 EXCEL 是可以用密码来保护的. 比如 这个EXCEL 就用了密码保护. 打开EXCEL文件 你会注意到 无法编辑 无法查看宏(VBA)的代码. 去除保护很简单 第一步先编辑宏 VBA 把下面的VBA代码拷贝到VBA编辑器里 并按下F5运行 1...
  5. 谈谈 Utopian 成立公司 就在刚刚 Utopian 的老板 @elear 在 帖子和 discord 上宣布在 意大利成立 Utopian 公司. 可喜可贺! 这开始只是 Steem 上的一个小项目,...
  6. 步步高多媒体学生电脑 汇编程序设计 – 1 英文同步 90年代后期步步高生产的软驱一号(又称步步高多媒体学生电脑)和98型学生电脑都带了软驱,一按电源件, 都从软盘启动(98型可以从内置的电子盘启动) 步步高提供了直接在学习机上写汇编开发的工具 BASM. BASM 可以用来写 6502 汇编,并可以编译成 CMD 小型可执行程序 不支持 EXC 程序. CMD...
  7. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  8. 舍得给员工培训的公司是好公司 最近出差比较多, 很多人问我都干嘛去. 各种开会, 各种培训. 公司从剑桥一个软件公司请了一个专业的软件专家来做软件工程上的顾问. 我是 R&D 研发经理, 所以很自然的就要和他经常讨论, 然后目标是把当前公司的软件开发流程给完善, 提高, 把以前做的不对的得整对了. 培训的内容很多, 让我觉得以前公司完全就是在瞎搞, 什么...

理解系统设计中的可用性百分比: 计算系统的停机时间(Availability)


aws-four-nines-sla 理解系统设计中的可用性百分比: 计算系统的停机时间(Availability) 学习笔记 程序员 系统设计 计算机 面试

亚马逊云AWS的SLA是4个9也就是99.99%在线时间uptime

系统设计面试中,可用性百分比是软件工程师应该熟悉的基本知识。

在系统可靠性领域(System Availability),99.9% 或 99.99% 之类的可用性百分比是关键的基准。但是这些数字究竟意味着什么?它们又如何转化为实际停机时间(Downtime)?以下介绍了如何计算与不同可用性水平相关的停机时间,并使用示例来说明 99.9%、99.99% 和其他可用性目标所带来的预期。

什么是可用性百分比?

可用性百分比表示系统在给定时间段(通常是一年、一月或一天)内预计正常运行的时间比例。例如,99.9% 的可用性意味着系统在指定期间内可以停机 0.1% 的时间。

可用性百分比和停机时间

以下是根据不同时间段的可用性百分比计算停机时间的方法:

  1. 确定总时间周期:选择参考周期:
    • 年:365 天,或 31,536,000 秒(365 天 × 24 小时 × 60 分钟 × 60 秒)
    • 月:30 天,或 2,592,000 秒
    • 日:24 小时,或 86,400 秒
  2. 计算允许的停机时间:使用公式:

    停机时间 = 总时间周期 × (1 – 可用性百分比)

示例:99.9% 可用性的停机时间

99.9% 可用性的年度停机时间

  • 一年中的总秒数:31,536,000
  • 可用性:99.9% = 0.999
  • 停机时间 = 31,536,000 × (1 – 0.999) = 31,536 秒
  • 转换为小时和分钟:31,536 秒约为 8 小时 45 分钟

99.9% 可用性的月度停机时间

  • 一个月中的总秒数:2,592,000
  • 停机时间 = 2,592,000 × (1 – 0.999) = 2,592 秒
  • 转换为分钟:2,592 秒约为 43.2 分钟

99.9% 可用性的每日停机时间

  • 一天中的总秒数:86,400
  • 停机时间 = 86,400 × (1 – 0.999) = 86.4 秒
  • 转换为分钟:86.4 秒约为 1.44 分钟

更高可用性水平的停机时间

对于具有更高可用性目标的系统,如 99.99% 或 99.999%,允许的停机时间会变得更短。以下是总结不同可用性水平停机时间的表格:

可用性 年度停机时间 月度停机时间 每日停机时间
99.9%(三个 9) 约 8 小时 45 分钟 约 43.2 分钟 约 1.44 分钟
99.99%(四个 9) 约 52.6 分钟 约 4.4 分钟 约 8.6 秒
99.999%(五个 9) 约 5.3 分钟 约 26 秒 约 0.86 秒
99.9999%(六个 9) 约 31.5 秒 约 2.6 秒 约 86 毫秒

高可用性的重要性

具有高可用性目标的系统对于那些停机会直接影响收入、客户满意度或安全的行业至关重要。实现这些目标需要精心设计,包括负载均衡、冗余、故障转移机制,有时还需要资源的地理分布。

总结

可用性百分比提供了表达系统可靠性的一种方便方式,但将其转换为停机时间则可以更清楚地看到面临的风险。使用这些计算来设置现实的可用性目标,并相应地准备您的基础设施。

英文:Understanding Availability Percentages: Calculating Downtime for Your Systems

本文一共 768 个汉字, 你数一下对不对.
理解系统设计中的可用性百分比: 计算系统的停机时间(Availability). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 理解系统设计中的可用性百分比: 计算系统的停机时间(Availability) 学习笔记 程序员 系统设计 计算机 面试
The post 理解系统设计中的可用性百分比: 计算系统的停机时间(Availability) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 深度体验: OneKey虚拟货币出金卡(美元黑卡) 出金/变现的几种方法 出金:也叫Cash out/变现,一般把虚拟货币(如比特币BTC或以太坊ETH)变成法币的方式就叫出金。一般有几种方法: P2P:也叫线下,最直白的方式就是私下一手交钱/法币,一手交币。大型交易所都会有一个P2P的交易,比如币安和HTX火币都有。之前localbitcoin也是这种方式,可惜在2023年倒闭了。我曾经在微信上卖了几十个STEEM,当时是几美元一个的时候。一手交人民币,一手交STEEM币。这种P2P私下的方式不受监管,但是要互相信任。可以当面交易这样减少风险:见个面喝个茶,就把交易做成了。 变成法币:之前我用过Coinbase直接卖成英镑,然后通过发到Paypal再提现到英国银行帐号上变成实实在在在的英镑,不过这一趟下来,手续费不低,就当学费了。 直接花掉:我个人比较喜欢这种方式,有几种Crypto Visa/Master银行卡,可以把虚拟货币卖成法币然后购物花掉。大部分是需要有一个卖币成法币的过程,也有少部分是实时转换虚拟货币成法币,当然基本上是稳定币:USDC, USDT泰达币等。 在英国,想把虚拟货币出金,可以用几种选择: Wirex:支持波场U,支持各种Defi产品,比如定期30天存USDT可以达16%年利率,世界好多国家都支持Wirex卡,上次去塞尔维亚就刷了一次,不过发现汇率并不划算(有5%-10%的差别)。Wirex提现费用较高,不过转换成法币汇率较好。Wirex在乌克兰有个开发办公室。 Crypto.com:这家总部好像在香港,也是不错的,去年的时候它家的DEFI利率挺高,但后来越来越少,直接分成三档/Tier,有次无意和Wirex比较,发现它家USDT转英镑的利率比Wirex低多了,于是不怎么用了。Crypto.com也是需要先把币变成法币。 Crypto Ledger:这是家做硬件钱包的,最近一两年搞了这个产品,它家是直接刷稳定币,也就是消费的时候再兑换虚拟币成法币,有一个2%的费用,不过选择它家平台代币BXX就可以拿回这2%的返现/cashback,相当于不花钱。选择USDT或者BTC返现只有1%。它家的卡是支持加入Apple Pay的,所以可以用在线下支持,日常买菜吃饭都可以出金,很是方便。 OneKey:本文接下来要讲的。...
  2. 微软终于弃用VBScript, 一个时代结束了 VBScript是我最喜欢的编程语言之一,因为其简单的语法,性能稳定,而且在Windows上和COM组件结合,可以做很多事情,Windows管理员在Powershell出来之前用VBScript来完成各种管理工作。VBScript也是我早期学会的编程语言之一(还有LOGO海龟作图,FoxBase数据库,Pascal等)。现在我的任务栏还有VBS Editor,因为我很有时候需要验证些数学或者其它事情,我就会用VBScript来写。比较复杂的我就会用Python。 据说比尔盖茨对Basic语言情有独钟,因为他老人家当年就是设计并开发了Basic语言,后来一直在Windows产品中支持Basic,比如Visual Basic,VB for Application,ASP等。 2023年10月份也就是这个月,微软发布声明,说弃用VBScript了。因为现在,Powershell更为强大,可以完全取代VBScript。VBScript的语法简单很多,而且已经十几二十年没有更新了,已经跟不上主流语言的各种语法糖和框架,和COM结合也带来了一些安全问题,比如当年VBScript来写一些恶意脚本还是非常容易的。 可以在微软的这个页面看到: In future releases of Windows, VBScript will...
  3. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. 和媳妇聊聊 区块链 (Web3.0, 还有共识算法 PoW, PoS, DPoS) #blockchain #blockchaintechnology #区块链 #共识算法 #Web3 #web30technology #web30 #pos #dpos #pow #consensus 闲聊区块链, 很多方面讲得不是很详细, 轻喷. 主要是给媳妇普及一下区块链,...
  6. 简洁的 C# LINQ 写法 – 例子 1 LINQ 的全称是Language-Integrated Query, 在 .NET 2.0 之后就可以使用这种简洁的语法. 使用 LINQ 可以使代码变得简短, 清楚. 比如: 1 2 3...
  7. 币圈交易所安全实践 一周前,被骗1000英镑:在币圈第一次被骗1355 USDT(1000英镑)的惨痛经历(Wirex),近期在推上又被爆出两个比较大的事件,钱放交易所被黑客盗走,一夜清零。 在加密货币的世界中,安全至关重要。虽然区块链的去中心化特性提供了对许多类型欺诈的强大保护,但您用来买卖和持有数字资产的交易所可能容易受到黑客和其他安全漏洞的攻击。交易所一般是中心化的,也就是我们说的CEX(Centralize Exchange)。以下是确保您的加密资产在交易所中保持安全的综合指南。 如果很多币/钱,最好放在自己的本地钱包里(Not Your Keys, Not Your Funds),并且用硬件钱包(如Ledger),这样风险会小一些,不过很多人把币放交易所上就为了挣一些利息(交易所有很多DeFi项目),不过你得到的也许是利息,但可能失去的是本金。 我知道的HTX火币交易所就很不错,每次提款都需要三个验证:手机SMS短信、邮件验证,还有就是Google二维验证码。一些交易所在主帐号改密码24小时内是不能提现的,这也一定程度给予用户时间减少损失。 启用双重身份验证(2FA) 双重身份验证(2FA)是一个重要的安全措施,可以为您的账户增加一层额外的保护。以下是它的工作原理: 为什么需要2FA? 它不仅要求您的密码,还需要第二个因素,通常是发送到您手机的代码或由身份验证应用生成的代码。...
  8. 最好的给CPU降温方法就是通过改BIOS里的CPU风扇速度 家里的HPZ800服务器啥都好, 就是太吵. 之前显卡温度过高(可能是积灰的缘故)拿着电风扇对着机箱吹, 就更吵了. 最近我发现CPU温度也偏高, 因为一旦跑一些程序, CPU利用率上来了, CPU自动调节风扇就特别响, 像飞机起飞的. 而且温度也很容易升到80多度. 我查了一下, 因特志强X5650系列最高工作温度(健康温度)是81点3度. 想着不能就这样放任它不管, 于是想到了一招: 重启F10进BIOS设置,...

C++的异步编程: std::future, std::async 和 std::promise


在 C++ 中,std::future 和 std::async 是 C++11 标准 并发库的一部分。它们允许您异步/Asynchronous运行任务并在稍后获取结果,非常适合编写非阻塞代码和并行化计算。以下是它们的工作原理和典型用法。

C++ std::async

std::async 是一个高级函数,允许您异步启动一个任务(一个可调用对象,如函数或 lambda)。您指定要运行的函数,std::async 返回一个表示该 函数结果的 std::future。您可以稍后获取该结果,无论是任务完成时还是您需要时。

#include <iostream>
#include <future>
#include <chrono>

int compute() {
    std::this_thread::sleep_for(std::chrono::seconds(2));  // 模拟工作
    return 42;  // 计算结果
}

int main() {
    // 异步启动任务
    std::future<int> result = std::async(std::launch::async, compute);

    // 当 compute() 运行时执行其他任务...

    // 获取 compute() 的结果(如果任务未完成则会等待)
    int value = result.get();
    std::cout << "结果: " << value << std::endl;

    return 0;
}

在此示例中:

  • std::async(std::launch::async, compute) 异步启动 compute(),返回一个 std::future 对象。
  • result.get() 调用等待任务完成(如果尚未完成)然后获取结果。

C++ std::launch 策略

  • std::launch::async: 强制任务在新线程上异步运行。
  • std::launch::deferred: 推迟执行直到 future 上调用 get() 或 wait(),使其同步运行。

如果省略策略,C++ 可能根据实现定义的标准选择其中之一。

C++ std::future

std::future 是一个类模板,表示稍后获取的结果。它本质上是一个异步操作结果的占位符。

关键方法

  • get(): 如果结果尚未完成则等待并获取结果。调用 get() 后,std::future 变为空。
  • wait(): 等待任务完成,但不获取结果。
  • valid(): 如果 std::future 具有共享状态(即有结果可用)返回 true。
  • wait_for() 和 wait_until(): 等待特定时间或直到结果可用的截止时间。

带有 wait_for 的示例

if (result.wait_for(std::chrono::seconds(1)) == std::future_status::ready) {
    std::cout << "结果已就绪: " << result.get() << std::endl;
} else {
    std::cout << "仍在等待结果..." << std::endl;
}

此代码检查结果是否在 1 秒内就绪。如果没有就绪则继续执行,不 阻塞

C++ std::promise

对于更高级的用法,std::promise 允许您手动设置 std::future 的结果。std::promise 对象提供一个 std::future,您可以显式设置结果。

#include <iostream>
#include <future>
#include <thread>

void setPromise(std::promise<int> p) {
    p.set_value(10);  // 设置 promise 的结果
}

int main() {
    std::promise<int> p;
    std::future<int> f = p.get_future();  // 从 promise 获取 future

    std::thread t(setPromise, std::move(p));  // 将 promise 传递给线程
    t.join();

    std::cout << "promise 的结果: " << f.get() << std::endl;  // 获取结果
    return 0;
}

在此例子中,结果 10 是由 std::promise 设置的,std::future 可以通过 f.get() 获取。

C++ Future/Async/Promise 总结

  • std::async: 启动一个异步运行的任务,返回一个 std::future。
  • std::future: 表示将来会设置的值,通常是异步任务的返回值。
  • std::promise: 允许手动设置 std::future 的结果。

使用这些功能,您可以有效地管理 C++ 中的异步任务,更轻松地并行运行计算或将工作分配给其他线程而不阻塞主线程。

英文:Tutorial on C++ Future, Async and Promise

C/C++编程

本文一共 606 个汉字, 你数一下对不对.
C++的异步编程: std::future, std::async 和 std::promise. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++的异步编程: std::future, std::async 和 std::promise C++ C++ 学习笔记 程序设计 计算机
The post C++的异步编程: std::future, std::async 和 std::promise first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  2. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  3. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  4. HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
  5. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  6. ChatGPT-4 使用 Math Wolfram 插件解决数学脑筋急转弯问题 这篇文章, 我们看一个简单的数学问题(脑筋急转弯), 并用 Python 解决它. 我们看一下LLM(大型语言模型): ChatGPT3.5和ChatGPT4. 通过 ChatGPT-Plus 订阅(目前每月 20 美元 + VAT增值税), 我们可以启用...
  7. Javascript 中 sleep 函数实现 Javascript 中并没有 built-in 的 sleep 函数支持, 在 async/await/Promise 的支持之前, 我们可以用 busy-waiting 的方式来模拟: 1 2 3...
  8. 给孩子零花钱培养孩子正确的金钱观价值观 两个娃已经不知不觉7岁8岁了. 媳妇和我商量一下决定给孩子每人每周5英镑的零花钱(Pocket Money). 这样他们慢慢的就有自己的小积蓄备将来不时之需: 比如朋友聚会生日啥的需要准备礼物. 同时, 我们决定不再给孩子买零食(薯片啥的). 孩子一天好几餐, 晚上睡觉前还得吃零食, 我们就多买了很多水果面包, 健康的食物多吃一些总不是啥坏事. 孩子可以用这些零钱买自己想要的东西, 我们也不再过问. 孩子有自己的决定权. 第一周的时候,...

用Matlab画一个南瓜/Pumpkin


一年一度的万圣节要到了,正好这天在Linkedin上看到Mathworks发的帖子,用Matlab画一个南瓜,很是有趣。

matlab-pumpkin 用Matlab画一个南瓜/Pumpkin Matlab 学习笔记 程序设计 编程 节日 计算机 计算机

用Matlab画一个南瓜/Pumpkin

% Pumpkin
[X,Y,Z]=sphere(200);
R=1-(1-mod(0:.1:20,2)).^2/12;
x=R.*X; y=R.*Y; z=Z.*R;
c=hypot(hypot(x,y),z)+randn(201)*.03;
surf(x,y,(.8+(0-(1:-.01:-1)'.^4)*.3).*z,c, 'FaceColor', 'interp', 'EdgeColor', 'none')
% Stem
s = [ 1.5 1 repelem(.7, 6) ] .* [ repmat([.1 .06],1,10) .1 ]';
[t, p] = meshgrid(0:pi/15:pi/2,0:pi/20:pi);
Xs = -(.4-cos(p).*s).*cos(t)+.4;
Zs = (.5-cos(p).*s).*sin(t) + .55;
Ys = -sin(p).*s;
surface(Xs,Ys,Zs,[],'FaceColor', '#008000','EdgeColor','none');
% Style
colormap([1 .4 .1; 1 1 .7])
axis equal
box on
material([.6 1 .3])
lighting g
camlight

英文:Draw a Pumpkin using Matlab

Mathwork Matlab

英国万圣节/Halloween

本文一共 53 个汉字, 你数一下对不对.
用Matlab画一个南瓜/Pumpkin. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 用Matlab画一个南瓜/Pumpkin Matlab 学习笔记 程序设计 编程 节日 计算机 计算机
The post 用Matlab画一个南瓜/Pumpkin first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. SteemIt 高级定制微信文章列表 RSS/API/阅读器 v2.0 The Advanced Wechat Group Posts Feed/API/Reader v2.0 Abstract: I have added five parameters to the...
  4. 域名续费 – 强迫症 我有注册了好几个域名,每次续费我都会申请最多年,也就是续个 10 年 ( .COM 域名一般一次可以注册 10 年) 其实这是很不好的,很浪费钱,10年注册费也将近 100 镑, 何况我还有6个域名.是笔不小的开销.域名申请久一点,好处无非是自己看着爽;让你的读者知道你写博客有恒心,不会哪一天就半途而废;还有就是有争议的:搜索引擎会不会把域名注册年限当作一个SEO评分的因素呢? 有可能短期注册只有一年的域名会被惩罚.长期的比如五年和十年可能都没有区别. 我在三个域名提供商里都续过.Fasthosts 是做...
  5. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  6. VPS惊魂恢复: 手欠, 差点把这一个月的博客和VPS给丢了 我目前为止有 5 台VPS, 除了上个月在 Digital Ocean 租了一台在法国的新VPS(用于VPS数据库工具) 是选择了 Ubuntu 18.04, 其它4台都是16.04, 最近听说 Ubuntu 16.04 已经...
  7. 在英国带孩子去露营全攻略 之前就做了一些露营的准备工作, 因为大儿子Eric 很兴奋说是要去 Camping Holiday 估计是在 Papa Pig 里看到的. 英国有很多可以露营的地方, 最后面选了一个离家开车1个多小时. 看了评论还不错. 地址为: New Road,...
  8. LOGO 海龟作画 系列三 递归画一个国际象棋棋盘 今天我们要来讲一讲递归. 递归就是函数自己调用自己, 我们可以定义一个过程, 然后这只海龟不停的画, 结束的时候再调用自身再继续画. 再次调用的时候参数变化了, 至到参数满足一定的条件则停止. 比如 下面定义的这个过程可以用来画一个实现的正方形. TO FK :B IF :B>15 ;...

迭代幂运算/重幂的介绍与其Python代码实现


数学中的迭代幂运算/重幂是什么?

迭代幂运算(重幂)是数学中的一种运算,涉及到反复进行幂次运算。它是超运算序列的一部分,该序列延伸了加法、乘法和幂运算。在迭代幂运算中,一个数自乘多次,直到达到指定的次数。

一个数a迭代幂的高度n通常表示为:tex_7f275feba9caa33491cc739d97613e41 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,也就是把n写在a的左上角,(也可以记作:a↑↑n)这表示a被迭代n次。

例如:

  • tex_809d19495ee2ad967edb956694773d96 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 (简单恒等式)
  • tex_b2971689df7256a7c315e159e8dceca6 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 (a自乘一次)
  • tex_185fcc3b7fe6daf47068d87ffd22f670 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 (a的幂次为a自乘)
  • tex_a932b7bb96225dc665bbe571f816002a 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,依此类推。

在迭代幂运算的上下文中,tex_b3ef97b6eba2428ee919c02c89d2c9ea 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 通常未定义或没有普遍共识。然而,一些数学惯例建议对于任何 tex_58c6653dfed174ea991f702adfb3e6f4 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 tex_2f1f5ed0eeff6d95cf9b145624dfb6af 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,类似于在幂运算中对任何非零的 tex_58c6653dfed174ea991f702adfb3e6f4 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 tex_5c135adeedf02dca7953a9719fb38fa2 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 的情况。

迭代幂运算示例

让我们评估 tex_a5f6729c6edbc3df5dae3c81efe128b2 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 (读作“2迭代到高度3”):

tex_c3974a6b51c4029486462ba28d7f5c17 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机
tex_38f3272f3cc8a02e84ceed576663756c 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机
因此 tex_a79a23ebbcc28f19e40a7b5604f3e748 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机

迭代幂/重幂运算的通用性质

  • 非交换性:迭代幂运算不是交换的,这意味着 tex_2bb7d37b96ba358da2a2c8024d02fe57 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机
  • 增长速度非常快:迭代幂运算增长非常快。即使是小数也会因为幂运算的快速增长而导致非常大的结果。

迭代幂运算/重幂在基础数学中较少见,但在某些高级数学领域中发挥作用,特别是在涉及极大数的领域,如大数理论和计算机科学中。

用 Python 计算迭代幂运算

以下是两个计算迭代幂运算的Python函数。第一个使用递归,第二个使用迭代。

在两个函数中,我们在开始时添加了对 n = 0 的检查。如果 n 为 0,则函数返回 1,否则继续处理。这种方式使函数能够按照任意数的迭代幂高为0时为1的惯例处理 n=0 的情况。

递归函数计算迭代幂

递归函数:此函数将自己调用,n 的高度递减1,直到达到1,此时返回基数a。这就实现了从上到下构建指数链的效果。

@lru.cache(None)  ## 缓存函数
def tetration_recursive(a, n):
    if n == 0:
        return 1
    if n == 1:
        return a
    return a ** tetration_recursive(a, n - 1)

递归计算迭代幂的函数理论上可以进行尾优化。在尾递归中,递归调用是函数中的最后一个操作,这样某些编译器或解释器可以通过重用相同的堆栈帧来优化调用堆栈的使用。这可以通过消除每个递归调用的额外堆栈帧需求来将空间复杂度降到 O(1)。

然而,当前的递归实现并不是尾递归的,因为递归调用嵌套在一个幂运算中:

return a ** tetration_recursive(a, n - 1)

这里,幂运算依赖于递归调用的结果,所以在完成当前调用之前必须计算出结果,从而阻止了尾递归优化。

迭代函数计算迭代幂

迭代函数:此函数使用 for 循环遍历高度 n,通过在每次迭代中更新幂运算的结果,来从下至上计算结果。

def tetration_iterative(a, n):
    if n == 0:
        return 1
    result = a
    for _ in range(1, n):
        result = a ** result
    return result

迭代幂算法的时间/空间复杂度

Python函数计算迭代幂的时间和空间复杂度取决于其递归或迭代实现。让我们分析两种实现。

递归函数的复杂度

时间复杂度:

  • 每次递归调用都会与之前的调用结果进行一次幂运算。
  • 总共有n-1次递归调用,所以该函数被调用了O(n)次。
  • 然而,像 tex_ad68cb15ab4e6c9d3aa23d421625d67a 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 的幂运算需要 tex_e6c0128be5c7d7501ff5a45664d688da 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 的时间。
  • 因此,对于较大的 n 值,由于幂次的增长,其时间复杂度会呈指数增长。
  • 这导致总的时间复杂度大约为 tex_61a94ff4b35f50421447e762bcc2b21e 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,有n层,这意味着增长速度非常快

空间复杂度:

  • 由于这是一个递归函数,每次调用都需要堆栈空间。
  • 递归的最大深度为 n,所以空间复杂度为 O(n)。
迭代函数的复杂度

时间复杂度:

  • 与递归版本一样,该函数迭代 n – 1 次
  • 每次迭代涉及计算 tex_58c6653dfed174ea991f702adfb3e6f4 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 的幂次,这个结果会呈指数增长。
  • 因此,时间复杂度也成为 tex_61a94ff4b35f50421447e762bcc2b21e 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,有n层,因为每一步都是指数级增长。

空间复杂度:

  • 此迭代版本仅需要少量额外空间用于 result 变量等,因此它的额外空间复杂度为 O(1)。
  • 然而,结果本身可能会变得非常大,如果 a 和 n 很大,可能需要大量内存来存储。

由于反复幂次的快速增长,这两种实现的时间复杂度都非常高,对于较大的值变得不可行。递归版本由于调用堆栈的使用空间复杂度为 O(n),而迭代版本的辅助空间复杂度为 O(1),但仍然需要处理极大数,这可能会间接影响内存使用。

英文:Tetration Operator in Math Simply Explained with Python Algorithms

本文一共 1253 个汉字, 你数一下对不对.
迭代幂运算/重幂的介绍与其Python代码实现. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机
The post 迭代幂运算/重幂的介绍与其Python代码实现 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 英国房子的EPC节能报告(Energe/Efficiency Performance Certificate) EPC (Energe/Efficiency Performance Certificate) 是英国房子的节能报告, 法律上规定, 每个房子都必须要有一个EPC报告, 报告的有效期为十年. 房东在把房子出租或者想卖房的时候, 这个EPC就必须有效, 在一些情况下 比如出租房子的时候, 这个EPC报告还必须符合一些最低标准, 比如房子必须满足 F档(类似及格线)...
  4. 给孩子零花钱培养孩子正确的金钱观价值观 两个娃已经不知不觉7岁8岁了. 媳妇和我商量一下决定给孩子每人每周5英镑的零花钱(Pocket Money). 这样他们慢慢的就有自己的小积蓄备将来不时之需: 比如朋友聚会生日啥的需要准备礼物. 同时, 我们决定不再给孩子买零食(薯片啥的). 孩子一天好几餐, 晚上睡觉前还得吃零食, 我们就多买了很多水果面包, 健康的食物多吃一些总不是啥坏事. 孩子可以用这些零钱买自己想要的东西, 我们也不再过问. 孩子有自己的决定权. 第一周的时候,...
  5. 拔牙后的注意事项(图, 慎入) Care of Mouth after Extraction 昨天又拔了两颗牙, 初步定在5月4号装牙套. 这是牙医诊所给的术后注意事项: 拔完后需要等3-4小时麻醉失效后才能吃喝. 稍微流点血是很正常的. 但是请不要漱口吐出, 因为这会加速流血. 你只要轻轻的含着口水并咽下即可. 如果一直流血, 请拿着纱布(并不是纸巾)放在拔牙处20分钟. 24小时内请不要运动, 术后几小时内回家静静坐着. 12小时内不要吸烟, 喝酒或者喝热饮, 因为这会让伤口流血....
  6. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  7. ChatGPT-4 使用 Math Wolfram 插件解决数学脑筋急转弯问题 这篇文章, 我们看一个简单的数学问题(脑筋急转弯), 并用 Python 解决它. 我们看一下LLM(大型语言模型): ChatGPT3.5和ChatGPT4. 通过 ChatGPT-Plus 订阅(目前每月 20 美元 + VAT增值税), 我们可以启用...
  8. HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....

什么是马太效应?


马太效应是一种社会学和经济学现象,描述了“富者愈富,贫者愈贫”的情况。这个概念来源于《新约圣经·马太福音》中的一句话:“凡有的,还要加给他,使他有余;没有的,连他所有的也要夺去。”因此,“马太效应”这一术语应运而生。

你可能听过这句话:“富者愈富,贫者愈贫” ——这就可以被视为马太效应。

有的人运气好的时候可以一直好运连连,似乎不管做什么都顺风顺水;而有的人一旦遭遇不幸,比如生了场大病,就像是被命运压垮了,接连而来的挫折仿佛永无止境。这种现象其实与我们常说的“马太效应”密切相关——资源和机会越多,往往更容易获得新的机遇,而那些本就处于困境中的人,可能会越发陷入逆境

我们在生活中会经常遇到类似的情形:一部分人似乎总能轻而易举地获得成功,而另一部分人即便努力了也难以改变困境。这不仅仅是运气的问题,还涉及到资源、支持系统,以及社会对个人发展的反馈。有时候,幸运的人往往有更多的支持与资源来化解困难,反之亦然,不幸的人在面临困境时却因为资源稀缺而难以逆转局势。

马太效应在生活的各个领域广泛存在。

经济学

较富有的人通常有更多的资源和机会去进一步积累财富,而贫穷的人由于缺乏资源可能会变得更加贫困。例如,富人有更多的资本去投资和购买资产,从而获得更多回报。

教育

高成就的学生通常能够获得更多的教育资源、教师关注以及成就感,这进一步激励了他们的学习。与此同时,学业上困难的学生可能得不到足够的支持,导致成绩下降

职场

在职场中,表现出色的员工往往能够获得更多的资源、机会和认可,进一步巩固他们的地位。而另一方面,表现普通的员工可能由于缺乏机会而被边缘化。

科学研究

著名科学家的研究成果往往更容易获得认可和引用,进一步提升他们的声誉,而其他研究人员由于缺乏可见性可能难以得到承认。

总结:马太效应

马太效应往往会导致资源和机会的集中化,强化了社会和经济的不平等现象。此现象也凸显了我们需要关注资源分配和教育公平等问题,以减少不平等现象的扩大。

英文:Simply Explained: Matthew Effect

本文一共 784 个汉字, 你数一下对不对.
什么是马太效应?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 什么是马太效应? 学习笔记 有意思的
The post 什么是马太效应? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 在英国给孩子换学校的经历: 孩子离开了村里的小学 由于搬了家, 孩子上学得提前半小时出门了, 因为早上堵, 也得开车半小时才能到. 之前在 Fen Drayton 村庄上小学, 早上8:45学校门开, 9点敲钟孩子排队依次进入教室, 我们由于在村里, 只需要提前5分钟出门和孩子一起走路就可以了. 现在一下子早上变得很匆忙, 得叫孩子起床, 做早饭,...
  4. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  5. 公司请的专业摄影师 公司来了新的CEO管理之后,很多事情都不一样了, 特别是一些公司对外形象的事情就特别的在意, 比如公司网站用上SSL.现在公司还有空闲的位置,请速来(钱多人不傻). 一月份出差回LUTON,刚好公司请来摄影师给高层管理照像放网站上的,于是我也凑了凑热闹(但是却还不够资格被放在公司网站上),不过没关系,放这里也差不多. 人到中年, 沧桑感强了些. 更新更新: 同事用他NB的单反给谢菲尔得办公室的人也拍了一组这样的照片.看起来很不错, 很专业,灯光,道具应有尽有.我已经用在了LINKEDIN页面上,立马高大上. 本文一共 230 个汉字, 你数一下对不对. 公司请的专业摄影师. (AMP...
  6. Leetcode 的在线调试器 最近 leetcode 刷题网站出了一个在线调试器. 个人感觉非常好用. 因为我平时是用 IPAD+蓝牙键盘来刷题, 而在 ipad 上是没有集成的IDE的, 对于调试来说, 只能很原始的让函数退出一个值, 然后尝试不同的输入来发现问题. leetcode在线调试器的好处 理论上来说, 你可以直接在浏览器里解决任何一道...
  7. 在英国开车的简单介绍/英国开车上路需要准备什么? 在英国合法上路需要有: 有效的驾照; MOT 车的年检; 路税 (Road Tax);还有最重要的汽车保险; 四者缺一不可. 千万不要有侥幸心理, 因为警察现在都高科技, 都能扫描车牌就能知道你合不合法. 不合法直接拦下来轻则罚款, 重则扣车上述法庭. 驾照 在英国可以用欧盟的大部分驾照,...
  8. 优化设计 个人主页 并且 PageSpeed Insights 双项 100分 坛子的个人主页 www.tanzhijun.com 不错 很适合个人主页的模板. 而且是手机友好. 于是我照着把 我的主页改了改. https://steakovercooked.com 并且做了几点修改: 0. 使用 google mod_pagespeed 把 JS,...

Docker, 虚拟机 (VM) 和 Kubernetes (K8s)


docker Docker, 虚拟机 (VM) 和 Kubernetes (K8s) 云计算 学习笔记 程序员 计算机 面试

Docker

Docker 与虚拟机(VMs)

概述:Docker和虚拟机(VMs)都用于在隔离的环境中部署和运行应用程序,但它们的实现方式不同。

Docker(容器)

  • 轻量级:容器共享主机的操作系统内核,因此比虚拟机更轻便,启动速度更快。
  • 隔离:Docker 提供进程级别的隔离,意味着多个容器可以在同一个操作系统实例上运行而不会相互干扰。
  • 高效性:由于容器共享操作系统,只需打包应用程序及其依赖项,因此使用的资源更少。

虚拟机(VMs)

  • 重量级:每个虚拟机包含一个完整的操作系统实例和虚拟化硬件,因此消耗更多的资源。
  • 隔离:虚拟机提供完全的隔离,每个虚拟机拥有自己的操作系统,这样更安全但效率较低。
  • 使用场景:虚拟机适用于在同一主机上运行多种操作系统类型,是需要完全操作系统级别隔离的传统应用程序的理想选择。

总结:Docker 容器更高效且部署更快,而虚拟机提供更强的隔离,更适合多样化的操作系统需求。

什么是 Kubernetes(K8s)?

概述:Kubernetes(K8s)是一个开源平台,用于自动化容器化应用程序的部署、扩展和管理。

主要特性:

  • 编排:Kubernetes 管理跨多个主机的容器集群,处理如扩展、网络和容错等任务。
  • 自愈能力:它自动重启失败的容器,并在节点失败时重新调度,确保高可用性。
  • 可扩展性:K8s 可以根据需求自动扩展应用程序,添加或移除容器。
  • 使用场景:Kubernetes 非常适合在大规模上管理复杂的分布式应用程序,是微服务架构的热门选择。

简而言之,这篇文章展示了 Docker、虚拟机和 Kubernetes 的技术差异和实际应用,这是系统设计和云原生环境中至关重要的内容。

英文:Docker, Virtual Machines (VMs) and Kubernetes (K8s)

本文一共 555 个汉字, 你数一下对不对.
Docker, 虚拟机 (VM) 和 Kubernetes (K8s). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c Docker, 虚拟机 (VM) 和 Kubernetes (K8s) 云计算 学习笔记 程序员 计算机 面试
The post Docker, 虚拟机 (VM) 和 Kubernetes (K8s) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 真正意义上的鼓励优秀作品 – 优秀被错过文章 有奖励啦! 大家都知道我的日报第一项就是 《那些优秀可能被错过的文章》这个算法是通过我自己的认识选出一些比较 好的文章 但是收益却比较低, 那么, 通过 @dailychina 天天回复, 比如: 对于作者来说, 除了心理得到表扬之外 并没啥卵用, 是吧. 而且有些作者经常上榜啊, 于是,...
  3. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  4. 在英国给孩子换学校的经历: 孩子离开了村里的小学 由于搬了家, 孩子上学得提前半小时出门了, 因为早上堵, 也得开车半小时才能到. 之前在 Fen Drayton 村庄上小学, 早上8:45学校门开, 9点敲钟孩子排队依次进入教室, 我们由于在村里, 只需要提前5分钟出门和孩子一起走路就可以了. 现在一下子早上变得很匆忙, 得叫孩子起床, 做早饭,...
  5. 英国房子的EPC节能报告(Energe/Efficiency Performance Certificate) EPC (Energe/Efficiency Performance Certificate) 是英国房子的节能报告, 法律上规定, 每个房子都必须要有一个EPC报告, 报告的有效期为十年. 房东在把房子出租或者想卖房的时候, 这个EPC就必须有效, 在一些情况下 比如出租房子的时候, 这个EPC报告还必须符合一些最低标准, 比如房子必须满足 F档(类似及格线)...
  6. 使用AWK来看见证人生成块的速度 每次见证人出块, 媳妇总我说 “又生了”. 每次出块我总会去算一下离上次出块多少时间, 这是可以通过当前块数和上次出块数算出来的. 首先, 我们可以通过 docker logs 来显示很多很多的记录: 有一个脚本 ./run.sh logs是显示最近几条记录 (tail) 我们可以通过管道...
  7. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  8. 公司请的专业摄影师 公司来了新的CEO管理之后,很多事情都不一样了, 特别是一些公司对外形象的事情就特别的在意, 比如公司网站用上SSL.现在公司还有空闲的位置,请速来(钱多人不傻). 一月份出差回LUTON,刚好公司请来摄影师给高层管理照像放网站上的,于是我也凑了凑热闹(但是却还不够资格被放在公司网站上),不过没关系,放这里也差不多. 人到中年, 沧桑感强了些. 更新更新: 同事用他NB的单反给谢菲尔得办公室的人也拍了一组这样的照片.看起来很不错, 很专业,灯光,道具应有尽有.我已经用在了LINKEDIN页面上,立马高大上. 本文一共 230 个汉字, 你数一下对不对. 公司请的专业摄影师. (AMP...

软件工程师面试: TCP/IP协议是什么?


最近,在面试第一轮抖音(字节跳动)的伦敦职位(Site Reliability Engineer),被问到了这个问题:TCP/IP协议是什么?这个是考基本功,是每个软件工程师都要会的。

TCP/IP(传输控制协议/互联网协议)是一组网络协议,管理数据如何通过互联网和其他网络传输。它是互联网的基本通信模型,由两个主要层组成:

互联网协议 (IP)

IP 负责将数据包从源地址路由到目标地址。它工作在 OSI 模型的网络层。

  • IP 地址:互联网中的每个设备都被分配了一个唯一的 IP 地址,用于标识数据包的发送者和接收者。
  • 数据包路由:IP 将数据分成多个包,并通过不同的网络将其路由到目标地址。
  • 版本:IP 主要有两个版本:IPv4(32位地址)和 IPv6(128位地址)。

传输控制协议 (TCP)

TCP 负责确保设备之间数据传输的可靠性。它工作在 OSI 模型的传输层。

  • 面向连接:TCP 在传输数据之前会在发送方和接收方之间建立连接。
  • 数据完整性:TCP 通过确认、序列号和错误检查等机制,确保数据包按顺序无误地到达。
  • 流量控制:TCP 通过滑动窗口管理数据流,防止接收方超载。

TCP/IP 协同工作原理

  • 应用数据:应用层将数据(例如网页、电子邮件)发送到传输层(TCP)。
  • TCP 层:TCP 将数据分段,添加序列号和错误检查信息,并将其发送到 IP 层。
  • IP 层:IP 层将 TCP 段封装成 IP 包,附上源和目标 IP 地址,并通过各种网络路由数据包。
  • 接收端:在目标设备上,IP 层将数据包交给 TCP,TCP 重新排列并验证数据的完整性,然后将其传递给应用层。

TCP/IP 套件中的其他协议

  • UDP(用户数据报协议):一种无连接、速度更快的 TCP 替代方案,常用于视频流、在线游戏等实时通信。
  • HTTP/HTTPS(超文本传输协议):用于网络通信的应用层协议。
  • DNS(域名系统):将域名解析为 IP 地址。

TCP/IP 确保数据在网络间高效传输,保持可靠性、地址分配和路由,同时遵循互联网的基本通信原则。

TCP/IP 通常被描述为一个四层模型,但有时它可以与 OSI 模型(七层)进行比较。

tcp-ip-and-osi-model 软件工程师面试: TCP/IP协议是什么? 学习笔记 程序员 计算机 计算机 软件工程 面试

TCP/IP 4层协议和OSI的7层协议的比较

TCP/IP 四层模型

TCP/IP 模型简化为四层,旨在反映协议在现实网络中的工作方式。

应用层

这一层对应于 OSI 模型的前三层(应用层、表示层和会话层)。它包括 HTTP、HTTPS、FTP、DNS 和 SMTP 等协议。

传输层

负责设备之间的可靠通信。运行于这一层的协议包括 TCP(传输控制协议)和 UDP(用户数据报协议)。

互联网层

处理跨网络的数据包路由,类似于 OSI 的网络层。该层包含 IP(互联网协议),用于地址分配和数据包路由。

网络接口层(或链路层)

这一层负责物理网络(如以太网、Wi-Fi)和互联网层之间的数据传输。它对应于 OSI 的数据链路层和物理层。

OSI 七层模型

OSI(开放系统互联)模型更加细致,将网络功能分为七个层次。

  • 物理层(如电缆、交换机)
  • 数据链路层(如 MAC 地址、以太网)
  • 网络层(如 IP 路由)
  • 传输层(如 TCP、UDP)
  • 会话层(如管理应用之间的会话)
  • 表示层(如加密、数据格式转换)
  • 应用层(如 HTTP、FTP)

主要区别:TCP/IP vs OSI

TCP/IP 将一些功能合并为更少的层次(四层),反映了它在互联网通信中的实际应用。

OSI 是一个更加详细的概念模型(七层),主要用于教学和理论理解。

总结来说,TCP/IP 通常被认为是四层模型,而 OSI 模型则是七层模型。

英文:What is TCP/IP (4 Layer vs OSI 7 Layer)?

面试经历

面试题

面试技巧

面试其它

本文一共 1009 个汉字, 你数一下对不对.
软件工程师面试: TCP/IP协议是什么?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 软件工程师面试: TCP/IP协议是什么? 学习笔记 程序员 计算机 计算机 软件工程 面试
The post 软件工程师面试: TCP/IP协议是什么? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 孩子喜欢的 cozmo 机器人 小儿子今年刚过5岁生日, 问他要啥生日礼物, 他说想要 cozmo 机器人. 我们都不知道这是啥, AMAZON一搜还不便宜, 均价200多到300多英镑都有. 估计是孩子在学校的时候知道的这机器人. 在AMAZON下了单, 很快就到了. 图像识别算法很厉害. 这机器人很厉害, 不需要告诉它, 它可以自己玩,...
  3. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  4. 这些年在英国开过的车 这个车是真的汽车,从2010/2011年开始学驾照,到2012年考过驾照(两次才过),到现在也有十几年的驾龄了,真的算老司机了。 现在开的是两辆车(第四和第五),分别是奥迪Q5和保时捷卡宴。目前每周加保时捷的油费大概是50英镑。 第一辆 Seat Ibiza 第一辆:在英国的第一辆小黄车 Seat Ibiza (西亚特·伊比飒) 离合很重,男人开的车,当时用来练手,最后面到谢菲而得/Sheffield因为住在市中心不太需要车,就给卖了。 第二辆 奥迪AUDI A6 这辆开了有近十年,当时从谢菲搬家到剑桥Cambourne大剑宝就是开得这车。开了近10年的奥迪A6卖给了车厂(内含开车成本) 我当时买的时候是7000左右,然后买来修了修又多花了1000多英镑,...
  5. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  6. Win10右键添加管理员权限.reg 保存以下为 *.reg 文件 双击 Windows Registry Editor Version 5.00 @="获取管理员权限" "NoWorkingDirectory"="" @="cmd.exe /c takeown /f...
  7. 老婆的配偶签证被拒 郁闷死了, 601镑签证费打水漂,一去不回!费钱费力. 去年12月份我请了律师拿到了永居.老婆是T1G签证的陪工签 (DEPENDENT VISA) 2016年4月份到期. 然后我就想说得趁早把她的签证转成配偶签(SPOUSE)这样她就可以尽快走五年永居的路线. 今天收到拒签信,原因是我没有提供 有工资进帐的那份银行帐单,我提供了我和我老婆的联名帐户, 但是工资并不是直接打到这个帐单上的.所以就这一点被拒了.完全不给解释,不给补材料的机会.601镑就这样再见了. 英国的签证寄出之后是先由另一个部门先收费, 收完费才正式审理,而且不管结果如何是不退钱的.后悔没让律师弄,也不至于到现在浪费这么多时间和金钱,签证还没过.由于原签证还没到期,所以还不能上述.估计只能等搬完家后年底请律师搞定这事. 真是郁闷, 600镑, 我可以再买一个IPHONE6,或者给我的新买的车换四个轮胎....
  8. 公司给配了台高配DELL笔记本 早上例会结束的时候我顺便说了一句 我的笔记本有点慢, 当时我并不知道我的经理远程用电话也参加会议了(他全程在听), senior staff SE 对着电话说, “peter, you hear that? btw, my disks are...

C/C++ 中的内存管理器(堆与栈)


最近面试的时候遇到这个问题。这个问题考你计算机的基本功。

在 C/C++ 中,内存管理是控制程序如何分配和管理其资源的关键方面。C/C++ 程序中的内存通常分为不同的区域:堆栈和堆是最主要的动态和自动内存分配区域。

ACM题解系列之 – 最小堆栈 (Min Stack)

stack C/C++ 中的内存管理器(堆与栈) 学习笔记 技术 程序员 程序设计 编程 计算机 软件工程 面试

Stack 栈

堆栈内存

  • 定义:堆栈内存用于静态(自动)内存分配。它是存储函数参数、本地变量和返回地址的地方。当调用一个函数时,一个新的内存块(称为堆栈帧)会被添加到堆栈的顶部。当函数返回时,该内存会被自动释放。
  • 分配:内存由系统自动管理——在变量超出作用域时自动分配和释放。无需人工干预。
  • 生命周期:受限于函数或代码块的作用域。一旦函数退出,内存将被释放。
  • 大小限制:堆栈的大小通常较小并由系统预定义,意味着大的分配可能导致堆栈溢出。
  • 访问速度:由于其后进先出(LIFO)的结构,堆栈内存访问速度更快。由于内存是连续的且可预测的,它允许快速访问。
  • 使用场景:局部变量、函数调用信息和固定大小的对象(数组、结构体)。

堆内存

  • 定义:堆内存用于动态内存分配,程序员使用 C 中的 malloc()、calloc()、free() 和 C++ 中的 new、delete 手动分配和释放内存。
  • 分配:内存在运行时分配,并且分配的生命周期由程序员手动控制。它可以持续存在,直到显式释放。
  • 生命周期:堆分配的对象的生命周期不受作用域的限制。内存将一直被使用,直到被释放为止。
  • 大小限制:堆通常比堆栈大,但取决于系统资源。不当处理可能导致内存泄漏(忘记释放分配的内存)或碎片化(内存使用效率低)。
  • 访问速度:堆内存的访问速度比堆栈慢,因为分配是分散的,动态分配涉及更多的开销。
  • 使用场景:如链表、等大数据结构,或在运行时确定大小的对象。

堆与栈的主要区别

特征 堆栈
内存大小 通常较小,预定义 通常较大,受系统资源限制
分配 自动,由编译器管理 手动,由程序员管理(使用 new、malloc 等)
释放 自动(函数退出时) 手动(使用 delete、free 等)
生命周期 限于函数/代码块作用域 可以持续,直到显式释放
速度 较快(连续内存) 较慢(分散内存,开销更大)
风险 堆栈溢出(如果超出大小限制) 内存泄漏和碎片化

堆栈分配示例

void function() {
    int x = 10; // 分配在堆栈上
} // x 会自动释放

堆分配示例

void function() {
    int* p = new int; // 分配在堆上
    *p = 10;
    delete p; // 必须手动释放
}

正确管理堆内存在 C/C++ 中非常重要,因为它可能导致与内存相关的错误,如内存泄漏或重复释放。理解堆和堆栈内存之间的差异有助于优化程序的性能和可靠性。

英文:The Memory Manager in C/C++ (Heap vs Stack)

面试经历

面试题

面试技巧

面试其它

本文一共 874 个汉字, 你数一下对不对.
C/C++ 中的内存管理器(堆与栈). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C/C++ 中的内存管理器(堆与栈) 学习笔记 技术 程序员 程序设计 编程 计算机 软件工程 面试
The post C/C++ 中的内存管理器(堆与栈) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. Javascript 中 sleep 函数实现 Javascript 中并没有 built-in 的 sleep 函数支持, 在 async/await/Promise 的支持之前, 我们可以用 busy-waiting 的方式来模拟: 1 2 3...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 《Steem 指南》之 justyy 在线工具与 API 系列 – 同时给多个帐号发送SBD或者STEEM 同时给多个帐号发送SBD或者STEEM STEEMIT 和 BUSY 的前端都有一个内置的钱包工具, 您可以一次给一个帐号发送 SBD 或者 STEEM. 当我们要给很多很多人发送钱的时候, 就显得有些不方便了. 这时候可以用这个在线工具: https://steemyy.com/wallet-tool/ 填写表单 只需要填上你的ID,...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. 拔牙后的注意事项(图, 慎入) Care of Mouth after Extraction 昨天又拔了两颗牙, 初步定在5月4号装牙套. 这是牙医诊所给的术后注意事项: 拔完后需要等3-4小时麻醉失效后才能吃喝. 稍微流点血是很正常的. 但是请不要漱口吐出, 因为这会加速流血. 你只要轻轻的含着口水并咽下即可. 如果一直流血, 请拿着纱布(并不是纸巾)放在拔牙处20分钟. 24小时内请不要运动, 术后几小时内回家静静坐着. 12小时内不要吸烟, 喝酒或者喝热饮, 因为这会让伤口流血....
  6. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  7. 最简单有效的过滤WordPress垃圾评论的方法 当你的Wordpress博客流量大的时候, 不免会收到很多垃圾评论. 本文介绍一种特别简单而且免费的过滤Wordpress垃圾评论的方法. 这种方法不需要你安装任何插件, 也不需要拥有修改Wordpress主题模板函数的能力, 只需要1分钟就可以搞定. 把这个列表拷贝下来 打开 WordPress 的控制面版, 到设置-讨论 拷贝上面的列表到 “评论审核” 或者 “评论黑名单”...
  8. 更改全站的评论名称 坛子给我建议说: 我觉得很有道理,但是别人网站上的留言我改不了, 自己的还是可以先改改的. 于是,我登陆 phpmyadmin (一个网页式的php mysql 管理平台) 然后输入以下命令: update `wp_comments` set `wp_comment_author` = 'JustYY.com...

[限免] Coursera Plus免费订阅一年,快冲!

作者 Justin
2024年9月30日 09:29

今天通过墨西哥 VPN 注册的用户可免费获得一年Coursera Plus会员,享受7,000多门课程的无限访问。该促销活动有时间限制,只需在注册过程中使用VPN,完成后可正常使用。需注意,在订阅结束前取消以避免收费。

[限免] Coursera Plus免费订阅一年,快冲!最先出现在Justin写字的地方

软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么?


我认为这无疑是最受欢迎的软件工程师的(Software Engineer) 面试问题 之一。最近有人说这个问题曾出现在 抖音Tiktok 的面试中。

要回答面试中的“当你在浏览器中输入 https://www.google.com 时会发生什么?”这个问题,可以按步骤详细说明整个过程,涉及 DNS 查找、TCP/SSL 握手、请求处理和页面渲染。以下是全面的解释:

URL 解析

当你输入 URL https://www.google.com 并按下回车时:

  • 协议:浏览器识别出协议是 https,意味着它将使用 HTTP 加密传输(TLS)。
  • 主机:浏览器识别出 www.google.com 是域名。
  • 路径:默认路径是 /,因为没有提供具体路径,表示请求主页。

DNS 查找

浏览器需要将域名 www.google.com 转换为一个 IP 地址。这个过程分为几个步骤:

  • 浏览器缓存:浏览器 首先检查自己的缓存,看看是否已有 www.google.com 的 IP 地址。
  • 操作系统缓存:如果未找到,浏览器会向操作系统请求缓存。
  • 路由器缓存:如果操作系统没有该 IP,路由器会检查它的缓存。
  • ISP DNS 服务器:如果依然未找到,路由器会查询 ISP 的 DNS 服务器。
  • 递归 DNS 查找:如果 ISP 没有缓存 IP,DNS 服务器会递归查询 DNS 层次结构(根 DNS 服务器、顶级域名服务器、权威 DNS 服务器)。最终,www.google.com 的 IP 地址被解析出来(例如,142.250.72.196)。

建立 TCP 连接

知道 IP 地址后,浏览器需要与 Google 服务器建立连接,使用以下步骤:

TCP 三次握手:

  • SYN:客户端(浏览器)向服务器发送 SYN(同步)包,启动连接。
  • SYN-ACK:服务器响应 SYN-ACK(同步确认)包。
  • ACK:客户端发送 ACK 包,连接建立。

SSL/TLS 握手(针对 HTTPS)

由于使用的是 HTTPS,浏览器与服务器通过 SSL/TLS 建立加密连接:

  • 浏览器与服务器协商加密协议(TLS 版本)并交换加密密钥。
  • 服务器发送其 SSL 证书,浏览器验证该证书以确保服务器身份。
  • 生成会话密钥,用于加密接下来的通信。

HTTP 请求

建立安全连接后,浏览器向服务器发送 HTTP GET 请求:

  • 方法:GET
  • 请求头:包括浏览器类型、cookies 和缓存信息。
  • 主机:www.google.com
  • 路径:/

服务器处理

Google 的服务器位于 负载均衡器 后面,接收请求:

请求可能会通过多个反向代理和负载均衡器处理,通常分布在多个数据中心,以确保可用性和性能

Google 的 Web 服务器处理请求,检查所请求的资源(Google 的主页),并准备响应。

HTTP 响应

服务器返回一个 HTTP 200 OK 响应,并将必要的 HTML、CSS、JavaScript 和其他资源发送到浏览器。

响应包括响应头(如 Content-Type、Cache-Control)以及响应体(Google 主页的 HTML 内容)。

浏览器渲染

浏览器现在获取了 HTML 并开始渲染页面:

  • HTML 解析:浏览器解析 HTML 以构建 DOM(文档对象模型)。
  • CSS 解析:下载并应用任何链接或嵌入的 CSS 样式表以设置 DOM 元素的样式。
  • JavaScript 执行:下载并执行 JavaScript。JavaScript 可能进一步修改 DOM 或发送额外的网络请求(如 AJAX)以动态更新页面。
  • 渲染:浏览器的渲染引擎将解析和样式化的内容绘制到屏幕上,形成可见的网页。

附加资源请求

当浏览器解析 HTML 时,它会识别出额外的资源(图片、样式表、JavaScript 文件)需要加载:

这些资源通过额外的 HTTP/HTTPS 请求获取。这个过程会通过多个并行连接重复进行,以 快速下载和渲染资源。

浏览器缓存与优化

浏览器会根据缓存头(如 Cache-Control、ETag)缓存某些资源(图片、脚本、样式表)。

现代浏览器使用诸如 HTTP/2 多路复用等优化技术,通过单个 TCP 连接下载多个资源,从而减少延迟。

最终页面显示

一旦所有资源下载、解析和渲染完成,用户可以与完全加载的页面进行交互。进一步的用户操作(点击、输入等)可能会触发更多的网络请求(如提交表单、AJAX 更新)。

加分点

  • CDN(内容分发网络):Google 使用 CDN 从地理位置较近的服务器提供内容,减少延迟并提高加载速度。
  • 安全功能:HSTS(HTTP 严格传输安全)确保所有请求都通过 HTTPS 进行。Google 的证书绑定技术确保服务器的 SSL 证书未被篡改。
  • Service Workers:如果启用,Service Worker 可能会拦截请求,提供缓存响应或启用离线功能。

这份详细的说明涵盖了从用户输入 URL 到浏览器最终渲染页面的所有关键步骤,涉及 DNS、TCP/IP、TLS、HTTP 和浏览器渲染等内容,适合系统设计或软件工程面试。

英文:Software Engineering Interview Question: What Happens When You Type Google.com in the Browser Address Bar?

面试经历

面试题

面试技巧

面试其它

本文一共 1423 个汉字, 你数一下对不对.
软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么? 学习笔记 程序员 计算机 资讯 软件工程 面试
The post 软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 软件工程师面试: TCP/IP协议是什么? 最近,在面试第一轮抖音(字节跳动)的伦敦职位(Site Reliability Engineer),被问到了这个问题:TCP/IP协议是什么?这个是考基本功,是每个软件工程师都要会的。 TCP/IP(传输控制协议/互联网协议)是一组网络协议,管理数据如何通过互联网和其他网络传输。它是互联网的基本通信模型,由两个主要层组成: 互联网协议 (IP) IP 负责将数据包从源地址路由到目标地址。它工作在 OSI 模型的网络层。 IP 地址:互联网中的每个设备都被分配了一个唯一的 IP 地址,用于标识数据包的发送者和接收者。 数据包路由:IP...
  2. Meta的Enterprise Engineer企业工程师是什么? 和软件工程师的区别 我最近收到了一封来自 Meta 招聘人员的邀请邮件,关于 Meta 伦敦的员工企业工程师职位(Staff Enterprise Engineer): Meta 的企业工程师是什么? Meta 的企业工程师专注于设计、开发和维护内部工具和系统,以帮助公司员工提高生产力和效率。与传统的软件工程师角色相比,这一角色更偏向于内部,主要专注于为企业级需求构建基础设施、应用程序和自动化解决方案。以下是该职位的职责概述: 主要职责 内部工具和基础设施开发:企业工程师构建支持 Meta 内部业务运营的工具,例如...
  3. 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
  4. 新的旅途 – 离别总是伤感的, 离开了一起创业的公司 2周前, 正式离开了一起创业的公司, 这公司是我博士毕业后的第一份正式工作, 待了8年多了, 离别总是伤感的. 我是9月初提的离职, 三个月 Notice Period, 最后的几周交接完工作确实没有什么压力了. 11月30号, 在公司最后一天, 公司有个习惯, 对于 Good...
  5. Minuet in C – 小步舞曲C Posted Youtube – 油管地址 孩子弹琴的时候最帅了. 我现在成了我儿子的粉丝了. Eric (Aged 6) is playing “Minuet in C” when...
  6. 上了年纪痛风脚崴了的惨痛经历(尿酸过高) 痛风是一种疼痛性关节炎, 当血液中的尿酸水平高, 导致晶体形成并积聚在关节内或关节周围, 就会发生痛风. 当人体分解一种叫做嘌呤的化学物质时, 就会产生尿酸. 嘌呤自然存在于您的身体中, 也存在于某些食物中. 尿酸通过尿液从体内排出. 上两周, 和媳妇吵架, 然后就自己一人睡, 有一天起床后脚踝就开始疼了, 然后明显比左脚肿了. 我刚开始就以为是睡觉的时候不小心姿势不对,...
  7. 优衣库 感觉像炒作 这几天 这个在北京三里屯 ‘优衣库’ 试衣间自拍的视频真的很火, 男女主角均被人肉. 不可否认 这个效果还真的不错 因为我之前根本不知道 “优衣库” 是干嘛的 很刺激 在试衣间XXOO是多么爽的事情 女主角 95后妹子 长相甜美....
  8. RMB人民币数字转大写汉字 – Javascript工具 Javascript工具RMB人民币数字转大写汉字 源码: https://justyy.com/js/atoc.js 最多只能计算15位, 小数点支持2位(毛和分). 最后一位分为0时, 需要加上’整’. 而且还需要在万亿,亿,万,元位等关键位0的位置写上’零’. 例如: 325.04 写成人民币 ‘叁佰贰拾伍元零肆分’ 人民币金额用到的中文大写汉字如下: 零~壹~贰~叁~肆~伍~陆~柒~捌~玖~拾~佰~仟~万~亿 壹佰贰拾壹万叁仟肆佰壹拾贰元整...

Excel 教程: SUMIF函数


SUMIF函数在Excel中用于对满足特定条件的范围内的值进行求和。以下是基本语法:

=SUMIF(range, criteria, [sum_range])

range: 要应用条件的单元格范围。
criteria: 必须满足的条件。可以是数字、表达式、单元格引用或文本。
sum_range (可选): 如果与range不同,指定要求和的单元格范围。如果不提供sum_range,Excel将对range中的值进行求和。

示例:
你有一个销售列表,想要只对销售额大于100的进行求和。

A	B
商品	销售额
苹果	150
香蕉	80
橙子	200

你可以使用以下公式对大于100的销售额进行求和:

=SUMIF(B2:B4, ">100")

这将返回350(150 + 200)。

使用sum_range:
如果条件在一列,而要求和的值在另一列,例如:

A	B	C
商品	销售额	价格
苹果	150	2.50
香蕉	80	1.00
橙子	200	3.00

你想对销售额大于100的价格进行求和,可以使用以下公式:

=SUMIF(B2:B4, ">100", C2:C4)

这将对苹果和橙子的价格求和(2.50 + 3.00 = 5.50)。

英文:Excel Tutorial: SUMIF Function

Excel教程

本文一共 240 个汉字, 你数一下对不对.
Excel 教程: SUMIF函数. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c Excel 教程: SUMIF函数 Excel 表格 学习笔记
The post Excel 教程: SUMIF函数 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 深度体验: OneKey虚拟货币出金卡(美元黑卡) 出金/变现的几种方法 出金:也叫Cash out/变现,一般把虚拟货币(如比特币BTC或以太坊ETH)变成法币的方式就叫出金。一般有几种方法: P2P:也叫线下,最直白的方式就是私下一手交钱/法币,一手交币。大型交易所都会有一个P2P的交易,比如币安和HTX火币都有。之前localbitcoin也是这种方式,可惜在2023年倒闭了。我曾经在微信上卖了几十个STEEM,当时是几美元一个的时候。一手交人民币,一手交STEEM币。这种P2P私下的方式不受监管,但是要互相信任。可以当面交易这样减少风险:见个面喝个茶,就把交易做成了。 变成法币:之前我用过Coinbase直接卖成英镑,然后通过发到Paypal再提现到英国银行帐号上变成实实在在在的英镑,不过这一趟下来,手续费不低,就当学费了。 直接花掉:我个人比较喜欢这种方式,有几种Crypto Visa/Master银行卡,可以把虚拟货币卖成法币然后购物花掉。大部分是需要有一个卖币成法币的过程,也有少部分是实时转换虚拟货币成法币,当然基本上是稳定币:USDC, USDT泰达币等。 在英国,想把虚拟货币出金,可以用几种选择: Wirex:支持波场U,支持各种Defi产品,比如定期30天存USDT可以达16%年利率,世界好多国家都支持Wirex卡,上次去塞尔维亚就刷了一次,不过发现汇率并不划算(有5%-10%的差别)。Wirex提现费用较高,不过转换成法币汇率较好。Wirex在乌克兰有个开发办公室。 Crypto.com:这家总部好像在香港,也是不错的,去年的时候它家的DEFI利率挺高,但后来越来越少,直接分成三档/Tier,有次无意和Wirex比较,发现它家USDT转英镑的利率比Wirex低多了,于是不怎么用了。Crypto.com也是需要先把币变成法币。 Crypto Ledger:这是家做硬件钱包的,最近一两年搞了这个产品,它家是直接刷稳定币,也就是消费的时候再兑换虚拟币成法币,有一个2%的费用,不过选择它家平台代币BXX就可以拿回这2%的返现/cashback,相当于不花钱。选择USDT或者BTC返现只有1%。它家的卡是支持加入Apple Pay的,所以可以用在线下支持,日常买菜吃饭都可以出金,很是方便。 OneKey:本文接下来要讲的。...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  4. 面经: Python 的 List 和 Dictionary 有啥区别? 问题: Python 的 List 和 Dictionary 有啥区别? 不许查资料, 你怎么回答这个面试题? 我不加思索的回答到: List 就像数组一样 而 Dictionary 是...
  5. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  6. 比较好的SQL插入语法 SQL语法中用INSERT来向一个表格里插入数据, 比如一个表 table 有四列 A, B, C 和D 你就可以使用: insert into table (`A`, `B`, `C`,...
  7. 人到中年 去年老婆生孩子,把一个月的假期都用在照顾老婆做月子,所以就没有时间回国.今年7月14号回了趟国,到9月9号才回英国, 有两个月在中国.感觉发生了很多事情.特别是刚回到英国的时候,感觉很陌生又熟悉. 先简单总结一下我这次的行程吧,很多事情,有很多朋友却无法一一相见,请见谅,因为孩子还太小,有些时候没法很洒脱的去见朋友. 7-15 伦敦->北京 英国出发的时间是 14号, 到了北京是15号(时差) 从 Sheffield 出发, 先是打的到火车站(其实也就5分钟,但是行李很多),坐上从 Sheffield 到 London...
  8. 一年的信用卡消费 换来 180英镑点卷 去年11月份申请了 这张AMEX信用卡, 一黑一白, 黑的是America Express, 白的是VISA卡. 并不是所有的商店都支持 America Express, 整体来说 VISA支持的更多 几乎英国刷卡的地方都支持VISA卡. 刷黑卡一镑钱能得2点积分, 刷白卡能得1点积分. 养家不容易啊,...

计算复杂性理论中的P, NP, NP Hard和NP完全问题


P-and-NP-problems-diagram 计算复杂性理论中的P, NP, NP Hard和NP完全问题 学习笔记 数学 算法 计算机 计算机

计算机算法理论复杂度分析:P和NP问题

P、NP、NP-hard 和 NP-complete 是计算复杂性理论中的关键概念,用于描述不同类型的计算问题以及它们的求解难度。

P 类问题

P 类问题是指多项式时间内可以通过确定性算法解决的问题。这意味着,给定一个输入,问题可以在有限的步骤内得到解决,且步骤的数量是输入大小的多项式函数。换句话说,P 类问题的求解效率较高。例如,最短路径问题和排序问题都是 P 类问题。

NP 类问题

NP(Non-deterministic Polynomial time)类问题是指能够在多项式时间内验证解是否正确的问题。换句话说,虽然找到问题的解可能比较难,但一旦给出了解,我们可以在多项式时间内验证它是否正确。一个典型的 NP 问题是旅行商问题:找出某个城市之间的最短旅行路径可能很复杂,但给定一条路径,我们可以快速验证它是否满足要求。

NP-complete 问题

NP-complete 问题是 NP 类问题中的一种特殊类型。这类问题满足以下两个条件:

  • 它是 NP 类问题,意味着给定解后可以在多项式时间内验证其正确性。
  • 它是 NP 类问题中最难的问题,也就是说,如果我们能够找到某个 NP-complete 问题的多项式时间求解算法,那么所有 NP 问题都可以通过多项式时间内解决。

经典的 NP-complete 问题包括布尔可满足性问题(SAT)和哈密顿路径问题。

NP-hard 问题

NP-hard 问题是比 NP 类问题更难的一类问题。这类问题不一定属于 NP 类,即它们的解不一定能够在多项式时间内验证。例如,NP-hard 问题可以是一些更为广泛的问题(如优化问题),或者一些根本无法在多项式时间内验证解的准确性的问题。如果一个 NP-hard 问题有多项式时间的解法,那么所有 NP 问题都可以在多项式时间内解决。

P = NP 问题

计算机科学中最大的未解问题之一是P 是否等于 NP。如果 P = NP,那就意味着所有 NP 类问题实际上都可以在多项式时间内解决。然而,目前还没有证明这个命题是否成立。

O(N!)/O(2^N)算法是P还是NP?

如果一个算法的时间复杂度是 O(N!) 或 O(2^N),它不属于 P(多项式时间)算法。以下是原因:

P(多项式时间)P 类问题可以在多项式时间内解决,即它们的时间复杂度是输入规模的某个多项式函数,例如 O(N)、O(N^2) 等。与非多项式函数相比,这些增长相对较慢。

O(N!)(阶乘时间)和 O(2^N)(指数时间)的增长速度远远快于任何多项式函数。O(N!) 增长非常快,其中 N! 是 N 的阶乘。

O(2^N) 是指数增长,随着 N 的增加,它也会变得不可计算。

由于这些复杂度比任何多项式函数的增长速度要快得多,具有这些时间复杂度的算法不属于 P 类。

它是 NP 吗?

要判断这样的算法是否属于 NP,重要的是要理解 NP 并不指问题的求解时间,而是指一旦给出解后,验证解是否正确的时间。

如果某个问题的时间复杂度为 O(N!) 或 O(2^N),它可能属于 NP,也可能不属于,这取决于给出解后能否在多项式时间内验证。如果可以在多项式时间内验证解,那么这个问题可能属于 NP 类,尽管求解非常困难。

O(N!) 或 O(2^N) 不属于 P 类,因为求解该问题所需的时间增长速度太快,无法视为“高效”。

它是否属于 NP 取决于解能否在多项式时间内验证。如果验证过程是多项式时间的,那么该问题属于 NP 类,但并不是所有 O(N!) 或 O(2^N) 问题都在 NP 中。

总结

  • P 类问题:可以在多项式时间内求解的问题。
  • NP 类问题:解可以在多项式时间内验证的问题。
  • NP-complete 问题:最难的 NP 问题,能够解决它就能解决所有 NP 问题。
  • NP-hard 问题:不一定属于 NP 类,但至少和 NP-complete 问题一样难。

这个分类系统帮助我们理解各种问题的计算复杂性以及它们之间的关系。

英文:P versus NP problem (NP Complete, NP Hard)

本文一共 1177 个汉字, 你数一下对不对.
计算复杂性理论中的P, NP, NP Hard和NP完全问题. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 计算复杂性理论中的P, NP, NP Hard和NP完全问题 学习笔记 数学 算法 计算机 计算机
The post 计算复杂性理论中的P, NP, NP Hard和NP完全问题 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. SteemIt 高级定制微信文章列表 RSS/API/阅读器 v2.0 The Advanced Wechat Group Posts Feed/API/Reader v2.0 Abstract: I have added five parameters to the...
  4. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  5. 在英国带孩子去露营全攻略 之前就做了一些露营的准备工作, 因为大儿子Eric 很兴奋说是要去 Camping Holiday 估计是在 Papa Pig 里看到的. 英国有很多可以露营的地方, 最后面选了一个离家开车1个多小时. 看了评论还不错. 地址为: New Road,...
  6. 在英国开车的简单介绍/英国开车上路需要准备什么? 在英国合法上路需要有: 有效的驾照; MOT 车的年检; 路税 (Road Tax);还有最重要的汽车保险; 四者缺一不可. 千万不要有侥幸心理, 因为警察现在都高科技, 都能扫描车牌就能知道你合不合法. 不合法直接拦下来轻则罚款, 重则扣车上述法庭. 驾照 在英国可以用欧盟的大部分驾照,...
  7. LOGO 海龟作画 系列三 递归画一个国际象棋棋盘 今天我们要来讲一讲递归. 递归就是函数自己调用自己, 我们可以定义一个过程, 然后这只海龟不停的画, 结束的时候再调用自身再继续画. 再次调用的时候参数变化了, 至到参数满足一定的条件则停止. 比如 下面定义的这个过程可以用来画一个实现的正方形. TO FK :B IF :B>15 ;...
  8. 老婆的配偶签证被拒 郁闷死了, 601镑签证费打水漂,一去不回!费钱费力. 去年12月份我请了律师拿到了永居.老婆是T1G签证的陪工签 (DEPENDENT VISA) 2016年4月份到期. 然后我就想说得趁早把她的签证转成配偶签(SPOUSE)这样她就可以尽快走五年永居的路线. 今天收到拒签信,原因是我没有提供 有工资进帐的那份银行帐单,我提供了我和我老婆的联名帐户, 但是工资并不是直接打到这个帐单上的.所以就这一点被拒了.完全不给解释,不给补材料的机会.601镑就这样再见了. 英国的签证寄出之后是先由另一个部门先收费, 收完费才正式审理,而且不管结果如何是不退钱的.后悔没让律师弄,也不至于到现在浪费这么多时间和金钱,签证还没过.由于原签证还没到期,所以还不能上述.估计只能等搬完家后年底请律师搞定这事. 真是郁闷, 600镑, 我可以再买一个IPHONE6,或者给我的新买的车换四个轮胎....

C++的 map 当键(Key)不存在的时候会发生什么?


面试流程(例如筛选)的早期阶段,一位 Google 招聘人员曾向我问过这个问题。

在C++中,当你使用std::map访问一个不存在的键时,行为取决于你是如何访问它的。

使用下标操作符 [] 访问时

如果键不存在,std::map 会默认插入一个该键的元素,并为其赋值为类型的默认值。比如,如果 map 的值类型是 int,那么它会插入该键并赋值为 0。

例子:

std::map<int, int> myMap;
int value = myMap[10]; // 如果键10不存在,会插入myMap[10] = 0

使用 at() 方法访问时

如果键不存在,at() 会抛出 std::out_of_range 异常。

例子:

std::map<int, int> myMap;
try {
    int value = myMap.at(10); // 如果键10不存在,会抛出异常
} catch (const std::out_of_range& e) {
    std::cout << "Key not found!" << std::endl;
}

使用 find() 方法

find() 方法不会修改 map,它返回一个迭代器。如果键不存在,它会返回 map.end()。

例子:

std::map<int, int> myMap;
auto it = myMap.find(10);
if (it == myMap.end()) {
    std::cout << "Key not found!" << std::endl;
} else {
    std::cout << "Value: " << it->second << std::endl;
}

C++ std::map 和 std::unordered_map的比较

std::unordered_map 处理不存在的键与 std::map 类似,但有一些差异,主要是因为它们内部的数据结构不同。

map 和 unordered_map 的区别:

  • 顺序:std::map 是有序的(内部实现为平衡树),所以元素会按键的顺序排列。而 std::unordered_map 是无序的,使用哈希表存储元素,因此没有特定的顺序。
  • 性能:std::unordered_map 通常有更快的平均访问时间(由于哈希结构,平均时间复杂度为 O(1)),而 std::map 的访问时间复杂度为 O(log n),因为其内部实现为树结构。然而,如果发生大量哈希冲突,unordered_map 在最坏情况下的时间复杂度可能是 O(n)。

总的来说,std::unordered_map 和 std::map 在处理不存在的键时,对于 []、at() 和 find() 的行为相似,但它们在顺序和性能方面存在差异。

总结

  • 使用 [] 访问时,如果键不存在,map 会插入一个新元素并赋予默认值。
  • 使用 at() 访问时,如果键不存在,会抛出异常。
  • 使用 find() 可以检查键是否存在,而不会修改 map。

英文:C++: Access a Non-existent Key in std::map or std::unordered_map

面试经历

面试题

面试技巧

面试其它

本文一共 473 个汉字, 你数一下对不对.
C++的 map 当键(Key)不存在的时候会发生什么?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++的 map 当键(Key)不存在的时候会发生什么? ACM题解 学习笔记 小技巧 技术 数据结构与算法 程序设计 编程 资讯 软件工程
The post C++的 map 当键(Key)不存在的时候会发生什么? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  2. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  3. Javascript 中 sleep 函数实现 Javascript 中并没有 built-in 的 sleep 函数支持, 在 async/await/Promise 的支持之前, 我们可以用 busy-waiting 的方式来模拟: 1 2 3...
  4. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  5. 《Steem 指南》之 justyy 在线工具与 API 系列 – 同时给多个帐号发送SBD或者STEEM 同时给多个帐号发送SBD或者STEEM STEEMIT 和 BUSY 的前端都有一个内置的钱包工具, 您可以一次给一个帐号发送 SBD 或者 STEEM. 当我们要给很多很多人发送钱的时候, 就显得有些不方便了. 这时候可以用这个在线工具: https://steemyy.com/wallet-tool/ 填写表单 只需要填上你的ID,...
  6. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  7. 试用 Linkedin (领英) 高级帐号 (Premium) Linkedin (领英) 算是比较靠谱的职业社交网站, 在上面有很多猎头, 很多知名公司的HR 无时无刻在招人. 特别领英在被微软收购之后, 名气就变得大了许多. 领英是免费使用的, 但也有付费用户, 有给猎头的, 也有给想找工作的. 价格并不便宜, 对于想找工作的 Job...
  8. 最简单有效的过滤WordPress垃圾评论的方法 当你的Wordpress博客流量大的时候, 不免会收到很多垃圾评论. 本文介绍一种特别简单而且免费的过滤Wordpress垃圾评论的方法. 这种方法不需要你安装任何插件, 也不需要拥有修改Wordpress主题模板函数的能力, 只需要1分钟就可以搞定. 把这个列表拷贝下来 打开 WordPress 的控制面版, 到设置-讨论 拷贝上面的列表到 “评论审核” 或者 “评论黑名单”...

RSS简单科普

作者 Justin
2024年9月9日 09:26

RSS是一种基于XML的内容发布和订阅格式,用于在互联网上分享和同步网站内容。用户可通过RSS阅读器订阅网站的最新内容,从而在一个界面中查看多个网站的更新。尽管其主流性已降低,但RSS仍然在信息自主选择和隐私保护方面展现独特价值,为用户提供高效的信息获取方式。

RSS简单科普最先出现在Justin写字的地方

❌
❌