C++学习之udp通信
1.UDP特点
```c
/*
udp 传输层协议, 和tcp是一样的
特点:
面向无连接的, 不安全的, 报式传输协议
1. 无连接: udp通信的时候不需要connect
1). 通信不需要建立连接
2). 如果想给对方发送数据, 只需要指定对方的IP和端口
2. udp会丢包
1). 数据丢失了就没有了, 没有数据校验机制
2). udp不会丢失一部分数据, 丢就是全丢, 不丢就是一点不不丢
3. 报式:
发送端发送多少数据, 接收端接收多少数据
*/
```
2.UDP通信流程
3.sendto和recvfrom函数
- 服务器端
```c
// 1. 创建一个通信的套接字
int cfd = socket(AF_INET, SOCK_DGRAM, 0); // 通信使用udp
// 2. 通信的套接字和本地的IP和端口绑定
// 绑定的目的: 程序启动之后不主动发送数据, 先接收数据, 就需要绑定端口
// 如果不手动绑定端口, 就会自动绑定端口, 主动发送数据, 可以自动绑定端口
struct sockaddr_in addr;
bind(cfd, (struct sockaddr*)&addr, sizeof(addr));
// 3. 通信
接收数据: recvfrom();
发送数据: sendto();
// 4. 关闭通信的文件描述符
close();
4.知识点概述
- 客户端
```c
// 1. 创建一个通信的套接字
int cfd = socket(AF_INET, SOCK_DGRAM, 0); // 通信使用udp
// 2. 通信的套接字和本地的IP和端口绑定
// 绑定的目的: 程序启动之后不主动发送数据, 先接收数据, 就需要绑定端口
// 如果不手动绑定端口, 就会自动绑定端口
struct sockaddr_in addr;
bind(cfd, (struct sockaddr*)&addr, sizeof(addr));
// 3. 通信
接收数据: recvfrom();
发送数据: sendto();
// 4. 关闭通信的文件描述符
close();
```
5.全局变量errno的值对应的头文件定义
- 操作函数
```c
// 接收数据
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
参数:
- sockfd: 通信的文件描述符
- buf: 指向一块有效内存地址, 存储接收的数据
- len: 参数buf指向的内存大小
- flags: 使用默认属性, 指定为0即可
- src_addr: 传出参数, 保存发送端的地址信息(IP和端口) -> 大端(网络字节序)
- 对发送端的地址不感兴趣, 可以指定为NULL
- addrlen: 传入传出参数, 类似于accept()最后一个参数
- src_addr为NULL, 该参数也指定为NULL即可
6.udp通信流程
// 发送数据函数
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
参数:
- sockfd: 通信的文件描述符
- buf: 指向一块有效内存地址, 内存中存储了待发送的数据
- len: 参数buf指向的内存中待发送的数据长度
- flags: 使用默认属性, 指定为0即可
- dest_addr: 传入参数, 保存接收端的地址信息(IP和端口) -> 大端(网络字节序)
- addrlen: 传入参数, dest_addr参数指向的内存大小
返回值:
>0: 发送的字节数
-1: 失败
7.udp服务器程序代码
> UDP: 面向无连接的, 不安全(会丢失数据)的, 报文传输
>
> 应用场景:
>
> - 数据容易丢, 用在对数据没有那么敏感的场景下
> - 用户名密码 -> 不行
> - 文件传输 -> 不行
> - 语言通信 -> 可以
> - 视频聊天, 视频会议 -> 可以
> - 屏幕共享 -> 可以
> - 效率高
> - 不需要建立连接
> - 数据校验机制
> - 一般用于局域网, 数据丢包比较少, 广域网, 网络环境不好容易丢包
> - qq处理文件传输使用的是tcp, 其他都是udp
> - 比较大的公司, 有一个人力和财力, 会在应用层对udp通信的数据包进行校验
> - 应用层 -> 检验udp数据, 让udp类似于tcp, 但是效率高
> - 传输层 -> udp
> - 网络层
> - 网络接口层
>
> udp的两个特性: (tcp没有)
>
> - 广播
> - 组播(多播)
8.udp客户端代码
操作函数
```c
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
// 接收和发送数据的函数默认是阻塞的
// 接收数据
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
参数:
- sockfd: 通信的文件描述符
- buf: 接收数据的缓冲区(数组地址)
- len: buf的容量
- flags: 写0, 使用默认属性
- src_addr: 发送数据的那一方地址信息: IP, Port, 地址族协议 -> 传出参数
- addrlen: 传入传出参数, src_addr 对应的内存大小
// 发送数据
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
9.udp通信测试
参数:
- sockfd: 通信的文件描述符
- buf: 存储了要发送到数据
- len: 要发送的数据的长度 -> 通过strlen() 计算
- flags: 写0, 使用默认属性
- dest_addr: 接收数据的一方的地址信息
- addrlen: 传入, dest_addr对应的内存大小
```
- 通信流程
- 服务器
```c
// 1. 创建通信的套接字
int fd = socket(af_inet, sock_dgram, 0);
// 1.5 如果服务器只接受数据, 需要绑定端口
bind();
// 2. 通信
recvfrom();
sendto();
// 3. 关闭套接字
close();
```
10.udp的应用场景
- 客户端
```c
// 1. 创建通信的套接字
int fd = socket(af_inet, sock_dgram, 0);
// 1.5 如果客户端是主动发送发送数据, 绑定端口可以不写(随机绑定)
// bind();
// 2. 通信
sendto();
recvfrom();
// 3. 关闭套接字
close();
```
11.广播的特点
> 向子网中多台计算机发送消息,并且子网中所有的计算机都可以接收到发送方发送的消息,每个广播消息都包含一个特殊的IP地址,这个IP中子网内主机标志部分的二进制全部为1 (最后一部分是255)。
>
> - 由一个udp的程序, 通过这个程序发送消息, 可以有多个接收端同时收到消息
> - 广播是一对多, 1:N
> - 广播的数据要发送到广播地址上
> - 如果是1对1发送, 使用的地址是这个接收端使用的实际IP地址
> - 广播需要使用一个特殊的广播地址
> - 192.168.x.255
> - x -> 代表的是一个网段
> - 点分十进制的最后一部分(最后一个字节)
> - 取值范围: 0-255, 代表这个网段最多支持多少台计算机
> - 只能在局域网里边使用, 广域网是不支持的
> - 只要在局域网访问内, 并且这个终端绑定了广播端口, 那么就一定能收到广播消息
> - 无法拒绝, 除非把接收端关闭了
>
12.广播的流程
13.设置广播属性试用setsockopt
设置广播属性
```c
// 广播属性设置
int setsockopt(int sockfd, int level, int optname,
const void *optval, socklen_t optlen);
参数:
- sockfd: 通信的套接字
- level: SOL_SOCKET
- optname: SO_BROADCAST
- optval: int
- 1: 允许广播
- 0: 不允许广播
- optlen: sizeof(int);
```
14.广播代码修改
```c
// 1. 创建通信的套接字
int fd = socket(af_inet, sock_dgram, 0);
// 2, 被动接收数据, 需要手动绑定端口 (广播数据发送到哪个端口, 就绑定哪个端口)
bind();
// 3. 接收数据
recvfrom();
// 4. 关闭套接字
close();
```
15.组播特点
- 广播特点:
```c
1. 广播发送端的开销很小, 只是使用了广播地址, 数据就可以发送到多个接收终端上
2. 只能在局域网范围内使用
3. 发送广播的一端必须要设置广播属性, 广播的消息发送到广播地址上
```
- 代码
- 发送端
```c
```
- 接收端
```c
```
16.上午广播bug的修改
- 广播特点:
```c
1. 广播发送端的开销很小, 只是使用了广播地址, 数据就可以发送到多个接收终端上
2. 只能在局域网范围内使用
3. 发送广播的一端必须要设置广播属性, 广播的消息发送到广播地址上
```
- 代码
- 发送端
```c
```
- 接收端
```c
```
17.广播特点总结
18.组播地址
> Server给局域网的交换机发送数据,无论连接到局域网的客户端想不想接收该数据,Server都会给客户端发送该数据。—>进而造成客户端上数据的拥塞—>因此引出了多播(组播):Server可以将数据包只发送给指定组内的客户端,而不发送给指定组外的客户端。
>
> - 可以在广域网中使用
> - 使用组播发送数据也是 1:N
> - 数据发送端 1个
> - 数据不是一次发送到接收端对应的地址上, 而是发送到组播地址上
> - 数据接收端 N 个
> - 加入到组播地址, 就可以接收消息
> - 广播消息在局域网中是没有办法被拒绝的, 如果不想收到发送的消息, 可以使用组播
> - 原理:
> - 需要在发送端创建一个群, 如果想要接收发送的消息, 需要加入到这个群中
> - 如果不加入这个群就无法收到发送的消息了
> - 基于这个原理可以实现的功能: 远程会议(数据需要在Internet中传输)
> - 组播需要使用组播地址
> - 发送消息的人, 需要将消息发送到组播地址上
> - 接收消息的人, 需要加入到组播地址
> - 组播属性需要手动设置
> - setsockopt
> - 加入到组播地址
> - setsockopt
19.组播的通信流程
20.通过setsockupt设置组播属性和加入到多播组
21.组播代码修改
组播地址
> IP 多播通信必须依赖于 IP 多播地址,在 IPv4 中它的范围从 `224.0.0.0` 到 `239.255.255.255`,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类:
| IP地址 | 说明 |
| :-----------------------: | :----------------------------------------------------------: |
| 224.0.0.0~224.0.0.255 | 局部链接多播地址:是为路由协议和其它用途保留的地址,只能用于局域网中,路由器是不会转发的地址 224.0.0.0不能用,是保留地址 |
| 224.0.1.0~224.0.1.255 | 为用户可用的组播地址(临时组地址),可以用于 Internet 上的。 |
| 224.0.2.0~238.255.255.255 | 用户可用的组播地址(临时组地址),全网范围内有效 |
| 239.0.0.0~239.255.255.255 | 为本地管理组播地址,仅在特定的本地范围内有效 |
22.组播代码的测试
```c
// 1. 创建通信的套接字
int fd = socket(af_inet, sock_dgram, 0);
// 2. 因为是主动发送数据, 因此不需要手动绑定端口(随机自动绑定即可)
// 需要设置组播的属性, 通过setsockopt() 函数 -> 不设置不能组播
setsockopt();
// 3. 初始化接收端的地址信息
// IP地址: 组播地址 -> 239.0.0.10 (可以用于局域网组播)
// port: 接收组播的一端绑定的固定端口(被动接收数据的一方需要手动绑定端口)
sendto();
// 4. 关闭套接字
close();
```
- 设置组播属性
```c
int setsockopt(int sockfd, int level, int optname,
const void *optval, socklen_t optlen);
参数:
- sockfd: 通信的文件描述符
- level: IPPROTO_IP
- optname: IP_MULTICAST_IF
- optval: struct in_addr{}; 里边记录是组播地址
- optlen: sizeof(struct in_addr) ==> 4字节
23.组播特点总结
```c
// 1. 创建通信的套接字
int fd = socket(af_inet, sock_dgram, 0);
// 2, 被动接收数据, 需要手动绑定端口 (组播数据发送到哪个端口, 就绑定哪个端口)
bind();
// 3. 加入到组播地址(群中) -> 加入到多播组
setsockopt();
// 4. 接收数据
recvfrom();
// 5. 关闭套接字
close();
```
- 加入到组播地址
```c
typedef unsigned int uint32_t;
typedef uint32_t in_addr_t;
struct in_addr
{
in_addr_t s_addr;
};
struct ip_mreqn
{
struct in_addr imr_multiaddr; // 组播地址/多播地址
struct in_addr imr_address; // 本地地址
int imr_ifindex; // 网卡的编号, 每个网卡都有一个编号
};
// 通过网卡的名字得到网卡的编号:
#include <net/if.h>
unsigned int if_nametoindex(const char *ifname);
- 通过 ifconfig 命令可以看到网卡的名字, 在能查看IP地址的数据块前的名字就网卡名字
相关文章:
C++学习之udp通信
1.UDP特点 c /* udp 传输层协议, 和tcp是一样的 特点: 面向无连接的, 不安全的, 报式传输协议 1. 无连接: udp通信的时候不需要connect 1). 通信不需要建立连接 2). 如果想给对方发送数据, 只需要指定对方的IP和端口 2. udp会丢包 1). 数…...
2020年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析
2020年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激励学生学习数学的积极性,提高学…...
【数据标准】数据标准化实施流程与方法-保障机制篇
导读:1、数据标准化保障机制(组织架构、协作流程)是战略落地的基石,确保责权分明与资源协同;2、数据标准化制度建设(政策、标准、工具)构建了统一治理框架,规范数据…...
ZLMediaKit部署与配置
ZLMediaKit编译 # 安装编译器 sudo apt install build-essential cmake# 其它依赖库 sudo apt-get install libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git cd /usr/local/srcgit clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git cd ZLMediaKit# …...
38、web前端开发之Vue3保姆教程(二)
三、Vue3语法详解 1、组件 1 什么是组件? 组件是 Vue.js 中最重要的概念之一。它是一种可复用的 Vue 实例,允许我们将 UI 拆分为独立的、可复用的部分。组件可以提高代码的组织性和可维护性。 2 创建组件 在 Vue 3 中,组件通常使用单文件组件(SFC)编写,其包含三个主…...
知识中台如何重构企业信息生态?关键要素解析
在信息化快速发展的时代,企业面临着如何高效整合和管理知识资源的挑战。知识中台作为企业信息管理的核心工具,正在帮助企业提升运营效率和创新力。本文将探讨知识中台如何重构企业信息生态,并解析其关键要素。 一、什么是知识中台?…...
蓝桥杯python组备赛(记录个人模板)
文章目录 栈队列堆递归装饰器并查集树状数组线段树最近公共祖先LCAST表字典树KMPmanacher跳表(代替C STL的set)dijkstra总结 栈 用list代替 队列 用deque双端队列替代 堆 用heapq 递归装饰器 众所周知,python的递归深度只有1000,根本满足不了大部…...
C++的多态 - 下
目录 多态的原理 虚函数表 1.计算包含虚函数类的大小 2.虚函数表介绍 多态底层原理 1.父类引用调用 2.父类指针调用 3.动态绑定与静态绑定 单继承和多继承关系的虚函数表 函数指针 1.函数指针变量 (1)函数指针变量创建 (2)函数指针变量的使用 (3)两段有趣的代码 …...
XSS(跨站脚本攻击)
什么是 XSS 攻击? XSS 攻击(Cross-Site Scripting)是一种常见的网络攻击手段,攻击者通过在网站上注入恶意的 JavaScript 代码,让网站在用户的浏览器中执行这些恶意代码,进而达到 窃取信息、篡改网页内容 或…...
LLM Agents的历史、现状与未来趋势
引言 大型语言模型(Large Language Model, LLM)近年在人工智能领域掀起革命,它们具备了出色的语言理解与生成能力。然而,单纯的LLM更像是被动的“回答者”,只能根据输入给出回复。为了让LLM真正“行动”起来ÿ…...
最简rnn_lstm模型python源码
1.源码 GitCode - 全球开发者的开源社区,开源代码托管平台 不到120行代码,参考了《深度学习与交通大数据实战》3.2节。注意这本书只能在京东等在线商城网购,才能拿到相应的数据集和源码。我的是在当地新华书店买的——买清华出版社,记得这个…...
基于Android的图书借阅和占座系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 基于Android的图书借阅和占座系统设计的目的是为用户提供图书信息、图书馆、图书资讯等内容,用户可以进行图书借阅、预约选座等操作。 与PC端应用程序相比,图书借阅和占座系统的设计主要面向于广大用户,旨在为用户提供一个图书借阅及占…...
vue3+element-plus动态与静态表格数据渲染
一、表格组件: <template> <el-table ref"myTable" :data"tableData" :header-cell-style"headerCellStyle" header-row-class-name"my-table-header" cell-class-name"my-td-cell" :row-style"r…...
数据库50个练习
数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname 教师姓名 --4.成绩…...
Open CASCADE学习|读取点集拟合样条曲线(续)
问题 上一篇文章已经实现了样条曲线拟合,但是仍存在问题,Tolerance过大拟合成直线了,Tolerance过大头尾波浪形。 正确改进方案 1️⃣ 核心参数优化 通过调整以下参数控制曲线平滑度: Standard_Integer DegMin 3; // 最低阶…...
HTML基础教程:创建双十一购物狂欢节网页
页面概况: 在这篇技术博客中,我将详细讲解如何使用HTML基础标签创建一个简单而美观的双十一购物狂欢节主题网页。我们将逐步分析代码结构,了解每个HTML元素的作用,以及如何通过HTML属性控制页面布局和样式。 页面整体结构 首先&…...
ES6 新增特性 箭头函数
简述: ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语…...
【C++算法】49.分治_归并_计算右侧小于当前元素的个数
文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: 315. 计算右侧小于当前元素的个数 题目描述: 解法 归并排序(分治) 当前元素的后面,有多少个比我小。(降序&…...
Multi-class N-pair Loss论文理解
一、N-pair loss 对比 Triplet loss 对于N-pair loss来说,当N2时,与triplet loss是很相似的。对anchor-positive pair,都只有一个negative sample。而且,N-pair loss(N2时)为triplet loss的平滑近似Softpl…...
uniapp微信小程序地图marker自定义气泡 customCallout偶尔显示不全解决办法
这个天坑问题,在微信开发工具上是不会显示出来的,只有在真机上才会偶尔出现随机样式偏移/裁剪/宽长偏移,询问社区也只是让你提交代码片段,并无解决办法。 一开始我怀疑是地图组件加载出现了问题,于是给地图加了一个v-if"reL…...
蓝桥杯嵌入式总结
1.lcd显示和led引脚冲突 在lcd使用到的函数中加入两行代码 uint16_t temp GPIOC->ODR; GPIOC->ODR temp; 2.关于PA15,PB4pwm波输入捕获 首先pwm输入捕获中断 使用 HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1); 再在输入捕获中断回调函数中使用 void HAL…...
C#的反射机制
C#反射机制详解 什么是反射? 反射(Reflection)是C#中的一项强大功能,它允许程序在运行时动态获取类型信息、访问和操作对象成员。简单来说,反射使程序可以在不预先知道类型的情况下,查看、使用和修改程序集中的代码。 常见反射…...
Java并发编程高频面试题
一、基础概念 1. 并行与并发的区别? 并行:多个任务在多个CPU核心上同时执行(物理上同时)。并发:多个任务在单CPU核心上交替执行(逻辑上同时)。类比:并行是多个窗口同时服务&#x…...
Invalid bound statement (not found)
前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...
【Vue-路由】学习笔记
目录 <<回到导览路由1.单页应用和多页面2.路由基本使用2.1.路由的含义2.2.VueRouter插件2.3.配置路由规则和导航2.4.组件目录存放2.5.路由模块封装 3.rounter3.1.router-link实现高亮3.2.自定义匹配类名3.3.声明式导航3.3.1.查询参数传参3.3.2.动态路由传参3.3.3.总结 3.…...
前端服务配置详解:从入门到实战
前端服务配置详解:从入门到实战 一、环境配置文件(.env) 1.1 基础结构 在项目根目录创建 .env 文件: # 开发环境 VUE_APP_API_BASE_URL http://localhost:3000/api VUE_APP_VERSION 1.0.0# 生产环境(.env.produc…...
Java安全管理器 - SecurityManager
什么是Java安全管理器? Java安全管理器是Java提供的保护JVM和程序安全的机制,它能限制用户的代码对文件、内存、资源、网络的操作和访问,防止恶意代码入侵程序。常用来控制用户提交的代码对各种资源的访问权限,防止用户恶意提交代…...
Arrays操作工具 Lambda表达式 集合 迭代器 数据结构 泛型 set集合 list集合
Arrays操作工具 自己定义的排序规则 简单理解如果是:o1 - o2 升序排列 o2 - o1 降序排列 Lambda表达式 函数式编程 函数式编程(Functional programming)是一种思想特点。 面向对象:先去找对象,让对象做事情。。函数式…...
ORM、Mybatis和Hibernate、Mybatis使用教程、parameterType、resultType、级联查询案例、resultMap映射
DAY21.1 Java核心基础 ORM Object Relationship Mapping 对象关系映射 面向对象的程序到—关系型数据库的映射 比如java – MySQL的映射 ORM框架就是实现这个映射的框架 Hibernate、Mybatis、MybatisPlus、Spring Data JPA、Spring JDBC Spring Data JPA的底层就是Hiber…...
《Java八股文の文艺复兴》第十一篇:量子永生架构——对象池的混沌边缘(终极试炼·完全体)
Tags: - Java高并发 - 量子架构 - 混沌工程 - 赛博修真 - 三体防御 目录: 卷首语:蝴蝶振翅引发的量子海啸 第一章:混沌初开——对象池的量子涅槃(深度扩展) 第二章:混沌计算——对象复活的降维打击&…...
蓝桥杯备赛---真题训练之15届蓝桥杯找回连接之旅
题目 介绍 在网络世界中,突然间失去了所有的连接。作为勇敢的冒险者,你将踏上一段惊险刺激的旅程,穿越充满谜题和挑战的网络景观,与神秘的网络幽灵对抗,解开断网之谜,找回失去的连接,带领人们重…...
PowerApps MDA-模版-文档模版无法下载和上传Word模版
Power Apps的高级设置-模版中,文档模版目前只能看到新建和上传Excel模版,看不到Word模版 这是一个已知bug, 什么时候能修复不好说,解决办法也很简单,先上传一个Excel模版,随便任何一个实体就行,为的是视图列…...
全国大学生数学建模竞赛赛题深度分析报告(2010-2024)
全国大学生数学建模竞赛赛题深度分析报告(2010-2024) 全国大学生数学建模竞赛(CUMCM)是中国最具影响力的大学生科技竞赛之一,本报告将对2010-2024年间的赛题进行全面统计分析,包括题目类型、领域分布、模型方法等多个维度&#x…...
职坐标解析自动驾驶技术发展新趋势
内容概要 作为智能交通革命的核心驱动力,自动驾驶技术正以惊人的速度重塑出行生态。2023年,行业在多传感器融合与AI算法优化两大领域实现突破性进展:激光雷达、摄像头与毫米波雷达的协同精度提升至厘米级,而深度学习模型的实时决…...
快速入手-前后端分离Python权限系统 基于Django5+DRF+Vue3.2+Element Plus+Jwt
引用:打造前后端分离Python权限系统 基于Django5DRFVue3.2Element PlusJwt 视频教程 (火爆连载更新中..)_哔哩哔哩_bibili 说明:1、结合个人DRF基础和该视频去根据自己的项目进行开发。 2、引用该视频中作者的思路去升华自身的项…...
HTTP 协议详解
HTTP 协议 HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于在客户端(如浏览器)和服务器之间传输超文本(如网页)。 HTTP 是万维网ÿ…...
巧记英语四级单词 Unit1-4【晓艳老师版】
tain—take拿着、sus 下面,只有sur表示上面、ob表示方向、de往下,分开 retain v.保持 re-重复,tain—take拿着,重复的拿着maintain v. 维持,维修,保养 main主要的,主要的东西都拿着的那个人维…...
Transformers without Normalization论文翻译
论文信息: 作者:Jiachen Zhu, Xinlei Chen, Kaiming He, Yann LeCun, Zhuang Liu 论文地址:arxiv.org/pdf/2503.10622 代码仓库:jiachenzhu/DyT: Code release for DynamicTanh (DyT) 摘要 归一化层在现代神经网络中无处不在…...
Ollama
目录 定义与核心功能应用场景Ollama与Llama的关系安装与使用 Ollama是一个开源的本地大语言模型(LLM)运行框架,专为在本地机器上便捷部署和运行大型语言模型而设计。以下是关于Ollama的全面介绍: 定义与核心功能 多种预训练语言模…...
社交app圈子模块0到1实现
一、逻辑分析 用户相关 用户需要能够创建圈子,这涉及到用户身份验证,确保只有注册用户可以进行创建操作。每个圈子有创建者,创建者对圈子有一定的管理权限,如设置圈子规则、邀请成员等。 圈子信息 圈子需要有名称、简介、头像等基…...
OpenCV--图像边缘检测
在计算机视觉和图像处理领域,边缘检测是极为关键的技术。边缘作为图像中像素值发生急剧变化的区域,承载了图像的重要结构信息,在物体识别、图像分割、目标跟踪等众多应用场景中发挥着核心作用。OpenCV 作为强大的计算机视觉库,提供…...
批量压缩 jpg/png 等格式照片|批量调整图片的宽高尺寸
图片格式种类非常的多,并且不同的图片由于像素、尺寸不一样,可能占用的空间也会不一样。文件太大会占用较多的磁盘空间,传输及上传系统都非常不方便,可能会收到限制,因此我们经常会碰到需要对图片进行压缩的需求。如何…...
[Linux系统编程]多线程
多线程 1. 线程1.1 线程的概念1.2 进程与线程对比1.3 轻量级进程 2. Linux线程控制2.1 POSIX 线程(pthread)2.2 线程ID、pthread_t、和进程地址空间的关系2.2.1 pthread_self2.2.2 pthread_create2.2.3 pthread_join2.2.4 线程终止的三种方式2.2.5 pthre…...
进程状态(运行 阻塞 僵尸)及其场景分析
【Linux学习笔记】Linux基本指令及其分析 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 前言 哈喽,各位小伙伴大家好!上期我们讲了进程PCB 今天我们讲的是进程状态(运行 阻塞 僵尸)及其场景分析。话不多说&#…...
程序化广告行业(67/89):DMP系统标签制作与人群拓展深度解析
程序化广告行业(67/89):DMP系统标签制作与人群拓展深度解析 大家好!在之前的分享中,我们对程序化广告的多个关键环节进行了探讨。今天,咱们继续深入了解程序化广告中的DMP系统,聚焦于标签制作和…...
【QT】QPixmap QImage QBitmap QPicture
文章目录 **1. QPixmap****特点****典型应用场景****示例** **2. QImage****特点****典型应用场景****示例** **3. QBitmap****特点****示例** **4. 三者的主要区别****5. 如何选择?****使用 QPixmap 的情况****使用 QImage 的情况****使用 QBitmap 的情况** **6. 相…...
如何开通google Free Tier长期免费云服务器(1C/1G)
Google宣布的一项政策,为标准层级的网络提供每地域200G的免费流量。两项政策结合,于是便可以得到一台1核心、1G内存、30G磁盘、200G流量的小云服务器,可玩性大大提高。这篇文章就分享一下如何正确开机,避免产生额外的费用。 免费…...
Kaggle房价预测
实战 Kaggle 比赛:预测房价 这里李沐老师讲的比较的细致,我根据提供的代码汇总了一下: import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import torch from matplotlib i…...
4.7学习总结 java集合进阶
集合进阶 泛型 //没有泛型的时候,集合如何存储数据 //结论: //如果我们没有给集合指定类型,默认认为所有的数据类型都是object类型 //此时可以往集合添加任意的数据类型。 //带来一个坏处:我们在获取数据的时候,无法使用他的特有行为。 //此…...
设计模式 - 代理模式Proxy
设计思想: 举个通俗的例子,你想找某局长帮你做一件事情,但局长官位显赫,你又不能轻易见着,你就想到了找他的秘书,通过她传话给局长,这样你就等于请他的秘书帮你办成了那件事。秘书为什么就可以…...