yue-fang-readfog

feeds.twtxt.net

No description provided.

Recent twts from yue-fang-readfog

Go 實現的一個 bitset,設計思想非常棒,值得參考收藏!
這兩日讀了一個實現二維碼生成的庫。其中的 bitset 設計得非常好,就摘抄記錄下來,與大家一起分享。bitset 實現一個可擴展的 bit 集合,可以添加 bit 和查看 bit。它在二維碼生成中,用來將編碼後的內容協助生成位圖,然後通過位圖進行繪製二維碼。二維碼的黑白格子正好用二進制 0 和 1 來表示。 下面開始詳細講解這個功能設計: 一、我們使用一個結構體來存儲 bit 序列。Bits ⌘ Read more

⤋ Read More

Go 語言學習筆記:深入理解匿名函數與閉包
一、引言—-在 Go 語言中,匿名函數與閉包是兩個重要的概念,它們增強了 Go 語言的表達力和功能性,使得代碼更加簡潔和強大。 本文將深入探討 Go 語言中的匿名函數與閉包,幫助讀者更好地理解和應用這兩個概念。匿名函數在 Go 語言中提供了一種靈活的方式來定義即用即拋的函數邏輯,減少了命名負擔並且可以直接在代碼中嵌入。閉包則允許匿名函數捕獲並持有其定義時作用域中的變量,使得函數具有狀態,這對於 ⌘ Read more

⤋ Read More

Go 線程同步
線程同步—-通常在 Go 語言中有兩種方法可以用來做線程同步sync.Cond channel channel 的很好理解,當我們從一個 channel 中接收數據的時候,如果裏面沒有數據,那我們直接就阻塞在那裏了;在這篇文章中就來看看怎麼使用 sync.Cond 完成同步sync.Cond———「定義結構體和方法」type BlueberryInt struct { ⌘ Read more

⤋ Read More

Golang 中 JSON 操作的 5 個常見陷阱(建議收藏!)
JSON 是許多開發人員在工作中經常使用的一種數據格式。它一般用於配置文件或網絡數據傳輸等場景。由於其簡單、易懂、可讀性好,JSON 已成爲整個 IT 界最常用的格式之一。對於這種情況,Golang 和許多其他語言一樣,也提供了標準庫級別的支持, encoding/json

⤋ Read More

使用 Go 語言的 bytes 包高效地操作字符串
在編程語言 Go 中,bytes包提供了一系列用於操作[]byte類型的函數,這非常有用,特別是當你需要處理大量的字符串和切片時。通過使用bytes.Buffer,你可以高效地構建和修改字符串,而不必擔心頻繁的內存分配和字符串拼接導致的性能問題。下面,我們將深入瞭解如何使用bytes.Buffer,並通過豐富的示例演示它的強大功能。Buffer 的基本用法————bytes.Buf ⌘ Read more

⤋ Read More

Golang 實現搜索引擎
概述–主要包括三個部分:網絡爬蟲: 爬取儘可能多的網頁; 網頁分詞: 利用jieba庫對網頁內容進行分詞, 並存儲分詞結果(格式爲: 文檔 id, 文檔長度, 詞頻, 分詞偏移 - 文檔 id, 文檔長度, 詞頻, 分詞偏移); 搜索頁面: 提供一個前端頁面, 用戶輸入搜索詞, 基於分詞相關性, 返回結果; 不要害怕,整個邏輯很簡單,邏輯拆分的很獨立,便於理解。項目地址: ht ⌘ Read more

⤋ Read More

Golang 狀態機設計模式
本文介紹了 Golang 狀態機模式的一個實現示例,通過該模式,可以解耦調用鏈,有助於實現測試友好的代碼,提高代碼質量。原文: Go State Machine Patterns

⤋ Read More

async-await 函數到底要不要加 try catch ?
作者:EthanZhou https://juejin.cn/post/7213362932423376933前言–寫異步函數的時候,promise 和 async 兩種方案都非常常見,甚至同一個項目裏,不同的開發人員都使用不同的習慣, 不過關於兩者的比較不是本文關注的重點,只總結爲一句話:“async 是異步編程的終極解決方案”。當使用 async 函數的時候,很多文章都說建議用 t ⌘ Read more

⤋ Read More

從頭預訓練一個 LLaMA 3 超級 mini 杯
作者:Xode 原文:https://zhuanlan.zhihu.com/p/695130168 整理:青稞 AI這次打算用 Hugging Face 的 API 來寫一份預訓練大(小)模型的代碼,也就是用 Trainer 來做預訓練。由於只是想練習一下,因此打算選一個極小模型 + 小數據集。爲了貼近主流,於是打算預訓練一個 LLaMA 3——不過是超迷你版本,大小僅不到 20M ⌘ Read more

⤋ Read More

一文帶你瞭解大模型——智能體(Agent)
作者:lucasgftang大語言模型 vs 人類大語言模型很強大,就像人類的大腦一樣擁有思考的能力。如果人類只有大腦,沒有四肢,沒有工具,是沒辦法與世界互動的。如果我們能給大模型配備上四肢和工具呢?大模型是不是就會打破次元壁,從數字世界走向現實世界,與現實世界實現夢幻聯動呢?大語言模型(後文將用 LLM 指代)可以接受輸入,可以分析 & 推理、可以輸出文字 \ 代碼 \ 媒體。然而,其無法像人類 ⌘ Read more

⤋ Read More

一張圖理解微服務架構設計
前言當前,微服務架構在很多公司都已經落地實施了,下面用一張圖簡要概述下微服務架構設計中常用組件。不能說已經使用微服務好幾年了,結果對微服務架構沒有一個整體的認知,一個只懂搬磚的程序員不是一個好碼農。流量入口 Nginx在上圖中可以看到,Nginx 作爲整個架構的流量入口,可以理解爲一個外部的網關,它承擔着請求的路由轉發、負載均衡、動靜分離等功能。作爲一個核心入口點,Nginx 肯定要採用多節點部署 ⌘ Read more

⤋ Read More

Go 語言中,HTTP 請求流式是如何寫入 body 的?
最近在開發一個功能時,需要通過 http 協議上報大量的日誌內容,但是在 Go 標準庫裏的 http client 的 API 是這樣的: http.NewRequest(method, url string, body io.Reader)body 是通過 io.Reader 接口來傳遞,並沒有暴露一個 io.Writer 接口來提供寫入的辦法,先來看看正常情況下怎麼寫入一個 body ,示例 ⌘ Read more

⤋ Read More

Linux 內核調試之使用模塊參數
開場白環境: 處理器架構:arm64 內核源碼:linux-6.6.29 ubuntu 版本:20.04.1 代碼閱讀工具:vim+ctags+cscope 本文主要介紹內核開發中常用的模塊傳參手段,通過模塊參數傳遞可以通過用戶態來獲取內核的一些信息,也可以通過用戶態寫入一些值來控制內核相關行爲。一般內核開發者很喜歡使用模塊傳參來調試內 ⌘ Read more

⤋ Read More

手把手教你寫一個前端腳手架
腳手架是什麼,相信各位已經熟悉得不能再熟悉了,畢竟無論是 vue 開發者(vue-cli)還是 react(create-react-app)開發者,他們都有各自的腳手架,個人雖是用 react 更多,但不得不說是更喜歡 vue-cli 的,它的插件機制非常有意思,雖不如 webpack 的 plugin 那麼方便,但也很強大。不過再講這強大的功能之前,原諒我先水一篇腳手架的基礎。腳手架會分兩篇來 ⌘ Read more

⤋ Read More

換掉 ES? Redis 官方搜索引擎,效率大幅提升
RediSearch 是一個 Redis 模塊,爲 Redis 提供查詢、二次索引和全文搜索。要使用 RediSearch,首先要在 Redis 數據上聲明索引。然後可以使用重新搜索查詢語言來查詢該數據。RedSearch 使用壓縮的反向索引進行快速索引,佔用內存少。RedSearch 索引通過提供精確的短語匹配、模糊搜索和數字過濾等功能增強了實現特性基於文檔的多個字段全文索引 高性能增 ⌘ Read more

⤋ Read More

解讀大模型應用的可觀測性
似乎在一夜之間,每個 IT 企業的待辦事項清單以及招聘啓事都包含了生成式 AI,基於大模型的應用已經在改變人們的工作、學習、寫作、設計、編碼、旅行和購物的方式,而且可能只是冰山一角。大模型應用並不神祕,仍然是一種軟件系統。就像使用一個庫或者 web 服務,以及 SaaS 乃至雲計算服務,我們需要對庫、服務、SaaS 以及平臺進行評估、監控和追蹤,這可以被粗略地認爲是它們的可觀測性。對大模型應用而言 ⌘ Read more

⤋ Read More

使用查詢分離後從 20s 優化到 500ms
大家好,我是不才陳某~冷熱分離固然是一個性價比高的解決方案,但也並不是銀彈,仍然有諸多限制,比如:查詢冷數據慢 業務無法修改冷數據 冷數據多到一定程度系統依舊扛不住 此時如果需要解決以上問題,可以採用另外一種方案:使用 查詢分離 優化業務主表數據大查詢緩慢的問題什麼是查詢分離?——–查詢分離從字面上來說非常容易理解,其實就是在寫數據時保存一個備份數據到另外的存儲系統,在 ⌘ Read more

⤋ Read More

系統設計 - 秒殺系統設計
文 | 蔡佳新 (轉載請註明出處)公衆號:DDD 和微服務編輯:少個分號秒殺活動是大家都熟悉的購物方式。通常的流程是這樣的:商家設定活動開始和結束時間,以及投入的庫存量。在活動即將開始之際,買家會不斷刷新商品詳情頁,一旦看到購買按鈕變爲可點擊狀態,便立即點擊購買、下單並結算,完成商品的購買過程。當商品庫存被搶空或者活動結束時,商品變爲不可售狀態,買家無法繼續購買。一些耳熟能詳的秒殺活動案例包括小米 ⌘ Read more

⤋ Read More

Next-Admin,一款基於 Nextjs 開發的開箱即用的中後臺管理系統 -全劇終-
hello,大家好,我是徐小夕。之前和大家分享了很多可視化,零代碼和前端工程化的最佳實踐,今天繼續分享一下最近開源的 Next-Admin 項目的最新更新。這次更新是 1.0 版本最後一次更新,也根據用戶反饋的問題做了一些優化,比如:流程編排模塊 集成在線電子表格 支持可視化搭建模塊(拖拽,參考線,吸附,多選功能等) 支持瀑布流列表 AI 問答模塊 支持基礎的 JWT ⌘ Read more

⤋ Read More

消息隊列的 6 種經典使用場景和 Kafka 架構設計原理詳細解析
我是碼哥,可以叫我靚仔。今天來聊一聊 Kafka 消息隊列的使用場景和核心架構實現原理,幫助你全面瞭解 Kafka 其內部工作原理和設計理念。。Apache Kafka 是一個高吞吐量、分佈式的流處理平臺,廣泛應用於實時數據管道和流處理應用中。Kafka 以其高性能、低延遲、擴展性和可靠性,成爲了大數據生態系統中的重要組件。消息隊列有什麼作用————消息隊列是一種進程間通信或者同一 ⌘ Read more

⤋ Read More

Rust 中的 new type 模式
在 Rust 中,newtype 模式(有時也被稱爲 “type alias with zero-sized type” 或 “wrapper type”)是一種使用結構體(通常只包含一個字段)來定義新類型的模式。使用 newtype 模式,可以爲現有類型定義新的類型,併爲這些新類型提供自定義行爲或限制。這樣做有助於在編譯時捕獲類型錯誤,並提高代碼的可讀性和可維護性。直接看個簡單的例子。假設有兩個 ⌘ Read more

⤋ Read More

Rust:Trait 和泛型的高級用法
在這篇文章中,我們將快速複習一下 Rust 的 trait 和泛型,以及實現一些更高級的 trait 邊界和類型簽名。快速回顧一下 Rust 的 Trait編寫一個 Rust trait,如下:pub trait MyTrait {    fn somemethod(&self) -  String;}我們定義一個 Struct 類型來實現 MyTrait:struct MyStruct;imp ⌘ Read more

⤋ Read More

Go 項目文件命名規範是什麼?
計算機科學中只有兩件難事:緩存失效和命名。—— 菲爾 · 卡爾頓(Phil Karlton)。在編程世界中,選擇正確的命名約定是打開可讀和可維護代碼大門的重要途徑。在使用 Go 語言開發大型項目時,文件命名是構建清晰項目結構的關鍵一環,一個合理的文件命名規範不僅能提高開發效率,還能降低團隊協作中的溝通成本。在這篇博文中,我們將深入探討 Go 中命名的最佳實踐。在探討 Go 文件命名規範之前,我 ⌘ Read more

⤋ Read More

Google 官方發佈 Go 語言編碼規範
在現代軟件開發中,代碼的可讀性和一致性是至關重要的。尤其是當團隊規模擴大時,遵循一致的編碼規範可以顯著提高代碼的可維護性和團隊協作效率。本文將深入探討 Go 語言的 Google 編碼規範,並結合具體示例,幫助你在實際開發中應用這些規範。爲什麼需要編碼規範?———-編碼規範不僅僅是 “如何寫代碼” 的指導方針,它更是團隊協作的基石。遵守編碼規範可以:提高代碼的可讀性:一致的代碼風格使得 ⌘ Read more

⤋ Read More

如何用 Rust 讀取 JSON 文件、YAML 文件和 TOML 文件?
處理文件是軟件工程中一個棘手但不可避免的部分,作爲開發人員,經常需要從外部源加載信息以在項目中使用。在這篇文章中,我們將學習如何用 Rust 編程語言讀取 JSON 文件、YAML 文件和 TOML 文件。使用以下命令創建一個 Rust 新項目:cargo new sampleproject使用 Serde 框架解析 JSONSerde 是一個框架,用於高效、通用地序列化和反序列化 Rust 數據 ⌘ Read more

⤋ Read More

利用 DNS 隧道進行追蹤和掃描
什麼是 DNS 隧道DNS 隧道是一種利用 DNS 協議進行數據傳輸的技術。在網絡中, DNS 通常用於將域名解析爲對應的 IP 地址, 但是它也可以被利用來傳輸數據, 而不僅僅是域名和 IP 地址之間的映射關係。實現 DNS 隧道的基本思想是將數據在 DNS 查詢和響應的過程中進行隱藏傳輸。具體來說, 就是可以通過在 DNS 請求和響應中嵌入數據, 並利用域名解析請求和響應的特性來傳輸數據。通常 ⌘ Read more

⤋ Read More

curl 實戰手冊:面對複雜網絡環境的利器
curl 是一個功能強大的命令行工具,用於傳輸數據。它支持多種協議,包括 HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP 等。curl 是一個非常靈活的工具,可以用於發送請求、上傳數據、下載文件等,是開發者、系統管理員和終端用戶常用的工具之一。以下是 curl 的一些詳解和使用案例。安裝 curl大多數 Unix-like 系 ⌘ Read more

⤋ Read More

深入理解內存映射:mmap 映射的背後原理以及和共享內存的差異
引言———在我們探索現代計算領域的奧祕時,我們往往會發現,技術的進步不僅是對硬件和軟件的不斷革新,更是對人類思維方式的深刻影響。正如《查拉圖斯特拉如是說》中提到的:“人類的偉大不在於他是什麼,而在於他能成爲什麼。” 這句話在技術世界中同樣適用。內存映射(Memory Mapping)作爲一項關鍵的計算機技術,正是這種思維進步的具體體現。在傳統的文件處理方法中,我們通常依賴於順序的讀寫操 ⌘ Read more

⤋ Read More

一張圖看懂 DNS 域名解析全過程
相信大家在平時工作中都離不開 DNS 解析,DNS 解析是互聯網訪問的第一步,無論是使用筆記本瀏覽器訪問網絡還是打開手機 APP 的時候,訪問網絡資源的第一步必然要經過 DNS 解析流程。下面這張圖,詳細說明了一個 DNS 域名解析的全過程:一、什麼是 DNS———DNS,全稱 Domain Name System,域名系統,是一個記錄域名和 Ip 地址相互映射的一個系統,能夠將用戶訪 ⌘ Read more

⤋ Read More

350 行 C 代碼實現 epoll reactor 模型
有了 epoll 爲什麼還需要 reactor?—————————-響應快,不必爲單個同步事件所阻塞,雖然 Reactor 本身依然是同步的; 編程相對簡單,可以最大程度的避免複雜的多線程及同步問題,並且避免了多線程 / 進 程的切換開銷; 可擴展性,可以方便的通過增加 Reactor 實例個數來充分利用 CPU 資源; 可複用性,reacto ⌘ Read more

⤋ Read More

告別 Dockerfile,擁抱 docker init 構建 Docker 鏡像
概述–Docker 是一個開源的應用容器引擎,它允許開發者打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口,更重要的是容器性能開銷極低。什麼是 docker init?—————-docker init 是一個命令行應用程序,可幫助初始化項目中的 Docker 資源。它根據 ⌘ Read more

⤋ Read More

微服務架構設計模式詳解 -5 種主流模式-
大家好,我是 mikechen。微服務架構是大型網站的必經之路,下面我就全面來詳解 5 大微服務架構設計模式 @mikechen微服務架構之前談過微服務是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,服務之間採用輕量級的通信機制互相溝通,每個服務都圍繞着具體業務進行構建,並且能夠被獨立地部署到生產環境。如下圖所示:爲什麼需要微服務架構從生產力和系統的複雜性這兩個方面來看,公司一開始的時候, ⌘ Read more

⤋ Read More

在 Golang 中不要簡單的返回 err
相反, 添加相關的調試細節。有些人喜歡抱怨 Go 需要編寫大量的 “ iferr!=nil{returnerr}” 代碼塊。這些人並沒有真正理解 Go 的錯誤處理機制。實際上, 他們抱怨的正是處理 Go 錯誤的完全錯誤方式: returnerr是一種反模式。讓我通過一些示例代碼來解釋我的意思: 一個用於配置 mTLS

⤋ Read More

Rust 中的集成測試工具:Testcontainers
在軟件工程的廣闊世界中,測試在確保應用程序的可靠性、穩定性和性能方面扮演着不可或缺的角色。在各種測試類型中,集成測試作爲一個關鍵階段脫穎而出,驗證系統的不同組件之間的無縫交互。但是,集成測試,特別是在處理數據庫和消息代理等外部依賴關係時,可能會很複雜。在本文中,我們將開始在 Rust 中使用強大的工具 Testcontainers 來掌握集成測試。該工具簡化了爲集成測試啓動 Docker 容器的過 ⌘ Read more

⤋ Read More

一致性哈希的基本概念及其 Golang 實現
在大規模分佈式系統的世界中,高效地管理和分配數據是一個關鍵挑戰。一種廣泛使用的技術是一致性哈希。這種方法確保數據在多個服務器之間均勻分佈,即使服務器的數量隨時間變化也是如此。本文將探討水平擴展、簡單哈希和一致性哈希的概念,並提供一個 Go 語言的示例實現。水平擴展在分佈式系統中,數據通常無法容納在單個服務器上。爲了處理大規模數據,數據被分佈在多臺機器上,這個過程稱爲水平擴展或分片。爲了確保可預測的 ⌘ Read more

⤋ Read More

Clickhouse-Bitmap 實現用戶畫像中海量用戶的圈選
1. 圈客實現我們知道用戶畫像最主要的功能就是實現分客營銷分客分析的功能,我們也介紹過可以使用畫像寬表可以便捷的創建想要的客羣,具體實現思路將 就是將 Hive 表(大數據平臺開發的標籤寬表)中的數據同步到 ClickHouse 中進行緩存,人羣圈選引擎可以從 ClickHouse 中直接查詢到滿足條件的 UserId 然乎進行後續的業務開展。比如江蘇省中年男性用戶,所有的標籤拼接到一張數據表中並 ⌘ Read more

⤋ Read More

探索 Go 語言數據庫查詢的終極指南:深入解析 GORM 的強大查詢功能
一、GORM 基本查詢1、基本查詢func (c UserController) UserSelect() { //1、查詢id=3的用戶 user := models.User{Id: 3} models.DB.Find(&user) //2、查詢所有數據 user := []models.User{} result := models.DB.Find(&user) //5 (統計 ⌘ Read more

⤋ Read More

深入理解內存映射:高效處理大型文件和數據
內存映射是一種操作系統提供的機制,它將磁盤文件或其他設備的數據映射到進程的虛擬地址空間中的一段連續內存區域。通過內存映射,這些數據可以像訪問內存一樣直接讀取和寫入,而無需通過傳統的讀寫操作進行 IO 訪問。具體而言,內存映射允許將一個文件或設備上的數據塊作爲一個連續的內存區域來對待。當應用程序需要訪問該文件或設備時,它可以直接從該內存區域中讀取或寫入數據,而不需要通過使用 read()、write ⌘ Read more

⤋ Read More

JS 中的二進制散列值和權限設計
不管是前端還是後端的夥伴,在工作中會經常遇到權限控制的場景,業務上無非就幾種權限:頁面權限、操作權限、數據權限,不同公司根據業務需要都採取不同的方法區控制權限,我們這裏討論一下使用 JavaScript 中的位運算符來控制權限。進制類型——–JavaScript 中提供的進製表示方法有四種:十進制、二進制、十六進制、八進制。 對於數值字面量,主要使用不同的前綴來區分:十進制:取值數字 ⌘ Read more

⤋ Read More

什麼是 RAG 系統?
下面是一個簡單的基於 RAG 的聊天機器人的例子,用於查詢您的私人知識庫。第一步是以適合查詢的格式存儲內部文檔的知識。我們通過使用嵌入模型嵌入它來做到這一點:𝟭: 將整個知識庫的文本語料庫分割成塊——塊將表示可查詢的單個上下文。感興趣的數據可以來自多個來源,例如由 PDF 報告補充的 Confluence 中的文檔。 𝟮: 使用嵌入模型將每個塊轉換爲矢量嵌入。 𝟯: 將所有矢量嵌入存儲在矢量數 ⌘ Read more

⤋ Read More

2 萬字,深度解析 SQL 性能優化,值得收藏
你好,我是田哥很多朋友經常會遇到如下情況:在做數據統計分析時,分析兩分鐘,跑數兩小時…… Web 開發時候,通常的性能瓶頸,主要出現在數據查詢時候……. 在使用 SQL 過程中不僅要關注數據結果,同樣要注意 SQL 語句的執行效率。1、MySQL 的基本架構1)MySQL 的基礎架構圖 左邊的 client 可以看成是客戶端,客戶端有很多,像我們經常你使用的 CMD ⌘ Read more

⤋ Read More

Bookie 存儲架構源碼剖析|得物技術
一Pulsar 存儲架構簡析Pulsar 作爲新一代 MQ 中間件,在底層架構設計上充分貫徹了存算分離的思想,broker 與 Bookeeper 兩個組件獨立部署,前者負責流量的調度、聚合、計算,後者負責數據的存儲,這也契合了雲原生下 k8s 大行其道的時代背景。Bookeeper 又名 Bookie ,是一個單獨的存儲引擎。在組件關係上,broker 深度依賴 Bookie,內部集成了 Boo ⌘ Read more

⤋ Read More

使用 Rust 捕獲和解析網絡包
大家好,我是鳥窩。前兩篇文章介紹了 C++ 和 Go 中利用 TCP Option 中的時間戳實現計算網絡時延。基於 “用 Rust 重寫一切” 的哲學,今天我們來看看 Rust 中如何做這個事情。夜深人靜,再肝一篇關於網絡編程的文章。Rust 中還沒有和 gopacket 一樣功能強大的包,它的 pcap

⤋ Read More

跨域問題及常用的 4 種解決方案
跨域問題產生、原理、解決方案文章導讀—-前言–  跨域問題指的是在 Web 開發中,由於瀏覽器的同源策略限制,當一個網頁嘗試訪問與它不同源(協議、域名或端口不同)的資源時,可能會遇到安全限制導致無法正常訪問的問題。這種策略旨在防止惡意網站讀取或修改其他網站的數據,保護用戶信息安全。這樣說可能有點抽象,下面具體展開說明。跨域問題演示——  通常情況下,我們主流的開發模式是:前後端分 ⌘ Read more

⤋ Read More

瞭解 Http 和 Https 的區別(圖文詳解)
01 整體介紹隨着 HTTPS 的不斷普及和使用成本的下降,現階段大部分的系統都已經開始用上 HTTPS 協議。HTTPS 與 HTTP 相比, 主打的就是安全概念,相關的知識如 SSL 、非對稱加密、 CA 證書、數據完整性保護 等,我們多多少少也都有聽過。本文重點從原理上講解 HTTPS 的安全性,以及同 HTTP 的比較說明。02 HTTP 和 HTTPS 的比較HTTP(全稱:HyperT ⌘ Read more

⤋ Read More