lvs+keepalived+dns高可用
1.配置dns相关服务
1.1修改ip地址主机名
dns-master:
hostnamectl hostname lvs-master
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.107/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c up ens160
dns-salve:
hostnamectl hostname lvs-slave
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.108/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c up ens160
1.2配置仓库,下载bind服务
vim /etc/yum.repos.d/yum.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0
挂载
mount /dev/sr0 /mnt
下载
dnf install bind -y
关闭防火墙和selinux服务
systemctl stop firewalld
setenforce 0
1.3配置dns相关文件
dns-master:
vim /etc/named.conf
options {listen-on port 53 { 10.10.10.107;10.10.10.200; };directory "/var/named";
};zone "example.com" IN {type master;file "example.com";
};
vim /var/named/example.com
$TTL 1D
@ IN SOA @ amdin.example.com. (0 1D 1H 2H 2D)IN NS ns1IN NS ns2
ns1 IN A 10.10.10.107
ns2 IN A 10.10.10.108
www IN A 10.10.10.200
启动服务并测试:
systemctl start named
dig -t A www.example.com @10.10.10.107
dig -t ns example.com @10.10.10.107
[root@dns-master ~]# dig -t ns example.com @10.10.10.107
; <<>> DiG 9.16.23-RH <<>> -t ns example.com @10.10.10.107 ;; global
options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status:
NOERROR, id: 14914 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2,
AUTHORITY: 0, ADDITIONAL: 3;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE:
f8f87f0c77258da70100000067fa038f37c0baa6b48666c1 (good) ;; QUESTION
SECTION: ;example.com. IN NS;; ANSWER SECTION: example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.;; ADDITIONAL SECTION: ns1.example.com. 86400 IN A 10.10.10.107
ns2.example.com. 86400 IN A 10.10.10.108;; Query time: 0 msec ;; SERVER: 10.10.10.107#53(10.10.10.107) ;;
WHEN: Sat Apr 12 14:09:19 CST 2025 ;; MSG SIZE rcvd: 136
[root@dns-master ~]# dig -t A www.example.com @10.10.10.107; <<>> DiG 9.16.23-RH <<>> -t A www.example.com @10.10.10.107 ;;
global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY,
status: NOERROR, id: 41021 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1,
AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE:
915f2990163d16460100000067fa03b5ec98879ed99ed361 (good) ;; QUESTION
SECTION: ;www.example.com. IN A;; ANSWER SECTION: www.example.com. 86400 IN A 10.10.10.200
;; Query time: 0 msec ;; SERVER: 10.10.10.107#53(10.10.10.107) ;;
WHEN: Sat Apr 12 14:09:57 CST 2025 ;; MSG SIZE rcvd: 88
dns-slave:
vim /etc/named.conf
options {listen-on port 53 { 10.10.10.108 ;10.10.10.200 ; };directory "/var/named";
};zone "example.com" IN {type slave;file "slaves/example.com";masters {10.10.10.107 ;};
};
2.配置web相关服务
2.1修改ip地址和主机名
web01:
hostnamectl hostname web01
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.201/24 ipv4.gateway 10.10.10.2 ipv4.dns "10.10.10.107 10.10.10.108" connection.autoconnect yes
nmcli c up ens160
web02:
hostnamectl hostname web02
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.202/24 ipv4.gateway 10.10.10.2 ipv4.dns "10.10.10.107 10.10.10.108" connection.autoconnect yes
nmcli c up ens160
web03:
hostnamectl hostname web03
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.203/24 ipv4.gateway 10.10.10.2 ipv4.dns "10.10.10.107 10.10.10.108" connection.autoconnect yes
nmcli c up ens160
2.2配置仓库,下载nginx服务
vim /etc/yum.repos.d/yum.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0
挂载
mount /dev/sr0 /mnt
下载
dnf install nginx -y
关闭防火墙和selinux服务
systemctl stop firewalld
setenforce 0
1.3配置dns相关文件
web01:
vim /etc/nginx/conf.d/web.conf
server{server_name www.example.com;listen 80;root /usr/share/nginx/html/index.html;
}
echo $(hostname) - $(hostname -I) > /usr/share/nginx/html/index.html
web02:
vim /etc/nginx/conf.d/web.conf
server{server_name www.example.com;listen 80;root /usr/share/nginx/html/index.html;
}
echo $(hostname) - $(hostname -I) > /usr/share/nginx/html/index.html
web03:
vim /etc/nginx/conf.d/web.conf
server{server_name www.example.com;listen 80;root /usr/share/nginx/html/index.html;
}
echo $(hostname) - $(hostname -I) > /usr/share/nginx/html/index.html
修改dns
nmcli c modify ens160 ipv4.dns 10.10.10.100
开启和测试nginx服务
systemctl start nginx
curl localhost
[root@web01 ~]# curl localhost web01 - 10.10.10.201 [root@web02 ~]#
curl localhost web01 - 10.10.10.202 [root@web03 ~]# curl localhost
web01 - 10.10.10.203
3.配置lvs相关服务
3.1修改ip地址和主机名
lb-master:
hostnamectl hostname lb-master
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.105/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c up ens160
lb-salve:
hostnamectl hostname lb-salve
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.106/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c up ens160
3.2配置仓库,下载keepalived ipvsadm服务
vim /etc/yum.repos.d/yum.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0
挂载
mount /dev/sr0 /mnt
下载
dnf install keepalived ipvsadm -y
关闭防火墙和selinux服务
systemctl stop firewalld
setenforce 0
3.3配置keepalived相关文件
lb-master:
vim /etc/keeailved;keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LVS_MASTER
}vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.10.10.100}
}vrrp_instance VI_2 {state BACKUPinterface ens160virtual_router_id 50priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.10.10.200}
}
virtual_server 10.10.10.100 53 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 10protocol UDPreal_server 10.10.10.107 53 {weight 1MISC_CHECK {connect_timeout 3misc_path "/etc/keepalived/checkdns.sh -h 10.10.10.107 txt.example.com"}}real_server 10.10.10.108 53 {weight 1MISC_CHECK {connect_timeout 3misc_path "/etc/keepalived/checkdns.sh -h 10.10.10.108 txt.example.com"}}
}virtual_server 10.10.10.200 80 {delay_loop 6lb_algo wrrlb_kind DRpersistence_timeout 10protocol TCPreal_server 10.10.10.201 80 {weight 3TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.10.10.202 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.10.10.203 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}
}
lb-slave:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LVS_BACKUP
}vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.10.10.100}
}vrrp_instance VI_2 {state MASTERinterface ens160virtual_router_id 50priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.10.10.200}
}
virtual_server 10.10.10.100 53 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 10protocol UDPreal_server 10.10.10.107 53 {weight 1MISC_CHECK {connect_timeout 3misc_path "/etc/keepalived/checkdns.sh -h 10.10.10.107 txt.example.com"}}real_server 10.10.10.108 53 {weight 1MISC_CHECK {connect_timeout 3misc_path "/etc/keepalived/checkdns.sh -h 10.10.10.108 txt.example.com"}}
}virtual_server 10.10.10.200 80 {delay_loop 6lb_algo wrrlb_kind DRpersistence_timeout 10protocol TCPreal_server 10.10.10.201 80 {weight 3TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.10.10.202 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.10.10.203 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}
}
3.4编写执行的脚本
vim /etc/keepalived/checkdns.sh
#!/bin/bash
[ $# -le 2 ] && { echo "usage: $0 -h <ip>"; exit 2; }
domain=$3
while getopts "h:" OPT; docase $OPT inh)host=$OPTARG;;*)echo "usage: $0 -h <ip>" && exit 1;;esac
done
dig @${host} txt ${domain} +time=1 | grep "\<AaBbCcDdEeFf\>" >
/dev/null
exit $?
chmod a+x /etc/keepalived/checkdns.sh
3.5启动服务
systemctl start keepalived ipvsadm
查看lvs规则
ipvsadm -ln
4.修改web的dns增加ip
nmcli c modify ens160 ipv4.dns 10.10.10.100
nmcli c modify ens160 up
ifconfig lo:0 10.10.10.200 netmask 255.255.255.255
route add -host 10.10.10.200 dev lo:0
5.增加dns路由
ifconfig lo:0 10.10.10.100 netmask 255.255.255.255
route add -host 10.10.10.100 dev lo:0
6.测试
相关文章:
lvs+keepalived+dns高可用
1.配置dns相关服务 1.1修改ip地址主机名 dns-master: hostnamectl hostname lvs-master nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.107/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes nmcli c up ens160dns-salve: h…...
计算齿轮故障频率|平行轴|行星轮齿轮
一、平行轴齿轮故障频率 关键参数定义 Z:齿轮齿数 fs:轴旋转频率(Hz) N:啮合齿轮齿数(配对齿轮) 特征频率公式 软件页面截图 二、行星齿轮故障频率 系统组成参数 太阳轮齿数 齿圈齿数 …...
【技术派部署篇】云服务器部署技术派
1 环境搭建 1.1 JDK安装 # ubuntu sudo apt update # 更新apt apt install openjdk-8-jdk # 安装JDK安装完毕之后,执行 java -version 命令进行验证: 1.2 Maven安装 cd ~ mkdir soft cd soft wget https://dlcdn.apache.org/maven/maven-3/3.8.8/bina…...
Rasa中endpoints.yml文件信息详细解释
endpoints.yml 是 Rasa 项目中用于配置各类服务接口(endpoints)的文件,它告诉 Rasa: 去哪里加载模型自定义动作在哪个服务运行对话历史存储在哪(tracker store)是否要把事件推送到某个消息队列中ÿ…...
AI代理是大模型实现可扩展智能自动化的关键
AI 代理框架:实现可扩展智能自动化的关键 https://www.lyzr.ai/ 每个人都在谈论 AI 代理,例如 Sam Altman、Satya Nadella、Andrew Ng 和 Sundar Pichai 等行业领袖。 但这究竟是为什么呢? 因为这就是当今软件发展的方向,也是企…...
android中dp和px的关系
关于android的dp和px的关系是我刚开始学习android的第一个知识点,不知不觉学安卓也有一年了,但是偶然间我发现我理解的dp和px的关系一直是错的,真的是有一点搞笑,今天特意写一篇博客纪念一下这个我理解错一年的知识点。 dp和px之间…...
day32-动态规划__509. 斐波那契数__70. 爬楼梯__746. 使用最小花费爬楼梯
动态规划,一直是各种算法竞赛中难度较大的题目。在同学接触到动态规划的题目时,对于简单的动态规划问题,同学们常常轻易通过,而对于复杂的动态规划,却没有一个很好的思路,那么我们究竟有没有一种统一的思考…...
【Code】《代码整洁之道》笔记-Chapter12-迭进
第12章 迭进 12.1 通过迭进设计达到整洁目的 假使有4条简单的规则,跟着做就能帮助你创建优良的设计,会如何?假使遵循这些规则,你就能洞见代码的结构和设计,更能轻易地应用SRP和DIP之类的原则,便会如何&…...
Odoo 部署本地 把現時的excel計算表格部署上odoo 教程
要将现有的 Excel 计算表格部署到 Odoo 平台上,您可以按照以下步骤进行操作: 将 Excel 表格中的数据转移到 Odoo 模块中:首先,您需要将 Excel 表格中的数据导出为 CSV 格式,然后可以使用 Odoo 的数据导入功能将这些数据…...
【C语言-全局变量】
【C语言-全局变量】 1.能局部就局部,别啥都往全局塞2.尽量用结构体对零散变量封装3.函数传参4.静态变量模块化5 单例模式, 限制全局实例数量6. 配置化全局参数——集中管理可调参数7. 事件驱动架构:消息队列通信策略选择建议 参考https://mp.weixin.qq.c…...
Downlink Sensing in 5G-Advanced and 6G: SIB1-assisted SSB Approach
摘要——本文研究了利用现有5G NR信号进行网络侧集成感知与通信(ISAC)的潜力。通常,由于其频繁的周期性可用性和波束扫描特性,同步信号块(SSB)是适合用于下行感知的候选信号。然而,正如本文所示…...
PCIe 5.0光学SSD原型问世!
近日,Kioxia Corporation(铠侠)、AIO Core Co., Ltd. 和 Kyocera Corporation(京瓷)联合宣布成功开发了一款支持 PCIe 5.0 接口的光学 SSD 原型。该技术旨在通过光接口替换传统的电接口,从而显著增加计算设…...
JDK(Java Development Kit)从发布至今所有主要版本 的详细差异、新增特性及关键更新的总结,按时间顺序排列
以下是 JDK(Java Development Kit)从发布至今所有主要版本 的详细差异、新增特性及关键更新的总结,按时间顺序排列: 1. JDK 1.0 (1996) 发布年份:1996年1月23日关键特性: Java首次正式发布。核心语言特性…...
【3分钟准备前端面试】yarn
目录 Yarn核心概念核心机制解析工作流与命令详解高级功能剖析性能优化策略常见问题解决方案Yarn与...
[16届蓝桥杯 2025 c++省 B] 移动距离
思路:这题很多人肯定一眼就觉得是直线,因为无限方案,怎么走随便你,极限状态会误以为是直线,实际上你会发现,只有往右走是直线,往上走时一个弧线操作,就算你一下往右,一下…...
二叉树(中)-- 堆
堆是一个独立的数据结构,堆是一个二叉树。堆和栈几乎没有什么关联 堆是一个完全二叉树,可以用数组存储 大堆: 任何一个父亲都大于等于孩子小堆: 任何一个父亲都小于等于孩子 请注意,小堆大堆并不一定是升序或降序&…...
艾伦·图灵:计算机科学与人工智能之父
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 艾伦图灵:计算机科学与人工智能之父 一、天才的诞生与早期生涯 1912年6月…...
Doris 安装部署、实际应用及优化实践:对比 ClickHouse 的深度解析
在实时分析、报表系统以及高并发 OLAP 查询等场景中,列式存储数据库因其卓越的查询性能逐渐成为主流。Doris 和 ClickHouse 是近年来最受欢迎的两款开源 OLAP 引擎,本文将系统介绍 Doris 的安装部署、应用场景及优化实践,并与 ClickHouse 做一…...
Vue的学习总结-day02
一、Vue的基本语法 1、Vue.js 使用双大括号 {{ }} 来表示文本插值: <template><div class"demo">{{msg}}</div> </template> 2、指令 v-bind:动态绑定一个或多个特性,或一个组件 prop。 <template…...
MySQL 中查询 VARCHAR 类型 JSON 数据的
在数据库设计中,有时我们会将 JSON 数据存储在 VARCHAR 或 TEXT 类型字段中。这种方式虽然灵活,但在查询时需要特别注意。本文将详细介绍如何在 MySQL 中有效查询存储为 VARCHAR 类型的 JSON 数据。 一、问题背景 当 JSON 数据存储在 VARCHAR 列中时&a…...
Spring Boot 的启动流程
Spring Boot 是一个用于简化 Spring 应用程序开发的框架,它通过自动配置和约定优于配置的原则,大大降低了开发者的工作量。下面我们将深入探讨 Spring Boot 的启动流程,帮助你理解其背后的工作机制。 1. 启动入口 Spring Boot 应用的启动入…...
JMeter的接口测试步骤
创建测试计划 新建测试计划: 打开 JMeter,右键点击 Test Plan,选择 Add -> Threads (Users) -> Thread Group。双击 Thread Group,设置线程数(用户数)、循环次数等参数。 添加取样器(S…...
Linux基础14
一、搭建LAMP平台 安装包:mariadb-server、php、php-mysqlnd、php-xml、php-json 搭建平台步骤: php步骤: 创建网页:index.php 网页内编写php语言: > eg:<?p…...
七种数码管驱动/LED驱动综合对比——《器件手册--数码管驱动/LED驱动》
十四、数码管驱动/LED驱动 名称 工作原理 应用场景 优缺点 特点 LED驱动 LED驱动的核心是为发光二极管提供稳定的电流。LED的亮度与电流成正比,而其正向电压相对稳定。驱动电路需要根据电源电压和LED的正向电压,通过限流电阻或恒流芯片来控制电流。…...
【25软考网工笔记】第二章 数据通信基础(2) 信道延迟计算
目录 一、信道延迟 1. 线路延迟 1)线路延迟与传输距离的关系 2)光纤线路与电缆线路的传播速度 3)线路延迟计算示例:1000米电缆的延迟 2. 发送延迟 1)发送延迟的定义与计算 2)发送延迟的影响因素 3.…...
代码随想录第16天:(二叉树)
一、最大二叉树(Leetcode 654) class Solution:def constructMaximumBinaryTree(self, nums: List[int]) -> TreeNode:# 基础条件:当数组只有一个元素时,直接返回该元素构建的二叉树节点if len(nums) 1:return TreeNode(nums[…...
Android activity属性taskAffinity的作用
1. taskAffinity的基本概念 在Android开发中,taskAffinity是一个定义在标签中的属性,用于指定Activity与哪个任务(Task)相关联。默认情况下,应用的所有Activity都共享同一个任务堆栈,其taskAffinity值为应…...
Vuex Actions 多参数传递的解决方案及介绍
Vuex Actions 多参数传递的解决方案及介绍 引言 在Vuex状态管理模式中,Actions 扮演着至关重要的角色。它主要用于处理异步操作,并且可以提交 Mutations 来修改全局状态。然而,在实际开发中,我们常常会遇到需要向 Actions 传递多…...
SQL学习--基础语法学习
SQL和excle对比 学习目标 单表查询 项目背景 SQL 练习环境 SQL Online Compiler - Next gen SQL Editor 商品信息表:https://study-zhibo.oss-cn-shanghai.aliyuncs.com/test/%E5%95%86%E5%93%81%E4%BF%A1%E6%81%AF%E8%A1%A8.csv 订单明细表:https://…...
ProfibusDP转ModbusTCP接流量计技巧
ProfibusDP转ModbusTCP接流量计技巧 在现代工业自动化系统中,设备的互联互通至关重要。为了实现不同协议设备之间的数据交换与统一管理,Profibus DP主站转Modbus TCP网关成为了一个重要的解决方案。本文将详细介绍这一转换方案及其在电磁流量计中的应用…...
【数据结构与算法】ArrayList 和 顺序表
文章目录 🌲List🌲1. 线性表🌲2. 顺序表🌿2.1 MyArrayList2.1.1 类中重写所有接口方法1.新增元素2.在pos位置新增元素(指定位置)3.判定是否包含了某个特定元素 4.查找特定元素对应的位置 5.获取pos下标的元素 6.给pos位置的元素替…...
VMware Fusion Pro/Player 在 macOS 上的完整安装与使用指南
VMware Fusion Pro/Player 在 macOS 上的完整安装与使用指南—目录 一、VMware 产品说明二、下载 VMware Fusion三、安装前准备四、安装 VMware Fusion步骤 1:安装程序步骤 2:首次启动配置步骤 3:输入许可证 五、创建虚拟机步骤 1:…...
GESP2025年3月认证C++七级( 第三部分编程题(1)图上移动)
参考程序(动态规划) #include <cstdio> using namespace std; const int K 25; // 最大步数 多开一点 const int N 505; // 最大结点数 const int E N << 1; // 最多边数(因为是无向图,每条边…...
将LINUX系统本机文件上传到LINUX虚拟机,未联网的情况下
将LINUX系统本机文件上传到LINUX虚拟机,未联网的情况下 1.将需要上传的文件,归档为.iso镜像文件 命令:mkisofs -r -o myiso.iso /iso/tool 2.打开虚拟机,选择需要挂载的光盘 3.创建挂载点,一般在/mnt目录下 mkdir /mnt/tool 4.临时挂载镜像 mount /dev/cdrom /mnt/tool 5.需要…...
Selenium之Actions事件
鼠标、键盘组合键 在使用selenium的时候,有的时候我们需要鼠标单击、双击、拖动;或者是按下键盘的某个键,松开某个按键,以及组合键的使用;今天我们就来看一看,怎么样实现上面的操作 先把准备工作做好&…...
高等数学同步测试卷 同济7版 试卷部分 上 做题记录 第三章微分中值定理与导数的应用同步测试卷 A 卷
第三章微分中值定理与导数的应用同步测试卷 A 卷 一、单项选择题(本大题共5小题,每小题3分,总计15分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分,总计…...
使用Vscode排除一些子文件搜索
打开用户/工作区设置 全局生效:打开命令面板(CtrlShiftP 或 CmdShiftP),搜索并选择 Preferences: Open User Settings (JSON)。 仅当前项目生效:在项目根目录下创建 .vscode/settings.json 文件(如果不存在…...
《前端面试题之 CSS篇(第一集)》
目录 1、CSS的盒模型2、CSS选择器及其优先级3、隐藏元素的方法有那些4、px、em、rem的区别及使用场景5、重排、重绘有什么区别6、水平垂直居中的实现7、CSS中可继承与不可继承属性有哪些8、Sass、Less 是什么?为什么要使用他们?9、CSS预处理器/后处理器是…...
第九天 开始Unity Shader的学习之单张纹理
Unity Shader的学习笔记 第九天 开始Unity Shader的学习之单张纹理 文章目录 Unity Shader的学习笔记前言一、基础纹理二、单张纹理① Properties② Cg代码块的变量③ 顶点着色器和片元着色器的结构体(a2v 和 v2f)④ 顶点着色器vert⑤ 片元着色器 frag效果展示 总结 前言 前几…...
Linux-内核驱动-led
登记设备号(后面可以动态分配) 自己定义内核函数 登记设备名字和功能 exit和init在内核启动自动执行 这样定义直接操作物理地址 ioctl 定义了设备文件的各种操作,并准备将其注册到内核中。 代码中声明了一个cdev结构体变量cdev,这…...
Web 项目实战:构建属于自己的博客系统
目录 项目效果演示 代码 Gitee 地址 1. 准备工作 1.1 建表 1.2 引入 MyBatis-plus 依赖 1.3 配置数据库连接 1.4 项目架构 2. 实体类准备 - pojo 包 2.1 dataobject 包 2.2 request 包 2.3 response 包 2.3.1 统一响应结果类 - Result 2.3.2 用户登录响应类 2.3.3…...
C++算法(1):stringstream详解,高效字符串处理与类型转换的利器
什么是stringstream? stringstream是C标准库中的一个类,定义在<sstream>头文件中。它提供了一种方便的方式来处理字符串与其他数据类型之间的转换和格式化操作。stringstream结合了istringstream和ostringstream的功能,既可以用于输入…...
【前端】【css】flex布局详解
Flex 布局(Flexible Box Layout,弹性盒子布局)是 CSS3 中的一种布局模式,用于在容器中更高效地分配空间并对齐内容,即使它们的大小是动态未知的。它非常适用于响应式设计。 一、Flex 布局的基本概念 1. 启用 Flex 布局…...
Python Cookbook-5.15 根据姓的首字母将人名排序和分组
任务 想将一组人名写入一个地址簿,同时还希望地址簿能够根据姓的首字母进行分组,且按照字母顺序表排序。 解决方案 Python 2.4 的新 itertools.groupby 函数使得这个任务很简单: import itertools def qroupnames(name_iterable):sorted_names sort…...
深入探析C#设计模式:访问者模式(Visitor Pattern)的原理与应用
引言 在软件开发中,设计模式为我们提供了高效、可维护的解决方案。而在众多设计模式中,访问者模式(Visitor Pattern)以其独特的结构和应用场景,在复杂系统中发挥着重要作用。本文将深入讲解访问者模式的定义、原理、优…...
2025蓝桥杯省赛C/C++研究生组游记
前言 至少半年没写算法题了,手生了不少,由于python写太多导致行末老是忘记打分号,printf老是忘记写f,for和if的括号也老是忘写,差点连&&和||都忘记了。 题目都是回忆版本,可能有不准确的地方。 …...
RPA VS AI Agent
图片来源网络 RPA(机器人流程自动化)和AI Agent(人工智能代理)在自动化和智能化领域各自扮演着重要角色,但它们之间存在显著的区别。以下是对两者区别的详细分析: 一、定义与核心功能 RPA(机…...
软件信息化项目等级分类评定表
对信息化项目进行分类评级管理,能够优化资源配置、保障项目成效。可从项目性质、规模、战略价值等维度分类,依据技术、风险、收益等指标评级,进而实现精细化管理。 分类管理 按项目性质分类:可分为业务流程优化项目,如优化企业采购流程的信息化项目,旨在提升效率;还有信…...
从0~1搭建自动化备份全网服务器数据平台
目录 摘要: 一、项目背景 1.1 rsync简介 作用: 特点: 语法: 1.2 项目需求 配置需求: 二、项目环境 2.1 项目拓扑结构 2.2 软硬件环境清单 三、任务清单 3.1 项目环境搭建 3.2 服务器部署 Web服务器搭建部署&#…...
用户态视角理解内核ROP利用:快速从shell到root的进阶
用户态视角理解内核ROP利用:快速从shell到root的进阶 一、摘要 本文仅限于快速从用户态向内核态入门,可能会有很多不严谨的地方,存在问题请及时告知感谢!本文旨在通过对比用户态 ROP 利用和内核 ROP 利用,揭示两者在利用手法上的相似性。通过分析用户态漏洞利用的流程,结合…...