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

初級 202925

初級 203221

初級 202629

初級 203743