【使用jenkins+docker自动化部署java项目】
背景:
有A(打包机129),B(游戏服130) 2个机器,他们都安装有docker,请完成部署。
一、准备好java项目,写好Dockerfile
# 基础镜像,使用包含 JDK 17 的 OpenJDK 镜像
FROM openjdk:17-jdk-slim# 设置工作目录
WORKDIR /app# 把当前目录下的 Spring Boot JAR 包复制到容器的 /app 目录下
COPY target/demo-0.0.1-SNAPSHOT.jar /app/app.jar# 运行 Spring Boot 应用程序
CMD ["java", "-jar", "app.jar"]
位置: // 这一步其实是在远程机器docker build打镜像包使用
思考:我们不需要安装docker上传插件而是打包后,使用rsync进行同步即可,然后在目标机上进行构建镜像,所以无需在pom.xml中配置docker插件!!!
二、初始化打包机,安装docker和jenkins
# 通过MobaXterm可以向linux里的/home目录可以上传文件
# chmod -R 777 /home/ # 设置docker阿里云镜像
# cd /etc/docker/
# vim daemon.json
# {
# "registry-mirrors": ["https://mirror.ccs.tencentyun.com", "https://pfn30lpj.mirror.aliyuncs.com"]
# }# 重启docker容器
# sudo systemctl restart docker# 设置下格式不然win上传到linux运行不起来
#sudo find -name "*.sh" | xargs dos2unix# 强制删除镜像
# docker rmi -f hello-world:latest
# docker update --restart=no <container_id># 重启容器
# docker restart jenkins# 在windows上打开jenkins
# http://192.168.13.129:8080# DOC: 查看密码
# [root@bogon home]# cat /data/jenkins_home/secrets/initialAdminPassword
# 870bcdc8051443a3bdf69edfa6b2649f# DOC: 防火墙是否禁止22端口,禁止则打开
# firewall-cmd --query-port=22/tcp
# sudo firewall-cmd --add-port=2181/tcp --permanent
# sudo firewall-cmd --reload# DOC: 打开机器的root认证权限
# 需要打开权限,不然没办法拷贝到宿主机
# vim /etc/ssh/sshd_config
# PermitRootLogin: yes
# PasswordAuthentication:yes#重启SSH服务使其生效
# systemctl restart sshd# DOC: 在目标机上生成下公钥
# ssh-keygen -t rsa -C "1072772483@qq.com"# DOC: 拷贝jenkins机器的公钥到目标机
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.13.130# DOC: 如果下面的直接执行成功,没让输入密码,则说明可以了
# ssh root@192.168.13.130# DOC: 进入到宿主机
# docker exec -it jenkins /bin/bash# DOC: 容器内安装rsync
# apt update -y
# apt install rsync -y#DOC: 打包镜像
# 新建Dockerfile文件
# [root@localhost demo]# docker build -t demo .
# 之后执行 docker images即可发现: demo镜像在里面了
#[root@localhost demo]# docker run -d -p 8082:8080 demo // 在任意一个目录下运行
# docker ps // 这样子可以看到,已经有一个demo的容器起来了
# http://192.168.13.129:8082/test/hello // 发现已经可以运行了# DOC: 部署脚本
# #想要部署到的游戏服
# SERVER_IP=192.168.13.130
# #游戏服目录
# APP_PATH=/home/demo
# echo# echo WORKSPACE: ${WORKSPACE}
# echo# echo "[打包java程序,并同步到远程服务器]"
# cd ${WORKSPACE}/demo
# mvn clean package
# rsync -avzrcI ${WORKSPACE}/demo/ root@$SERVER_IP:$APP_PATH
# echo# echo "[在打包机上的2_UpdateServer传递到游戏服,并执行]"
# ls
# #ssh root@192.168.13.130 'bash -s' < ${WORKSPACE}/../../2_UpdateServer.sh
# echoJENKINS_HOME_DIR="/data/jenkins_home"if which docker > /dev/null 2>&1; thenecho "已经存在docker"
elseecho "不存在docker,开始安装"echo "准备docker环境"sudo dnf remove podmansudo rm -rf /etc/containers /etc/registries.conf /etc/containers/policy.json /etc/containers/storage.conf ~/.config/containers ~/.local/share/containerssudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-enginesudo dnf install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo echoecho "安装docker"sudo dnf install docker-ce docker-ce-cli containerd.io -yechoecho "启动docker"sudo systemctl start dockerechoecho "设置docker开机启动"sudo systemctl enable dockerechoecho "打印安装的docker版本"sudo docker --versionecho
fiecho "[step1]:检测jenkins home"
# 检查目录是否成功创建
if [ -d "$JENKINS_HOME_DIR" ]; thenecho "目录 $JENKINS_HOME_DIR 创建成功"chown -R 1000:1000 "$JENKINS_HOME_DIR"echo "目录 $JENKINS_HOME_DIR 设置读写权限"
elseecho "已经存在 $JENKINS_HOME_DIR 目录."
fi
echo echo "[step2]:检测docker镜像"
if docker images | grep -q "jenkins"; thenecho "存在 Jenkins 镜像"
elseecho "不存在 Jenkins 镜像,拉取镜像"docker pull jenkins/jenkins:lts
fi
echo echo "[step3]:检测docker是否运行着jenkins,没有运行则启动jenkins容器"
if docker ps -a| grep -q "jenkins"; thenecho "存在名为 jenkins的容器,先删除"docker stop jenkins# 删除 jenkins 容器docker rm jenkins
fi
echoecho "[step4]:重新运行jenkins"
docker run -d -u root -p 8080:8080 -p 50000:50000 -v $JENKINS_HOME_DIR:/var/jenkins_home --restart=always --name jenkins jenkins/jenkins:lts
echo
需要注意: jenkins是运行在docker中,因此,是docker中与目标机之间的ssh认证,而不是宿主机!!!
三、初始化游戏服,安装docker
echo "[检测游戏服务器docker是否存在]"
if which docker > /dev/null 2>&1; thenecho "游戏服务器已经存在docker"
elseecho "游戏服务器不存在docker,开始安装"echo "准备docker环境"sudo dnf remove podmansudo rm -rf /etc/containers /etc/registries.conf /etc/containers/policy.json /etc/containers/storage.conf ~/.config/containers ~/.local/share/containerssudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-enginesudo dnf install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo echoecho "安装docker"sudo dnf install docker-ce docker-ce-cli containerd.io -yechoecho "启动docker"sudo systemctl start dockerechoecho "设置docker开机启动"sudo systemctl enable dockerechoecho "打印安装的docker版本"sudo docker --versionecho
fi
echo
四、打包机,配置jenkins
不知道为何不使用https方式不识别!!!
选用的是maven风格的项目,如果没有安装maven插件,则选择下版本,并且自动下载
shell
#想要部署到的游戏服
SERVER_IP=192.168.13.130
#游戏服目录
APP_PATH=/home/demo
echoecho WORKSPACE: ${WORKSPACE}
echoecho "[打包java程序,并同步工程到远程服务器]"
cd ${WORKSPACE}/demo# 选择maven风格的项目,就不需要自己打包了
#mvn clean package rsync -avzrcI ${WORKSPACE}/demo/ root@$SERVER_IP:$APP_PATH
echoecho "[在游戏服上打包镜像,并运行起来]"
ssh root@${SERVER_IP} "cd ${APP_PATH}; docker stop demo; docker rm demo; docker rmi demo:1.0; docker build -t demo:1.0 .; docker run -d -p 8082:8080 --name demo demo:1.0; "
echo
所以最核心的就是: rsync进行文件夹同步 和 ssh root@server_ip "xxx"远程执行目标机上的shell文件。
五、运行
TestController.java
package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {/*** http://localhost:8080/test/hello*/@RequestMapping("/hello")public String hello() {return "Hello World 3";}
}
效果:
相关文章:
【使用jenkins+docker自动化部署java项目】
背景: 有A(打包机129),B(游戏服130) 2个机器,他们都安装有docker,请完成部署。 一、准备好java项目,写好Dockerfile # 基础镜像,使用包含 JDK 17 的 OpenJDK 镜像 FROM openjdk:17-jdk-slim# 设置工作目录 WORKDIR /…...
Vue3+Element Plus如何实现左树右表页面案例:即根据左边的树筛选右侧表功能实现
文章目录 一、最终效果二、源代码2.1 AddDataSource.vue2.2 LeftTree.vue2.3 FieldDrawer.vue2.4 RightTable.vue2.5 Emp.vue 三、代码解读3.1 AddDataSource.vue —— 数据源新增对话框3.2 LeftTree.vue —— 数据源树视图3.3 FieldDrawer.vue —— 字段详情抽屉3.4 RightTabl…...
Redisson的红锁,分段锁,公平锁,联锁。。。。。。
红锁:Redisson红锁可以防止主从集群锁丢失问题。Redisson红锁要求,必须要构建至少三个Redis主从集群,若一个请求要申请锁,必须向所有主从集群中提交key写入请求,只有当大多数集群(过半集群)锁写…...
system V 共享内存
system V是一种标准,linux内核支持这种标准,专门设计了一个ipc模板(通信的接口设计,原理,接口,相似性) 使用各自的虚拟地址访问物理内存 共享内存描述共享内存的内核数据结构它所对应的物理空间 进程间通信的本质&…...
ResNet改进(27):融合EfficientViT 高效混合网络设计
在计算机视觉领域,卷积神经网络(CNN)和视觉Transformer(ViT)各有优势。 今天分享的是一种将两者巧妙结合的方案——在ResNet18基础上引入轻量化ViT模块的设计思路。 整体架构概览 这个混合网络主要由三部分组成: ResNet18骨干网络:作为特征提取器,去掉了原模型的平均池化…...
字符串与栈和队列-算法小结
字符串 双指针 反转字符串(双指针) 力扣题目链接 void reverseString(vector<char>& s) {for (int i 0, j s.size() - 1; i < s.size()/2; i, j--) {swap(s[i],s[j]);} }反转字符串II 力扣题目链接 遍历字符串的过程中,只要让 i (2 * k)&#…...
go语言学习笔记:gin + gorm + mysql 用户增删改查案例入门
大家好,我是此林。 Golang 语言现在已经成为了编程的趋势,毕竟是大厂背书嘛,Google 研发的。 目前很多云原生项目都是基于 go 来编写的,比如: Kubernetes (K8s) 容器编排系统, Docker 容器化技术&…...
设计模式——建造者模式(生成器模式)总结
当我们需要创建一个非常复杂的对象时,可以使用建造者模式,分步骤建造一个对象,最后将完整的对象返回给客户端。 比如,我们要生成一个房子对象,建造一个房子,需要打地基、盖围墙、盖地板、安装门、安装窗户…...
Nginx代理Minio出现AccessDeniedAccessDenied
一、问题描述 AccessDeniedAccessDenied.sight.jpgmediafiles/mediafiles/sight.jpg1835E50603CB8FE0dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8 二、问题排查 (1)minio 和 nginx 是否正常启动 (2)检…...
在ArcGIS Pro中将栅格NoData值修改为特定值
目录 问题如下:栅格文件中NoData值为65535,要将该NoData值修改为-9999 步骤一:使用栅格计算器(Raster Calculator)输出具有新NoData值的栅格文件 步骤二:输出修改值后的栅格文件(Export Rast…...
模糊表示学习 笔记
图表示学习通常从图的拓扑结构和高维节点属性中产生低维和清晰的表示。然而,节点或图的清晰表示实际上隐藏了特征的不确定性和可解释性。例如,在引文网络中,两篇论文之间的引用总是涉及表示相关度的future,也就是说,一…...
GitHub 趋势日报 (2025年04月12日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1yeongpin/cursor-free-vip[Support 0.48.x](Reset Cursor AI MachineID & Auto Sign Up / In & Bypass Higher…...
FreertosHAL库笔记
堆和栈 堆:一块内存空间,用于存储程序运行时动态申请的内存空间。在堆上分配内存可以根据程序的需要灵活地申请和释放不同大小的内存块。可用pvProMalllloc()和vPortFree()函数来开辟和释放 栈:也是一块内存空间,主要用于函数调用…...
迷你世界脚本之容器接口:WorldContainer
容器接口:WorldContainer 彼得兔 更新时间: 2023-04-26 10:21:02 具体函数名及描述如下: 序号 函数名 函数描述 1 addFurnace(...) 新增熔炉 2 removeFurnace(...) 移除熔炉 3 checkFurnace(...) 检测是否为熔炉 4 getFurnaceHeatPerce…...
springboot框架集成websocket依赖实现物联网设备、前端网页实时通信!
需求: 最近在对接一个物联网里设备,他的通信方式是 websocket 。所以我需要在 springboot框架中集成websocket 依赖,从而实现与设备实时通信! 框架:springboot2.7 java版本:java8 好了,还是直接…...
【linux知识】web服务环境搭建(一):用户以及开发环境初始化
toc 创建用户组以及用户 以下是 创建用户组 wendao 和用户 wendao 并指定 GID、UID 及家目录 的完整操作指南: 一、创建用户组(指定 GID) sudo groupadd -g 1500 wendao # 创建组并指定 GID 为 1500• 注意:GID 需唯一&#…...
消息中间件——RocketMQ(一)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 RocketMQ(一) 一、MQ出现的背景 在传统的单体应用架构中,系统的各个模块紧密耦合在一起。随着业务…...
[oeasy]python087_[词根溯源]suspend词源_append_depend
087_[词根溯源]suspend词源_append [词根溯源]suspend词源_append_depend 回忆上次内容 上次了解了 方法 和 函数的 不同之处 方法(method) 函数(function) 需要对象调用 无需对象调用 可以根据 名字调用 无需名字 直接调用 基于类的对象 独立的 需要self 不需要self…...
Ubuntu 安装 Cursor AppImage 到应用程序中
如果 Cursor AppImage 安装到 Ubuntu 系统中(而不是每次手动运行 .AppImage 文件),可以按照以下方法操作: 方法 1:直接运行 AppImage(最简单,但不完全“安装”) 赋予执行权限chmod …...
二叉树 --- 堆(下)
今天我们来把堆完结了。 对于一个高度为 h 的满二叉树,有 F(h) 2 ^ 0 2 ^ 1 …… 2 ^ (h - 1) 2 ^ h - 1 h log2 (N1) 对于一个高度为 h 的完全二叉树,且最后一层只有一个 ,则 F(h) 2 ^ 0 2 ^ 1 …… 2 ^ (h - 2) 1 2 ^ (h -…...
数组对象[object],五种如何去重方法 js
前言 数组有很多方法都可以实现去重。本章分享比较常用的。 准备工作 准备一组数组对象 let arr [{ id: "1", name: "张晓", age: 14 },{ id: "2", name: "张晓", age: 14 },{ id: "3", name: "张晓", age: 1…...
PyRoboPlan 库,给 panda 机械臂微分 IK 上大分,关节限位、碰撞全不怕
视频讲解: PyRoboPlan 库,给 panda 机械臂微分 IK 上大分,关节限位、碰撞全不怕 代码仓库:https://github.com/LitchiCheng/mujoco-learning 今天分享PyRoboPlan库,比之前的方式优点在于,这个库考虑了机械…...
【模态分解】EMD-经验模态分解
算法配置页面,也可以一键导出结果数据 报表自定义绘制 获取和下载【PHM学习软件PHM源码】的方式 获取方式:Docshttps://jcn362s9p4t8.feishu.cn/wiki/A0NXwPxY3ie1cGkOy08cru6vnvc...
Sentinel规则持久化pull模式核心源码解析
文章目录 前言一、服务端新增/修改规则1.1、repository.save1.2、publishRules 二、客户端接收规则三、持久化扩展3.1、持久化原理3.1.1、FileRefreshableDataSource3.1.1.1、super关键字3.1.1.2、firstLoad()方法 3.1.2、FlowRuleManager.register2Property 3.2、持久化实现 总…...
【go】--编译
go build -o [编译完成的可执行文件] [需要编译的.go文件]#例如 go build -o myapp main.go#确保编译的结果和当前运行环境相同 #查看arch uname -a在 Linux 中查看和修改 GOOS 和 GOARCH 环境变量: 1. 查看当前 Go 环境变量 # 查看所有Go相关的环境变量 go env# …...
【Spring底层分析】Spring IoC
Spring IoC IoC:控制反转。将对象创建和对象之间的调用交给Spring容器来管理。好处是降低了对象之间的耦合度。 DI:依赖注入。给bean对象注入依赖的对象。 大白话就是:Spring帮你创建对象,对象的属性如果依赖于某个对象…...
Ubuntu系统进程管理
在Ubuntu系统中,进程管理是系统维护和性能调优的重要部分。以下是关键命令和技巧的总结,帮助你有效管理系统进程: 1. 查看进程 ps 命令:查看当前进程快照。 bash ps aux # 查看所有运行中的进程(a所有用户…...
HDU2196 Computer 树形DP
原题链接 既然要查找每个节点的最远到达距离,由于该图是个树,我们就找从根节点向下遍历方向的终点的距离与先返回父节点再从最优的父节点沿着原来的方向的终点的距离的最大值 如图所示 也就是说,我们需要获得当前点的正距离最大值和正距离最…...
【第四十周】文献阅读:用于检索-增强大语言模型的查询与重写
目录 摘要Abstract用于检索-增强大语言模型的查询与重写研究背景方法论基于冻结LLM的重写方案基于可训练重写器的方案重写器预热训练(Rewriter Warm-up)强化学习(Reinforcement Learning) 创新性实验结果局限性总结 摘要 这篇论文…...
Istio常用命令
Istio常用命令 1. 安装和配置2. Sidecar 注入3. 验证和状态4. 升级和卸载5. 故障排除6. 配置管理 istioctl 的常用命令及其详细说明: 1. 安装和配置 安装 Istio # 使用指定的配置文件(如 demo)安装 Istio 到 Kubernetes 集群。 istioctl m…...
Linux基础15
一、网络模型 二、eNSP模拟器 拖拽操作建立模拟网络环境 交换机视图操作: <> 用户视图 [] 系统视图 接口视图 协议视图 display version #显示版本和设备型号 display current-configuration #查看设备配置(查错) …...
FISCO BCOS群组扩容实战指南:从原理到操作全解析
引言:为什么需要群组扩容? 在区块链技术迅猛发展的今天,企业级应用对区块链平台提出了更高的要求。"如何在不影响现有业务的情况下扩展区块链处理能力?"、"能否实现不同业务数据的物理隔离?"、&qu…...
【pytorch图像视觉】lesson17深度视觉应用(上)构建自己的深度视觉项目
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、 数据1、认识经典数据1.1入门数据:MNIST、其他数字与字母识别(1)数据加载(2)查看数据的特征和标…...
从“被动跳闸”到“主动预警”:智慧用电系统守护老旧小区安全
安科瑞顾强 近年来,老旧小区电气火灾事故频发,成为威胁居民生命财产安全的重要隐患。据统计,我国居住场所火灾伤亡人数远超其他场所,仅今年一季度就发生8.3万起住宅火灾,造成503人遇难。这些建筑多建于上世纪&#x…...
2.1 全栈运维管理:Proxmox VE单节点配置桥接、VLAN和Bonding的详细实验指南
本文是Proxmox VE 全栈管理体系的系列文章之一,如果对 Proxmox VE 全栈管理感兴趣,可以关注“Proxmox VE 全栈管理”专栏,后续文章将围绕该体系,从多个维度深入展开。 概要:本文介绍 Proxmox VE 单节点网络配置。桥接基…...
docker面试题
1.docker网络 Docker网络是Docker容器之间进行通信的关键功能。Docker提供了多种网络模式和驱动,以满足不同的网络需求。以下是Docker网络的详细介绍: 1.Docker网络模式 Docker提供了以下几种网络模式,每种模式适用于不同的场景:…...
计算机视觉——基于YOLOV8 的人体姿态估计训练与推理
概述 自 Ultralytics 发布 YOLOV5 之后,YOLO 的应用方向和使用方式变得更加多样化且简单易用。从图像分类、目标检测、图像分割、目标跟踪到关键点检测,YOLO 几乎涵盖了计算机视觉的各个领域,似乎已经成为计算机视觉领域的“万能工具”。 Y…...
【本地图床搭建】宝塔+Docker+MinIO+PicGo+cpolar:打造本地化“黑科技”图床方案
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言宝塔安装DockerMinIO 安装与设置cploar内网穿透PicGo下载与安装typora安装总结互动…...
【家政平台开发(41)】家政平台性能蜕变:性能测试与优化全解析
本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…...
监控docker中的java应用
1)进入指定的容器 docker exec -it demo /bin/bash 2)下载curl root89a67e345354:/# apt install curl -y 3)下载arthas root89a67e345354:/# curl -O https://arthas.aliyun.com/arthas-boot.jar 4)运行 root89a67e345354:/# java -jar arthas-boot.jar 5)监控 […...
Android游戏辅助工具开发详解
文章目录 第一部分:概述与基础准备1.1 游戏辅助工具的定义与用途1.2 开发环境准备1.3 项目创建与配置 第二部分:核心功能实现2.1 屏幕点击功能实现2.1.1 基础点击功能2.1.2 多点触控实现 2.2 滑动功能实现2.2.1 基础滑动功能2.2.2 曲线滑动实现 2.3 屏幕…...
重生之外卖配送时被投诉后的反思
重生之外卖配送时被投诉后的反思 写苍穹外卖时 我们发现在每一次调用sql语句时 insert update语句总会需要在service的实现类里加入例如create_time,create_user , update_time , update_user的填充 每次赋值都要重新编写代码,会造成代码冗余 ; 序号字…...
计算机基础复习资料整理
计算机基础复习资料整理 一、操作系统 (一)定义 操作系统(Operating System,OS)是介于计算机硬件和用户(程序或人)之间的接口。作为通用管理程序,它管理计算机系统中每个部件的活动…...
Profibus DP主站网关数据映射全解析!
Profibus DP主站网关数据映射全解析! 在工业自动化领域,Profibus DP主站网关作为一种关键的通讯设备,其数据映射的精准度和效率对整个控制系统的性能有着至关重要的影响。本文旨在深入探讨Profibus DP主站网关的数据映射过程,揭示…...
ocr-不动产权识别
目录 一、在阿里云申请ocr识别服务 二、创建springboot项目 三、后续 一、在阿里云申请ocr识别服务 在线体验:房产证图片上传 [阿里官方]不动产权证OCR文字识别_API专区_云市场-阿里云 (aliyun.com) 可以选择一毛500次这个 当然也可以白嫖100 下面有个在线调试…...
leetcode 198. House Robber
本题是动态规划问题。 第一步,明确并理解dp数组以及下标的含义 dp[i]表示从第0号房间一直到第i号房间(包含第i号房间)可以偷到的最大金额,具体怎么偷这里不考虑,第i1号及之后的房间也不考虑。换句话说,dp[i]也就是只考虑[0,i]号…...
【2025软考高级架构师】——软件架构设计(4)
摘要 本文主要介绍了几种软件架构设计相关的概念和方法。包括C2架构风格的规则,模型驱动架构(MDA)的起源、目标、核心模型及各模型之间的关系;软件架构复用的概念、历史发展、维度、类型及相关过程;特定领域架构&…...
分发饼干问题——用贪心算法解决
目录 一:问题描述 二:解决思路 贪心策略(C语言)算法复习总结3——贪心算法-CSDN博客 三:代码实现 四:复杂度分析 一:问题描述 分发饼干问题是一个经典的可以使用贪心算法解决的问题…...
深入详解MYSQL的MVCC机制
参考资料: 参考视频(注意第二个视频关于幻读的讲解是错误的,详情见本文) redoLog的结构详解 参考资料 学习内容: 1. MVCC要解决的问题 MVCC要解决的问题是,在不产生脏读等数据库问题的前提下,数据库的查询语句和更改语句不相互阻塞的情况; 在InnoDB中,MVCC仅仅存…...
DNS域名解析
目录 一.DNS 1.1DNS的简介 1.2DNS的背景 1.3DNS的架构 1.4实现DNS的方式 1.5DNS的查询类型 1.6DNS解析的基本流程 二.主从复制 2.1定义 2.2优缺点 三.DNS服务软件 3.1bind 3.1.1定义 3.1.2bind相关文件 3.2DNS服务器的核心文件 3.2.1主配置文件 3.2.2域名文件 …...