【Bash 编程】Tests And Conditionals
与没有条件分支的线性脚本相比,带有条件分支的脚本更加广泛且多用途,就像游戏与书籍的线性叙述相比具有多用途一样。那么,为什么我们需要条件语句呢?我们需要他们编写能够动态处理不同情况的脚本,并根据情况改变其运行方式。让我们从一个非常简单的条件开始,以帮助我们正确地开始新的一天:
1 | $ read -p "Would you like some breakfast? [y/n] " |
与没有条件分支的线性脚本相比,带有条件分支的脚本更加广泛且多用途,就像游戏与书籍的线性叙述相比具有多用途一样。那么,为什么我们需要条件语句呢?我们需要他们编写能够动态处理不同情况的脚本,并根据情况改变其运行方式。让我们从一个非常简单的条件开始,以帮助我们正确地开始新的一天:
1 | $ read -p "Would you like some breakfast? [y/n] " |
假设我们要删除目录中的文件Downloads。根据我们迄今为止收集的知识,我们可以查看其中有哪些文件并删除它们:
1 | $ cd ~/Downloads |
bash shell 是一个二进制程序,可以交互式或非交互式运行,通常在终端仿真器程序提供的基于文本的界面中运行。
当您从图形用户界面启动终端仿真器程序时,您将看到一个打开的窗口,其中包含文本。此窗口中显示的文本既是终端中运行的程序的输出,也是您使用键盘等发送到这些程序的字符。bash 程序只是可以在终端中运行的众多程序之一,因此请务必注意,bash 并不是使文本出现在屏幕上的原因。终端程序会处理这个问题,从 bash 中获取文本并将其放置在窗口中供您查看。终端可以对终端中运行的其他与 bash 完全无关的程序执行相同的操作,例如邮件程序或 IRC 客户端。
边缘计算是一种即将到来的计算方法,指的是一系列更接近用户的计算机网络和设备。边缘计算就是通过将数据存储在更靠近用户位置的位置来处理用户生成的数据。这确保了数据处理快速进行,从而确保大数据块得到无缝处理。这进一步帮助组织更快地做出决策。边缘计算技术的一些用例包括自动驾驶汽车、自动化零售店、机器人和智能设备。
用创造性的方式来说,边缘计算技术帮助组织让数字世界中的事物出现在物理世界中。从商业角度来说,这意味着即使是最小的企业(例如实体公司)也可以利用在线数据和算法的力量,帮助他们为客户提供更好的体验。边缘计算有助于创建智能系统,帮助员工从这些系统中学习。如果我们观察的话,边缘计算存在于所有这些场景中。边缘计算技术通过实时数据处理帮助企业精确可靠地运行应用程序。
Kubernetes 是一个分布式系统,容易出现多种故障。对于组织而言,拥有高度可用的 Kubernetes 对于提供良好的客户体验至关重要。如果发生意外中断,如果您的集群在一个或多个组件发生故障的情况下无法继续运行,则停机可能会导致收入损失、声誉问题等。
通过在 Kubernetes 中实施 HA,可以降低停机风险,集群上运行的应用程序和服务仍然可供用户访问,并且系统可以快速从故障中恢复,无需人工干预。在较高级别上,这可以通过部署控制平面组件的多个副本以及跨越多个可用区或区域的网络拓扑来实现。
Kubernetes(简称:k8s) 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理 / 虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的 workflows 和更高级的自动化任务。
Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。
Kubernetes是一个分布式服务,所有从架构上可以为Control Plane(Master) Node 和Worker Node,这也是分布式架构的主要特点。
昨天我在处理项目时我尝试使用 git pull
命令从远程分支中拉取更改的内容,但最终报错:"fatal: Need to specify how to reconcile divergent branches"
, 这阻碍了我的工作。我决定写一篇关于这个问题的文章,以便它也能帮助你们。
如果您使用 Git
,那么在尝试从远程存储库执行 git pull 时出现此错误并不罕见。虽然大多数时候您会看到"fatal: Need to specify how to reconcile divergent branches"
警告,但有时您会看到它是致命错误。如果错误显示为警告,那么您仍然可以从存储库中提取更改,但如果它显示为致命错误,那么您将无法继续进行。
1 | $ git pull origin main |
简而言之,容器是计算机的沙盒进程,与主机上的所有其他进程隔离,这种隔离利用了内核命名空间和cgroup
,这些功能在linux
中已经存在很长时间了。Docker
正是利用了这些能力。总而言之,容器包括以下这些能力:
Docker API
或CLI
创建、启动、停止、移动或删除容器。运行容器时,它使用隔离的文件系统。该自定义文件系统由容器镜像提供。由于镜像包含容器的文件系统,因此它必须包含运行应用程序所需的所有内容-所有依赖项、配置、脚本、二进制文件等。镜像还包含容器的其它配置,例如环境变量、要运行的默认命令和其它元数据。
Docker
git
客户端Visual Studio Code
Rust
的编译速度和跨平台编译相比 Go
语言就要难用很多,但这也是语言特点,当你从中受益时,必然要付出一些代价,本文主要介绍如何实现跨平台编译,使用 cross
这个工具。
我的工作台是 Mac M2
,想编译出 Linux
和 Windows
的可执行文件,使用的代码很简单,就是 Hello World
示例程序,这个不是重点。
使用 cross
首先当然是安装,按照官方的描述,可以使用下面的命令:
1 | cargo install cross --git https://github.com/cross-rs/cross |
然后是安装 docker
或者 podman
,本文以 docker
为例,讲述使用过程中遇到的问题及其解决方案。cross
的使用很简单,例如,如果我要编译 target
为 aarch64-unknown-linux-gnu
,执行:
1 | cross build --target aarch64-unknown-linux-gnu |