SpringBoot 學習(02): 從嵌入式系統到嵌入式Servlet SpingBoot 的進化之路

嵌入式系統

計算機操作系統啟動后,會加載一系列的功能和服務,而這些東西都不是開發操作系統的人寫的,如果想讓一個生態快速崛起,那么操作系統的開發人,就要告訴大家,在這個操作系統上,你要遵守那些規則,我才能讓你運行起來;
因此,我們追加的各種應用,都可以理解為一個嵌入式系統,例如我們開發的桌面端軟件,我們開發的移動 App 都是遵循著該規則。
那么,站在這個角度,你就可以推演你要做什么?

  1. 怎么將自己登記給操作系統,沒有登機牌,那肯定是上不了船的——安裝時提供包名進行注冊;
  2. 怎么收聽船長給的各種通知,接收不到通知,別人就再也找不到你了——對應著 listen(8080);
  3. 上傳之后,操作系統都會給你說明書,告訴日用品,熱水,遇到緊急情況去哪里報告等等,這些都是操作系統提供給你的,這個就叫 API;
  4. 如何得知船上的其他人,給船上的其他人發送廣播;
  5. 怎么接收船上的其他人發送的廣播,這里廣播就是船上的內部通信方式,而你的手機是外部通訊方式,內部當然 比外部快,損耗少;

嵌入式系統——凡是預留了接收主系統信息的缺口,并獨立處理所有輸入邏輯之后返回輸出結果的獨立系統都被稱為嵌入式系統;

  1. 嵌入式系統必須從屬于某一個主系統,能夠接收主系統提供的各項服務

Service 服務

概念:
一個能長時間接收外部請求,并根據外部請求的具體要求(傳入參數),在完成所有的處理環節之后,反饋給請求者的角色就是一個服務,他有幾個特點:

  1. 能服務的人 1 個或者多個,現實中的政務大廳都是能同時服務多個的,所以程序中的服務也應定位成能同時服務多個用戶的程序
  2. 有自己的排隊系統,超出服務的承載量之后,就要有排隊系統,同時也會有彈性窗口的能力,例如平時工作日銀行窗口只有 1 個,到了周六日就會有 5 個窗口同時辦理業務,同時還有人在外邊排隊
    這樣的過程就叫做服務器。

嵌入式服務

  1. 有很多業務比如押運,蓋章,快遞,以及貸款環節,并非接待員能搞完的,那么接待員就會找這些服務來協助自己處理問題,他們之間仍然存在交接環節,接待員會給貸款員一些客戶信息,同時提供給貸款員一些權限,以節省貸款員與接待員的溝通成本,此時貸款員就成了嵌入式的服務,貸款員有多個,個人貸,企業貸,消費貸,房貸,不同貸款人都有不同的人承擔,而接待員的交接方式都是相同的。

這里的貸款員就是 Java Web 中最原始的 Servlet,Servlet 名字組合就是 server
applet,服務的小程序,它的確是一個大服務的小程序,只處理一部分功能,例如,/good/234 就是獲取
ID=234商品信息,這就是一個 servlet,如果你將一堆這種 servlet 整合到一起,就成了一個 war 包 “servlet”
則是一個計算機科學的術語,用于描述一種特定類型的服務器端程序。“servlet” 這個詞是由 Sun Microsystems
提出的,它是由 “server”(服務器)和 “applet”(小應用程序)兩個詞合并而來。在 Java 編程中,“servlet”
通常指的是運行在 Servlet 容器中的 Java 類,用于處理來自客戶端的請求并生成響應。Servlet 通常用于構建動態的 Web
應用程序。

  1. 再回到銀行接待員和貸款員的角度來看,每個貸款員都要把自己的身份信息注冊到銀行里,接待員會去查找和翻看貸款員的信息是否匹配,匹配之后,將這個用戶的信息交付給他具體的貸款員,這里就是 WEB-INF/web.xml中記錄的手冊了,該手冊里記錄著/good/234這個鏈接請找某某 Servlet

總結,最初結識 Java 的那批人,上來接觸的是接待員這個概念,因此就會讓自己一頭霧水,同理一個貸款員也不知道整個公司的運作機理,他也只是死死地記住要先把自己的電話號碼,職責填表,再與接待員對接時,要獲取一些額外數據,同時還要理解這些數據以后怎么用,處理完畢之后,把所有的文件再遞交給接待員,之后貸款員就不知道發生了什么了。

JSP

Web網頁就是拼接一個 HTML 返回給前端,前端獲得 HTML 進行解析運行,在沒有 JSP 的時候,就使用 Servlet 的拼接字符串的方式進行拼接,這個過程耗時耗力,極其低效。后來采用JSP 模板的方式。
可以將其類比于默寫題和填空題,默寫題要自己全部拼接,填空題只需要按照要求,將局部答案填進去就行。所以開發效率就變高了。
前后端分離之后,后端輸出 HTML的概念就變少了,這個功能也就退出了歷史舞臺。

Tomcat 數據庫連接池

數據庫連接池打破了嵌入式獨立系統的規則

Tomcat 的數據庫連接池實際上是一個由 Tomcat 提供的模塊,它可以管理數據庫連接以提高性能,并允許 Web 應用程序從連接池中獲取數據庫連接,從而避免頻繁地創建和銷毀連接。在這個場景下:

嵌入式系統: 您的 Web 應用程序(例如一個基于 Java 的 Web 應用)可以被視為一個嵌入式系統,它在 Tomcat 這個更大的容器中運行。

數據庫連接池: Tomcat 的數據庫連接池是一個獨立的組件,它由 Tomcat 管理,負責管理數據庫連接,提供連接重用、連接池大小限制、連接的創建和釋放等功能。

獨立性破壞: 是的,您提到的是一個例子,連接池的引入確實打破了 Web 應用程序的絕對獨立性。Web 應用程序需要依賴于 Tomcat 提供的連接池,而不是直接在應用程序代碼中創建和管理數據庫連接。這使得應用程序在連接數據庫時與外部組件進行了交互。

好處: 雖然連接池引入了外部依賴,但它提供了性能優勢和資源管理,可以更有效地管理數據庫連接。這可以避免頻繁創建和關閉數據庫連接,提高了應用程序的性能和擴展性。

總之,Tomcat 的數據庫連接池是一個嵌入式系統中的嵌入式組件,它在 Web 應用程序中被使用,但它確實打破了應用程序的絕對獨立性,以實現性能和資源管理的好處。這是一個常見的權衡,通過外部的組件來提供特定功能,以獲得更好的整體性能。

SpringBoot 如何處理的?

SpringBoot 做了一次大整合,將 tomcat 和嵌入式 servlet 整合到了一起,這樣可同時操作服務分發層和 servlet 邏輯處理層兩套邏輯,可操作的方向變多了。

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

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

相關文章

3.1 Ansible 的使用和配置管理

Ansible 的使用和配置管理 文章目錄 Ansible 的使用和配置管理Ansible 基礎Ansible 模塊和變量主機管理和組織角色和劇本部署應用和配置自動化與批量操作Ansible 常見用例Ansible 最佳實踐和性能優化 大綱 Ansible 簡介和特點 介紹 Ansible 的定義和作用,以及它在配…

【Java】Guava的Striped類。

Striped類,它提供了一種線程安全的分段鎖(Striped Locking)機制。 Striped類可以用于將一組資源或操作分成多個段(Stripes),每個段上都有一個獨立的鎖。這種機制可以在并發訪問時提供更好的性能,因為不同線程可以同時訪問不同的段而不會相互阻塞。通常,Striped鎖適用于…

pytorch3d成功安裝

一、pytorch3d是什么? PyTorch3D的目標是幫助加速深度學習和3D交叉點的研究。3D數據比2D圖像更復雜,在從事Mesh R-CNN和C3DPO等項目時,我們遇到了一些挑戰,包括3D數據表示、批處理和速度。我們開發了許多有用的算子和抽象&#xf…

【Visual Studio Code】--- Win11 安裝 VS Code 超詳細

Win11 安裝 VS Code 超詳細 概述一、下載 Vscode二、安裝 Vscode 概述 一個好的文章能夠幫助開發者完成更便捷、更快速的開發。書山有路勤為徑,學海無涯苦作舟。我是秋知葉i、期望每一個閱讀了我的文章的開發者都能夠有所成長。 一、下載 Vscode Vscode官網 二、…

HTTP和HTTPS協議

目錄 一、HTTP和HTTPS區別🌻 二、有了https還有使用http場景嗎🍊 三、https協議的工作原理💥 四、https協議的優點和缺點🍞 一、HTTP和HTTPS區別🌻 HTTP(Hypertext Transfer Protocol)和HTT…

時序預測 | MATLAB實現基于KNN K近鄰的時間序列預測-遞歸預測未來(多指標評價)

時序預測 | MATLAB實現基于KNN K近鄰的時間序列預測-遞歸預測未來(多指標評價) 目錄 時序預測 | MATLAB實現基于KNN K近鄰的時間序列預測-遞歸預測未來(多指標評價)預測結果基本介紹程序設計參考資料 預測結果 基本介紹 基于KNN K近鄰的時間序列預測-遞歸預測未來(多指標評價) …

macOS - 安裝使用 libvirt、virsh

文章目錄 關于 libvirt使用安裝啟動服務virsh 交互模式virsh 幫助命令 關于 libvirt libvirt 官網: https://libvirt.org/gitlab : https://gitlab.com/libvirt/libvirtgithub : https://github.com/libvirt/libvirt 只讀,gitlab 的鏡像 libvirt是一套…

機器學習之數據集

目錄 1、簡介 2、可用數據集 3、scikit-learn數據集API 3.1、小數據集 3.2、大數據集 4、數據集使用 ?所屬專欄:人工智能 文中提到的代碼如有需要可以私信我發給你😊 1、簡介 當談論數據集時,通常是指在機器學習和數據分析中使用的一組…

ES 概念

es 概念 Elasticsearch是分布式實時搜索、實時分析、實時存儲引擎,簡稱(ES)成立于2012年,是一家來自荷蘭的、開源的大數據搜索、分析服務提供商,為企業提供實時搜索、數據分析服務,支持PB級的大數據。 -- …

logstash 原理(含部署)

1、ES原理 原理 使?filebeat來上傳?志數據,logstash進??志收集與處理,elasticsearch作為?志存儲與搜索引擎,最后使?kibana展現?志的可視化輸出。所以不難發現,?志解析主要還 是logstash做的事情 從上圖中可以看到&#x…

RDMA概述

1. DMA和RDMA概念 1.1 DMA DMA(直接內存訪問)是一種能力,允許在計算機主板上的設備直接把數據發送到內存中去,數據搬運不需要CPU的參與。 傳統內存訪問需要通過CPU進行數據copy來移動數據,通過CPU將內存中的Buffer1移動到Buffer2中。DMA模…

【圖像分類】理論篇 (4)圖像增強opencv實現

隨機旋轉 隨機旋轉是一種圖像增強技術,它通過將圖像以隨機角度進行旋轉來增加數據的多樣性,從而幫助改善模型的魯棒性和泛化能力。這在訓練深度學習模型時尤其有用,可以使模型更好地適應各種角度的輸入。 原圖像: 旋轉后的圖像&…

1.MySQL數據庫的基本操作

數據庫操作過程: 1.用戶在客戶端輸入 SQL 2.客戶端會把 SQL 通過網絡發送給服務器 3.服務器執行這個 SQL,把結果返回給客戶端 4.客戶端收到結果,顯示到界面上 數據庫的操作 這里的數據庫不是代表一個軟件,而是代表一個數據集合。 顯示當前的數據庫 …

Python中的MetaPathFinder

MetaPathFinder 是 Python 導入系統中的一個關鍵組件,它與 sys.meta_path 列表緊密相關。sys.meta_path 是一個包含 MetaPathFinder 實例的列表,這些實例用于自定義模塊的查找和加載邏輯。當使用 import 語句嘗試導入一個模塊時,Python 會遍歷…

Golang通過alibabaCanal訂閱MySQLbinlog

最近在做redis和MySQL的緩存一致性,一個方式是訂閱MySQL的BinLog文件,我們使用阿里巴巴的Canal的中間件來做。 Canal是服務端和客戶端兩部分構成,我們需要先啟動Canal的服務端,然后在Go程序里面連接Canal服務端,即可監…

Maven - 統一構建規范:Maven 插件管理最佳實踐

文章目錄 Available Plugins開源項目中的使用插件介紹maven-jar-pluginmaven-assembly-pluginmaven-shade-pluginShade 插件 - 標簽artifactSetrelocationsfilters 完整配置 Available Plugins https://maven.apache.org/plugins/index.html Maven 是一個開源的軟件構建工具&…

零食量販店熱潮:小縣城的新零售革命

零食量販店熱潮:小縣城的新零售革命 目錄 引言零食量販店的快速崛起零食量販店的運營模式量販零食店在小縣城的影響技術在零食量販店的應用未來展望結論 1. 引言 近年來,零食量販店在我國小縣城迅速發展,成為一種新型的零售模式。在一條街…

flutter 二進制轉字符串

通常接口返回的數據都是二進制數據 二進制轉字符串:utf8二進制轉字符串 onRoomMsg.body是二進制編碼 utf8.decode(onRoomMsg.body)然后字符串轉對象 json.decode(utf8.decode(onRoomMsg.body))然后再用fromJson解析 PrankActivityModel prankActivityModel Prank…

新疆大學841軟件工程考研

1.軟件生產的發展經歷了三個階段,分別是____、程序系統時代和軟件工程時代時代。 2.可行性研究從以下三個方面研究每種解決方法的可行性:經濟可行性、社會可行性和_____。 3.HIPO圖的H圖用于描述軟件的層次關系&…

Android 12.0 系統systemui下拉通知欄的通知布局相關源碼分析

1.前言 在android12.0的系統rom開發中,在進行systemui中的下拉通知欄的布局自定義的時候,對于原生systemui的 系統的下拉通知欄的通知布局的了解也是非常重要的,接下來就來分析下相關的下拉通知欄的通知布局的相關 源碼流程,了解這些才方便對通知欄的布局做修改 2.系統sy…