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

【Linux加餐-验证UDP:TCP】-windows作为client访问Linux

一、验证UDP-windows作为client访问Linux

UDP client样例代码

#include <iostream>
#include <cstdio>
#include <thread>
#include <string>
#include <cstdlib>
#include <WinSock2.h>
#include <Windows.h>#pragma warning(disable : 4996)#pragma comment(lib, "ws2_32.lib")std::string serverip = "";  // 填写你的云服务器ip
uint16_t serverport = 8888; // 填写你的云服务开放的端口号int main()
{WSADATA wsd;WSAStartup(MAKEWORD(2, 2), &wsd);struct sockaddr_in server;memset(&server, 0, sizeof(server));server.sin_family = AF_INET;server.sin_port = htons(serverport); //?server.sin_addr.s_addr = inet_addr(serverip.c_str());SOCKET sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (sockfd == SOCKET_ERROR){std::cout << "socker error" << std::endl;return 1;}std::string message;char buffer[1024];while (true){std::cout << "Please Enter@ ";std::getline(std::cin, message);if(message.empty()) continue;sendto(sockfd, message.c_str(), (int)message.size(), 0, (struct sockaddr *)&server, sizeof(server));struct sockaddr_in temp;int len = sizeof(temp);int s = recvfrom(sockfd, buffer, 1023, 0, (struct sockaddr *)&temp, &len);if (s > 0){buffer[s] = 0;std::cout << buffer << std::endl;}}closesocket(sockfd);WSACleanup();return 0;
}

UdpServer

#include <iostream>
#include <string>
#include <memory>
#include <cerrno>
#include <cstring>
#include <unistd.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>const static uint16_t defaultport = 8888;
const static int defaultfd = -1;
const static int defaultsize = 1024;enum
{Usage_Err = 1,Socket_Err,Bind_Err
};class UdpServer
{
public:UdpServer(uint16_t port = defaultport): _port(port), _sockfd(defaultfd){}void Init(){// 1. 创建socket,就是创建了文件细节_sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (_sockfd < 0){exit(Socket_Err);}// 2. 绑定,指定网络信息struct sockaddr_in local;bzero(&local, sizeof(local)); // memsetlocal.sin_family = AF_INET;local.sin_port = htons(_port);local.sin_addr.s_addr = INADDR_ANY; // 1. 4字节IP 2. 变成网络序列// 结构体填完,设置到内核中了吗??没有int n = ::bind(_sockfd, (struct sockaddr *)&local, sizeof(local));if (n != 0){exit(Bind_Err);}}void Start(){// 服务器永远不退出char buffer[defaultsize];for (;;){struct sockaddr_in peer;socklen_t len = sizeof(peer); // 不能乱写ssize_t n = recvfrom(_sockfd, buffer, sizeof(buffer) - 1, 0, (struct sockaddr *)&peer, &len);if (n > 0){uint16_t clientport = ntohs(peer.sin_port);std::string clientip = inet_ntoa(peer.sin_addr);std::string prefix = clientip + ":" + std::to_string(clientport);buffer[n] = 0;std::cout << prefix << "# " << buffer << std::endl;std::string echo = buffer;echo += "[udp server echo message]";sendto(_sockfd, echo.c_str(), echo.size(), 0, (struct sockaddr *)&peer, len);}}}~UdpServer(){}private:uint16_t _port;int _sockfd;
};void Usage(std::string proc)
{std::cout << "Usage : \n\t" << proc << " local_port\n"<< std::endl;
}// ./udp_server 8888
int main(int argc, char *argv[])
{if (argc != 2){Usage(argv[0]);return Usage_Err;}uint16_t port = std::stoi(argv[1]);std::unique_ptr<UdpServer> usvr = std::make_unique<UdpServer>(port);usvr->Init();usvr->Start();return 0;
}

测试结果

在这里插入图片描述

二、验证TCP-windows作为client访问Linux

TcpClient.cc

#include <winsock2.h>
#include <iostream>
#include <string>#pragma warning(disable : 4996)#pragma comment(lib, "ws2_32.lib")std::string serverip = "";  // 填写你的云服务器ip
uint16_t serverport = 8888; // 填写你的云服务开放的端口号int main()
{WSADATA wsaData;int result = WSAStartup(MAKEWORD(2, 2), &wsaData);if (result != 0){std::cerr << "WSAStartup failed: " << result << std::endl;return 1;}SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (clientSocket == INVALID_SOCKET){std::cerr << "socket failed" << std::endl;WSACleanup();return 1;}sockaddr_in serverAddr;serverAddr.sin_family = AF_INET;serverAddr.sin_port = htons(serverport);                  // 替换为服务器端口serverAddr.sin_addr.s_addr = inet_addr(serverip.c_str()); // 替换为服务器IP地址result = connect(clientSocket, (SOCKADDR *)&serverAddr, sizeof(serverAddr));if (result == SOCKET_ERROR){std::cerr << "connect failed" << std::endl;closesocket(clientSocket);WSACleanup();return 1;}while (true){std::string message;std::cout << "Please Enter@ ";std::getline(std::cin, message);if(message.empty()) continue;send(clientSocket, message.c_str(), message.size(), 0);char buffer[1024] = {0};int bytesReceived = recv(clientSocket, buffer, sizeof(buffer) - 1, 0);if (bytesReceived > 0){buffer[bytesReceived] = '\0'; // 确保字符串以 null 结尾std::cout << "Received from server: " << buffer << std::endl;}else{std::cerr << "recv failed" << std::endl;}}closesocket(clientSocket);WSACleanup();return 0;
}

TcpServer.cc

#include <iostream>
#include <string>
#include <cerrno>
#include <cstring>
#include <cstdlib>
#include <memory>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/wait.h>
#include <unistd.h>const static int default_backlog = 6;enum
{Usage_Err = 1,Socket_Err,Bind_Err,Listen_Err
};#define CONV(addr_ptr) ((struct sockaddr *)addr_ptr)class TcpServer
{
public:TcpServer(uint16_t port) : _port(port), _isrunning(false){}// 都是固定套路void Init(){// 1. 创建socket, file fd, 本质是文件_listensock = socket(AF_INET, SOCK_STREAM, 0);if (_listensock < 0){exit(0);}int opt = 1;setsockopt(_listensock, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt));// 2. 填充本地网络信息并bindstruct sockaddr_in local;memset(&local, 0, sizeof(local));local.sin_family = AF_INET;local.sin_port = htons(_port);local.sin_addr.s_addr = htonl(INADDR_ANY);// 2.1 bindif (bind(_listensock, CONV(&local), sizeof(local)) != 0){exit(Bind_Err);}// 3. 设置socket为监听状态,tcp特有的if (listen(_listensock, default_backlog) != 0){exit(Listen_Err);}}void ProcessConnection(int sockfd, struct sockaddr_in &peer){uint16_t clientport = ntohs(peer.sin_port);std::string clientip = inet_ntoa(peer.sin_addr);std::string prefix = clientip + ":" + std::to_string(clientport);std::cout << "get a new connection, info is : " << prefix << std::endl;while (true){char inbuffer[1024];ssize_t s = ::read(sockfd, inbuffer, sizeof(inbuffer)-1);if(s > 0){inbuffer[s] = 0;std::cout << prefix << "# " << inbuffer << std::endl;std::string echo = inbuffer;echo += "[tcp server echo message]";write(sockfd, echo.c_str(), echo.size());}else{std::cout << prefix << " client quit" << std::endl;break;}}}void Start(){_isrunning = true;while (_isrunning){// 4. 获取连接struct sockaddr_in peer;socklen_t len = sizeof(peer);int sockfd = accept(_listensock, CONV(&peer), &len);if (sockfd < 0){continue;}ProcessConnection(sockfd, peer);}}~TcpServer(){}private:uint16_t _port;int _listensock; // TODObool _isrunning;
};using namespace std;void Usage(std::string proc)
{std::cout << "Usage : \n\t" << proc << " local_port\n"<< std::endl;
}
// ./tcp_server 8888
int main(int argc, char *argv[])
{if (argc != 2){Usage(argv[0]);return Usage_Err;}uint16_t port = stoi(argv[1]);std::unique_ptr<TcpServer> tsvr = make_unique<TcpServer>(port);tsvr->Init();tsvr->Start();return 0;
}

测试结果

在这里插入图片描述

三、注意

• 一定要开放云服务器对应的端口号,在你的阿里云或者腾讯云或者华为云的网站后台中开放。

• 我们发现可以 udp tcpclient(Windows)和 tcpserver(Linux)可以通信

WinSock2.h 是 Windows Sockets API(应用程序接口)的头文件,用于在 Windows 平台上进行网络编程。它包含了 Windows Sockets 2(winsock2)所需的数据类型、函数声明和结构定义,使得开发者能够创建和使用套接字(sockets)进行网络通信。

在编写使用 Winsock2 的程序时,需要在源文件中包含 WinSock2.h 头文件。这样,编译器就能够识别并理解 winsock2 中定义的数据类型和函数,从而能够正确地编译和链接网络相关的代码。

此外,与 WinSock2.h 头文件相对应的是 ws2_32.lib 库文件。在链接阶段,需要将这个库文件链接到程序中,以确保运行时能够找到并调用 Winsock2 API 中实现的函数。

在 WinSock2.h 中定义了一些重要的数据类型和函数,如:
WSADATA:保存初始化 Winsock 库时返回的信息。
SOCKET:表示一个套接字描述符,用于在网络中唯一标识一个套接字。
sockaddr_in:IPv4 地址结构体,用于存储 IP 地址和端口号等信息。
socket ():创建一个新的套接字。
bind ():将套接字与本地地址绑定。
listen ():将套接字设置为监听模式,等待客户端的连接请求。
accept ():接受客户端的连接请求,并返回一个新的套接字描述符,用于与客户端进行通信。

WSAStartup 函数是 Windows Sockets API 的初始化函数,它用于初始化 Winsock 库。该函数在应用程序或 DLL 调用任何 Windows 套接字函数之前必须首先执行,它扮演着初始化的角色。

以下是 WSAStartup 函数的一些关键点:
它接受两个参数:wVersionRequested 和 lpWSAData。wVersionRequested 用于指定所请求的 Winsock 版本,通常使用 MAKEWORD (major, minor) 宏,其中 major 和 minor 分别表示请求的主版本号和次版本号。lpWSAData 是一个指向 WSADATA 结构的指针,用于接收初始化信息。

如果函数调用成功,它会返回 0;否则,返回错误代码。

WSAStartup 函数的主要作用是向操作系统说明我们将使用哪个版本的 winsock 库,从而使得该库文件能与当前的操作系统协同工作。成功调用该函数后,Winsock 库的状态会被初始化,应用程序就可以使用 Winsock 提供的一系列套接字服务,如地址家族识别、地址转换、名字查询和连接控制等。这些服务使得应用程序可以与底层的网络协议栈进行交互,实现网络通信。

在调用 WSAStartup 函数后,如果应用程序完成了对请求的 Socket 库的使用,应调用 WSACleanup 函数来解除与 Socket 库的绑定并释放所占用的系统资源。

相关文章:

【Linux加餐-验证UDP:TCP】-windows作为client访问Linux

一、验证UDP-windows作为client访问Linux UDP client样例代码 #include <iostream> #include <cstdio> #include <thread> #include <string> #include <cstdlib> #include <WinSock2.h> #include <Windows.h>#pragma warning(dis…...

qt+opengl 加载三维obj文件

1前面我们已经熟悉了opengl自定义顶点生成一个立方体&#xff0c;并且我们实现了立方体的旋转&#xff0c;光照等功能。下面我们来用opengl来加载一个obj文件。准备我们首先准备一个简单的obj文件&#xff08;head.obj&#xff09;。资源在本页下载 2 在obj文件里面&#xff0c…...

日报日报流量分析

快捷键 CtrlK&#xff0c;选择需要抓包的网卡 CtrlF可以进行关键字搜索 CtrlM&#xff0c;标记数据包 CtrlShiftN跳到标记处 查看包有多少协议Protocol Hierarchy&#xff08;协议分级&#xff09; 搜了一下TCP协议&#xff0c;是互联网最基本的协议&#xff0…...

SQL:CASE WHEN使用详解

文章目录 1. 数据转换与映射2. 动态条件筛选3. 多条件分组统计4. 数据排名与分级5. 处理空值与默认值6. 动态排序 CASE WHEN 语句在 SQL 中是一个非常强大且灵活的工具&#xff0c;除了常规的条件判断外&#xff0c;还有很多巧妙的用法&#xff0c;以下为你详细总结&#xff1a…...

在 Unreal Engine 5 中制作类似《鬼泣5》这样的游戏时,角色在空中无法落地的问题可能由多种原因引起。

系列文章目录 文章目录 系列文章目录前言一、实现步骤二、涉及到的蓝图三、如何把敌人击飞到空中 前言 在 Unreal Engine 5 中制作类似《鬼泣5》这样的游戏时&#xff0c;角色在空中无法落地的问题可能由多种原因引起。 一、实现步骤 角色碰撞设置 确保角色的碰撞组件&…...

mapbox进阶,添加鹰眼图控件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️mapboxgl-minimap 鹰眼控件二、🍀添加…...

k8s污点与容忍

k8s污点与容忍 k8s污点管理常用命令effect标记值查看污点添加污点删除污点 node污点与容忍污点容忍yaml示例容忍放大基于污点的驱逐驱逐时排除指定服务 设置master调度设置master尽量不调度允许master节点调度pod恢复Master Only状态将node标记为不可调度状态(节点警戒)设置nod…...

算法刷题记录——LeetCode篇(9.1) [第801~810题]

更新时间&#xff1a;2025-03-29 算法题解目录汇总&#xff1a;算法刷题记录——题解目录汇总技术博客总目录&#xff1a;计算机技术系列博客——目录页 优先整理热门100及面试150&#xff0c;不定期持续更新&#xff0c;欢迎关注&#xff01; 801. 使序列递增的最小交换次数…...

AOA与TOA混合定位,MATLAB例程,自适应基站数量,三维空间下的运动轨迹,滤波使用EKF

本代码实现了一个基于 到达角(AOA) 和 到达时间(TOA) 的混合定位算法,结合 扩展卡尔曼滤波(EKF) 对三维运动目标的轨迹进行滤波优化。代码通过模拟动态目标与基站网络,展示了从信号测量、定位解算到轨迹滤波的全流程,适用于城市峡谷、室内等复杂环境下的定位研究。 文…...

【vllm/瞎折腾】在内网wsl上安装vllm并尝试多节点部署(失败了)

目录 说在前面miniconda安装外网创建虚拟环境创建节点一的虚拟环境创建节点二的虚拟环境 内网配置环境配置节点一的环境配置节点二的环境 vllm多节点配置节点一(主节点)配置节点二配置 部署LLM(失败)补充&#xff1a;wsl2设置ulimit补充&#xff1a;wsl安装libcuda补充&#xf…...

Mayo Clinic Platform在人工智能医疗领域的现状及启示意义研究

一、引言 1.1 研究背景与意义 在科技飞速发展的当下,人工智能(AI)已逐渐渗透至各个行业,医疗领域作为关乎人类生命健康的重要领域,也迎来了人工智能技术带来的深刻变革。人工智能医疗,作为人工智能与医疗行业深度融合的产物,正重塑着全球医疗的格局。 从全球范围来看,…...

k8s部署教程

Kubernetes 1. 使用Kubernetes部署Web服务器 ​ 我们的目标是部署三个实例&#xff0c;可以让用户直接访问。三个实例&#xff0c;这样即便一个崩溃了&#xff0c;也还有两个&#xff0c;比较不容易出问题。实际中你要根据自己的业务来判断。也就是说&#xff0c;我们需要一个…...

java基础:常见类和对象

1.常见类和对象&#xff1a; java.lang.Object类&#xff0c;Java中的每个类都直接或间接地继承自Object类&#xff0c;如果没有明确指定一个类继承另一个类&#xff0c;那么它的默认父类就是Object类&#xff1b; 例如多态&#xff1a; package java_jichu;public class ja…...

了解遗传算法的Matlab程序的奥妙之处

老板突然想要了解遗传算法的Matlab程序,我们需要先理清楚他们的需求。首先,老板可能对遗传算法有一定的了解,但不太清楚如何在Matlab中具体实现。他可能是一个学生或者研究人员,需要应用到某个项目中,比如优化问题。老板可能希望得到一个结构清晰的步骤说明,以及具体的代…...

Java学习------源码解析之StringBuilder

1. 介绍 String中还有两个常用的类&#xff0c;StringBuffer和StringBuilder。这两个类都是专门为频繁进行拼接字符串而准备的。最先出现的是StringBuffer&#xff0c;之后到jdk1.5的时候才有了StringBuilder。 2. StringBuilder解析 从这张继承结构图可以看出&#xff1a; S…...

【漫话机器学习系列】163.方差膨胀因子(Variance Inflation Factor, VIF)

方差膨胀因子&#xff08;Variance Inflation Factor, VIF&#xff09;详解 1. 什么是方差膨胀因子&#xff1f; 方差膨胀因子&#xff08;Variance Inflation Factor, VIF&#xff09;是一种用于衡量回归分析中多重共线性&#xff08;Multicollinearity&#xff09;程度的指…...

蓝桥杯省模拟赛 字符串拼接

问题描述 给定四个字符串 a,b,c,d&#xff0c;请将这四个字符串按照任意顺序依次连接拼成一个字符串。 请问拼成的字符串字典序最小是多少&#xff1f; 输入格式 输入四行&#xff0c;每行包含一个字符串。 输出格式 输出一行包含一个字符串&#xff0c;表示答案。 样例…...

前端路由守卫与后端权限验证,仅使用路由守卫是否安全?

前后端分离架构的安全原则 后端必须对所有 API 接口进行权限验证前端仅负责用户界面的重定向安全策略应始终由后端最终决定 问题1&#xff1a;前端设置路由守卫是否可以阻挡用户直接通过URL访问&#xff1f;&#xff1f;&#xff1f; 前端路由守卫&#xff08;如 Vue Router …...

React-nodejs 练习 个人博客

1.主要功能模块&#xff1a; 文章管理&#xff1a;CRUD操作 用户系统&#xff1a;注册、登录、权限控制评论系统&#xff1a;文章评论功能 2.技术栈&#xff1a; 前端&#xff1a;React Ant Design React Router后端&#xff1a;Express MongoDB 通信&#xff1a;RESTful…...

AI三大主义 和 深度学习三大主义

在人工智能&#xff08;AI&#xff09;研究领域&#xff0c;"三大主义"通常指三种核心方法论或思想流派&#xff0c;它们代表了不同的技术路径和哲学观点。以下是主流的划分方式&#xff1a; 1. 符号主义&#xff08;Symbolicism&#xff09; 核心思想&#xff1a;智…...

Linux实现生产者消费者模型(基于阻塞队列)

目录 概念及优势 代码实现 概念及优势 生产者消费者模型是一种用于线程同步的模型&#xff0c;在这个模型中有两种角色&#xff0c;生产者生产数据&#xff0c;消费者消费数据。有三种关系&#xff0c;生产者与生产者&#xff0c;消费者与消费者&#xff0c;生产者与消费者。…...

UE5 UE4 右键/最大化-菜单-不显示/闪/黑色/黑屏--修复方法

先关闭UE5 、UE4 编辑器。 进入这个网站&#xff1a;https://nvidia.custhelp.com/app/answers/detail/a_id/5157 网速慢&#xff0c;换成这个下载&#xff1a;https://download.csdn.net/download/qq_21153225/90546310 下载&#xff1a;mpo_disable.reg 的文件 只双击“mpo…...

[ C语言 ] | 从0到1?

目录 认识计算机语言 C语言 工欲善其事必先利其器 第一个C语言代码 这一些列 [ C语言 ] &#xff0c;就来分享一下 C语言 相关的知识点~ 认识计算机语言 我们说到计算机语言&#xff0c;语言&#xff0c;就是用来沟通的工具&#xff0c;计算机语言呢&#xff1f;就是我们…...

4.训练篇2-毕设篇

resnet # 1. 从 torchvision 中加载预训练的 ResNet18 模型 # pretrainedTrue 表示使用在 ImageNet 上预训练过的参数&#xff0c;学习效果更好 base_model_resnet18 models.resnet18(pretrainedTrue)# 2. 获取 ResNet18 模型中全连接层&#xff08;fc&#xff09;的输入特征…...

Ubuntu 系统中,每日健康检查

一、手动检查命令&#xff08;基础项&#xff09; 1. 系统资源监控 内存使用&#xff1a; free -h # 查看内存和交换空间使用情况 cat /proc/meminfo | grep -i "memavailable" # 查看可用内存CPU 负载&#xff1a; top -n 1 -b | grep "load ave…...

#CX# UVM中的virtual sequence 和 virtual sequencer 的用途

在UVM中,Virtual Sequence(虚拟序列) 的核心用途是协调多个物理Sequencer上的Sequence执行,以实现跨接口、跨组件的复杂事务同步和场景控制。 1. 核心用途 多接口协同测试 当验证场景需要多个接口(如DUT的AXI、I2C、UART接口)同时或按特定顺序发送事务时,Virtual Seque…...

vue:突然发现onok无法使用

const that this;this.$confirm({title: "修改商品提示",content: "如果当前商品存在于商品活动库&#xff0c;则在商品活动库的状态会下架",onOk: function () {that.submitForm();}}); 突然发现 this.$confirm无法进入onok 最终发现是主题冲突&#x…...

开发过程中需要安装的浏览器插件

Vue.js devtools https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd?hlzh-CN&utm_sourceext_sidebar ModHeader https://chromewebstore.google.com/detail/modheader-modify-http-hea/idgpnmonknjnojddfkpgkljpfnnfcklj?utm…...

基于javaweb的SpringBoot房屋出租系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

小程序某点餐平台全自动化实现思路

某德基全自动化实现 一、实现思路二、具体步骤1、分析接口2、破解接口3、解决自动支付4、获取订单 三、其他 以下内容仅供学习交流使用 粗略讲解一下思路&#xff0c;要完全实现只靠以下这些内容还是不够的。 一、实现思路 全自动化实现用的是小程序版本。我们首先要分析整个…...

红宝书第二十讲:详解JavaScript的Proxy与Reflect

红宝书第二十讲&#xff1a;详解JavaScript的Proxy与Reflect 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、Proxy的作用&#xff1a;给对象戴上“监听耳机” Proxy&#xff08;代理&#xff09;允许你为对象…...

Contactile三轴触觉传感器:多维力感赋能机器人抓取

在非结构化环境中&#xff0c;机器人对物体的精准抓取与操作始终面临巨大挑战。传统传感器因无法全面感知触觉参数&#xff08;如三维力、位移、摩擦&#xff09;&#xff0c;难以适应复杂多变的场景。Contactile推出的三轴触觉力传感器&#xff0c;通过仿生设计与创新光学技术…...

18-动规-子序列中的 k 种字母(中等)

题目 来源 28. 子序列中的 k 种字母&#xff08;第一期模拟笔试&#xff09; 思路 基本分析 子序列的定义 子序列是从原序列中选取部分元素&#xff0c;同时保持这些元素在原序列中的相对顺序所形成的新序列。也就是说&#xff0c;子序列中的元素不需要在原序列中连续出现…...

Lua 数组

Lua 数组 引言 Lua 是一种轻量级、高效的脚本语言&#xff0c;广泛应用于游戏开发、服务器端编程等领域。在 Lua 中&#xff0c;数组是一种非常重要的数据结构&#xff0c;它允许开发者以高效的方式存储和操作一系列数据。本文将详细介绍 Lua 数组的相关知识&#xff0c;包括…...

C 语言的未来:在变革中坚守核心价值

一、从 “古老” 到 “长青”&#xff1a;C 语言的不可替代性 诞生于 20 世纪 70 年代的 C 语言&#xff0c;历经半个世纪的技术浪潮&#xff0c;至今仍是编程世界的 “基石语言”。尽管 Python、Java 等高级语言在应用层开发中占据主流&#xff0c;但 C 语言在系统级编程和资…...

springboot3 基于 logback

1.配置 logging:level:root: ${ROOT_LOG_LEVEL:debug}web: ${ROOT_WEB_LEVEL:info}org.hibernate.orm.jdbc.bind: ${ROOT_SQL_PARAM_LEVEL:info} #打印SQL参数2.基于 logback-spring.xml配置 <?xml version="1.0" encoding="UTF-8"?> <configu…...

网络相关的知识总结1

1.设备可以通过以太网电缆&#xff08;如双绞线&#xff09;连接到交换机的端口&#xff0c;交换机也通过以太网电缆连接到路由器。但是如果距离过远&#xff0c;比如跨国路由器如何连接&#xff1f; 1.专用通信线路&#xff08;如 MPLS、光纤专线&#xff09;&#xff1a;租用…...

Rust vs. Go: 性能测试(2025)

本内容是对知名性能评测博主 Anton Putra Rust vs. Go (Golang): Performance 2025 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。 再次对比 Rust 和 Go&#xff0c;但这次我们使用的是最具性能优势的 HTTP 服务器库---Hyper&#xff0c;它基于 Tokio 异步运…...

如何使用postman调用多参数接口(包含文件上传)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 如何使用postman调用包含文件参数的多参数接…...

无人机助力道路智能养护,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建无人机航拍道路交通场景下水泥路面缺陷智能检测识别系统

道路养护是保障交通命脉安全的隐形防线&#xff0c;其重要性不亚于道路建设本身。我国每年因道路病害引发的交通事故占比高达12%&#xff0c;及时修复1平方米的早期裂缝可避免后续数万元的修复成本。在这场与道路病害赛跑的战役中&#xff0c;传统养护模式正遭遇前所未有的挑战…...

28_跨域

目录 promise promise的基本语法 async await try catch promise 静态方法 跨域 跨域的解决方案 1-cors ​编辑 2-jsonp方案 3-代理服务器 promise promise 是一个es6新增的语法 承诺的意思 作用:是专门用来解决回调地狱!!!! promise的基本语法 // 基本语法:// Pr…...

【C#.NET】VS2022创建Web API项目

C# Web API 是一种基于 .NET 平台&#xff08;包括但不限于.NET Framework 和 .NET Core&#xff09;构建 HTTP 服务的框架&#xff0c;用于创建 RESTful Web 服务。REST&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;它利用HTTP协议…...

注意力蒸馏技术

文章目录 摘要abstract论文摘要简介方法预备知识注意力蒸馏损失注意力引导采样 实验结论总结参考文献 摘要 本周阅读了一篇25年二月份发表于CVPR 的论文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,论文开发了Attention Distillation…...

Day17 -实例:利用不同语言不同框架的特征 进行识别

前置&#xff1a;我们所需的web站点&#xff0c;都可以利用fofa去搜索&#xff0c;例如&#xff1a;app"flask"这样的语句去找对应的站点&#xff0c;找到后&#xff0c;我们模拟不知道是什么框架&#xff0c;再根据特征去判断它的框架。 ***利用工具可以再去结合大…...

Centos7 安装 TDengine

Centos7 安装 TDengine 1、简介 官网&#xff1a; https://www.taosdata.com TDengine 是一款开源、高性能、云原生的时序数据库&#xff08;Time Series Database, TSDB&#xff09;, 它专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。同时它还带有内建的缓…...

DeepSeek调用API访问,使用AnythingLLM建立本地知识库后开放API调用,ApiFox/PostMan调用本地DeepSeek

上篇文章中我们使用AnythingLLM成功在本地部署了DeepSeek的本地知识库&#xff0c;并且上传了几个文件让DeepSeek学习&#xff0c;可点击查看&#xff1a; 本地部署DeepSeek并使用AnythingLLM建立本地知识库全流程&#xff0c;DeepSeek-R1:7b本地安装部署,DeepSeek-R1本地部署…...

SQL语句---DDL

文章目录 1、SQL语句2、DDL2.1 数据库的操作显示当前的数据库创建数据库指定编码删除数据库切换当前数据库 2.2 数据表的操作显示表创建表显示表结构修改表添加新的字段删除原有字段 修改原有字段删除数据表 2.3 Mysql数据库中常用的数据类型 1、SQL语句 结构化查询语句&#…...

Java实战:实现用户的登录注册功能

系列文章目录 Java文件 I/O流的操作实战和高级UI组件和事件监听的综合 文章目录 系列文章目录前言一、大致流程思路分析&#xff1a;二、定义用户类&#xff1a;三、服务层的实现&#xff1a; 1.保护用户数据功能的实现2.登录操作的实现 四、实现用户的注册界面&#xff1a; 大…...

用LLama factory时报类似Process 2504721 got signal: 1的解决方法

之前用nohup来远程跑LLama factory微调脚本&#xff0c;是没有问题的&#xff0c;但今天发现运行类似下面这个命令时&#xff0c; nohup llamafactory-cli train examples/train_qlora/qwen_lora.yaml 只要一关闭ssh session&#xff0c;就会终止训练&#xff0c;报类似&…...

WPF ContentTemplate

ContentTemplate 是一个非常重要的属性&#xff0c;用于定义 ContentPresenter 中内容的显示样式。通过设置 ContentTemplate&#xff0c;你可以控制 ContentPresenter 如何呈现其绑定的内容。 下面是对 ContentTemplate 的详细解释以及它的作用和用法。 1. ContentTemplate 的…...