【经验分享】容器云运维的知识点
最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了
虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的
由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公开出来
欢迎各位大佬指正文章内容

注意1-5都是容器化部署,与k8s没有关系,也就是k8s出现之前的技术
记录更改容器源的方法:【这个源已不能用】
sed -i 's/registry.k8s.io\/pause:3.6/registry.aliyuncs.com\/google_containers\/pause:3.9/g' /etc/containerd/config.toml#更改systemctl restart containerd # 重启
1-5题用软件包ERP.tar.gz ,后续题目用软件包CICD-Runner.tar.gz
1,容器化部署 MariaDB
注意:centos_7.9.2009.tar 在ERP.tar.gz里
注意docker images查看一下镜像加载后的名字,后面写dockerfile的FROM需要替换为自己的镜像名字
docker load -i centos_7.9.2009.tar
注意我们这里配置的yum源,与以往的不一样
[ERP]
name=ERP
enabled=1
gpgcheck=0
baseurl=file:///root/yum
因为这个yum源是给容器准备的,等会dockerfile运行会将它复制到容器里
编写mysql初始化脚本(这个也是要去容器中运行的)
#!/bin/bash
mysql_install_db --user=root
mysqld_safe --user=root &
sleep 8
mysqladmin -u root password 'tshoperp'
mysql -uroot -ptshoperp -e "grant all on *.* to 'root'@'%' identified by 'tshoperp'; flush privileges;"
mysql -uroot -ptshoperp -e "create database jsh_erp;use jsh_erp; source /opt/jsh_erp.sql;"
编写docker_mariadb(以下从字面意思都能读懂,不多解释)
这个是错的
vi docker_mariadb
# 错的错的错的这个是错的
FROM centos:7.9.2009 # 抽取镜像
MAINTAINER troml1788 # 维护者信息
RUN rm -rf /etc/yum.repos.d/* # 清空自带的源
COPY local.repo /etc/yum.repos.d/ # 复制我们准备的本地仓库
RUN mkdir /root/yum # 创建本地仓库
COPY yum /root/yum # 复制离线包到仓库
ENV LC_ALL en_US.UTF-8 # 设置环境变量LC_ALL为en_US.UTF-8,这是为了支持多语言字符集
RUN yum -y install mariadb-server # 安装数据库
COPY jsh_erp.sql /opt/ # 复制数据库备份文件
COPY mysql_init.sh /opt/ # 复制数据库初始化脚本
RUN bash /opt/mysql_init.sh # 执行数据库初始化脚本
EXPOSE 3306 # 开放3306端口
CMD ["mysqld_safe","--user=root"] # 执行mysqld_safe命令,以root用户执行mysql
这个是对的
FROM centos:7.9.2009
MAINTAINER troml1788
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY jsh_erp.sql /opt/
COPY yum /root/yum
COPY mysql_init.sh /opt/
ENV LC_ALL en_US.UTF-8
RUN yum install -y mariadb-server
RUN bash /opt/mysql_init.sh
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]
需要注意的是对应关系,这个docker_mariadb一定要和mysql_init.sh、yum文件夹、local.repo、jsh_erp.sql在同一级下
因为要复制他们到使用centos7创建的容器中
docker build \
-t erp-mysql:v1.0 \
-f docker_mariadb .
docker images
总结本题的操作:
加载了centos7镜像到docker中,它将被用来创建镜像,也可直接启动一个容器
为新建的容器编写local.repo仓库源和mysql_init.sh数据库初始化脚本
使用Docker构建一个Docker镜像(基于dockerfile和centos7镜像)
构建了一个erp-mysql:v1.0(名字:版本)镜像
这个镜像将被用来启动出一个容器
2,容器化部署Redis
编写dockerfile
这个是错的
vi docker_redis
# 错的错的错的这个是错的
FROM centos:centos7.9.2009
MAINTAINER troml1788
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
RUN mkdir /root/yum
COPY yum /root/yum
RUN yum install -y redis
# 修改文件内容
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf
RUN sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
# 启动 Redis并应用修改后的文件
CMD ["/usr/bin/redis-server","/etc/redis.conf"]
报错点在:
如果没有下面添加的那一行,就没有开启认证服务
那么应用程序来认证,但是这边并不提供认证服务,就会导致现象:
账户密码错误的时候会提示错误,但是账户密码正确时会提示请求错误
FROM centos:centos7.9.2009
MAINTAINER troml1788
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum install -y redis
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf
RUN sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
RUN echo "requirepass tshoperp" >> /etc/redis.conf # 添加这一行
EXPOSE 6379
CMD ["/usr/bin/redis-server","/etc/redis.conf"]
正确内容
FROM centos:7.9.2009
MAINTAINER troml1788
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum install -y redis
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf
RUN sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
RUN echo "requirepass tshoperp" >> /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server","/etc/redis.conf"]
docker build \
-t erp-redis:v1.0 \
-f docker_redis .
docker images
这里只是定制了一个redis镜像,redis一般是多节点运行的
题目只要求我们构建,并没有要求我们构建redis主从,因此完工
3,容器化部署Nginx
nginx是一个轻量级的HTTP服务器
这个是错的
# 错的错的错的这个是错的
FROM centos:centos7.9.2009
MAINTAINER troml1788
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum install -y nginx
COPY nginx/nginx.conf /etc/nginx/nginx.conf
COPY nginx/app.tar.gz /
RUN tar -zxvf app.tar.gz
RUN /bin/bash -c 'echo init ok'
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
正确内容
FROM centos:7.9.2009
MAINTAINER troml1788
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum install -y nginx
COPY nginx/nginx.conf /etc/nginx/nginx.conf
COPY nginx/app.tar.gz /
RUN tar -zxvf app.tar.gz
RUN /bin/bash -c 'echo init ok'
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
docker build \
-t erp-nginx:v1.0 \
-f docker_nginx .
4,容器化部署ERP
ERP是企业资源计划,就是工厂里面生产用的系统,作为我们本次练手部署的应用服务
这个是错的
vi docker_erpFROM centos:7.9.2009
MAINTAINER troml
COPY app.jar /root
RUN mkdir -p /root/yum
COPY yum /root/yum
RUN rm -rfv /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
EXPOSE 9999
# 启动就运行app.jar
CMD java -jar /root/app.jar
正确内容
FROM centos:7.9.2009
MAINTAINER troml1788
COPY app.jar /root
COPY yum /root/yum
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
EXPOSE 9999
CMD java -jar /root/app.jar
docker build \
-t erp-server:v1.0 \
-f docker_erp .
5,编排部署 ERP
注意这里:
编排也就是容器化部署应用服务,k8s做的就是很强大的统一编排功能,这里我们做的是docker编排
编写docker-compose.yaml 文件
就是这里出现了问题。错误保留,正确往下看
这个是错的
version: '3.8'
services:mysql:image: erp-mysql:v1.0redis:image: erp-redis:v1.0erp:image: erp-server:v1.0nginx:image: erp-nginx:v1.0ports:- "8888:80" # 将宿主机的 8888 端口映射到容器的 80 端口
错误点在于:我们之前用的mysql做了资源名称,导致映射成了mysql,而应用程序中写的连接是erp-mysql,这就是连不上数据库的原因
不知道为什么,vi中写yaml总是说没对齐(所以建议用本地VSCode写好后站上去)
正确内容
version: '3.8'
services:erp-mysql:image: erp-mysql:v1.0erp-redis:image: erp-redis:v1.0erp-server:image: erp-server:v1.0erp-nginx:image: erp-nginx:v1.0ports:- "8888:80"
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,它使用一个单一的配置文件(通常称为 docker-compose.yaml 文件)来定义整个应用程序
在我们的环境中,他和harbor仓库一起按照
就是说,它会自动寻找docker-compose.yaml ,如果起了其它名字,需要docker-compose -f xxx.yaml up来运行
## 按两下table
[root@k8s-master-node1 ~]# docker-
docker-compose docker-init docker-proxy
运行yaml文件
Docker 容器中,通常在 docker-compose.yml 文件中声明的各个服务
docker-compose up -d
这时,如果不出意外的话,就可以访问到ERP工厂了,不过我们的app.jar出了点问题【上面已修复】
小总结:
以上完整地容器化部署了一个项目,刚刚启动的这些服务被称为容器
在docker中,容器是最小部署单位
在k8s中,pod是最小部署单位,pod包含多个容器,而且多个pod共享资源(同一台裸机或虚拟机)
完美解决问题:
不是app.jar包的问题,而是我们操作出现了问题
部署redis # 没开启认证
docker-compose.yaml # 映射名起错了
展示:
账户admin 密码123456


注意:这样部署的服务重启一下就没了,如果需要他自动重启,那么我们就要按下面写:
[root@k8s-master-node1 ERP]# cat docker-compose.yaml
version: '3.8'
services:erp-mysql:image: erp-mysql:v1.0restart: alwayserp-redis:image: erp-redis:v1.0restart: alwayserp-server:image: erp-sever:v1.0restart: alwayserp-nginx:image: erp-nginx:v1.0ports:- "8888:80"restart: always
从这里开始就是将应用服务部署到k8s集群中的
虽然集群4G运存就能跑起来
但是到了图形化界面还是有点慢的
我这里给到了13G运存
注意:下列题目该用CICD-Runner.tar.gz了
6,部署 GitLab
加载镜像等步骤就不多说了,题目中有
不过比赛时命令不一样,咱们这是自己下载的包用脚本上传

2024-12-14更正:现在k8s版本比较新,用ctr加载
docker load -i images.tar
记录一个快速编写kubectl模板的方法(kubectl在搭建的知识点里有详细介绍)
kubectl create --help
创建模板再试运行,直接就写入模板了
kubectl create deployment gitlab \
--image=gitlab/gitlab-ce:latest \
--port=80 \
# 试运行,不实际创建资源
--dry-run -oyaml > gitlab.yamlkubectl create service nodeport gitlab \
--tcp=80:80 \
--dry-run \
-oyaml >> gitlab.yaml
修改成下面这样
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: gitlabname: gitlabnamespace: gitlab-ci # 添加要部署的命名空间,等会记得先创建
spec:replicas: 1selector:matchLabels:app: gitlabtemplate:metadata:labels:app: gitlabspec:containers:- image: gitlab/gitlab-ce:latestimagePullPolicy: IfNotPresent #添加镜像拉取策略,本地有这个镜像就不用再拉了name: gitlab-ceports:- containerPort: 80env:- name: GITLAB_ROOT_PASSWORD # 添加root用户密码
# 注意这里,因为我们用的最新版gitlab镜像,严格要求不能是弱密码
# 所以此处先不按题目的admin@123来,比赛时要填admin@123value: QazWsxEdc781 # 设置root用户密码
#下面这几个不指定也可以,本来就是默认的- name: GITLAB_HOST # 添加master主机value: 192.168.100.10 # 添加IP- name: GITLAB_PORT value: "80"
--- # 多个资源之间要用三个横线隔开
apiVersion: v1
kind: Service
metadata:creationTimestamp: nulllabels:app: gitlabname: gitlabnamespace: gitlab-ci
spec:ports:- name: 80-80port: 80protocol: TCPtargetPort: 80nodePort: 30880 #添加暴漏端口,不然会随机一个selector: # 选择器很重要,它会找这个gitlab然后暴漏它的端口app: gitlabtype: NodePort
回想一下命名空间的作用
kubectl create namespace gitlab-ci
kubectl apply -f gitlab.yaml
kubectl get pod,svc -n gitlab-ci
等待一会

发现出错了
[root@k8s-master-node1 CIDI-Runner]# kubectl delete pod gitlab-7cb8c45dbc-fvldt -n gitlab-ci
pod "gitlab-7cb8c45dbc-fvldt" deleted

访问
注意:出现这个不要急,因为服务要一个一个启动

出现了,输入我们的admin/QazWsxEdc781

开始上传demo-2048项目
点击新建项目

点击导入项目

有些版本会出现这种情况(常见于新版)
如果有上传按钮跳过蓝色字样的步骤【直接去看第七步】

解决方法

允许上传

继续上传


选择导入

就可以导入了

上传项目

出现404或者下图Error都不要急,等一会刷新就好
20s左右没恢复基本就是出问题了,看虚拟机配置有没有给足
本题完成

后面以图形化操作居多
7,部署 GitLab Runner
首先查看我们的gitlab-runner 和 gitlab镜像版本


然后安装heml(安装过的可以不用做)

获取令牌

为GitLab Runner 创建持久化构建缓存目录/home/gitlab-runner/ci-build-cache ,并将其注册到 GitLab 中
修改values.yaml(values.yaml在gitab-runner.tar.gz压缩包里,解压后进去修改,改完不用动文件位置)
[[runners.kubernetes.volumes.host_path]]name = "cache"mount_path = "/home/gitlab-runner/ci-build-cache"host_path = "/opt/cache"[[runners.kubernetes.volumes.host_path]]name = "docker"mount_path = "/var/run/docker.sock"read_only = truehost_path = "/var/run/docker.sock"

helm install --namespace gitlab-ci gitlab-runner \--set gitlabUrl=http://192.168.100.10:30880/ \--set runnerRegistrationToken=qCcz8c2MSnxdx5_RxbGz \--set runners.tags=k8s-runner \--set rbac.create=true .

刷新界面就能看到

如果没有,可能是入栈流量没开启(此为刷新后没有runner的步骤)

先删除之前搞的,然后按照步骤重新来
helm uninstall -n gitlab-ci gitlab-runner
本题完成
8,部署 GitLab Agent
将 Kubernetes 集群添加到 GitLab 项目中指定名称和命名空间

我们进圈起来那个

kubectl exec -it -n gitlab-ci gitlab-5d568c5b-g44lz /bin/bash

1,检查组件:

如果没启动,去vi /etc/gitlab/gitlab.rb
修改
# gitlab_rails['gitlab_kas_enabled'] = true
并取消注释,这里我们启动了就不管了
2,修改gitlab.yml
find /opt/* -name gitlab.yml
# 回显下面那个文件,编辑他
/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
这里修改为master的节点,也就是harbor仓库和部署gitlab的节点

修改完后重启

不修改等会流水线会报错找不到那个gitlab-xxxxx
ctrl + D 返回master节点
回到项目(准备创建目录)

创建的目录
.gitlab/agents/kubernetes-agent

再创建一个空file,在我们刚刚创建的目录下

输入名字保存

加入集群




helm install gitlab-agent --generate-name \--namespace gitlab-ci \--set config.token=glagent-z5XMY8gEGxEdFa6AtNJ6SLWv3C2n8z1gapJ-EgswTb6Uz-ncQw \--set config.kasAddress=ws://192.168.100.10:30880/-/kubernetes-agent/
此时注意终端所处位
开始执行部署命令
刷新界面(注意这里:有时响应比较慢,等一会就好了,大约30秒)

本题完成
注意:由于2024年阿里云挂了,在之前,我们执行加入集群后会拉去15.1.0
以前是能成功拉起来的,阿里云挂了以后就拉不下来啦

解决方法:给镜像重新打个标签
docker tag registry.gitlab.com/gitlab-org/cluster-integration/gitlab-agent/agentk:v15.1.0 registry.gitlab.com/gitlab-org/cluster-integration/gitlab-agent/agentk:v15.0.0
或者修改yaml文件,但是这种方法更简单粗暴
小记一下:
如果遇到pod出现诸如:ImagePullBackOff…这样的错误,可使用下面命令排错
kubectl describe pod XXXX -n gitlab-ci
删除pod重建
kubectl delete pod XXXX -n gitlab-ci
9,构建 CI/CD
本题注意分支,所有操作均在drone分支下操作
进入drone分支,现成的yaml文件

修改demo-2048.yaml(改成harbor地址)

然后配置文件已经写了,现在需要去harbor创建仓库
登陆

创建

完成

下面这个文件已经存在于gitlab的仓库内,切换分支进行修改
修改dockerfile

必做步骤:
向harbor仓库推送镜像
docker login 192.168.100.10
docker tag tomcat:8.5.64-jdk8 192.168.100.10/library/tomcat:8.5.64-jdk8
docker push 192.168.100.10/library/tomcat:8.5.64-jdk8


可能会遇到权限不足的问题
kubectl get clusterroles
为用户 "system:serviceaccount:gitlab-ci:default" 授予 admin 角色:kubectl create clusterrolebinding gitlab-ci-admin \
--clusterrole=admin \
--serviceaccount=gitlab-ci:default

写一个流水线脚本(这里完全不会写,复制的)
variables:MAVEN_OPTS: "-Dmaven.repo.local=/home/gitlab-runner/ci-build-cache/.m2/repository"DOCKER_CONFIG: |{"insecure-registries": ["192.168.100.10"]}
stages:- project_build- image_build- deployproject_build:stage: project_buildimage: maven:3.6-jdk-8tags:- k8s-runnerscript:- echo 'nameserver 10.10.1.2' >> /etc/resolv.conf- echo 'nameserver 114.114.114.114' >> /etc/resolv.conf
# 新增配置阿里源- mkdir -p /home/gitlab-runner/ci-build-cache/- echo "<settings><mirrors><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><url>https://maven.aliyun.com/repository/central</url></mirror></mirrors></settings>" > /home/gitlab-runner/ci-build-cache/settings.xml- mvn package install -B -DskipTests -s /home/gitlab-runner/ci-build-cache/settings.xml- ls target# 这一步是因为不知道为啥构建出来的是2048.war- mv target/2048.war target/demo-2048.war- jar -xf target/demo-2048.war- cp -rvf target /home/gitlab-runner/ci-build-cache/- ls /home/gitlab-runner/ci-build-cache/target/image_build:stage: image_buildimage: docker:18.09.7tags:- k8s-runnervariables:DOCKER_DRIVER: overlay2services:- name: docker:18.09.7-dindentrypoint: ["dockerd-entrypoint.sh"]command: ["--insecure-registry","192.168.100.10"]script:- mkdir -p /etc/docker- mkdir -p /usr/lib/systemd/system/- echo ExecStart=/usr/bin/dockerd --insecure-registry=192.168.100.10 > /usr/lib/systemd/system/docker.service- cat /usr/lib/systemd/system/docker.service- echo "$DOCKER_CONFIG" > /etc/docker/daemon.json- cat /etc/docker/daemon.json- echo 'Harbor12345' > password.txt- cat password.txt | docker login -u admin --password-stdin 192.168.100.10- mv Dockerfiles/Dockerfile .- ls /home/gitlab-runner/ci-build-cache/- cp -rvf /home/gitlab-runner/ci-build-cache/target/2048 .- docker build -t demo:latest .- docker tag demo:latest 192.168.100.10/demo/demo:latest- docker push 192.168.100.10/demo/demo:latestdeploy:image: bitnami/kubectl:1.22stage: deploytags:- k8s-runnerscript:- kubectl apply -f template/demo-2048.yaml- kubectl apply -f template/service.yaml
保存文件直接开始流水线

如果报错,查看下述文章:
https://www.yuque.com/wangziyang-5wpbr/rx60zg/rbhlexqumu6ralce?singleDoc# 《流水线排错记录》
运行结束

持久化缓存目录也成功了

访问masterIP:8889就可以玩游戏了
排错完毕,特此记录

如果重启后,这个pod错误了,那么删除pod,直接就会自动新建pod
启动后发现有问题

删除后,自动又创建了一个,然后又可以玩了

下面这三题太超纲了,暂时放弃
10 服务网格:创建 VirtualService
实验环境:运行中的 Kubernetes 集群,Istio 已经被正确安装 这个题要确定在搭建过程中istio部署成功,且启用自动注入 Envoy 代理作为 Sidecar相关文章:
【经验分享】容器云运维的知识点
最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…...
MFC学习笔记专栏开篇语
MFC,是一个英文简写,全称为 Microsoft Foundation Class Library,中文翻译为微软基础类库。它是微软开发的一套C类库,是面向对象的函数库。 微软开发它,是为了给程序员提供方便,减少程序员的工作量。如果没…...
电子科技大学《高级算法设计与分析》期末复习问题汇总(客观题-选择题、判断题)
电子科技大学《高级算法设计与分析》问题汇总_已知背包问题的动态规划算法时间复杂度为o(nw),其中n为物品数目,w为背包容量。请-CSDN博客 转载自上面这个链接,古希腊掌管成电专业课的神!!为了防止他的链接失效,自己也转存一份 &…...
GPTcelltype——scRNA-seq注释
#安装包 install.packages("openai") remotes::install_github("Winnie09/GPTCelltype") #填写API Sys.setenv(OPENAI_API_KEY your_openai_API_key) #加载包 #Load packages library(GPTCelltype) library(openai) #准备文件 #Assume you have already r…...
AI与大数据的深度结合:驱动决策的革命性力量
引言:数字时代的决策挑战 在这个信息爆炸的数字时代,数据早已渗透到我们生活的方方面面。全球每天产生的数据量呈指数级增长,无论是用户的消费行为、设备的运行状态,还是社会热点的实时动态,这些信息的规模和复杂性前所…...
Java多线程与线程池技术详解(九)
面对苦难的态度:《病隙碎笔》“不断的苦难才是不断地需要信心的原因,这是信心的原则,不可稍有更动。” 孤独与心灵的成长:《我与地坛》“孤独的心必是充盈的心,充盈得要流溢出来要冲涌出去,便渴望有人呼应他…...
【常考前端面试题总结】---2025
React fiber架构 1.为什么会出现 React fiber 架构? React 15 Stack Reconciler 是通过递归更新子组件 。由于递归执行,所以更新一旦开始,中途就无法中断。当层级很深时,递归更新时间超过了 16ms,用户交互就会卡顿。对于特别庞…...
什么是大语言模型(LLM)
1. 什么是大语言模型(LLM)? LLM 是一种基础模型(Foundation Model)的实例。 基础模型的特点: 使用大量未标注的自监督数据进行预训练。通过学习数据中的模式,生成具有普适性和可适应性的输出…...
柚坛工具箱Uotan Toolbox适配鸿蒙,刷机体验再升级
想要探索智能设备的无限可能?Uotan Toolbox(柚坛工具箱)将是您的得力助手。这款采用C#语言打造的创新型开源工具箱,以其独特的设计理念和全面的功能支持,正在改变着用户与移动设备互动的方式。 作为一款面向专业用户的…...
supervisor使用详解
参考文章: Supervisor使用详解 Supervisor 是一个用 Python 编写的客户端/服务器系统,它允许用户在类 UNIX 操作系统(如 Linux)上监控和控制进程。Supervisor 并不是一个分布式调度框架,而是一个进程管理工具&#x…...
win11电源设置在哪里?控制面板在哪里?如何关闭快速启动?
不知道微软咋想的,从win10(win8)开始搞事情,想把windows娱乐化。 娱乐化的特点就是只照顾傻子不考虑专家,系统设置统统藏起来,开机即用——也只能那么用。 搞两套界面做不到吗? win11非常头疼的…...
【论文阅读笔记】One Diffusion to Generate Them All
One Diffusion to Generate Them All 介绍理解 引言二、相关工作三、方法预备知识训练推理实现细节训练细节 数据集构建实验分结论附录 介绍 Paper:https://arxiv.org/abs/2411.16318 Code:https://github.com/lehduong/onediffusion Authors࿱…...
SpringCloud和Nacos的基础知识和使用
1.什么是SpringCloud 什么是微服务? 假如我们需要搭建一个网上购物系统,那么我们需要哪些功能呢?商品中心、订单中心和客户中心等。 当业务功能较少时,我们可以把这些功能塞到一个SpringBoot项目中来进行管理。但是随…...
人工智能技术的深度解析与推广【人工智能的应用场景】
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…...
md5sum -c
md5sum -c xxx 命令用于验证文件的 MD5 校验和是否匹配。具体来说,-c 选项告诉 md5sum 命令去读取指定文件(通常是一个包含 MD5 校验和的文件),并与实际文件的 MD5 校验和进行比较。 工作原理: 生成校验和文件&#x…...
excel使用笔记
1.工作表1计算工作表2某列的和 假设我们有两个工作表,分别命名为“Sheet1”和“Sheet2”,我们想要求和这两个工作表中A1到A**单元格的数据,可以在任意一个工作表的单元格中输入以下公式: SUM(Sheet1!A1:A10, Sheet2!A1:A10) SUM…...
keepalived+nginx实现web高可用
目录 高可用集群搭建 Keepalived+nginx实现web高可用 一.节点规划 二.基础准备 1.修改主机名 2.关闭防火墙和selinux服务 三.用keepalived配置高可用 1.安装nginx服务 2.修改nginx配置文件 3.启动nginx 4.访问nginx 5.安装keepalived服务 6.编辑配置文件…...
边界层气象:脉动量预报方程展开 | 湍流脉动速度方差预报方程 | 平均湍流动能收支方程推导
写成分量形式 原始式子: ∂ u i ′ ∂ t u ‾ j ∂ u i ′ ∂ x j u j ′ ∂ u ‾ i ∂ x j u j ′ ∂ u i ′ ∂ x j − 1 ρ ‾ ⋅ ∂ p ′ ∂ x i g θ v ′ θ ‾ v δ i 3 f ϵ i j 3 u j ′ v ∂ 2 u i ′ ∂ x j 2 ∂ ( u i ′ u j ′ ‾ ) ∂ x j…...
TOSUN同星TsMaster使用入门——2、使用TS发送报文,使用graphics分析数据等
在第一章里面已经介绍了关于同星工程的创建和最基础的总线分析,接下来看看怎么使用TS发送报文以及图形化分析数据。 目录 一、使用Graphics分析报文信号/变量(对标CANoe Graphics) 二、使用数值窗口统计信号值/变量 三、使用TS发送报文 3…...
【操作系统】实验七:显示进程列表
实验7 显示进程列表 练习目的:编写一个模块,将它作为Linux内核空间的扩展来执行,并报告模块加载时内核的当前进程信息,进一步了解用户空间和内核空间的概念。 7.1 进程 进程是任何多道程序设计的操作系统中的基本概念。为了管理…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
