更新時間:2022-03-31 10:44:00 來源:動力節(jié)點 瀏覽21439次
Java 的設計考慮到了多功能性。它的應用程序可以在任何平臺上運行,而無需程序員為每個單獨的平臺重寫或重新編譯數(shù)據(jù)。
JVM代表“Java虛擬機”,是一種能夠執(zhí)行Java字節(jié)碼的進程虛擬機。每個 Java 源文件都被編譯成一個字節(jié)碼文件。JVM 使 Java 如此通用,因為當它執(zhí)行字節(jié)碼文件時,它知道任何底層硬件平臺的特定指令長度和其他必要性。
在技??術領域,Spring 是一個用于企業(yè) Java 的開源開發(fā)框架。雖然 Spring 框架的核心功能與開發(fā)任何 Java 應用程序兼容,但存在用于在 Java EE(企業(yè)版)平臺之上構建單獨的 Web 應用程序的特殊擴展。
Spring 框架提倡一種 POJO(Plain Old Java Object)編程模型,這被認為是良好的編程實踐,也使得 J2EE(Java 2 企業(yè)版)開發(fā)更易于使用。
Java 運行時環(huán)境 (JRE) 本質(zhì)上是執(zhí)行 Java 程序的 JVM。JRE 還包括瀏覽器插件。
Java 開發(fā)工具包 (JDK) 是用于 Java 的全功能軟件開發(fā)工具包。除了允許用戶開發(fā)、編譯和執(zhí)行 Java 應用程序的編譯器和工具(如 JavaDoc 和 Java 調(diào)試器)之外,它還包括 JRE。
Bean 是構成應用程序主干的對象,由 Spring IoC 容器管理。Bean 是使用提供給容器的配置元數(shù)據(jù)創(chuàng)建的。XML 定義就是一個例子。
以下是這個問題的一些可接受的答案:
輕的。Spring 框架的基本版本約為 2MB,這使得 Spring 在大小和透明度方面都很輕巧。
控制反轉 (IoC)。Spring 使用 IoC 的技術來實現(xiàn)松散耦合并為對象提供依賴關系,而不是創(chuàng)建或搜索依賴對象。
容器。Spring 管理并包含應用程序?qū)ο蟮呐渲茫约八鼈兊纳芷凇?/p>
面向方面(AOP)。Spring 支持面向方面的編程。它還將應用程序業(yè)務邏輯與系統(tǒng)服務分離,以實現(xiàn)內(nèi)聚開發(fā)。
MVC 框架。Spring 使用了精心設計的 MVC 框架,與其他類型的 Web 框架相比,它高效且流行。
交易管理。Spring 一致的管理接口可以針對全局和本地事務進行放大或縮小。
異常處理。Spring 的應用程序編程接口 (API) 將特定于技術的異常轉換為一致的、未經(jīng)檢查的異常。
這兩種方法都可以用作 JVM 啟動垃圾收集的提示。但是,由 JVM 決定是否立即或稍后開始收集。
應用程序上下文類似于 bean 工廠,兩者都能夠加載定義、將 bean 連接在一起以及根據(jù)請求分配 bean。但是應用程序上下文還具有其他功能,包括加載文件資源的通用方法、解析文本消息的方法以及注冊為偵聽器的 bean 事件。
JDBC 是一個抽象層。它允許用戶在數(shù)據(jù)庫之間進行選擇,并使開發(fā)人員能夠用 Java 編寫數(shù)據(jù)庫應用程序,而無需擔心特定數(shù)據(jù)庫的底層細節(jié)。
反射描述了可以檢查同一系統(tǒng)中的其他代碼并在運行時進行修改的代碼。
CI服務器功能不斷檢查編譯錯誤并集成由不同開發(fā)人員提交到存儲庫的所有更改。它必須每天多次構建代碼,最好是在每次提交之后,這樣它就可以檢測到損壞并確定是哪個提交導致的。
類定義了多個對象共有的屬性、狀態(tài)和行為,類似于藍圖。對象是類的一個實例。
例如,將“犬”視為一個類。該類別中的對象可以包括狼、狗、狐貍、土狼等。
是的。枚舉具有嚴格的實例控制,允許您使用 == 來比較實例。
sleep() 是一個阻塞操作。它將保持在監(jiān)視器上并將共享對象鎖定一定的毫秒數(shù)。
wait() 暫停線程,直到經(jīng)過指定的毫秒數(shù)或它從另一個線程接收到通知,無論哪個實例先發(fā)生。此函數(shù)不會保留監(jiān)視器或鎖定共享對象。
sleep() 通常用于定期檢查某些結果,例如輪詢。wait() 常用于多線程對話,以實現(xiàn)同步并避免競爭條件。
在默認模式下,Spring bean 不是線程安全的,因為作用域是單例。每個上下文只有一個實例,這意味著擁有一個可以被任何線程更新的類級變量將導致數(shù)據(jù)不一致。
但是,可以將 Spring bean 范圍更改為請求、原型或會話以實現(xiàn)線程安全。這是基于項目要求的設計決策。進行此調(diào)整將影響性能。
Java 是按值傳遞的。然而,傳遞對象值的方法是傳遞對它的引用,這就是為什么這有時會讓初學者感到困惑。
Java 沒有辦法使頂級類成為靜態(tài)的。但是,您可以通過以下步驟模擬靜態(tài)類:
宣布你的班級決賽。這可以防止類擴展。
將構造函數(shù)設為私有。這將防止客戶端代碼實例化。
使所有類成員和函數(shù)成為靜態(tài)的。
請注意,如果您嘗試調(diào)用實例成員,編譯器不會阻止您聲明非靜態(tài)成員。
接口是一個模板,它只包含方法的簽名,由參數(shù)的數(shù)量、類型和順序組成。一個接口不能單獨實現(xiàn),因為它包含方法的定義但缺少方法體,但它可以從多個接口派生。接口的特點包括:
在代碼中實現(xiàn)多重繼承
定義一組特定的方法及其參數(shù)
將變量聲明為 public、static 和 final
將方法聲明為公共的和抽象的
實現(xiàn)類的所有方法
持續(xù)集成是指開發(fā)人員盡可能頻繁地將他們的更改合并回主分支。采用這種做法有助于避免當人們必須等待發(fā)布日才能將他們的更改合并到發(fā)布分支時發(fā)生的問題。
持續(xù)交付比持續(xù)集成更進一步。它確保您可以快速、有效地向客戶發(fā)布新的更改。除了自動化測試之外,發(fā)布過程也是自動化的,因此只需單擊一個按鈕即可隨時部署應用程序。
持續(xù)部署是基于其他兩種實踐的又一擴展。沒有人為干預;通過所有生產(chǎn)階段的每個更改都會發(fā)布給客戶。
控制器通過解釋用戶輸入并將其轉換為表示模型來提供對應用程序行為的訪問。Spring 的控制器實現(xiàn)非常抽象,它使開發(fā)人員能夠創(chuàng)建各種不同的控制器。
Spring 容器使用依賴注入 (DI) 來管理組成應用程序的組件。它負責創(chuàng)建對象、將它們連接在一起、配置它們并管理它們的完整生命周期。
Spring IoC 容器有兩種類型:
豆因子容器。對 DI 的基本支持。此容器是最簡單的,通常在資源有限時首選,例如移動設備或基于小程序的應用程序。
Spring ApplicationContext 容器。企業(yè)特定的功能。示例包括從屬性文件解析文本消息的能力或?qū)贸绦蚴录l(fā)布到感興趣的偵聽器的能力。
一個 bean 必須是一個可序列化的對象,它的屬性帶有 getter 和 setter,它們只是具有特定名稱的方法。它還必須有一個公共的 0-arg 構造函數(shù),以便可以隨意創(chuàng)建它,然后通過屬性設置進行配置。如果一個類遵循所有的標準,那么它就被認為是一個 JavaBean。
故障安全適用于基礎集合的克隆,因此不受集合中任何修改的影響。快速失敗的迭代器利用 ConcurrentModificationException;故障安全迭代器不會拋出這樣的異常。
java.util 中的所有類都是快速失敗的。java.util.concurrent 中的集合類是故障安全的。
JVM 有一堆運行時數(shù)據(jù)。所有類實例和數(shù)組的內(nèi)存都分配給這個堆,它是在 JVM 啟動時創(chuàng)建的。對象的堆內(nèi)存由垃圾收集器回收,垃圾收集器是一個自動內(nèi)存管理系統(tǒng)。
應用程序可以訪問但不會成為垃圾收集的一部分的活動對象和應用程序永遠無法訪問但尚未被垃圾收集器收集的死對象組成了堆內(nèi)存空間直到死對象最終進入垃圾收集器。
JIT 代表 Just In Time,是 JVM 在運行時優(yōu)化代碼的機制。它可以執(zhí)行代碼內(nèi)聯(lián)、鎖粗化、鎖刪除、逃逸分析和其他優(yōu)化。