计算机基础
Wei Jieyang Lv4

计算机发展

专用计算机:凯撒密码徽章,算盘

1946:宾夕法尼亚研究的第一台电子计算机

求 pai

密码学:

Linux

一般来说著名的linux系统基本上分两大类:

  1. RedHat系列:Redhat、Centos、Fedora等
  2. Debian系列:Debian、Ubuntu等

RedHat 系列

  • 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”
  • 包管理工具 yum (阿里云服务器)
  • 支持tar包

Debian系列

  • 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”
  • 包管理工具 apt-get
  • 支持tar包

包管理

tar 只是一种压缩文件格式,所以,它只是把文件压缩打包而已。
rpm 相当于windows中的安装文件,它会自动处理软件包之间的依赖关系。
优缺点来说,rpm一般都是预先编译好的文件,它可能已经绑定到某种CPU或者发行版上面了。
tar一般包括编译脚本,你可以在你的环境下编译,所以具有通用性。
如果你的包不想开放源代码,你可以制作成rpm,如果开源,用tar更方便了。
tar一般都是源码打包的软件,需要自己解包,然后进行安装三部曲,./configure, make, make install. 来安装软件。

rpm是redhat公司的一种软件包管理机制,直接通过rpm命令进行安装删除等操作,最大的优点是自己内部自动处理了各种软件包可能的依赖关系。

文件

二进制编辑器:file info

Bmp:位图文件,没有压缩的原始文件

  • jpg:是压缩之后的
  • 文件前缀是BM(424d),可以用二进编辑器打开
  • 格式:(找到文档规范就能找到)
    • 源信息:BM 文件大小 空字节 … 宽 高 …
    • 数据信息

文件类型:

  • 私有文件,不能对外交换信息
  • 通用数据格式文件
    • 找到数据规范,就可以解析这个文件
    • 去掉文件头,别人就打不开了
    • bmp,jpg,mp3等

vim -b filename

:!xxde

分布式系统

dapp:完全分布式的

中心服务器,单点故障

混合架构:查询/目录服务器

完全分布式的:种子

  • 共享文件
  • 种子会记录那些人的电脑里会有这些文件,
    • 雷达:主动搜索资源
    • 种子:定向下载资源
  • 发布种子的人的网络地址,和发布的人对文件分片的每一篇的uri
  • 唯一的uri标示一个唯一的资源,但可能很多个机器里都有
    • bt://202.103.5.8:8909/asdas:00
    • bt://202.103.5.8:8909/asdas:01
  • 种子主要解决第一次连接的问题,一旦第一个连接了,就能知道还有其他那些可以连了
  • BT很特殊,不仅有ip等还有文件资源

广播:树/图/线/双向链/交叉链等

  • 线性:可控性强,效率低
  • 非结构化的:可控性差
  • 结构化:基于hash,树的之类的

软件开发

术语

CLI:Command-Line interface - 命令行界面

GUI:Graphical User Interface - 用户图形界面

SDK

Software Development Kit - 软件开发工具包

  • 辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。

API

  • 我把软件A里你需要的功能打包好,写成一个函数。你按照我说的流程,把这个函数放在软件B里,就能直接用我的功能了!
  • 软件A -> 配置环境 -> 构建函数 -> 安装jar包 -> 软件B中使用

如果把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API。

软件管理

Docker

  • 一个开源的应用容器引擎,基于 Go 语言并遵从Apache2.0协议开源。
  • 可以让开发者将应用和依赖包打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  • 容器完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 App),更重要的是容器性能开销极低。

Docker 包括三个基本概念:

  • 镜像(Image):相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。比如说nginx,mysql,redis等软件可以做成一个镜像。
  • 容器(Container):容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):一个代码控制中心,用来保存镜像。DockerHub 是一个由 Docker 公司运行和管理的基于云的存储库。它是一个在线存储库,Docker 镜像可以由其他用户发布和使用。有两种库:公共存储库和私有存储库。如果你是一家公司,你可以在你自己的组织内拥有一个私有存储库,而公共镜像可以被任何人使用。

刚开始使用,尽可能的会使用,了解其解决什么痛点,随着我们使用的深入,逐步了解其原理和结构是如何实现的。

安装

  1. 使用Homebrew - for Mac

    1
    2
    3
    4
    5
    6
    # Homebrew v2.x
    $ brew cask install --appdir="/Applications" docker
    # Homebrew v3.x:
    $ brew install --cask --appdir="/Applications" docker
    # open it
    $ open /Applications/Docker.app
  2. 官方下载Docker Desktop for Mac

  3. 镜像下载dmg文件

    1
    http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/

版本查看

镜像加速

docker镜像在国外,为了后续下载加速,配置文件将镜像换成国内的

  • /etc/docker/daemon.json文件中配置或者如下图所示在软件中配置
  • {"registry-mirrors":["https://reg-mirror.qiniu.com/"]}(可以在网上查找其他国内镜像源)
截屏2021-03-07 下午9.55.31

镜像源是否成功替换:

1
2
3
$ docker info
Registry Mirrors:
https://reg-mirror.qiniu.com/

操作

镜像操作

  1. login
  1. pull
  1. push

容器操作

  1. 启动容器
1
$ docker run
  1. 在运行的容器中执行命令
1
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • OPTION
    • –privilege:给命令加附加特权
    • -d:分离模式: 在后台运行
    • -i:即使没有附加也保持STDIN 打开
    • -t:分配一个伪终端
    • -e:设置环境变量
  • COMMAND:将在容器的默认目录中运行。
    • 如果底层映像的Dockerfile中有一个使用WORKDIR指令指定的自定义目录,则将使用该目录。

Homebrew

Mac OS下的强大的软件包管理工具

下载

1
$ brew install name
  • 默认下载到目录 /usr/local/Cellar/
1
2
$ brew tap name
$ brew install name
  • brew tap可以为brew的软件的 跟踪,更新,安装添加更多的的tap formulae
  • 如果你在核心仓库没有找到你需要的软件,那么你就需要安装第三方的仓库去安装你需要的软件
  • tap命令的仓库源默认来至于Github,但是这个命令也不限制于这一个地方
1
$ brew update

操作

1
$ brew --version   #版本查看

加速

  • 因为brew的镜像在国外,所以使用时下载更新速率都十分的缓慢

  • 故可以将镜像源修改成国内的(下面为清华镜像

  • 更换:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ cd /usr/local/Homebrew

    $ git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

    $ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

    $ git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git

    $ brew update
  • 复原:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ cd /usr/local/Homebrew

    $ git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew.git

    $ git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core.git

    $ git -C "$(brew --repo homebrew/cask)" remote set-url origin https://github.com/Homebrew/homebrew-cask.git
    # 2.5之后没有cask,下面的不一定要执行
    ----------------------------
    $ git -C "$(brew --repo homebrew/cask-fonts)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-fonts.git
    $ git -C "$(brew --repo homebrew/cask-drivers)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-drivers.git
    $ git -C "$(brew --repo homebrew/cask-versions)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-versions.git
    ----------------------------
    $ brew update-reset
    # 更换上游后需重新设置 git 仓库 HEAD:

apt-get

Linux下的包管理工具

1
$ apt-get install <package>

yum

1
$ yum install -y <package, 支持*>
  • 参数
    • -y: 如果使用yum install xxxx,会找到安装包之后,询问你Is this OK[y/d/N],需要你手动进行选择。但是如果加上参数-y,就会自动选择y,不需要你再手动选择
  • 默认安装路径:/usr/lib/
1
$ yum remove <package, 支持*>

cURL

是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。

1
$ curl https://www.example.com
  • 上面命令向www.example.com发出 GET 请求,服务器返回的内容会在命令行输出。

参数

-o

将服务器的回应保存成文件,等同于wget命令。

1
$ curl -o example.html https://www.example.com
  • 上面命令将www.example.com保存成example.html

-O

将服务器回应保存成文件,并将 URL 的最后部分当作文件名。

1
$ curl -O https://www.example.com/foo/bar.html
  • 上面命令将将服务器的回应保存成文件,文件名为bar.html

-s

参数将不输出错误和进度信息。

1
$ curl -s https://www.example.com
  • 上面命令一旦发生错误,不会显示错误信息。不发生错误的话,会正常显示运行结果。

  • 如果想让 curl 不产生任何输出,可以使用下面的命令。

1
$ curl -s -o /dev/null https://google.com

-S

参数指定只输出错误信息,通常与-s一起使用。

1
$ curl -s -o /dev/null https://google.com
  • 此处有错

-L

参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。

1
$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet

隐私保护

零知识证明

  • 证明知道答案,但却不泄漏答案的内容
  • 阿里巴巴的洞

安全多方计算技术

  • 无可信任第三方的情况下,安全地完成计算任务
  • 应用:门限签名、电子拍卖等

共享数据上链及存证

共享数据授权和使用

同态加密

可信硬件

  • Post title:计算机基础
  • Post author:Wei Jieyang
  • Create time:2020-12-23 09:18:40
  • Post link:https://jieyang-wei.github.io/2020/12/23/计算机基础/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.