漫谈由标准输入\输出\错误输出引发的思考
标准输入|输出|错误输出
在Unix\Linux体系中,一个进程通常自带有标准输入、标准输出、标准错误输出等三个文件描述符。
如果从对称的观点来看,它确实长的有点奇怪,但它背后隐藏了什么样的知识和道理呢?
从图灵机模型谈起
以前谈到现在计算机背后的理论结构是图灵机,而图灵机模型仅需要左右两边的纸带,其实可以直接对应输入和输出。
那么多出来的标准错误输出是做什么的呢?
从程序的运行期输出结构谈起
我们知道,一个程序在运行期不携带日志系统通常是无法想象的,但是,一般程序又有自己的输出数据,而日志信息是明显有区别于这些输出协议数据。
这个在Unix\Linux体系中典型程序ssh中,明显区分了标准错误输出和标准输出的不同,以利于运行期信息和数据的分别输出,见ssh的scp模式。
# 甚至可以日通过管道组合命令,避免scp过程中间文件的形成
ssh user@remotehost 'cat > remotefile' < localfile
ssh user@remotehost 'cat remotefile' > localfile
另外,特别在Shell编程中,经常通过管道或者IO重定向组合拼接命令。如果命令运行过程中,出现某些提示或错误信息,可以能够标准错误输出对应的控制台或终端,及时展现将是非常方便的。
它山之石
通过阅读一些网络E文,感觉Unix\Linux体系特别地具有标准输出错误文件描述符,可能来自传统实践,和shell编程上的便利。
我们通常也可以看到,如果程序的标准输出也是日志信息的情况下,在日志收集的时间,采用1>log.txt 2>&1 or &>log.txt的命令语法,将标准输出和错误输出都指向相同的目的。
谈谈普适图灵机
在一系列图灵机中,有一类的图灵机具有普适的特点,我们称其为普适图灵机。
这类图灵机的核心就是可以将其它图灵机的控制转移函数作为自己的输入,然后再去模拟那个图灵机的行为。
如果从学习的观点来看,这其实就相当于学习过程,增强了个人能力,所以,才能普适。
如果从递归的观点来看,这其实就相当于无穷套娃的能力。需要指出的是,在可计算性理论模型上,图灵机理论与递归理论被认为是等价的计算模型。
不严格地说明,普适图灵机正是展现了递归特点,图灵机的图灵机。
特别思考
可计算模型界定的问题是什么是可计算,和什么是不可计算。
可计算模型中计算的涵义,与我们通常认为的计算有细微的区分,但都包括我们普通意义上的计算。
可认为可计算模型中的计算,是计算的尽头;它之外是不可计算!
某些特殊命令
某些特殊命令,不单单从命令参数接受参数,也可以从标准输入接受参数,但,例如,cat和md5sum只能从标准输入传入字符串参数,则需要here document和here string技术。
cat << _EOF_
<html>
...
</html>
_EOF_cat <<< 'Hello world'
md5sum <<< 'aaa'
对比来看,tar命令明显地区分了标准输入参数和标准输出参数时的涵义。特别地,tar命令通过’-'符号来约定指明。
- 可以看到’-'符号并不专门指代标准输入或标准输出,而是命令的一种处理约定
If you use ‘-’ as an archive-name, tar reads the archive from standard input (when listing or extracting files),
or writes it to standard output (when creating an archive).
If you use ‘-’ as an archive-name when modifying an archive, tar reads the original archive from its standard input and writes the entire new archive to its standard output.
参考
- Tar对于’-'符号作为标准输入和输出的约定处理
相关文章:
漫谈由标准输入\输出\错误输出引发的思考
标准输入|输出|错误输出 在Unix\Linux体系中,一个进程通常自带有标准输入、标准输出、标准错误输出等三个文件描述符。 如果从对称的观点来看,它确实长的有点奇怪,但它背后隐藏了什么样的知识和道理呢? 从图灵机模型谈起 以前…...
利用 IDEA 快速管理 k8s 集群
简介 前置条件: minikube 已安装,JetBrains k8s 官方插件已安装,Helm 已安装,kubectl 已安装 打开插件面板 检查可执行文件 添加配置文件 添加集群 验证...
【自然语言处理】实验三:新冠病毒的FAQ问答系统
目录 前言 1.新建data_process.py 1.1导入包并定义功能模块1用来读取问题和答案FAQ的文件 1.2功能模块2:进行问题/问题列表处理(正则化,分词) 1.3功能模块3:处理输入的问题 1.4功能模块4:计算输入问题与问题…...
「C++系列」文件和流
【人工智能教程】,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站:【人工智能教程】 文章目录 一、文件和流1. 文件操作① 打开文件② 读写文件 2. 流操作 二、应…...
视频美颜SDK核心功能解析:打造高效直播美颜工具方案详解
随着直播行业的迅猛发展,用户对于直播画质和个人形象的要求越来越高。视频美颜SDK作为一项关键技术,已经成为各大直播平台和短视频应用的重要组成部分。通过实时美颜技术,用户能够在直播过程中呈现出更加理想的形象,从而提升直播体…...
深入解析:高性能 SSE 服务器的设计与实现
在当今的实时 Web 应用中,服务器发送事件(Server-Sent Events,SSE)技术扮演着越来越重要的角色。今天,我们将深入探讨一个用 Go 语言实现的高性能 SSE 服务器的设计和实现细节。这个服务器不仅能够处理大量并发连接&am…...
C#为任意组件开发登录功能的记录
非常简单,直接给出代码: 数据库操作类 这个无需多言就是简单的包含了数据操作的内容,允许你在这一个类中写完关于本地数据库或者云数据库操作的逻辑,与登录逻辑分开哦。 注意,如果你的软件要给别人运行使用…...
AI免费UI页面生成
https://v0.dev/chat v0 - UI设计 cursor - 编写代码 参考:https://www.youtube.com/watch?vIyIVvAu1KZ4 界面和claude类似,右侧展示效果和代码 https://pagen.so/...
2024新动态:低代码开发占领新常态市场
随着技术的不断进步和数字化转型的加速,企业对于快速开发和部署应用程序的需求日益增长。2024年,低代码开发平台已经成为新常态市场的重要力量,它通过简化应用程序的开发过程,让非技术背景的业务用户也能参与到软件开发中来&#…...
【SQL 用大白话描述事务并发 可能会遇到的问题】及解决策略
在SQL数据库中,当多个事务同时进行时,可能会出现并发事务问题。这些问题通常包括以下几种: 首先,我们要清楚一点,这些问题都是与事务的四大特性之一的隔离性有关。并且通常发生在并发事务场景中。 脏读(Dirty Read): 脏读发生在一个事务读取了另一个事务未提交的数据。…...
nginx安装及vue项目部署
安装及简单配置 在usr/local下建好nginx文件夹,下载好nginx-1.26.2.tar.gz压缩文件.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel pcre-devel gcc、gcc-c # 主要用来进行编译相关使用 openssl、ope…...
第十三周:机器学习笔记
第十三周周报 摘要Abstract一、机器学习——Transformer(上)1. Sequence to Sequence(Seq 2 Seq,序列到序列模型) 的应用2. Transformer的结构2.1 Transformer encoder(Transformer 编码器) 二、Pytorch学习1. 网络模型…...
HarmonyOS学习(十三)——数据管理(二) 关系型数据库
文章目录 1、基本概念2、运行机制3、默认配置与限制4、接口说明5、实战:开发“账本”5.1、创建RdbStore5.2、创建数据库5.3、增加数据5.4、删除数据5.5、修改数据5.6、查询数据5.7、备份数据库5.8、恢复数据库5.9、删除数据库 官方文档地址: 通过关系型…...
【工具变量】科技金融试点城市DID数据集(2000-2023年)
时间跨度:2000-2023年数据范围:286个地级市包含指标: year city treat post DID(treat*post) 样例数据: 包含内容: 全部内容下载链接: 参考文献-pdf格式:https://…...
import torch import torchIllegal instruction的可能解决方法
It is numpy 1.19.5 issue. You can fix it by installing previous minor version. pip3 install numpy1.19.4 参考自:Illegal instruction (core dumped) - Jetson & Embedded Systems / Jetson TX2 - NVIDIA Developer Forums...
[SDX35+WCN6856]SDX35 + WCN6856 WiFi导致系统crash问题分析及解决方案
SDX35 SDX35介绍 SDX35设备是一种多模调制解调器芯片,支持 4G/5G sub-6 技术。它是一个4nm芯片专为实现卓越的性能和能效而设计。它包括一个 1.9 GHz Cortex-A7 应用处理器。 SDX35主要特性 ■ 3GPP Rel. 17 with 5G Reduced Capability (RedCap) support. Backward compati…...
力扣题解2376
大家好,欢迎来到无限大的频道。 今日继续给大家带来力扣题解。 题目描述(困难): 统计特殊整数 如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 。 给你一个 正 整数 n ,请你返回区间 …...
浅谈计算机视觉的学习路径1
计算机视觉(Computer Vision, CV)是人工智能领域的一个重要分支,它的目标是使计算机能够像人类一样理解和处理图像和视频数据。 面向想要从事该方向的大学生,笔者这里给出以下是关于计算机视觉的学习路径建议: 简要了解…...
VScode C语言中文乱码问题解决
🎉 前言 省流:这不是正经的教学,纯属是作者弱智操作导致的乱码问题,绝不是是什么配置原因导致的。 🎉 问题描述 贴一下我写的C语言代码(太久没写了,最近学数据结构才拾起来) #in…...
安全基础学习-AES128加密算法
前言 AES(Advanced Encryption Standard)是对称加密算法的一个标准,主要用于保护电子数据的安全。AES 支持128、192、和256位密钥长度,其中AES-128是最常用的一种,它使用128位(16字节)的密钥进…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
