Eva开发文档1 ---------- libeva 类描述

告别SwinIR的‘笨重’:手把手教你用ELAN轻量级超分模型(附PyTorch复现要点) 本文详细介绍了ELAN轻量级超分模型如何替代SwinIR,在保持高精度的同时显著提升计算效率。通过Group-wise Multi-scale Attention和Accelerated Self-Attention等创新设计,ELAN-light模型在移动端和边缘设备上实现4.5倍速度提升。文章包含PyTorch复现要点、部署优化技巧及跨平台性能对比,为超分算法实践提供实用指南。 阅读详情

点击打开链接

Eva开发文档1 ---------- libeva 类描述
=============================

借鉴了 openq 和 lumaqq 的很多东西。

在包解析的思路上,基本遵循了 lumaqq 的方案, 类命名上,也基本按照 lumaqq 的类命名方式。 目前 libeva 还没有完全完工, 但是基本的框架是有了,为了方便大家扩展这个库,加入更多的功能,我现在写出一个 libeva 类的基本描述。

对于开发者而言,希望尽量按照目前的风格编写代码。 当然有什么建议,只管提好了。

libeva 类描述

libeva 类说明

libeva 是腾讯即使通讯协议的一个封装库, 包括对发送的数据的格式处理,加密
以及,对接受到的数据的解密和解析。

注:<- OutPacket 表示继承自, 其他类推

libeva 库目前包含以下文件:

evadefines.h 一些用到的全局变量



evapacket.cpp evapacket.h 所有发送和接收类的父类
包含以下类:
Packet 所有包解析的父类
OutPacket 所有发送包的父类 <- Packet
InPacket 所有接收包的父类 <- Packet



evaaddfriend.cpp evaaddfriend.h 添加,删除好友的处理
包含以下类:
AddFriendPacket 添加好友类 <- OutPacket
添加普通好友

AddFriendReplyPacket 添加好友回复类 <- InPacket
添加普通好友回复,可能是添加成功,需要验证或者拒绝

AddFriendAuthPacket 添加认证好友类 <- OutPacket
添加一个需要验证的好友,发出添加请求,通过好友的验证请求,以及拒绝请求

AddFriendAuthReplyPacket 添加认证好友回复类 <- InPacket
这个是发送请求或者拒绝请求的回复, 成功表示服务器接受成功,可以等待好友回复了。
至于好友是否同意,那是系统提示类(SystemNotificationPacket)通知你的

DeleteFriendPacket 删除好友类 <- OutPacket
删除一个自己列表里的好友

DeleteFriendReplyPacket 删除好友回复类 <- InPacket
返回删除成功,或者失败

DeleteMePacket 删除自己类 <- OutPacket
从好友的好友列表中删除自己, 大概就是“黑名单”的意思了

DeleteMeReplyPacket 删除自己回复类 <- InPacket
这个是删除自己的回复,成功或者失败

SystemNotificationPacket 系统提示类 <- InPacket
这个是当有人加你成功,请求验证,拒绝你的请求还有部分广告都
是通过这个包来通知你的



evafriend.cpp evafriend.h 好友列表的解析和发送
包含以下类:

FriendItem 一个好友项
包括好友的:qq号,头像,年龄, 性别, 昵称, 一些想是否有QQShow,摄像头
等等的标致

GetFriendListPacket 获取好友列表请求 <- OutPacket
一个请求下载好友列表的类

GetFriendListReplyPacket 获取好友列表请求回复 <- InPacket
这个回复里含若干个好友项(FriendItem), 包装成了一个
std::list<FriendItem> 结构。



evafriendlist.cpp evafriendlist.h 好友列表的统一处理类
包含以下类:
QQFriend 封装了一个好友所有有关信息的类
包括在哪个组(注意这里只放了组的索引号),IP地址,端口号,在线状态什么的,很多信息
FriendList 一个好友列表的封装
用户可以通过这个类来对好友及全部列表进行操作。



evagroup.cpp evagroup.h 好友分组的下载,上传
包含以下类:
GroupNameOpPacket 上传和下载好友列表名的请求类 <- OutPacket

GroupNameOpReplyPacket 上传和下载好友列表名请求的回复类 <- InPacket
注意,这里的回复组名不包括第一个默认的“我的好友”组名

DownloadFriendEntry 一个好友分组的解析封装类
包括好友QQ号码, 好友类型(是否是群), 好友的分组索引号,这个
索引号对应下载的组名的次序,注意的是0是默认的“我的好友”,下载的
组名是从索引号1开始的

DownloadGroupFriendPacket 下载好友分组信息的类 <- OutPacket
一个下载好友分组的请求

DownloadGroupFriendReplyPacket 下载好友分组信息的回复类 <- InPacekt
把好友分组放入了一个std::list<DownloadFriendEntry> 结构中



evaimreceive.cpp evaimreceive.h 接收好友发送信息的类
包含以下类:
ReceiveIMPacket 一个初步解析好友发来的信息的类 <- InPacket
这个类会解析出发送者的QQ号,接收者的QQ号, 聊天的序列号,
发送者的IP, 发送者的端口,以及发送的类型,比如系统消息,一般
文本聊天消息,群聊天的文本消息
注意,消息的内容这个类不做处理,提供了原始数据,供相应
的类来处理

ReceivedSystemIM 系统消息类
从ReceiveIMPacket得到原始数据,解析系统消息,比如你的号码在
其他地方登录,你被迫下线等等

NormalIMBase 一个一般消息的父类
从ReceiveIMPacket得到原始数据,解析一般消息, 得到一般消息的类型,
但是不具体解析内容,包括:发送者的客户端版本, 发送者QQ号,接受者QQ号,
文件密钥,消息类型(文本消息还是发送文件相关的请求),消息序列号,发送时间,
发送者头像,等等注意,这个类一样事实上就是判断一下类型,然后
交由其他继承这个类的类来统一解析

ReceivedNormalIM 文本消息的解析类 <- NormalIMBase
从NormalIMBase得到原始数据,解析一般文本消息内容。
包括:是否是自动回复消息, 消息的GB编码的内容, 字体属性
注意,这里已经把消息中含有的系统表情转换为文本描述了

ReceiveIMReplyPacket 一个好友发送信息的回复类 <- OutPacket
就是ReceiveIMPacket原始包的前16个字节



evaimsend.cpp evaimsend.h 处理发送消息的类
包含以下类:
SendIM 所有发送类的父类 <- OutPacket
SendTextIMPacket 文本消息发送类 <- SendIM
负责,填充文本消息的格式,包括,字体,字号,颜色信息,
是否自动回复,消息内容
SendIMReplyPacket 发送消息的回复类 <- InPacket
服务器发回的,来通知是否发送成功的包



evalogin.cpp evalogin.h 用来处理登录,登出,和在线操作的类
包含以下类:
LoginPacket 登录类 <- OutPacket
发出一个登录请求

LoginReplyPacket 登录回复类 <- InPacket
收到服务器登录请求回复,回复信息包括
登录成功,服务器转向, 密码错误等等

LogoutPacket 登出的类 <- OutPacket
登出自己。 服务器不会回复这个包

KeepAlivePacket 保持在线类 <- OutPacket
发出保持在线包,每隔一定时间需要发这样一个包

KeepAliveReplyPacket 保持在线回复类 <- InPacket
里面含有自己的IP,端口,以及当前腾讯服务器
总登录人数



evaonlinestatus.cpp evaonlinestatus.h 获得在线好友和改变在线状态的类
包含以下类:
FriendOnlineEntry 解析一个在线用户的信息的类

GetOnlineFriendsPacket 请求在线用户列表类 <- OutPacket

GetOnlineFriendReplyPacket 请求在线用户列表回复类 <- InPacket
这个类里含有一个std::list<FriendOnlineEntry>结构来存储
解析后的列表

FriendChangeStatusPacket 好友更改状态类 <- InPacket
当你的一个好友更改了状态(登录,登出,上线,隐身,离开,下线)时,
都会收到这个包。 注意的是,如果是隐身登录,好友的状态的类型是
“下线”, 隐身也一样。

ChangeStatusPacket 更改自己状态的类 <- OutPacket
包括4中状态(上线,隐身,离开,下线),注意下线的效果和登出是
一样的, 但是下线服务器会返回一个是否成功的包。

ChangeStatusReplyPacket 更改自己状态的回复类 <- InPacket
返回成功,或者失败



evauserinfo.cpp evauserinfo.h 处理用户资料的类
包含以下类:
ContactInfo 用户资料的封装类

GetUserInfoPacket 获取用户资料的请求类 <- OutPacket

GetUserInfoReplyPacket 获取用户资料的请求回复类 <- InPacket
调用ContactInfo来解析好友资料

ModifyInfoPacket 更改个人资料类 <- OutPacket

ModifyInfoReplyPacket 更改个人资料回复类 <- InPacket
更改成功或者失败

evautil.cpp evautil.h 一些 libeva 用到的算法等
包含以下类:
EvaUtil 提供了md5,两次md5,表情码和文本描述,及文件索引号的转换



libeva.h 一个 libeva 头文件的封装
用户只要 include 这个头文件就可以了



md5.c md5.h 做MD5处理的c源文件
取自 Gaim, 作者:L. Peter Deutsch  ghost@aladdin.com
版权信息参见改文件



qq_crypt.c qq_crypt.h 处理 qq 加密,解密的源文件
数据结构java课后习题答案 (1)以关键字序列(tim,kay,eva,roy,dot,jon,kim,ann,tom,jim,guy,amy)为例,手工执行以下排序算法 (按字典序比较关键字的大小),写出每一趟排序结束时的关键字状态: 1)直接插入排序; 2)冒泡排序; 3)直接选择排序; 4)快速排序; 5)归并排序; 6)基数排序。 立即下载

相关推荐

java 第一章的课后作业

Java中的所有作业答案,分为理论部分和上机部分

如何为AI智能体构建长期记忆:Cognee开源平台完全指南

在当今AI应用快速发展的时代,智能体面临着一个关键挑战:如何在不同会话之间保持连续的记忆?Cognee正是为解决这一核心问题而生的开源AI记忆平台。它通过自托管的知识图谱引擎,为AI智能体提供持久化的长期记忆能力,让智能体能够像人类一样记住、连接并基于历史信息进行推理。 无论您是构建客户服务机器人、代码助手,还是需要处理复杂数据的AI应用,Cognee都能帮助您统一多源数据,构建智能体的"公司大

gitblog_00256的博客 415

算法数据结构及课后习题答案

算法数据结构及课后习题答案,非常全面,都是本人上课收集老师的

有关libeva的使用说明 - 登录和登出操作

点击打开链接 有关libeva的使用说明 - 登录和登出操作 首先,需要简单说一下腾讯QQ2005beta1的登录过程。 第一步。向服务器索要登录令牌, 对应的libeva的封装类为RequestLoginTokenPacket 第二步。得到登录令牌后, 则尝试登录一个腾讯服务器。 登录包的对应封装为 LoginPacket 第三步。如果服务器返回的是, 登录回应...

weixin_34365635的博客 124

爱德万新推出结合数字与模拟测试功能的测量系统EVA100

导读:这套测量系统可应用于少接脚数的模拟、混合信号与传感器半导体测量。   5月27日, 知名半导体测试设备供应商爱德万测试有限公司新推出结合数字与模拟测试功能的测量系统EVA100,这套革新的测试平台可应用于少接脚数的模拟、混合信号与传感器半导体测量,带来附加价值。EVA100支持多种元件测试功能的全新测试解决方案,从工程研发到量产阶段皆可应用。   EVA100采用架构设计,提升了其多种测量的灵活性。操作界面简单直观,用户不必具备编程能力即可操作,帮助客户更快将IC元件推向市场。   EVA100在工程研发与量产阶段皆可适用,能同时控制多种测试,可提高测量性、改善测试效率。整合了模拟

数据结构:java语言 第一章

第一章课件,英语原版,希望大家喜欢,会继续传以下的章节

Serial digital interface

https://en.wikipedia.org/wiki/Serial_digital_interface Data format In SD and ED applications, the serial data format is defined to 10 bits wide, whereas in HD applications, it is 20 bits wide, divide...

hbcbgcx的博客 721

使用openMVS对样例数据进行重建

openMVS根据github上的步骤进行编译。注意,如果没有GPU,用不了CUDA的话,那么需要在openMVS目录下找到CmakeLists.txt文件,把CUDA设置为OFF: SET(OpenMVS_USE_CUDA OFF CACHE BOOL "Enable CUDA library") 可执行的文件生成在openMVS_build/bin/里面,在openMVS_build文件夹下打开终端,按照顺序执行如下命令即可逐步重建。其中,-w 设置的是数据的总路径,-i 后接输入的文件名,-o

YuhsiHu的博客 2887

libev源码解析——总览

        libev是个非常优秀的基于事件的循环库,很多开源软件,比如nodejs就是使用其实现基础功能。本系列将对该库进行源码分析。(转载请指明出于breaksoftware的csdn博客)         不知道是被墙了还是网站不再维护,它的官网(http://libev.schmorp.de/)在国内已经没法访问了。但是我们仍然可以从github上下载其源码(https://gith...

方亮的专栏 9999

Notion访问卡顿?一键优化DNS与Hosts提升加载速度

本文针对Notion访问卡顿问题,提供了两种核心优化方案:修改Hosts文件与配置DNS。详细解析了卡顿根源在于网络链路,并手把手指导用户在Windows、Mac、iOS及Android设备上实施优化,旨在通过替换为更优线路,显著提升Notion的页面加载与同步速度。

fff88的博客 1197

c语言播放背景音乐

相信很多童鞋都在为大学课设而伤透头脑,而背景音乐的使用无疑会成为其中的一个亮点(总比没有好吧(╯▽╰)),故接下来我将介绍一下如何用C播放音乐。我用的编译器是CodeBlocks16.01接下来新建一个C文件建立完后是这样滴然后添加其中mciSendString()函数是由&lt;mmsystem.h&gt;库提供的供播放音乐(MP3)的函数第一个参数是歌曲所在的绝对路径 打开音乐所在位置 复制这...

qq_41443987的博客 3万+

指针习题6(答案版)

题目及楼主的方法 答案的代码 #include&lt;stdio.h&gt; int main() {int length(char *p); int len; char str[20]; printf("input string: "); scanf("%s",str); len=length(str); printf("The length of string is %d.\n"...

成长之路 530

Vue3 与 Bpmn-js:打造现代化 BPMN 流程设计器

随着业务流程的复杂化,流程设计器成为企业级应用中不可或缺的一部分。BPMN(Business Process Model and Notation)是一种标准的业务流程建模语言,广泛应用于业务流程管理。本文将介绍如何使用 Vue3 和 Bpmn-js 打造一个现代化的 BPMN 流程设计器。

九天的专栏 2116

B. Devu, the Dumb Guy

解题说明:此题就从小到大排序,这样就能保证最少时间,但是要注意y

无知的我 1448

图像去噪实战:Noise2Noise与Noise2Void在医学影像中的应用(附代码)

本文深入探讨了Noise2Noise与Noise2Void在医学影像去噪中的革命性应用,通过自监督学习技术有效解决临床数据配对难题。文章提供详细的代码实现和临床部署方案,展示如何提升低剂量CT、MRI等影像的诊断质量,特别适用于辐射敏感场景和急诊快速处理。

weixin_29092579的博客 241

告别 DEFINE VIEW:CDS View Entity 迁移全景实战(报表迁移 + ADT 向导 + 避坑清单)

CDS迁移的关键要点与策略 CDS DDIC-based View已被标记为废弃,迁移到CDS View Entity成为必要。迁移面临的主要挑战包括激活成本、命名约束和依赖风险。ABAP 7.57及以上版本必须优先处理,否则将积累技术债务。 迁移方式主要有两种: 报表路线:适合渐进式迁移的On-Premise项目 ADT向导:适合云环境批量迁移 关键注意事项: 必须提前检查SQL View依赖关系 金额/数量字段需要显式引用单位/货币字段 建议按使用场景分批迁移 最佳实践是结合报表进行系统盘点,再通过AD

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 208

Roy the Robber

Problem Description The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usually gets caught in the end, often because they become too greedy. He has decided to ...

weixin_30567471的博客 439

3060台式机 Ubuntu 双系统部署 LingBot-Map 完整指南

摘要: 本文详细介绍了在配备RTX 3060显卡的台式机上部署Ubuntu双系统并安装LingBot-Map 3D重建模型的完整流程。LingBot-Map作为蚂蚁灵波科技开源的Transformer架构模型,在流式3D场景重建中展现出高效性能(20 FPS)和卓越精度(ATE仅6.42米)。指南涵盖关键准备步骤、UEFI分区原理、Ubuntu安装流程(推荐150GB空间及手动分区方案),以及后续驱动配置说明,特别强调RTX 3060需12GB显存支持,并提供了数据备份、Secure Boot处理等实用建议

huanghm88的专栏 309

理解 Linux 动态库加载:LD_LIBRARY_PATH

flyfish

二分掌柜的 347

【技能】OpenClaw Skills学习及手搓一个极简skill

本文介绍了OpenClaw Skills的基础概念与使用方法。Skills是OpenClaw代理使用工具的核心载体,通过SKILL.md文件定义技能属性和执行方式。技能加载遵循"工作区>本地>内置>自定义目录"的优先级规则。用户可通过ClawHub一键安装现成技能,也可自定义开发技能:创建技能目录,编写包含YAML元数据和执行指令的SKILL.md文件,放置于工作区skills目录进行测试。文章还介绍了多代理场景下的技能共享、插件集成以及安全注意事项,包括沙箱使用和敏感

海兰 3976

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: Qt学习笔记,Qt程序架构设计要旨
下一篇: 有关libeva的使用说明 - 登录和登出操作
Qicz
博客等级 码龄16年 56粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值