如何在 Ubuntu 上安装 NodeBB 并使用 Nginx 反向代理
简介
NodeBB 是一款基于 Node.js 的开源论坛软件,为在线社区提供了现代化和响应式的解决方案。在 Ubuntu Linux 上运行的 NodeBB 利用了操作系统的强大性和灵活性,以提供高性能和可扩展性。它结合了 MongoDB 或 Redis 进行数据库管理,使其能够高效地处理大量的用户生成内容。NodeBB 以其实时通知、与各种社交媒体平台的无缝集成以及广泛的插件生态系统而闻名,允许管理员自定义他们的论坛以满足特定需求。此外,其移动优先的设计确保了在所有设备上一致且引人入胜的用户体验。Ubuntu 的稳定性和安全功能与 NodeBB 相得益彰,使其成为托管和管理动态在线社区的理想选择。
在本指南中,你将学习如何在 Ubuntu 22.04 服务器上安装 NodeBB,并使用 MongoDB 数据库和 Nginx Web 服务器。你还将学习如何通过 Certbot 和 Letsencrypt 使用 HTTPS 来保护 NodeBB。
接下来,我将一步一步教大家如何进行安装和部署!!
准备工作
服务器准备
必要前提:
- 一个充满求知欲的大脑。
- 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
- 指向服务器 IP 地址的域名。(可选)
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://rainyun.ivwv.site
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
- 点击 云产品 → 云服务器 → 立即购买。
- 选择距离你较近的区域,以保证低延迟。
- 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
- 我们使用
PowerShell
进行SSH
远程连接到服务器,Win+R
打开运行窗口,输入powershell
后点击确定。
- 输入
ssh root@你的服务器IP
例如ssh root@154.9.227.239
回车后,首次需要输入yes
,再次回车后即可登录服务器。
- 到此为止,我们的云服务器就远程连接上了。
开始部署
安装 MongoDB 服务器
NodeBB 使用 Node.js 编写,并使用 MongoDB 作为数据库。要安装 NodeBB,你必须在系统上安装 MongoDB 服务器。在本节中,你将在 Ubuntu 22.04 服务器上安装 MongoDB 服务器 7。
首先,运行以下命令将 gnupg 和 curl 软件包安装到你的 Ubuntu 系统。
sudo apt install gnupg curl
现在,使用以下命令添加 MongoDB 的 GPG 密钥和存储库。目前,MongoDB 7.0 仅适用于 Ubuntu 22.04 及以下版本,因此我们将在 Ubuntu 22.04 服务器上使用它。
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc |
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg
--dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
接下来,运行以下 apt 命令以更新 Ubuntu 软件包索引并安装 mongodb-org 软件包。输入 Y 以确认安装。
sudo apt update
sudo apt install mongodb-org
安装完成后,运行以下 systemctl 命令以重新加载 systemd 管理器。这是因为新的服务文件 mongod 已添加到你的系统中。
sudo systemctl daemon-reload
现在,运行以下 systemctl 命令来启动并启用 MongoDB mongod 服务。然后,检查其状态以确保 mongod 服务正在运行。
sudo systemctl enable --now mongod
sudo systemctl status mongod
如下所示,mongod 服务已启用并正在运行。
为 NodeBB 设置 MongoDB 服务器和数据库
安装 MongoDB 服务器后,你将在 MongoDB 上启用身份验证,创建一个管理员用户,然后为 NodeBB 安装创建一个新用户和数据库。
使用以下 mongosh 客户端命令登录到 MongoDB shell。
mongosh
在 mongosh shell 上,切换到 admin 数据库并为 MongoDB 创建一个新的管理员用户。在此示例中,你将创建一个 MongoDB 用户 admin,密码为 MongoDBAdminPass。请务必使用你的信息更改用户详细信息。
use admin
db.createUser( { user: "admin", pwd: "MongoDBAdminPass", roles: [ { role: "root", db: "admin" } ] } )
之后,切换并创建数据库 nodebb,然后创建新用户 nodebb,密码为 NodeBBPassword。数据库和用户 nodebb 将用于 NodeBB 安装。
use nodebb
db.createUser( { user: "nodebb", pwd: "NodeBBPassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
现在键入 quit() 以退出 mongosh shell。
quit()
接下来,使用以下 nano 编辑器打开默认的 MongoDB 配置 /etc/mongod.conf 。
sudo nano /etc/mongod.conf
取消注释 security 选项,并将 authorization 更改为 enabled。这将在你的 MongoDB 服务器上启用身份验证。
security:authorization: enabled
完成后,保存文件并退出编辑器。
现在,运行以下 systemctl 命令来重新启动 mongod 服务并应用你的更改。重新启动 mongod 服务后,将启用 MongoDB 身份验证。
sudo systemctl restart mongod
运行以下 mongosh 命令,以用户 nodedbb 的身份连接到数据库 nodebb。出现提示时,输入你的密码。
mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb
现在运行以下查询以检查与 MongoDB 服务器的连接。
db.runCommand( { connectionStatus: 1, showPrivileges: false } )
如下所示,你已作为用户 nodebb 身份验证到数据库 nodebb。
键入 quit() 以退出 MongoDB shell。
安装 NodeBB
现在你已经配置了 MongoDB 服务器,你将通过官方 Ubuntu 存储库安装 Node.js,然后在你的 Ubuntu 系统上下载并安装 NodeBB。
在安装 NodeBB 之前,运行以下 apt 命令将 Node.js 和 NPM 软件包安装到你的 Ubuntu 系统。输入 Y 以确认安装。
sudo apt install nodejs npm
安装完成后,使用以下命令检查 Node.js 和 NPM 版本 - 你可以看到已安装 Node.js 18 和 NPM 9。
node --version
npm --version
现在,运行以下命令创建一个新的系统用户和组 nodebb。此用户将用于运行 NodeBB 安装。
sudo adduser --system --no-create-home --home=/opt/nodebb --group nodebb
运行以下 git 命令以下载 NodeBB 源代码到 /opt/nodebb 目录,然后将其所有权更改为用户 nodebb。
git clone -b v3.x <https://github.com/NodeBB/NodeBB.git> /opt/nodebb
sudo chown -R nodebb:nodebb /opt/nodebb
转到 /opt/nodebb 目录并执行 nodebb setup 命令以开始 NodeBB 安装。
cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb
系统会询问你以下 NodeBB 配置:
- 输入 NodeBB 的域名,例如 forum.howtoforge.local。
- 在 NodeBB 密钥配置上按 ENTER。保持默认值。
- 输入 no 以禁用对 NodeBB 的匿名访问。
- 选择 MongoDB 作为数据库。
- 输入你的 MongoDB 数据库详细信息,格式如 mongodb://nodebb:NodeBBPassword@127.0.0.1:27017/nodebb。
- 输入 NodeBB 的新管理员用户和电子邮件地址。
- 输入你的 NodeBB 管理员用户的密码并重复。
安装完成后,你将看到输出 NodeBB Setup Completed。
要从命令行运行 NodeBB,请执行以下 nodebb start 命令:
sudo su -s /bin/bash -c "./nodebb start" nodebb
要设置 NodeBB 进程,请使用以下 nodebb stop 命令。
sudo su -s /bin/bash -c "./nodebb stop" nodebb
以 systemd 服务运行 NodeBB
在本指南中,你将以 systemd 服务在后台运行 NodeBB。因此,现在你将为 NodeBB 创建一个新的服务文件,这使得通过 systemctl 实用程序管理 NodeBB 服务更加容易。
使用以下 nano 编辑器创建新的 systemd 服务文件 /etc/systemd/system/nodebb.service 。
sudo nano /etc/systemd/system/nodebb.service
粘贴以下 NodeBB 服务文件。在此示例中,你将以 nodebb 用户身份运行 nodebb 服务。
[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service[Service]
Type=simple
User=nodebbStandardError=syslog
SyslogIdentifier=nodebbEnvironment=NODE_ENV=production
WorkingDirectory=/opt/nodebb
ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon
Restart=always[Install]
WantedBy=multi-user.target
完成后,保存文件并退出编辑器。
现在运行以下 systemctl 命令来重新加载 systemd 管理器并应用你的更改。
sudo systemctl daemon-reload
之后,使用以下命令启动、启用和验证 nodebb 服务。
sudo systemctl enable --now nodebb
sudo systemctl status nodebb
你可以在下面看到 nodebb 服务在后台作为 systemd 服务运行。
将 Nginx 设置为反向代理
在本教程中,你将使用 Nginx Web 服务器作为 NodeBB 的反向代理。因此,现在你将安装 Nginx,并为反向代理创建一个新的服务器块。请确保你的域名已指向服务器 IP 地址。
使用以下 apt install 命令将 Nginx Web 服务器安装到你的系统中。
sudo apt install nginx -y
安装完成后,使用 nano 编辑器创建新的服务器块配置 /etc/nginx/sites-available/nodebb 。
sudo nano /etc/nginx/sites-available/nodebb
插入以下配置,并确保将 forum.howtoforge.local 更改为你的域名。使用此配置,你将为在后台端口 4567 上运行的 NodeBB 设置反向代理。
server {listen 80;server_name forum.howtoforge.local;location / {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;proxy_set_header Host $http_host;proxy_set_header X-NginX-Proxy true;proxy_pass <http://127.0.0.1:4567>;proxy_redirect off;# Socket.IO 支持proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
}
保存文件并退出编辑器。
现在,运行以下命令来激活服务器块文件 nodebb 并验证你的 Nginx 配置。如果你是正确的并且具有正确的 Nginx 配置,你将看到输出 syntax is ok - test is successful。
sudo ln -s /etc/nginx/sites-available/nodebb /etc/nginx/sites-enabled/
sudo nginx -t
最后,运行以下 systemctl 命令来重新启动 Nginx 服务并应用你的更改。然后,检查 Nginx 服务状态以确保其正在运行。
sudo systemctl restart nginx
sudo systemctl status nginx
如下面的输出所示,Nginx 服务正在运行。
使用 HTTPS 保护 NodeBB
在本节中,你将通过 Certbot 和 Letsencrypt 使用 HTTPS 保护 NodeBB。结合 Certbot 和 Nginx,你可以在 Web 服务器上设置自动 HTTPS。
使用以下命令安装 certbot 和 python3-certbot-nginx 软件包:
sudo apt install certbot python3-certbot-nginx -y
现在,运行以下 certbot 命令来生成 SSL 证书并通过 HTTPS 保护你的 NodeBB 安装。请务必使用你的信息更改电子邮件地址和域名。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email user@howtoforge.local -d forum.howtoforge.local
该过程完成后,你将在 /etc/letsencrypt/live/domain.com 目录中看到你的证书。并且你的 NodeBB 安装将自动使用 HTTPS 进行保护。
访问 NodeBB
使用 Web 浏览器打开你的 NodeBB 域名,例如 https://forum.howtoforge.local。如果安装成功,你将看到 NodeBB 的默认主页,如下所示:
单击 Login 链接,系统将提示你进入 NodeBB 登录页面。然后,输入你的管理员用户和密码,然后单击 Login 进行确认。如果你有正确的凭据,你将看到以下管理员仪表板。
在 NodeBB 管理员设置中,你将看到以下内容:
结论
你已在 Ubuntu 22.04 服务器上安装了开源论坛软件 NodeBB。你的 NodeBB 已使用 MongoDB 作为数据库和 Nginx 作为反向代理运行。你还通过 Certbot 和 Letsencrypt 使用 HTTPS 保护了 NodeBB。你现在可以添加 SMTP 服务器以通过电子邮件链接设置注册和确认。
相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site
相关文章:
如何在 Ubuntu 上安装 NodeBB 并使用 Nginx 反向代理
简介 NodeBB 是一款基于 Node.js 的开源论坛软件,为在线社区提供了现代化和响应式的解决方案。在 Ubuntu Linux 上运行的 NodeBB 利用了操作系统的强大性和灵活性,以提供高性能和可扩展性。它结合了 MongoDB 或 Redis 进行数据库管理,使其能…...
Linux脚本语言学习--下
4.Bash的变量 4.1.用户自定义变量 4.1.1.什么是变量 变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息的时候,如一个文件名或是一个数字,就把他存放在一个变量中。每个变量有一个名字,所以很容易引用…...
基于Spring Boot的医院质控上报系统
一、系统背景与意义 医院质控上报系统旨在通过信息化手段,实现医院质量控制的标准化、流程化和自动化管理。该系统能够帮助医院实时监控医疗质量数据,及时发现和处理潜在的质量问题,从而确保医疗服务的安全性和有效性。同时,系统…...
React 第十七节 useMemo用法详解
概述 useMemo 是React 中的一个HOOK,用于根据依赖在每次渲染时候缓存计算结果; 大白话就是,只有依赖项发生变化时候,才会重新渲染为新计算的值,否则就还是取原来的值,有点类似 vue 中的 computed 计算属性…...
大模型呼入机器人系统如何建设?
大模型呼入机器人系统如何建设? 作者:开源呼叫中心系统 FreeIPCC, Github地址:https://github.com/lihaiya/freeipcc 大模型呼叫中心呼入机器人系统的建设是一个涉及多个环节和领域的综合性工程。以下是一个详细的步骤指南,涵盖了…...
【Java 学习】详细讲解---包和导包、Scanner类、输入源
1. 包 1.1 什么是包? 举个例子,你和你的同学有不同的家庭,你们都有自己的爸爸妈妈,都有自己的家。在自己的家中你们可以按照自己爱好摆放东西,都互不干扰。但是,假如你们的家都在一起,你们就不…...
java开发入门学习四-运算符
运算符 运算符: 运算法是一种特殊的符号,标识数据的运算,赋值等 根据分类 算数运算符 和前端运算法的方式是一致的,这里简单的描述% -- %: 取余 :增加 --: 减少 class Computed {public static voi…...
2009 ~ 2019 年 408【操作系统】大题解析
2009 年 讲解视频推荐:【BOK408真题讲解-2009年(催更就退网版)】 1. 同步与互斥(7’) 三个进程 P1, P2, P3 互斥使用一个包含 N(N > 0)个单元的缓冲区。P1 每次用 produce() 生成一个正整数…...
RestTemplate实时接收Chunked编码传输的HTTP Response
学习调用AI接口的时候,流式响应都是使用的 Transfer-Encoding: chunked,图方便想用RestTemplate,但是平时用到的都是直接返回响应对象的类型。使用bing搜索到一种方式,使用下面的代码来读取,于是掉这个坑里了ÿ…...
Java设计模式 —— 【结构型模式】适配器模式(类的适配器、对象适配器、接口适配器)详解
文章目录 基本介绍一、类的适配器二、对象适配器三、接口适配器总结 基本介绍 生活中有很多例子: 不同国家的插座接口不同,需要转换器;家用电源220V,手机只接受5V充电,需要转换器;读卡器,拓展…...
RabbitMQ 消息持久化/镜像队列/lazy对时延影响
测试背景: 不同条件下RabbitMQ不同队列类型的生产时延测试: 测试环境: 机型:rabbimtq.2u4g.cluster 背景流量:1000 TPS 测试条件: 消息大小 4k,消息条数为1000条,时延取值为平均…...
SQL在线格式化 - 加菲工具
SQL在线格式化 打开网站 加菲工具 选择“SQL 在线格式化” 或者直接访问 https://www.orcc.online/tools/sql 输入sql,点击上方的格式化按钮即可 输入框得到格式化后的sql结果...
【vue】在页面右下角添加悬浮按钮组件
效果图: 如上图所示,需要在页面的左下角添加一个悬浮按钮,鼠标放上去时候展示更多详细按钮,点击触发相应方法。 <div class"floating-component"><!-- 悬浮内容 --><el-tooltip placement"left&qu…...
MyBatis-Plus中isNull与SQL语法详解:处理空值的正确姿势
目录 前言1. 探讨2. 基本知识3. 总结 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 基本的Java知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全&#x…...
C语言(指针练习2)
编写函数,要求用指针做形参,分别实现以下功能: (1)求一个字符串长度 (2)在一个字符 串中统计大写字母的个数 (3)在一个字符串中统计数字字符的个数 #include <stdio.h>int str…...
ES6学习Symbol(五)
这里写目录标题 一、概述二、代码 一、概述 ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。 它是 JavaScript 语言的第七种数据类型,前六种是: undefined 、 null 、布尔值(Boolean)、字符串(St…...
简易分页制作
简易分页功能实现 分页是一种常见的前端功能,特别是在需要展示大量数据时。它通过将数据分割成多个页面,帮助用户更容易浏览并提高页面加载性能。本文将介绍一个简易分页的实现思路及其代码实现,旨在帮助开发者快速理解并实现分页功能。 功…...
概率论得学习和整理27:关于离散的数组 随机变量数组的均值,方差的求法3种公式,思考和细节。
目录 1 例子1:最典型的,最简单的数组的均值,方差的求法 2 例子1的问题:例子1只是1个特例,而不是普遍情况。 2.1 例子1各种默认假设,导致了求均值和方差的特殊性,特别简单。 2.2 我觉得 加权…...
arXiv-2024 | NavAgent:基于多尺度城市街道视图融合的无人机视觉语言导航
作者:Youzhi Liu, Fanglong Yao*, Yuanchang Yue, Guangluan Xu, Xian Sun, Kun Fu 单位:中国科学院大学电子电气与通信工程学院,中国科学院空天信息创新研究院网络信息系统技术重点实验室 原文链接:NavAgent: Multi-scale Urba…...
WPF 布局控件
wpf 布局控件有很多,常用的有:Grid, UniformGrid, Border, StackPanel, WrapPanel, DockPanel。 1. Grid Grid 经常作为控件的 Content 使用,常作为 Windows, UserControl 等 UI 元素的根节点。它用来展示一个 n 行 n 列的排版。 因此就有…...
在Mac电脑上安装adb环境
当你在命令行输入 adb version 或adb devices, 报错:zsh: command not found: adb ,那么说明你的 Mac 上没有安装 ADB(Android Debug Bridge),或者它没有添加到你的路径中。你可以按照以下步骤安装和配置 ADBÿ…...
方正畅享全媒体新闻采编系统 reportCenter.do SQL注入漏洞复现
0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…...
Linux SHELL脚本中的常用命令
一.设置主机名称 1.文件的方式 [rootlocalhost 桌面]# vim /etc/hostname [rootlocalhost 桌面]# cat /etc/hostname shell.aaa.org 修改完毕文件后在当前的shell中是不生效的 如果需要看到效果,关闭当前shell后重新开启新的shell 2.通过命令更改主机名 [rootl…...
Go语言启动独立进程
文章目录 问题解决方案1. **将 npc.exe 启动为独立的进程**2. **修改 exec.Command 函数**示例代码解释为什么这样有效注意 问题 在你当前的代码中,调用 exec.Command("XXX.exe") 启动 XXX.exe 程序时,这个程序是由 Go 程序直接启动的。如果 …...
STM32中ADC模数转换器
一、ADC简介 ADC模拟-数字转换器 ADC可以将引脚连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC,1us转换时间 输入电压范围: 0~3.3V,转换结果范围:0~4095 18个输入…...
为什么要用单例模式?
单例模式是一种创建型设计模式,用于确保某个类只有一个实例,并提供一个全局访问点,使得其他类可以轻松访问该实例。 使用单例模式的主要原因包括以下几点: 确保唯一性:在某些情况下,我们需要确…...
线性表查找:Python 实现与性能分析
引言 在数据处理领域,查找操作是一项基础且关键的任务。线性表作为一种常见的数据结构,其查找算法的效率直接影响程序的性能。本文将深入探讨线性表查找的原理、Python 实现以及性能分析,为你揭示如何在 Python 中高效地进行线性表查找。 一…...
QT3学习之进阶理解信号和槽:如何自定义一个类信号,供其它类调用槽函数
下面是QWidget源码,定义了两个事件 /*!This event handler can be reimplemented in a subclass to receivewidget enter events.An event is sent to the widget when the mouse cursor enters thewidget.\sa leaveEvent(), mouseMoveEvent(), event() */void QWi…...
(Image Signal Processor)ISP简介
文章目录 ISP功能简介ISP的主要功能ISP的主要模块1. **黑电平校正(Black Level Correction, BLC)**2. **噪声去除(Denoise)**3. **色彩校正(Color Correction Matrix, CCM)**4. **自动曝光(Auto…...
upload-labs靶场保姆级攻略
第一关:删除前端js校验 写一个一句话木马,命名为1.php 一句话木马 浏览上传 我们发现不可以上传,右键检查,依次点击 找到return checkFile()删掉,再上传 去看一下是否已经写入进去一句话木马 页面什么也没有ÿ…...
02、10个富士胶片模拟的设置
二色彩 1、色彩的加减控制全局的饱和度增减; 2、色彩效果只提升暖色系饱和度; 3、FX蓝色大幅度提升蓝色系饱和度; 4、三个参数都不改变颜色的色相。 2.1 色彩 色彩调整的是拍摄画面整体的色彩饱和程度 2.2色彩效果 调整的是画面中暖色…...
大模型呼出机器人详解
大模型呼出机器人详解 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 大模型呼出机器人是基于大规模深度学习模型构建的智能化客服系统,它能够处理海量数据并学习其中的规律,从而实现高…...
计算机基础知识——数据结构与算法(三)(山东省大数据职称考试)
大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 数据结构与算法…...
【Unity功能集】TextureShop纹理工坊(三)图层(下)
项目源码:在终章发布 索引 图层渲染绘画区域图层Shader 编辑器编辑模式新建图层设置当前图层上、下移动图层删除图层图层快照 图层 在PS中,图层的概念贯穿始终(了解PS图层),他可以称作PS最基础也是最强大的特性之一。…...
基于 SSM 框架 Vue 电脑测评系统:引领电脑评测新方向
4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…...
Android笔记【19】
具体示例 run: val result someObject.run {// 这里可以使用 thisthis.someMethod() }let: val result someObject?.let {// 这里使用 itit.someMethod() }with: val result with(someObject) {// 这里使用 thissomeMethod() }apply: val obj SomeClass().apply {// 这里使…...
Redis 中 IntSet 底层数据结构
IntSet 底层数据结构 序言: 像字符串 SDS 只是保存了一个变量的值,但是像 Redis 中也是需要保存一些集合元素的,这里就介绍一下其中一种集合 IntSet,由于是 Set 所以也有 Set 的一些特性,不过也多加了一些特性: ● 唯…...
自然语言处理:我的学习心得与笔记
Pytorch 1.Pytorch基本语法 1.1 认识Pytorch 1.2 Pytorch中的autograd 2.Pytorch初步应用 2.1 使用Pytorch构建一个神经网络 2.2 使用Pytorch构建一个分类器 小节总结 学习了什么是Pytorch. 。Pytorch是一个基于Numpy的科学计算包,作为Numpy的替代者,向用户提供使用GPU强大…...
Altair: 轻松创建交互式数据可视化
Altair: 轻松创建交互式数据可视化 Altair 是一个基于 Vega-Lite 的 Python 数据可视化库,它旨在简化数据可视化的创建过程,尤其适用于统计图表的生成。Altair 强调声明式编码方式,通过简单的语法,用户能够快速创建复杂的交互式图…...
【NLP】序列到序列(seq2seq)建模工具fairseq使用详解
文章目录 一、fairseq简介二、安装方式2.1 pip安装2.2 源码安装 三、fairseq命令工具3.1 fairseq-preprocess3.2 fairseq-train3.3 fairseq-generate3.4 fairseq-interactivate3.5 fairseq-score3.6 fairseq-eval-lm 4. 常见报错报错1 参考资料 一、fairseq简介 fairseq 是 Fa…...
[极客大挑战 2019]HardSQL 1
[极客大挑战 2019]HardSQL 1 打开实例,发现是个登陆页面,查看源代码,发现又是GET提交check.php 万能密码尝试 不太行,怀疑字段或者空格被过滤,尝试闭合不加其他东西 确认空格、union、and等都被过滤了,尝试…...
天空分割代码
目录 依赖项: 分割源代码: 依赖项: groundingdino Grounded-Segment-Anything 分割源代码: generate_sky_mask.py import os, syssys.path.append(os.getcwd()) # Change to your folder here sys.path.append(Grounded-Segment-Anything)import argparse import os…...
Leetcode 三角形最小路径和
算法思想与代码详解 这段代码采用的是**动态规划(Dynamic Programming)**的思想,用来解决“120. 三角形最小路径和”问题。动态规划通过将问题分解成更小的子问题,并通过保存子问题的解来避免重复计算,从而提高效率。…...
[Unity]Unity跨平台开发之Android入门
安卓环境配置 安装依赖项 推荐使用Unity Hub进行安装,安装时勾选Android Build Support、Android SDK & NDK Tools、OpenJDK。或者指定已安装的依赖项。(注意:指定的依赖项需要是从UnityHub安装的。比如之前安装Unity2022时勾选了上述依…...
搭建Flume
title: 搭建Flume date: 2024-11-30 23:59:00 categories: - 服务器 tags: - Flume - 大数据搭建Flume 本次实验环境:Centos 7-2009、JDK 8、Flume-1.11.0 开始安装 1. 下载安装文件到服务器 # 使用wget命令下载flume文件(二选一) wget …...
【从零开始入门unity游戏开发之——C#篇10】循环结构——while、do-while、for、foreach的使用
文章目录 一、while 循环1、语法:2、示例: 二、 do-while 循环1、语法:2、示例: 三、for 循环1、语法:2、示例: 四、foreach 循环1、语法:2、示例: 五、总结对比六、注意事项七、使用…...
flask flask-socketio创建一个网页聊天应用
应用所需环境: python 3.11.11 其他 只需要通过这个命令即可 pip install flask3.1.0 Flask-SocketIO5.4.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 最好是用conda创建一个新的虚拟环境来验证 完整的pip list如下 Package Version ----…...
MVCC了解
MVCC(多版本并发控制)学习指南及代码示例 一、学习MVCC前先了解什么 1. MVCC的定义和作用 MVCC是一种并发控制机制,用于解决并发事务访问数据库时可能出现的问题,如脏读、不可重复读和幻读。它通过为每个数据行维护多个版本来实…...
LabVIEW随机扫描成像系统
利用LabVIEW开发了一套随机扫描成像系统,利用硬件时钟实现声光偏转器(AOD)的频率控制与信号采集之间的高速时间同步。系统利用了高精度的时钟同步技术,确保了成像精度和重复性,从而有效提高了成像速度和质量。 项目背景…...
系统移植——Linux 内核顶层 Makefile 详解
一、概述 Linux Kernel网上下载的版本很多NXP等有自己对应的版本。需要从网上直接下载就可以。 二、Linux内核初次编译 编译内核之前需要先在 ubuntu 上安装 lzop 库 sudo apt-get install lzop 在 Ubuntu 中 新 建 名 为 “ alientek_linux ” 的 文 件夹 , …...