当前位置: 首页 > news >正文

Python套接字综合应用(UDP篇)

Python套接字综合应用(UDP篇)

1、 主要功能

  • UDP客户端实现
  • UDP服务端实现
  • 输出字体颜色控制
  • 响应捕获键盘Ctrl+C信号
  • 套接字异常捕获及处理
  • 通信报文16进制格式化输出

2、 Python UDP套接字应用

Windows程序在WinServer2022上验证运行,Linux程序在银河麒麟V10上验证运行。

通过《网络调试助手》进行调试验证,工具运行界面如下:
在这里插入图片描述

①、 Linux服务端

server.py

# -*- coding: gbk -*-import socket
import datetime#服务端参数设置
listen_addr = "192.168.58.145"
listen_port = 1281#输出字体颜色控制
TEXT_COLOR_WHITE   = '\033[97m'
TEXT_COLOR_MAGENTA = '\033[95m'
TEXT_COLOR_BLUE    = '\033[94m'
TEXT_COLOR_YELLOW  = '\033[93m'
TEXT_COLOR_GREEN   = '\033[92m'
TEXT_COLOR_RED     = '\033[91m' 
TXET_COLOR_DEFAULT = '\033[0m'#输出字体大小控制
TEXT_FONT_WEIGHT_DEFAULT  = '\033[0m'
TEXT_FONT_WEIGHT_BOLD     = '\033[1m\033[5m'
TEXT_FONT_WEIGHT_THIN     = '\033[2m\033[3m'#1. 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#2. 绑定地址
sock.bind((listen_addr, listen_port))
#3. 接收数据
while True:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印客户地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg)#发送信息给对方tx_msg = rx_msgsock.sendto(tx_msg,peer_endpoint)str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"print(f"%s" % str_tx + str_now + str_peer)#发送内容格式化line = ['%02X' % i for i in tx_msg]str_tx_msg = " ".join(line)print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % str_tx_msg)sock.close()

运行效果
在这里插入图片描述

②、 Linux客户端

client.py

# -*- coding: gbk -*-import socket
import datetime
import time#本地网络参数设置
local_bind_addr = "192.168.58.145"
local_bind_port = 1281#对方网络参数设置
remote_ep_addr = "192.168.58.1"
remote_ep_port = 50001#交互模式
#[0]: 固定次数、固定间隔发送,用户只输入一次
#[1]: 每次要求用户输入,用户输入后才发送(默认方式)
tx_mode = 0#只有tx_mode为[0]时生效
tx_count = 10
tx_interval_second = 2#输出字体颜色控制
TEXT_COLOR_WHITE   = '\033[97m'
TEXT_COLOR_MAGENTA = '\033[95m'
TEXT_COLOR_BLUE    = '\033[94m'
TEXT_COLOR_YELLOW  = '\033[93m'
TEXT_COLOR_GREEN   = '\033[92m'
TEXT_COLOR_RED     = '\033[91m' 
TXET_COLOR_DEFAULT = '\033[0m'#1. 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#2. 绑定本地地址
sock.bind((local_bind_addr, local_bind_port))
#设置接收超时时间(单位为秒)
timeout_seconds = 2
sock.settimeout(timeout_seconds)#每次要求用户输入,用户输入后才发送(默认方式)
if tx_mode == 1 :while True:#3. 接收用户输入input_stream = input("请输入16进制发送报文数据,以空格分隔:")#4. 发送数据sock.sendto(bytearray.fromhex(input_stream),(remote_ep_addr,remote_ep_port))str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"str_remote_addr = "[{}]".format((remote_ep_addr,remote_ep_port))print(f"%s" % str_tx + str_now + str_remote_addr)#发送内容格式化print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % input_stream.upper())#5.接收数据try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印对端地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg.upper())except socket.timeout:#超时,继续continue#固定次数、固定间隔发送,用户只输入一次
elif tx_mode == 0 :#3. 接收用户输入input_stream = input("请输入16进制发送报文数据,以空格分隔:")while tx_count > 0:#4. 发送数据sock.sendto(bytearray.fromhex(input_stream),(remote_ep_addr,remote_ep_port))str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"str_remote_addr = "[{}]".format((remote_ep_addr,remote_ep_port))print(f"%s" % str_tx + str_now + str_remote_addr)#发送内容格式化print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % input_stream.upper())#5.接收数据try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印对端地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg.upper())except socket.timeout:#接收超时continueexcept Exception as e:print(f"[处理异常]: {e}")print(f"{TEXT_COLOR_RED}terminating...{TXET_COLOR_DEFAULT}")sock.close()sys.exit(0)tx_count -= 1time.sleep(tx_interval_second)sock.close()

运行效果
在这里插入图片描述

③、 Windows服务端

server.py

# -*- coding: gbk -*-import socket
import datetime
import sys#服务端参数设置
listen_addr = "192.168.58.151"
listen_port = 1281#输出字体颜色控制
TEXT_COLOR_WHITE   = '\033[1;30m'
TEXT_COLOR_GRAY    = '\033[1;37m'
TEXT_COLOR_MAGENTA = '\033[1;35m'
TEXT_COLOR_BLUE    = '\033[1;34m'
TEXT_COLOR_YELLOW  = '\033[1;33m'
TEXT_COLOR_GREEN   = '\033[1;32m'
TEXT_COLOR_RED     = '\033[1;31m' 
TXET_COLOR_DEFAULT = '\033[0m'#输出字体大小控制
TEXT_FONT_WEIGHT_DEFAULT  = '\033[0m'
TEXT_FONT_WEIGHT_BOLD     = '\033[1m\033[5m'
TEXT_FONT_WEIGHT_THIN     = '\033[2m\033[3m'# "\033"是转义序列的开始,后面跟着一个或多个字符来指定具体的样式。
# [0m表示默认样式,[1m表示加粗,[2m表示常规,[5m表示放大,[3m表示缩小。#仅限Windows系统
#print颜色控制失败时调用如下语句
import os
if os.name == "nt":os.system("")#捕获键盘Ctrl+C信号
import signal
def signal_handler(signal,code):print(f"{TEXT_COLOR_RED}terminating...{TXET_COLOR_DEFAULT}")sys.exit(0)signal.signal(signal.SIGINT,signal_handler)
signal.signal(signal.SIGTERM,signal_handler)#16进制格式化输出
def print_hex(bytes):line = ['%02X' % i for i in bytes]	print(" ".join(line))#1. 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#2. 绑定地址
sock.bind((listen_addr, listen_port))
#3. 设置接收超时时间(单位为秒)
timeout_seconds = 2
sock.settimeout(timeout_seconds)
#4. 接收数据
while True:try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印客户地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"{TEXT_COLOR_GRAY}%s{TXET_COLOR_DEFAULT}" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % str_rx_msg)#发送信息给对方tx_msg = rx_msgsock.sendto(tx_msg,peer_endpoint)str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"print(f"{TEXT_COLOR_GRAY}%s{TXET_COLOR_DEFAULT}" % str_tx + str_now + str_peer)#发送内容格式化line = ['%02X' % i for i in tx_msg]str_tx_msg = " ".join(line)print(f"{TEXT_COLOR_GREEN}%s{TXET_COLOR_DEFAULT}" % str_tx_msg)except socket.timeout:#超时,继续continue
sock.close()

运行效果
在这里插入图片描述

④、 Windows客户端

client.py

# -*- coding: gbk -*-import socket
import datetime
import time#本地网络参数设置
local_bind_addr = "192.168.58.131"
local_bind_port = 1281#对方网络参数设置
remote_ep_addr = "192.168.58.1"
remote_ep_port = 50001#交互模式
#[0]: 固定次数、固定间隔发送,用户只输入一次
#[1]: 每次要求用户输入,用户输入后才发送(默认方式)
tx_mode = 0#只有tx_mode为[0]时生效
tx_count = 10
tx_interval_second = 2#仅限Windows系统
#print颜色控制失败时调用如下语句
import os
if os.name == "nt":os.system("")#捕获键盘Ctrl+C信号
import signal
def signal_handler(signal,code):print(f"{TEXT_COLOR_RED}terminating...{TXET_COLOR_DEFAULT}")sys.exit(0)signal.signal(signal.SIGINT,signal_handler)
signal.signal(signal.SIGTERM,signal_handler)#输出字体颜色控制
TEXT_COLOR_WHITE   = '\033[1;30m'
TEXT_COLOR_GRAY    = '\033[1;37m'
TEXT_COLOR_MAGENTA = '\033[1;35m'
TEXT_COLOR_BLUE    = '\033[1;34m'
TEXT_COLOR_YELLOW  = '\033[1;33m'
TEXT_COLOR_GREEN   = '\033[1;32m'
TEXT_COLOR_RED     = '\033[1;31m' 
TXET_COLOR_DEFAULT = '\033[0m'#1. 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#2. 绑定本地地址
sock.bind((local_bind_addr, local_bind_port))
#设置接收超时时间(单位为秒)
timeout_seconds = 2
sock.settimeout(timeout_seconds)#每次要求用户输入,用户输入后才发送(默认方式)
if tx_mode == 1 :while True:#3. 接收用户输入input_stream = input("请输入16进制发送报文数据,以空格分隔:")#4. 发送数据sock.sendto(bytearray.fromhex(input_stream),(remote_ep_addr,remote_ep_port))str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"str_remote_addr = "[{}]".format((remote_ep_addr,remote_ep_port))print(f"%s" % str_tx + str_now + str_remote_addr)#发送内容格式化print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % input_stream.upper())#5.接收数据try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印对端地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg.upper())except socket.timeout:#超时,继续continue#固定次数、固定间隔发送,用户只输入一次
elif tx_mode == 0 :#3. 接收用户输入input_stream = input("请输入16进制发送报文数据,以空格分隔:")while tx_count > 0:#4. 发送数据sock.sendto(bytearray.fromhex(input_stream),(remote_ep_addr,remote_ep_port))str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"str_remote_addr = "[{}]".format((remote_ep_addr,remote_ep_port))print(f"%s" % str_tx + str_now + str_remote_addr)#发送内容格式化print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % input_stream.upper())#5.接收数据try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印对端地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg.upper())except socket.timeout:#接收超时continueexcept Exception as e:print(f"[处理异常]: {e}")print(f"{TEXT_COLOR_RED}terminating...{TXET_COLOR_DEFAULT}")sock.close()sys.exit(0)tx_count -= 1time.sleep(tx_interval_second)sock.close()

运行效果
在这里插入图片描述

相关文章:

Python套接字综合应用(UDP篇)

Python套接字综合应用(UDP篇) 1、 主要功能 UDP客户端实现UDP服务端实现输出字体颜色控制响应捕获键盘CtrlC信号套接字异常捕获及处理通信报文16进制格式化输出 2、 Python UDP套接字应用 Windows程序在WinServer2022上验证运行,Linux程序在银河麒麟V10上验证运…...

服务器安装哪吒面板详细教程

本文长期更新地址: 服务器安装哪吒面板详细教程-星零岁的博客https://blog.0xwl.com/13568.html 注:本文中部分内容源自网络,第四步中部分来自本人曾经文章:云服务器安装配置宝塔面板并安装基础运行环境教程-星零岁的博客 今天来讲…...

LLM微调(精讲)-以高考选择题生成模型为例(DataWhale AI夏令营)

前言 你好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,上一篇文章中,作者介绍了基于讯飞开放平台进行大模型微调的完整流程;而在本文中,作者将对大模型微调的数据准备部分进行深入;…...

安全基础学习-RC4加密算法

这里仅仅记录一些基础的概念。后期有需求进一步扩展。 RC4 是一种对称流加密算法,由罗恩里维斯特(Ron Rivest)于1987年设计。RC4 的设计目的是提供一种简单且高效的加密方法。尽管 RC4 曾经广泛使用,但它的安全性在现代已受到质疑…...

雨云宁波电信大带宽服务器测评(非广告)

提示:本文非广告,非宣传! 本文长期更新地址:雨云宁波电信大带宽服务器测评(非广告) 雨云现在有一个国内的新区——宁波 宣传的是电信大带宽,可附加100G防御,采用NVME,和铂…...

2024年,最新前端趋势

随着技术的不断发展,前端开发领域在2024年迎来了新的趋势和挑战。对于开发者来说,紧跟这些趋势不仅能提升技术水平,还能在激烈的市场竞争中脱颖而出。今天,我想向大家介绍一款在这波趋势中脱颖而出的开发神器——MemFire Cloud。这…...

Linux静态进程和动态进程查看管理

1.静态进程的查看PS PPID:谁启动的父亲ID USER:运行进程的用户名称 PID:进程ID %CPU:CPU的占用比例占用资源 %MEM:内存使用的占用比例 VSZ:占用虚拟内存多少 RSS:占用实际内存多少 TTY:…...

CPU飙升 怎么定位问题

传统的方法 【top】 查看所有进程占系统CPU的排序,定位是哪个进程搞的鬼。PID那一列就是进程号。 【top -Hp pid】 定位进程中使用 CPU 最高的线程tid 【printf ‘0x%x’ tid】 线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a 【jstack…...

The Sandbox 游戏制作教程第 4 章|使用装备制作游戏,触发独特互动

欢迎回到我们的系列,我们将记录 The Sandbox Game Maker 的 “On-Equip”(装备)功能的多种用途。 如果你刚加入 The Sandbox,On-Equip 功能是 “可收集组件”(Collectable Component)中的一个多功能工具&a…...

JS 和 JSX、TS 和 TSX 的区别

1. JS(JavaScript) 定义与特性: JavaScript(简称JS)是一种轻量级、解释型或即时编译型的编程语言。它基于原型编程、多范式的动态脚本语言,支持面向对象、命令式、声明式、函数式编程范式。JavaScript 是…...

25款极氪007上市,小米SU7就不该买?

文 | AUTO芯球 作者 | 谦行 我是刚刚才知道 买小米SU7的原来是盯着他这两个功能 可爱的小女孩喊小爱同学帮她停个车 妈妈给她说SU7自己能停好,她还叮嘱一句“小爱同学你给我好好停” SU7滴溜溜的就停在车位上,全程不到一分钟 视频属实温馨&#x…...

旋转字符串 | LeetCode-796 | 模拟 | KMP | 字符串匹配

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 🕹️KMP算法练习题 LeetCode链接:796. 旋转字符串 文章目录 1.题目描述🍑2.题解🫐2.1 暴力解法🫒2.2 模拟…...

网络安全测试工具Burp Suite基本使用

一、介绍 Burp Suite 是一款由 PortSwigger 开发的集成网络安全测试工具,广泛用于渗透测试和漏洞扫描。它提供了一系列功能强大的工具和功能,帮助安全研究人员和渗透测试人员识别和修复 Web 应用程序中的安全漏洞。以下是 Burp Suite 的主要功能和特点&…...

使用pytest+selenium编写网页UI自动化脚本和用例

1 UI自动化测试 UI自动化测试(User Interface Automation Testing)是一种通过编写脚本或使用自动化测试工具,对界面(UI)进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面,自动化执行用户…...

新能源遇“秋老虎”,8月第二周销量集体下滑,问界惨遭腰斩

文/王俣祺 导语:随着日前7月份乘用车销量的公布,我们发现7月并没有因6月各车企的“冲量”行为迎来反噬,对于这种“淡季不淡”的现象市场上一片看好。但从近日公布的8月销量数据来看,人们对于“秋老虎”的恐怖可以说是一无所知。随…...

SEO模板网站的wordpress主题最适合google外贸SEO

在寻找最适合Google外贸SEO的WordPress主题时,有几个关键因素需要考虑:速度、SEO友好性、多语言支持、以及是否易于定制。以下是一些推荐的WordPress主题,它们不仅速度快,而且对SEO非常友好,非常适合外贸网站&#xff…...

fetch跨域请求数据的前端设置和后端php的header设置

跨源请求,也称为CORS(Cross-Origin Resource Sharing)请求,是Web开发中常见的一种需求,允许一个网页的JavaScript代码向与该网页不同源的服务器发出HTTP请求。以下是使用JavaScript中的fetch函数进行跨源请求的一个基本…...

Ted靶机

信息收集: 靶机地址:https://www.vulnhub.com/entry/ted-1,327/ (1)ip扫描 nmap 192.168.254.0/24 -sn | grep -B 2 00:0C:29:FF:7F:9A (2)端口扫描 nmap -p- -A 192.168.254.159 (3&#x…...

HarmonyOS ArkTS 构建布局

在 HarmonyOS 中,ArkTS 是一种基于 TypeScript 的编程语言,专为开发 HarmonyOS 应用而设计。构建布局是开发应用的关键步骤之一。以下是如何在 ArkTS 中构建布局的基本指南。 1. 创建项目和页面 首先,确保已经创建了一个 HarmonyOS 项目。如…...

yolov5详解(二):通过yaml文件构建完整模型

依然拿yolov5l v6.0版本来讲解 1. yaml文件 以下是yolov5l.yaml文件内容 # YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters nc: 80 # number of classes depth_multiple: 1.0 # model depth multiple width_multiple: 1.0 # layer channel multiple …...

Loop Habit Tracker习惯追踪应用技术深度解析与架构实践指南

Loop Habit Tracker习惯追踪应用技术深度解析与架构实践指南 【免费下载链接】uhabits Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits 项目地址: https://gitcode.com/gh_mirrors/uh/uhabits Loop Habit Tracker是一款基于…...

多账号矩阵协作架构设计:中小团队多人权限与素材协同实战方案

前言短视频矩阵运营发展到现阶段,早已不是单人单账号的零散运营模式,而是多账号集群 多人分工协作的团队化作业形态。但绝大多数中小团队、本地商家、小型 MCN 都面临同一个技术难题:多账号共用混乱、素材无法共享、操作权限无隔离、发布无审…...

DDR内存接口测试:从信号完整性到电源噪声的工程实践指南

1. DDR内存测试的核心挑战与价值在任何一个涉及高速数字信号的设计项目中,内存接口的验证都是决定系统稳定性的关键一环。从早期的SDRAM到如今主流的DDR4、DDR5乃至LPDDR系列,双倍数据速率(DDR)技术通过在每个时钟周期的上升沿和下…...

KV缓存优化在语音大模型中的挑战与AudioKV解决方案

1. KV缓存管理在大型语言模型中的核心挑战在Transformer架构的大型语言模型(LLM)推理过程中,KV(Key-Value)缓存技术通过存储历史注意力键值对来避免重复计算,这项优化使得自回归生成的计算复杂度从O(n)降低…...

软考 系统架构设计师历年真题集萃(253)

接前一篇文章:软考 系统架构设计师历年真题集萃(252) 第505题 给出关系R(U, F), U = {A,B,C,D,E}, F={A->B, D->C, BC->E, AC->B},求属性闭包的等式成立的是( )。R的候选关键字为( )。 第1空 A. B. C. D. 正确答案:D。 第2空 A. AD B. AB C…...

别再傻傻在线等了!手把手教你用命令行精准定制VS2022离线安装包(附.NET/C++/MFC组件命令)

精准定制VS2022离线安装包:命令行高效配置指南 在开发团队协作或特殊网络环境下,Visual Studio 2022的离线安装成为刚需。但直接下载完整离线包不仅耗时(超过25GB),还会占用大量存储空间——而实际上,90%的…...

跨境社媒账号做不稳 很多时候不是内容不够好而是气质不够稳定

很多团队做跨境社媒时,最容易把注意力集中在“内容创意”上。 选题够不够新,切口够不够巧,视频开头能不能抓住人,标题会不会让人点开,这些当然都重要。但真正做久了之后会发现,一个账号能不能长期跑起来&am…...

5G FR1与FR2频段下,SSB的Kssb子载波偏移配置实战与避坑指南

5G FR1与FR2频段下SSB的Kssb子载波偏移配置实战与避坑指南 在5G网络部署中,同步信号块(SSB)的配置直接关系到终端设备能否成功接入网络。其中,Kssb子载波偏移参数在不同频段(FR1与FR2)下的取值范围和单位存…...

KeymouseGo完全指南:5分钟掌握桌面自动化终极工具

KeymouseGo完全指南:5分钟掌握桌面自动化终极工具 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 你是否厌倦了…...

从“能用”到“可靠”:基于SonarQube与Jenkins的Java代码质量防线构建实战

当测试覆盖率不再只是一串数字,而是合并代码前的“一票否决权” 1. 为什么你的“质量门禁”只是个摆设? 在很多团队的CI/CD流水线中,SonarQube的集成往往停留在“能跑就行”的阶段。流水线里确实有代码扫描这一步,日志里也打印出…...