计算机基础知识总结:线程、linux、Docker、网络协议

【一】深度学习中常用的Linux命令汇总

1.man:man command,可以查看某个命令的帮助文档,按q退出帮助文档
2.cd:用于切换目录,cd - 可以在最近两次目录之间来回切换
3.touch:touch file创建文件。
4.ls:ls -lh可以列出当前目录下文件的详细信息。
5.pwd:pwd命令以绝对路径的方式显示用户当前的工作目录
6.cat:cat file显示文件内容。
7.mkdir:mkdir dir可以创建一个目录;mkdir -p dir/xxx/xxx可以递归创建目录。
8.cat:cat file显示文件内容,按q退出。
9.more:more file显示文件内容,按q退出。
10.grep:筛选命令,比如我想查找当前目录下的py文件(ls -lh | grep .py)
11.whereis:可以查找含有制定关键字的文件,如whereis python3
重定向 > 和 >>:Linux 允许将命令执行结果重定向到一个文件,将本应显示在终端上的内容输出/追加到指定文件中。其中>表示输出,会覆盖原有文件;>>表示追加,会将内容追加到已有文件的末尾。
12.cp:cp dst1 dst2复制文件;cp -r dst1 dst2复制文件夹。
13.mv:mv dst1 dst2可以移动文件、目录,也可以给文件或目录重命名。
14.zip:zip file.zip file压缩文件;zip dir.zip -r dir压缩文件夹。
15.unzip:unzip file.zip解压由zip命令压缩的.zip文件。
16.tar:
tar -cvf file.tar dir打包文件夹
tar -xvf file.tar解包
tar -czvf file.tar.gz dir压缩文件夹
tar -zxvf file.tar.gz解压
17.chmod:chmod -R 777 data将整个data文件夹修改为任何人可读写。
18.ps:ps aux列出所有进程的详细信息。
19.kill:kill PID根据PID杀死进程。
20.df:df -h 查看磁盘空间。
21.du:du -h dir查看文件夹大小。
22.top:实时查看系统的运行状态,如 CPU、内存、进程的信息。
23wget:wget url从指定url下载文件。
24.ln:ln -s dst1 dst2建立文件的软链接,类似于windows的快捷方式;ln dst1 dst2建立文件的硬链接。无论哪种链接,dst1都最好使用绝对路径。
25.top:我们可以使用top命令实时的对系统处理器的状态进行监视。
26.apt-get:用于安装,升级和清理包。
27.vim:对文件内容进行编辑。
28.nvidia-smi:对GPU使用情况进行查看。
29.nohup sh test.sh &:程序后台运行且不挂断。
30.find:这个命令用于查找文件,功能强大。find . -name "*.c"表示查找当前目录及其子目录下所有扩展名是.c的文件。

【二】计算机多线程和多进程的区别?

进程和线程的基本概念

进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态的概念,竞争计算机系统资源的基本单位。

线程:是进程的一个执行单元,是进程内的调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。

一个程序至少一个进程,一个进程至少一个线程

线程的意义

每个进程都有自己的地址空间,即进程空间,在网络环境下,一个服务器通常需要接收不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通(系统开销大响应用户请求效率低),因此操作系统中线程概念被引进。线程的执行过程是线性的,尽管中间会发生中断或者暂停,但是进程所拥有的资源只为该线状执行过程服务,一旦发生线程切换,这些资源需要被保护起来。进程分为单线程进程和多线程进程,单线程进程宏观来看也是线性执行过程,微观上只有单一的执行过程。多线程进程宏观是线性的,微观上多个执行操作。

进程和线程的区别

地址空间:同一进程中的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

资源拥有:同一进程内的线程共享进程的资源如内存、I/O、CPU等,但是进程之间的资源是独立的。(一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃可能导致整个进程都死掉。所以多进程比多线程健壮。进程切换时,消耗的资源大、效率差。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。)

执行过程:每个独立的线程都有一个程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。(线程是基于进程的)

线程是处理器调度的基本单元,但进程不是

两者均可并发执行

进程和线程的优缺点

线程执行开销小,但是不利于资源的管理和保护。

进程执行开销大,但是能够很好的进行资源管理和保护。

何时使用多进程,何时使用多线程:

对资源的管理和保护要求高,不限制开销和效率时,使用多进程。(CPU密集型任务)

要求效率高,频繁切换时,资源的保护管理要求不是很高时,使用多线程。(I/O密集型任务)

【三】TCP/IP四层模型的相关概念

TCP/IP四层模型

  1. 应用层:负责各种不同应用之间的协议,如文件传输协议(FTP),远程登陆协议(Telnet),电子邮件协议(SMTP),网络文件服务协议(NFS),网络管理协议(SNMP)等。

  2. 传输层:负责可靠传输的TCP协议、高效传输的UDP协议。

  3. 网络层:负责寻址(准确找到对方设备)的IP,ICMP,ARP,RARP等协议。

  4. 数据链路层:负责将数字信号在物理通道(网线)中准确传输。

四层模型逻辑

发送端是由上至下,把上层来的数据在头部加上各层协议的数据(部首)再下发给下层。

接受端则由下而上,把从下层接收到的数据进行解密和去掉头部的部首后再发送给上层。

层层加密和解密后,应用层最终拿到了需要的数据。

【四】OSI七层模型的相关概念

计算机基础知识总结:线程、linux、Docker、网络协议_第1张图片

【五】Linux中的进程状态种类

  1. 运行(正在运行或在运行队列中等待)
  2. 中断(休眠中,受阻,在等待某个条件的形成或等待接受到信号)
  3. 不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
  4. 僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放)
  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

【六】Linux中ps aux指令与grep指令配合管理进程

ps相关指令

ps命令(Process Status)是最基本同时也是非常强大的进程查看命令。

  • ps a 显示现行终端机下的所有程序,包括其他用户的程序。
  • ps -A 显示所有程序。
  • ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
  • ps -e 此参数的效果和指定"A"参数相同。
  • ps e 列出程序时,显示每个程序所使用的环境变量。
  • ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
  • ps -H 显示树状结构,表示程序间的相互关系。
  • ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
  • ps s 采用程序信号的格式显示程序状况。
  • ps S 列出程序时,包括已中断的子程序资料。
  • ps -t <终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
  • ps u   以用户为主的格式来显示程序状况。
  • ps x   显示所有程序,不以终端机来区分。

ps aux | more 指令

这个指令可以显示进程详细的状态。

参数解释:

  • USER:进程的所有者。
  • PID:进程的ID。
  • PPID:父进程。
  • %CPU:进程占用的CPU百分比。
  • %MEM:进程占用的内存百分比。
  • NI:进程的NICE值,数值越大,表示占用的CPU时间越少。
  • VSZ:该进程使用的虚拟内存量(KB)。
  • RSS:该进程占用的固定内存量(KB)。
  • TTY:该进程在哪个终端上运行,若与终端无关,则显示?。若为pts/0等,则表示由网络连接主机进程。
  • WCHAN:查看当前进程是否在运行,若为-表示正在运行。
  • START:该进程被触发启动时间。
  • TIME:该进程实际使用CPU运行的时间。
  • COMMAND:命令的名称和参数。
  • STAT状态位常见的状态字符:
    D 无法中断的休眠状态(通常 IO 的进程);
    R 正在运行可中在队列中可过行的;
    S 处于休眠状态;
    T 停止或被追踪;
    W 进入内存交换 (从内核2.6开始无效);
    X 死掉的进程 (基本很少見);
    Z 僵尸进程;
    < 优先级高的进程
    N 优先级较低的进程
    L 有些页被锁进内存;
    s 进程的领导者(在它之下有子进程);
    l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);+ 位于后台的进程组;

ps aux | grep xxx命令

如果直接用ps命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

例如我想要查看Python 的所有进程,可以在终端输入如下命令:

ps aux | grep python

便可以把Python相关的进程全部都打印到终端供我们查看。相关参数和之前的ps aux | more一致。

进程结束命令

我们可以使用kill命令来结束进程。

如下面的指令所示:

kill   PID  //杀掉进程
kill  -9 PID //强制杀死进程

【七】Git,GitLab,SVN的相关知识

Git

Git是当前主流的一种开源分布式版本控制系统,可以有效、快速的进行项目版本管理

Git没有中央服务器,不同于SVN这种需要中央服务器的集中式版本控制系统。

Git的功能:版本控制(版本管理,远程仓库,分支协作)

Git的工作流程:

计算机基础知识总结:线程、linux、Docker、网络协议_第2张图片

Git的常用命令:

git init 创建仓库

git clone 克隆github上的项目到本地

git add  添加文件到缓存区

git commit 将缓存区内容添加到仓库中

GitLab

GitLab是一个基于Git实现的在线代码仓库软件,可以基于GitLab搭建一个类似于GitHub的仓库,但是GitLab有完善的管理界面和权限控制,有较高的安全性,可用于企业和学校等场景

SVN

SVN全名Subversion,是一个开源的版本控制系统。不同于Git,SVN是集中式版本控制系统

SVN只有一个集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

SVN的特点是安全,效率,资源共享

SVN的常用操作:

Checkout 检出代码

Update 更新代码

Commit 提交代码

Add 提交新增文件

Revert to this version + commit 撤销已经提交的代码

【八】协程的相关概念

协程(Coroutine,又称微线程)运行在线程之上,更加轻量级,协程并没有增加线程总数,只是在线程的基础之上通过分时复用的方式运行多个协程,大大提高工程效率

协程的特点:

  1. 协程类似于子程序,但执行过程中,协程内部可中断,然后转而执行其他的协程,在适当的时候再返回来接着执行。协程之间的切换不需要涉及任何系统调用或任何阻塞调用。
  2. 协程只在一个线程中执行,发生在用户态上的一个逻辑。并且是协程之间的切换并不是线程切换,而是由程序自身控制,协程相比线程节省线程创建和切换的开销。
  3. 协程中不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。

计算机基础知识总结:线程、linux、Docker、网络协议_第3张图片

协程适用于有大量I/O操作业务的场景,可以到达很好的效果,一是降低了系统内存,二是减少了系统切换开销,因此系统的性能也会提升。

在协程中尽量不要调用阻塞I/O的方法,比如打印,读取文件等,除非改为异步调用的方式,并且协程只有在I/O密集型的任务中才会发挥作用。

【九】Linux系统的相关概念

Linux系统是一种操作系统(Operating System简称OS),它是软件的一部分,是硬件基础上的第一层软件,即硬件和应用软件沟通的桥梁。

Linux系统系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序。Linux系统内核指的是提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。Linux发行套件系统是由 Linux系统内核与各种常用应用软件的集合产品。

在Linux系统中一切都是文件。在linux系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件,Linux系统中的一切文件都是从“根(/)”目录开始的,并按照树形结构来存放文件,且定义了常见目录的用途,文件和目录名称严格区分大小写。

Linux系统的文件目录结构

  • /usr:这是一个非常重要的目录,包含绝大多数的(多)用户工具和应用程序,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /lib:存放着系统开机时会用到的函数库,以及在/bin和/sbin下命令会调用的函数库,几乎所有的应用程序都需要用到这些共享库。
  • /var:存放不断扩充的内容,如经常被修改的目录、文件(包括各种日志文件)等。
  • /boot:存放启动Linux时所需的一些核心文件(linux内核文件),包括一些引导程序文件、链接文件、镜像文件等。
  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,该目录名一般以用户账号命名,包含保存的文件、个人设置等。
  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理命令。
  • /bin:这个存放的是当前用户的系统管理命令(cat、cp、ps等)。
  • /etc:存放所有的系统管理所需的配置文件和子目录(例如人员的帐号密码文件,各种服务的起始文件等)。
  • /tmp:存放一些临时文件,在系统重启时临时文件将被删除。
  • /snap:Ubuntu 16.04及之后版本引入了snap包管理器,与之相关的目录、文件(包括安装文件)位于/snap中。
  • /lost+found:该目录一般情况下是空的,当系统非法关机后会在该目录生成一些遗失的片段。
  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到该目录下。
  • /srv:该目录存放一些服务启动之后需要提取的数据。
  • /root:该目录为系统管理员用户主目录。
  • /opt:该目录存放安装的第三方软件,如Oracle数据库就可以安装到该目录下。
  • /mnt:挂载其他的文件系统(含硬盘分区)的目录。
  • /lib64:类似lib目录,存放64位库文件。
  • /srv:可以视作service的缩写,是一些网络服务启动后,这些服务需要取用的数据目录,常见的服务例如www,ftp等。
  • /proc:这个目录本身是一个虚拟文件系统,它放置的数据都是在内存当中,不占用硬盘的容量。
  • /sys:这个目录其实跟/proc非常的相似,也是一个虚拟的文件系统主要也是记录与内核相关的信息,不占用硬盘容量。
  • /dev:在linux中任何的设备和接口设备都是以文件的形式存在于这个目录当中。你只要到通过访问这个目录下的某个文件就相当于访问某个设备。

Linux系统种类

  • 红帽企业版Linux:RedHat是全世界内使用最广泛的Linux系统。它具有极强的性能与稳定性,是众多生成环境中使用的(收费的)系统。
  • Fedora:由红帽公司发布的桌面版系统套件,用户可以免费体验到最新的技术或工具,这些技术或工具在成熟后会被加入到RedHat系统中,因此Fedora也成为RedHat系统的试验版本。
  • CentOS:通过把RedHat系统重新编译并发布给用户免费使用的Linux系统,具有广泛的使用人群。
  • Deepin:在中国发行,对优秀的开源成品进行集成和配置。
  • Debian:稳定性、安全性强,提供了免费的基础支持,在国外拥有很高的认可度和使用率。
  • Ubuntu:是一款派生自Debian的操作系统,对新款硬件具有极强的兼容能力。Ubuntu与Fedora都是极其出色的Linux桌面系统,而且Ubuntu也可用于服务器领域

【十】Linux系统和Windows系统的区别?

  • Linux系统更稳定且有效率。
  • Linux系统是免费(或少许费用),而Windows系统是商业化主导。
  • Linux系统漏洞少且快速修补。
  • Linux系统支持多用户同时使用计算机。
  • Linux系统有更加安全的用户与文件权限策略。
  • Linux系统可以访问源代码并根据用户的需要修改代码,而Windows系统不能访问源代码。
  • Linux系统更能支持多种深度学习配套软件,但是windows系统能支持大量的视频游戏软件。

【十一】POC验证测试的概念

POC(Proof of Concept),即概念验证。通常是企业进行产品选型时或开展外部实施项目前,进行的一种产品或供应商能力验证工作。主要验证内容:

  1. 产品的功能。产品功能由企业提供,企业可以根据自己的需求提供功能清单,也可以通过与多家供应商交流后,列出自己所需要的功能。
  2. 产品的性能。性能指标也是由企业提供,并建议提供具体性能指标所应用的环境及硬件设备等测试环境要求。
  3. 产品的API适用性。
  4. 产品相关技术文档的规范性、完整性。
  5. 涉及到自定义功能研发的,还需要验证API开放性,供应商实施能力。
  6. 企业资质规模及企业实施案例等。

验证内容归根结底,就是证明企业选择的产品或供应商能够满足企业提出的需求,并且提供的信息准确可靠

POC测试工作的前提:

  1. 前期调研充分,并已经对产品或供应商有了比较深入的沟通了解。
  2. 企业对自己的产品需求比较清晰。

POC测试工作参与者:

使用用户代表、业务负责人、项目负责人、技术架构师、测试工程师、商务经理等。

POC测试工作准备文档:

  1. POC测试工作说明文档。内容包括测试内容、测试要求(如私有化部署)、测试标准、时间安排等。
  2. 功能测试用例。主要确认功能可靠性,准确性。内容包括功能名称、功能描述等。
  3. 场景测试用例。主要测试企业团队实施响应速度、实施能力、集成能力。这部分通常按照企业需求而定,不建议太复杂,毕竟需要供应商实施,拖的太久企业耐性受到影响,时间也会被拉长。
  4. 技术测评方案。主要验证产品的性能、功能覆盖情况、集成效率、技术文档的质量。
  5. 商务测评方案。主要包括企业实力、企业技术人才能力、版权验证、市场背景、产品报价等。

POC测试工作的主要流程:

第一阶段:工作启动

由商务或者对外代表对供应商发布正式邀请并附POC测试工作说明。

建立POC协同群。以满足快速沟通,应答。

涉及到私有化部署的,需要收集供应商部署环境要求,并与供应商一起进行部署工作,同时企业参与人员对部署工作情况做好记录。

第二阶段:产品宣讲及现场集中测试

供应商根据企业提供的POC测试工作说明及相应测试模块的用例或方案进行产品现场测试论证。

企业参与人员参与功能测试,并填写记录和意见。此阶段供应商往往需进行现场操作指导。

第三阶段:技术测评

供应商根据企业提供的技术要求给出相关支持技术文档,企业进行现场对比,根据实际情况进行统计记录。并保留供应商提供的资料和对比记录。

涉及到场景demo设计的,建议企业对实施人员能力、实施时长、实施准确性进行对比。

第四阶段:间歇性测试工作

该阶段是在第一阶段启动时,就可以开始了。测试功能外,还包括关键用户使用的体验心得、易用性评价。该部分允许企业用户主观评价,建议可以扩大范围组织间歇性测试,并做好测试用户记录。间歇时间1天或者多天根据实际情况安排。

第五阶段:商务验证

供应商根据企业提供的商务测评方案,积极配合工作。涉及到客户核实的,还需要企业进行考证。该部分工作也是从第一阶段启动时,就可以开始了。

第六阶段:背书归档、分析总结

每个阶段的工作都需要记录好参与人、时间、工作时间,并将测试过程中企业的、供应商的文档分类归档。对每个阶段进行分析对比,总结评价。最后进行整体工作分析总结。

POC工作按照不同企业和程度,测试的方式和投入力度不一样。但是目的都是相同的——验证产品或供应商能力是否满足企业需求

【十二】Docker的相关概念及常用命令

Docker简介

Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。

Docker可以打包代码以及相关的依赖到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

容器完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。

计算机基础知识总结:线程、linux、Docker、网络协议_第4张图片

Docker的应用场景:

  1. Web应用的自动化打包和发布。
  2. 自动化测试和持续集成、发布。
  3. 在服务器环境中部署/调整数据库或其它的后台应用。

Docker架构

Docker包括三个基本单元:

  1. 镜像(Image):Docker镜像(Image),就相当于是一个root文件系统。比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最简系统的root文件系统。
  2. 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  3. 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker容器使用

Docker客户端

Docker客户端非常简单,我们可以直接输入docker命令来查看到Docker客户端的所有命令选项。也可以通过命令docker command --help更深入的了解指定的Docker命令使用方法。

docker

容器使用

获取本地没有的镜像。如果我们本地没有我们想要的镜像,我们可以使用 docker pull 命令来载入镜像:

docker pull 镜像

启动容器。以下命令使用ubuntu镜像启动一个容器,参数为以命令行模式进入该容器:

docker run -it 镜像 /bin/bash

参数解释:

  • -i:允许你对容器内的标准输入 (STDIN) 进行交互。
  • -t:在新容器内指定一个伪终端或终端。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式Shell。

我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。

要退出终端,直接输入exit或者CTRL+D。

启动已经停止运行的容器。查看所有的容器的命令如下:

docker ps -a

我们也可以用docker ps命令查看正在运行的容器。

docker ps

我们可以使用 docker start 启动一个已停止的容器:

docker start 容器

想要后台运行容器,我们可以过 -d 指定容器的运行模式:

docker run -itd --name 指定创建的容器名 容器 /bin/bash

加了 -d 参数默认不会进入容器,想要进入容器需要使用下面的指令进入容器:

  • docker attach
  • docker exec:推荐大家使用 docker exec 命令,因为使用此命令退出容器终端,不会导致容器的停止。
docker attach 容器  //如果从这个容器退出,会导致容器的停止。

docker exec -it 容器 /bin/bash   //如果从这个容器退出,不会导致容器的停止。

想要停止容器,其命令如下:

docker stop 容器ID

停止的容器重启命令:

docker restart 容器ID

删除容器:

docker rm -f 容器ID

Docker镜像使用

列出镜像列表。我们可以使用 docker images 来列出本地主机上的镜像。

docker images

各个参数解释:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

查找镜像:

docker search 镜像

各个参数解释:

  • NAME: 镜像仓库源的名称
  • DESCRIPTION: 镜像的描述
  • OFFICIAL: 是否 docker 官方发布
  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
  • AUTOMATED: 自动构建。

删除镜像:

docker rmi 镜像

Docker镜像的修改和自定义

docker镜像的更新

在启动docker镜像后,写入一些文件、代码、更新软件等等操作后,退出docker镜像,之后在终端输入如下命令:

docker commit -m="..." -a= "..." 容器ID 指定要创建的目标镜像名称

参数解释:

  • commit:固定格式
  • -m:提交的描述信息
  • -a:指定镜像作者

接着可以用docker images查看镜像是否更新成功。(注意:不要创建名称已存在的镜像,这样会使存在的镜像名称为none,从而无法使用)

镜像名称修改和添加新标签

更改镜像名称(REPOSITORY):

docker tag 容器ID 新名称

更改镜像tag,不修改名称:

docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)

Docker容器和本机之间的文件传输

主机和容器之间传输文件的话需要用到容器的ID全称。

从本地传输到容器中:

docker cp 本地文件路径 容器name:/root/(容器路径)

从容器传输到本地上:

docker cp 容器name:/root/(容器路径) 本地文件路径

Docker挂载宿主机文件目录

docker可以支持把一个宿主机上的目录挂载到镜像的目录中。

在启动docker镜像时,输入如下命令:

docker run -it -v /宿主机绝对路径:/镜像内挂载绝对路径 容器REPOSITORY /bin/bash

通过-v参数,冒号前为宿主机目录,冒号后为镜像内挂载的路径,必须为绝对路径。

如果宿主机目录不存在,则会自动生成,镜像里也是同理。

默认挂载的路径权限为读写。如果指定为只读可以用:ro

docker run -it -v /宿主机绝对路径:/镜像内挂载绝对路径:ro 容器REPOSITORY /bin/bash

【十三】深度学习中常用的文件格式汇总

  1. csv:可用于方便的存储数据与标签。
  2. txt:最常见的文件格式,可用于存储数据路径与数据label。
  3. Json:是一种轻量级的数据交换格式,常用于保存数据label。
  4. Yaml:是一种数据序列化语言,通常用于编写配置文件,比如将网络模型配置参数与训练参数解耦至Yaml文件中,方便训练与优化。
  5. Cfg:Darknet中经典的保存网络模型结构的文件格式。
  6. Protobuf:是一个高效的结构化数据存储格式,可以存储神经网络的权重信息,在caffe中经常出现它的身影。

【十四】TCP和UDP的区别?

  1. TCP面向连接,UDP是无连接的;
  2. TCP提供可靠的服务,也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付;
  3. TCP的逻辑通信信道是全双工的可靠信道;UDP则是不可靠信道;
  4. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信;
  5. TCP面向字节流(可能出现黏包问题),本质上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的(不会出现黏包问题);
  6. UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等);
  7. TCP首部开销20字节;UDP的首部开销小,只需8个字节。

你可能感兴趣的:(前沿技术,linux,docker,网络协议)