【QT+QGIS跨平台编译】之五:【curl+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录

  • 一、curl介绍
  • 二、curl下载
  • 三、文件分析
  • 四、pro文件
  • 五、编译实践

一、curl介绍

curl(CommandLine Uniform Resource Locator)主要功能就是用不同的协议连接和沟通不同的服务器,相当封装了的socket。
libcurl支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies和用户认证。


二、curl下载

curl网站:
libcurl
下载libcurl:
在这里插入图片描述
在这里插入图片描述
获取curl-7.86.0.tar.gz文件。


三、文件分析

解压缩curl-7.86.0.tar.gz文件。
进入curl-7.86.0/lib目录
在这里插入图片描述
CMakeLists.txt记录了要加载的文件目录、预定义项信息。

文件目录:
在这里插入图片描述
预定义项信息:
在这里插入图片描述


四、pro文件

配置config文件:

有config-win32.h、config-mac.h、config-linux.h

在这里插入图片描述
config-win32.h在文件夹下,不需修改。

基于config-mac.h,构建config-linux.h

config-linux.h文件信息:
在这里插入图片描述
在这里插入图片描述
config-mac.h文件信息:
在这里插入图片描述
在这里插入图片描述

配置头文件:

#头文件
HEADERS +=  ./altsvc.h \./amigaos.h \./arpa_telnet.h \./asyn.h \./bufref.h \./c-hyper.h \./conncache.h \./connect.h \./content_encoding.h \./cookie.h \./curl_addrinfo.h \./curl_base64.h \./curl_ctype.h \./curl_des.h \./curl_endian.h \./curl_fnmatch.h \./curl_get_line.h \./curl_gethostname.h \./curl_gssapi.h \./curl_hmac.h \./curl_krb5.h \./curl_ldap.h \./curl_md4.h \./curl_md5.h \./curl_memory.h \./curl_memrchr.h \./curl_multibyte.h \./curl_ntlm_core.h \./curl_ntlm_wb.h \./curl_path.h \./curl_printf.h \./curl_range.h \./curl_rtmp.h \./curl_sasl.h \./curl_setup.h \./curl_setup_once.h \./curl_sha256.h \./curl_sspi.h \./curl_threads.h \./curlx.h \./dict.h \./doh.h \./dotdot.h \./dynbuf.h \./easyif.h \./easyoptions.h \./escape.h \./file.h \./fileinfo.h \./fopen.h \./formdata.h \./ftp.h \./ftplistparser.h \./getinfo.h \./gopher.h \./h2h3.h \./hash.h \./headers.h \./hostip.h \./hsts.h \./http2.h \./http_aws_sigv4.h \./http_chunks.h \./http_digest.h \./http.h \./http_negotiate.h \./http_ntlm.h \./http_proxy.h \./if2ip.h \./imap.h \./inet_ntop.h \./inet_pton.h \./llist.h \./memdebug.h \./mime.h \./mqtt.h \./multihandle.h \./multiif.h \./netrc.h \./nonblock.h \./noproxy.h \./parsedate.h \./pingpong.h \./pop3.h \./progress.h \./psl.h \./quic.h \./rand.h \./rename.h \./rtsp.h \./select.h \./sendf.h \./setopt.h \./setup-vms.h \./share.h \./sigpipe.h \./slist.h \./smb.h \./smtp.h \./sockaddr.h \./socketpair.h \./socks.h \./speedcheck.h \./splay.h \./strcase.h \./strdup.h \./strerror.h \./strtok.h \./strtoofft.h \./system_win32.h \./telnet.h \./tftp.h \./timediff.h \./timeval.h \./transfer.h \./urlapi-int.h \./urldata.h \./url.h \./version_win32.h \./warnless.h \./wildcard.h \\./vauth/digest.h \./vauth/ntlm.h \./vauth/vauth.h \\./vquic/msh3.h \./vquic/ngtcp2.h \./vquic/quiche.h \./vquic/vquic.h \\./vssh\ssh.h \\./vtls/bearssl.h \./vtls/gskit.h \./vtls/gtls.h \./vtls/hostcheck.h \./vtls/keylog.h \./vtls/mbedtls.h \./vtls/mbedtls_threadlock.h \./vtls/nssg.h \./vtls/openssl.h \./vtls/rustls.h \./vtls/schannel.h \./vtls/sectransp.h \./vtls/vtls.h \./vtls/wolfssl.h \./vtls/x509asn1.h
win32 {HEADERS += ./config-win32.h
}
linux* {HEADERS += ./config-linux.h
}
macx {HEADERS += ./config-mac.h
}

配置源文件:

#源文件
SOURCES +=  ./altsvc.c \./amigaos.c \./asyn-ares.c \./asyn-thread.c \./base64.c \./bufref.c \./c-hyper.c \./conncache.c \./connect.c \./content_encoding.c \./cookie.c \./curl_addrinfo.c \./curl_des.c \./curl_endian.c \./curl_fnmatch.c \./curl_gethostname.c \./curl_get_line.c \./curl_gssapi.c \./curl_memrchr.c \./curl_multibyte.c \./curl_ntlm_core.c \./curl_ntlm_wb.c \./curl_path.c \./curl_range.c \./curl_rtmp.c \./curl_sasl.c \./curl_sspi.c \./curl_threads.c \./dict.c \./doh.c \./dynbuf.c \./easy.c \./easygetopt.c \./easyoptions.c \./escape.c \./file.c \./fileinfo.c \./fopen.c \./formdata.c \./ftp.c \./ftplistparser.c \./getenv.c \./getinfo.c \./gopher.c \./h2h3.c \./hash.c \./headers.c \./hmac.c \./hostasyn.c \./hostip4.c \./hostip6.c \./hostip.c \./hostsyn.c \./hsts.c \./http2.c \./http_aws_sigv4.c \./http.c \./http_chunks.c \./http_digest.c \./http_negotiate.c \./http_ntlm.c \./http_proxy.c \./idn_win32.c \./if2ip.c \./imap.c \./inet_ntop.c \./inet_pton.c \./krb5.c \./ldap.c \./llist.c \./md4.c \./md5.c \./memdebug.c \./mime.c \./mprintf.c \./mqtt.c \./multi.c \./netrc.c \./nonblock.c \./noproxy.c \./openldap.c \./parsedate.c \./pingpong.c \./pop3.c \./progress.c \./psl.c \./rand.c \./rename.c \./rtsp.c \./select.c \./sendf.c \./setopt.c \./sha256.c \./share.c \./slist.c \./smb.c \./smtp.c \./socketpair.c \./socks.c \./socks_gssapi.c \./socks_sspi.c \./speedcheck.c \./splay.c \./strcase.c \./strdup.c \./strerror.c \./strtok.c \./strtoofft.c \./system_win32.c \./telnet.c \./tftp.c \./timediff.c \./timeval.c \./transfer.c \./urlapi.c \./url.c \./version.c \./version_win32.c \./warnless.c \./wildcard.c \\./vauth/cleartext.c \./vauth/cram.c \./vauth/digest.c \./vauth/digest_sspi.c \./vauth/gsasl.c \./vauth/krb5_gssapi.c \./vauth/krb5_sspi.c \./vauth/ntlm.c \./vauth/ntlm_sspi.c \./vauth/oauth2.c \./vauth/spnego_gssapi.c \./vauth/spnego_sspi.c \./vauth/vauth.c \\./vquic/msh3.c \./vquic/ngtcp2.c \./vquic/quiche.c \./vquic/vquic.c \\./vssh/libssh2.c \./vssh/libssh.c \./vssh/wolfssh.c \\./vtls/bearssl.c \./vtls/gskit.c \./vtls/gtls.c \./vtls/hostcheck.c \./vtls/keylog.c \./vtls/mbedtls.c \./vtls/mbedtls_threadlock.c \./vtls/nss.c \./vtls/openssl.c \./vtls/rustls.c \./vtls/schannel.c \./vtls/schannel_verify.c \./vtls/sectransp.c \./vtls/vtls.c \./vtls/wolfssl.c \./vtls/x509asn1.c

预定义项信息:

DEFINES += BUILDING_LIBCURL USE_OPENSSL USE_LIBSSH2 USE_IPV6 HAVE_LIBSSH2_H HAVE_STRUCT_TIMEVAL
win32 {DEFINES += _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE
}
linux* {DEFINES += linux
}
macx {DEFINES += macintosh __MRC__
}

依赖的库文件:

CONFIG(debug, debug|release){LIBS += -lssh2d
}else{LIBS += -lssh2
}
win32 {LIBS += -LD:/Qt/Tools/OpenSSL/Win_x64/libLIBS += -llibcrypto -llibssl -lwldap32LIBS += -lcrypt32 -luser32 -lws2_32
}
linux* {LIBS += -lcrypto -lssl
}
macx {LIBS += -L/usr/local/opt/openssl@3/libLIBS += -lcrypto -lssl
}

形成的004.curl-7.86.0.pro文件:

QT += core networkTEMPLATE = lib
CONFIG += c++17DESTDIR = ../QGISCONFIG(debug, debug|release){MOC_DIR = ../build-QGIS/curl/Debug/mocRCC_DIR = ../build-QGIS/curl/Debug/rccUI_DIR = ../build-QGIS/curl/Debug/uiOBJECTS_DIR = ../build-QGIS/curl/Debug/obj
}else{MOC_DIR = ../build-QGIS/curl/Release/mocRCC_DIR = ../build-QGIS/curl/Release/rccUI_DIR = ../build-QGIS/curl/Release/uiOBJECTS_DIR = ../build-QGIS/curl/Release/obj
}CONFIG(debug, debug|release){TARGET = curld
}else{TARGET = curl
}#DEFINES -= UNICODE
DEFINES += BUILDING_LIBCURL USE_OPENSSL USE_LIBSSH2 USE_IPV6 HAVE_LIBSSH2_H HAVE_STRUCT_TIMEVAL
win32 {DEFINES += _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE
}
linux* {DEFINES += linux
}
macx {DEFINES += macintosh __MRC__
}# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0#当前目录
INCLUDEPATH += ./ ./include ./vauth ./vquic ./vssh
#openssl路径
win32 {INCLUDEPATH += D:/Qt/Tools/OpenSSL/Win_x64/includeINCLUDEPATH += D:/Qt/Tools/OpenSSL/Win_x64/include/openssl
}
linux* {INCLUDEPATH += /opt/Qt/Tools/OpenSSL/src/includeINCLUDEPATH += /opt/Qt/Tools/OpenSSL/src/include/openssl
}
macx {INCLUDEPATH += /usr/local/opt/openssl@3/includeINCLUDEPATH += /usr/local/opt/openssl@3/include/openssl
}#SSH2路径
INCLUDEPATH += ../libssh2-1.10.0
#LIBS
LIBS += -L../QGIS
CONFIG(debug, debug|release){LIBS += -lssh2d
}else{LIBS += -lssh2
}
win32 {LIBS += -LD:/Qt/Tools/OpenSSL/Win_x64/libLIBS += -llibcrypto -llibssl -lwldap32LIBS += -lcrypt32 -luser32 -lws2_32
}
linux* {LIBS += -lcrypto -lssl
}
macx {LIBS += -L/usr/local/opt/openssl@3/libLIBS += -lcrypto -lssl
}#头文件
HEADERS +=  ./altsvc.h \./amigaos.h \./arpa_telnet.h \./asyn.h \./bufref.h \./c-hyper.h \./conncache.h \./connect.h \./content_encoding.h \./cookie.h \./curl_addrinfo.h \./curl_base64.h \./curl_ctype.h \./curl_des.h \./curl_endian.h \./curl_fnmatch.h \./curl_get_line.h \./curl_gethostname.h \./curl_gssapi.h \./curl_hmac.h \./curl_krb5.h \./curl_ldap.h \./curl_md4.h \./curl_md5.h \./curl_memory.h \./curl_memrchr.h \./curl_multibyte.h \./curl_ntlm_core.h \./curl_ntlm_wb.h \./curl_path.h \./curl_printf.h \./curl_range.h \./curl_rtmp.h \./curl_sasl.h \./curl_setup.h \./curl_setup_once.h \./curl_sha256.h \./curl_sspi.h \./curl_threads.h \./curlx.h \./dict.h \./doh.h \./dotdot.h \./dynbuf.h \./easyif.h \./easyoptions.h \./escape.h \./file.h \./fileinfo.h \./fopen.h \./formdata.h \./ftp.h \./ftplistparser.h \./getinfo.h \./gopher.h \./h2h3.h \./hash.h \./headers.h \./hostip.h \./hsts.h \./http2.h \./http_aws_sigv4.h \./http_chunks.h \./http_digest.h \./http.h \./http_negotiate.h \./http_ntlm.h \./http_proxy.h \./if2ip.h \./imap.h \./inet_ntop.h \./inet_pton.h \./llist.h \./memdebug.h \./mime.h \./mqtt.h \./multihandle.h \./multiif.h \./netrc.h \./nonblock.h \./noproxy.h \./parsedate.h \./pingpong.h \./pop3.h \./progress.h \./psl.h \./quic.h \./rand.h \./rename.h \./rtsp.h \./select.h \./sendf.h \./setopt.h \./setup-vms.h \./share.h \./sigpipe.h \./slist.h \./smb.h \./smtp.h \./sockaddr.h \./socketpair.h \./socks.h \./speedcheck.h \./splay.h \./strcase.h \./strdup.h \./strerror.h \./strtok.h \./strtoofft.h \./system_win32.h \./telnet.h \./tftp.h \./timediff.h \./timeval.h \./transfer.h \./urlapi-int.h \./urldata.h \./url.h \./version_win32.h \./warnless.h \./wildcard.h \\./vauth/digest.h \./vauth/ntlm.h \./vauth/vauth.h \\./vquic/msh3.h \./vquic/ngtcp2.h \./vquic/quiche.h \./vquic/vquic.h \\./vssh\ssh.h \\./vtls/bearssl.h \./vtls/gskit.h \./vtls/gtls.h \./vtls/hostcheck.h \./vtls/keylog.h \./vtls/mbedtls.h \./vtls/mbedtls_threadlock.h \./vtls/nssg.h \./vtls/openssl.h \./vtls/rustls.h \./vtls/schannel.h \./vtls/sectransp.h \./vtls/vtls.h \./vtls/wolfssl.h \./vtls/x509asn1.h
win32 {HEADERS += ./config-win32.h
}
linux* {HEADERS += ./config-linux.h
}
macx {HEADERS += ./config-mac.h
}#源文件
SOURCES +=  ./altsvc.c \./amigaos.c \./asyn-ares.c \./asyn-thread.c \./base64.c \./bufref.c \./c-hyper.c \./conncache.c \./connect.c \./content_encoding.c \./cookie.c \./curl_addrinfo.c \./curl_des.c \./curl_endian.c \./curl_fnmatch.c \./curl_gethostname.c \./curl_get_line.c \./curl_gssapi.c \./curl_memrchr.c \./curl_multibyte.c \./curl_ntlm_core.c \./curl_ntlm_wb.c \./curl_path.c \./curl_range.c \./curl_rtmp.c \./curl_sasl.c \./curl_sspi.c \./curl_threads.c \./dict.c \./doh.c \./dynbuf.c \./easy.c \./easygetopt.c \./easyoptions.c \./escape.c \./file.c \./fileinfo.c \./fopen.c \./formdata.c \./ftp.c \./ftplistparser.c \./getenv.c \./getinfo.c \./gopher.c \./h2h3.c \./hash.c \./headers.c \./hmac.c \./hostasyn.c \./hostip4.c \./hostip6.c \./hostip.c \./hostsyn.c \./hsts.c \./http2.c \./http_aws_sigv4.c \./http.c \./http_chunks.c \./http_digest.c \./http_negotiate.c \./http_ntlm.c \./http_proxy.c \./idn_win32.c \./if2ip.c \./imap.c \./inet_ntop.c \./inet_pton.c \./krb5.c \./ldap.c \./llist.c \./md4.c \./md5.c \./memdebug.c \./mime.c \./mprintf.c \./mqtt.c \./multi.c \./netrc.c \./nonblock.c \./noproxy.c \./openldap.c \./parsedate.c \./pingpong.c \./pop3.c \./progress.c \./psl.c \./rand.c \./rename.c \./rtsp.c \./select.c \./sendf.c \./setopt.c \./sha256.c \./share.c \./slist.c \./smb.c \./smtp.c \./socketpair.c \./socks.c \./socks_gssapi.c \./socks_sspi.c \./speedcheck.c \./splay.c \./strcase.c \./strdup.c \./strerror.c \./strtok.c \./strtoofft.c \./system_win32.c \./telnet.c \./tftp.c \./timediff.c \./timeval.c \./transfer.c \./urlapi.c \./url.c \./version.c \./version_win32.c \./warnless.c \./wildcard.c \\./vauth/cleartext.c \./vauth/cram.c \./vauth/digest.c \./vauth/digest_sspi.c \./vauth/gsasl.c \./vauth/krb5_gssapi.c \./vauth/krb5_sspi.c \./vauth/ntlm.c \./vauth/ntlm_sspi.c \./vauth/oauth2.c \./vauth/spnego_gssapi.c \./vauth/spnego_sspi.c \./vauth/vauth.c \\./vquic/msh3.c \./vquic/ngtcp2.c \./vquic/quiche.c \./vquic/vquic.c \\./vssh/libssh2.c \./vssh/libssh.c \./vssh/wolfssh.c \\./vtls/bearssl.c \./vtls/gskit.c \./vtls/gtls.c \./vtls/hostcheck.c \./vtls/keylog.c \./vtls/mbedtls.c \./vtls/mbedtls_threadlock.c \./vtls/nss.c \./vtls/openssl.c \./vtls/rustls.c \./vtls/schannel.c \./vtls/schannel_verify.c \./vtls/sectransp.c \./vtls/vtls.c \./vtls/wolfssl.c \./vtls/x509asn1.c# Default rules for deployment.
#unix {
#    target.path = /usr/lib
#}
#!isEmpty(target.path): INSTALLS += target

五、编译实践

用QtCreator程序,打开004.curl-7.86.0.pro文件。

在这里插入图片描述

在windows下编译,形成:
在这里插入图片描述
在linux下编译,形成:
在这里插入图片描述
在macos下编译,形成:
在这里插入图片描述

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

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

相关文章

大模型实战营Day5笔记

大模型部署背景 大模型部署是指将训练好的模型在特定的软硬件环境中启动的过程,使模型能够接收输入并返回预测结果。大模型的内存开销巨大,7B模型仅权重需要14G内存。另外大模型是自回归生成,需要缓存Attention的 k/v。 LMDeploy 简…

超简单的OCR模块:cnocr

前言 毫无疑问的是,关于人工智能方向,python真的十分方便和有效。 这里呢,我将介绍python众多OCR模块中一个比较出色的模块:cnocr 模块介绍 cnocr是一个基于PyTorch的开源OCR库,它提供了一系列功能强大的中文OCR模型和…

小型园区组网实例

目录 拓扑需求IP规划路由配置交换机配置NAT配置ACL配置DHCP配置配置过程:配置结果: OSPF配置链路聚合配置配置过程: 网络测试 拓扑 需求 企业网络信息服务平台需实现功能:企业网站服务器、FTP服务器、DNS服务器。企业ip分配地址段…

阿里巴巴开源联邦学习框架FederatedScope

5月5日,阿里巴巴达摩院发布新型联邦学习框架FederatedScope,声称可以在不共享训练数据的情况下开发机器学习算法,从而保护隐私。,其源代码现已在Apache 2.0许可下发布在GitHub上。 介绍 该平台被描述为一个全面的联邦学习框架&a…

html 3D 倒计时爆炸特效

下面是代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>HTML5 Canvas 3D 倒计时爆炸特效DEMO演示</title><link rel"stylesheet" href"css/style.css" media"screen&q…

Ubuntu用gparted重新分配空间

ubuntu系统使用过程中安装系统时预先留的空间不够使用怎么办&#xff1f; 这么办&#xff01; 首先 使用df -h 查看当前空间使用情况 已经分配的空间重新规划 &#xff1f; 先将已分配的空间中的多余空间分离出来&#xff1b; 假设我想将挂载点/home下的一部分空间分给挂载…

BL120PM PLC网关,实现PLC协议转Modbus协议

随着物联网技术的迅猛发展&#xff0c;人们深刻认识到在智能化生产和生活中&#xff0c;实时、可靠、安全的数据传输至关重要。在此背景下&#xff0c;高性能的物联网数据传输解决方案——协议转换网关应运而生&#xff0c;广泛应用于工业自动化和数字化工厂应用环境中。 钡铼…

在linux部署Prometheus+Grafana+Exporter监控系统性能

Prometheus、Grafana和Report组件是什么&#xff1f; Prometheus、Grafana和Exporter是常用于系统监控和指标收集的组合。 Prometheus是一种开源的系统监控和警报工具。它可以收集各种指标数据&#xff0c;并提供强大的查询语言和灵活的警报规则&#xff0c;用于实时监控系统…

Prometheus配置Grafana监控大屏(Docker)

拉取镜像 docker pull grafana/grafana挂载目录 mkdir /data/prometheus/grafana -p chmod 777 /data/prometheus/grafana临时启动 docker run -d -p 3000:3000 --name grafana grafana/grafana从容器拷贝配置文件至对应目录 docker exec -it grafana cat /etc/grafana/gra…

Linux之安装配置CentOS7+换源

目录 一. 安装CentOS7 二. 配置CentOS7 三. 查看、设置IP地址 3.1 查看IP地址 3.2 设置IP地址 四. 使用Xshell连接Linux客户端 4.1 Xshell的下载 4.2 Xshell的使用 五. 换软件源 一. 安装CentOS7 博主是在虚拟机中进行安装的&#xff0c;大家也可以在虚拟机中跟着尝试一…

已解决Error:AttributeError: module ‘numpy‘ has no attribute ‘int‘.

文章目录 引言报错分析解决方案1&#xff1a;降低NumPy版本解决方案2&#xff1a;更改NumPy源码 结尾 引言 在Python编程中&#xff0c;NumPy是一个不可或缺的库&#xff0c;尤其在处理大规模数值计算时。但即使是这个强大的工具&#xff0c;也可能在使用过程中遇到问题。其中…

ZigBee学习(一)

文章目录 一、ZigBee介绍二、IEEE 802.15.42.1 物理层2.2 MAC层2.3 如何实现网络和设备寻址2.4 能量管理 三、ZigBee网络拓扑结构四、ZigBee配置参数 一、ZigBee介绍 ZigBee是一种基于IEEE 802.15.4标准的高级通信协议&#xff0c;它被设计用于低速率、低功耗和短距离无线通信&…

《移动通信原理与应用》——QPSK调制解调仿真

目录 一、QPSK调制与解调流程图&#xff1a; 二、仿真运行结果&#xff1a; 三、MATLAB仿真代码&#xff1a; 一、QPSK调制与解调流程图&#xff1a; QPSK调制流程图&#xff1a; QPSK解调流程图&#xff1a; 二、仿真运行结果&#xff1a; 1、Figure1:为发送端比特流情…

探索设计模式的魅力:一次设计,多次利用,深入理解原型模式的设计艺术

原型模式是一种设计模式&#xff0c;属于创建型模式的一种&#xff0c;它用于创建重复的对象&#xff0c;同时又能保持性能。在原型模式中&#xff0c;通过复制现有对象的原型来创建新对象&#xff0c;而不是通过实例化类来创建对象。这样做可以避免耗费过多的资源开销&#xf…

python-自动篇-办公-用Excel画画

文章目录 代码所遇问题ModuleNotFoundError: No module named xlsxwriterFileNotFoundError: [Errno 2] No such file or directory: 111.jpg 效果附件图片excel 代码 # coding: utf-8from PIL import Image from xlsxwriter.workbook import Workbookclass ExcelPicture(obje…

使用双异步后,如何保证数据一致性?

目录 一、前情提要二、通过Future获取异步返回值1、FutureTask 是基于 AbstractQueuedSynchronizer实现的2、FutureTask执行流程3、get()方法执行流程 三、FutureTask源码具体分析1、FutureTask源码2、将异步方法的返回值改为Future<Integer>&#xff0c;将返回值放到new…

1.21 day6 IO网络编程

网络聊天室 服务端 #include <myhead.h> #define PORT 8888 #define IP "192.168.122.48" struct MSG {char tyep;char name[20];char buf[128]; }; typedef struct Node {struct sockaddr_in cin;struct Node*next; }*node;int main(int argc, const char *…

提升认知,推荐15个面向开发者的中文播客

前言 对于科技从业者而言&#xff0c;无论是自学成才的程序员&#xff0c;还是行业资深人士&#xff0c;终身学习是很有必要的&#xff0c;尤其是在这样一个技术快速迭代更新的时代。 作为一个摆脱了时间和空间限制的资讯分享平台&#xff0c;播客&#xff08;Podcast&#x…

42 漏洞发现-操作系统之漏洞探针类型利用修复

目录 系统漏洞发现意义?漏洞类型危害情况?如何做好未卜先知?相关名词解释:漏洞扫描工具演示-Goby&#xff0c;Nmap&#xff0c;Nessus(操作)漏洞类型区分讲解-权限提升,远程执行等(思路)漏洞利用框架演示-Metasploit,Searchsploit等(操作)漏洞修复方案讲解说明-补丁,防护软件…

go和swoole性能比较

开发效率 Go语言是本质上是静态语言&#xff0c;开发效率稍差&#xff0c;但性能更强&#xff0c;更适合底层软件的开发 Swoole使用PHP语言&#xff0c;动态脚本语言&#xff0c;开发效率最佳&#xff0c;更适合应用软件的开发 IO模型 go语言使用单线程eventloop处理IO事件&…