微服务CI/CD实践(二)服务器先决软件安装

news2024/11/15 11:02:05

微服务CI/CD实践系列:
 
微服务CI/CD实践(一)环境准备及虚拟机创建
微服务CI/CD实践(二)服务器先决软件安装
微服务CI/CD实践(三)gitlab部署
微服务CI/CD实践(四)nexus3部署
微服务CI/CD实践(五)数据库,redis,nacos等基础中间件部署
微服务CI/CD实践(六)Jenkins部署
微服务CI/CD实践(七)Server服务器环境初始化
微服务CI/CD实践(八)Jenkins + Dokcer 部署微服务后端项目
微服务CI/CD实践(九)Jenkins + Dokcer 部署微服务前端VUE项目
微服务CI/CD实践(十)Minio服务器部署及应用

文章目录

  • 一、docker-ce安装
    • 1.1 国内镜像源配置
  • 二、docker compose安装
  • 三、jdk安装及环境变量配置
  • 四、nodejs安装
    • 4.1 前置依赖
      • 4.1.1 升级make
      • 4.1.2 升级gcc
      • 4.1.3 更新libstdc++
      • 4.1.4 更新glibc
      • 4.1.5 python3更新
      • 4.2 node安装
  • 五、git安装
  • 六、maven安装

上一章介绍了物理主机环境准备、基于VMware ESXi 创建虚拟机步骤以及基本的虚拟机规划,此章主要解决部署微服务前后端服务器所需要的软件安装及依赖配置。以下为各个服务器所需要的先决软件:

  • gitlab-server: docker
  • db-server: docker
  • jenkins-server: jdk17(运行环境) jdk8(构建环境) nodejs18 npm pnpm git maven
  • nacos-server/nexus3: jdk8 docker docker compose
  • minio-server: docker docker compose
  • docker-server: docker

一、docker-ce安装

Docker CE是免费的Docker产品,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。在Centos下我们使用yum进行安装。

1.1 国内镜像源配置

docker-hub因为政策原因,对国内停止服务,且国内从外网拉取镜像会经常性网络超时,导致安装过程中断,因此我们直接使用国内镜像源提升下载速度。
step1 备份当前yum源

## 备份
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

## 还原
sudo cp /etc/yum.repos.d/CentOS-Base.repo.backup /etc/yum.repos.d/CentOS-Base.repo

step2 下载国内yum源配置文件
根据项目实际情况切换合适源,通常首选阿里云的源。我自己在安装过程其中有一台虚机

##  更换为阿里源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

##  更换为163源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo

##  更换为腾讯源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

##  更换为华为源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo

step3 更新yum源缓存

# 3.清空并生成缓存
yum clean all
yum makecache

step 4 安装docker-ce

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
# 默认安装最新版本
sudo yum -y install docker-ce

# 安装指定版本的Docker-CE
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# sudo yum -y install docker-ce-[VERSION]

# Step 4: 开启Docker服务
sudo service docker start

step5 验证安装

[root@k8s-rancher-node02 docker-sh]# docker -v
Docker version 26.1.4, build 5650f9b

step6 配置镜像加速

/etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://docker.rainbond.cc",
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://dockerproxy.com",
        "https://mirror.baidubce.com",
        "https://docker.nju.edu.cn",
        "https://mirror.iscas.ac.cn",
        "https://docker.nju.edu.cn"
    ]
}
# 生效配置
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker

# 验证是否生效,生效后执行下面命令会看到上述配置。
docker info

二、docker compose安装

step1 下载文档版本
因为是github官网资源,直接使用linux下载容易中断,可以使用浏览器或者其他下载工具下载到本地,使用ftp上传到linux服务器,我在实际操作就是本地完成下载再上传到服务器。

sudo curl -L "https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

step2 配置软链

# 使用ftp上传方式才有下面mv步骤,直接使用下载命令的忽略
cd /usr/local/bin/
mv docker-compose-linux-x86_64 docker-compose

# 给可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接以便于从任何位置调用docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证安装
[root@k8s-rancher-server ~]# docker-compose --version
Docker Compose version v2.28.1

三、jdk安装及环境变量配置

step1 下载安装包
jenkins 运行时环境 openjdk-17.0.2_linux-x64_bin.tar.gz
工程构建 jdk-8u202-linux-x64.tar.gz
官网下载缓慢还需要注册账户,因此直接使用国内加速源下载:
阿里云
华为云
下载完成使用ftp上传到服务器

step2 解压缩并配置环境变量

cd /usr/lib
tar -zxvf  jdk-8u261-linux-i586.tar.gz
tar -zxvf  openjdk-17.0.2_linux-x64_bin.tar.gz

# 更改路径
mv  jdk-8u261 ../jdk8
mv  openjdk-17.0.2_linux-x64_bin ../jdk17

# 配置环境变量
vim /etc/profile

# 在文件末尾追加如下代码
export JAVA_HOME_8=/usr/lib/jdk8
export JAVA_HOME_17=/usr/lib/jdk17
export PATH=$JAVA_HOME_17/bin:$PATH

# 更新配置
source /etc/profile
#查看是否安装成功 显示如下内容即ok
[root@k8s-rancher-master ~]# java -version
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)

四、nodejs安装

Jenkins构建vue项目需要在本地安装nodejs环境:

  • nodejs: v18.20.4
  • npm: 10.7.0
  • pnpm: 9.7.0

4.1 前置依赖

centos7版本系统默认的GLIBC、gcc、make版本都是过低无法满足nodejs版本。低版本下安装完成执行命令会报相应版本错误

[root@master ~]# node -v
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)

4.1.1 升级make

# 升级 make(默认为3 升级为4)
cd /usr/lib
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz && cd make-4.3/
./configure  --prefix=/usr/local/make
make && make install
cd /usr/bin/ && mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make

# 验证安装
[root@k8s-rancher-master lib]# make -v
GNU Make 4.3
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

4.1.2 升级gcc

GLIBC的安装依赖gcc编译工具,centos7默认gcc是4.x,需要升级到8.x。

step1 安装SCL
使用SCL+Devtoolset方式安装

yum install centos-release-scl centos-release-scl-rh

/etc/yum.repos.d 下生成 2 个 repo 源文件: CentOS-SCLo-scl.repo 和 CentOS-SCLo-scl-rh.repo
step2 更新SCL源
直接使用默认源安装会报未知错误

[root@localhost yum.repos.d]# yum list all --enablerepo='centos-sclo-rh' | grep "devtoolset-"
Could not retrieve mirrorlist http://mirrorlist.centos.org?arch=x86_64&release=7&repo=sclo-rh error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"


 One of the configured repositories failed (未知),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo=<repoid> ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable <repoid>
        or
            subscription-manager repos --disable=<repoid>

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

手工修改源配置,访问阿里云镜像站 centos镜像站,找到对应版本,比如我们的是centos7,则选择7,如下图:
在这里插入图片描述
进入centos->7>sclo->x86_64页面
在这里插入图片描述
修改CentOS-SCLo-scl.repo源 [centos-sclo-sclo]配置
注释原有baseurl
新增baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/,该地址为上图sclo链接地址

[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
# baseurl=http://mirror.centos.org/centos/7/sclo/$basearch/sclo/
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/
# mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

修改CentOS-SCLo-scl-rh.repo源 [centos-sclo-rh] 配置

[centos-sclo-rh]
name=CentOS-7 - SCLo rh
#baseurl=http://mirror.centos.org/centos/7/sclo/$basearch/rh/
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

step3 刷新缓存

$ yum clean all
$ yum makecache

step4 安装gcc

# 列出可选版本
[root@k8s-rancher-master yum.repos.d]# yum list all --enablerepo='centos-sclo-rh' | grep "devtoolset-"
Failed to set locale, defaulting to C
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
devtoolset-8-binutils.x86_64              2.30-55.el7.2         @centos-sclo-rh 
devtoolset-8-gcc.x86_64                   8.3.1-3.2.el7         @centos-sclo-rh 
devtoolset-8-gcc-c++.x86_64               8.3.1-3.2.el7         @centos-sclo-rh 
devtoolset-8-libstdc++-devel.x86_64       8.3.1-3.2.el7         @centos-sclo-rh 
devtoolset-8-runtime.x86_64               8.1-1.el7             @centos-sclo-rh 
devtoolset-10.x86_64                      10.1-0.el7            centos-sclo-rh  
devtoolset-10-annobin.x86_64              9.23-4.el7.1          centos-sclo-rh 
// 省略。。。。。

# 安装gcc8
sudo yum install devtoolset-8-gcc*

# 查看版本
[root@k8s-rancher-master yum.repos.d]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-8/root/usr --mandir=/opt/rh/devtoolset-8/root/usr/share/man --infodir=/opt/rh/devtoolset-8/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-8.3.1-20190311/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC) 

# 配置
vi /etc/profile
# 在末尾追加如下配置
source /opt/rh/devtoolset-8/enable
# 更新配置
source /etc/profile

在安装gcc8时可能出现如下错误:

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.

按照错误提示安装gcc需要的这三个依赖:GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+。

cd /usr/lib
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2  
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz

# 安装gmp
tar -jxvf gmp-6.1.0.tar.bz2
cd gmp-6.1.0
./configure
make
sudo make install

# 安装mpfr
tar -jxvf mpfr-3.1.4.tar.bz2
cd mpfr-3.1.4
./configure
make
sudo make install

# 安装mpc
tar -zxvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure
make
sudo make install

4.1.3 更新libstdc++

gcc安装后不会自动更新libstdc++,需要手工更新版本

# 查找编译gcc时生成的最新动态库
[root@k8s-rancher-master lib64]# find / -name "libstdc++.so*"
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so
/usr/lib/gcc-7.5.0/build/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24
/usr/lib/gcc-7.5.0/build/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/lib/gcc-7.5.0/build/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/usr/lib/gcc-7.5.0/build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24
/usr/lib/gcc-7.5.0/build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/lib/gcc-7.5.0/build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/usr/lib/gcc-7.5.0/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24
/usr/lib/gcc-7.5.0/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/lib/gcc-7.5.0/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
 

# 将上面的最新动态库 libstdc++.so.6.0.30 复制到/usr/lib64目录下:
$cp /usr/lib/gcc-7.5.0/build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24 /usr/lib64
 
cd /usr/lib64
# 把原来的命令做备份
cp libstdc++.so.6 libstdc++.so.6.bak
rm -f libstdc++.so.6

# 重新链接
ln -s libstdc++.so.6.0.26 libstdc++.so.6

4.1.4 更新glibc

wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar xf glibc-2.28.tar.gz 
cd glibc-2.28/ && mkdir build  && cd build
 
$ ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
$ make
$ make install
 
# 验证更新
[root@k8s-rancher-master glibc-2.28]# strings /lib64/libc.so.6 | grep GLIBC
// 省略....
GLIBC_2.22
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.26
GLIBC_2.27
GLIBC_2.28
GLIBC_PRIVATE
// 省略....

4.1.5 python3更新

本地下载安装包并上传到服务器,这里使用华为镜像源下载

tar -xvzf  Python-3.8.10.tgz
cd Python-3.8.10
./configure --enable-optimizations
make altinstall
# 验证安装
[root@k8s-rancher-master bin]# python3.8 --version
Python 3.8.10

4.2 node安装

使用tar包安装,下载指定版本安装包并上传到服务器,这里直接使用官网地址。

# 解压安装包
tar -xvf node-v18.20.4-linux-x64.tar.xz
mkdir -p /usr/local/nodejs
mv node-v18.20.4-linux-x64/* /usr/local/nodejs/

# 建立node软链接
ln -s /usr/local/nodejs/bin/node /usr/local/bin
# 建立npm 软链接
ln -s /usr/local/nodejs/bin/npm /usr/local/bin

# 验证安装结果
[root@k8s-rancher-master nodejs]# node -v
v18.20.4
[root@k8s-rancher-master nodejs]# npm -v
10.7.0

# 设置国内淘宝镜像源
npm config set registry https://registry.npm.taobao.org
# 查看设置信息
[root@k8s-rancher-master nodejs]# npm config list
; "user" config from /root/.npmrc

registry = "http://registry.npm.taobao.org/" 

; node bin location = /usr/local/nodejs/bin/node
; node version = v18.20.4
; npm local prefix = /usr/local/nodejs
; npm version = 10.7.0
; cwd = /usr/local/nodejs
; HOME = /root
; Run `npm config ls -l` to show all defaults.

# 安装pnpm,使用npm安装
 npm install -g pnpm
 # 增加环境变量配置
 # 在 ~/.bashrc 或 ~/.bash_profile 文件中添加以下行
 vi  ~/.bashrc
 export PATH="/usr/local/nodejs/bin:$PATH"
 # 生效配置
source ~/.bashrc
# 验证结果
[root@k8s-rancher-master nodejs]# pnpm -v
9.7.0

五、git安装

使用yum安装

yum -y install git
[root@k8s-rancher-master nodejs]# git --version
git version 1.8.3.1

六、maven安装

本地下载安装包并上传到服务器,使用华为源下载


#step1 解压
tar zxf apache-maven-3.8.1-bin.tar.gz
mv apache-maven-3.8.1 /usr/local/maven3.8.1
#step3 修改环境变量, 在/etc/profile中添加以下几行
vi /etc/profile
export MAVEN_HOME=/usr/local/maven3.8.1
export PATH=$MAVEN_HOME/bin:$PATH
#生效配置
source /etc/profile

# 验证安装
[root@k8s-rancher-master local]# mvn -v
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /usr/local/maven3.8.1
Java version: 17.0.2, vendor: Oracle Corporation, runtime: /usr/lib/jdk17
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2093898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每天五分钟计算机视觉:人脸识别网络FaceNet

本文重点 在前面的课程中,为了解决人脸识别的问题,我们学习了Siamese神经网络。本文我们学习另外一种人脸识别网络模型FaceNet。 论文 FaceNet: A Unified Embedding for Face Recognition and Clustering FaceNet概述 FaceNet是谷歌在CVPR 2015上提出的一种深度学习模型,…

ET6框架(九)Protobuf消息使用

文章目录 一、序列化和反序列化二、什么是Prototbuf&#xff1f;三、ET工程中的Proto&#xff1a;四、查看消息类型五、生成编译Proto2CS: 一、序列化和反序列化 序列化 &#xff1a; 将程序中的对象转化为字节序列的过程 反序列化 &#xff1a; 把字节回复为程序中的过程 在网…

可以根据手机的折叠状态改变播放音效:nova Flip 的妙趣音效

由于折叠机最基础的“可折叠”属性&#xff0c;导致折叠机的扬声器相对于人的位置来说会存在更多的变化&#xff0c;在不同的折叠状态下&#xff0c;听感方面可能就会大有不同。 nova Flip手机利用这一特性&#xff0c;首次根据折叠形态差异&#xff0c;自适应了不同形态的音效…

手把手带你实现C语言扫雷进阶(1)(接上回基础版扫雷,附上源码)

文章目录 一、扫雷进阶留下的问题二.非雷扩展周围不是雷函数三、标记雷函数四.查看排雷总时间五、扫雷进阶源码及总结 一、扫雷进阶留下的问题 我们先来看看之前讲扫雷基础的时候留下的一些问题&#xff1a; 是否可以选择游戏难度     ◦ 简单 9 * 9 棋盘&#xff0c;10个雷…

【Qt】Qt 网络 | UDP Socket

文章目录 核心API代码示例服务器客户端 要使用 Qt 网络编程&#xff0c;需要在项目中的 .pro 文件中添加 network 模块 核心API Qt 的 UDP Socket 主要的类有两个 QUdpSocket 和 QNetworkDatagram 因为是 UDP 是面向数据报的&#xff0c;QNetworkDatagram 就是对 数据报的封…

【项目管理】系统设计与开发管理规程(Word完整文件)

2 过程总体描述 2.1 过程概述 2.2 过程流程图 3 过程元素描述 3.1 产品方案 3.2 产品设计 3.3 产品实现 获取方式&#xff1a;本文末个人名片直接获取。 软件资料清单列表部分文档清单&#xff1a;工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xf…

【模拟器-夜神】Mac卡在99%问题

▒ 目录 ▒ &#x1f6eb; 导读需求 1️⃣ 首次启动提示2️⃣ 手动授权允许加载驱动非苹果CPU苹果CPU &#x1f4d6; 参考资料 &#x1f6eb; 导读 需求 解决模拟器中遇到的问题 &#xff0c;汇总。 1️⃣ 首次启动提示 首次点击图标启动时会弹出提示&#xff1a; 解决方式如…

本地搭建XSS 漏洞接收平台实践分享

免责声明 本文仅限于学习讨论与技术知识的分享&#xff0c;不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;本文作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&…

操作系统面试真题总结(二)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 栈空间和空间堆有什么区别&#xff1f;各自优缺点呢&#xff1f; …

diffusion 模型gguf量化使用案例,支持CPU运行

参考: https://github.com/leejet/stable-diffusion.cpp 在线demo使用: https://colab.research.google.com/drive/1NkAzSn3iYOwkY1Jy7qJfV_d2ZMHQmXrK?usp=sharing 一般gguf量化质量 fp16 > Q8 > fp8 > Q4 > Q4k_m > Q4k_s > nf4 安装 !git clone --r…

[H贪心] lc3273. 对 Bob 造成的最少伤害(贪心+排序+推公式+双周赛138_4)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;3273. 对 Bob 造成的最少伤害 题单&#xff1a; na na 2. 题目解析 略低于正常难度的 T4。 显然我们应该尽可能的将伤害高的先消掉&#xff0c;然后写完代码就会发现 WA 了。想太简单了&#xff0c;那就推…

如何在JPG文件中隐写数据

概述 最近在做资源管理器背景的一个功能时&#xff0c;需要将信息传递到DLL中去&#xff0c; 主要就是传递一些比较简单的参数&#xff0c;包括图片的契合度&#xff0c;透明度之类的。通信方式有多种&#xff0c;毕竟是练手的功能&#xff0c;就想找一些以前没用过的方式。 …

心觉:潜意识精准显化(一)开篇

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松搞定人生挑战&#xff0c;实现心中梦想&#xff01; 挑战日更写作156/1000(完整记录在下面) 公门洞开纳百川 众心逐梦越千山 号召引领潜力绽 心觉潜意识无间 每个人都渴望自…

psql常见报错解决

问题 解决 要在管理员模式下启动 pg_ctl start -D "D:\Program\PostgreSQL\data" 注册成服务 D:\Program\PostgreSQL\bin\pg_ctl.exe register -N "postgresql" -D "D:\Program\PostgreSQL\data" -U "postgres" -P "postgre…

华为 HCIP-Datacom H12-821 题库 (1)

有需要题库的可以看主页置顶 1.MSTP 有不同的端口角色&#xff0c;对此说法不正确的是&#xff1a; A、MSTP 中除边缘端口外&#xff0c;其他端口角色都参与 MSTP 的计算过程 B、MSTP 同一端口在不同的生成树实例中可以担任不同的角色。 C、MSTP 域边缘端口是指位于 MST 域的边…

桶排序【算法 14】

桶排序算法详解 桶排序&#xff08;Bucket Sort&#xff09;是一种基于分配的排序算法&#xff0c;适用于均匀分布在特定范围内的数据。其核心思想是将输入数据分到若干个桶&#xff08;Bucket&#xff09;中&#xff0c;每个桶分别进行排序&#xff0c;最后合并桶内的元素形成…

【STM32】BKP备份寄存器与RTC实时时钟

本篇博客重点在于标准库函数的理解与使用&#xff0c;搭建一个框架便于快速开发 目录 BKP简介 BKP代码注解 读写备份寄存器 复位备份寄存器 BKP代码 RTC简介 RTC代码注解 RTCCLK时钟源选择 分频器配置 时钟同步 RTC代码 MyRTC.h MyRTC.c main.c BKP简介 BKP&…

TeamTalk路由服务器

路由相关信令和协议设计 enum BuddyListCmdID {// ...... 暂时省略无关信令CID_BUDDY_LIST_USERS_STATUS_REQUEST 522,CID_BUDDY_LIST_USERS_STATUS_RESPONSE 523,// ...... 暂时省略无关信令 };message IMUsersStatReq{//cmd id: 0x020arequired uint32 user_id 1;repeat…

JS设计模式之“名片设计师” - 工厂方法模式

image.png 前言 上篇文章我们了解到什么是简单工厂模式&#xff0c;请参考上篇文章&#xff1a;JS设计模式之 “神奇的魔术师” - 简单工厂模式&#xff0c;不过这是工厂中最简单的一种&#xff0c;本篇文章我们将同大家一起认识一种更复杂的工厂模式&#xff0c;它将给我们提…

【Kubernetes】声明式创建各种资源

k8s声明式创建 kubernetes陈述式创建与声明式创建yaml各个字段含义Pod yaml文件详解deployment.yaml文件详解server.yaml文件详解 k8s中port的区别1、声明式创建pod label包含app: zhangsan2、声明式创建deployment&#xff0c;包含3个nginx副本&#xff0c;label包含app: zhan…