搜尋
首頁後端開發Golang您的搜尋引擎 Zensearch

Your search engine, Zensearch

貝南寧號

從建立 React 應用程式到建立我自己的搜尋引擎和用於索引的網路爬蟲。我很高興向您介紹Zensearch,這是一個搜尋引擎,作為用戶,您可以更好地控制您想要的搜尋內容,您可以創建條目來抓取不同的網站,並繼續使用搜尋引擎功能(如果您有現有的搜索引擎功能)在數據庫中索引數據,同時它工作,現在我知道這可能不是世界上最複雜或最先進的搜索引擎,如穀歌或勇敢的搜索,但我構建這個東西是為了衡量我自己可以做多少事情並學習在做的過程中盡我所能,天哪,我學到了很多東西。

這一切都始於我建立React Web 應用程式時,這是一本常見的書,用於插入您最喜歡的引言或向特定頁面添加註釋,就好像您試圖與作者交談或輸入您的想法一樣在那一刻,在與你的實體書頁面相對應的頁面上,這不是一個糟糕的項目,但我只是厭倦了構建Reactjs 應用程序,並不是說它很糟糕,而是感覺我不會帶著它去任何地方,我所做的事情沒有技術深度,而且我沒有從建立這些ReactJ 專案中學到任何東西。

所以我嘗試研究電腦網路、作業系統、電腦體系結構等,然後經過幾個月的學習和建立我自己的應用程式層協定(例如websocket),我可以在其中處理多個用戶,並且每個使用者可以加入這些不同的使用者他們可以互相交流的房間或命名空間,我感到欣喜若狂,甚至充滿活力。我覺得只要我了解計算機的工作原理,我就可以做很多事情,例如:線程,信號量,進程,內存佈局,中斷信號等,所以我想,我可以做哪些項目來利用這些東西我學會了?

哦,順便說一句,我是一個自學成才的人,我使用Odin 專案來學習程式設計和Web 開發,所以要向那些傢伙大聲喊叫,因為他們教會了我如何獨立學習,並拒絕在整個課程中牽手程式設計師.

挑戰

我只能使用 Nodejs 進行編程,那是我的麵包和黃油以及打字稿,所以我使用 Nodejs 構建了網絡爬蟲......很愚蠢,對吧?我的意思是計劃是創建一個爬蟲,可以從前端爬取一組來源URL,並讓每個爬蟲將這些提取的資料發送到資料庫,並且眾所周知Yabascript是單線程的,並且處理每個異步任務由Yavascript運作的環境決定,例如:瀏覽器的api、node、deno、bun 和did。

所以使用Nodejs 進行多任務操作是一個自殺任務,它是將要編碼的網頁對象轉換為8 位緩衝區,但由於數據原因,共享數組緩衝區只能傳輸64 位數組緩衝區因此我必須通過添加一些偏移填充來從8 位緩衝區轉換為64 位,然後在將資料從爬蟲發送到主線程後從64 位緩衝區返回到8 位緩衝區,最後將其解析為vajascript 物件...哇,這很有趣,還有另一種訊息傳遞方式,但是會創建爬蟲中相同資料的副本到主線程,所以我不想這樣做,因為它會佔用太多內存.

我必須使用 Nodejs 的原子模組來處理競爭條件,直到今天我仍然不明白該模組是如何工作的,說實話,這讓我非常惱火,所以我不得不轉向 Golang。我非常喜歡這種語言,使用信號量和等待組創建處理競爭條件的線程非常容易,我還不需要使用互斥體,我很高興學習它,所以也許在將來,以及學習上下文會很有趣。

讓我們繼續討論前端吧?你們有人讀過前端大師的這篇文章嗎?你可能不需要那個框架,還記得我說過我厭倦了 ReactJs 嗎?嗯,這讓我欣賞框架,因為它們的可重複使用性和資料綁定機制。

我不想深入了解有關前端的太多細節,但我使用PubSub 模式在數據更改時更新任何UI 更改,並使用Web 組件和Shadow dom 來創建可重用組件,即Shadow dom在javascript 和style 中訪問是很痛苦的,因為它與整個dom 樹隔離,所以使用CSS 和DOM API 訪問它是行不通的,所以是的,這些是我遇到的唯一挑戰,但這很有趣......當我正在將爬蟲從Nodejs 遷移到Go。

需要考慮的事項

有些功能我還沒有實現,因為我非常渴望展示這個項目,但這對我來說並不重要,即使這是一個正在進行的項目,這也不會是一個項目完成的項目我將在未來不斷改進zensearch,所以現在這裡缺少一些關鍵的東西:

  • 實作已索引網站的列表,以在前端顯示給使用者。

  • 保存最近抓取的網頁以便繼續。

  • 建立抓取取消,但仍保存到目前為止的索引頁面。

  • Rabbitmq 的縮放訊息大小限制,如果資料庫包含的內容超過rabbitmq 中設定的預設大小,訊息代理程式將拋出錯誤並崩潰,因此為了避免這種情況,我將嘗試實作一個視窗框架tcp中使用的演算法,透過創建管道機制,將網頁數組分成段並按N 大小發送到搜尋引擎,其中N 是視窗的大小,我仍然需要考慮這一點。

  • 讓使用者刪除其索引網站。

結語

我想寫更多關於我學到的東西和我的開發旅程的一些細微差別,但我認為這太長了,所以現在我想展示我最偉大的項目,我很高興得到一些反饋如果你們有時間的話,請告訴我是否有任何問題和改進可以讓Zensearch 變得更好,哦,這全歸功於theprimeagean,這個人激勵我更深入地研究事物並學習基礎知識只是在終端中運行npm create vite@latest my-vue-app -- --template react-ts ,這無疑讓我對自己作為一名程式設計師以及我所知道的事情感到不安全,但由於我學到了這種不安全感現在我一直在努力學習更多東西,並且很樂意從您的反饋中學習,所以感謝您聆聽我的ted 演講。

Zensearch 的 Github 儲存庫

以上是您的搜尋引擎 Zensearch的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Golang vs. Python:並發和多線程Golang vs. Python:並發和多線程Apr 17, 2025 am 12:20 AM

Golang更適合高並發任務,而Python在靈活性上更有優勢。 1.Golang通過goroutine和channel高效處理並發。 2.Python依賴threading和asyncio,受GIL影響,但提供多種並發方式。選擇應基於具體需求。

Golang和C:性能的權衡Golang和C:性能的權衡Apr 17, 2025 am 12:18 AM

Golang和C 在性能上的差異主要體現在內存管理、編譯優化和運行時效率等方面。 1)Golang的垃圾回收機制方便但可能影響性能,2)C 的手動內存管理和編譯器優化在遞歸計算中表現更為高效。

Golang vs. Python:申請和用例Golang vs. Python:申請和用例Apr 17, 2025 am 12:17 AM

selectgolangforhighpperformanceandcorrency,ifealforBackendServicesSandNetwork程序; selectpypypythonforrapiddevelopment,dataScience和machinelearningDuetoitsverserverserverserversator versator anderticality andextility andextentensivelibraries。

Golang vs. Python:主要差異和相似之處Golang vs. Python:主要差異和相似之處Apr 17, 2025 am 12:15 AM

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。Golang以其并发模型和高效性能著称,Python则以简洁语法和丰富库生态系统著称。

Golang vs. Python:易於使用和學習曲線Golang vs. Python:易於使用和學習曲線Apr 17, 2025 am 12:12 AM

Golang和Python分別在哪些方面更易用和學習曲線更平緩? Golang更適合高並發和高性能需求,學習曲線對有C語言背景的開發者較平緩。 Python更適合數據科學和快速原型設計,學習曲線對初學者非常平緩。

表演競賽:Golang vs.C表演競賽:Golang vs.CApr 16, 2025 am 12:07 AM

Golang和C 在性能競賽中的表現各有優勢:1)Golang適合高並發和快速開發,2)C 提供更高性能和細粒度控制。選擇應基於項目需求和團隊技術棧。

Golang vs.C:代碼示例和績效分析Golang vs.C:代碼示例和績效分析Apr 15, 2025 am 12:03 AM

Golang適合快速開發和並發編程,而C 更適合需要極致性能和底層控制的項目。 1)Golang的並發模型通過goroutine和channel簡化並發編程。 2)C 的模板編程提供泛型代碼和性能優化。 3)Golang的垃圾回收方便但可能影響性能,C 的內存管理複雜但控制精細。

Golang的影響:速度,效率和簡單性Golang的影響:速度,效率和簡單性Apr 14, 2025 am 12:11 AM

goimpactsdevelopmentpositationality throughspeed,效率和模擬性。 1)速度:gocompilesquicklyandrunseff,IdealforlargeProjects.2)效率:效率:ITScomprehenSevestAndardArdardArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdEcceSteral Depentencies,增強的Depleflovelmentimency.3)簡單性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)