【JavaEE初阶】——Linux 基本使用和 web 程序部署(下)

文章目录

  • 前言
  • 一、Linux 常用命令
  •      1.1 ls 命令
  •      1.2 pwd 命令
  •      1.3 cd 命令
  •      1.4 touch 命令
  •      1.5 cat 命令
  •      1.6 mkdir 命令
  •      1.7 rm 命令
  •      1.8 cp 命令
  •      1.9 mv 命令
  •      1.10 man 命令
  •      1.11 less 命令
  •      1.12 head 命令
  •      1.13 tail 命令
  •      1.14 date 命令
  •      1.15 vim 命令
  •      1.16 grep 命令
  •      1.17 ps 命令
  •      1.18 netstat 命令
  • 二、Linux 权限
  •       2.1 用户操作
  •       2.2 文件类型和访问权限
  •       2.3 修改文件权限
  • 三、搭建 Java 部署环境
  •       3.1 yum
  •       3.2 git
  •       3.3 JDK
  •       3.4 Maven
  •       3.5 Tomcat
  •       3.6 MySQL
  • 四、部署 Web 项目到 Linux
  •       4.1 什么是部署
  • 总结


前言


一、Linux 常用命令

1.1 ls 命令

语法: ls [选项] [目录或文件].
功能:
对于目录,该命令列出该目录下的所有子目录与文件。
对于文件,将列出文件名以及其他信息。

常用选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-r 对目录反向排序。
-t 以时间排序。
-R 列出所有子目录下的文件。(递归)

1.2 pwd 命令

语法: pwd
功能:显示用户当前所在的目录

1.3 cd 命令

Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法: cd 目录名
功能:
改变工作目录。将当前工作目录改变到指定的目录下.
举例:
cd .. : 返回上级目录
cd ~:进入用户家目
cd -:返回最近访问目录

认识 Linux 目录结构
Linux 是一个树形目录结构.
几个特殊的目录:
  • / 称为根目录
  • . 称为当前目录
  • .. 称为当前目录的上级目录

绝对路径 vs 相对路径

形如: /usr/share/tomcat/logs/ 以根目录开头的, 称为绝对路径.
形如: ./logs 以 . 或者 .. 开头的, 称为相对路径.
使用 tab 键补全
我们敲的所有的 Linux 命令, 都可以使用 tab 键来尝试补全, 加快效率.
使用 ctrl + c 重新输入
如果命令或者目录敲错了, 可以 ctrl + c 取消当前的命令.

1.4 touch 命令

语法: touch [选项]... 文件...
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的 文件。
举例: touch test.txt

1.5 cat 命令

cat
语法:cat [选项] [文件].
功能: 查看目标文件的内容
常用选项:
-n 对输出的所有行编号

1.6 mkdir 命令

语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统
将自动建立好那些尚不存在的目录,即一次可以建立多级目录
举例
mkdir –p test/test1 : 递归建立多个目录

1.7 rm 命令

语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项:
  • -f 即使文件属性为只读(即写保护),亦直接删除
  • -i 删除前逐一询问确认
  • -r 删除目录及其下所有文件

重要注意事项:
千万不要运行 rm -rf / , 尤其是在公司的生产服务器上.

1.8 cp 命令

语法:cp [选项] 源文件或目录  目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

常用选项
  • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i 或 --interactive 覆盖文件之前先询问用户
  • -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
  • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

举例:

cp  test1.txt(源文件或目录) test2.txt(目标文件或目录)


1.9 mv命令

语法 : mv [ 选项]   源文件或目录    目标文件或目录
功能
1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。

常用选项:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

1.10 man 命令

Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。
语法: man  [选项]  命令。
常用选项:
  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • man man 能够看到 man 手册中的若干个章节及其含义

1.11 less 命令

语法: less  [参数]  文件
功能:查看文件内容. 不会立刻把所有文件内容加载到内存中. 也能进行查找.

常用选项:
  • j k / 方向键: 向上向下滚动屏幕.
  • -N  显示每行的行号
  • /字符串:向下搜索“字符串”的功能
  • n:重复前一个搜索(与 / 或 ? 有关)
  • q: 退出

1.12 head 命令

语法:head [参数]... [文件]... 
功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项
-n<行数> 显示的行数

1.13 tail 命令

语法: tail [必要参数] [选择参数] [文件] 
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

选项:
  • -f 循环读取
  • -n<行数> 显示行数

举例:有一个文件共有100行内容,请取出第50行内容。
# 方法1
head -n50 test > tmp       # 将前50行装入临时文件 tmp
tail -n1 tmp                      # 得到中间行
# 方法2
head -n50 test | tail -n1
关于重定向
Linux 的很多指令, 如 cat head tail 等都是默认输出到 "标准输出" 中, 也就是显示器上的.
可以通过 > 这样的符号把本来要输出到标准输出上的内容写到特定文件中.
这样的操作称为 "重定向".

重定向有三种方式:

1. 标准输入重定向(<)
# 先构造一个文件, 里面添加一些内容.
cat < test.txt
2. 标准输出重定向 (>)
cat test.txt > test2.txt
3. 标准错误重定向 (2>), 注意 2 和 > 之间不能有空格.
# 尝试删除一个不存在的文件
rm aaa > test.txt
# 输出结果, 这个提示并没有被重定向到 test.txt 文件中
rm: cannot remove ‘aaa’: No such file or directory

# 正确做法
rm aaa 2> test.txt

标准输入, 标准输出, 标准错误是三个特殊的文件, 每个进程在启动的时候都会默认打开. 分别对应到键盘, 显示器, 显示器这样的设备.
在 Java 中, 分别对应到 System.in , System.out , System.err。
关于管道
管道是一种古老的 "进程间通信" 方式. 在 Linux 指令中可以使用 | 作为管道标记.
意思是将前一个指令标准输出的内容, 作为第二个指令的标准输入内容。

1.14 date 命令

date 指定格式显示时间: date +"%Y-%m-%d %H:%M:%S"
date 用法:date [OPTION]... [+FORMAT]

1. 在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记。
  • %H : 小时(00..23)
  • %M : 分钟(00..59)
  • %S : 秒(00..61)
  • %X : 相当于 %H:%M:%S
  • %d : 日 (01..31)
  • %m : 月份 (01..12)
  • %Y : 完整年份 (0000..9999)
  • %F : 相当于 %Y-%m-%d

2. 时间戳
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日 (UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

1.15 vim 命令

vim 是一个知名的文本编辑器. 前面学习的 cat, less, head, tail 等命令只能查看文本, 不能编辑文本. 使用 vim 就可以进行编辑了.
vim 就相当于 Windows 的记事本. 只不过功能比记事本强大一些.

1) 创建文件 / 打开文件
语法:vim [文件名]

2) 进入插入模式
vim 打开文件后默认是普通模式. 普通模式下键盘的按键表示一些特殊功能的快捷键. (例如按下 j 并不是输入字母 "j", 而是表示光标往下移动一行). 需要进入插入模式才能进行文本编辑.
使用 i 键可以进入到插入模式. (左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了

3) 保存
在插入模式下不能保存文件, 需要先回到 普通模式 . 按下 Esc 回到普通模式.
在普通模式下输入 :w , 再按下回车, 即可保存文件.

4) 退出
语法:vim [文件名]
在插入模式下不能退出, 需要先回到 普通模式.
在普通模式下输入 :q ,  再按下回车, 即可退出.
(也可以直接使用 :wq 同时执行保存和退出. )

1.16 grep 命令

语法:grep [参数]... [文件]... 
功能:用于查找文件中是否包含指定字符串, 并显示对应的行.
常用选项:
  • -n<行数> 显示的行数
  • -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
  • -r 递归查找. 可以搜索多级目录下的所有文件.
  • --color 高亮查找到的结果
  • --include 指定查找某些文件
  • --exclude 指定排除某些文件

举例:

grep "hello" Hello.java

1.17 ps 命令

语法:ps [参数]...
功能:用于查看当前系统上运行的进程
常用选项
  • a 显示一个终端的所有进程
  • u 以用户为主的格式来显示程序状况
  • x 显示所有程序,不以终端机来区分

举例 :
ps aux   # 显示系统上所有的进程
ps aux | grep "进程名"
ps aux | grep "进程id"

1.18 netstat 命令

语法:netstat [参数]...
功能:查看系统上的网络状态.
常用选项:
  • -a 显示所有正在或不在侦听的套接字
  • -n 显示数字形式地址而不是去解析主机、端口或用户名
  • -p 显示套接字所属进程的PID和名称
举例:
netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端口号"

二、Linux 权限

2.1 用户操作

Linux 下有两种用户:超级用户( root )、普通用户。
  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

我们的服务器买好了, 默认是 root 用户. 但是 root 用户权力比较大, 一旦使用不当可能会造成严重后果 (例如 rm -rf /). 因此我们真正在公司中不会直接使用 root 用户来操作服务器.
1. 创建用户
命令 :useradd [用户名]
功能 :创建新的用户
示例:
useradd test

2. 配置密码
命令 :passwd [用户名]
功能 :设置或修改用户密码
示例:
passwd test
注意, 输入密码的时候, 在控制台中不会有提示. 但实际上已经输入进去了.

3. 切换用户
命令:su [用户名]
功能:切换用户。
例如:要从root用户切换到普通用户user,则使用 su user。
要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

三种角色

访问一个文件的人可能分成三种类别:

  • 文件和文件目录的所有者:u---User
  • 文件和文件目录的所有者所在的组的用户:g---Group
  • 其它用户:o---Others

2.2 文件类型和访问权限

命令 ll 显示了一个文件的详细信息. 解读如下图:

a) 文件类型
  • d:文件夹
  • -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件
b) 基本权限
  • 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • “-” 表示不具有该项权限

2.3 修改文件权限

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式
① 用户表示符+/-=权限字符
  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
  • 用户符号:
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户
实例:
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
# chmod a=x /home/abc.txt
②三位8进制数字
实例:
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt
注意:类似的还有 chgrp, chown 命令. 同学们自行了解.

三、搭建 Java 部署环境

3.1 yum

yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器.
主要应用在Fedora, RedHat, Centos等发行版上.
(包管理器就好比 "应用商店", 我们可以在应用商店上下载一些 app.)

yum 起到的功能和 Maven 的依赖管理功能类似.
使用 Maven 能帮我们方便的安装一些第三方 jar 包, 而 yum 方便我们方便的安装第三方程序.

yum命令使用:
(1)查看软件包列表

yum list | grep [软件包关键字]  
# 注意, 最好要加上 grep, 否则罗列的内容会非常多, 导致机器很卡.

(2)安装软件包(需要管理员权限)

yum install [软件包名字]

(3)卸载软件包(需要管理员权限)
yum remove [软件包名字]
注意事项
  • yum 所有的命令必须保证网络是联通情况下, 才能使用(云服务器一般网络都是良好的).
  • yum install / yum remove 必须具备管理员权限(root 用户).
  • 可以使用 ping www.baidu.com 来检测网络的畅通情况.

3.2 git

1. 查看 git 安装包
# 由于带 git 关键字的软件包很多, 可以在 grep 的时候加上 -w , 表示全字匹配.
yum list | grep git -w

2. 安装 git
yum install git.x86_64

3. git 的基本使用(和 Windows 版本的 git 是一致的. 只是使用命令行操作)
git clone
git add
git commit
git push

3.3 JDK

yum install java-1.8.0-openjdk.x86_64
注意:
yum上的 JDK 是 OpenJDK, 是一个开源版本的 JDK, 和 Oracle 官方的 JDK 略有差别.
此处我 们就使用 OpenJDK 即可. 安装 Oracle JDK 比较麻烦.

使用 java -version 验证是否安装成功.

如果提示 "java 命令找不到" 则说明安装失败.

3.4 Maven

1. 查看 Maven 安装包
yum list | grep maven -w

2. 安装 Maven

yum install maven.noarch

3.验证 Maven

mvn -v
# 输出结果
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 1.8.0_232, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.5.1.el7.x86_64", arch: "amd64", family:
"unix"
此时说明安装成功.

3.5 Tomcat

由于 yum 源上默认的 Tomcat 7 版本, 比较旧了. 我们课堂上使用 Tomcat 8, 需要手动安装, 不能使用yum.

1. 下载 Tomcat 压缩包
下载路径可以参考官网 https://tomcat.apache.org/download-80.cgi
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-
8/v8.5.47/bin/apache-tomcat-8.5.47.zip -O apache-tomcat-8.5.47.zip
如果上面的地址过期了, 不能下载, 则可以在官网上, 通过右键 zip -> 复制链接地址 获得.

2. 解压缩 Tomcat
# 使用 unzip 命令解压缩
unzip apache-tomcat-8.5.47.zip
如果 unzip 命令找不到, 则先 yum install unzip 即可.

3. 修改可执行权限

cd apache-tomcat-8.5.47/bin
# 将所有 .sh 后缀的文件加上可执行权限(后面会介绍)
chmod +x *.sh

4. 启动 Tomcat
sh bin/startup.sh
验证启动成功
# 方法1 查看 tomcat 进程是否存在
ps aux | grep tomcat
# 方法2 查看端口 8080 是否被绑定
netstat -anp | grep 8080
# 方法3 使用 curl 命令访问默认 demo
curl 127.0.0.1:8080
如果进程存在或者端口状态正确(LISTEN状态)或者能够访问到默认主页, 说明启动成功.

5. Tomcat 的目录结构
Linux 的 Tomcat 目录结构和 Windows 完全一致. (就是同一个 zip 包解压缩出来的)

6. 外网访问 tomcat 默认 demo
在浏览器地址栏中:
http://[服务器外网ip]:8080/
即可看到默认的页面

在外网访问这个页面之前需要先开启服务器的 "安全组" 功能.

登陆自己的云服务账户, 在主页中找到 控制台 -> 自己的服务器 -> 安全组

需要配置安全组, 允许外部主机访问服务器的 8080 端口.

备注: 安全组配置界面如果找不到, 可以随时咨询云服务器客服.

(1) 选择加入安全组

(2) 选择新建安全组
(3) 点击新建按钮
(4) 选择安全组的模板, 推荐使用第二个模板

(5) 在任意一行规则的地方, 点击插入, 新增一行安全组规则即可.

3.6 MySQL

MySQL 同样也可以使用 yum 安装. 但是要修改一些配置, 稍微复杂一些.
可以参考陈沛鑫老师写的一个知乎上的文章.
https://zhuanlan.zhihu.com/p/49046496
yum 上的是 MariaDB, 和纯正的 MySQL 还不太一样.
MariaDB 和 MySQL 的关系, 类似于 CentOS 和 RedHat 的关系. 从使用角度上, MariaDB 和
MySQL 之间都是兼容的.
在数据库运行过程中出现问题, 可以查看 MySQL 的错误日志.
在 MySQL 中通过这个命令, 获取到日志的路径

使用 vim 或 less 查看该文件内容即可

四、部署 Web 项目到 Linux

4.1 什么是部署

工作中涉及到的 "环境"
开发环境 : 程序猿写代码用的机器.
测试环境 : 测试人员测试程序使用的机器. 一般是退役的部署机器.
生产环境(线上环境) : 最终项目发布时所使用的机器. 对稳定性要求很高.

把程序拷贝安装到生产环境上, 这个过程称为 "部署". 也叫 "上线".
这个过程需要拷贝对应的 .class 文件和依赖的资源文件(各种配置文件, html等)

一旦程序部署成功, 那么这个程序就能被外网中千千万万的普通用户访问到.

换句话说, 如果程序有 BUG, 这个 BUG 也就被千千万万的用户看到了.

部署过程至关重要, 属于程序开发中最重要的一环. 一旦部署出现问题, 极有可能导致严重的事故(服务器不可用之类的).
为了防止部署出错, 一般公司内部都有一些自动化部署工具(如 Jenkins 等).
当前我们先使用手工部署的方式来完成部署.

1. 使用 git 传输代码
将本地代码上传到 github / 码云上
过程略, 参考之前的 git 使用过程.
通过 git 下载代码
# 进入用户家目录
cd ~
# 创建目录保存项目
mkdir project
cd project
# 使用 git 下载代码
git clone [项目链接]

2. 数据库建表
按照之前的数据库建表脚本, 在服务器上运行, 建立相同的表结构.
mysql -u[数据库用户名] -p[数据库密码] < [数据库脚本].sql

3. 构建项目并打包
切换到项目的主目录(包含 pom.xml的目录), 使用 mvn 打包项目
mvn package
此时在 target 目录下就会生成对应的 war 包.
(曾经我们主要是在 IDEA 中通过图形化工具来使用 mvn. 事实上 mvn 本质是一个基于命令行的工具.曾经在 IDEA 上进行的 mvn 操作在 Linux 中同样也可以通过命令行来完成.)

4. 拷贝到 Tomcat 中
将 war 包拷贝到 Tomcat 的 webapps 目录中.
cp [war包名字] [tomcat webapps目录]
稍等片刻, Tomcat 会自动解压缩 war 包, 完成部署.
注意: 如果该项目之前部署过, 需要先删除之前的包.

5. 验证
在浏览器上访问项目的链接. (按照项目的功能进行验证).
1. 验证账户注册登录
2. 验证展示博客列表
3. 验证新增博客
4. 验证展示博客内容
5. .....

注意事项:
要开启 Tomcat 对应端口的安全组(8080)
代码中的数据库的地址和账号密码可能需要调整
还可以把项目链接生成一个二维码(百度搜 "二维码生成"), 就可以用手机扫码访问.

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/197907.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ABAP算法 模拟退火

模拟退火算法 算法原理及概念本文仅结合实现过程做简述 模拟退火算法是一种解决优化问题的算法。通过模拟固体退火过程中的原子热运动来寻找全局最优解。在求解复杂问题时&#xff0c;模拟退火算法可以跳出局部最优解获取全局最优解。 模拟退火算法包含退火过程和Metropolis算法…

八、Lua数组和迭代器

一、Lua数组 数组&#xff0c;就是相同数据类型的元素按一定顺序排列的集合&#xff0c;可以是一维数组和多维数组。 在 Lua 中&#xff0c;数组不是一种特定的数据类型&#xff0c;而是一种用来存储一组值的数据结构。 实际上&#xff0c;Lua 中并没有专门的数组类型&#xf…

供配电系统智能化监控

供配电系统智能化监控是指利用先进的监测技术、自动化控制技术、计算机网络技术等&#xff0c;对供配电系统进行实时、全方位的监测和控制&#xff0c;以实现供配电系统的安全、稳定、高效运行。 供配电系统智能化监控的主要功能包括&#xff1a; 实时数据采集&#xff1a;通过…

使用 SwiftUI 创建一个灵活的选择器

文章目录 前言可选择协议自定义化FlexiblePicker 逻辑FlexiblePicker 视图总结 前言 最近&#xff0c;在我正在开发一个在 Dribbble 上找到的设计的 SwiftUI 实现时&#xff0c;我想到了一个点子&#xff0c;可以通过一些酷炫的筛选器扩展该项目以缩小结果列表。 我决定筛选视…

为什么我不能给shopify的图片添加alt

首先我们要明白是什么ALT标签&#xff0c;为什么要添加这个标签&#xff0c;这个标签有什么用 ALT标签是什么 ALT属性是HTML的一部分&#xff0c;它为那些无法查看图像的用户提供替代的文本描述。 ALT标签有什么用 使用ALT属性还可以帮助搜索引擎爬虫更好地理解您的网站内容。有…

OpenSSL 使用AES对文件加解密

AES&#xff08;Advanced Encryption Standard&#xff09;是一种对称加密算法&#xff0c;它是目前广泛使用的加密算法之一。AES算法是由美国国家标准与技术研究院&#xff08;NIST&#xff09;于2001年发布的&#xff0c;它取代了原先的DES&#xff08;Data Encryption Stand…

sed命令

目录 一、sed 1.sed命令选项 2.语法选项 3.sed脚本格式 4.搜索替代 5.分组后向引用 1.提取版本号&#xff1a; 2.提取IP地址 3.提取数字权限 6.变量 二、免交互 1.多行重定向 2.免交互脚本 总结&#xff1a;本章主要介绍了seq和免交互的用法及相关知识 一、sed s…

p9 第55题 两个有序单链表L1,L2求交的操作,得到新的链表L3,L3任然保持有序的状态 中国计量大学2016年数据结构题(c语言代码实现)

本题代码如下 linklist merge(linklist* L1, linklist* L2)//将两个链表的公共元素合并产生新链表 {lnode* ra (*L1)->next, * rb (*L2)->next;lnode* r;lnode* s;lnode* C (lnode*)malloc(sizeof(lnode));C->next NULL;r C;while (ra && rb)//循环跳出…

泛微 E-Office sample权限绕过+文件上传组合漏洞Getshell

0x01 产品简介 泛微E-Office是一款标准化的协同 OA 办公软件&#xff0c;泛微协同办公产品系列成员之一,实行通用化产品设计&#xff0c;充分贴合企业管理需求&#xff0c;本着简洁易用、高效智能的原则&#xff0c;为企业快速打造移动化、无纸化、数字化的办公平台。 0x02 漏…

lv11 嵌入式开发 WDT实验 12

目录 1 WDT简介 2 Exynos4412下的WDT控制器 2.1 概述 2.2 WDT的特性 2.3 工作原理 2.4 其他细节 3 WDT寄存器详解 3.1 WTCON控制寄存器 3.2 WTDAT 实时中断寄存器 3.3 WTCNT 递减计数器 3.4 WTCLRINT清除中断寄存器 4 WDT编程 1 WDT简介 Watch Dog Timer即看门狗定…

探索三种生成模型:基于DDPMs、NCSNs和SDEs方法的Diffusion

探索三种生成模型&#xff1a;基于DDPMs、NCSNs和SDEs方法的Diffusion 去噪扩散概率模型&#xff08;DDPMs&#xff09;正向过程反向过程 噪声条件得分网络&#xff08;NCSNs&#xff09;正向过程初始化训练 NCSNs生成样本 反向过程 随机微分方程&#xff08;SDEs&#xff09;原…

自然资源科普交互大屏助力自然资源的保护

在当代社会&#xff0c;自然资源的科学管理和可持续利用变得愈发重要。为了提高公众对于自然资源的认知和理解&#xff0c;科普交互大屏成为一个新兴的工具。它通过生动的图像和实时数据展示&#xff0c;以及与观众的互动方式&#xff0c;让人们更深入地了解自然资源和环境保护…

eNSP防火墙USG6000V使用Web界面登入教程

文章目录 登入流程1、下载USG6000V的镜像包2、导入USG6000V的镜像包3、配置防火墙web页面4、修改本机vmnet1网卡的ipv4地址5、在eNSP上添加云6、配置防火墙管理地址&#xff0c;开启http服务7、关闭电脑防火墙8、访问web页面 登入流程 1、下载USG6000V的镜像包 链接&#xff…

数据库应用:MongoDB 库与集合管理

目录 一、理论 1.MongoDB用户管理 2.MogoDB库管理 3.MogoDB集合管理 二、实验 1.MongoDB用户管理 2.MogoDB库管理 3.MogoDB集合管理 三、问题 1.不显示新创建的数据库 2.插入数据报错 3.删除指定数据库报错 一、理论 1.MongoDB用户管理 (1) 内置角色 数据库用户…

Postman进阶功能实战演练

Postman除了前面介绍的一些功能&#xff0c;还有其他一些小功能在日常接口测试或许用得上。今天&#xff0c;我们就来盘点一下&#xff0c;如下所示&#xff1a; 1.数据驱动 想要批量执行接口用例&#xff0c;我们一般会将对应的接口用例放在同一个Collection中&#xff0c;然…

ZYNQ_project:IIC_EEPROM

EEPROM简介&#xff1a; EEPROM(Electrically Erasable Progammable Read Only Memory&#xff0c; E2PROM)是指带电可擦可编程只读存 储器&#xff0c;是一种常用的非易失性存储器&#xff08;掉电数据不丢失&#xff09;&#xff0c; E2PROM 有多种类型的产品&#xff0c;我…

【计算机网络学习之路】序列化,反序列化和初识协议

文章目录 前言一. 序列化和反序列化1.自己实现2. JSON 二. 初识协议结束语 前言 本系列文章是计算机网络学习的笔记&#xff0c;欢迎大佬们阅读&#xff0c;纠错&#xff0c;分享相关知识。希望可以与你共同进步。 本篇博文讲解应用层的序列化和反序列化&#xff0c;还有见一…

Linux基础项目开发1:量产工具——显示系统(二)

前言&#xff1a; 前面我们已经对这个项目的基本框架有了一个初步的了解与认识&#xff0c;要实现显示管理器与输入管理器&#xff0c;有输入有输出基本就实现这个项目的大部分功能了&#xff0c;首先我们先来做显示系统&#xff0c;对于上层系统为了让程序更好扩展&#xff0c…

Python分享之字符串格式化 (%操作符)

在许多编程语言中都包含有格式化字符串的功能&#xff0c;比如C和Fortran语言中的格式化输入输出。Python中内置有对字符串进行格式化的操作%。 模板 格式化字符串时&#xff0c;Python使用一个字符串作为模板。模板中有格式符&#xff0c;这些格式符为真实值预留位置&#xff…

【Android Jetpack】Hilt 依赖注入框架

文章目录 依赖注入DaggerHiltKoin添加依赖项Hilt常用注解的含义HiltAndroidAppAndroidEntryPointInjectModuleInstallInProvidesEntryPoint Hilt组件生命周期和作用域如何使用 Hilt 进行依赖注入 依赖注入 依赖注入是一种软件设计模式&#xff0c;它允许客户端从外部源获取其依…
最新文章