当前位置: 首页 > news >正文

一、Linux入门简述

计算机(Computer)简述:俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备,计算机发展历史:

第一代计算机(1946-1957) 电子管时代

第二代计算机(1958-1964) 晶体管时代

第三代计算机(1965-1970) 集成电路时代

第四代计算机(1971以后) 大规模集成电路时代

1946年,世界上第一台计算机ENIAC(electronic numerical integrator and calculator)在美国宾州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的。使用了17468只电子管,占地170平方米,重达30吨,耗电174千瓦,耗资40多万美元。每秒可进行5000次加法或减法运算。

计算机组成计算机由硬件(Hardware)系统和软件(Software)系统两大部分组成。

·诺依曼体系结构: 1946年数学家冯·诺依曼于提出,计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成

操作系统

OS: Operating System,通用目的的软件程序,硬件驱动、进程管理、内存管理、网络管理、安全管理、文件管理;

OS分类:

        服务器OS RHELCentOSWindows ServerAIX

        桌面OS: Windows 10Windows 7Mac OSFedora

        移动设备OS: AndriodIOSYunOS

服务器三大操作系统:

Windows;

Linux(GNU/Linux)

Unix(1969Ken Thompson)

SystemBell LabAIX(IBM)Solaris (SUN)HP-UX (HP)

BSD(BSRG)(Berkeley System Distribution)NetBSDOpenBSDFreeBSD

UNIX简史

1965前后Multics,贝尔实验室,麻省理工,通用电气发起

1969 Unix雏形UNICSKen Thompson 汇编语言 B语言

1973 正式命名为UnixDennis Ritchie C语言

1977 BSDBerkeley Software Distribution 伯克利大学

1979 System V架构 版权声明,HP-UNIX IBM AIX “不对学生提供源码收回版权

1984Minix操作系统,Andrew S. Tanenbaum荷兰阿姆斯特丹自由大学计算机科学系

Linux起源

1991年的105日,Linus Torvaldscomp.os.minix新闻组上发布消息,正式向外宣布他自行编写的完全自由免费的内核诞生(Freeminix-like kernel sources for 386-AT—FREAX,含义是怪诞的、怪物、 异想天开

Unix的内核,在GPL下发布,官网:www.kernel.org

Linux可划分为以下四部分:

1Linux内核:主要负责以下四种功能:系统内存管理、软件程序管理、硬件设备管理、文件系统管理

2GNU工具:GNU(GNU is Not Unix)1984年由Richard Stallman发起并创建,目的主旨在于为Unix系统管理员设计出一套类似于Unix的环境。这个目标促使该项目移植了很多常见的Unix系统命令行工具。供Linux系统使用的这组核心工具被称为coreutilscoreutilities)软件包。

       GNU coreutils软件包由三部分构成:

              用以处理文件的工具

              用以操作文本的工具

              用以管理进程的工具

              这三组主要工具中的每一组都包含一些对Linux系统管理员和程序员至关重要的工具。

       GNU官方网站: http://www.gnu.org

       GPL(GNU General Public License)通用公共许可证

       自由软件基金会: Free Software Foundation允许用户任意复制、传递、修改及再发布,基于自由软件修改再次发布的软件,仍需遵守GPL

       LGPL(Lesser General Public License),LGPL相对于GPL较为宽松,允许不公开全部源代码

       GNU操作系统: Hurd Hird of Unix-Replacing Daemons

3、图形化桌面环境

4、应用软件

Linux实际只是一个操作系统内核,不是一个完整的操作系统,结合大量的开源软件及GNU系统才构成了完整的操作系统即GNU/Linux。每一部分在Linux系统中各司其职。但就单个部分而言,其作用并不大。如下图展示了各部分是如何协作起来构成整个Linux系统的。

Linux UNIX的关系

       UNIX是历史悠久的商业通用操作系统,Linux的思想源于UNIX,最早是由芬兰人Linus Torvalds设计,并于1991年的105日发布;UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上;UNIX是商业软件 ,而Linux是自由软件、免费、开源的;

Linux哲学思想

一切都是一个文件(包括硬件)

提供小型,单一用途的程序

连接程序,共同完成复杂的任务

避免令人困惑的用户界面

配置数据存储在文本中

Linux发行版本

       Linux内核版本号说明:

         Linux发行版

目前比较流行的三大发行版为:

slackware:

       SUSE Linux Enterprise:和红帽商业版类似,德国公司制作的,SUSE系列比较有特色的是YAST2,就是用来设置Linux的界面,对初级管理员比较方便。

       SUSE:SUSE的免费版本

debian:

       Debian:完全免费,社区维护的Linux版本,有很大的用户群;

       Ubuntu:由一个基金提供支持的免费Linux版本,继承自Debian,界面很友好

       Mint:基于ubuntu,提供了更加丰富的预装应用,以减少用户搜索并安装应用的麻烦。其使用的应用版本比较新,可能不是很稳定。

redhat:

       Red Hat Enterprise:企业级的linux,主要面向服务器。作为商业版,有比较好的配套软件和技术支持。RH的教材也堪称经典。每18个月发行一个新版本

       Fedora:由社区维护,去除了一些商业软件。红帽实际上赞助了这个项目,以便以此作为技术测试平台。每6个月发行一个新版本

       CentOS:这个版本不来自红帽的公司,是收集红帽公开的源码组成的免费版本,由社区维护,和红帽完全兼容。版本号升级较慢,但有持续的技术支持,所以适合于不愿意频繁升级的情形。兼容RHEL的格式

此外还有如下一些版本:

       ArchLinux:轻量简洁,遵循K.I.S.S.原则(keep it simple and stupid)

       Gentoo:极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件

       LFS:Linux From scratch 自制Linux

       Android:kernel+busybox(工具集)+java虚拟机

Linux分支参考网站:

       http://futurist.se/gldt/

       http://www.mindpin.com/d3js-demo/linux/

vmware workstation安装CentOS7.6系统

创建虚拟机:

按下一步,往下的步骤根据自己的需求进行配置,到最后虚拟机硬件配置如下:

点击完成,进入如下界面

至此虚拟机的创建完成了

2、安装Centos7.6系统,系统iso文件下载:https://mirrors.aliyun.com/centos/7/isos/x86_64/

将下载好的iso文件插入到虚拟机光驱,如下

点击确定后,开启此虚拟机,进入如下界面:

如果是刚下载的ISO文件可以检测下光盘,选择Test this media & install CentOS7选项,我这直接使用install CentOS 7选项,进入如下安装界面:

设置语言,选择自己喜欢的语言,选择Continue,进入如下界面:

分别点击上面4个选项进行设置,从上往下分别是:日期时区设置、图形界面设置、磁盘分区、网络设置

日期时区设置不详述了,图形界面设置如下:

选择GNOME Desktop,然后点击Done

进入磁盘分区设置

选择I will config partitioning,进入手动分区,如下:

分区类型有4种,一般使用Standard Partition标准分区或LVM逻辑分区,具体使用看各人喜好,下面是我的分区表

对磁盘分好区后进入如下安装界面

在上面可以root的口令密码,添加一个普通用户,添加普通用如下:

设置完后静静等待几分钟,系统便安装完成了,点击Reboor,如下

重启后,会进入到如下设置界面:

点击 LICENSE INFORMATION,如下

勾选accept,点击Done,最后点击 finish,到此系统使用可以使用了,下面为登录界面:

至此系统安装完成并可以使用了。

系统用户类型:

root 用户:一个特殊的管理帐户,也被称为超级用户,root已接近完整的系统控制,对系统损害几乎有无限的能力,除非必要,不要登录为 root

普通( 非特权 )用户:权限有限,造成损害的能力比较有限

系统终端terminal

设备终端:键盘、鼠标、显示器等

物理终端( /dev/console ):控制台console

串行终端( /dev/ttyS# ):ttyS

虚拟终端tty:teletypewriters, /dev/tty#,tty 可有n个,Ctrl+Alt+F#

图形终端( /dev/tty7 ) startx, xwindows

CentOS 6: Ctrl + Alt + F7

CentOS 7: 在哪个终端启动,即位于哪个虚拟终端

伪终端( pty:pseudo-tty , /dev/pts/# ):pty, SSH远程连接

查看当前的终端设备:tty

什么是shell

Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,shell也被称为LINUX的命令解释器(command interpreter),shell是一种高级程序设计语言

各种Shell:sh (Steve Bourne ),csh,tcsh,ksh (korn),bash (bourn again shell)GPL,zsh 等

bash shellGNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell,与sh兼容,CentOS默认使用

显示当前使用的shell:echo ${SHELL}

显示当前系统使用的所有shell:cat /etc/shells

主机名示例:bj-yz-k8s-node1-100-10.magedu.com

基本命令:

命令提示符:[root@localhost ~]#

       # 表示管理员

       $ 表示普通用户

       注:在一般情况下是可以这么认为,但这个是可以人为进行设置的

显示提示符格式:[root@localhost ~]#echo $PS1

修改提示符格式  

       PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"

       PS1="\[\e[1;32m\][\[\e[0m\]\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"

       \e 控制符\033                          \u 当前用户

       \h 主机名简称                          \H 主机名

       \w 当前工作目录                      \W 当前工作目录基名

       \t 24小时时间格式                   \T 12小时时间格式

       \! 命令历史数                           \# 开机后命令历史数

示例:

       PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]" 

      直接在命令行中设置,仅对当前shell进程有效,想要永久有效需写入文件

              仅对当前用户:~/.bashrc

              对所有用户有效:/etc/bashrc

              或在/etc/profile.d/文件中写入到shell文件,后缀必须为.sh

              编辑配置给出的新配置不会立即生效,需要重新读取配置文件

                     source /path/to/config_file        重读配置文件

                     . /path/to/config_file

tab键:命令补全按键

命令补全:用户给定的字符串只有一条惟一对应的命令,使用tab键,直接补全,否则,再次Tab会给出列表

路径补全,把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名,如果惟一:则直接补全,否则:再次Tab给出列表

在shell中可执行的命令有两类

内部命令:由shell自带的,而且通过某命令形式提供

       help 内部命令列表

       enable cmd 启用内部命令

       enable –n cmd 禁用内部命令

       enable –n 查看所有禁用的内部命令

外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令,在文件系统路径下有对应的可执行程序文件

查看路径:which -a |--skip-alias ; whereis

              查看命令类型:type cmd

命令格式:COMMAND [OPTIONS...] [ARGUMENTS...]

选项:用于启用或关闭命令的某个或某些功能

       短选项:-c 例如:-l, -h

       长选项:--word 例如:--all, --human-readable

参数:命令的作用对象,比如文件名,用户名等

注意:

       多个选项以及多参数和命令之间使用空白字符分隔

       取消和结束命令执行:Ctrl+c,Ctrl+d

       多个命令可以用;符号分开

       一个命令可以用\分成多行

用户登录信息查看命令:

whoami: 显示当前登录有效用户

who: 系统当前所有的登录会话

w: 系统当前所有的登录会话及所做的操作

nano 文本编辑

常用开关机命令

关机:halt, poweroff

重启:reboot

       -f: 强制,不调用shutdown

       -p: 切断电源

关机或重启:shutdown

       shutdown [OPTION]... [TIME] [MESSAGE]

              -r: reboot

              -h: halt

              -c:cancel

       TIME:无指定,默认相当于+1(CentOS7)

              now: 立刻,相当于+0

              +m: 相对时间表示法,几分钟之后;例如 +3

              hh:mm: 绝对时间表示,指明具体时间

日期和时间相关命令:

Linux的两种时钟

       系统时钟:由Linux内核通过CPU的工作频率进行的

       硬件时钟:主板

相关命令:

       date 显示和设置系统时间

              date +%s

              date -d @1509536033

       hwclock,clock: 显示硬件时钟

              -s, --hctosys 以硬件时钟为准,校正系统时钟

              -w, --systohc 以系统时钟为准,校正硬件时钟

时区:/etc/localtime

显示日历:cal –y

echo命令:显示字符

语法:echo [-neE][字符串]

说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号

命令选项:

       -E (默认)不支持 \ 解释功能

       -n 不自动换行

       -e 启用 \ 字符的解释功能

显示变量

       echo "$VAR_NAME” 变量会替换,弱引用

       echo '$VAR_NAME’ 变量不会替换,强引用

启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出

       \a 发出警告声

       \b 退格键

       \c 最后不加上换行符号

       \e escape,相当于\033

       \n 换行且光标移至行首

       \r 回车,即光标移至行首,但不换行

       \t 插入tab

       \\ 插入\字符

\0nnn 插入nnn(八进制)所代表的ASCII字符

       echo -e '\033[43;31;5mmagedu\e[0m'

       \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

命令行扩展、被括起来的集合

命令行扩展:$( ) 或 ``,把一个命令的输出打印给另一个命令的参数

       echo "This system's name is $(hostname) "

              This system's name is server1.example.com

       echo "i am `whoami` "

              i am root

括号扩展:{ }

       打印重复字符串的简化形式

       echo file{1,3,5} 结果为:file1 file3 file5

       rm -f file{1,3,5}

       echo {1..10}

       echo {a..z}

       echo {000..20..2}

Hash缓存表

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率

hash常见用法:

       hash 显示hash缓存

       hash –l 显示hash缓存,可作为输入使用

       hash –p path name 将命令全路径path起别名为name

       hash –t name 打印缓存中name的路径

       hash –d name 清除name缓存

       hash –r 清除缓存

history命令

history [-c] [-d offset] [n]

history -anrw [filename]

history -ps arg [arg...]

命令选项:

       -c: 清空命令历史

       -d offset: 删除历史中指定的第offset个命令

       n: 显示最近的n条历史

       -a: 追加本次会话新执行的命令历史列表至历史文件

       -r: 读历史文件附加到历史列表

       -w: 保存历史列表到指定的历史文件

       -n: 读历史文件中未读过的行到历史列表

       -p: 展开历史参数成多行,但不存在历史列表中

       -s: 展开历史参数成一行,附加在历史列表后

执行历史中某条命令

       !n 执行history命令输出对应序号n的命令

       !-n 执行history历史中倒数第n个命令

命令历史相关环境变量

       HISTSIZE:命令历史记录的条数

       HISTFILE:指定历史文件,默认为~/.bash_history

       HISTFILESIZE:命令历史文件记录历史的条数

       HISTTIMEFORMAT=“%F %T “ 显示时间

       HISTIGNORE=“str1:str2*:… “忽略str1命令,str2开头的历史

示例:

       HISTTIMEFORMAT="%F %T "              设置时间格式然后history查看,可以查看到执行命令的具体时间:

控制命令历史的记录方式:

       环境变量:HISTCONTROL

              ignoredups 默认,忽略重复的命令,连续且相同为“重复”

              ignorespace 忽略所有以空白开头的命令

              ignoreboth 相当于ignoredups, ignorespace的组合

              erasedups 删除重复命令

       export 变量名="值“

       存放在 /etc/profile 或 ~/.bash_profile

alias命令

alias                            显示当前shell进程所有可用的命令别名

alias NAME='VALUE'    定义别名NAME,其相当于执行命令VALUE

在命令行中定义的别名,仅对当前shell进程有效,如果想永久有效,要定义在配置文件中

仅对当前用户:~/.bashrc

对所有用户有效:/etc/bashrc

编辑配置给出的新配置不会立即生效,需要重新读取配置文件

       source /path/to/config_file        重读配置文件

       . /path/to/config_file

撤消别名:unalias

       unalias [-a] name [name ...]

-a 取消所有别名

如果别名同原命令同名,如果要执行原命令,可使用

       \ALIASNAME

       “ALIASNAME”

       ‘ALIASNAME’

       command ALIASNAME

       /path/command

screen命令:

创建新screen会话:                              screen –S [SESSION]

加入screen会话:                                  screen –x [SESSION]

退出并关闭screen会话:                       exit

剥离当前screen会话                              Ctrl+a,d

显示所有已经打开的screen会话            screen -ls

恢复某screen会话                                  screen -r [SESSION]

export 命令

设置或显示环境变量,在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。

命令格式:export [-fnp][变量名称]=[变量设置值]

参数说明:

       -f  代表[变量名称]中为函数名称。

       -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

       -p  列出所有的shell赋予程序的环境变量。

 示例:

       export -p //列出当前的环境变量值

       export MYENV //定义环境变量

       export MYENV=7 //定义环境变量并赋值

ifconfig命令

用于显示或设置网络设备,设置网络设备的状态,或是显示目前的设置。

参数说明:

       add<地址> 设置网络设备IPv6的IP地址。

       del<地址> 删除网络设备IPv6的IP地址。

       down 关闭指定的网络设备。

       <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。

       io_addr<I/O地址> 设置网络设备的I/O地址。

       irq<IRQ地址> 设置网络设备的IRQ。

       media<网络媒介类型> 设置网络设备的媒介类型。

       mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。

       metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。

       mtu<字节> 设置网络设备的MTU。

       netmask<子网掩码> 设置网络设备的子网掩码。

       tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。

       up 启动指定的网络设备。

       -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。

       -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。

       -promisc 关闭或启动指定网络设备的promiscuous模式。

       [IP地址] 指定网络设备的IP地址。

       [网络设备] 指定网络设备的名称。

示例:

       显示网络设备信息: ifconfig

       启动关闭指定网卡

              ifconfig eth0 down

              ifconfig eth0 up

       为网卡配置和删除IPv6地址

              ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡设置IPv6地址

              ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址

       用ifconfig修改MAC地址

              ifconfig eth0 up //启动网卡

              ifconfig eth0 down //关闭网卡

              ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址

              ifconfig eth1 hw ether 00:1D:1C:1D:1E //关闭网卡并修改MAC地址

       配置IP地址

              ifconfig eth0 192.168.1.56

       配置IP地址,并加上子掩码

              ifconfig eth0 192.168.1.56 netmask 255.255.255.0

       配置IP地址,加上子掩码,加上个广播地址

              ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255

       启用和关闭ARP协议

              ifconfig eth0 arp  //开启

              ifconfig eth0 -arp  //关闭

       设置最大传输单元

              ifconfig eth0 mtu 1500  //设置能通过的最大数据包大小为 1500 bytes

bash的快捷键

Ctrl + l 清屏,相当于clear命令

Ctrl + o 执行当前命令,并重新显示本命令

Ctrl + s 阻止屏幕输出,锁定

Ctrl + q 允许屏幕输出

Ctrl + c 终止命令

Ctrl + z 挂起命令

Ctrl + a 光标移到命令行首,相当于Home

Ctrl + e 光标移到命令行尾,相当于End

Ctrl + f 光标向右移动一个字符

Ctrl + b 光标向左移动一个字符

Alt + f 光标向右移动一个单词尾

Alt + b 光标向左移动一个单词首

Ctrl + xx 光标在命令行首和光标之间移动

Ctrl + u 从光标处删除至命令行首

Ctrl + k 从光标处删除至命令行尾

Alt + r 删除当前整行

Ctrl + w 从光标处向左删除至单词首

Alt + d 从光标处向右删除至单词尾

Ctrl + d 删除光标处的一个字符

Ctrl + h 删除光标前的一个字符

Ctrl + y 将删除的字符粘贴至光标后

Alt + c 从光标处开始向右更改为首字母大写的单词

Alt + u 从光标处开始,将右边一个单词更改为大写

Alt + l 从光标处开始,将右边一个单词更改为小写

Ctrl + t 交换光标处和之前的字符位置

Alt + t 交换光标处和之前的单词位置

Alt + N 提示输入指定字符后,重复显示该字符N次

注意:Alt组合快捷键经常和其它软件冲突

相关文章:

  • 二、Linux入门之文件管理及相关命令
  • 3、Linux命令小例:用户权限管理、ls、cp、tr
  • 三、Linux入门之标准I/O重定向、管道、用户管理
  • 三、Linux入门之文件权限
  • 二、Linux入门之VIM编辑器
  • 四、Linux入门之文件查看命令
  • 4、Linux入门之文本处理小练习
  • 五、Linux入门之文件查找与打包解压缩
  • Linux入门之文本处理三剑客grep、sed、akw
  • 5、Linux入门之小练习
  • Linux入门之正则表达式
  • 七、Linux入门之软件包管理
  • 七、Linux入门之磁盘存储和文件系统
  • 7、Linux入门之小练习
  • 十、Linux入门之Shell进阶
  • Android开源项目规范总结
  • css布局,左右固定中间自适应实现
  • css属性的继承、初识值、计算值、当前值、应用值
  • JavaWeb(学习笔记二)
  • Laravel 中的一个后期静态绑定
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • PAT A1092
  • PHP CLI应用的调试原理
  • Python利用正则抓取网页内容保存到本地
  • Shell编程
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • vuex 笔记整理
  • 搞机器学习要哪些技能
  • 关于Java中分层中遇到的一些问题
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 前端面试之闭包
  • 入口文件开始,分析Vue源码实现
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 学习HTTP相关知识笔记
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #考研#计算机文化知识1(局域网及网络互联)
  • (1) caustics\
  • (C语言)fgets与fputs函数详解
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (笔试题)分解质因式
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (十一)手动添加用户和文件的特殊权限
  • (一一四)第九章编程练习
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Core 成都线下面基会拉开序幕
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET应用架构设计:原则、模式与实践 目录预览
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [C/C++] -- 二叉树
  • [CSS]CSS 的背景
  • [GN] DP学习笔记板子