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

Linux操作系统:基于Linux的个人Web服务器搭建与自动化运维实践

基于Linux的个人Web服务器搭建与自动化运维实践

摘要

在互联网的海洋中,每个人都想拥有一艘属于自己的小船——一个个人Web服务器。Linux作为开源界的“老大哥”,无疑是搭建Web服务器的最佳选择。本文通过幽默风趣的方式,详细介绍了在Linux环境下搭建个人Web服务器的全过程,包括安装配置Apache/Nginx、部署Web应用、搭建个人博客或论坛、配置数据库、优化性能与安全性,以及使用自动化运维工具进行项目管理。同时,探讨了参与开源项目的意义和方法,旨在为初学者提供一份实用且有趣的实践指南。

关键词

Linux;Web服务器;Apache;Nginx;自动化运维;Ansible;开源项目


引言

在互联网时代,拥有一台自己的Web服务器就像拥有一片属于自己的小天地。你可以在这里写博客、建论坛,甚至搭建一个小型的在线商店。而Linux,这个开源界的“老大哥”,无疑是搭建Web服务器的最佳选择。它不仅免费,而且功能强大、安全性高。那么,如何在Linux上搭建一个功能完备、性能卓越且安全可靠的Web服务器呢?别急,让我们一步步来探索这个充满乐趣的过程。


第一部分:搭建个人Web服务器

1.1 安装和配置Apache或Nginx

1.1.1 选择你的“武器”:Apache vs Nginx

在Web服务器的世界里,Apache和Nginx就像两个武林高手,各有绝招。Apache历史悠久,功能强大,配置灵活,就像一个“万金油”,适合各种场景。而Nginx则是后起之秀,以高性能、低资源消耗著称,就像一个“速度型选手”,特别适合处理高并发的场景。

那么,到底该选哪一个呢?别急,我们先来对比一下:

特性ApacheNginx
性能中等,适合中小规模网站高,特别适合高并发场景
资源消耗较高
配置复杂度中等,配置文件较直观较高,需要一定学习成本
社区支持非常强大,文档丰富也很强大,但文档相对复杂
适用场景通用,适合各种类型的Web应用高并发、静态资源服务

如果你的网站流量不大,或者你更喜欢简单直观的配置,Apache是个不错的选择。如果你的网站需要处理大量并发请求,或者你对性能要求很高,那么Nginx可能更适合你。当然,你也可以两者都学,毕竟技多不压身嘛!

1.1.2 安装Apache

Apache是Web服务器界的“老大哥”,安装它就像在超市里买一包薯片一样简单。以Ubuntu为例,只需运行以下命令:

sudo apt update
sudo apt install apache2

安装完成后,打开浏览器访问http://localhost,如果看到Apache的欢迎页面,恭喜你,第一步成功了!

接下来,我们来配置Apache。Apache的配置文件位于/etc/apache2/apache2.conf,但通常我们不需要直接修改这个文件。相反,我们可以通过创建虚拟主机(Virtual Hosts)来管理不同的网站。虚拟主机就像一个个独立的小房间,每个房间都可以有自己的网站。

假设你想创建一个名为myblog.com的虚拟主机,可以按照以下步骤操作:

  1. 创建网站目录

    sudo mkdir -p /var/www/myblog.com/html
    sudo chown -R $USER:$USER /var/www/myblog.com/html
    sudo chmod -R 755 /var/www/myblog.com
  2. 创建虚拟主机配置文件: 在/etc/apache2/sites-available/目录下创建一个名为myblog.com.conf的文件:

    <VirtualHost *:80>ServerAdmin webmaster@myblog.comServerName myblog.comServerAlias www.myblog.comDocumentRoot /var/www/myblog.com/htmlErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
  3. 启用虚拟主机

    sudo a2ensite myblog.com.conf
    sudo systemctl restart apache2
  4. 测试网站: 在/var/www/myblog.com/html目录下创建一个index.html文件:

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>My Blog</title>
    </head>
    <body><h1>Welcome to My Blog</h1><p>This is my personal blog.</p>
    </body>
    </html>

    然后在浏览器中访问http://myblog.com,你会看到“Welcome to My Blog”的页面。

1.1.3 安装Nginx

如果你选择了Nginx,安装过程同样简单。Nginx是Web服务器界的“速度型选手”,特别适合处理高并发的场景。以Ubuntu为例,运行以下命令:

sudo apt update
sudo apt install nginx

安装完成后,访问http://localhost,你会看到Nginx的欢迎页面,是不是很有成就感?

接下来,我们来配置Nginx。Nginx的配置文件位于/etc/nginx/nginx.conf,但通常我们也会通过创建虚拟主机来管理不同的网站。假设你想创建一个名为myforum.com的虚拟主机,可以按照以下步骤操作:

  1. 创建网站目录

    sudo mkdir -p /var/www/myforum.com/html
    sudo chown -R $USER:$USER /var/www/myforum.com/html
    sudo chmod -R 755 /var/www/myforum.com
  2. 创建虚拟主机配置文件: 在/etc/nginx/sites-available/目录下创建一个名为myforum.com的文件:

    server {listen 80;server_name myforum.com www.myforum.com;root /var/www/myforum.com/html;index index.html;location / {try_files $uri $uri/ =404;}
    }
  3. 启用虚拟主机

    sudo ln -s /etc/nginx/sites-available/myforum.com /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl restart nginx
  4. 测试网站: 在/var/www/myforum.com/html目录下创建一个index.html文件:

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>My Forum</title>
    </head>
    <body><h1>Welcome to My Forum</h1><p>This is my personal forum.</p>
    </body>
    </html>

    然后在浏览器中访问http://myforum.com,你会看到“Welcome to My Forum”的页面。

1.2 部署简单的Web应用

1.2.1 PHP应用

PHP是Web开发界的“老江湖”,许多知名的网站都基于PHP构建。WordPress是全球最受欢迎的博客平台,它基于PHP和MySQL开发。如果你想搭建一个个人博客,WordPress绝对是你的不二之选。

安装WordPress的过程非常简单,就像在花园里种下一朵花一样轻松。以下是详细步骤:

  1. 安装PHP和MySQL

    sudo apt update
    sudo apt install php libapache2-mod-php php-mysql
    sudo apt install mysql-server
  2. 下载WordPress

    cd /tmp
    wget https://wordpress.org/latest.tar.gz
    tar -xzf latest.tar.gz
    sudo cp -a wordpress/. /var/www/myblog.com/html/
  3. 配置WordPress: 在/var/www/myblog.com/html目录下创建一个wp-config.php文件:

    <?php
    define('DB_NAME', 'wordpress');
    define('DB_USER', 'root');
    define('DB_PASSWORD', 'your_mysql_password');
    define('DB_HOST', 'localhost');
    define('DB_CHARSET', 'utf8');
    define('DB_COLLATE', '');
    $table_prefix = 'wp_';
    define('WP_DEBUG', false);
    if ( !defined('ABSPATH') ) {define('ABSPATH', dirname(__FILE__) . '/');
    }
    require_once(ABSPATH . 'wp-settings.php');
  4. 创建MySQL数据库

    sudo mysql -u root -p

    输入密码后,执行以下SQL语句:

    CREATE DATABASE wordpress;
    GRANT ALL PRIVILEGES ON wordpress.* TO 'root'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
  5. 访问WordPress安装页面: 在浏览器中访问http://myblog.com,按照提示完成WordPress的安装。你可以设置网站标题、管理员用户名和密码等信息。

1.2.2 Python Flask应用

Python Flask是一个轻量级的Web框架,适合快速开发小型Web应用。它就像一个“小精灵”,灵活且强大。以下是一个简单的Flask应用示例:

  1. 安装Flask

    sudo apt update
    sudo apt install python3-pip
    pip3 install Flask
  2. 编写Flask应用代码: 创建一个名为app.py的文件:

    from flask import Flask
    app = Flask(__name__)@app.route('/')
    def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
  3. 运行Flask应用

    python3 app.py
  4. 访问应用: 在浏览器中访问http://localhost:5000,你会看到“Hello, World!”的问候。

如果你的Flask应用需要部署到生产环境,可以使用Gunicorn作为WSGI服务器,Nginx作为反向代理。以下是部署步骤:

  1. 安装Gunicorn

    pip3 install gunicorn
  2. 启动Gunicorn

    gunicorn -w 4 app:app
  3. 配置Nginx反向代理: 修改/etc/nginx/sites-available/myflaskapp.com配置文件:

    server {listen 80;server_name myflaskapp.com;location / {proxy_pass http://127.0.0.1:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
    }
  4. 启用配置并重启Nginx

    sudo ln -s /etc/nginx/sites-available/myflaskapp.com /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl restart nginx
  5. 测试应用: 在浏览器中访问http://myflaskapp.com,你会看到“Hello, World!”的页面。


第二部分:配置数据库

2.1 选择数据库:MySQL vs MariaDB

MySQL和MariaDB是数据库界的“双胞胎”,它们都非常流行。MySQL是商业产品,而MariaDB是它的开源分支。两者在功能上几乎没有区别,选择哪一个取决于你的喜好。

2.2 安装MySQL

在Linux上安装MySQL就像在公园里散步一样轻松。以Ubuntu为例,运行以下命令:

sudo apt update
sudo apt install mysql-server

安装完成后,运行以下命令进行安全配置:

sudo mysql_secure_installation

按照提示完成配置,你的MySQL数据库就安全了。

2.3 安装MariaDB

如果你选择了MariaDB,安装过程同样简单:

sudo apt update
sudo apt install mariadb-server

运行以下命令进行安全配置:

sudo mysql_secure_installation

完成配置后,你的MariaDB数据库就准备好了。


第三部分:优化网站性能和安全性

3.1 性能优化

3.1.1 静态资源缓存

通过配置Web服务器,可以将静态资源(如图片、CSS文件等)缓存到客户端,减少服务器的负载。例如,在Nginx中,可以通过以下配置实现:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;
}

这将使静态资源在客户端缓存30天,大大提高了网站的响应速度。

3.1.2 使用CDN

CDN(内容分发网络)可以将网站的内容缓存到全球各地的服务器上,用户访问时可以从最近的服务器获取内容,从而提高访问速度。有许多免费的CDN服务可供选择,如Cloudflare。

3.2 安全性优化

3.2.1 配置防火墙

防火墙是保护服务器安全的第一道防线。在Linux上,可以使用ufw(Uncomplicated Firewall)来配置防火墙。例如,允许HTTP和HTTPS流量:

sudo ufw allow 'Apache Full'
sudo ufw enable

或者,如果你使用的是Nginx:

sudo ufw allow 'Nginx Full'
sudo ufw enable
3.2.2 使用HTTPS

HTTPS可以加密网站的流量,保护用户数据的安全。可以使用Let's Encrypt提供的免费SSL证书来实现HTTPS。安装Certbot(Let's Encrypt的客户端工具):

sudo apt install certbot python3-certbot-nginx

然后运行以下命令获取证书并配置Nginx:

sudo certbot --nginx -d yourdomain.com

按照提示完成操作后,你的网站就支持HTTPS了。


第四部分:自动化运维项目

4.1 使用Ansible进行自动化运维

Ansible是一个强大的自动化运维工具,可以通过编写Playbook来实现服务器配置管理、软件部署等任务。

4.1.1 安装Ansible

在Linux上安装Ansible就像在花园里种下一朵花一样简单。以Ubuntu为例,运行以下命令:

sudo apt update
sudo apt install ansible

安装完成后,你可以通过ansible --version命令查看Ansible的版本。

4.1.2 编写Ansible Playbook

以下是一个简单的Ansible Playbook示例,用于安装Apache并部署一个简单的HTML页面:

---
- name: Install Apache and deploy a simple HTML pagehosts: webserversbecome: yestasks:- name: Install Apacheapt:name: apache2state: presentupdate_cache: yes- name: Copy HTML file to /var/www/htmlcopy:src: index.htmldest: /var/www/html/index.htmlowner: www-datagroup: www-datamode: '0644'

将上述代码保存为site.yml,然后运行以下命令执行Playbook:

ansible-playbook site.yml

只要你的目标服务器在hosts文件中正确配置,Ansible就会自动完成Apache的安装和HTML页面的部署。

4.2 使用Puppet进行自动化运维

Puppet是另一个流行的自动化运维工具,通过编写Puppet代码来管理服务器配置。

4.2.1 安装Puppet

在Linux上安装Puppet就像在厨房里煮一杯咖啡一样简单。以Ubuntu为例,运行以下命令:

sudo apt update
sudo apt install puppet-agent

安装完成后,你可以通过puppet --version命令查看Puppet的版本。

4.2.2 编写Puppet代码

以下是一个简单的Puppet代码示例,用于安装Apache并配置一个简单的HTML页面:

class apache {package { 'apache2':ensure => installed,}service { 'apache2':ensure => running,enable => true,require => Package['apache2'],}file { '/var/www/html/index.html':content => "Hello, World!\n",owner   => 'www-data',group   => 'www-data',mode    => '0644',require => Package['apache2'],}
}

将上述代码保存为apache.pp,然后运行以下命令应用配置:

puppet apply apache.pp

Puppet会自动完成Apache的安装和HTML页面的配置。


第五部分:参与开源项目

5.1 学习如何贡献代码到开源项目

开源项目是程序员的天堂,你可以在这里学习、交流、贡献代码。参与开源项目不仅可以提升你的编程技能,还可以结交志同道合的朋友。

5.1.1 找到感兴趣的项目

GitHub是开源项目的宝库,你可以在这里找到各种各样的项目。通过搜索关键词,找到你感兴趣的项目。

5.1.2 了解项目的贡献指南

每个开源项目都有自己的贡献指南,通常在项目的README.mdCONTRIBUTING.md文件中。仔细阅读这些文件,了解项目的开发流程和规范。

5.1.3 提交你的第一个Pull Request

当你对项目有了一定的了解后,可以尝试提交你的第一个Pull Request(PR)。PR是开源项目中的一种协作方式,你可以通过它向项目提交你的代码更改。

5.2 理解开源社区的协作模式和开发流程

开源社区是一个充满活力和创新的地方,它的协作模式和开发流程与其他项目有所不同。

5.2.1 分布式版本控制

开源项目通常使用Git作为版本控制系统,采用分布式版本控制的方式。每个开发者都有自己的代码仓库,可以通过Pull Request将代码合并到主仓库。

5.2.2 代码审查

在开源项目中,代码审查是一个非常重要的环节。当你提交PR后,项目的维护者会对你的代码进行审查,提出意见和建议。这是一个学习和交流的好机会。

5.2.3 社区文化

开源社区有着独特的文化,强调合作、分享和尊重。在这里,你可以结交来自世界各地的朋友,共同为开源事业贡献力量。


结论

通过本文的介绍,我们详细探讨了在Linux环境下搭建个人Web服务器的全过程,包括安装配置Web服务器、部署Web应用、配置数据库、优化性能与安全性,以及使用自动化运维工具进行项目管理。同时,我们还探讨了参与开源项目的意义和方法。希望本文能够为你在Linux世界中的探索提供帮助和启发。记住,技术的世界是充满乐趣的,只要你敢于尝试,就一定能收获满满的成就感。

相关文章:

Linux操作系统:基于Linux的个人Web服务器搭建与自动化运维实践

基于Linux的个人Web服务器搭建与自动化运维实践 摘要 在互联网的海洋中&#xff0c;每个人都想拥有一艘属于自己的小船——一个个人Web服务器。Linux作为开源界的“老大哥”&#xff0c;无疑是搭建Web服务器的最佳选择。本文通过幽默风趣的方式&#xff0c;详细介绍了在Linux…...

[创业之路-321]:创新开拓思维和经营管理思维的比较

目录 一、概述 1.1、定义与内涵 1、创新开拓思维&#xff1a; 2、经营管理思维&#xff1a; 1.2、特点与优势 1、创新开拓思维的特点与优势&#xff1a; 2、经营管理思维的特点与优势&#xff1a; 3、应用场景与限制 4、总结 二、创新开拓思维与经营管理思维&#xf…...

vivado修改下载器下载速率

Error Launching Program X Error while launching program: fpga configuration failed. DONE PIN is not HIGH 原因是下载器速度太快了。先从任务管理器中关闭hw_server.exe试一下,要是不行就按下面三种方法解决。 第一种方法可以不用修改下载速度,直接先从vivado中将bit流…...

运维基线方案说明

1. 总体思路 建立运维基线的核心目标是保障系统稳定性、提升安全性、及时响应异常事件并不断优化系统性能。初创公司资源有限&#xff0c;方案应尽可能简单、易用&#xff0c;同时具备一定的自动化和标准化能力。建议从以下几个层面入手&#xff1a; 标准化文档&#xff1a;制…...

pycharm中配置PyQt6详细教程

PyQt6 是 Qt 框架的 Python 绑定库,基于 Qt 6 开发,专为创建跨平台图形用户界面(GUI)应用程序设计。 本章教程,主要记录在pycharm中配置使用PyQt6的流程。 一、安装基础环境 在此之前,你需要提前安装好Python解释器,推荐使用anaconda创建虚拟环境。 conda create -n pyt…...

大湾区经济网报道:2025春运收官 全国跨区流动90亿,大湾区12亿人次

&#xff08;原标题&#xff1a;2025年春运收官&#xff1a;全国跨区流动超90亿人次 大湾区贡献12亿人次&#xff09; 大湾区经济网2月23日电&#xff08;记者 余芳&#xff09;2025年春运昨日&#xff08;2月22日&#xff09;正式结束&#xff0c;全国跨区域人员流动量达90.2…...

Docker用户的困境:免费项目的减少与成本的增加

摘要 在生产环境中&#xff0c;Docker用户正面临新的挑战&#xff1a;免费项目逐渐减少&#xff0c;收费服务成为主流趋势。表面上免费的选项&#xff0c;由于缺乏必要的支持和及时更新&#xff0c;反而可能导致更高的隐性成本。对于依赖Docker进行开发和部署的企业而言&#x…...

1.4 嵌入式系统的软件

嵌入式系统的开发流程中&#xff0c;硬件和固件设计完成后&#xff0c;嵌入式软件承担起实现功能、用户交互、系统集成和性能优化等任务&#xff1b;嵌入式系统软件分为设备驱动、操作系统和应用程序三个层面。 因此嵌入式系统软件开发工程师通常分为三类&#xff1a;嵌入式系统…...

PHP2(WEB)

##解题思路 打开页面什么线索都没有&#xff0c;目录扫描只是扫出来一个index.php&#xff0c;而源代码没有东西&#xff0c;且/robots.txt是不允许访问的 于是一番查询后发现&#xff0c;有个index.phps的文件路径&#xff0c;里头写着一段php的逻辑&#xff0c;对url的id参数…...

【精调】LLaMA-Factory 快速开始1: Meta-Llama-3.1-8B-Instruct

llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml llamafactory-cli chat examples/inference/llama3_lora_sft.yaml llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml模型下载 git clone https://www.modelscope.cn/LLM-Research/Meta-Lla…...

一、计算机等级考试——题库

&#xff08;1&#xff09;选择题 &#xff08;2&#xff09;基本操作题 &#xff08;3&#xff09;上网题 &#xff08;4&#xff09;文字题 &#xff08;5&#xff09;表格题 &#xff08;6&#xff09;演示文稿 二、计算机等级考试——标准评分 &#xff08;1&#xff09;选…...

Android系统开发 给system/app传包报错

一、现象 adb 命令推送apk到system/app下提示 remote couldnt create file: Read-only file system demo /oem/appsystem app 在Android设备上&#xff0c;/system 分区通常是只读的&#xff08;Read-only file system&#xff09;&#xff0c;这意味着普通用户或应用程序…...

libxls库的编译以及基于Visual studio的配置

最近有一个需求在windows处理xls&#xff0c;所以就需要libxls这个库&#xff0c;调查了一下&#xff0c;基于C的库的解析情况如下&#xff1a; 所以最理想的就是Libxlsd个开源的方案 基于历史整理的 libxls 在 MinGW 下的编译步骤 前提条件 系统&#xff1a;Windows&#…...

OpenHarmony构建系统-GN与子系统、部件、模块理论与实践

理论 OpenHarmony源码体系 OpenHarmony的源码架构基于模块化设计&#xff0c;为了方便系统的功能的增加和裁剪&#xff0c;设计了基于GN构建的模块系统。整个模块可从大到小划分为产品(product)、领域/子系统集(domain)、子系统(sub system)、部件(component)、模块/组件(modu…...

kafka+spring cloud stream 发送接收消息

方案 1&#xff1a;使用旧版 StreamListener&#xff08;适用于 Spring Cloud Stream < 2.x&#xff09; 1. 添加依赖&#xff08;pom.xml&#xff09; <!-- Spring Cloud Stream Kafka Binder --> <dependency> <groupId>org.springframework.clo…...

使用ArcGIS Pro自动矢量化水系

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;自动矢量化是一项至关重要的技术&#xff0c;它能够将栅格图像中的要素转换为矢量数据&#xff0c;从而方便后续的分析和处理。本文将详细介绍如何使用ArcGIS Pro自动矢量化水系&#xff0c;适用于那些颜色相对统一、…...

在PyCharm中运行Jupyter Notebook的.ipynb文件及其pycharm软件的基础使用

&#xff08;注意需使用PyCharm专业版&#xff0c;学生、教师可以申请免费使用&#xff1a;https://www.jetbrains.com/shop/eform/students&#xff09; 1. pycharm2024版汉化 https://blog.csdn.net/m0_74103046/article/details/144560999 2. pycharm中的python控制台和J…...

实验 Figma MCP + Cursor 联合工作流

开源项目 Figma-Context-MCP 介绍 使用此 Model Context Protocol 服务器授予 Cursor 对 Figma 文件的访问权限。 当 Cursor 可以访问 Figma 设计数据时&#xff0c;它比粘贴屏幕截图等其他方法更能准确地进行代码转化。 开源仓库&#xff1a; GLips/Figma-Context-MCP 具体…...

移植live555 上的 rtsp

一、V4L2视频采集模块&#xff08;完整示例&#xff09; #include <linux/videodev2.h> #include <sys/ioctl.h> #include <fcntl.h>// 初始化V4L2摄像头 int init_v4l2_camera(const char* dev_path, int width, int height) {int fd open(dev_path, O_RD…...

Web Worker终极优化指南:4秒卡顿→0延迟的实战蜕变

&#x1f4a1; 导读&#xff1a;从4秒卡顿到丝滑响应 真实痛点场景&#xff1a;当斐波那契数列计算量达10亿次时&#xff0c;页面完全冻结4.2秒&#xff01;通过Web Worker优化后&#xff0c;UI响应时间降至16ms以内。本文手把手带您实现性能蜕变&#xff01; 一、Web Worker核…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...