降本增效 - VGF 构建轻量高性能日志管理平台
VFG 技术架构
Filebeat 接收Syslog ,并进行日志分段,VictoriaLogs 持久化存储日志 ,Grafana 可视化、数据查询、告警、数据导出。
为什么要用VictoriaLogs ?
-
与Elasticsearch /Grafana Loki相比几十倍的CPU/内存/存储资源占用的差距,能极大的节省硬件资源。
-
VGF可以实现ELK的Web查询、日志压缩存储、syslog 日志接收。
简介
-
VictoriaLogs 兼容支持多种数据输入软件,Filebeat 也支持多种数据输入。
-
VictoriaLogs 的Web UI很简陋,所以要用Grafana。
-
VictoriaLogs 是HTTP访问是无认证的,需要套其他软件来实现。(默认端口9428)
-
VictoriaLogs 的数据过期时间是全局的,所以如果有需求,只能部署多个实例。
-
Filebeat 相对Logstash 性能更好,也比VictoriaLogs 自带的Syslog输入功能更多。
Docker 国内安装
https://mirror.nju.edu.cn/mirrorz-help/docker-ce/?mirror=NJU
Docker Hub国内加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
部署VictoriaLogs
创建 victoria-logs-data 文件夹
docker run -d --restart always \-p 9428:9428 \-v ./victoria-logs-data:/victoria-logs-data \--name victoria-logs-syslog-songxwn.com \docker.io/victoriametrics/victoria-logs:latest \--retentionPeriod=365d# by songxwn.com
-
9428/tcp 对外HTTP访问
-
数据保留365天
-
./victoria-logs-data 为存储目录
部署Grafana
docker run -d --name=grafana -p 3000:3000 \-e GF_INSTALL_PLUGINS=victoriametrics-logs-datasource \--name Grafana \grafana/grafana-enterprise
Grafana 接入VictoriaLogs 数据源
插件已默认安装,添加对应数据源即可,目标为 http://192.168.1.1:9428
Filebeat 部署 - 接收Syslog,输出到VL
vim filebeat.docker.yml
filebeat.inputs:- type: udpenabled: truemax_message_size: 10KiBhost: "0.0.0.0:514"fields:type: udpoutput.elasticsearch:hosts: ["http://127.0.0.1:9428/insert/elasticsearch/"]parameters:_msg_field: "message"_time_field: "@timestamp"_stream_fields: "host.hostname"allow_older_versions: true
PS:注意 127.0.0.1 替换为宿主机IP.
运行
docker run -d \--name Filebeat \--user=root \--volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \-p 514:514/udp \docker.elastic.co/beats/filebeat:8.17.2
Docker compose 一把梭
创建并进入 /opt/VFG文件夹
mkdir /opt/VFGcd /opt/VFG
filebeat配置文件 - vim filebeat.docker.yml
http:enabled: truehost: "http://0.0.0.0:5066"filebeat.inputs:- type: udpenabled: truemax_message_size: 10KiBhost: "0.0.0.0:514"fields:type: udpoutput.elasticsearch:hosts: ["http://syslog-victoria-logs:9428/insert/elasticsearch/"]parameters:_msg_field: "message"_time_field: "@timestamp"_stream_fields: "host.hostname"allow_older_versions: true
PS:如果需要字段分割,可以参考如下。增加到输入输出中间即可。
processors:- dissect:tokenizer: "<%{syslog_pri}>%{timestamp} %{hostname} %%{log_level}/%{log_code}/%{log_action}(l):IPVer=%{ipver},Protocol=%{protocol},SourceIP=%{source_ip},DestinationIP=%{destination_ip},SourcePort=%{source_port},DestinationPort=%{destination_port},SourceNatIP=%{source_nat_ip},SourceNatPort=%{source_nat_port},BeginTime=%{begin_time},EndTime=%{end_time},S>field: "message"target_prefix: "parsed"
victoria-logs 数据目录
mkdir victoria-logs-datachown -R 472:472 victoria-logs-data
Grafana 数据目录和配置文件
mkdir grafana-datachown -R 472:472 grafana-data
数据源配置文件
mkdir -p ./provisioning/datasourcesvim ./provisioning/datasources/vm.ymlapiVersion: 1
datasources:# <string, required> Name of the VictoriaLogs datasource# displayed in Grafana panels and queries.- name: VictoriaLogs-songxwn.com# <string, required> Sets the data source type.type: victoriametrics-logs-datasource# <string, required> Sets the access mode, either# proxy or direct (Server or Browser in the UI).access: proxy# <string> Sets URL for sending queries to VictoriaLogs server.# see https://docs.victoriametrics.com/victorialogs/querying/url: http://syslog-victoria-logs:9428# <string> Sets the pre-selected datasource for new panels.# You can set only one default data source per organization.isDefault: true
vim docker-compose.yml 文件
services:victoria-logs:image: victoriametrics/victoria-logs:latestcontainer_name: syslog-victoria-logsvolumes:- ./victoria-logs-data:/victoria-logs-datarestart: alwayscommand: ["--retentionPeriod=365d"]environment:- TZ=Asia/Shanghaihealthcheck:test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:9428/health"]interval: 1m30stimeout: 10sretries: 3grafana:image: grafana/grafana-enterprisecontainer_name: syslog-grafanaports:- "3000:3000"environment:- GF_INSTALL_PLUGINS=victoriametrics-logs-datasource- GF_SECURITY_ADMIN_PASSWORD=Songxwn.com- TZ=Asia/Shanghaivolumes:- ./grafana-data:/var/lib/grafana- ./provisioning:/etc/grafana/provisioningrestart: alwayshealthcheck:test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]interval: 1m30stimeout: 10sretries: 3filebeat:image: docker.elastic.co/beats/filebeat:8.17.2container_name: syslog-filebeatports:- "514:514/udp"volumes:- ./filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:rorestart: alwaysenvironment:- TZ=Asia/Shanghaihealthcheck:test: ["CMD", "curl", "-f", "http://localhost:5066"]interval: 60stimeout: 10sretries: 3
compose 启动命令 (需要Docker Engine 19.03.0以上版本)
docker compose up -d
停止、升级
docker compose downdcker compose pulldocker compose up -d
compose文件说明
1. Victoria-Logs 服务
- 服务名称:
victoria-logs
- 镜像: 使用
victoriametrics/victoria-logs:latest
镜像。 - 容器名称:
syslog-victoria-logs
- 数据卷: 挂载本地目录
./victoria-logs-data
到容器内的/victoria-logs-data
,用于持久化存储。 - 重启策略: 设置为
always
,确保容器在运行失败后自动重启。 - 启动命令: 指定命令参数
--retentionPeriod=365d
,表示日志保留期为365天。 - 环境变量: 设置时区为
Asia/Shanghai
。 - 健康检查:
- 执行
wget -q --spider http://127.0.0.1:9428/health
检查服务的健康状态。 - 每
1分30秒
执行一次检查。 - 如果检测不到健康状态,等待
10秒
后超时。 - 重试
3次
失败后标记为非健康。
- 执行
2. Grafana 服务
- 镜像: 使用
grafana/grafana-enterprise
镜像。 - 容器名称:
syslog-grafana
- 端口映射: 将主机的
3000
端口映射到容器的3000
端口,供外部访问 Grafana。 - 环境变量:
- 安装插件
victoriametrics-logs-datasource
。 - 设置初始管理员密码为
Songxwn.com
。 - 设置时区为
Asia/Shanghai
。
- 安装插件
- 数据卷:
- 挂载本地目录
./grafana-data
到容器中的/var/lib/grafana
,用于持久化 Grafana 的数据。 - 挂载本地目录
./provisioning
到/etc/grafana/provisioning
,用于配置预置的数据源和仪表盘。
- 挂载本地目录
- 重启策略: 设置为
always
。 - 健康检查:
- 执行
curl -f http://localhost:3000/api/health
检查服务的健康状态。 - 每
1分30秒
执行一次检查。 - 如果检测不到健康状态,等待
10秒
后超时。 - 重试
3次
失败后标记为非健康。
- 执行
3. Filebeat 服务
- 镜像: 使用
docker.elastic.co/beats/filebeat:8.17.2
镜像。 - 容器名称:
syslog-filebeat
- 端口映射: 将主机的
514/udp
端口映射到容器的514/udp
端口,用于接收 Syslog。 - 数据卷: 将本地的
filebeat.docker.yml
配置文件挂载到容器内的/usr/share/filebeat/filebeat.yml
,且为只读。 - 重启策略: 设置为
always
。 - 环境变量: 设置时区为
Asia/Shanghai
。 - 健康检查:
- 执行
curl -f http://localhost:5066
检查服务的健康状态。 - 每
60秒
执行一次检查。 - 如果检测不到健康状态,等待
10秒
后超时。 - 重试
3次
失败后标记为非健康。
- 执行
这些配置用来部署和管理 Victoria-Logs、Grafana 和 Filebeat 服务,确保它们处于良好运行状态,且在故障发生时可以自动恢复。各自的健康检查提供了针对服务运行状态的简易确认方式,进一步提高系统的稳定性和可靠性。
VFG Compose 部署使用
-
发送日志到udp/514 端口,即可存储到数据库。
echo "songxwn.com\!" | nc -4u 202.182.109.11 514
命令用来测试发送 -
访问到Grafana Web 3000端口,使用admin/Songxwn.com 登录。
-
可以通过已经预先创建的数据源VictoriaLogs-songxwn.com,通过Explore 查询日志(LogsQL语法,
*
匹配所有 )和导出为CSV文件。 -
Grafana 也可以进行日志告警和构建可视化仪表盘。
Grafana 示例
资源占用 - 有较高日志输入的情况下
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
1c7fe73fc896 syslog-filebeat 0.52% 63.14MiB / 3.822GiB 1.61% 14.1MB / 5.38MB 0B / 8.19kB 15
4a6ee8b19475 syslog-grafana 0.61% 147.3MiB / 3.822GiB 3.76% 9.85MB / 12.8MB 299kB / 305MB 33
a80d91af294c syslog-victoria-logs 0.04% 195.7MiB / 3.822GiB 5.00% 5.4MB / 604kB 520kB / 6.86MB 14
相关文章:
降本增效 - VGF 构建轻量高性能日志管理平台
VFG 技术架构 Filebeat 接收Syslog ,并进行日志分段,VictoriaLogs 持久化存储日志 ,Grafana 可视化、数据查询、告警、数据导出。 为什么要用VictoriaLogs ? 与Elasticsearch /Grafana Loki相比几十倍的CPU/内存/存储资源占用的…...
leetcode:627. 变更性别(SQL解法)
难度:简单 SQL Schema > Pandas Schema > Salary 表: ----------------------- | Column Name | Type | ----------------------- | id | int | | name | varchar | | sex | ENUM | | salary | int …...
高等代数笔记—欧几里得空间、双线性函数
欧几里得空间 欧几里得空间(欧氏空间) V V V定义: V V V是实数域 R R R上线性空间 在 V V V上定义了一个二元实函数,称为内积,记作 ( α , β ) (\alpha,\beta) (α,β),并且内积满足以下性质:…...
Linux 网络设备驱动中的 netdev_priv 函数详解
在 Linux 内核的网络设备驱动开发中,netdev_priv 函数是一个非常重要的工具,用于访问网络设备的私有数据。本文将详细讲解 netdev_priv 函数的作用、实现原理以及使用方法,并结合代码示例进行说明。 一、netdev_priv 函数的作用 在 Linux 内核中,struct net_device 是描述…...
基于实例详解pytest钩子pytest_generate_tests动态生成测试的全过程
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 作为一名软件开发人员,你一定深知有效测试策略的重要性,尤其…...
20250213 隨筆 雪花算法
雪花算法(Snowflake Algorithm) 雪花算法(Snowflake) 是 Twitter 在 2010 年開發的一種 分布式唯一 ID 生成算法,它可以在 高併發場景下快速生成全局唯一的 64-bit 長整型 ID,且不依賴資料庫,具…...
Bug日记:Linux中systemctl restart network失败问题,网络故障
日期 2023年10月25日 问题描述 在尝试使用 systemctl restart network 重启网络服务时,出现以下错误: Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and …...
计算四个锚点TOA定位中GDOP的详细步骤和MATLAB例程
该MATLAB代码演示了在三维空间中,使用四个锚点的TOA(到达时间)定位技术计算几何精度衰减因子(GDOP)的过程。如需帮助,或有导航、定位滤波相关的代码定制需求,请联系作者 文章目录 DOP计算原理MATLAB例程运行结果示例关键点说明扩展方向另有文章: 多锚点Wi-Fi定位和基站…...
poi 将图片写入到excel文件中
功能点说明 作用:将图片写入到指定的excel文件(或output流) 依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version> </dependen…...
新数据结构(9)——Java异常体系
异常的种类 程序本身通常无法主动捕获并处理错误(Error),因为这些错误通常表示系统级的严重问题,但程序可以捕获并处理异常(Excrption),而Error则被视为一种程序无法或不应尝试恢复的异常类型。…...
HTTP 响应头信息
HTTP 响应头信息 引言 HTTP(超文本传输协议)是互联网上应用最为广泛的网络协议之一。它定义了客户端与服务器之间交互的基本规则。在HTTP协议中,响应头信息扮演着至关重要的角色。本文将详细介绍HTTP响应头信息的概念、类型、作用及其在实际应用中的重要性。 响应头信息概…...
计算机视觉:卷积神经网络(CNN)基本概念(一)
第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络 一、引言 卷积神经网络&…...
C#: String s = new String(“Hello“)无法编译?编程语言字符集有两个?为什么这种变量名“\u0061\u0062”都能编译通过?
C#: String s new String("Hello")无法编译? C# String类型是literal常量,默认不能用new创建,但可以在unsafe下用char *字符串指针创建。 char* charPtr stackalloc char[2]; charPtr[0] H; charPtr[1] \0; String myString new Strin…...
网络安全学习笔记之Internet基本知识
Internet构成 根据工作方式,可以把Internet分为边缘部分和核心部分。边缘部分由连接在Internet上的主机(用户的终端、服务器)组成。用户直接使用边缘部分进行通信和资源共享。核心部分由大量网络和连接这些网络的路由器组成。 服务类别 面向…...
【设计模式】【结构型模式】装饰者模式(Decorator)
👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…...
3D可视化定制:开启个性化消费新时代
3D可视化定制是一种将产品的三维模型与可视化技术相结合,以满足消费者个性化需求的服务。以下是对3D可视化定制的详细介绍: 一、定义与原理 3D可视化定制是指利用三维建模技术和可视化工具,为消费者提供一个直观、互动且高度个性化的定制平…...
CRMEB 多商户版v3.0.1源码全开源+PC端+Uniapp前端+搭建教程
一.介绍 crmeb多商户是一套B2B2C商家入驻模式的平台多商户商城系统,系统支持平台自营、联营、招商等多种运营模式,可满足企业新零售、批发、分销、预售、O2O、多店、商铺入驻等各种业务需求。 后端全开源、uniapp多端可编译! 二、搭建教程…...
java八股文-mysql
1. 索引 1.1 什么是索引 索引(index)是帮助Mysql高效获取数据的数据结构(有序).提高数据的检索效率,降低数据库的IO成本(不需要全表扫描).通过索引列对数据进行排序,降低数据排序成本,降低了CPU的消耗. 1.2 mysql索引使用的B树? 1. 没有使用二叉树,最坏情况o&…...
Audio-Visual Speech Enhancement(视听语音增强)领域近三年研究进展与国内团队及手机厂商动态分析
一、视听语音增强领域近三年研究进展 多模态融合与模型轻量化 多模态特征融合:中国科学技术大学团队提出通过引入超声舌头图像和唇部视频的联合建模,结合知识蒸馏技术,在训练阶段利用教师模型传递舌部运动知识,从而在推断时仅依赖唇部视频即可提升语音增强效果。此外,中科…...
React AJAX:深入理解与高效实践
React AJAX:深入理解与高效实践 引言 随着互联网技术的不断发展,前端开发领域也经历了翻天覆地的变化。React 作为当前最流行的前端框架之一,其强大的组件化和虚拟DOM机制受到了广泛关注。而 AJAX(Asynchronous JavaScript and XML)作为实现前后端数据交互的重要技术,与…...
撕碎QT面具(1):Tab Widget转到某个Tab页
笔者未系统学过C语法,仅有Java基础,具体写法仿照于大模型以及其它博客。自我感觉,如果会一门对象语言,没必要先刻意学C,因为自己具有对象语言的基础,等需要用什么再学也不迟。毕竟不是专门学C去搞算法。 1…...
2025.2.16
Web [GDOUCTF 2023]泄露的伪装: 点进去看就是装神弄鬼,那就直接扫描 果然有东西 第一个是php代码 第二个是个文件 访问发现是一样的 分析一下:使用 file_get_contents($cxk) 函数读取 $cxk 变量中指定的 URL 或文件的内容。 如果读取的内…...
002 第一个python程序
编程语言 编程语言可以做的事情: 网站开发、软件 、游戏、APP、 小程序、 爬虫、 数据分析、脚本 第一个python程序 找到IDE图标pycharm 新建项目 选择项目路径 创建目录 新建python文件 输入代码 运行程序查看结果 print 介绍 print : 输出内容…...
面试完整回答:SQL 分页查询中 limit 500000,10和 limit 10 速度一样快吗?
首先:在 SQL 分页查询中,LIMIT 500000, 10 和 LIMIT 10 的速度不会一样快,以下是原因和优化建议: 性能差异的原因 LIMIT 10: 只需要扫描前 10 条记录,然后返回结果。 性能非常高,因为数据库只…...
《Foundation 起步》
《Foundation 起步》 引言 在当今快速发展的科技时代,了解并掌握最新的技术是至关重要的。本文旨在为初学者提供一个全面的《Foundation》起步指南,帮助大家快速入门并掌握这一强大的技术。 一、什么是Foundation? Foundation 是一个流行的前端框架,由 ZURB 公司开发。…...
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十五节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(RoutineControl_0x31服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x31服务、例程控制、ISO 14229-1:2023、ECU测试 一、服务功能概述 0x31服…...
数据结构:顺序表
目录 一、数据结构的概念 什么是数据结构? 为什么还需要数据结构? 二、顺序表 1.线性表 2.顺序表和数组的区别 3.顺序表分类 3.1静态顺序表 3.2动态顺序表 三、动态顺序表的实现 一、数据结构的概念 什么是数据结构? 数据结构可以…...
LC-随机链表的复制、排序链表、合并K个升序链表、LRU缓存
随机链表的复制 为了在 O(n) 时间复杂度内解决这个问题,并且使用 O(1) 的额外空间,可以利用以下技巧: 将新节点插入到原节点后面:我们可以将复制节点插入到原节点后面。例如,如果链表是 A -> B -> C,…...
对于简单的HTML、CSS、JavaScript前端,我们可以通过几种方式连接后端
1. 使用Fetch API发送HTTP请求(最简单的方式): //home.html // 示例:提交表单数据到后端 const submitForm async (formData) > {try {const response await fetch(http://your-backend-url/api/submit, {method: POST,head…...
打印问题总结
问题一: 记一次发票打印模糊问题,后端返回的是pdf 之前实现的效果是将后端返回的pdf转成canvas再转成图片 预览 问题: 打印效果很模糊 解决方式: 就是直接预览pdf 借助pdf的打印和下载即可 问题二: 激光打印一般…...
2025蓝桥杯JAVA编程题练习Day4
1.艺术与篮球 问题描述 小蓝出生在一个艺术与运动并重的家庭中。 妈妈是位书法家,她希望小蓝能通过练习书法,继承她的艺术天赋,并练就一手好字。爸爸是一名篮球教练,他希望小蓝能通过篮球锻炼身体,培养运动的激情和…...
github用户名密码登陆失效了
问题: git push突然推代码需要登陆,但是用户名和密码正确输入后,却提示403 git push# Username for https://github.com: **** #Password for https://gyp-programmergithub.com: #remote: Permission to gyp-programmer/my-app.git denie…...
数据结构 day02
3. 线性表 3.1. 顺序表 3.1.3. 顺序表编程实现 操作:增删改查 .h 文件 #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #define N 10 typedef struct seqlist {int data[N];int last; //代表数组中最后一个有效元素的下标 } seqlist_t;//1.创建一个空的顺序表 seq…...
前端里的this指向问题
目录 1.代码输出结果 2.代码输出结果 3.代码输出结果 4.代码输出结果 5.代码输出结果 6.代码输出结果 7.代码输出结果 8.代码输出结果 9.代码输出结果 10.代码输出结果 11.代码输出结果 12.代码输出结果 13.代码输出结果 14.代码输出结果 总结 1.代码输出结果 f…...
pandas(11 分类数据和数据可视化)
前面内容:pandas(10 日期和Timedelta) 目录 一、Python Pandas 分类数据 1.1 pd.Categorical() 1.2 describe() 1.3 获取类别的属性 1.4 分类操作 1.5 分类数据的比较 二、Python Pandas 数据可视化 2.1 基础绘图:plot 2.2 条形图 2.3 直方…...
cmake Qt Mingw windows构建
今天教大家怎么在windows构建qt应用使用cmd命令行,而不是一键通过QtCreator一键构建。首先我们用qtcreator创建一个模板程序(PS:记得在安装qt时要悬着mingw套件,如果安装太慢可以换源) 输入以下的命令: mkdir build …...
缓存穿透、缓存击穿、缓存雪崩的区别与解决方案
1. 缓存穿透(Cache Penetration) 定义:大量请求查询 数据库中不存在的数据,导致请求绕过缓存直接访问数据库,造成数据库压力过大。 场景: 恶意攻击:例如用不存在的用户ID频繁请求。 业务误操作…...
【Rust中级教程】1.6. 内存 Pt.4:静态(static)内存与‘static生命周期标注
喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 1.6.1. 静态(static)内存 static内存实际上是一个统称,它指的是程序编译后的文…...
Python爬虫实战:股票分时数据抓取与存储 (1)
在金融数据分析中,股票分时数据是投资者和分析师的重要资源。它能够帮助我们了解股票在交易日内的价格波动情况,从而为交易决策提供依据。然而,获取这些数据往往需要借助专业的金融数据平台,其成本较高。幸运的是,通过…...
HTML之JavaScript对象
HTML之JavaScript对象 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…...
【第12章:深度学习与伦理、隐私—12.3 深度学习模型的透明性与可解释性提升策略】
凌晨三点的ICU病房,AI辅助诊断系统将一位患者的肺炎误判为普通感冒——当主治医生要求查看诊断依据时,系统只能给出冷冰冰的概率数值。这场惊心动魄的误诊事件,掀开了深度学习可解释性危机的冰山一角。 一、模型透明的"第一性原理" 1.1 可解释性的三维度量 ![可…...
SOCKET建立简单的tcp服务端与客户端通信
socket是什么 socket可以使两台机子建立连接,就像连接风扇与电源的插座一样,socket可以使服务端与客户端建立连接,服务端就像供电厂,而客户端就像用电器,而socket就是连接二者的插座。 建立简单的连接 如果我们想在客…...
最新智能优化算法: 阿尔法进化(Alpha Evolution,AE)算法求解23个经典函数测试集,MATLAB代码
一、阿尔法进化算法 阿尔法进化(Alpha Evolution,AE)算法是2024年提出的一种新型进化算法,其核心在于通过自适应基向量和随机步长的设计来更新解,从而提高算法的性能。以下是AE算法的主要步骤和特点: 主…...
HTML之JavaScript常见事件
HTML之JavaScript常见事件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>&…...
《云原生安全攻防》-- K8s镜像安全:镜像全生命周期安全管理
从攻击者的角度来看,针对容器镜像的软件供应链攻击和镜像投毒等攻击方式,不仅攻击成本低,而且还能带来更高且持久的收益。因此,镜像安全问题变得日益突出。 在本节课程中,我们将深入探讨镜像全生命周期的安全管理&…...
【Copilot】Redis SCAN SSCAN
目录 SCAN 命令SSCAN 命令使用示例原理Redis SCAN 和 SSCAN 命令的注意事项及风险注意事项风险 以下内容均由Github Copilot生成。 SCAN 和 SSCAN 命令是 Redis 提供的用于增量迭代遍历键或集合元素的命令。它们的主要优点是可以避免一次性返回大量数据,从而减少对 …...
【含开题报告+文档+PPT+源码】基于Spring+Vue的拾光印记婚纱影楼管理系统
开题报告 本论文旨在探讨基于Spring和Vue框架的拾光印记婚纱影楼管理系统的设计与实现。该系统集成了用户注册登录、个人资料修改、婚庆资讯浏览、婚庆套餐查看、婚纱拍摄预约、婚纱浏览与租赁、客片查看以及在线客服等多项功能,为用户提供了一站式的婚纱影楼服务体…...
静态页面在安卓端可以正常显示,但是在ios打开这个页面就需要刷新才能显示全图片
这个问题可能有几个原因导致,我来分析一下并给出解决方案: 首要问题是懒加载实现方式的兼容性问题。当前的懒加载实现可能在 iOS 上不够稳定。建议修改图片懒加载的实现方式: // 使用 Intersection Observer API 实现懒加载 function initLazyLoading() {const imageObserver…...
【Qt】QObject类的主要功能
在 Qt 中,QObject 类是所有 Qt 对象的基类,提供了许多基础功能,使得 Qt 的对象系统能够有效地工作。它为其他类提供了核心的机制,比如信号和槽机制、对象树结构、内存管理等。 QObject 类的主要功能: 信号和槽机制&am…...
第 16 天:游戏 UI(UMG)开发,打造主菜单 血条!
🎯 目标 ✅ 使用 UMG 创建 UI 并在游戏中显示 ✅ 实现血条(HP Bar)系统,动态显示角色生命值 ✅ 创建主菜单 UI,并添加开始/退出按钮 ✅ 保存当前场景,创建新场景作为主菜单 ✅ 点击 StartGameButton 后&am…...