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

Docker + Jenkins + Nginx实现前端自动化部署

目录

  • 前言
  • 一、前期准备工作
    • 1、示例环境
    • 2、安装docker
    • 3、安装Docker Compose
    • 4、安装Git
    • 5、安装Nginx和Jenkins
      • nginx.conf
      • docker-compose.yml
    • 6、启动环境
    • 7、验证Nginx
    • 8、验证Jenkins
  • 二、Jenkins 自动化部署配置
    • 1、设置中文
    • 2、安装Publish Over SSH、NodeJS
      • (1)Publish Over SSH配置远程服务器
      • (2)NodeJS配置
    • 3、添加凭据
    • 4、创建Job
    • 5、GitHub webHooks配置
    • 6、构建环境
    • 7、Build Steps
    • 8、shell 命令
    • 9、自动部署到对应环境项目目录
  • 三、踩坑记录
  • 四、拓展
    • 查看安装软件版本

在这里插入图片描述

前言

文章有点长,如果你是以学习的态度来看这篇文章,建议收藏起来慢慢看。

前端自动化部署一直以来概念很清楚知道怎么回事,但是其中怎么操作没怎么研究过,虽然之前环境都搭起来了,但是也只是Jenkins构建项目成功,比如提交代码之后怎么触发自动构建,打包后的文件如何迁移到指定服务器的文件目录下,流水线如何搞等等这都是我之前想想头疼也只能头疼的问题。终于还是费了点心思搞了搞自动化部署,又花了大量时间来记录这个过程。

本文主要实现的自动化部署的流程如下:
【 git push提交代码 】——>【触发Jenkins自动构建】——>【拉取GitHub代码】——>【build打包】——>【生成dist文件】——>【压缩dist文件】——>【迁移到指定环境目录下】——>【删除指定环境目录下的dist文件】——>【解压迁移过来的dist.tar】——>【删除dist.tar】——【Success】

从头到尾撸一波,Lets go!

一、前期准备工作

1、云服务器,我的云服务器配置如下:

CentOS
CPU - 2核 内存 - 2GB
系统盘 - SSD云硬盘 40GB

2、安装Docker
3、安装Docker Compose
4、安装Git
5、安装Nginx
7、安装Jenkins
7、添加安全组。在云服务器平台配置端口,比如Jenkins访问的端口,Nginx访问的端口。

1、示例环境

Docker version:24.0.7
Docker Compose version 1.24.0
GIt version:1.8.3.1
Nginx version:1.25.3
Jenkins version:2.414.3

查看上面的版本信息的具体操作可参考拓展中的步骤

2、安装docker

具体安装可查看菜鸟教程,安装完之后,查看docker相关的rpm源文件是否存在

rpm -qa |grep docker

在这里插入图片描述
启动docker

sudo systemctl start docker

3、安装Docker Compose

Docker Compose 可以定义和运行多个 Docker 容器应用的工具。它允许你使用一个单独的文件(通常称为 docker-compose.yml)来配置应用程序的服务,然后使用该文件快速启动整个应用的所有服务。

第一步,下载安装

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

第二步,查看是否安装成功

docker-compose -v

在这里插入图片描述

第三步,给/docker/jenkins_home 目录设置最高权限,所有用户都具有读、写、执行这个目录的权限。(等建了/docker/jenkins_home目录之后设置)

chmod 777 /docker/jenkins_home

第四步,将 /usr/local/bin/docker-compose 文件设置为可执行文件,这样可以通过命令行直接执行 docker-compose 命令,而不必指定脚本的路径。

sudo chmod +x /usr/local/bin/docker-compose

4、安装Git

查看可安装的git版本

yum list git --showduplicates | sort -r

在这里插入图片描述
安装

yum install -y git

-y 表示在安装过程中不询问用户是否确认安装,而是自动回答 “yes”,即自动确认安装。这样可以在命令执行时跳过确认步骤,直接安装软件包,适用于需要自动化安装且无需用户交互的情况。
在这里插入图片描述
查看是否安装成功

git --version

在这里插入图片描述
卸载git,当然这里不需要卸载,只是做一下拓展

yum remove git

配置密钥,一直Enter,最终会生成id_rsa(私钥)id_rsa_pub(公钥)

ssh-keygen -t rsa -C "root"

在这里插入图片描述
然后输入cd /root/.ssh

cd /root/.ssh

在这里插入图片描述
将公钥添加到GitHub或其他代码库的SSH Keys
在这里插入图片描述
添加之后,就是酱样子
在这里插入图片描述

如果设置么有问题,那么服务器就可以拉取GitHub上的代码。
root目录下新建一个home目录,在home目录下拉取代码

git clone https://github.com/zbsguilai/WeChat-Reading.git

在这里插入图片描述

5、安装Nginx和Jenkins

使用docker拉取nginx、jenkins镜像,jenkins镜像不维护了,改用jenkins/jenkins:lts

docker pull nginx 
docker pull jenkins/jenkins:lts

拉取完之后,查看镜像

docker images

在这里插入图片描述
创建docker的相关目录,方便维护

mkdir /docker           
mkdir /docker/compose    
mkdir /docker/jenkins_home   
mkdir /docker/nginx      
mkdir /docker/nginx/conf 
mkdir /docker/html       
mkdir /docker/html/dev   
mkdir /docker/html/release  
mkdir /docker/html/pro

创建docker-compose.ymlnginx.conf配置文件

cd /docker/compose
touch docker-compose.ymlcd /docker/nginx/conf
touch nginx.conf

最终目录结构如下:

   + docker + compose- docker-compose.yml  //docker-compose配置+ html             //各环境代码目录(实际项目可能不在同一目录)+ dev          //dev环境代码目录+ release      //release环境代码目录+ pro          //pro环境代码目录+ jenkins_home     //Jenkins工程目录+ nginx            //nginx工程目录+ conf- nginx.conf  //nginx配置

nginx.conf

# nginx.conf 例:
user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;gzip  on;#dev环境server {#监听的端口listen  8001;server_name  localhost;#设置日志
#        access_log  logs/dev.access.log  main;#定位到index.htmllocation / {#linux下HTML文件夹,就是你的前端项目文件夹root  /usr/share/nginx/html/dev/dist;
#               root  /home/html/dev/dist;#输入网址(server_name:port)后,默认的访问页面index  index.html;try_files $uri $uri/ /index.html;}}#sit环境server {#监听的端口listen  8002;server_name  localhost;#设置日志
#        access_log  logs/sit.access.log  main;#定位到index.htmllocation / {#linux下HTML文件夹,就是你的前端项目文件夹root  /usr/share/nginx/html/sit/dist;
#               root  /home/html/dev/dist;#输入网址(server_name:port)后,默认的访问页面index  index.html;try_files $uri $uri/ /index.html;}}#    include /etc/nginx/conf.d/*.conf;}

重点: 进入服务器控制台安全组配置添加三个都端口。
8080:对应jenkins
8001:对应dev环境
8002:对应sit环境

docker-compose.yml

version: '3'networks:frontend:external: trueservices:                                      # 容器docker_jenkins:user: root                                 # root权限restart: always                            # 重启方式image: jenkins/jenkins:lts                 # 使用的镜像container_name: jenkins                    # 容器名称environment:- TZ=Asia/Shanghai- "JENKINS_OPTS=--prefix=/jenkins_home" ## 自定义 jenkins 访问前缀(上下文context)ports:                                     # 对外暴露的端口定义- 8080:8080- 50000:50000volumes:                                   # 卷挂载路径- /docker/jenkins_home/:/var/jenkins_home     # 挂载到容器内的jenkins_home目录- /usr/local/bin/docker-compose:/usr/local/bin/docker-composedocker_nginx_dev:                            # nginx-dev环境restart: alwaysimage: nginxcontainer_name: nginx_devports:- 8001:8001volumes:- /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf- /docker/html:/usr/share/nginx/html- /docker/nginx/logs:/var/log/nginxdocker_nginx_sit:                            # nginx-sit环境restart: alwaysimage: nginxcontainer_name: nginx_sitports:- 8002:8002volumes:- /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf- /docker/html:/usr/share/nginx/html- /docker/nginx/logs:/var/log/nginx

配置说明:

docker_jenkins 是一个定义的服务名称。
user: root 指定了 Jenkins 容器使用 root 权限。
restart: always 表示容器总是在退出时重启。
image: jenkins/jenkins:lts 指定了 Jenkins 镜像及其版本。
container_name: jenkins 是容器的名称。
ports 定义了容器内外端口的映射。
volumes 定义了主机文件系统路径与容器内路径的挂载关系。
image: nginx指定了 Nginx 镜像。
container_name: nginx_dev 是容器的名称。

6、启动环境

先启动docker

systemctl start docker

然后启动Jenkins、Nginx

docker-compose up -d

查看运行状态

docker-compose ps -a

在这里插入图片描述

7、验证Nginx

/docker/html/dev/dist 目录下新建index.html,文件内容如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><h1>welcome to Nginx</h1>
</body>
</html>

浏览器打开,输入服务器地址:8001看到下面的页面说明nginx配置没问题,同样的操作可测试下8002端口
在这里插入图片描述

8、验证Jenkins

浏览器输入服务器地址:8080/jenkins_home。为什么要加jenkins_home后缀?(思考一波🤔)
在这里插入图片描述
会提示要输入密码,密码位于docker/jenkins_home/secrets/initialAdminPassword

cat /docker/jenkins_home/secrets/initialAdminPassword

登录后,选择安装推荐的插件
在这里插入图片描述
在这里插入图片描述
然后就可以了,到达Jenkins主页面。(我的已经使用过了,所有会有记录)
在这里插入图片描述

二、Jenkins 自动化部署配置

1、设置中文

【Dashboard】——>【Manage Jenkins】——>【Plugins】——>【Available plugins】,搜索local,选择localization Chiness,点击install进行安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装完成后,重启Jenkins或者在浏览器输入服务器地址:8080/jenkins_home/restart。此时页面变成酱样子
在这里插入图片描述

2、安装Publish Over SSH、NodeJS

同样的方式这里不再具体操作,【Dashboard】——>【Manage Jenkins】——>【Plugins】——>【Available plugins】,搜索Publish Over SSHNodeJS,安装后重启。

(1)Publish Over SSH配置远程服务器

Publish Over SSH用来连接远程服务器,接下来去设置连接远程服务器验证方式,本案例采用密码验证。
在这里插入图片描述
找到Publish Over SSH,点击新增
在这里插入图片描述
新增后出来的面板中输入信息,之后点击高级
在这里插入图片描述
输入密码服务器端口,并点击Test Configuration Success进行测试,显示successs则成功,之后先点击应用,再保存
在这里插入图片描述

(2)NodeJS配置

话不多说,Lets go!【Dashboard】——>【系统管理】——>【全局工具配置】——>【NodeJS 安装】
在这里插入图片描述
点击新增NodeJS
在这里插入图片描述
配置安装NodeJS的基本信息,自定义别名、选择安装版本,最后,先点击应用再保存。

在这里插入图片描述

3、添加凭据

添加凭据,也就是GitHub或者其他远程仓库的账号密码,方便之后使用。话不多说,Lets go!【系统管理】——>【凭证管理】
在这里插入图片描述
点击添加凭证
在这里插入图片描述
填写用户名、密码、描述
在这里插入图片描述

4、创建Job

第一次部署的Jenkins没用Job,创建一个,首页右边视图中,点击Create a job

在这里插入图片描述
输入项目名称:测试项目,选择构建一个自由风格的软件项目,点击确定
在这里插入图片描述
接下来需要配置项目的一些信息
在这里插入图片描述
配置完成后,先应用后保存,然后返回首页,打开项目,点击立即构建
在这里插入图片描述
查看控制台输出在这里插入图片描述
在这里插入图片描述

可以看到构建过程中并没有出现error,并最终显示success,此时基础构建基本完成

5、GitHub webHooks配置

git push代码之后,可以自动触发Jenkins自动拉取GitHub上的代码进行构建。打开GitHub中的项目,在Setting中选择Webhooks.
在这里插入图片描述
payload URL 为:http://ip:8080/jenkins_home/github-webhook/
在这里插入图片描述
之后点击Add webHook就可以了,然后需要在Jenkins配置一个选项。构建触发器模块中的GitHub hook trigger for GITScm polling,先应用后保存

在这里插入图片描述

6、构建环境

在 Jenkins 中将 Node.js 和 npm 的 bin 文件夹添加到 PATH 中,否则可能就会报错。
在这里插入图片描述

7、Build Steps

因为提交服务器代码是没有node_moudle,所以我们需要执行脚本去安装依赖,Lets go!源码管理可以看到Build Steps模块,选择Execute NodeJS script
在这里插入图片描述
选择node版本,这个node版本是在上面我们已经配置过的,如果需要其他版本可通过上面操作新增NodeJs即可
在这里插入图片描述
配置完成之后,建议 立即构建 项目

8、shell 命令

在上图中选择增加构建步骤,在下拉框选中执行 shell
在这里插入图片描述
然后输入下面的指令

#!/bin/bash
node -v 
npm -v 
echo $PATH

在这里插入图片描述
之后去构建,可以看到我们打印的版本信息都打印出了
在这里插入图片描述

接下来我们脚本中执行安装node_module以及打包命令。

#!/bin/bash
node -v 
npm -v 
npm install
# npm i esbuild-linux-64@0.13.4 -D
echo "依赖安装成功"
npm run build
echo "打包成功"
echo $PATH

在这里插入图片描述
然后先应用后保存,去立即构建
如果构建出现这个错误,就取消npm i esbuild-linux-64@0.13.4 -D注释
在这里插入图片描述
然后再构建就可以了
在这里插入图片描述
并且,还可以再服务器中看到打包后的dist文件。
在这里插入图片描述

接下来,在本地修改一下代码提交到GitHub,然后可以看到Jenkins会立即出发构建。
在这里插入图片描述

9、自动部署到对应环境项目目录

上面打包到了Jenkins中的workspace中,但是我们设置的项目环境路径跟这个不同,比如开发环境项目目录是/docker/html/dev/dist/,所以需要打包后,把dist文件内容推送到/docker/html/dev/dist/目录下。修改一下上面的脚本,改为下面:

#!/bin/bash
node -v 
npm -v 
npm install
# npm i esbuild-linux-64@0.13.4 -D
echo "依赖安装成功"
npm run build
echo "打包成功"
rm -rf dist.tar     # 每次构建删除已存在的dist压缩包
tar -zcvf dist.tar ./dist  #将dist文件压缩成dist.tar
echo $PATH

在这里插入图片描述
然后点击增加构建步骤,选择Send files or execute commands over SSHSend files or execute commands over SSH命令允许你在构建过程中通过SSH连接到远程服务器执行命令或发送文件。
在这里插入图片描述
然后填写源文件、目标路径、执行脚本

cd /docker/html/dev
rm  -rf   dist/
tar zxvf dist.tar
rm dist.tar

在这里插入图片描述
打包流程是:删除之前打包的tar压缩文件dist,把本次打包的dist文件压缩,然以压缩后的dist.tar为源文件,连接到远程服务器,放到/docker/html/dev目录下。然后删除dist目录,解压刚刚远道而来的dist.tar文件,之后删除压缩包。

  • Source files:准备发送的文件,该文件是相对于这个项目的workspace目录。例如要发送/docker/jenkins_home/workspace/gitlab_web/dist.tar到目标目录,则设置Source files为dist.tar
  • Remove prefix:目标文件前缀添加,例如要操作src下面的某个文件,就设置成src,本案例是跟目录,无需设置
  • Remote directory:目标目录,本案例要复制到dev环境下的dist文件,/docker/html/dev
  • Exec command:最后执行的命令,可在这里进行解压,删除,复制等操作

最后再次执行立即构建。打开你的服务器地址:8001。可以看到刚刚部署的项目啦。over
在这里插入图片描述

三、踩坑记录

踩坑记录都在文中做了正确记录,这里先不多介绍,有问题的话可评论区留言

四、拓展

查看安装软件版本

Docker

docker -v

Nginx

进入nginx容器内,查看版本信息

 docker exec -it  nginx_dev  bin/bash
 nginx -v

Jenkins

进入nginx容器内,查看版本信息

 docker exec -it  jenkins  bin/bash
 java -jar /usr/share/jenkins/jenkins.war --version

Docker Compose

docker-compose -v

Git

git --version

相关文章:

Docker + Jenkins + Nginx实现前端自动化部署

目录 前言一、前期准备工作1、示例环境2、安装docker3、安装Docker Compose4、安装Git5、安装Nginx和Jenkinsnginx.confdocker-compose.yml 6、启动环境7、验证Nginx8、验证Jenkins 二、Jenkins 自动化部署配置1、设置中文2、安装Publish Over SSH、NodeJS&#xff08;1&#x…...

文生视频的发展史及其原理解析:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0

前言 考虑到文生视频开始爆发&#xff0c;比如11月份就是文生视频最火爆的一个月 11月3日&#xff0c;Runway的Gen-2发布里程碑式更新&#xff0c;支持4K超逼真的清晰度作品(runway是Stable Diffusion最早版本的开发商&#xff0c;Stability AI则开发的SD后续版本)11月16日&a…...

【python+Excel】读取和存储测试数据完成接口自动化测试

http_request2.py用于发起http请求 #读取多条测试用例 #1、导入requests模块 import requests #从 class_12_19.do_excel1导入read_data函数 from do_excel2 import read_data from do_excel2 import write_data from do_excel2 import count_case #定义http请求函数COOKIENon…...

WordPress插件大全-免费的WordPress插件汇总

随着互联网的不断发展&#xff0c;网站建设变得日益普及。对于大多数人而言&#xff0c;WordPress是一个熟悉且易于使用的网站建设平台。然而&#xff0c;有时候我们可能会觉得WordPress的功能还不够满足我们的需求&#xff0c;这时候&#xff0c;插件就成了解决问题的得力工具…...

STM32通讯设计

STM32通讯设计 通讯流程STM32程序 通讯流程 1.使用HT2202芯片配置为主机接收&#xff08;轮询模式&#xff09;。 2.将STM32芯片配置为从机发送&#xff0c;中断模式下发送固定数据。 3.如果HT2202芯片能够收到STM32发送的数据则通讯成功&#xff0c;否则通讯失败。 STM32程序…...

外汇天眼:在QOINTEC投资需缴纳分成费才给出金?这合理么?

一般来说&#xff0c;在正规的平台上申请出金是不需要缴纳什么费用的&#xff0c;除非有一些特殊情况&#xff0c;像低额出金、没有交易就申请出金等情况下&#xff0c;或许会让你缴纳一定的手续费或者隔夜利息费等&#xff08;不同的平台有不同的规则&#xff09;&#xff0c;…...

C_8练习题

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 1,在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(&#xff09; A. main B. MAIN C.name D. function 以下正确…...

HuggingFace学习笔记--Tokenizer的使用

1--AutoTokenizer的使用 官方文档 AutoTokenizer() 常用于分词&#xff0c;其可调用现成的模型来对输入句子进行分词。 1-1--简单Demo 测试代码&#xff1a; # 分词器测试Demo from transformers import AutoTokenizerif __name__ "__main__":checkpoint "…...

解决苹果手机iphone手机强制重启

强制关机&#xff1a; 方法1.同时按住左侧的&#xff0c;- 键中的一个和右侧的电源键 方法2.点击桌面的悬浮键–设备–更多–重新启动...

10分钟的时间,带你彻底搞懂JavaScript数据类型转换

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 JS数据类型 3种转换类型 ToBoolean ToString ToNumber 对象转原…...

好用的chatgpt工具用过这个比较快

chatgpthttps://www.askchat.ai?r237422 chatGPT能做什么 1. 对话和聊天&#xff1a;我可以与您进行对话和聊天&#xff0c;回答您的问题、提供信息和建议。 2. 问题回答&#xff1a;无论是关于事实、历史、科学、文化、地理还是其他领域的问题&#xff0c;我都可以尽力回答…...

系统设计概念:生产 Web 应用的架构

在你使用的每个完美应用程序背后&#xff0c;都有一整套的架构、测试、监控和安全措施。今天&#xff0c;让我们来看看一个生产就绪应用程序的非常高层次的架构。 CI/CD 管道 我们的第一个关键领域是持续集成和持续部署——CI/CD 管道。 这确保我们的代码从存储库经过一系列测试…...

基于docker的onlyoffice使用--运行JavaSpringExample

背景 我之前看到有开源项目很好地集成了onlyoffice&#xff0c;效果要比kkfilepreview好&#xff08;应当说应用场景不太一样&#xff09;。本文是在window10环境&#xff0c;安装完Docker Desktop的基础上运行onlyoffice&#xff0c;并利用官网JavaSpringExample进行了集成。 …...

SQL server-excel数据追加到表

参考文章&#xff1a;SQL server 2019 从Excel导入数据_mssql2019 导入excel数据-CSDN博客 将excel数据导入到SQL server数据库的详细过程 注意&#xff1a;第一行数据默认为数据库表中的字段&#xff0c;所以这个必须要有&#xff0c;否则无法映射导入 问题1&#xff1a;ADD…...

深度学习-模型调试经验总结

1、 这句话的意思是&#xff1a;期望张量的后端处理是在cpu上&#xff0c;但是实际是在cuda上。排查代码发现&#xff0c;数据还在cpu上&#xff0c;但是模型已经转到cuda上&#xff0c;所以可以通过把数据转到cuda上解决。 解决代码&#xff1a; tensor.to("cuda")…...

Redis打包事务,分批提交

一、需求背景 接手一个老项目&#xff0c;在项目启动的时候&#xff0c;需要将xxx省整个省的所有区域数据数据、以及系统字典配置逐条保存在Redis缓存里面&#xff0c;这样查询的时候会更快; 区域数据字典数据一共大概20000多条,&#xff0c;前同事直接使用 list.forEach…...

深度学习毕设项目 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…...

leetcode 611. 有效三角形的个数(优质解法)

代码&#xff1a; class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int lengthnums.length;int n0; //三元组的个数//c 代表三角形最长的那条边for (int clength-1;c>2;c--){int left0;int rightc-1;while (left<right){if(nums[left]nums[r…...

Ubuntu使用Nginx部署前端项目——记录

安装nginx 依次执行以下两条命令进行安装&#xff1a; sudo apt-get update sudo apt-get install nginx通过查看版本号查看是否安装成功&#xff1a; nginx -v补充卸载操作&#xff1a; sudo apt-get remove nginx nginx-common sudo apt-get purge nginx nginx-common su…...

小航助学题库蓝桥杯题库c++选拔赛(22年1月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...