摘要:
使用`CRC32`还可实现图片去重功能,如下`FindRepeatFile`函数,运行后通过对所有文件做`crc`校验并将校验值存储至`CatalogueDict`字典内,接着依次提取`CRC`特征值并将其存储至`CatalogueList`列表内,接着通过统计特征值出现次数并将该次数放入到`CountDict`字典内,最后循环这个字典,并以此输出文件特征与重复次数,将重复值放入到`RepeatFileFeatures`列表内。 阅读全文
摘要:
Boost ASIO库是一个基于C++语言的开源网络编程库,该库提供了成熟、高效、跨平台的网络API接口,并同时支持同步与异步两种模式,ASIO库提供了多重I/O对象、异步定时器、可执行队列、信号操作和协程等支持,使得开发者可以轻松地编写可扩展的高性能网络应用程序,同时保持代码简洁、易于维护。在学习`ASIO`库之前,我们先来实现一个简单的地址解析功能,Boost库中提供了`ip::tcp::resolver`对象,该对象可用于解析给定主机名和端口号的`IP`地址,学会使用这个对象即可实现对特定主机域名地址的解析功能,如下封装实现了`GetDNSAddress`该函数传入一个域名,并输出该域名所对应的`IP`地址列表,并返回给`std::vector`容器内,其实现原理如下所示。 阅读全文