docker部署redis mysql nacos seata rabbitmq minio onlyoffice nginx實戰

docker部署redis mysql nacos seata rabbitmq minio onlyoffice nginx實戰

一、環境介紹

操作系統:ubuntu22.04
軟件環境:docker、docker-compose

在這里插入圖片描述
在這里插入圖片描述

二、docker安裝

  1. 版本規定到26.1.3版本過低會引起莫名其妙的問題。
  2. 打開終端。更新軟件包列表:
sudo apt update
  1. 安裝必要的依賴包:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  1. 添加Docker的官方GPG密鑰:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 添加Docker的存儲庫:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  1. 更新軟件包索引:
sudo apt update
  1. 安裝Docker Engine:
sudo apt install docker-ce docker-ce-cli containerd.io
  1. 啟動Docker服務:
sudo systemctl start docker
  1. 驗證Docker是否安裝成功:
docker --version

在這里插入圖片描述

  1. 下載官方發布的二進制文件來安裝Docker Compose:
sudo apt-get update
sudo apt-get install docker.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 下載完成后,給二進制文件添加執行權限:
sudo chmod +x /usr/local/bin/docker-compose
  1. 驗證Docker Compose是否已正確安裝:
docker-compose --version

在這里插入圖片描述

  1. 如果需要非root用戶也能運行Docker命令,可以將用戶添加到docker組:
sudo usermod -aG docker ${USER}
  1. 添加國內鏡像源
sudo nano /etc/docker/daemon.json 

內容為

{"registry-mirrors": ["https://dockerproxy.cn","https://0vmzj3q6.mirror.aliyuncs.com","https://docker.m.daocloud.io","https://mirror.baidubce.com","https://dockerproxy.com","https://mirror.iscas.ac.cn","https://huecker.io","https://dockerhub.timeweb.cloud","https://noohub.ru","https://vlgh0kqj.mirror.aliyuncs.com"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker

三、中間件安裝

(1)nginx

docker pull nginx
docker run \
-p 80:80 -p 8081:8081 -p 8082:8082 -p 8083:8083 \
--name nginx \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx/log:/var/log/nginx \
-v /var/Web:/var/Web \
-d nginx

先建個空的nginx容器,把docker容器里面的配置,按照內網映射關系,把配置文件考到容器外部對應的目錄下。然后再刪除容器,重寫按照上面的命令建。
-p 80:80 -p 8081:8081 -p 8082:8082 -p 8083:8083 \ 端口轉發容器內外要一一對應。如果配置文件配置了,但是容器創建的時候 -p沒有配置,轉發會失效。
/var/Web 目錄是前端代碼部署位置。

(2)mysql8

docker pull mysql:8.0.17

先建立一個空的容器,用于把容器內部的配置文件考出來。

docker run -p 3306:3306 --name=mysql \
-e MYSQL_ROOT_PASSWORD=nasen \
-d --privileged=true --restart=unless-stopped mysql:8.0.17
# 修改配置文件權限
chmod 644 /data/mysql/conf/my.cnf
# 創建目標目錄
mkdir -p /data/mysql/conf/
# 假設容器名稱為 mysql
docker cp mysql:/etc/mysql/my.cnf /data/mysql/conf/chmod 644 /data/mysql/conf/my.cnfdocker stop mysql
docker rm mysql

下面命令是未持久化的,數據都存在容器里面。

docker run -p 3306:3306 --name=mysql \
-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=nasen \
-d --privileged=true --restart=unless-stopped mysql:8.0.17

持久化的命令如下:

docker run -p 3306:3306 --name=mysql \
-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/mysql-files/:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=nasen \
-d --privileged=true --restart=unless-stopped mysql:8.0.17

(3)minio文件系統

docker pull minio/minio
docker run --network=host --name minio -p 9000:9000 -p9090:9090 -d \
--restart=always \
-e MINIO_ROOT_USER=nasen \
-e MINIO_ROOT_PASSWORD=nasen \
-v /etc/ssl/certs:/etc/ssl/certs:ro \
-v /data/minio/data1:/data1 \
-v /data/minio/data2:/data2 \
-v /data/minio/config:/root/.minio minio/minio server --address ':9000' --console-address ':9090' /data{1...2}

在這里插入圖片描述

(4)onlyoffice

docker pull onlyoffice/documentserver
sudo docker run -i -t -d -p 9098:80 --restart=always --name document-office \
-v /data/onlyoffice/DocumentServer/logs:/var/log/onlyofffice \
-v /data/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Daata \
-v /data/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /data/onlyoffice/DocumentServer/db:/var/lib/postgrescl -e JWT_SECRET=7cb43b633b6f11f0a0b1c21651ae7097 onlyoffice/documentserver:latest

在這里插入圖片描述

(5) rabbitmq

docker pull rabbitmq:3-management
docker run --name rabbitmq -d -p 15672:15672 -p 5672:5672 -v /home/rabbitmq:/var/www/rabbitMQ -e RABBITMQ_DEFAULT_USER=document -e RABBITMQ_DEFAULT_PASS=nasen rabbitmq:3-management

(6) redis

docker pull redis:7.2.4
docker run --restart=always --name redis  -p 6379:6379 -d redis:7.2.4 redis-server --requirepass nasen --protected-mode no --appendonly yes

(7)nacos

docker pull nacos/nacos-server:v2.2.3
vim /data/nacos/conf/application.properties
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
#db.num=${MYSQL_DATABASE_NUM:1}
#db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
#db.user.0=${MYSQL_SERVICE_USER}
#db.password.0=${MYSQL_SERVICE_PASSWORD}db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
db.user.0=root
db.password.0=nasen### The auth system to use, currently only 'nacos' and 'ldap' is supporteda:
nacos.core.auth.enabled=true
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:example}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:example}
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true

上面的配置文件修改數據庫配置

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
db.user.0=root
db.password.0=nasen
docker run -d --name nacos -p 18848:8848 -p 19848:9848  \
-e MODE=standalone \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e ACOS_AUTH_ENABLE=true \
-v /data/nacos/logs:/home/nacos/logs \
-v /data/nacos/conf/application.properties:/home/nacos/conf/application.properties \
-v /data/nacos/data/:/home/nacos/data \
nacos/nacos-server:v2.2.3

在這里插入圖片描述

(8)elasticsearch

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.14.0
docker run -d --name elasticsearch \-p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \-e "ELASTICSEARCH_USERNAME=nasen" \-e "ELASTICSEARCH_PASSWORD=nasen" \docker.elastic.co/elasticsearch/elasticsearch:7.14.0

(9)seata

第一步MySQL建數據庫seata
CREATE TABLE IF NOT EXISTS `global_table`
(`xid`                       VARCHAR(128) NOT NULL,`transaction_id`            BIGINT,`status`                    TINYINT      NOT NULL,`application_id`            VARCHAR(32),`transaction_service_group` VARCHAR(32),`transaction_name`          VARCHAR(128),`timeout`                   INT,`begin_time`                BIGINT,`application_data`          VARCHAR(2000),`gmt_create`                DATETIME,`gmt_modified`              DATETIME,PRIMARY KEY (`xid`),KEY `idx_status_gmt_modified` (`status` , `gmt_modified`),KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(`branch_id`         BIGINT       NOT NULL,`xid`               VARCHAR(128) NOT NULL,`transaction_id`    BIGINT,`resource_group_id` VARCHAR(32),`resource_id`       VARCHAR(256),`branch_type`       VARCHAR(8),`status`            TINYINT,`client_id`         VARCHAR(64),`application_data`  VARCHAR(2000),`gmt_create`        DATETIME(6),`gmt_modified`      DATETIME(6),PRIMARY KEY (`branch_id`),KEY `idx_xid` (`xid`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(`row_key`        VARCHAR(128) NOT NULL,`xid`            VARCHAR(128),`transaction_id` BIGINT,`branch_id`      BIGINT       NOT NULL,`resource_id`    VARCHAR(256),`table_name`     VARCHAR(32),`pk`             VARCHAR(36),`status`         TINYINT      NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',`gmt_create`     DATETIME,`gmt_modified`   DATETIME,PRIMARY KEY (`row_key`),KEY `idx_status` (`status`),KEY `idx_branch_id` (`branch_id`),KEY `idx_xid` (`xid`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;CREATE TABLE IF NOT EXISTS `distributed_lock`
(`lock_key`       CHAR(20) NOT NULL,`lock_value`     VARCHAR(20) NOT NULL,`expire`         BIGINT,primary key (`lock_key`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);
第二步編輯配置文件
vim /data/seata/config/resources/application.yml

編輯如下內容:

#  Copyright 1999-2019 Seata.io Group.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.server:port: 7091spring:application:name: seata-serverlogging:config: classpath:logback-spring.xmlfile:path: ${log.home:${user.home}/logs/seata}extend:logstash-appender:destination: 127.0.0.1:4560kafka-appender:bootstrap-servers: 127.0.0.1:9092topic: logback_to_logstashconsole:user:username: seatapassword: seata
seata:config:type: nacosnacos:server-addr: 127.0.0.1:18848namespace:group: SEATA_GROUPusername: nacospassword: nacoscontext-path:data-id: seataServer.propertiesregistry:type: nacosnacos:application: seata-serverserver-addr: 127.0.0.1:18848group: SEATA_GROUPnamespace:cluster: defaultusername: nacospassword: nacosstore:# support: file 、 db 、 redismode: file
#  server:
#    service-port: 8091 #If not configured, the default is '${server.port} + 1000'security:secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login
第三步創建容器
docker pull seataio/seata-server:1.7.1
docker run -d --name seata-server --network=host -p 8091:8091 -e SEATA_CONFIG_NAME=file:/root/seata-config/registry -e SEATA_IP=127.0.0.1 seataio/seata-server:1.7.1

把容器外部的配置復制到容器內部

docker cp /data/seata/config/resources/application.yml seata-server:/seata-server/resources/application.yml
docker restart seata-server        #重啟容器重寫加載配置
docker logs seata-server

在這里插入圖片描述
日志如上則啟動成功。

在這里插入圖片描述
進入nacos看到seata注冊到注冊中心上!

第四步驟在nacos上追加seata的配置

進入到nacos后臺,nacos nacos
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicodee=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=nasen
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.distributedLockTable=distributed_lock
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
第六步重啟nacos
docker restart nacos
docker logs nacos

在這里插入圖片描述

重啟seata-server無報錯算成功

docker restart seata-server        #重啟容器重寫加載配置

在這里插入圖片描述
無報錯算成功

再次登錄nacos后臺查看
在這里插入圖片描述
在這里插入圖片描述
部署成功!seata部署過程確實有點繞,大家按步驟走即可。先裝nacos再部署seata!最后還得注冊到nacos上,再加上數據庫配置。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83123.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83123.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83123.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

全面解析:npm 命令、package.json 結構與 Vite 詳解

全面解析:npm 命令、package.json 結構與 Vite 詳解 一、npm run dev 和 npm run build 命令解析 1. npm run dev 作用:啟動開發服務器,用于本地開發原理: 啟動 Vite 開發服務器提供實時熱更新(HMR)功能…

【Oracle】TCL語言

個人主頁:Guiat 歸屬專欄:Oracle 文章目錄 1. TCL概述1.1 什么是TCL?1.2 TCL的核心功能 2. 事務基礎概念2.1 事務的ACID特性2.2 事務的生命周期 3. COMMIT語句詳解3.1 COMMIT基礎語法3.2 自動提交與手動提交3.3 提交性能優化 4. ROLLBACK語句…

OpenCV CUDA模塊直方圖計算------用于在 GPU 上執行對比度受限的自適應直方圖均衡類cv::cuda::CLAHE

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::cuda::CLAHE 是 OpenCV 的 CUDA 模塊中提供的一個類,用于在 GPU 上執行對比度受限的自適應直方圖均衡(Contrast Limi…

OpenGAN:基于開放數據生成的開放集識別

簡介 簡介:這次學習的OpenGAN主要學習一個思路,跳出傳統GAN對于判斷真假的識別到判斷是已知種類還是未知種類。重點內容不在于代碼而是思路,會簡要給出一個設計的代碼。 論文題目:OpenGAN: Open-Set Recognition via Open Data …

隨機游動算法解決kSAT問題

input:n個變量的k-CNF公式 ouput:該公式的一組滿足賦值或宣布沒有滿足賦值 算法步驟: 隨機均勻地初始化賦值 a ∈ { 0 , 1 } n a\in\{0,1\}^n a∈{0,1}n.重復t次(后面會估計這個t): a. 如果在當前賦值下…

企業上線ESOP電子作業指導書系統實現車間無紙化的投入收益數據綜合分析

企業上線ESOP電子作業指導書系統實現車間無紙化的投入收益數據綜合分析 一、成本節約:無紙化直接降低運營成本 紙張與耗材費用銳減 o 杭州科創致遠案例:某汽配企業引入無紙化系統后,年節省紙張耗材費用超50萬元。通過電子化替代傳統紙質文檔…

高并發抽獎系統優化方案

引子 最近接觸了一個抽獎的項目,由于用戶量比較大,而且第三方提供的認證接口并發量有限,為了保證服務的高可用性,所以對高并限制發有一定的要求。經過一系列研究和討論,做出了以下一些優化方案。 需求分析 根據用戶量…

STM32八股【10】-----stm32啟動流程

啟動流程 1.上電復位 2.系統初始化 3.跳轉到 main 函數 啟動入口: cpu被清空,程序從0x00000000開始運行0x00000000存放的是reset_handler的入口地址0x00000000的實際位置會變,根據不同的啟動模式決定啟動模式分為: flash啟動&a…

LLMTIME: 不用微調!如何用大模型玩轉時間序列預測?

今天是端午節,端午安康!值此傳統佳節之際,我想和大家分享一篇關于基于大語言模型的時序預測算法——LLMTIME。隨著人工智能技術的飛速發展,利用大型預訓練語言模型(LLM)進行時間序列預測成為一個新興且極具…

在VirtualBox中打造高效開發環境:CentOS虛擬機安裝與優化指南

🔥「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 一、為何選擇VirtualBox CentOS組合? 對于程序員而言,構建隔離的開發測試環境是剛需。VirtualBox憑借其跨平臺支持(W…

LeeCode 98. 驗證二叉搜索樹

給你一個二叉樹的根節點 root ,判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下: 節點的左子樹只包含 小于 當前節點的數。節點的右子樹只包含 大于 當前節點的數。所有左子樹和右子樹自身必須也是二叉搜索樹。 提示: 樹中節…

Python簡易音樂播放器開發教程

📚 前言 編程基礎第一期《12-30》–音樂播放器是日常生活中常用的應用程序,使用Python和pygame庫可以輕松實現一個簡易的音樂播放器。本教程將詳細講解如何開發一個具有基本功能的音樂播放器,并解析其中涉及的Python編程知識點。 &#x1f6e…

ssh連接斷開,保持任務后臺執行——tmux

目錄 **核心用途****基礎使用方法**1. **安裝 tmux**2. **啟動新會話**3. **常用快捷鍵(需先按 Ctrlb 前綴)**4. **會話管理命令**5. **窗格操作進階** **典型工作流****注意事項****配置文件(~/.tmux.conf)** tmux( …

3D Gaussian splatting 04: 代碼閱讀-提取相機位姿和稀疏點云

目錄 3D Gaussian splatting 01: 環境搭建3D Gaussian splatting 02: 快速評估3D Gaussian splatting 03: 用戶數據訓練和結果查看3D Gaussian splatting 04: 代碼閱讀-提取相機位姿和稀疏點云3D Gaussian splatting 05: 代碼閱讀-訓練整體流程3D Gaussian splatting 06: 代碼…

每日c/c++題 備戰藍橋杯(P1204 [USACO1.2] 擠牛奶 Milking Cows)

P1204 [USACO1.2] 擠牛奶 Milking Cows - 詳解與代碼實現 一、題目背景 三個農民每天清晨[……](簡要介紹題目背景,與官網描述類似) 二、問題分析 輸入要求 :讀取 N 個農民的擠奶時間區間,計算兩個值:最…

保持本地 Git 項目副本與遠程倉庫完全同步

核心目標: 保持本地 Git 項目副本與 GitHub 遠程倉庫完全同步。 關鍵方法: 定期執行 git pull 命令。 操作步驟: 進入項目目錄: 在終端/命令行中,使用 cd 命令切換到你的項目文件夾。執行拉取命令: 運行…

Flutter 4.x 版本 webview_flutter 嵌套H5

踩坑早期版本 使用 WebView 代碼如下 import package:flutter/material.dart; import package:webview_flutter/webview_flutter.dart;class HomePage extends StatelessWidget {const HomePage({super.key});overrideWidget build(BuildContext context) {return Scaffold(ap…

rtpinsertsound:語音注入攻擊!全參數詳細教程!Kali Linux教程!

簡介 2006年8月至9月期間,我們創建了一個用于將音頻插入指定音頻(即RTP)流的工具。該工具名為rtpinsertsound。 該工具已在Linux Red Hat Fedora Core 4平臺(奔騰IV,2.5 GHz)上進行了測試,但預…

跑步前熱身動作

跑前熱身的核心目標是升高體溫、激活肌肉、預防損傷 ,同時通過動態動作提升運動表現。熱身(步驟關節→肌肉→心肺)和針對性動作(如抱膝抬腿)能有效降低受傷風險,建議每次跑步前嚴格執行。 推薦跑前熱身動作…

GIT命令行的一些常規操作

放棄修改 git checkout . 修改commit信息 git commit --amend 撤銷上次本地commit 1、通過git log查看上次提交的哈希值 2、git reset --soft 哈希值 分支 1.創建本地分支 git branch 分支名 2.切換本地分支 git checkout mybranch; 3.創建一個新分支并…