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

分布式 - 服务器Nginx:一小时入门系列之静态网页配置

文章目录

      • 1. 静态文件配置
      • 2. nginx listen 命令解析
      • 3. nginx server_name 命令解析
      • 4. nginx server 端口重复
      • 5. nginx location 命令

1. 静态文件配置

在 /home 文件下配置一个静态的AdminLTE后台管理系统:

[root@nginx-dev conf.d]# cd /home
[root@nginx-dev home]# ls
AdminLTE-3.2.0  apache-tomcat-8.5.81  apps  sql
[root@nginx-dev home]# cd AdminLTE-3.2.0/
[root@nginx-dev AdminLTE-3.2.0]# ll
total 1412
drwxr-xr-x.  6 root root      53 Feb  8  2022 build
-rwxr-xr-x.  1 root root    3173 Feb  8  2022 CODE_OF_CONDUCT.md
-rwxr-xr-x.  1 root root     469 Feb  8  2022 composer.json
drwxr-xr-x.  5 root root      38 Feb  8  2022 dist
-rwxr-xr-x.  1 root root     169 Feb  8  2022 docker-compose.yml
-rwxr-xr-x.  1 root root     171 Feb  8  2022 Dockerfile
drwxr-xr-x.  7 root root    4096 Feb  8  2022 docs
-rwxr-xr-x.  1 root root   31161 Feb  8  2022 iframe-dark.html
-rwxr-xr-x.  1 root root   31521 Feb  8  2022 iframe.html
-rwxr-xr-x.  1 root root   72974 Feb  8  2022 index2.html
-rwxr-xr-x.  1 root root   43689 Feb  8  2022 index3.html
-rwxr-xr-x.  1 root root   61756 Feb  8  2022 index.html
-rwxr-xr-x.  1 root root    1082 Feb  8  2022 LICENSE
-rwxr-xr-x.  1 root root    6778 Feb  8  2022 package.json
-rwxr-xr-x.  1 root root 1134163 Feb  8  2022 package-lock.json
drwxr-xr-x. 10 root root     196 Feb  8  2022 pages
drwxr-xr-x. 62 root root    4096 Feb  8  2022 plugins
-rwxr-xr-x.  1 root root    6716 Feb  8  2022 README.md
-rwxr-xr-x.  1 root root   13336 Feb  8  2022 starter.html

① 下面将其配置成一个web服务:nginx 配置文件位于 /etc/nginx/nginx.conf 中,其中 include 命令会引用 /etc/nginx/conf.d 目录下所有的 .conf 文件,因次可以在conf.d文件下新建一个配置文件 8000.conf

[root@nginx-dev home]# cd /etc/nginx/conf.d/
[root@nginx-dev conf.d]# ls
admin-8000.conf  default.conf
[root@nginx-dev conf.d]# vi 8000.conf
[root@nginx-dev conf.d]# nginx -s reload

其中 8000.conf 配置文件的内容为:

server{listen 8000;server_name localhost;location / {root /home/AdminLTE-3.2.0;index index.html index2.html index3.html;}
}

它监听本地的 8000 端口,并将所有请求都定向到 /home/AdminLTE-3.2.0 目录下的文件。如果请求的 URL 路径是 /,则会尝试返回 index.html、index2.html 或 index3.html 中的一个作为响应。这个配置文件的作用是将本地的 AdminLTE-3.2.0 网页项目部署到 Nginx 服务器上,以便通过浏览器访问。

② 在浏览器访问8000端口:http://192.168.1.9:8000/

在这里插入图片描述

2. nginx listen 命令解析

nginx 是一款高性能的 Web 服务器和反向代理服务器,listen 是 nginx 配置文件中用于指定监听地址和端口的指令。

listen 指令的语法如下:

listen address[:port] [parameters];

其中,address 表示要监听的 IP 地址,可以是一个具体的 IP 地址,也可以是一个通配符,如 * 表示监听所有可用的 IP 地址。port 表示要监听的端口号,如果不指定,则默认为 80。

listen 指令还可以带有一些可选的参数,如下所示:

① default_server:指定该监听地址和端口为默认服务器,当客户端请求的域名在 nginx 中没有匹配的虚拟主机时,会使用该默认服务器处理请求。

② ssl:指定该监听地址和端口使用 SSL/TLS 加密协议进行通信。

③ http2:指定该监听地址和端口使用 HTTP/2 协议进行通信。

④ reuseport:启用 SO_REUSEPORT 选项,允许多个进程或线程同时监听同一个地址和端口,提高并发处理能力。

例如,以下配置指定 nginx 监听 192.168.1.100 的 80 端口,并启用 default_server 参数:

listen 192.168.1.100:80 default_server;

监听可以配置成IP端口IP+端口 :

listen 127.0.0.1:8000; 指定Nginx监听127.0.0.1的8000端口。
listen 127.0.0.1; 指定Nginx监听127.0.0.1的80端口(因为端口号未指定,默认为80)。
listen 8000; 指定Nginx监听所有可用IP地址的8000端口。
listen *:8000; 指定Nginx监听所有可用IP地址的8000端口。
listen localhost:8000; 指定Nginx监听本地主机名localhost的8000端口。

3. nginx server_name 命令解析

server_name 是 Nginx 配置文件中用于指定虚拟主机的域名或 IP 地址的指令。它用于告诉 Nginx 哪些请求应该被转发到该虚拟主机,主要用于区分,可以随便起。也可以使用变量$hostname配置成主机名。

server_name 指令可以在 http、server 和 location 块中使用。在 http 块中使用 server_name 指令可以设置默认的虚拟主机,而在 server 块中使用 server_name 指令可以设置特定的虚拟主机。

server_name 指令可以指定一个或多个域名或 IP 地址,多个域名或 IP 地址之间用空格或逗号分隔。例如:

server {listen 80;server_name example.com www.example.com;...
}

或者配置成域名:example.org www.example.org *.example.org

上面的配置指定了两个域名 example.com 和 www.example.com,当请求的主机名为这两个域名之一时,Nginx 将会将请求转发到该虚拟主机。

4. nginx server 端口重复

如果多个server的端口重复,那么根据域名或者主机名去匹配 server_name 进行选择。

① 查看 /etc/nginx/conf.d 目录下的 default.conf 文件,可以看到,配置文件监听80端口,服务器名为localhost

[root@nginx-dev conf.d]# cat /etc/nginx/conf.d/default.conf
server {listen       80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}
}

② 修改 /etc/nginx/conf.d 目录下的 8000.conf 文件,将监听端口页修改为80,重启 nginx 会提醒 conflicting server name “localhost” on 0.0.0.0:80, ignored

[root@nginx-dev conf.d]# vi /etc/nginx/conf.d/8000.conf
server{listen 80;server_name localhost;location / {root /home/AdminLTE-3.2.0;index index.html index2.html index3.html;}
}
[root@nginx-dev conf.d]# nginx -s reload
nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored

③ 重新修改 /etc/nginx/conf.d 目录下的 8000.conf 文件,将 server_name 修改为 nginx-dev

[root@nginx-dev conf.d]# vi /etc/nginx/conf.d/8000.conf
server{listen 80;server_name nginx-dev;location / {root /home/AdminLTE-3.2.0;index index.html index2.html index3.html;}
}

④ 如果访问 curl http://localhost:80,那么响应的是 /usr/share/nginx/html 目录下的首页文件:

# [root@nginx-dev conf.d]# curl localhost:80 会访问这个
server {listen       80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.html index.htm;}
}

⑤ 如果访问 curl http://nginx-dev:80,那么响应的是 /home/AdminLTE-3.2.0 目录下的首页文件:

# [root@nginx-dev html]# curl http://nginx-dev:80 会访问这个
server{listen 80;server_name nginx-dev;#主机名location / {root /home/AdminLTE-3.2.0;index index.html index2.html index3.html;}
}

5. nginx location 命令

/请求指向 root 目录,location 总是从/目录开始匹配,如果有子目录,例如/css,他会指向/static/css

location /css {root /static;
}

① 修改 /etc/nginx/conf.d 目录下的 8000.conf 文件:

[root@nginx-dev html]# nginx -s reload
[root@nginx-dev html]# cat /etc/nginx/conf.d/8000.conf
server{listen 8000;server_name localhost;location /admin {root /home/AdminLTE-3.2.0;index index.html index2.html index3.html;}
}

/请求总是指向 root 目录,/admin 目录则指向的是root目录下的admin目录,即为 /home/AdminLTE-3.2.0/admin。

在浏览器访问 http://192.168.1.9:8000/admin :报错404

在这里插入图片描述

查看nginx错误日志:

[root@nginx-dev nginx]# tail -f /var/log/nginx/*.log
==> /var/log/nginx/access.log <==
192.168.1.10 - - [06/Aug/2023:22:40:38 +0800] "GET /dist/img/user1-128x128.jpg HTTP/1.1" 200 2750 "http://192.168.1.9:8000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"
192.168.1.10 - - [06/Aug/2023:22:40:38 +0800] "GET /plugins/fontawesome-free/webfonts/fa-solid-900.woff2 HTTP/1.1" 200 78268 "http://192.168.1.9:8000/plugins/fontawesome-free/css/all.min.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"
192.168.1.10 - - [06/Aug/2023:22:40:38 +0800] "GET /plugins/fontawesome-free/webfonts/fa-regular-400.woff2 HTTP/1.1" 200 13224 "http://192.168.1.9:8000/plugins/fontawesome-free/css/all.min.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"
127.0.0.1 - - [06/Aug/2023:22:59:36 +0800] "GET / HTTP/1.1" 200 61756 "-" "curl/7.29.0" "-"
127.0.0.1 - - [06/Aug/2023:23:01:16 +0800] "GET / HTTP/1.1" 200 61756 "-" "curl/7.29.0" "-"
192.168.1.9 - - [06/Aug/2023:23:01:58 +0800] "GET / HTTP/1.1" 200 61756 "-" "curl/7.29.0" "-"
192.168.1.9 - - [06/Aug/2023:23:02:46 +0800] "GET / HTTP/1.1" 200 61756 "-" "curl/7.29.0" "-"
192.168.1.9 - - [06/Aug/2023:23:03:43 +0800] "GET / HTTP/1.1" 200 61756 "-" "curl/7.29.0" "-"
127.0.0.1 - - [06/Aug/2023:23:03:52 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.1.10 - - [06/Aug/2023:23:15:09 +0800] "GET /admin HTTP/1.1" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"==> /var/log/nginx/error.log <==
2023/08/06 23:14:21 [notice] 3869#3869: exit
2023/08/06 23:14:21 [notice] 3870#3870: exiting
2023/08/06 23:14:21 [notice] 3870#3870: exit
2023/08/06 23:14:21 [notice] 2483#2483: signal 17 (SIGCHLD) received from 3869
2023/08/06 23:14:21 [notice] 2483#2483: worker process 3869 exited with code 0
2023/08/06 23:14:21 [notice] 2483#2483: signal 29 (SIGIO) received
2023/08/06 23:14:21 [notice] 2483#2483: signal 17 (SIGCHLD) received from 3870
2023/08/06 23:14:21 [notice] 2483#2483: worker process 3870 exited with code 0
2023/08/06 23:14:21 [notice] 2483#2483: signal 29 (SIGIO) received
2023/08/06 23:15:09 [error] 3897#3897: *26 open() "/home/AdminLTE-3.2.0/admin" failed (2: No such file or directory), client: 192.168.1.10, server: localhost, request: "GET /admin HTTP/1.1", host: "192.168.1.9:8000"

可以看到报错信息为 /home/AdminLTE-3.2.0/admin 这个目录不存在。

② 修改 /etc/nginx/conf.d 目录下的 8000.conf 文件:

[root@nginx-dev nginx]# cat /etc/nginx/conf.d/8000.conf
server{listen 8000;server_name localhost;location / {root /home/AdminLTE-3.2.0;index index.html index2.html index3.html;}
}

在浏览器访问 http://192.168.1.9:8000/a。同样报错404:

在这里插入图片描述

查看nginx错误日志:

[root@nginx-dev nginx]# tail -f /var/log/nginx/*.log
==> /var/log/nginx/access.log <==
127.0.0.1 - - [06/Aug/2023:23:01:16 +0800] "GET / HTTP/1.1" 200 61756 "-" "curl/7.29.0" "-"
192.168.1.9 - - [06/Aug/2023:23:01:58 +0800] "GET / HTTP/1.1" 200 61756 "-" "curl/7.29.0" "-"
192.168.1.9 - - [06/Aug/2023:23:02:46 +0800] "GET / HTTP/1.1" 200 61756 "-" "curl/7.29.0" "-"
192.168.1.9 - - [06/Aug/2023:23:03:43 +0800] "GET / HTTP/1.1" 200 61756 "-" "curl/7.29.0" "-"
127.0.0.1 - - [06/Aug/2023:23:03:52 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.1.10 - - [06/Aug/2023:23:15:09 +0800] "GET /admin HTTP/1.1" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"
192.168.1.10 - - [06/Aug/2023:23:19:48 +0800] "GET /admin HTTP/1.1" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"
192.168.1.10 - - [06/Aug/2023:23:19:51 +0800] "GET /admin HTTP/1.1" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"
192.168.1.10 - - [06/Aug/2023:23:19:54 +0800] "GET / HTTP/1.1" 200 61756 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"
192.168.1.10 - - [06/Aug/2023:23:20:05 +0800] "GET /a HTTP/1.1" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"==> /var/log/nginx/error.log <==
2023/08/06 23:19:44 [notice] 3897#3897: exit
2023/08/06 23:19:44 [notice] 2483#2483: signal 17 (SIGCHLD) received from 3897
2023/08/06 23:19:44 [notice] 2483#2483: worker process 3897 exited with code 0
2023/08/06 23:19:44 [notice] 2483#2483: signal 29 (SIGIO) received
2023/08/06 23:19:44 [notice] 2483#2483: signal 17 (SIGCHLD) received from 3898
2023/08/06 23:19:44 [notice] 2483#2483: worker process 3898 exited with code 0
2023/08/06 23:19:44 [notice] 2483#2483: signal 29 (SIGIO) received
2023/08/06 23:20:05 [error] 3906#3906: *28 open() "/home/AdminLTE-3.2.0/a" failed (2: No such file or directory), client: 192.168.1.10, server: localhost, request: "GET /a HTTP/1.1", host: "192.168.1.9:8000"

可以看到报错信息为 /home/AdminLTE-3.2.0/a 这个目录不存在。

相关文章:

分布式 - 服务器Nginx:一小时入门系列之静态网页配置

文章目录 1. 静态文件配置2. nginx listen 命令解析3. nginx server_name 命令解析4. nginx server 端口重复5. nginx location 命令 1. 静态文件配置 在 /home 文件下配置一个静态的AdminLTE后台管理系统&#xff1a; [rootnginx-dev conf.d]# cd /home [rootnginx-dev home…...

kubernetes网络之网络策略-----Network Policies - Example

创建一个Deployment并配置Service 创建一个 nginx Deployment 用于演示 Kubernetes 的 NetworkPolicy&#xff1a; kubectl create deployment nginx --imagenginx 输出结果 deployment.apps/nginx created通过Service暴露该Deployment kubectl expose deployment nginx --po…...

【GDI/GDI+】如何抓取屏幕保存到bitmap文件?

问题 如何抓取屏幕保存到bitmap文件&#xff1f; 方法 GDI 方法 1、抓取。 HBITMAP CRectChartUI::GetBitmap(HDC hDC) {HDC hMemDC;int x, y;int nWidth, nHeight;HBITMAP hBitmap, hOldBitmap;hMemDC CreateCompatibleDC(hDC);nWidth GetDeviceCaps(hDC, HORZRES);nHei…...

HDFS介绍

目录 ​编辑 一、HDFS基础 1.1 概述 1.2 HDFS的设计目标 1.2.1 硬件故障 1.2.2 流式数据访问 1.2.3 超大数据集 1.2.4 简单的一致性模型 1.2.5 移动计算而不是移动数据 1.2.6 跨异构硬件和软件平台的可移植性 1.3 基础概念 1.3.1 块&#xff08;Block&#xff09; 1.3.2 复制…...

每日一题——两数之和

题目 给出一个整型数组 numbers 和一个目标值 target&#xff0c;请在数组中找出两个加起来等于目标值的数的下标&#xff0c;返回的下标按升序排列。 &#xff08;注&#xff1a;返回的数组下标从1开始算起&#xff0c;保证target一定可以由数组里面2个数字相加得到&#xff0…...

Maven: ‘mvn‘ is not recognized as an internal or external command

下载并配置好Maven之后&#xff0c;CMD测试安装是否成功&#xff1a;mvn -v 提示&#xff1a; mvn is not recognized as an internal or external command, operable program or batch file. 检查环境变量&#xff1a; MAVEN_HOME: %MAVEN_HOME%\bin: 看上去没问题&#x…...

CubeSLAM: Monocular 3D Object SLAM——论文简述

一、简介 提出一种在动态和静态环境中同时进行3D目标检测和定位建图的方法&#xff0c;并且能够互相提升准确度。具体地&#xff0c;对于3D目标&#xff0c;其位置、方向和尺寸通过slam进行了优化&#xff1b;而3D目标作为slam中的路标&#xff0c;可以提供额外的语义和几何约…...

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…...

linux scp 拷贝文件到目标linux系统

scp -P 8866 -r jsonrpc/ root192.168.6.66:/folder_path...

Oracle-expdp报错ORA-39077、06502(Bug-16928674)

问题: 用户在使用expdp进程导出时&#xff0c;出现队列报错ORA-39077、ORA-06502 ORA-31626: job does not exist ORA-31638: cannot attach to job SYS_EXPORT_SCHEMA_01 for user SYS ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95 ORA-06512: at "SYS.KUPV$…...

Kafka入门,保姆级教学

文章目录 Kafka概念消息中间件对比消息中间件对比-选择建议Kafka常用名词介绍Kafka入门1. Kafka安装配置2.Kafka生产者与消费者关系3.Kafka依赖4.生产者发消息5.消费者接受消息6.Kafka高可用性设计6.1集群Kafka备份机制(Reolication) 7.kafka生产者详解7.1 发送类型7.2参数详解…...

RabbitMQ 过期时间(TTL)

TTL,Time to Live的简称&#xff0c;即过期时间&#xff0c;RabbitMQ可以对消息和队列设置TTL。 RabbitMQ支持设置队列的过期时间和消息的过期时间。如果设置队列的过期时间则队列中所有的消息都有相同的过期时间。如果设置消息的过期时间则每条消息的过期时间则可以不同。如两…...

C 语言练习题、持续更新

文章目录 C语言练习题读懂每个练习题才是学好一门代码的重要经历目录&#xff08;先不要看答案&#xff0c;首先自己做才能更好的领悟&#xff0c;做不来没关系&#xff09;题目一&#xff1a;有 1、2、3、4 四个数字&#xff0c;能组成多少个互不相同且无重复数字的三位数&…...

Android Q以上后台启动Activity初步尝试

在Android Q以后 google不允许在后台service 广播等等启动Activity 具体请看google文档从后台启动 Activity 的限制 | Android 开发者 | Android Developers 文档里有详细的说明,在哪种情况下可以后台启动Activity。 大体分为以下几种情况: 1、应用具有可见窗口,例如前…...

【torchlars】windows下载github中的torchlars包遇到的问题及解决方案

环境 python3.7 windows10 cuda11.1 pytorch1.8.1 虚拟环境miniconda 目的 windows下载github中的torchlars包 遇到的问题 问题一&#xff1a;直接下载好文件夹输入指令&#xff1a;python setup.py install 出现错误&#xff1a;RuntimeError: Error compiling objects f…...

SolidUI社区-通用Prompt技巧

背景 随着文本生成图像的语言模型兴起&#xff0c;SolidUI想帮人们快速构建可视化工具&#xff0c;可视化内容包括2D,3D,3D场景&#xff0c;从而快速构三维数据演示场景。SolidUI 是一个创新的项目&#xff0c;旨在将自然语言处理&#xff08;NLP&#xff09;与计算机图形学相…...

C++中类的封装写出一个文件加密的小项目

文件的加密较为简单&#xff0c;当然也可以修改它的加密方式等&#xff0c;供大家参考 #include<string> #include<fstream> class ReaderFile { public:string Read(const string& filename){cout << "读取文件&#xff0c;获取明文"<<…...

【网络编程·传输层】UDP和TCP的报头

目录 一、端口号划分 二、部分指令 1、pidof&#xff08;用于查看进程id&#xff09; 2、netstat&#xff08;查看网络状态&#xff09; 三、UDP协议 1、UDP协议格式 2、UDP协议如何进行封装、解包、分用 2.1封装、解包 2.2分用 3、UDP协议的特点 3.1UDP协议的特点 …...

C语言编程技巧 全局变量在多个c文件中公用的方法

在使用C语言编写程序时&#xff0c;经常会遇到这样的情况&#xff1a;我们希望在头文件中定义一个全局变量&#xff0c;并将其包含在两个不同的C文件中&#xff0c;以便这个全局变量可以在这两个文件中共享。举个例子&#xff0c;假设项目文件夹"project"下有三个文件…...

【HDFS】NN处理全量块汇报时reportDiff的一些细节

NN处理全量块汇报(FBR)时的一些细节怎么生成的toRemove怎么check 汇报上来的块是不是corrupt的?reportDiff方法里巧妙地引入delimiterBlock这个block的作用前置知识:【HDFS】Block、BlockInfo、BlockInfoContiguous、BlockInfoStriped的分析记录 上面的文章中介绍了关于Bl…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

GraphRAG优化新思路-开源的ROGRAG框架

目前的如微软开源的GraphRAG的工作流程都较为复杂&#xff0c;难以孤立地评估各个组件的贡献&#xff0c;传统的检索方法在处理复杂推理任务时可能不够有效&#xff0c;特别是在需要理解实体间关系或多跳知识的情况下。先说结论&#xff0c;看完后感觉这个框架性能上不会比Grap…...