项目5-博客系统5+程序部署(Linux基本使用)

1.Linux的基本使用

1.1 Linux 是什么

Linux 是⼀个操作系统.
和 Windows 是 "并列" 的关系.

1.2 Unix & Linux 发展历程图

1.1969−1970 年, ⻉尔实验室的 Dennis Ritchie (左) 和 Ken Tompson (右) 开发了 Unix 操作系统.

2. Unix ⽕了之后, 衍⽣出很多的分⽀. 其中有⼀⽀为 "Minix". 由荷兰的Andrew S. Tanenbaum 教授开发. 源代码开放给⼤学教学和研究⼯作. (MINIX 含义为 "⼩型的UNIX")
3. 1991 年, 还在读⼤学的 芬兰⼈ Linus Benedict Torvalds (1969年12⽉28⽇出⽣, 当时 22 岁) 基于Minix 的启发, 开发出了 Linux 的第⼀个版本
经过这么多年的发展, Linux 已经成为 世界第⼀⼤操作系统

1.3 Linux 发⾏版

Linux 严格意义来说只是⼀个 "操作系统内核".
⼀个完整的操作系统 = 操作系统内核 + 配套的应⽤程序.
由于 Linux 是⼀个完全开源免费的内核, 因此有些公司/开源组织⼜基于 Linux 内核, 提供了不同的配套程序. 这就构成了不同的 "发⾏版".
企业中主要使⽤的发⾏版是 RedHat (红帽), CentOS(RedHat的社区免费版本)和ubuntu. 但是 RedHat是收费的, CentorOS官⽅在2020年12⽉份通知: 2021年底停⽌维护CentOS8, 2024年6⽉30⽇停⽌维护CentOS7,后续将⽆法获得官⽅升级和补丁.

1.4 Linux的优势

1. 开源(意味着免费, 便宜)
2. 稳定(Linux 可以运⾏很多年, 都不会发⽣重⼤问题)
3. 安全(Linux 只有管理员或者特定⽤⼾才能访问Linux内核)
4. ⾃由(不会被强加商业产品和服务)
5. 社区⽀持(Linux 在全球社区都⾮常活跃和使⽤⼴泛, 有很多志愿者在线帮⼤家解决问题)

1.5 Linux的基础命令

Linux 虽然也有图形化界⾯, 但是在 服务器 / 嵌⼊式设备上往往都是通过命令⾏的⽅式操作的.因此学习 Linux 命令就是使⽤ Linux 的重要基础
使⽤命令相⽐于使⽤图形界⾯主要有以下好处:
节省系统资源: 运⾏图形界⾯需要让系统付出⼀些额外的资源开销. 尤其是对于配置⽐较低的嵌⼊式设备, 这⼀点⾄关重要.
节省⽹络带宽: 如果通过⽹络访问服务器, 使⽤图形界⾯需要传输⼀帧⼀帧的图像, ⽽使⽤命令只
需要传输简单的字符串.
便于批量执⾏任务: 可以通过⼀些 "脚本" 代码 (⽐如 Linux Shell) 来批量执⾏⼀些任务, 完成⼀些简单的编程⼯作. (⽐如定时备份⽂件, 删除⽂件等).

 Windows 也有命令(也就是 cmd), 只是对于普通⽤⼾来说很少使⽤.

系统编程 & ⽹络编程
Linux ⾃⾝提供了⼀些 API, 供程序猿调⽤来完成⼀些更复杂的编程任务(⽐如⽂件操作, 多线程编程,socket 编程等).
但是由于 Java 跨平台的特性, 这部分功能已经被 Java ⾃⾝封装好了 (流对象, Thread 对象, Socket 对象等). 所以这部分内容不必再学习了.
部署 JavaWeb 项⽬
我们⾃⼰写的 web 程序, 要想让其他的⽤⼾能够访问, 就需要发布到服务器上

所以, 对于 Java 程序员来说, 关于 Linux 重点学习 基础命令 和 项⽬部署 即可 

2. Linux 环境搭建

要想学习 Linux , 需要先有⼀个 Linux 的环境.

2.1 环境搭建⽅式

主要有四种:
1. 直接安装在物理机上. 但是Linux 桌⾯使⽤起来⾮常不友好. 所以不建议. 
2. 使⽤虚拟机软件, 将 Linux 搭建在虚拟机上. 但是由于当前的虚拟机软件(如 VMWare 之类的)存在⼀些 bug , 会导致环境上出现各种莫名其妙的问题, ⽐较折腾. 
3. 使⽤ WSL (Windows Subsystem for Linux). 这个是 Windows 近⼏年开发的新功能, 在 Windows
系统内集成了⼀个 Linux. 但是⽬前这个技术还不够成熟.
4. 使⽤云服务器, 可以直接在 腾讯云, 阿⾥云或华为云 等服务器⼚商处直接购买⼀个云服务器. 

使⽤云服务器不仅环境搭建简单, 避免折腾, 同时还有⼀个最⼤的好处, 部署在云服务器上的项⽬可以直接被外⽹访问到, 这个时候就和⼀个公司发布⼀个正式的⽹站没有任何区别. 也就能让我们⾃⼰写的程序真的去给别⼈去使⽤

2.2 使⽤云服务器 

2.3 使⽤终端软件连接到 Linux

2.3.1 终端软件

终端软件是⼀类⼯具软件, 可以和远程的主机建⽴⽹络连接, 从⽽对主机进⾏⼀些操作.
常⻅的终端软件:
• XShell
Putty
MobaXTerm
Iterm2
SecureCRT
......

3. Linux 常⽤命令

ls

语法: ls [选项] [⽬录或⽂件]
功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信
息。
常⽤选项:
-a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。
-d 将⽬录象⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。 如:ls ‒d 指定⽬录
-k 以 k 字节的形式表⽰⽂件的⼤⼩。ls ‒alk 指定⽂件
-l 列出⽂件的详细信息。
-r 对⽬录反向排序。
-t 以时间排序。
-R 列出所有⼦⽬录下的⽂件。(递归)

pwd

语法: pwd
功能:显⽰⽤⼾当前所在的⽬录

cd

Linux系统中,磁盘上的⽂件和⽬录被组成⼀棵⽬录树,每个节点都是⽬录或⽂件。
语法: cd ⽬录名
功能: 改变⼯作⽬录。将当前⼯作⽬录改变到指定的⽬录下.
举例:
# 返回上级⽬录
cd ..
# 进⼊⽤⼾家⽬录
cd ~
# 返回最近访问⽬录
cd

认识 Linux ⽬录结构

Linux 是⼀个树形⽬录结构.
⼏个特殊的⽬录:
/ 称为根⽬录
. 称为当前⽬录
.. 称为当前⽬录的上级⽬录
绝对路径 vs 相对路径
形如: /usr/share/tomcat/logs/ 以根⽬录开头的, 称为绝对路径.
形如: ./logs . 或者 .. 开头的, 称为相对路径.
使⽤ tab 键补全
我们敲的所有的 Linux 命令, 都可以使⽤ tab 键来尝试补全, 加快效率.
使⽤ ctrl + c 重新输⼊
如果命令或者⽬录敲错了, 可以 ctrl + c 取消当前的命令.

touch

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

touch test.txt

cat

语法:cat [选项] [⽂件]
功能: 查看⽬标⽂件的内容
常⽤选项:
-n 对输出的所有⾏编号
cat test.txt

mkdir

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

rm

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

rm test.txt  

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

cp

语法:cp [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
功能: 复制⽂件或⽬录
说明: cp指令⽤于复制⽂件或⽬录,如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存
在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中。若同时指定多个⽂件或⽬录,⽽最
后的⽬的地并⾮⼀个已存在的⽬录,则会出现错误信息
常⽤选项:
-f 或 --force 强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在
-i 或 --interactive 覆盖⽂件之前先询问⽤⼾
-r递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号
链接,则⼀律视为普通⽂件处理
-R 或 --recursive递归处理,将指定⽬录下的⽂件及⼦⽬录⼀并处理
举例:
cp test1.txt test2.txt

mv

语法: mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
功能:
1. 视mv命令中第⼆个参数类型的不同(是⽬标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其移
⾄⼀个新的⽬录中。
2. 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬
录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。
3. 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源
⽂件均移⾄⽬标⽬录中。
常⽤选项
-f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
-i :若⽬标⽂件 (destination) 已经存在时,就会询问是否覆盖!
举例
mv test1.txt test2.txt

tail

语法: tail [必要参数] [选择参数] [⽂件]
功能:⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。
选项:
-f 循环读取
-n<⾏数> 显⽰⾏数
举例:
tail -10 t1.txt

vim

vim 是⼀个知名的⽂本编辑器. 使⽤ vim 可以进⾏⽂本编辑了.
vim 就相当于 Windows 的记事本. 只不过功能⽐记事本强⼤⼀些.
1) 创建⽂件 / 打开⽂件
vim [ ⽂件名 ]
2) 进⼊插⼊模式
vim 打开⽂件后默认是普通模式. 普通模式下键盘的按键表⽰⼀些特殊功能的快捷键. (例如按下 j 并不
是输⼊字⺟ "j", ⽽是表⽰光标往下移动⼀⾏). 需要进⼊插⼊模式才能进⾏⽂本编辑.
使⽤ i 键可以进⼊到插⼊模式. (左下⻆提⽰ --INSERT-- ) 然后就可以像记事本⼀样正常编辑了.
3) 保存
在插⼊模式下不能保存⽂件, 需要先回到 普通模式 . 按下 Esc 回到普通模式.
在普通模式下输⼊ :w , 再按下回⻋, 即可保存⽂件.
4) 退出
在插⼊模式下不能退出, 需要先回到 普通模式.
退出时, 分以下情况:
① ⽂件未修改: 输⼊ :q , 再按下回⻋, 即可退出
② ⽂件修改并保存: 使⽤ :wq 同时执⾏保存和退出.
③ ⽂件修改, 但不希望保存: 使⽤ :wq! 进⾏强制退出
grep
语法:grep [参数]... [⽂件]...
功能:⽤于查找⽂件中是否包含指定字符串, 并显⽰对应的⾏.
选项:
-n<⾏数> 显⽰的⾏数
-w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, ⽽不仅仅是⼀个单词的⼀部分.
-r 递归查找. 可以搜索多级⽬录下的所有⽂件.
--color ⾼亮查找到的结果
--include 指定查找某些⽂件
--exclude 指定排除某些⽂件
举例:
grep "hello" Hello.java

 ps

语法:ps [参数]...
功能:⽤于查看当前系统上运⾏的进程
选项:
a 显⽰⼀个终端的所有进程
u 以⽤⼾为主的格式来显⽰程序状况
x 显⽰所有程序, 不⽌是会话中的进程
e 显⽰所有进程, 包括系统守护进程
f 显⽰完整格式输出
举例:
ps aux # 显⽰系统上所有的进程
ps aux | grep " 进程名 "
ps aux | grep " 进程 id"

netstat

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

管道

管道是⼀种古⽼的 "进程间通信" ⽅式. 在 Linux 指令中可以使⽤ | 作为管道标记.
意思是将前⼀个指令标准输出的内容, 作为第⼆个指令的标准输⼊内容.
举例:
ps -ef|grep "java"
ps -ef|head -10
tail -f log.txt|grep "Exception"

4. 搭建 Java 部署环境

4.1 apt

apt(Advanced Packaging Tool), Linux软件包管理⼯具. ⽤于在Ubuntu、Debian和相关Linux发⾏版
上安装、更新、删除和管理deb软件包.
⼤多数apt命令必须以具有sudo权限的⽤⼾⾝份运⾏.

4.1.1 apt常⽤命令

列出所有软件包
apt list
这个命令输出所有包的列表, 内容⽐较多, 可以使⽤grep命令过滤输出.
apt list |grep "java"
...
未完

5.部署 Web 项⽬到 Linux

5.1 什么是部署

⼯作中涉及到的 "环境"
开发环境: 开发⼈员写代码⽤的机器.
测试环境: 测试⼈员测试程序使⽤的机器.
⽣产环境(线上环境): 最终项⽬发布时所使⽤的机器. 对稳定性要求很⾼.
把程序安装到⽣产环境上, 这个过程称为 "部署". 也叫 "上线".
⼀旦程序部署成功, 那么这个程序就能被外⽹中千千万万的普通⽤⼾访问到.
换句话说, 如果程序有 BUG, 这个 BUG 也就被千千万万的⽤⼾看到了.
部署过程⾄关重要, 属于程序开发中最重要的⼀环. ⼀旦部署出现问题, 极有可能导致严重的事故(服务器不可⽤之类的).
为了防⽌部署出错, ⼀般公司内部都有⼀些⾃动化部署⼯具(如 Jenkins 等). 当前我们先使⽤⼿⼯部署的⽅式来完成部署.

5.2 环境配置

程序正常运⾏, 需要保证环境和程序都要正确, 我们需要先设置环境

数据准备

按照之前的数据库建表脚本, 在服务器上运⾏, 建⽴相同的表结构.
进入数据库

mysql -root -p

建库
-- 建表SQL
create database if not exists java_blog_spring charset utf8mb4;
USE java_blog_spring;
-- 用户表
DROP TABLE IF EXISTS java_blog_spring.user;
CREATE TABLE java_blog_spring.user(
 `id` INT NOT NULL AUTO_INCREMENT,
 `user_name` VARCHAR ( 128 ) NOT NULL,
 `password` VARCHAR ( 128 ) NOT NULL,
 `github_url` VARCHAR ( 128 ) NULL,
 `delete_flag` TINYINT ( 4 ) NULL DEFAULT 0,
 `create_time` DATETIME DEFAULT now(),
 `update_time` DATETIME DEFAULT now(),
 PRIMARY KEY ( id ),
UNIQUE INDEX user_name_UNIQUE ( user_name ASC )) ENGINE = INNODB DEFAULT
CHARACTER
SET = utf8mb4 COMMENT = '用户表';
-- 博客表
drop table if exists java_blog_spring.blog;
CREATE TABLE java_blog_spring.blog (
 `id` INT NOT NULL AUTO_INCREMENT,
 `title` VARCHAR(200) NULL,
 `content` TEXT NULL,
 `user_id` INT(11) NULL,
 `delete_flag` TINYINT(4) NULL DEFAULT 0,
 `create_time` DATETIME DEFAULT now(),
 `update_time` DATETIME DEFAULT now(),
 PRIMARY KEY (id))
ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '博客表';
-- 新增用户信息
insert into java_blog_spring.user (user_name, password,github_url)values
("lay","107","https://www.weibo.com/u/2706896955?c=spr_qdhz_bd_360ss_weibo_mr");
insert into java_blog_spring.user (user_name, password,github_url)
values("muyierf","123456","https://gitee.com/muyierf");
insert into java_blog_spring.blog (title,content,user_id) values("第1篇博
客","lay的筑梦之旅",1);
insert into java_blog_spring.blog (title,content,user_id) values("第1篇博
客","muyierf的第一篇博客",2);

出现问题:Invalid default value for ‘create_time‘

通过搜索,发现是因为MySQL版本低

选择了删除升级版本的做法

Centos7下彻底删除Mysql, 重新安装Mysql_centos7删除mysql重新安装-CSDN博客

Centos7完全卸载MySQL & 安装 & 启动_centos7卸载mysql重新安装-CSDN博客

程序配置⽂件修改

实际⼯作中, 开发环境, 测试环境以及⽣产环境的配置都是不⼀样的
⽐如mysql的⽤⼾名和密码
我们可以针对不同的环境, 设置不同的配置

多平台⽂件配置

针对不同平台创建不同的配置⽂件, 要求名字为application-XXX.yml或者application-XXX.properties
以下以application-XXX.yml为例
固定格式, 只有后⾯的字⺟可以修改
在配置⽂件⾥写不同的内容
application-dev.yml

application-prod.yml

 在主配置⽂件 application.yml 中指定配置⽂件, 并删除数据库相关配置

5.3 构建项⽬并打包

在本地使⽤maven进⾏打包
1. 如果Test代码中有与环境配置相关的操作(⽐如数据库相关的操作), 打包会失败, 点击下图①处的图标, 可以跳过测试
2. 点击clean->package

5.3 上传Jar包到服务器, 并运⾏

1. 上传Jar包

直接拖动打好的jar包到xshell窗⼝即可完成⽂件的上传

 java -jar demo-0.0.1-SNAPSHOT.jar

端口被占有了 

看服务器端口有没有开放

1.先看本机的应用是否启动成功

curl http://127.0.0.1:9090/blog_login.html

开放的话就可以获取页面内容

 有该页面就启动成功!!!

(排除服务已启动)

2.端口号的的问题

阿里云服务器开放端口的正确方式(超详细图文教程)_阿里云开放端口-CSDN博客

无法通过公网访问阿里云服务器下的tomcat部署的项目_为什么通过公网ip访问不了tomcat-CSDN博客 ps -ef|grep java 查看进程
kill -9杀死进程

部署成功!!!

重新测试,发现css加载不出来,重新clean解决问题。

经过测试,发现添加博客接口有问题,执行一次添加一篇博客操作,却添加了两条信息。

经检查接口/add有错误,执行了两次语句

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

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

相关文章

jvm参数介绍

JVM参数是指在Java应用程序启动时&#xff0c;通过命令行或者配置文件等方式传递给JVM的一些参数和选项。这些参数主要用于配置JVM的内存、垃圾回收、线程等相关参数。下面是一些常见的JVM参数简介&#xff1a; 1. -Xmx&#xff1a;设置应用程序可使用的最大内存量&#xff0c;…

C++ | Leetcode C++题解之第30题串联所有单词的子串

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> findSubstring(string &s, vector<string> &words) {vector<int> res;int m words.size(), n words[0].size(), ls s.size();for (int i 0; i < n && i m …

文献阅读:Viv:在 web 上多尺度可视化高分辨率多重生物成像数据

文献介绍 「文献题目」 Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web 「研究团队」 Nils Gehlenborg&#xff08;美国哈佛医学院&#xff09; 「发表时间」 2022-05-11 「发表期刊」 Nature Methods 「影响因子」 47.9 「DOI…

GitHub repository - Code - Issues - Pull Requests - Wiki

GitHub repository - Code - Issues - Pull Requests - Wiki 1. Code2. Issues3. Pull Requests4. WikiReferences 1. Code 显示该仓库中的文件列表。仓库名下方是该仓库的简单说明和 URL. 2. Issues 用于 BUG 报告、功能添加、方向性讨论等&#xff0c;将这些以 Issue 形式进…

初识DOM

目录 前言: 1.初识DOM: 1.1DOM树: 1.2节点&#xff08;Node&#xff09;: 1.2.1元素节点&#xff1a; 1.2.2属性节点&#xff1a; 1.2.3文本节点&#xff1a; 1.3Document对象: 2.操作网页元素: 2.1找出元素&#xff1a; 2.1.1document.getElementById(id)&#xff1…

【入门】时钟旋转

时间限制 : 1 秒 内存限制 : 128 MB 时钟上面的时针从m时走到n时旋转了多少度&#xff1f;&#xff08;m<n&#xff0c;且m和n都是1~12之间的整数&#xff09; 输入 2个整数m和n 输出 一个整数代表时针旋转的度数 样例 输入 1 4 输出 90 提示 基础问题 #includ…

2011年认证杯SPSSPRO杯数学建模A题(第二阶段)客机水面迫降时的姿态全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 A题 客机水面迫降时的姿态 原题再现&#xff1a; 2009 年 1 月 15 日下午&#xff08;美国东部时间&#xff09;&#xff0c;US Airways 所属第 1549 航班&#xff08;空中客车 A320 客机&#xff09;在起飞后不久在纽约哈德逊河紧急迫降。经及…

Android MVVM架构学习——ViewModel DataBinding

关于MVVM架构&#xff0c;我并不想花篇幅去做重复性的描述&#xff0c;网上一搜都是一堆讲解&#xff0c;大家可以自行了解&#xff0c;我所做的只是以最简单的例子&#xff0c;最有效的步骤&#xff0c;从零开始&#xff0c;去实现一个相对有点学习参考价值的项目。 先来看本…

鸿蒙开发快速入门

基本概念 ArkTS 因为ArkTS是基于Type Script扩展而来&#xff0c;是Type Script的超集&#xff0c;所以也可以关注一下Type Script的语法来理解ArkTS的语法 ArkUI HarmonyOS提供了一套UI开发框架&#xff0c;即方舟开发框架&#xff08;ArkUI框架&#xff09;。方舟开发框架…

Cohere Command R+:企业级可扩展大模型

Command R 是一种最先进的 RAG 优化模型&#xff0c;旨在处理企业级工作负载&#xff0c;并首先在 Microsoft Azure 上提供 今天&#xff0c;我们推出了 Command R&#xff0c;这是我们最强大、可扩展的大型语言模型 &#xff08;LLM&#xff09;&#xff0c;专为在实际企业用…

Go语言图像处理深入指南:探索 `image/draw` 标准库

Go语言图像处理深入指南&#xff1a;探索 image/draw 标准库 引言基础知识图像类型颜色模型draw 包概览 image/draw 的基本用法创建和操作图像复制和粘贴图像遮罩和图像合成 高级技巧自定义图像处理性能优化多线程图像处理 实战案例图像滤镜实现动态图像生成图像处理工具开发 总…

2024年MathorCup妈妈杯C题终极资料分享(微调后可直接提交的数据结果+多种可视化呈现)

【腾讯文档】2024年妈杯认证杯资料汇总说明 https://docs.qq.com/doc/DSExyRGhNUm1pTHh4 我们直接将我们认为最为合适数据结果以及最好用的运行代码进行了整理以便大家可以在最后一天无法运行代码急需结果或者不会写代码时&#xff0c;提供帮助。、 % 数据加载 data readtab…

Vivado编译常见错误合集(一)

引言&#xff1a;本文对Vivado编译时常见的错误或者关键警告做一些梳理汇总&#xff0c;便于日后归纳总结。 1. 普通IO引脚约束为时钟时报错。 原因&#xff1a;Xilinx Vivado开发环境编译HDL时&#xff0c;对时钟信号设置了编译规则&#xff0c;如果时钟由于硬件设计原因分配…

Ceph [OSDI‘06]论文阅读笔记

原论文&#xff1a;Ceph: A Scalable, High-Performance Distributed File System (OSDI’06) Ceph简介及关键技术要点 Ceph是一个高性能、可扩展的分布式文件系统&#xff0c;旨在提供出色的性能、可靠性和可扩展性。为了最大化数据和元数据管理的分离&#xff0c;它使用了一…

MYSQL执行过程和顺序详解

一、前言 1.1、说明 就MySQL在执行过程、sql执行顺序&#xff0c;以及一些相关关键字的注意点方面的学习分享内容。 在参考文章的基础上&#xff0c;会增加自己的理解、看法&#xff0c;希望本文章能够在您的学习中提供帮助。 如有错误的地方&#xff0c;欢迎指出纠错&…

vue中使用axios获取不到响应头Content-Disposition的解决办法

项目中&#xff0c;后端返回的文件流; 前端需要拿到响应头里的Content-Disposition字段的值&#xff0c;从中获取文件名 在控制台Headers中可以看到相关的字段和文件名&#xff0c;但是在axios里面却获取不到 如果想要让客户端访问到相关信息&#xff0c;服务器不仅要在head…

嵌入式单片机 TTL电平、232电平、485电平的区别和联系

一、简介 TTL、232和485是常见的串口通信标准&#xff0c;它们在电平和通信方式上有所不同&#xff0c; ①一般情况下TTL电平应用于单片机外设&#xff0c;属于MCU/CPU等片外外设&#xff1b; ②232/485电平应用于产品整体对外的接口&#xff0c;一般是片外TTL串口转232/485…

<计算机网络自顶向下> CDN

视频服务挑战 规模性异构性&#xff1a;不同用户有不同的能力&#xff08;比如有线接入和移动用户&#xff1b;贷款丰富和受限用户&#xff09;解决方法是&#xff1a;分布式的应用层面的基础设施CDN 多媒体&#xff1a;视频 视频是固定速度显示的一系列图像的序列&#xff…

【ubuntu20.04】安装GeographicLib

下载地址 GeographicLib: Installing GeographicLib 我们是ubuntu20.04 &#xff0c;所以下载第一个 GeographicLib-2.3.tar.gz 接着跟着官方步骤安装&#xff0c;会出错&#xff01;&#xff01;&#xff01;&#xff01;马的 官方错误示例&#xff1a;tar xfpz Geographi…

YOLOV5 + 双目相机实现三维测距(新版本)

文章目录 YOLOV5 双目相机实现三维测距&#xff08;新版本&#xff09;1. 项目流程2. 测距原理3. 操作步骤和代码解析4. 实时检测5. 训练6. 源码下载 YOLOV5 双目相机实现三维测距&#xff08;新版本&#xff09; 本文主要是对此篇文章做一些改进&#xff0c;以及解释读者在…