目录
1.网络七层模型都是哪七层,HTTP协议是在哪一层,Tcp协议在哪一层?
8.一台计算机的IP 是192.168.10.71子网掩码255.255.255.64与192.168.10.201 是同一局域网吗
13.在Linux系统中,一个文件的访问权限是755,其含义是什么
16.Xshell工具如果想要实现从服务器上传或者下载文件的话,可以在服务器上安装什么包
24.命令 netstat-a 停了很长时间没有响应,是哪里的问题
计算机网络
1.网络七层模型都是哪七层,HTTP协议是在哪一层,Tcp协议在哪一层?
应表会传网数物,http协议是应用层的协议,主要用于web浏览器和服务器两点之间传输超文本的协议,TCP(传输控制协议)是传输层的协议。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。
2.在浏览器中输入了一个url后,请求流程是什么样的
3.进程和线程的区别
- 资源占用与执行开销:进程拥有独立的地址空间和资源,因此创建和销毁进程的开销相对较大。线程则共享进程的地址空间和资源,其创建和销毁的开销相对较小。
- 通信与切换开销:进程之间必须通过进程间通信(IPC)机制进行通信,这使得切换开销相对较大。线程之间由于共享进程的资源,通信更加方便快捷,切换开销也较小。
- 并发性与调度:进程是独立的执行单元,具有自己的调度算法,因此在并发条件下更加稳定可靠。线程共享进程的资源,线程之间的调度和同步相对复杂,需要更多的注意。
- 独立性:进程能独立运行,每个进程都有各自独立的数据空间和代码。线程不能独立运行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
- 数据共享与同步:父进程和子进程之间数据共享复杂但同步简单。父线程和子线程之间共享相同的数据空间并共享系统资源,数据共享简单但同步复杂。
- 健壮性:一个进程崩溃后,在保护模式下不会对其他进程产生影响。然而,一个线程崩溃可能导致整个进程崩溃,因此多进程比多线程更健壮。
总的来说,进程和线程在资源占用、通信方式、并发性、独立性以及数据共享和同步等方面都存在显著的差异。选择使用进程还是线程取决于具体的任务需求和系统环境。例如,在处理需要大量计算和通信的任务时,多线程可能更合适;而在需要隔离不同任务或保护数据安全时,多进程可能更为理想。
4.描述TCP/IP协议的层次结构,以及每一层中重要协议
5.TCP三次握手和四次挥手
6.什么是局域网和广域网
局域网通常指的是在一个特定区域内由多台计算机互联成的计算机组,其覆盖的范围一般在方圆几千米以内。广域网则是一种跨越大的、地域性的计算机网络的集合,通常跨越省、市,甚至一个国家,乃至遍及全世界。广域网可以连接不同地区的局域网或城域网,形成国际性的远程网络。
7.DNS是什么,,它是如何工作的
DNS,全称Domain Name System,中文名为域名系统,是互联网的一项服务,主要作用是将人们所熟悉的网址“翻译”成电脑可以理解的IP地址。
8.一台计算机的IP 是192.168.10.71子网掩码255.255.255.64与192.168.10.201 是同一局域网吗
是的,是否是同一局域网,需要查看网络号是否相同,相同就是在同一局域网,否则不在同一局域网。将IP号与子网掩码进行与运算就可以得到网络号了
9.与、 或、非、 异或运算
10.HTTP 的get 请求和post 请求的区别
- 请求参数的位置:GET请求的请求参数通常附加在URL后面,作为URL的一部分进行传输。这种方式使得GET请求可以被缓存、书签化,并保存在浏览器的历史记录中。而POST请求的请求参数则包含在HTTP请求体中,不会在URL中显示。
- 请求的长度限制:由于GET请求的参数是附加在URL上的,因此其长度通常受到浏览器和Web服务器的限制。而POST请求的请求体则没有这样的限制,可以传输更多的数据。
- 安全性:GET请求由于参数在URL中可见,因此不适合传输敏感信息,如密码或私钥,因为这些信息可能会被记录在浏览器历史记录、网络日志或服务器日志中。相比之下,POST请求的参数在请求体中,不会在URL中显示,因此相对更安全。然而,这并不意味着POST请求本身就是安全的,它仍然需要配合其他安全措施(如HTTPS)来保护数据的传输。
- 幂等性:GET请求是幂等的,这意味着多次执行相同的GET请求,结果总是相同的。这有助于在Web爬虫和缓存中优化性能。而POST请求通常不是幂等的,因为每次提交数据都可能导致服务器上的状态发生变化。
- 后退/刷新按钮:GET请求可以通过浏览器的后退和刷新按钮进行重复操作,而不会导致任何副作用。然而,对于POST请求,如果用户使用后退或刷新按钮,浏览器通常会警告用户可能会重新提交表单数据。
- 用途:GET请求通常用于请求数据,如查询数据库或获取页面内容。而POST请求则通常用于提交数据,如提交表单或上传文件。
总结来说,GET和POST请求在参数位置、长度限制、安全性、幂等性、浏览器行为以及用途等方面存在明显的区别。在设计和实现Web应用时,应根据具体需求选择合适的请求方法。
11.手工修改 Tomcat 端口,在那个文件里
要手工修改Tomcat的端口,需要在Tomcat安装目录下的conf
文件夹中找到server.xml
文件。这个文件包含了Tomcat服务器的配置信息,其中也包括端口设置。
在server.xml
文件中,你可以找到多个与端口相关的设置,如:
Shutdown
端口:这是Tomcat的关闭端口,用于接收关闭Tomcat服务器的命令。默认端口号为8005。Connector
端口:这是Tomcat的主要端口,用于处理HTTP请求。默认端口号为8080。- AJP端口(如果有的话):这是Tomcat与Apache HTTP服务器之间的通信端口,默认端口号通常为8009。
你可以根据需要修改这些端口号。例如,如果你想要修改访问端口(即Connector
端口),你需要找到<Connector>
标签,并在其中找到port
属性。修改这个属性的值即可改变Tomcat的访问端口。
完成修改后,记得保存server.xml
文件,并重启Tomcat服务器,以使新的端口设置生效。
注意:在修改端口号之前,一定要确保新的端口号没有被其他进程占用,否则Tomcat可能无法正常启动。
Linux
12.Linux中,一般怎么隐藏文件
在文件名前面放置一个“.”(点)。
由于大多数文件管理器默认隐藏以点开头的文件,所以重命名的文件或目录现在将变为不可见。请注意,放置在隐藏目录中的文件也将默认隐藏。
使用cd
命令进入您隐藏文件或文件夹的特定目录,然后使用ls -a
命令来显示该目录中的所有文件,无论是可见的还是隐藏的。ls
命令用于显示当前目录中的所有项目,但不包括隐藏项目,而-a
参数则用于显示所有项目,包括隐藏项目。
13.在Linux系统中,一个文件的访问权限是755,其含义是什么
chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。一般是三个数字:第一个数字表示文件所有者的权限,第二个数字表示与文件所有者同属一个用户组的其他用户的权限,第三个数字表示其它用户组的权限。
权限分为三种:读(r=4),写(w=2),执行(x=1) 。 综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。
所以,chmod 755 设置用户的权限为:
1.文件所有者可读可写可执行 --7
2.与文件所有者同属一个用户组的其他用户可读可执行 --5
3.其它用户组可读可执行 --5
14.如何过滤文件内容中包含”ERROR“的行
要过滤文件内容中包含"ERROR"的行并统计次数,可以在Linux中使用"grep"和"wc"命令的组合。以下是具体步骤:
打开终端。
输入以下命令并按Enter键:grep -c "ERROR" 文件名
将"文件名"替换为要过滤和统计的实际文件名称。
这个命令将过滤出包含"ERROR"的行,并显示出现的次数。
例如,如果你有一个名为"logfile.txt"的文件,想要过滤和统计包含"ERROR"的行,你可以运行:grep -c "ERROR" logfile.txt
输出结果将是指定文件中包含"ERROR"的行数。
该命令实时读取日志文件,把出现“ERROR”行的日志前后各36日志打印出来。我们也可以把日志记录到文本中:
tail -f a.out |grep -C 36 ERROR >>error.log
15.如何查询出 tomcat 的进程并杀掉这个进程
- 查询Tomcat进程
使用ps
命令结合grep
来查找Tomcat进程。Tomcat的默认进程名可能是java
(如果Tomcat是通过Java直接启动的),或者可能是catalina.sh
或catalina.bat
(Tomcat的启动脚本)。你可以根据实际的启动命令或脚本名称来进行查询。
假设你知道Tomcat的进程名(例如catalina.sh
),你可以使用以下命令来查找
ps -ef | grep catalina.sh
如果Tomcat是通过Java直接启动的,并且你只知道端口号(例如8080),你可以尝试查找使用这个端口的Java进程:
netstat -tulnp | grep 8080
2. 杀掉Tomcat进程
一旦你找到了Tomcat的进程ID(PID),你可以使用kill
命令来结束它。例如,如果Tomcat的PID是12345,你可以使用:
kill -9 12345
这里的-9
选项是发送一个SIGKILL信号给进程,强制结束它。注意:在执行kill
命令之前,请确保你确实要结束这个进程,并且结束它不会对系统或其他应用造成影响。
16.Xshell工具如果想要实现从服务器上传或者下载文件的话,可以在服务器上安装什么包
在服务器上安装lrzsz包。这个包包含了上传(rz)和下载(sz)命令,使得文件传输变得更加方便。不同的服务器操作系统可能需要使用不同的安装命令,例如在CentOS上可以使用
yum install lrzsz
17.Linux查看文件用什么命令,查看进程用什么命令
查看文件常用的命令包括:
- cat:用于显示文件内容。例如,
cat filename
会输出文件filename
的全部内容。 - grep:用于在文件中搜索指定的字符串或模式。例如,
grep "pattern" filename
会在文件filename
中搜索包含"pattern"的行。 - find:根据文件的属性进行查找,如文件名、文件大小、所有者、所属组、是否为空、访问时间、修改时间等。例如,
find / -name httpd.conf
会在根目录及其子目录中查找名为httpd.conf
的文件。
查看进程常用的命令包括:
- ps:用于显示当前进程的状态。例如,
ps -ef
会列出所有进程的完整信息,包括进程的命令行参数;ps aux
会以用户为基础列出进程的信息,包括进程所有者、CPU使用率、内存使用情况等。如果你想要查找特定名称的进程,可以结合grep
命令使用,如ps aux | grep ssh
。 - top:实时查看系统的进程活动情况,包括CPU使用率、内存占用、运行时间等。你可以通过键盘操作对显示的进程进行排序、筛选等。
- htop:类似于
top
命令,但提供了一个彩色的界面和更多的交互功能,使得查看和管理进程更加方便。
这些命令的具体用法和选项可能因不同的Linux发行版或shell环境而有所差异。在使用时,建议查阅相关手册页(通过man
命令)以获取更详细的信息和用法示例。
18.查看当前机器 listen 的所有端口
在Linux中,你可以使用多种命令来查看当前机器上所有正在监听的端口。以下是几种常用的方法:
-
使用netstat命令:
netstat -tuln
-t
:显示TCP端口。-u
:显示UDP端口。-l
:仅显示监听状态的端口。-n
:以数字形式显示端口号和IP地址,而不是尝试解析为主机名、服务名等。
-
使用ss命令:
ss -tuln
ss命令的功能与netstat类似,用于显示当前监听的TCP和UDP端口。在一些情况下,ss命令可能会比netstat更快速、更可靠。
-
使用lsof命令:
lsof -i
如果你想要对监听的端口进行排序或去重,可以结合使用其他工具如
awk
和sort
。例如:
netstat -tuln | awk 'NR>2{sub(".*:","",$4);print $4}' | sort | uniq
这个命令首先使用netstat列出所有监听的端口,然后通过awk提取端口号(跳过前两行标题信息),接着使用sort进行排序,最后使用uniq去除重复的端口号。
19.查看占用 CPU 使用率最高的进程
-
使用top命令:
top
命令可以实时显示系统的资源使用情况,包括CPU、内存、进程等。你可以直接运行top
命令,然后观察输出的列表。默认情况下,top
命令会按照CPU使用率对进程进行排序,因此CPU使用率最高的进程通常会位于列表的顶部。如果你想更改排序方式或筛选特定进程,可以结合键盘操作和其他参数来实现。 -
结合ps和sort命令:
你也可以使用ps
命令和sort
命令结合来查看CPU使用率最高的进程。例如,ps aux --sort=-%cpu | head
这条命令会列出所有进程并按照CPU使用率的降序排序,
head
命令用于只显示前几行结果(默认为前10行)。这样,你就可以快速找到CPU使用率最高的进程。 -
使用htop命令:
htop
是一个交互式的进程查看工具,它提供了更丰富的功能和更友好的界面。首先,你需要安装htop
(例如,通过sudo apt-get install htop
命令)。安装完成后,输入htop
命令即可打开htop
界面。在这个界面中,你可以看到各个进程的实时资源使用情况,包括CPU使用率。默认情况下,htop
会按照CPU使用率对进程进行排序,所以CPU使用率最高的进程会置顶显示。
20.如何查看一个文件的末尾 50 行
在Linux中,你可以使用tail
命令来查看文件的末尾内容。要查看一个文件的末尾50行,你可以使用以下命令:
tail -n 50 filename
例如,如果你有一个名为example.txt
的文件,并想要查看它的末尾50行,你可以运行:
tail -n 50 example.txt
21.哪个Linux命令可以一次显示一页内容
在Linux中,more命令可以一次显示一页内容。这个命令会一页一页地显示文件内容,当一页内容显示完后,用户需要按空格键来查看下一页。此外,less命令也是分页显示文件内容的工具,它是more命令的高级版本,功能更强大,支持上下键向前或向后翻看文件,查看文件内容更加方便。
22.如何快速切换到用户John的主目录下
cd ~John
~
符号代表当前用户的家目录
23.如何从当前系统中卸载一个已装载的文件系统
要从当前Linux系统中卸载一个已装载的文件系统,你可以使用umount
命令。umount
命令用于卸载文件系统,它从系统中移除文件系统的挂载。
以下是如何使用umount
命令的基本步骤:
- 首先,你需要确定要卸载的文件系统的挂载点。你可以使用
mount
或df
命令来查看当前挂载的文件系统及其挂载点。
例如,使用mount
命令:
mount | grep <文件系统名称或挂载点>
或者使用df命令:
df -h | grep <文件系统名称或挂载点>
命令会列出所有挂载的文件系统,你可以从中找到你想要卸载的那个。 2.一旦你知道了挂载点,就可以使用umount命令来卸载它。例如,如果你的挂载点是/mnt/myfilesystem 那么你可以运行:
umount /mnt/myfilesystem
3.如果文件系统正在被使用(例如,有打开的文件或目录),umount命令可能会失败。在这种情况下,你可以尝试使用umount的-f选项来强制卸载,但请注意这可能会导致数据丢失或损坏,所以只在确定没有其他进程正在使用该文件系统的情况下使用。
umount -f /mnt/myfilesystem
更好的做法是先确保没有进程正在使用该文件系统,可以使用lsof
或fuser
命令来查找并结束这些进程。
24.命令 netstat-a 停了很长时间没有响应,是哪里的问题
命令netstat -a
在长时间内没有响应,可能由以下原因引起:
- DNS问题:当使用
netstat -a
命令时,默认会进行域名解析。如果DNS设置存在问题,可能会导致命令的响应速度变慢甚至无响应。解决这个问题的一个方法是使用参数-an
,其中n
表示不进行域名解析。同时,检查并修复DNS设置也是必要的。 - 网络问题:
netstat
命令是Linux系统中查看网络情况的一个工具。如果网络本身存在问题,那么netstat -a
命令可能会受到影响,导致没有响应。尝试更换网络环境或刷新网络设置,可能有助于解决这个问题。
请注意,除了上述可能的原因外,还有其他因素也可能导致netstat -a
命令无响应,例如系统资源不足、软件冲突或命令本身存在bug等。
25.在vi中退出不保存的命令是什么
:q!
就是强制退出并不保存任何更改的命令