
计算机发展
专用计算机:凯撒密码徽章,算盘
1946:宾夕法尼亚研究的第一台电子计算机
求 pai
密码学:
Linux
一般来说著名的linux系统基本上分两大类:
- RedHat系列:Redhat、Centos、Fedora等
- 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 镜像可以由其他用户发布和使用。有两种库:公共存储库和私有存储库。如果你是一家公司,你可以在你自己的组织内拥有一个私有存储库,而公共镜像可以被任何人使用。
刚开始使用,尽可能的会使用,了解其解决什么痛点,随着我们使用的深入,逐步了解其原理和结构是如何实现的。
安装
使用Homebrew - for Mac
1
2
3
4
5
6Homebrew v2.x
brew cask install --appdir="/Applications" docker
Homebrew v3.x:
brew install --cask --appdir="/Applications" docker
open it
open /Applications/Docker.app官方下载Docker Desktop for Mac
镜像下载dmg文件
1
http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/
版本查看
镜像加速
docker镜像在国外,为了后续下载加速,配置文件将镜像换成国内的
- 在
/etc/docker/daemon.json
文件中配置或者如下图所示在软件中配置 {"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
(可以在网上查找其他国内镜像源)

镜像源是否成功替换:
1 | docker info |
操作
镜像操作
- login
- pull
- push
容器操作
- 启动容器
1 | docker run |
- 在运行的容器中执行命令
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 | brew tap name |
brew tap
可以为brew
的软件的 跟踪,更新,安装添加更多的的tap formulae
- 如果你在核心仓库没有找到你需要的软件,那么你就需要安装第三方的仓库去安装你需要的软件
tap
命令的仓库源默认来至于Github
,但是这个命令也不限制于这一个地方
1 | brew update |
操作
1 | brew --version #版本查看 |
加速
因为brew的镜像在国外,所以使用时下载更新速率都十分的缓慢
故可以将镜像源修改成国内的(下面为清华镜像)
更换:
1
2
3
4
5
6
7
8
9cd /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
15cd /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.