URL的编码解码(一),仅针对ASCII码字符

news2024/11/24 22:43:46

用十六进制对特定字符编码,利用百分号标识搜索字符串解码十六进制字符。


(笔记模板由python脚本于2024年06月09日 18:05:25创建,本篇笔记适合喜好探寻URL的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


用十六进制对特定字符编码
URL的编码解码(一)
(利用百分号标识搜索字符串解码十六进制字符)


本文质量分:

96 96 96

本文地址: https://blog.csdn.net/m0_57158496/

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ URL的编码解码(一)
    • 1、需要编码的URL字符集
    • 2、ASCII字符集
    • 3、主机域名限制
    • 4、url解码
      • 4.1 解码函数
      • 4.2 代码解析
    • 5、URL编码
      • 5.1 编码函数
      • 5.2 代码解析
    • 6、完整源码(Python)


◆ URL的编码解码(一)


1、需要编码的URL字符集


  需要编码的URL字符集,通常包括那些在URL中有特殊意义的字符,以及非ASCII字符。这些字符需要被编码,以便URL可以正确地被解析和传输。


  • 以下是需要编码的字符集的详细列表
  1. 非ASCII字符:任何非ASCII字符都需要被编码,因为URL标准是基于ASCII字符集的。(由于非ascii字符的编码解码,相对复杂一些,请见我的专门讨论笔记:《非ASCII码的编码》,本篇笔记仅讨论ascii字符的编码解码。)
  2. 保留字符:即使某些字符在URL的特定部分是允许的,但如果它们用于其他目的,也需要被编码。这些字符包括:
    • ; (%3B)
    • / (%2F)
    • ? (%3F)
    • : (%3A)
    • @ (%40)
    • & (%26)
    • = (%3D)
    • + (%2B)
    • $ (%24)
    • , (%2C)
  3. 不安全字符:这些字符在URL中有特殊意义,或者在某些情况下可能导致URL解析错误。它们包括:
    • (空格) 被编码为 %20+
    • " (%22)
    • < (%3C)
    • > (%3E)
    • # (%23)
    • % (%25)
    • { (%7B)
    • } (%7D)
    • | (%7C)
    • \\ (%5C)
    • ^ (%5E)
    • ~ (%7E)
    • [ (%5B)
    • ] (%5D)
    • " (%22)
    • ' (%27)
    • ( (%28)
    • ) (%29)
  4. 控制字符:ASCII码中的控制字符(0-31和127)通常也被编码,因为它们可能在传输过程中被某些系统错误处理。


  在URL编码过程中,这些字符通常被替换为%后跟两位十六进制数,代表该字符的ASCII码。例如,空格字符(ASCII码为32)被编码为%20。在某些情况下,+也可以用来代替空格,但这通常只适用于表单提交中的URL编码,而不是在HTTP GET请求的URL中。



回页目录


2、ASCII字符集


  ASCII(美国信息交换标准代码)字符集总共包含128个字符。这些字符包括:


  • 95个可打印字符:大小写字母A-Z、a-z、数字0-9、标点符号和其它符号。

  • 33个非打印控制字符:用于控制打印机等硬件设备或提供数据流的控制。


  这些字符被用于早期的计算机系统中,现在虽然已被更广泛的字符集如Unicode所取代,但ASCII仍然是计算机历史上一个重要的里程碑。


  • ASCII码的95个可打印字符
    在这里插入图片描述


  ASCII字符集共计128,除去0到31和127为控制码,这33个字符必须编码。另有保留字符10个,不安全字符18个,另有a-zA-Z大小写字母52个和10数字0-9可以不用编码外,不用编码的其它字符仅有 5 5 5(128-33-28-62 = 5)而已。这5个字符,编不编码对浏览器解析url都没有影响。

  鉴于此,为简单起见,不去纠结它们到底是哪几个字符,都给一并编码。这样子,就是字母数字不编码,设计代码实现逻辑,就不难了。🤪



回页目录


3、主机域名限制


  URL中的主机域名字符串有一些特定的限制,这些限制是由互联网标准和协议决定的。


  • 以下是一些主要的限制
  1. 字符集限制:域名可以包含字母(A-Z,不区分大小写)、数字(0-9)和连字符(-)。域名不区分大小写,但在域名系统中注册时,每个标签(由点分隔的部分)会被转换为小写。
  2. 长度限制:域名的总长度不能超过253个字符,包括点分隔符。每个标签(域名的部分)的长度不能超过63个字符。
  3. 标签限制:域名不能以连字符开头或结尾。
  4. 特殊字符:除了字母、数字和连字符外,域名中不允许使用其他特殊字符,如空格、百分号、下划线等。
  5. 顶级域名:域名必须有一个顶级域名(TLD),如.com、.org、.net等,并且TLD必须在ICANN(互联网名称与数字地址分配机构)或相应国家代码顶级域(ccTLD)的官方列表中。
  6. 国际化域名:虽然传统的域名只允许ASCII字符,但国际化域名(IDN)允许使用非ASCII字符,如中文、阿拉伯文等。这些字符会被转换为ASCII兼容的编码形式(Punycode)。


  这些限制确保了域名在全球范围内的唯一性和可互操作性。遵守这些规则对于确保网站的正常访问和DNS(域名系统)的稳定运行至关重要。


  大多数url仅包括主机域名和路径,路径一般都是用英文字符,因此仅对csaii字符编码解码,已可以应付大部分url。



回页目录


4、url解码


  url解码,就是把编码url中紧跟%后的两个十六进制字符,还原成ascii码。由于本文探讨的仅是ascii码的单字节字符,代码实现逻辑超强简单。只需用while循环遍历url字符串,将有编码过的十六进制字符还原就好了。


4.1 解码函数


Python代码


url = "https://blink.csdn.net/m/details/1714315?csdn_share_tail=%7B%22type%22%3A%22blink%22,%22rType%22%3A%22blink%22,%22rId%22%3A%221714315%22,%22source%22%3A%22m0_57158496%22%7D"

def charDecode(chars: str, char: str, k: int) -> tuple:
    return (chr(int(chars[k+1:k+3],16)), k+3) if char == '%' else (char, k+1) # 如果有编码则解码返回,并更新检索url下标变量k


def urlDecode(url: str) -> str:
    urlList = []; k = 0; n = len(url)

    while k < n:
        char, k = charDecode(url, url[k], k) # 函数返回解码字符并更新url遍历检索下标。
        urlList += [char] # 追加收集已解码字符
    
    return ''.join(urlList) # 拼接解码后的url字符串返回


if __name__ == '__main__':
    strDecode = urlDecode(url)
    print(f"\n编码Url:\n{url}\n\n解码后;\n{strDecode}")


  • 代码运行效果截屏图片
    在这里插入图片描述
      如图所见,程序函数把有编码的字符都还原成了ascii码。



回页目录


4.2 代码解析


这段代码的目的是实现URL解码功能

  • 让我们逐步分析这段代码
  1. charDecode 函数
    这个函数接受三个参数:chars(要解码的字符串),char(当前字符),和k(当前字符在字符串中的索引)。如果当前字符是%,它假设接下来的两个字符是十六进制数,代表一个字符的ASCII码。函数将这些十六进制数转换为对应的字符,并返回这个字符以及更新后的索引k(增加3,因为跳过了%和两个十六进制数字符)。如果当前字符不是%,它就直接返回这个字符和下一个索引k+1
  2. urlDecode函数
    这个函数接受一个参数url(要解码的URL字符串)。它初始化一个空列表urlList来存储解码后的字符,以及一个变量k来跟踪当前字符的索引。函数遍历整个URL字符串,对每个字符调用charDecode函数进行解码,并将解码后的字符添加到urlList中。最后,它使用join方法将urlList中的所有字符拼接成一个字符串,并返回这个字符串。
  3. if __name__ == '__main__':
    这部分是Python代码的常见结构,用于检测该脚本是否作为主程序运行。如果是,它将执行下面的代码。
  4. strDecode = urlDecode(url)
    这行代码调用urlDecode函数,将提供的URL字符串解码,并将结果存储在变量strDecode中。
  5. print(f"\n编码Url:\n{url}\n\n解码后;\n{strDecode}")
    这行代码打印出原始的编码URL和解码后的URL。


总结

  这段代码提供了一个简单的URL解码实现,可以处理包含十六进制编码字符的URL。它首先定义了一个辅助函数来解码单个字符,然后使用这个函数来解码整个URL字符串。



回页目录


5、URL编码


  URL编码,就是把url中不适宜的字符用%后接两个十六进制字符的形式。由于本文探讨的仅是ascii码的单字节字符,代码实现逻辑相对简单。只需用while循环遍历url字符串,将有编码需求的字符转换就好。


5.1 编码函数


Python代码


## 编码 ##
def charEncode(chars: str, char: str, k: int) -> tuple:
    chars = set('abcdefghijklmnopqrstuvwxyzABCDRFGHIJKLMNOPQRSTUVWXYZ0123456789') # 不用url编码字符集
    return (char, k+1) if char in chars else (f"%{hex(ord(char))[2:].upper()}", k+1) 


def urlEncode(url: str) -> str:
    urlList = []; k = 0; n = len(url)

    while k < n:
        char, k = charEncode(url, url[k], k)
        urlList += [char]
    
    return ''.join(urlList)

  • 代码运行效果截屏图片
    在这里插入图片描述
    :/.?也一并编码了。😅😅这是一个 意 外 意外 。😋😋

修正代码

## 编码 ##
def charEncode(chars: str, char: str, k: int) -> tuple:
    chars = set('abcdefghijklmnopqrstuvwxyzABCDRFGHIJKLMNOPQRSTUVWXYZ0123456789') # 不用url编码字符集
    puncs = set('/.?,_=') # 编码放行标点字符
    #return (char, k+1) if char in chars.union(puncs) else (f"%{hex(ord(char))[2:].upper()}", k+1) 
    return (char, k+1) if char in chars | puncs else (f"%{hex(ord(char))[2:].upper()}", k+1) # set对象拼接,可用set.union()方法,也可以用 | 连接运算符


def urlEncode(url: str) -> str:
    urlList = [f"{url.split(':')[0]}:"] # 截取网络协议标识字符串
    k = len(urlList[0]) # 检索下标初值
    n = len(url) # 获取url长度

    while k < n:
        char, k = charEncode(url, url[k], k)
        urlList += [char]
    
    return ''.join(urlList)


if __name__ == '__main__':
    strDecode = urlDecode(url)
    reEncode = urlEncode(strDecode)
    print(f"\n编码Url:\n{url}\n\n解码后;\n{strDecode}\n\n重新编码:\n{reEncode}\n\n原始编码 = 重新编码:{url == reEncode}\n")

  • 代码运行效果截屏图片
    在这里插入图片描述
    经与原始编码url比对验证,编码函数重新编码的url与其完全一致。代码修正成功!



回页目录


5.2 代码解析


  正在编辑中……



回页目录


6、完整源码(Python)

(源码较长,点此跳过源码)

#!/sur/bin/nve python
# coding: utf-8


asciis = [chr(i) for i in range(32, 127)]
print(f"\n33个控制字符不可见,可打印的ASCII字符集:\n\n共计{len(asciis)}个(含空格)\n{', '.join(asciis)}\n")



url = "https://blink.csdn.net/m/details/1714315?csdn_share_tail=%7B%22type%22%3A%22blink%22,%22rType%22%3A%22blink%22,%22rId%22%3A%221714315%22,%22source%22%3A%22m0_57158496%22%7D"


## 解码 ##
def charDecode(chars: str, char: str, k: int) -> tuple:
    return (chr(int(chars[k+1:k+3],16)), k+3) if char == '%' else (char, k+1)


def urlDecode(url: str) -> str:
    urlList = []; k = 0; n = len(url)

    while k < n:
        char, k = charDecode(url, url[k], k)
        urlList += [char]
    
    return ''.join(urlList)
 


## 编码 ##
def charEncode(chars: str, char: str, k: int) -> tuple:
    chars = set('abcdefghijklmnopqrstuvwxyzABCDRFGHIJKLMNOPQRSTUVWXYZ0123456789') # 不用url编码字符集
    puncs = set('/.?,_=') # 编码放行标点字符
    #return (char, k+1) if char in chars.union(puncs) else (f"%{hex(ord(char))[2:].upper()}", k+1) 
    return (char, k+1) if char in chars | puncs else (f"%{hex(ord(char))[2:].upper()}", k+1) # set对象拼接,可用set.union()方法,也可以用 | 连接运算符


def urlEncode(url: str) -> str:
    urlList = [f"{url.split(':')[0]}:"] # 截取网络协议标识字符串
    k = len(urlList[0]) # 检索下标初值
    n = len(url) # 获取url长度

    while k < n:
        char, k = charEncode(url, url[k], k)
        urlList += [char]
    
    return ''.join(urlList)


if __name__ == '__main__':
    strDecode = urlDecode(url)
    reEncode = urlEncode(strDecode)
    print(f"\n编码Url:\n{url}\n\n解码后;\n{strDecode}\n\n重新编码:\n{reEncode}\n\n原始编码 = 重新编码:{url == reEncode}\n")



回页首


上一篇:  Python 中的“点阵字体”(“点阵字体”是个啥?,在python中怎么使?在现在全面高清的$5G$时代,它还有用“武”之地)
下一篇: 



我的HOT博:

  本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有 7 7 7篇。

  • 001
    标题:让QQ群昵称色变的神奇代码
    (浏览阅读 5.9w )
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:25 收藏:86 评论:17
    摘要:让QQ昵称色变的神奇代码。
    首发:2022-01-18 19:15:08
    最后编辑:2022-01-20 07:56:47

  • 002
    标题:Python列表(list)反序(降序)的7种实现方式
    (浏览阅读 1.1w )
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:8 收藏:35 评论:8
    摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
    首发:2022-12-11 23:54:15
    最后编辑:2023-03-20 18:13:55

  • 003
    标题:pandas 数据类型之 DataFrame
    (浏览阅读 9.7k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:7 收藏:36 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    首发:2022-05-01 13:20:17
    最后编辑:2022-05-08 08:46:13

  • 004
    标题:个人信息提取(字符串)
    (浏览阅读 8.2k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:2 收藏:15 
    摘要:个人信息提取(字符串)_个人信息提取python。
    首发:2022-04-18 11:07:12
    最后编辑:2022-04-20 13:17:54

  • 005
    标题:Python字符串居中显示
    (浏览阅读 7.6k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    评论:1

  • 006
    标题:罗马数字转换器|罗马数字生成器
    (浏览阅读 7.5k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    摘要:罗马数字转换器|生成器。
    首发:2022-01-19 23:26:42
    最后编辑:2022-01-21 18:37:46

  • 007
    标题:回车符、换行符和回车换行符
    (浏览阅读 6.0k )
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    首发:2022-02-24 13:10:02
    最后编辑:2022-02-25 20:07:40


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1806188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于深度学习的中文语音识别模型(支持wav、mp4、m4a等所有格式音频上传)【已开源】

基于深度学习的中文语音识别模型&#xff08;支持wav、mp4、m4a等所有格式音频上传&#xff09; 前言 该开源项目旨在提供一个能够自动检测并识别中文语音的模型&#xff0c;支持wav、mp4、m4a等格式的音频文件上传。无论是从录音设备中获取的wav文件&#xff0c;还是从视频中…

Kingshard:MySQL代理,释放数据库潜能

Kingshard&#xff1a; 简化数据库管理&#xff0c;提升性能极限。- 精选真开源&#xff0c;释放新价值。 概览 kingshard是一个由Go开发的高性能MySQL Proxy项目&#xff0c;专为简化数据库管理和提升查询性能而设计。kingshard在满足基本的读写分离的功能上&#xff0c;致力…

Llama模型家族之Stanford NLP ReFT源代码探索 (四)Pyvene论文学习

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

【react】react项目支持鼠标拖拽的边框改变元素宽度的组件

目录 安装使用方法示例Props 属性方法示例代码调整兄弟div的宽度 re-resizable github地址 安装 $ npm install --save re-resizable这将安装re-resizable库并将其保存为项目的依赖项。 使用方法 re-resizable 提供了一个 <Resizable> 组件&#xff0c;它可以包裹任何…

[hddm]python模块hddm安装后测试代码

测试环境&#xff1a; hddm0.8.0 测试文件test.csv subj_idx,stim,rt,response,theta,dbs,conf 0,LL,1.21,1.0,0.65627512226100004,1,HC 0,WL,1.6299999999999999,1.0,-0.32788867166199998,1,LC 0,WW,1.03,1.0,-0.480284512399,1,HC 0,WL,2.77,1.0,1.9274273452399999,1,L…

使用 Scapy 库编写 TCP 劫持攻击脚本

一、介绍 TCP劫持攻击&#xff08;TCP Hijacking&#xff09;&#xff0c;也称为会话劫持&#xff0c;是一种攻击方式&#xff0c;攻击者在合法用户与服务器之间的通信过程中插入或劫持数据包&#xff0c;从而控制通信会话。通过TCP劫持&#xff0c;攻击者可以获取敏感信息、执…

网络基础-IP协议

文章目录 前言一、IP报文二、IP报文分片重组IP分片IP分片示例MTUping 命令可以验证MTU大小Windows系统&#xff1a;Linux系统: 前言 基础不牢&#xff0c;地动山摇&#xff0c;本节我们详细介绍IP协议的内容。 一、IP报文 第一行&#xff1a; 4位版本号指定IP协议的版本&#…

C语言详解(联合和枚举)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习笔记&#xff0c;在这里撰写…

UltraEditUEStudio软件最新版下载及详细安装教程

UEStudio简介&#xff1a; UEStudio建立在上文本编辑器UltraEdit的功能基础上&#xff0c;并为团队和开发人员提供了其他功能&#xff0c;例如深度Git集成。您可以直接在UEStudio中克隆&#xff0c;签出&#xff0c;更新&#xff0c;提交&#xff0c;推入/拉入等操作&#xff…

[CR]厚云填补_综述整理

SAR-to-Optical Image Translation and Cloud Removal Based on Conditional Generative Adversarial Networks: Literature Survey, Taxonomy, Evaluation Indicators, Limits and Future Directions Abstract 由于光学图像的局限性&#xff0c;其波段无法穿透云层&#xff0…

《精通ChatGPT:从入门到大师的Prompt指南》附录C:专业术语表

附录C&#xff1a;专业术语表 本附录旨在为读者提供一本全面的术语表&#xff0c;帮助理解《精通ChatGPT&#xff1a;从入门到大师的Prompt指南》中涉及的各种专业术语。无论是初学者还是高级用户&#xff0c;这些术语的定义和解释将为您在使用ChatGPT时提供重要参考。 A AI&…

大模型PEFT(二) 之 大模型LoRA指令微调学习记录

1.peft 1.1 微调方法批处理大小模式GPU显存速度 1.2 当前高效微调技术存在的一些问题 当前的高效微调技术很难在类似方法之间进行直接比较并评估它们的真实性能&#xff0c;主要的原因如下所示: 参数计算口径不一致:参数计算可以分为三类: 可训练参数的数量、微调模型与原…

探索 Docker:容器化技术的未来

1. 引言 在传统的软件开发和部署过程中&#xff0c;经常会遇到诸如“开发环境和生产环境不一致”、“依赖环境冲突”、“部署困难”等问题。为了解决这些问题&#xff0c;容器化技术应运而生。Docker 作为最受欢迎的容器平台之一&#xff0c;已经在业界得到广泛应用。它不仅简化…

SpringBoot整合钉钉实现消息推送

前言 钉钉作为一款企业级通讯工具&#xff0c;具有广泛的应用场景&#xff0c;包括但不限于团队协作、任务提醒、工作汇报等。 通过Spring Boot应用程序整合钉钉实现消息推送&#xff0c;我们可以实现以下功能&#xff1a; 实时向指定用户或群组发送消息通知。自定义消息内容…

数据库管理-第199期 近期获得的国产数据库荣誉(20240609)

数据库管理199期 2024-06-09 数据库管理-第199期 近期获得的国产数据库荣誉&#xff08;20240609&#xff09;1 HaloDB2 PolarDB3 TiDB4 青学会总结 数据库管理-第199期 近期获得的国产数据库荣誉&#xff08;20240609&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹…

eNSP学习——RIP故障处理

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、导入设备预配置 2、排除R1与R2间的故障 3、排除R1与R3间的故障 需要eNSP各种配置命令的点击链接自取:华为eNSP各种设备配置命令大全PDF版_ensp配置命令大全资源-CSDN文库 主要命令 //检查…

CPP初阶:CPP的内存管理模式

目录 一.new和delete操作自定义类型 1.1C语言的内存管理 1.2CPP的内存管理方式 1.3C与CPP内存管理的差异 二.operator new和operator delete函数 三.CPP空间操作符使用深化 3.1 连续内存开辟与释放 3.2 非连续内存开辟与释放 四.new和delete的实现原理 4.1内置类型 4.2…

EarMaster Pro软件下载附加详细安装教程

简介 来自丹麦皇家音乐学院的多媒体音乐教育软件 EarMaster Pro以问答的交互形式&#xff0c;寓教于乐的视听方法&#xff0c;给专业和非专业音乐人士以极大的音乐学习帮助。 无论你是刚学音乐的儿童&#xff0c;还是一个音乐高手&#xff0c;都可以使用这个软件来增强你的听音…

工程师 - VMware workstation pro个人版现已免费

May 13, 2024 VMware 桌面虚拟机管理程序(VMware Desktop Hypervisors) 使用行业标准桌面管理程序 VMware Workstation Pro for Windows 和 Linux 或 VMware Fusion for Mac 运行 Windows、Linux 和其他虚拟机。 Run Windows, Linux and other virtual machines with VMware Wo…

手把手带你做一个自己的网络调试助手(2) - TCP服务器完善

服务器指定客户端发送 自定义控件comboBox - 刷新客户端列表 目的&#xff1a; 自定义控件&#xff0c;当鼠标点击这个comboBox控件的时候去刷新客户端列表 mycombobox.h #ifndef MYCOMBOBOX_H #define MYCOMBOBOX_H#include <QComboBox> #include <QWidget>cl…