01-计算机原理基础

目录

一、计算机原理基础

三、虚拟机安装与使用

四、Linux系统介绍

4.1 Linux系统介绍

4.2 单体项目部署:

4.3 部署Springboot项目(java -jar xxx.jar):

4.3.1 windows

4.3.2 linux环境上部署目录:

 4.4 Linux 实操命令:

五、网络通讯介绍

5.1、 网络分层

5.2、网络基础知识

5.3、TCP

​编辑

5.4、UDP

5.5、HTTP

5.6、SOCKET

5.6.1、 BIO(Blocking IO)程序

5.6.2、 NIO 程序

​编辑​​​​5.6.3、 Netty

5.6.4、 Redis底层基于epoll的实现原理


一、计算机原理基础

三、虚拟机安装与使用

四、Linux系统介绍

4.1 Linux系统介绍

4.2 单体项目部署:

1.云服务器的购买
2.相关环境的安装,准备:
后端,前端
jdk,maven,tomcat,nginx,
3.Linux里面安装Nginx服务器
部署项目的时候,配置Nginx
4.购买,备案域名
腾讯云或者阿里云的购买
首先注册新的域名
再网站备案
5.使用SSL证书配置HTTPS
腾讯云购买SSL证书

https://www.bilibili.com/video/BV15V411U7Vd?p=11&spm_id_from=pageDriver

4.3 部署Springboot项目(java -jar xxx.jar):

4.3.1 windows

步骤:

1.打包:

        idea工具打jar包,使用maven命令

2.运行jar文件:

        (1)前台启动方式:java -jar xxx.jar

        (2)后台启动方式:java -jar xxx.jar &

区别:

        前台启动 Ctrl + c 会关闭程序,

        后台启动 不会

3.将上面的两个命令写成脚本,直接启动:

        java -jar xxx.jar >nohup.out 2>&1& 

命令解析:

        nohupt.out:将标准输出日志打印到指定的文件nohup.out

        2>&1:输出所有的日志文件

        &: 后台启动

部署发包记录:

        zip包,将引入的外部jar等资源文件也上传到服务器

        jar包:只是将.class字节码文件上传到服务器

注意:

        当项目引入新的jar包的时候,发jar包失败

        则需要发zip包,将新引入的jar包也上传到服务器

4.3.2 linux环境上部署目录:

 通过脚本启动项目命令:

./startup.sh xxx.jar

就可以成功将项目启动了,然后页面可以访问到。

注意事项

        linux环境下注意关闭防火墙,否则部署之后,经常会访问不到网页。如果linux环境下安装了java的一些环境,还可以通过jps命令,查看哪些已经启动的java进程。

 4.4 Linux 实操命令:

linux目录解析:

        opt/:主要放安装包 的目录

        /usr/local: 软件安装的目录

linux命令:

cd:	进入指定目录 
cd ../ :到上一级目录
rz :	上传文件(从window上传文件到linux服务器)

wget:	linux最常用的下载命令, 
一般的使用方法是: wget + 空格 + 要下载文件的url路径
例如: # wget http://www.linuxsense.org/xxxx/xxx.tar.gz

tar -zxvf:	解压压缩包
解析:
linux命令的 - 后面有多个字母代表有多个参数
    z:	压缩文件是.tar.gz结尾的,所以用tar命令 -z进行筛选
    x:	进行解压操作
    v:	显示信息
    f:	指定是哪个需要解压的文件

cp 文件名  路径:	拷贝文件,将某个文件拷贝到指定目录下
cp -r:递归拷贝文件夹和其里面的文件

mv:移动文件夹    
ex: mv  文件 a b 	->	 将文件从a目录移动到b目录
rm:删除文件件
ex:rm 文件1   	->	 删除文件1
rmdir:	删除空目录
rm -rf:	删除目录(递归删除,谨慎使用)
linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,
现在使用rm -rf命令即可。直接rm就可以了,不过要加两个参数-rf 
即:rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,
不作任何提示的意思

方法:
1、删除文件夹实例:rm -rf /var/log/httpd/access将会删除/var/log/httpd/access
目录以及其下所有文件、文件夹
2、删除文件使用实例:rm -f /var/log/httpd/access.log将会
强制删除/var/log/httpd/access.log这个文件
注意事项:使用这个rm -rf的时候一定要格外小心,linux没有回收站的


tar -vxf :	解压.tar.xz为后缀的压缩包
tar -zvxf :	解压.tar.xz为后缀的压缩包
upzip:	解压.zip为后缀的压缩包	
rz:	上传文件到linux服务器
sz:	从linux服务器下载文件

touch :新建文件
vim :编辑文件
编辑完按Esc退出编辑模式此时输入:
i:开始编辑 打开编辑模式
保存退出编辑文件
:w	:	保存当前文件
:x	:保存文件且退出
:q	: 退出 vi编辑
:wq:保存文件且退出vi:w
:q!:不保存文件退出vi
cat	:查看文件内容

linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹.
例子:将目录A重命名为B
mv A B
例子:将/a目录移动到/b下,并重命名为c
mv /a /b/c

Linux日志中如何查找关键字及其前后的信息
通过grep搜索 xxx.log 日志中的关键字,高亮显示
cat xxx.log | grep "关键字" 
然后再根据上一步查找到的 trace: id 会话id搜索同一个会话的日志即可
cat xxx.log | grep "trace: id]"

参考:https://www.cnblogs.com/wintest/p/11676966.h

五、网络通讯介绍

5.1、 网络分层

5.2、网络基础知识

5.3、TCP

1.概述:分层

实例:

发的时候是封装:

 收的时候是分用:

环回接口:

5.4、UDP

5.5、HTTP

5.6、SOCKET

5.6.1、 BIO(Blocking IO)程序

并发高了,存在阻塞问题,使用BIO会不合适,在jdk 1.4之后就会引入了NIO (不阻塞的IO )。

没有记太多笔记,学习地址可跳转至下方链接(没有打广告,个人博客,自己记录学习而已):

https://www.bilibili.com/video/BV19K4y1Q7Yt?p=2&spm_id_from=pageDriver

5.6.2、 NIO 程序

NIO解决了BIO阻塞问题,还有只能单线程处理一个客户端连接的问题(除非创建多线程处理)

这样的NIO存在的问题?

答:比如1w个链接,只有3个客户端链接有读写事件,但是还是每次都会遍历1w次,这样就浪费资源。

如果优化?工作中实际使用的NIO是如何优化的?

答:优化方式

 NIO的模式讲解图:

         客户端链接对应的socketChannel会注册到selector(多路复用器),selector (ServerSocketChannel) 会去监听有读写事件的客户端链接(socketChannel),把它们存在就绪事件列表rdlist,遍历的时候,只去遍历rdlist(有读写事件的客户端链接)。

        Java语言的跨平台:

windows版本的jdk:select()方法的底层就是调用windows版本的方法创建select

linux版本的jdk:select()方法的底层是调用linux版本的方法创建select

macos版本的jkd:select方法的底层是调用macos版本的方法创建select

所以java语言的跨平台性其实就是,针对于不同版本的系统,jdk在底层方法调用的时候,判断了不同的系统,调用的是不同的方法。

        Java里面创建select()的时候,实际底层是,linux系统的epoll()函数帮我们创建了c语言的级别的epoll()数据结构体。(也可以理解为,c语言帮我们创建了epoll实例对象,存储实现集合)

如何查看linux系统的epoll()函数底层是如何实现的呢?

1.下载linux的源码来看,linux是由c语言和汇编语言写的,看起来难度大

2.百度

3.直接在linux系统里面使用 man 命令 + epoll(),linux系统会给我反馈此函数的一些英文描述

Selector.open()方法底层调用解析:

epoll()底层实现原理:

 

epoll()3个重要函数的讲解:

1.epoll_create()

2.epoll_ctl()

3.epoll_wait()

channel的是否有事件的监听,底层实际是操作系统帮我们监听的:是由操作系统的中断程序来感知响应监控的。

 

 2.epoll_ctl底层的监听,存储channel的原理:

3.epoll_wait()的作用:

while循环去处理有事件发生的channel

有事件发生就跳出阻塞,处理channel

没有事件发生就阻塞,等待事件的发生

​​​​5.6.3、 Netty

5.6.4、 Redis底层基于epoll的实现原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值