【C++開源庫使用】使用libcurl開源庫發送url請求(http請求)去下載用戶頭像文件(附完整源碼)

目錄

1、libcurl介紹

2、libcurl庫源碼下載與編譯

3、調用libcurl庫的API接口實現http/https請求發送,實現頭像文件下載

4、發送圖片url下載圖片文件的完整代碼展示? ? ??

5、使用libcurl發送https請求時可能會遇到的兩個錯誤


? ? ? ? 在某SDK項目中,第三方廠商要在SDK界面(SDK帶UI界面)中顯示傳入人員的信息,其中包括人員頭像。第三方廠商提供人員頭像的完整url,SDK使用url將人員頭像顯示出來。后來選擇使用libcurl開源庫去實現url頭像的下載,本文詳細講述相關細節并給出相關實現代碼。

C++軟件異常排查從入門到精通系列教程(核心精品專欄,訂閱量已達8000多個,歡迎訂閱,持續更新...)https://blog.csdn.net/chenlycly/article/details/125529931C/C++實戰專欄(重點專欄,專欄文章已更新500多篇,訂閱量已達6000多個,歡迎訂閱,持續更新中...)https://blog.csdn.net/chenlycly/article/details/140824370C++ 軟件開發從入門到實戰(重點專欄,專欄文章已更新300多篇,歡迎訂閱,持續更新中...)https://blog.csdn.net/chenlycly/category_12695902.htmlVC++常用功能開發匯總(專欄文章列表,歡迎訂閱,持續更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++軟件分析工具從入門到精通案例集錦(專欄文章,持續更新中...)https://blog.csdn.net/chenlycly/article/details/131405795開源組件及數據庫技術(專欄文章,持續更新中...)https://blog.csdn.net/chenlycly/category_12458859.html網絡編程與網絡問題分享(專欄文章,持續更新中...)https://blog.csdn.net/chenlycly/category_2276111.html

1、libcurl介紹

? ? ? ?libcurl是一個免費開源的網絡傳輸庫(the multiprotocol file transfer library),支持ftp、ftps、http、https、telnet、ldap、pop3、smtp、rtmp、rtsp、smb等多種協議。libcurl中封裝了支持這些協議的網絡通信模塊,支持跨平臺,支持Windows,Unix,Linux等多個操作系統。libcurl提供了一套統一樣式的API接口,我們不用關注各種協議下網絡通信的實現細節,只需要調用這些API就能輕松地實現基于這些協議的數據通信。

? ? ? ?如果我們自己通過socket套接字編程去實現ftp、http、https、smtp、rtmp、rtsp等常用協議下的通信,先要和服務器建立連接,然后再進行協議的協商,協商完成后進行數據通信。協議協商的過程以及Socket網絡通信處理(包含各種通信異常的處理),會涉及到諸多的細節,會比較復雜,容易出錯,質量也沒法保證。一般我們會選擇libcurl等開源庫去實現這些協議下的數據通信,省時省力,通信質量也有保證。

? ? ? ?本文將使用libcurl庫去發http/https請求,去下載頭像文件。以前我們在實現郵件發送功能時,也用到了libcurl庫,使用其內部封裝的SMTP協議發送郵件,相關實戰案例,可以查看我的文章

VC++調用libcurl開源庫實現發送郵件的功能(附源碼)https://blog.csdn.net/chenlycly/article/details/121318616

2、libcurl庫源碼下載與編譯

? ? ? ?可以到curl官網curl,查看libcurl開源庫的詳細說明。

? ? ? ?我們可以自行下載libcurl庫的源碼并進行編譯,然后集成到項目中。到github的curl主頁https://github.com/curl/curl,下載源碼。

? ? ? ? libcurl庫及依賴庫的下載與編譯,在此就不詳細介紹了,可以查看我之前寫的完整編譯過程的文章:

詳解C++開源網絡傳輸庫libcurl的編譯過程https://blog.csdn.net/chenlycly/article/details/140718865

3、調用libcurl庫的API接口實現http/https請求發送,實現頭像文件下載

? ? ? ? 對于C++程序,不支持直接通過url顯示圖片(在瀏覽器中打開的網頁,則比較方便,內置一個url頭像節點,即可顯示圖片),要在程序中顯示圖片,則需要先將圖片下載到本地磁盤上,然后加載磁盤上的圖片文件進行顯示。

? ? ? ?以CSDN網頁中的圖片為例:https://i-blog.csdnimg.cn/blog_migrate/e0355e98506ba6127924d711c1bf87f1.png,可以直接在瀏覽器中輸入這個url,直接在瀏覽器中就可以看到圖片:

從服務器下載圖片并顯示均是瀏覽器完成的。這個圖片url是公開可見的,沒有登錄及權限控制,可以直接訪問。在SDK項目中,第三方客戶給的人員頭像url,就是這種公開可訪問的url。

? ? ? ?我們直接使用libcurl將url對應的http/https請求發出去,然后在http/https請求回應中將頭像文件數據返回回來,我們將圖片數據保存到磁盤文件中,然后將圖片顯示在程序中。

? ? ? 先調用curl_easy_init接口初始化libcurl庫,然后調用curl_easy_setopt(使用CURLOPT_URL選項)設置url請求地址(https://i-blog.csdnimg.cn/blog_migrate/e0355e98506ba6127924d711c1bf87f1.png,以CSDN圖片鏈接為例),正是通過該url的前綴確定具體使用哪種協議,此處使用的是https協議:

CURLcode return_code;
CURL* curl = curl_easy_init();
char* pHeadPicUrl = "https://i-blog.csdnimg.cn/blog_migrate/e0355e98506ba6127924d711c1bf87f1.png"; // 此處以csdn中的圖片為例
return_code = curl_easy_setopt(curl, CURLOPT_URL, pHeadPicUrl);

? ? ? ?在使用相關協議完成數據交互時,可能還要設置一些其他的信息,比如用戶名和密碼、是否校驗SSL證書等,都是通過調用curl_easy_setopt設置的:

return_code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);

關閉ssl驗證表示將不會驗證對方(服務器)的SSL證書。這意味著,即使服務器的證書是自簽名的、過期的、或者與請求的主機名不匹配,cURL也會繼續建立連接,而不會因為證書問題而失敗。

? ? ? ?本例中要下載圖片文件,在發送的url請求的回應中會攜帶圖片文件數據,這樣我們可以設置一個回調函數,用來接收圖片文件數據的回調:

// Hook up data handling function.
return_code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);

回調函數的實現如下:

static size_t
WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
{size_t realsize = size * nmemb;struct MemoryStruct *mem = (struct MemoryStruct *)userp;mem->memory = (char*)realloc(mem->memory, mem->size + realsize + 1);if (mem->memory == NULL) {/* out of memory! */printf("not enough memory (realloc returned NULL)\n");return 0;}memcpy(&(mem->memory[mem->size]), contents, realsize);mem->size += realsize;mem->memory[mem->size] = 0;return realsize;
}

? ? ? ?然后調用curl_easy_getinfo接口獲取http響應碼:

curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);

看看是否是請求成功的200。返回200表示請求圖片文件成功,則將回調過來的圖片數據(保存在內存中),寫到磁盤文件中,如下:

HANDLE handle;
handle = CreateFile(strHeadPicFilePath, GENERIC_WRITE, FILE_SHARE_READ,NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (handle == INVALID_HANDLE_VALUE)
{DWORD dwLastError = GetLastError();strLog.Format(_T("[DownloadHeadPicFunc] 創建圖片文件失敗:%s,GetLastError:%d."),strHeadPicFilePath, dwLastError);WriteLog(strLog);CloseHandle(handle);continue;
}DWORD dwNumByteWritten = 0;
WriteFile(handle, chunk.memory, chunk.size, &dwNumByteWritten, NULL);
CloseHandle(handle);
free(chunk.memory);

? ? ? ?在這里,給大家重點推薦一下我的幾個熱門暢銷專欄,歡迎訂閱:(博客主頁還有其他專欄,可以去查看)

專欄1:該精品技術專欄的訂閱量已達到10000多個,專欄中包含大量項目實戰分析案例,有很強的實戰參考價值,廣受好評!專欄文章持續更新中,已經更新到210篇以上!歡迎訂閱!)

C++軟件調試與異常排查從入門到精通系列文章匯總https://blog.csdn.net/chenlycly/article/details/125529931

本專欄根據多年C++軟件異常排查的項目實踐,系統地總結了引發C++軟件異常的常見原因以及排查C++軟件異常的常用思路與方法詳細講述了C++軟件的調試方法與手段詳細介紹分析C++軟件問題的常用分析工具,以圖文并茂的方式給出具體的項目問題實戰分析實例(詳細講述分析排查過程,很有實戰參考價值),帶領大家逐步掌握C++軟件調試與異常排查的相關技術,適合基礎進階和想做技術提升的相關C++開發人員!

考察一個開發人員的水平,一是看其編碼及設計能力,二是要看其軟件調試能力!所以軟件調試能力(排查軟件異常的能力)很重要,必須重視起來!能解決一般人解決不了的問題,既能提升個人能力及價值,也能體現對團隊及公司的貢獻!

專欄中的文章都是通過項目實戰總結出來的,包含大量項目問題實戰分析案例,有很強的實戰參考價值!專欄文章還在持續更新中,預計文章篇數能更新到300篇以上!

專欄2:(本專欄涵蓋了C++多方面的內容,是當前重點打造的專欄,訂閱量已達8000多個,專欄文章已經更新到500多篇,持續更新中...)

C/C++實戰進階(專欄文章,持續更新中...)https://blog.csdn.net/chenlycly/category_11931267.html

以多年的開發實戰為基礎,總結并講解一些的C/C++基礎與項目實戰進階內容,以圖文并茂的方式對相關知識點進行詳細地展開與闡述!專欄涉及了C/C++領域多個方面的內容,包括C++基礎及編程要點(模版泛型編程、STL容器及算法函數的使用等)、數據結構與算法C++11及以上新特性(開源代碼中可能會用到很多新特性(比如WebRTC開源庫),日常編碼中也會用到部分新特性,面試時也會頻繁地涉及到,學習新特性很有必要)、常用C++開源庫的介紹與使用(比如SQLite、libcurl、libwebsockets、libevent、jsoncpp/RapidJson、Redis、RabbitMQ、MongoDB、MQTT、ZooKeeper、OpenCV、FFmpeg、SDL、GStreamer、Live555、ReactOS等)、代碼分享(調用系統API、使用開源庫)、常用編程技術(動態庫、多線程、多進程、數據庫及網絡編程等)、軟件UI編程(Win32/duilib/QT/MFC)、C++軟件調試技術(引發C++軟件異常的常見原因分析與總結、排查C++軟件異常的手段與方法、分析C++軟件異常的基礎知識、使用常用軟件分析工具分析C++軟件問題、多個項目實戰問題分析案例分享等)、設計模式(單例模式、工廠模式、觀察者模式、狀態模式等)、網絡基礎知識與網絡問題分析進階內容(實戰問題分析實例分享)等。本專欄的內容都是建立在項目實踐的基礎上,來源于項目實戰,服務于項目實戰,很有實戰參考價值!

專欄3:??

C++常用軟件分析工具從入門到精通案例集錦匯總(專欄文章,持續更新中...)https://blog.csdn.net/chenlycly/article/details/131405795

常用的C++軟件輔助分析工具有SPY++、PE工具、Dependency Walker、GDIView、Process Explorer、Process Monitor、API Monitor、Clumsy、Windbg、IDA Pro等,本專欄詳細介紹如何使用這些工具去巧妙地分析和解決日常工作中遇到的問題,很有實戰參考價值!

專欄4:???

VC++常用功能開發匯總(專欄文章,持續更新中...)https://blog.csdn.net/chenlycly/article/details/124272585

將10多年C++開發實踐中常用的功能,以高質量的代碼展現出來。這些常用的高質量規范代碼,可以直接拿到項目中使用,能有效地解決軟件開發過程中遇到的問題。

專欄5:?

C++ 軟件開發從入門到精通(專欄文章,持續更新中...)https://blog.csdn.net/chenlycly/category_12695902.html

根據多年C++軟件開發實踐,詳細地總結了C/C++軟件開發相關技術實現細節,分享了大量的實戰案例,很有實戰參考價值。


4、發送圖片url下載圖片文件的完整代碼展示? ? ??

? ? ? ? 代碼中通過libcurl庫發送http/https請求,會調用到libcurl庫中的curl_easy_init、curl_easy_setopt、curl_easy_perform等接口,要先包含libcurl庫的頭文件curl.h,然后引入libcurl的導入庫libcurl.lib

? ? ? ?發送圖片url下載圖片文件的完整代碼如下所示:

struct MemoryStruct {char *memory;size_t size;
};static size_t
WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
{size_t realsize = size * nmemb;struct MemoryStruct *mem = (struct MemoryStruct *)userp;mem->memory = (char*)realloc(mem->memory, mem->size + realsize + 1);if (mem->memory == NULL) {/* out of memory! */printf("not enough memory (realloc returned NULL)\n");return 0;}memcpy(&(mem->memory[mem->size]), contents, realsize);mem->size += realsize;mem->memory[mem->size] = 0;return realsize;
}void DownLoadHeadPic()
{CURLcode return_code;CURL* curl = curl_easy_init();CString strLog;char* pHeadPicUrl = https://i-blog.csdnimg.cn/blog_migrate/e0355e98506ba6127924d711c1bf87f1.png"// 1、使用libcurl發送頭像url請求(http請求),下載頭像文件數據// Set remote URL.return_code = curl_easy_setopt(curl, CURLOPT_URL, pHeadPicUrl);//return_code = curl_easy_setopt(curl, CURLOPT_USERAGENT, useragent);//return_code = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);return_code = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);// Don't bother trying IPv6, which would increase DNS resolution time.return_code = curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);// Don't wait forever, time out after 30 seconds.return_code = curl_easy_setopt(curl, CURLOPT_TIMEOUT, 5);return_code = curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);// Response information.int httpCode(0);//std::unique_ptr<std::string> httpData(new std::string());struct MemoryStruct chunk;chunk.memory = (char*)malloc(1); ?/* will be grown as needed by the realloc above */chunk.size = 0; ? ?/* no data at this point */// Hook up data handling function.return_code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);// Hook up data container (will be passed as the last parameter to the// callback handling function). ?Can be any pointer type, since it will// internally be passed as a void pointer.return_code = curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);// Run our HTTP GET command, capture the HTTP response code, and clean up.return_code = curl_easy_perform(curl);if (return_code != CURLE_OK){strLog.Format(_T("[DownloadHeadPicFunc] curl_easy_perform執行失敗,返回的錯誤碼:%d, 頭像url:%s."),(int)return_code, CopyCharToCStringT(pHeadPicUrl));WriteLog(strLog);continue;}return_code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);if (return_code != CURLE_OK){strLog.Format(_T("[DownloadHeadPicFunc] curl_easy_getinfo執行失敗,返回的錯誤碼:%d, 頭像url:%s."),(int)return_code, CopyCharToCStringT(pHeadPicUrl));WriteLog(strLog);continue;}else{if (httpCode != 200){strLog.Format(_T("[DownloadHeadPicFunc] httpCode錯誤碼:%d, 頭像url:%s."),httpCode, CopyCharToCStringT(pHeadPicUrl));WriteLog(strLog);continue;}}// 2、構建頭像的名稱,使用用戶uuid加上url中的文件后綴名// 比如D:\xxxxx\47491a5147124ec8b698ae39c5540432.pngCString strHeadPicFilePath;// 此處指定頭像文件的存放路徑及頭像文件名稱的代碼省略// 3、將頭像文件數據寫到磁盤文件中HANDLE handle;handle = CreateFile(strHeadPicFilePath, GENERIC_WRITE, FILE_SHARE_READ,NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if (handle == INVALID_HANDLE_VALUE){DWORD dwLastError = GetLastError();strLog.Format(_T("[DownloadHeadPicFunc] 創建圖片文件失敗:%s,GetLastError:%d."),strHeadPicFilePath, dwLastError);WriteLog(strLog);CloseHandle(handle);continue;}DWORD dwNumByteWritten = 0;WriteFile(handle, chunk.memory, chunk.size, &dwNumByteWritten, NULL);CloseHandle(handle);free(chunk.memory);
}

5、使用libcurl發送https請求時可能會遇到的兩個錯誤

? ? ? ?如果發送的是https請求,可能會遇到兩個錯誤,即curl_easy_perform返回兩個錯誤碼:

1)CURLE_UNSUPPORTED_PROTOCOL(當前庫不支持協議)

? ? ? ?當前庫不支持https協議。https通信需要進行SSL協商,需要用于SSL協議協商的openssl庫。應該是編譯libcurl時選擇的編譯配置選項有問題,應該選擇如下圖中帶OPENSSL的配置:

點擊VS菜單欄中的生成 --> 配置管理器,即可以打開上圖中的窗口。

2)CURLE_SSL_CACERT(SSL協商需要的CA證書有問題)

? ? ? ?找不到SSL協議協商所需要的證書。發https請求進行SSL協商時,需要用到CA證書,如果本地沒有CA證書,則curl_easy_perform會返回CURLE_SSL_CACERT錯誤。解決辦法是,直接SSL證書驗證選項關閉掉:

curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913434.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913434.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913434.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在Docker容器中更改,保存為新的鏡像

# 1. 進入原始容器 docker run -it --name mydev ubuntu:20.04 /bin/bash# 2. 在容器內做大量修改 apt update && apt install -y python3 mkdir /app && echo print("Hello from modified container") > /app/app.py# 3. 退出容器 exit# 4. 保存…

【網絡與爬蟲 13】智能偽裝:Scrapy-Fake-UserAgent反檢測技術實戰指南

【網絡與爬蟲 13】智能偽裝&#xff1a;Scrapy-Fake-UserAgent反檢測技術實戰指南 關鍵詞&#xff1a;Scrapy-Fake-UserAgent、反爬蟲、智能偽裝、瀏覽器指紋、用戶代理、爬蟲檢測規避、自動更新UA 摘要&#xff1a;本文深入解析Scrapy-Fake-UserAgent庫的工作原理與應用技巧&a…

前端開發常見問題

前端開發常見問題技術文章大綱 引言 簡要介紹前端開發在當前技術環境中的重要性&#xff0c;以及開發者常遇到的挑戰和痛點。 瀏覽器兼容性問題 不同瀏覽器對CSS、JavaScript的支持差異常見的Polyfill和轉譯工具&#xff08;如Babel、PostCSS&#xff09;如何利用Can I Use…

文心開源大模型ERNIE-4.5-0.3B-Paddle私有化部署保姆級教程及技術架構探索

一起來輕松玩轉文心大模型吧&#x1f449;一文心大模型免費下載地址: https://ai.gitcode.com/theme/1939325484087291906 前言 2025年6月30日&#xff0c;百度正式開源文心大模型4.5系列&#xff08;ERNIE 4.5&#xff09;&#xff0c;涵蓋10款不同參數規模的模型&#xff0…

【操作系統】內存管理

要求&#xff1a; 1、在該實驗中&#xff0c;采用可變分區方式完成對存儲空間的管理&#xff08;即存儲空間的分配與回收工作&#xff09;。 2、設計用來記錄主存使用情況的數據結構&#xff1a;已分區表和空閑分區表。 3、在設計好的數據結構上設計一個主存分配算法&#xff0…

【算法筆記】5.LeetCode-Hot100-矩陣專項

1. 矩陣置零(t73) 中等難度&#xff0c;題目示例如下&#xff1a; 給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用原地算法。示例 1&#xff1a; 輸入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 輸出&…

ORACLE 日常查詢

一. 查詢索引相關1. 查詢索引所在的表空間&#xff0c;單個索引的大小SELECT ui.table_name, us.segment_name AS index_name, us.tablespace_name,ROUND(SUM(us.bytes) / 1024 / 1024 / 1024, 2) AS total_size_GB FROM dba_indexes ui JOIN dba_segments us ON ui.index_name…

【DeepSeek實戰】17、MCP地圖服務集成全景指南:高德、百度、騰訊三大平臺接入實戰

引言:為什么MCP是地圖服務的下一代革命? 在數字化時代,位置服務已成為電商、出行、物流等行業的核心基礎設施。但單一地圖服務商的局限性日益凸顯:某外賣平臺因高德地圖API突發故障導致30分鐘訂單配送延遲,某打車軟件因百度地圖路線規劃偏差引發用戶投訴激增,某物流企業…

設計模式之【動態代理】

目錄 動態代理中存在的概念 JDK動態代理 代理工廠【ProxyFactory】實現【InvocationHandler】 目標類的接口【TargetInterface】 目標類【Target】實現了接口 測試類【JDKDynamicProxyTest】 CGLIB動態代理 添加Maven依賴 代理工廠【ProxyFactory】實現【MethodInterc…

【Linux驅動-快速回顧】一次性快速回顧TTY體系知識點(新手友好)

我將遵循一條嚴格的“問題驅動”和“演進”的邏輯線索來構建整個TTY知識體系。每引入一個新概念&#xff0c;都是為了解決前一個階段出現的問題。這樣&#xff0c;你不僅能知道“是什么”&#xff0c;更能深刻理解“為什么是這樣設計的”。 第〇階段&#xff1a;最原始的需求 …

深入淺出:讓機器聽懂世界的耳朵——梅爾頻率倒譜系數(MFCCs)

深入淺出&#xff1a;讓機器聽懂世界的耳朵——梅爾頻率倒譜系數&#xff08;MFCCs&#xff09; 在人工智能的浪潮中&#xff0c;語音識別、聲紋支付、音樂推薦等技術早已融入我們的日常生活。你是否曾好奇&#xff0c;計算機是如何理解并區分各種復雜的聲音信號的&#xff1f;…

Ubuntu22.04安裝/使用Gazebo時踩的一些坑

首先&#xff0c;本人原本打算安裝gazebo11的&#xff0c;因為官方好像不支持ubuntu22.04&#xff0c;所以要通過PPA和ROS2 humble來安裝&#xff0c;安裝過程跟著教程來的&#xff0c;也就是下面這篇 ubuntu22.04安裝gazebo11&#xff08;ROS2 Humble&#xff09;-CSDN博客 …

CPT203-Software Engineering: Introduction 介紹

目錄 1.專業名詞定義 1.1計算機軟件的定義 1.2軟件系統的定義 1.3軟件工程的定義 2.軟件的失敗與成功 2.1 失敗 2.2 成功 3.軟件開發 Professional software development 3.1 分類 3.2 專業軟件開發 professional software development 3.3專業軟件開發產品特性 3.4…

診斷工程師進階篇 --- 車載診斷怎么與時俱進?

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

奧特曼論人工智能、OpenAI與創業

來自Y Combinator的YouTube視頻&#xff0c;展示了OpenAI首席執行官薩姆奧特曼分享的深刻見解。他討論了OpenAI從一個看似瘋狂的通用人工智能&#xff08;AGI&#xff09;夢想&#xff0c;如何發展成為一個全球性的現象。奧特曼強調了早期決策的關鍵性、吸引頂尖人才的策略&…

React Ref使用

受控與非受控組件 Ref 1.獲取原生dom 類組件中&#xff1a;在componentDidMount方法內使用document.getElementById的方法獲取到dom元素 1 目標dom增加ref屬性 設置為字符串 <h2 reftitleref></h2>function changeRef(){this.refs.titleref.innerHtml }2 函數組件…

地下管線安全的智能監測先鋒:智能標志樁圖像監測裝置解析?

?在城市與鄉村的地下&#xff0c;縱橫交錯的管線是能源與信息傳輸的關鍵通道。但深埋地下的電纜、燃氣管道等設施&#xff0c;因難以直觀監測&#xff0c;面臨施工誤挖、自然災害等風險。傳統防護手段力不從心&#xff0c;TLKS-PAZ01 智能標志樁圖像監測裝置的誕生&#xff0c…

Camera相機人臉識別系列專題分析之十六:人臉特征檢測FFD算法之libcvface_api.so數據結構詳細注釋解析

【關注我&#xff0c;后續持續新增專題博文&#xff0c;謝謝&#xff01;&#xff01;&#xff01;】 上一篇我們講了&#xff1a; 這一篇我們開始講&#xff1a; Camera相機人臉識別系列專題分析之十六&#xff1a;人臉特征檢測FFD算法之libcvface_api.so數據結構詳細注釋解析…

【字節跳動】數據挖掘面試題0012:數據分析、數據挖掘、數據建模的區別

文章大綱 數據分析、數據挖掘、數據建模的區別一、核心定義與目標二、技術方法差異三、應用場景對比四、三者的關聯與遞進關系五、面試應答策略 數據分析、數據挖掘、數據建模的區別 一、核心定義與目標 數據分析&#xff1a; 是對已有的數據進行收集、清洗、整理&#xff0c;并…

預警:病毒 “黑吃黑”,GitHub 開源遠控項目暗藏后門

在開源生態蓬勃發展的當下&#xff0c;黑客們也將黑手伸向了代碼共享平臺。當黑產開發者以為在共享 “行業秘笈” 時&#xff0c;殊不知已經掉入了黑客布置的陷阱 —— 看似方便的后門遠程控制源碼和游戲作弊外掛源碼等 “圈內資源”&#xff0c;實則是植入了惡意代碼的投毒誘餌…