文章編號:11147時間:2024-09-30人氣:
JavaServer Faces (JSF) 是一種用于構(gòu)建 Web 應(yīng)用程序的框架,它以可維護(hù)性作為其核心原則。可維護(hù)性是指應(yīng)用程序易于維護(hù)和更新的程度,這是構(gòu)建成功應(yīng)用程序的關(guān)鍵。
J2EE有以下框架:
1. Spring框架。
2. Struts框架。
3. Hibernate框架。
4. JSF框架。
解釋如下:
Spring框架是一種輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架,用于創(chuàng)建企業(yè)級的Java應(yīng)用程序。 其主要提供了包括數(shù)據(jù)訪問對象(DAO)支持、事務(wù)管理集成、安全等功能在內(nèi)的企業(yè)級服務(wù)。 Spring框架的主要優(yōu)勢在于其靈活性和可擴(kuò)展性,可以與多種其他框架集成使用。
Struts框架,是基于MVC(模型-視圖-控制器)模式的Web應(yīng)用框架,主要用于開發(fā)企業(yè)級的Java Web應(yīng)用程序。 它提供了一個完整的流程來處理用戶的請求和響應(yīng),以及管理數(shù)據(jù)在視圖和模型之間的流動。 Struts框架具有強(qiáng)大的社區(qū)支持和豐富的插件庫,能夠幫助開發(fā)者快速構(gòu)建健壯的Web應(yīng)用。
Hibernate框架,是一個ORM(對象關(guān)系映射)框架,用于處理數(shù)據(jù)庫操作。 它將Java對象與數(shù)據(jù)庫表進(jìn)行映射,使得開發(fā)者可以直接操作Java對象來執(zhí)行數(shù)據(jù)庫操作,無需編寫大量的SQL語句。 Hibernate簡化了數(shù)據(jù)持久化的過程,提高了開發(fā)效率和代碼的可維護(hù)性。
JSF框架,即JavaServer Faces框架,主要用于構(gòu)建基于Web的用戶界面。 它提供了一種基于組件的方式來開發(fā)用戶界面,使得開發(fā)者可以更方便地創(chuàng)建和管理用戶界面組件。 JSF支持事件驅(qū)動和請求驅(qū)動的編程模型,并具有豐富的渲染能力和組件庫,使得開發(fā)者可以快速構(gòu)建出具有良好用戶體驗的Web應(yīng)用。
YF-23在競爭中輸給了F-22,絕對沒有裝備美國現(xiàn)役。 原型機(jī)可能作下一代戰(zhàn)機(jī)的研究品,或是在某個航空博物館里收藏著。
據(jù)我了解,這款戰(zhàn)機(jī)的外表很前衛(wèi),采用了很多先進(jìn)的技術(shù)(F-22主要采用現(xiàn)有的成熟技術(shù))。但是:
1)由于外形設(shè)計問題,它的橫滾率不及F-22。
2)空中加油存在技術(shù)隱患。
3)由于它采用的技術(shù)太超前,以至于不是太可靠。
4)F-22單架價值一億兩千萬美元,這家伙更貴。
以上是它落敗的主要原因,以下是具體參數(shù)介紹(比較無聊)
YF-23A展現(xiàn)了與YF-22A全完不,同的設(shè)計概念,也體現(xiàn)了諾斯羅普/麥道設(shè)計團(tuán)隊對未來空戰(zhàn)要求的理解。
總體布局YF-23A的總體布局在很大程度上繼承了諾斯羅普概念設(shè)計方案的特點(diǎn)。 其菱形機(jī)翼+V形尾翼的布局,介于傳統(tǒng)正常布局和尢尾布局之間。 單座,雙發(fā),中單翼,腹部進(jìn)氣。
和YF-22A一樣,YF-23A最終并沒有采用一度呼聲頗高的鴨式布局。 事實(shí)上從七家公司的方案無一采用鴨式布局這點(diǎn)上就能看出美國人的傾向了。 在一定程度上,這是受了幾年前七巨頭討淪會上通用動力的影響——哈瑞-希爾萊克說“鴨翼最好的位置是在別人的飛機(jī)上。 ”筆者在《王者之翼》中曾提到過,拒絕鴨式布局的原因之一是配平問題。 如果按照能夠進(jìn)行有效的俯仰控制原則水設(shè)計鴨翼,那么鴨翼就無法配平機(jī)翼增升裝置產(chǎn)生的巨大低頭力矩。 如果需要配平增升裝置,那么鴨翼必須增大,對機(jī)翼的下洗也隨之增大,反過來削弱了增升效果。 而且為了防止深失速,可能還需要增加平尾。 另一方面,從跨音速面積律來說,大鴨翼很難滿足跨音速面積律的要求,增大了機(jī)身設(shè)計難度和超音速阻力——這對于強(qiáng)調(diào)超巡的ATF(特別是YF一23A)來說,尤其難以接受。
而拒絕鴨式布局的另一個重要原因是隱身問題。 鴨翼的位置、大小、平面形狀很難和隱身要求統(tǒng)一起來。 隱身設(shè)計的一個重要原則是盡量減少(但不可避免)機(jī)體表面(特別是迎頭方向)的不連續(xù)處,而鴨翼恰恰難以做劍這一點(diǎn)。 如果還希望把機(jī)翼前后緣對應(yīng)的主波束數(shù)量減至最少(也就是前后緣平行),將帶來更大的設(shè)計困難。
雖然根據(jù)美國空軍的要求,ATF必然兼顧隱身和機(jī)動性,但各個公司設(shè)計思想不同,飛機(jī)性能偏重也必然不同。 從YF-23A最終選擇了V形尾翼而非傳統(tǒng)四尾翼布局來看,諾斯羅普追求隱身的意圖相當(dāng)明顯,他們的的設(shè)計可大大減小飛機(jī)的側(cè)面雷達(dá)反射截面積。 由于減少一對尾翼,飛機(jī)重量和阻力也可減小,對于提高超巡能力也有助益。 但隨之而來的是操縱面的效率問題和飛控系統(tǒng)的復(fù)雜化。
機(jī)身為滿足“跨戰(zhàn)區(qū)航程”的要求,ATF必須有足夠大的載油量而考慮到隱身要求(飛機(jī)不能外掛副油箱),所有燃油必須由機(jī)內(nèi)油箱裝載。 因此無論是YF一22A還是YF一23A,都必須提供足夠的機(jī)內(nèi)容積——幾乎相當(dāng)于F一15的兩倍!從機(jī)體尺寸來看,YF一23A機(jī)身長度增加明顯,但仍然有限,因此其機(jī)內(nèi)容積增大必然主要來自飛機(jī)橫截而積的增大。 如果從跨/超音速阻力方面來考慮,飛機(jī)橫截面積增大不利于按照跨音速面積律來設(shè)計飛機(jī)。 適當(dāng)?shù)乩L機(jī)身,有助于平滑飛機(jī)的縱向橫截面積分布,減小跨/超音速阻力。 但機(jī)身加長,必然導(dǎo)致飛機(jī)縱向轉(zhuǎn)動慣性增大,這對于提高飛機(jī)敏捷性和精確控制能力是不利的。 蘇一27的機(jī)身長度和YF一23A相近,有飛過蘇一27的飛行員說,該機(jī)操縱慣性較大,并不是那么好飛。
事實(shí)上,僅僅從機(jī)身設(shè)計的特點(diǎn)我們就可看到Y(jié)F一23A和YF一22A在設(shè)計思想方面的差異。 從機(jī)內(nèi)載油量來看,YF一23A載油10.9噸,YF一22A載油11.35噸,考慮到機(jī)內(nèi)彈艙設(shè)計載彈量相同(之所以說設(shè)計,是因為YF一23A的格斗彈艙還停留在圖紙上),那么YF一23A的機(jī)內(nèi)容積不會大于YF一22A。 而YF一23A的機(jī)身長度卻明顯長于YF一22A(后者由于尾撐和平尾的原因,實(shí)際機(jī)身長度從有18米多),這意味著即使在飛機(jī)最大橫截面積相當(dāng)?shù)那闆r下,YF一23A也可以獲得更平滑的橫截面積分布(也就是更小的跨/超音速阻力),當(dāng)然也獲得了更大的縱向轉(zhuǎn)動慣量。 不難看出,為了解決橫截面積增大帶來的阻力問題,YF一23A和YF一22A的選擇截然相反,前者選擇了速度性能而犧牲了敏捷性和精確控制能力。 這也在一定程度上反映了兩大集團(tuán)對未來戰(zhàn)斗機(jī)的定位。 在外觀上,YF一23A的機(jī)身頗有些洛克希德SR一71黑鳥的風(fēng)格,看上去就像把前機(jī)身和兩個分離的發(fā)動機(jī)艙直接嵌到一個整體機(jī)翼上一樣。 前機(jī)身內(nèi)主要設(shè)置雷達(dá)艙、座艙、前起落架艙、航電設(shè)備艙和導(dǎo)彈艙。 前機(jī)身前段橫截面近似一個上下對稱的圓角六邊形,然后逐步過渡到圓形潢截面,最后在機(jī)身中段與機(jī)翼完全融合。 后面的進(jìn)氣道和發(fā)動機(jī)艙橫截面仍是梯形,并以非常平滑的曲線過渡到機(jī)翼或后機(jī)身的“海貍尾巴”,這有助于減小相互之間的干擾阻力。 前面提到過,空軍取消了采用反推裝置的要求,而諾斯羅普并未修改設(shè)計,在后機(jī)身形成非常明顯的“溝槽”,帶來不必要的阻力增量。
邊條邊條翼布局在大迎角時比鴨式布局的升力特性有更大優(yōu)勢——這是影響諾斯羅普選擇YF一23A整體布局的因素之一。 就傳統(tǒng)邊條而言,其展長的增大(面積也增大)對提高大迎角時的升力有明顯好處。 但展長越大,大迎角下產(chǎn)生的上仰力矩也越大;成為制約邊條大小的一個因素。 但顯然YF一23A的邊條不同于三代機(jī)上的傳統(tǒng)邊條。 其三段直線式窄邊條設(shè)計相當(dāng)有特點(diǎn),從機(jī)翼前緣一直向前延伸到雷達(dá)罩頂端。 這種邊條倒是和YF一22A的邊條頗為類似。
YF一23A的邊條具有以下幾個功能:產(chǎn)生邊條渦,在機(jī)翼上誘導(dǎo)出渦升力,改善機(jī)翼升力特性;利用邊條渦為機(jī)翼上表面附面層補(bǔ)充能量,推遲機(jī)翼失速;起到氣動“翼刀”的作用,阻止附面層向翼尖堆積,推遲翼尖氣流分離(事實(shí)上由于YF一23A機(jī)翼根梢比很大,高速或大迎角下可能會有明顯的翼尖分離趨勢);大迎角下機(jī)頭渦的分離,提供更好的俯仰和方向穩(wěn)定性——直到第三代超音速戰(zhàn)斗機(jī),大迎角下機(jī)頭渦不對稱分離的問題仍未解決,這是限制飛機(jī)進(jìn)入過失速領(lǐng)域的一個重要因素。
但如果從傳統(tǒng)觀點(diǎn)來看,YF一23A的邊條太小,能否產(chǎn)生足夠強(qiáng)的渦流,起到應(yīng)有的作用還是個疑問。 如果確實(shí)可以,那么一種可能性就是該機(jī)邊條的作用原理有別干傳統(tǒng)邊條,另一種可能就是還有其它的輔助措施來協(xié)助改善機(jī)翼升力特性。 有資料提及,“機(jī)頭和內(nèi)側(cè)機(jī)翼所產(chǎn)生的渦流對尾翼沒有什么影響”,這可能意味著YF一23A機(jī)翼內(nèi)側(cè)可能有某種措施以產(chǎn)生渦流,起到和邊條渦類似的作用。 在YF一22A的進(jìn)氣道頂部各有兩塊控制板,用于控制機(jī)翼上表面的渦流。 YF一23A可能也有類似設(shè)計——其機(jī)翼內(nèi)側(cè)有進(jìn)氣道附面層的放氣狹縫,不排除附面層氣流經(jīng)過加速后由此排出,借以改善機(jī)翼上表面氣流狀態(tài)的可能性。
機(jī)翼巨大的菱形機(jī)翼可以算是YF-23A最突出的外形特征之一。 機(jī)翼前緣后掠40度,后緣前掠40度,下反角2度,翼面積88.26平方米,展弦比2.0,根梢比高達(dá)12.2。 諾斯羅普之所以選擇這樣一個占懌的機(jī)翼平面形狀,最重要的影響因素就是隱身。 YF一23A的隱身技術(shù)繼承自B一2,兩者有類同之處——其中之一就是X形的四波瓣反射特征。 要實(shí)現(xiàn)四波瓣反射,機(jī)翼前后緣在水平面內(nèi)必須平行。 這樣一來,諾斯歲普沒有更多的選擇:要么采用后緣后掠設(shè)計,形成后掠梯形翼,基本類似B一2的機(jī)翼;要么采用后緣前掠設(shè)計,形成對稱菱形翼。
采用后掠梯形翼,好處是后掠角選擇限制較小,可以根據(jù)需要進(jìn)行優(yōu)化;但和三角其相比,缺點(diǎn)也很明顯:結(jié)構(gòu)效率較低;內(nèi)部容積較小,對于要求跨戰(zhàn)區(qū)航程的ATF而言影響尤大;氣動彈性發(fā)散問題較明顯;機(jī)翼相對厚度的選擇受限制,不利于選擇較小的相對厚度來減小超音速阻力。 如果選擇后緣前掠設(shè)計,當(dāng)機(jī)翼前緣后掠角(后緣前掠角)較小時,這種機(jī)翼更接近于諾斯羅普慣用的小后掠角薄機(jī)翼(典型的如F-5、YF—17),所面臨的問題則和后掠梯形翼相同——超凡的續(xù)航能力和優(yōu)良的超音速性能是這種機(jī)翼難以解決的巨大矛盾。 而采用大后掠角的對稱菱形翼,在隱身上是有利的——F一117采用高達(dá)66.7度的后掠角,就是為了將雷達(dá)波大幅偏轉(zhuǎn)出去——但氣動方面的限制已經(jīng)否決了這種可能性:展弦比太小,氣動效率極低,這種飛機(jī)造出來能不能飛都是個問題。 而且后緣前掠角太大,將使得機(jī)翼后緣的增升/操縱裝置的效率急劇降低直至不可接受。
綜合權(quán)衡之下,只有采用中等后掠角的對稱菱形翼,才能在隱身、續(xù)航、氣動等諸方面取得令人較為滿意的平衡點(diǎn)。 至于為什么恰好選定40度后掠角,筆者認(rèn)為,在其它條件基本得到滿足的情況下,優(yōu)化邊條渦的有利干擾應(yīng)該是影響因素之一。 不過,既便如此,40度的后緣前掠角也嚴(yán)重影響了機(jī)翼后緣氣動裝置的效率:YF一23A必須使用更大的襟翼下偏角來保證增升效果,但這又增大了機(jī)翼上表面附面層分離趨勢,不但增大了附面層控制難度,也反過來降低了增升效果另一方面,YF一23A的副翼效率也不佳,導(dǎo)致其滾轉(zhuǎn)率不能滿足要求,而這最終影響到了競爭試飛的結(jié)果。
就機(jī)翼的特點(diǎn)來看,諾斯羅普的考慮優(yōu)先順序首先是隱身,其次是超音速和續(xù)航能力,最后才是機(jī)動性和敏捷性。
為改善機(jī)翼升力特性,YF一23A采用了前緣機(jī)動襟翼設(shè)計,其展長約占2/3翼展。 有資料稱該機(jī)采用的是縫翼設(shè)計,但在YF-23A試飛照片上看不出縫翼的特征。 而且從隱身角度考慮,當(dāng)縫翼伸出時,形成的狹縫將成為電磁波的良好反射體,這對于諾斯羅普來說是絕對不能接受的。
事實(shí)上,前緣襟翼對飛機(jī)的隱身特性仍然有不利影響。 最好的解決手段是在AFTI/F一111上驗證的任務(wù)自適應(yīng)機(jī)翼技術(shù),可以避免機(jī)翼表面的不連續(xù)和開縫,不過遺憾的是直至今天這一技術(shù)仍未投入實(shí)用。 對此,YF-22A采用了從F一117上繼承來的菱形槽設(shè)計,使得襟翼偏轉(zhuǎn)時該處成為低雷達(dá)反射區(qū)。 而極力追求隱身的YF一23A竟然不考慮這個細(xì)節(jié),唯一的解釋就是在該機(jī)的典型作戰(zhàn)狀態(tài)(超巡)時,機(jī)翼為對稱翼型,不需要偏轉(zhuǎn)襟翼。
位于YF一23A機(jī)翼后緣的氣動操縱面設(shè)計相當(dāng)有特色,可算是YF一23A的亮點(diǎn)。 有的資料稱,機(jī)翼內(nèi)側(cè)為襟翼,外側(cè)則是副翼,但實(shí)際情況遠(yuǎn)非這么簡單。 簡單的襟翼、副翼之分,并不符合諾斯羅普在YF一23A上體現(xiàn)出來的“一物多用”的設(shè)計思想。 就YF一23A的試飛照片來看,內(nèi)、外側(cè)控制面均有參與增升和滾轉(zhuǎn)控制。 因此筆者將其定位為“多用途襟副翼”。 之所以說“多用途”,是因為這兩對控制面除了傳統(tǒng)襟副其的功能外,還兼有減速板和阻力方向舵的作甩當(dāng)內(nèi)側(cè)襟副翼同時下偏,外側(cè)襟副冀同時上偏,在保證機(jī)翼不產(chǎn)生額外升力增量的同時,產(chǎn)生對稱氣動阻力,起到減速板的作用;當(dāng)只有一側(cè)襟副翼采用上/下偏時,則產(chǎn)生小對稱阻力,起到阻力方向舵的作用——這肯定是從B一2的設(shè)計繼承發(fā)展而來的。 這種設(shè)計相當(dāng)新穎,有效地減輕了重量,但飛控系統(tǒng)的復(fù)雜性和研制風(fēng)險則不可避免地增大了。
尾翼V形尾翼設(shè)計并非諾斯羅普首創(chuàng)。 1956年法國C.M.175教練機(jī)就采用了V形尾翼。 洛克希德的F一117A也是如此(不過比較特殊,只提供方向控制)。 但在強(qiáng)調(diào)機(jī)動性的未來戰(zhàn)機(jī)上采用V形尾翼設(shè)計,YF-23A是第一個。
YF一23A的v形尾翼設(shè)計相當(dāng)獨(dú)特。 為了保證4波瓣雷達(dá)反射特性,平尾前后緣在水平面內(nèi)的投影分別和機(jī)翼前后緣平行。 這使得該機(jī)尾翼看起來相當(dāng)巨大。 考慮到大部分雷達(dá)反射發(fā)生在與水平面成±30度的范圍內(nèi),YF一23A采用了將尾翼外傾40度的設(shè)計,以確保雷達(dá)波不會被反射回接收機(jī),但相應(yīng)的尾翼效率也降低了。 相比之下,YF一22A采用91、傾27度的設(shè)計,處F隱身設(shè)計的邊緣,屬于隱身和機(jī)動綜合權(quán)衡的結(jié)果。 按照公開的說法,YF一23A出于大迎角機(jī)動性的要求,其尾翼采用寬間距布置,完全避開了邊條和機(jī)翼內(nèi)側(cè)渦流,因此改善了劇烈機(jī)動狀態(tài)下俯仰、滾轉(zhuǎn)和偏航控制。
就隱身而言,YF-23A的尾翼設(shè)計顯然是成功的,但其氣動效率卻不免令人擔(dān)心。 偏航、俯仰、滾轉(zhuǎn),二軸控制全部包攬。 一物多用固然好,但重要卻往往被人忽略的一點(diǎn)是:尾翼的總控制能力是有限的,某個軸占用較多的控制能力,必然會削弱其它軸的控制能力。 當(dāng)飛機(jī)陷于比較復(fù)雜的狀態(tài)時,YF-23A的尾翼未必能兼顧。 看看后來F一22的過失速試飛情況就知道了,操縱面的控制負(fù)荷是相當(dāng)重的,而且還要加上推力矢量控制才行。 當(dāng)然,換個角度想,可能諾斯羅普壓根兒就沒有考慮超火迎角飛行的控制問題。 能夠保證大迎角范圍內(nèi)不出現(xiàn)氣動發(fā)散的情況(諾斯羅普稱,風(fēng)洞數(shù)據(jù)顯示YF-23A可以在所有迎角范圍內(nèi)穩(wěn)定飛行,但YF一23A的試飛迎角最終也沒有超過25度),是諾斯羅普在這方面所作的極限了。 畢竟機(jī)動性并小是YF-23A的第一優(yōu)先目標(biāo),過失速機(jī)動性就更不用說了。
飛控系統(tǒng)和推力矢量控制隨控布局經(jīng)過長期驗證在ATF設(shè)計階段已經(jīng)相當(dāng)成熟。 YF一23A應(yīng)用隨控布局技術(shù)、為此采用電傳飛控系統(tǒng)并不令人意外。 不過由于最終競爭失敗,外界對該機(jī)的飛控系統(tǒng)細(xì)節(jié)了解極少。 前面已經(jīng)提到,YF一23A在設(shè)計上具有鮮明的“一物多用”的特色。 由于減少了操縱面和相應(yīng)的控制機(jī)構(gòu),有助于飛機(jī)減輕重量和減小阻力,對于改善飛機(jī)隱身特性也是相當(dāng)有利的。 但除了操縱面負(fù)荷問題外,這種設(shè)計必然面臨的一個考驗就是飛控系統(tǒng)的復(fù)雜化。 固然,在已經(jīng)成功的B一2上也可以見到類似的設(shè)計,不過必須看到的是,對于不需要進(jìn)行復(fù)雜機(jī)動的轟炸機(jī)而占,這種一物多用的設(shè)計問題不大;然而戰(zhàn)斗機(jī)即使在常規(guī)條件下的機(jī)動,其操縱面的偏轉(zhuǎn)控制也是相當(dāng)復(fù)雜的,一物多用的設(shè)計必然會加大飛控系統(tǒng)的復(fù)雜程度和研制風(fēng)險。 如果還要考慮超常規(guī)飛行的話,飛控系統(tǒng)的設(shè)計難度可想而知。 飛控軟件的編制是飛控系統(tǒng)設(shè)計難點(diǎn)之一。 自電傳飛控系統(tǒng)實(shí)用化以來,大多數(shù)一流戰(zhàn)機(jī)都在這上面栽過跟頭。 1992年4月25日,YF一22A因為飛控軟件問題造成“飛行員誘發(fā)振蕩”,撞地?fù)p毀。 后來F一22試飛階段還不斷對飛控軟件進(jìn)行改進(jìn)升級。 連基本按照常規(guī)設(shè)計的YF一22A飛控系統(tǒng)都有這么多麻煩,非常規(guī)設(shè)計的YF一23A飛控系統(tǒng)就更難說。 在對設(shè)計風(fēng)險的判斷上,美國空軍還是比較準(zhǔn)確的。
如果YF一23A采用了推力矢量控制系統(tǒng),一物多用帶來的控制面負(fù)荷問題町能會得到緩解,對改善機(jī)動性和敏捷性也有好處。 但諾斯羅普最終放棄了推力矢量,以確保其首要目標(biāo)——隱身能力。 因為如要應(yīng)用推力矢量控制技術(shù),就必須更改后機(jī)身設(shè)計,不僅增大了飛機(jī)重量,也導(dǎo)致飛機(jī)雷達(dá)反射截面積(主要是后向)增大和紅外隱身能力下降——因為必須取消那個溝槽式尾噴口設(shè)計。 這并不符合諾斯羅普的設(shè)計思想。
進(jìn)/排氣系統(tǒng)進(jìn)氣道和發(fā)動機(jī)一級壓氣機(jī)是噴氣機(jī)前方雷達(dá)反射截面積的主要來源,設(shè)計稍有不慎即可導(dǎo)致為隱身所作的努力全數(shù)付諸東流。 通常在中、高空飛行的飛機(jī),如F-117、B-2,其主要威脅來自下方,因此可將進(jìn)氣道和噴管置于機(jī)體上表面,以機(jī)身遮擋主要雷達(dá)反射特征。 但對于制空戰(zhàn)斗機(jī)而言,這一威脅定律顯然不適用。 如果住所有方向上的威脅具有同等可能性,在這種情況下依據(jù)什么原則來設(shè)計飛機(jī)呢?并沒有一個人人滿意的答案。 從YF一23A的設(shè)計來看,在沒有適用的隱身規(guī)則的情況下,其進(jìn)氣道設(shè)計選擇了遵循機(jī)動性和進(jìn)氣要求。
發(fā)動機(jī)進(jìn)氣道是一個空腔結(jié)構(gòu),本身就是良好的雷達(dá)波反射體。 而發(fā)動機(jī)一級壓氣機(jī)高速旋轉(zhuǎn)的葉片不僅是強(qiáng)反射源,其反射波頻譜甚至足以成為飛機(jī)型號的識別特征。 要解決隱身問題,就必須首先解決這兩個麻煩。 解決途徑之一是遮擋。 F-111、幻影那種三元進(jìn)氣道,其激波錐可以在一定程度上遮蔽進(jìn)氣道內(nèi)部和壓氣機(jī)的反射波,但問題是激波錐本身就是一個強(qiáng)雷達(dá)散射源。 另一個也是更常采用的途徑是S形進(jìn)氣道,并在進(jìn)氣道內(nèi)敷設(shè)吸波材料。 不過S形進(jìn)氣道并不是想象中那么簡單,設(shè)計不當(dāng)可能導(dǎo)致嚴(yán)重的總壓損失。 沒有大量的驗證,設(shè)計時少不了要吃苦頭的。
YF-23A的進(jìn)氣口位于機(jī)翼下方靠近前緣的位置,類似蘇一27的設(shè)計,這顯然是處于大迎角條件下進(jìn)氣要求的考慮。 其橫截面為梯形,除了垂直面上的斜切結(jié)構(gòu)外,在水下面上也略有斜切,可以起到改善大迎角和側(cè)滑條件下進(jìn)氣效率的作用。 在進(jìn)氣口前方,設(shè)計有多孔式附面層吸除裝置(機(jī)翼下表面未噴漆區(qū)域),并經(jīng)機(jī)翼上表面排出一一由于進(jìn)氣口靠近機(jī)翼前緣,附面層厚度不大,因此不需要采用大型的附面層隔道,有助于減小雷達(dá)反射特征。 在發(fā)動機(jī)艙卜表面還設(shè)計有輔助進(jìn)氣門(位于附面層排放狹縫旁邊的帶鋸齒后緣的梯形板),用于在起降和低速狀態(tài)下滿足發(fā)動機(jī)的進(jìn)氣需要。 根據(jù)隱身原則,進(jìn)氣道自進(jìn)氣口開始向內(nèi)、向上彎曲,從正前方根本不可能看到壓氣機(jī)葉片,可獲得較好隱身效果。 此外,YF-23A采用了固定式進(jìn)氣道設(shè)計,以避免可調(diào)式進(jìn)氣道的調(diào)節(jié)斜板之間的縫隙和臺階產(chǎn)生的雷達(dá)反射。 壓縮斜板為二波系設(shè)計,并按照YF-23A的預(yù)計巡航速度作了優(yōu)化。
YF-23A的發(fā)動機(jī)噴口設(shè)計帶有明顯的B-2風(fēng)格。 溝槽狀噴口位于V形尾翼之間扁平的“海貍尾巴”上,以耐熱材料作為襯墊。 噴口頂端鉸接一塊無邊形調(diào)節(jié)板,用于調(diào)節(jié)噴口大小。 在海貍尾巴、V形尾翼、溝槽側(cè)壁的屏蔽下,來自燃燒室的熱噴流在溝槽段與冷空氣混合降溫(二元矩形噴口使得噴流更容易與周圍空氣混合),然后再排出機(jī)外,紅外特征較之常規(guī)戰(zhàn)斗機(jī)明顯降低。 除了隱身作用外,筆者推測,YF-23A的噴口設(shè)計可能還具有引射增升的作用,V形尾翼則起到了類似端板、增強(qiáng)增升效應(yīng)的作用。 不過這一推測沒有獲得資料證實(shí)。
發(fā)動機(jī)發(fā)動機(jī)是飛機(jī)的核心部件,YF-23A的優(yōu)越性能很大程度是建立在YF-119/120的巨大推力基礎(chǔ)上的。 超巡能力和跨戰(zhàn)區(qū)航程對發(fā)動機(jī)提出了極為嚴(yán)苛的要求。 為滿足性能要求,需要采用具有中等增壓比的高壓壓氣機(jī)、較大增壓比的低壓壓氣機(jī)、較高的渦輪前溫度和較大的非加力狀態(tài)推力。
為滿足不加力推力的要求,通用電氣選擇了變循環(huán)技術(shù)。 其YF-120發(fā)動機(jī)上使用了一種特殊的可變面積外涵道引射器,通過控制內(nèi)、外涵道空氣流量來改變涵道比。 在超音速巡航狀態(tài)下,YF-120以接近渦噴發(fā)動機(jī)的方式工作(涵道比接近0),只有少量外涵道引氣用于冷卻;亞音速飛行時,YF-120以渦扇發(fā)動機(jī)的方式上作(最大涵道比約0.3)。 YF-120為雙轉(zhuǎn)子方案,采用同軸反轉(zhuǎn)技術(shù),兩級低壓壓氣機(jī),高/低壓渦輪均只有一級。 采用三余度數(shù)字式發(fā)動機(jī)控制組件。 和F-100比,其零件數(shù)量少了40%。 而YF-120的軍用推力高達(dá)125千牛,甚至超過早期F-100的加力推力。
普·惠則選擇了相對保守的渦扇發(fā)動機(jī)方案,當(dāng)然在設(shè)計上有明顯進(jìn)步,使得YF-119即使不采用變循環(huán)技術(shù)也可以滿足JAFE的要求。 YF-119也是雙轉(zhuǎn)子方案,3級低壓壓氣機(jī),6級高壓壓氣機(jī),高/低壓渦輪各一級。 其不加力推力明顯比YF-120要低,只有97.9千牛。 有意思的足,第一種實(shí)用的變循環(huán)發(fā)動機(jī)J-58(用于SR-71)正是普·惠在50年代研制了。 對于為何放棄自己首創(chuàng)技術(shù),普·惠方面并沒有任何解釋。 后來通用電氣承認(rèn),YF120的技術(shù)有些超前了,風(fēng)險確實(shí)比YF119要高。
武器系統(tǒng)由于ATF暫時放棄了對地攻擊能力的要求,因此在YF-23A的備選武器上并沒有對地攻擊武器。 當(dāng)初為ATF準(zhǔn)備的主要對空武器是先進(jìn)中距空空導(dǎo)彈(AMRAAM,后來的AIM一120)和先進(jìn)近距空空導(dǎo)彈(ASRAAM,后來的AIM-132)。 由于AIM-132進(jìn)度嚴(yán)重拖延,迫使美國空軍以先進(jìn)響尾蛇改型(即AIM-9X)作為應(yīng)急措施。 今天,AIM-9X和AIM-120已經(jīng)成為F/A-22的主要武器。
YF一23A繼承了諾斯羅普最初方案的內(nèi)部武器艙設(shè)計。 格斗導(dǎo)彈艙和主武器艙串列布置于前機(jī)身內(nèi)。 格斗導(dǎo)彈艙較小,只能容納2枚AIM一9導(dǎo)彈。 主武器艙較大,可容納4枚AIM一120導(dǎo)彈。 載彈量和YF一22A相同。 由于AIM一120改進(jìn)后彈翼縮小,因此在F/A-22的主武器艙內(nèi)可容納6枚。 但YF-23A布置AIM-120A的方式就是上下前后錯置排列,和YF一22A對稱排列不同,顯示其主武器艙尺寸可能較小,因此不一定能放得下6枚AIM一120改型。 有資料提及,YF-23A的主武器艙掛架是可以升降的。 需要發(fā)射AIM-120時,掛架伸出機(jī)外,將導(dǎo)彈置于自由流中再點(diǎn)火發(fā)射。 此方式和YF-22A的彈射發(fā)射方式不同,完全避免了導(dǎo)彈在穿越機(jī)身表面氣流時狀態(tài)發(fā)生異常改變的可能性。 當(dāng)然,重量和機(jī)內(nèi)容積的代價是免不了的。
沒有資料提及在YF-23A上AIM-9的鎖定/發(fā)射模式。 但這其實(shí)是一個很有意思的問題。 因為在封閉的導(dǎo)彈艙內(nèi),AIM-9的導(dǎo)引頭是不可能捕獲目標(biāo)的。
就這個問題,筆者和許多同好曾經(jīng)進(jìn)行了長時間的討論,反復(fù)觀看F-22武器系統(tǒng)試驗的錄像,最終形成較一致的看法:F-22在格斗狀態(tài)下,格斗導(dǎo)彈艙處于開艙狀態(tài),將AIM-9X伸出,以解決導(dǎo)引頭鎖定問題。 YF-23A完全可能采用類似模式。 結(jié)合AIM-120的發(fā)射模式,筆者推測:掛載AIM-9的可能也是升降式掛架,格斗狀態(tài)下開艙門將AIM-9伸出機(jī)外。 由于完全伸出機(jī)外,沒有機(jī)身側(cè)面屏蔽,AIM-9可以獲得比在YF-22A上更好的視界,而且也不需要YF-22A上面的隔熱/排焰裝置。 開艙狀態(tài)可能會給人比較怪異的感覺,但事實(shí)上開艙門伸出導(dǎo)彈所帶來的阻力并不會比傳統(tǒng)外掛架的阻力更大,因此不會對飛機(jī)性能有太大的負(fù)面影響。 這種模式唯一的問題在于格斗狀態(tài)下飛機(jī)的雷達(dá)反射截面積會明顯增大。 不過未來在進(jìn)入視距內(nèi)空戰(zhàn)的情況下雷達(dá)隱身意義不大;二來現(xiàn)代空戰(zhàn)格斗時間明顯縮短,開艙射擊暴露時間有限,因此不至于對YF一23A構(gòu)成嚴(yán)重威脅。 對于ATF,特別是YF一23A這利飛機(jī)來說,不進(jìn)入格斗才是最佳戰(zhàn)術(shù)。
除了空空導(dǎo)彈外,M-61火神航炮仍然將作為ATF的固定武器。 YF-23A上并沒有安裝M-61,但按照設(shè)計方案,航炮將安裝在機(jī)身右側(cè),主武器艙上方。
可維護(hù)性設(shè)計·維護(hù)口蓋·艙門ATF是第一種在設(shè)計之初就提出可維護(hù)性指標(biāo)的作戰(zhàn)飛機(jī),也是第一種在設(shè)計階段就邀請機(jī)務(wù)部門參與的戰(zhàn)斗機(jī)。 美國空軍如此重視可維護(hù)性,很大程度上是受F-15A的影響——F-15A剛剛服役時,故障層出不窮,飛機(jī)頻頻趴窩,人稱“機(jī)庫皇后”。
對于傳統(tǒng)飛機(jī)來說,維護(hù)口蓋在機(jī)身表面的覆蓋率是衡量其可維護(hù)性的一個重要參考指標(biāo)。 覆蓋率高,意味著機(jī)載設(shè)備可按近性好,機(jī)務(wù)人員不必將時間消耗在無用但必需的工作上——最典型的就是為了接近設(shè)備A,必須先拆下設(shè)備B、C、D…;處理完后再按相反順序裝回去,而B、C、D其實(shí)對于A的維護(hù)毫無意義。
但是,對于隱身飛機(jī)來說,情況完全不同。 表面波的存在,使得機(jī)身表面任何開口都可能嚴(yán)重破壞飛機(jī)隱身特性。 因此,“非必要絕不在機(jī)身表面開口”是隱身飛機(jī)設(shè)計必循的原則。 在這種情況下如何改善飛機(jī)的可維護(hù)性呢?途徑之一是集中處理。 不再是哪里有需要接近的設(shè)備就在哪里開設(shè)維護(hù)口蓋,而是確定一個集中區(qū)域,將接近最頻繁、維護(hù)量最大的設(shè)備全部集中到那里,以一個大的維護(hù)口蓋來解決。 途徑二是建立在途徑一基礎(chǔ)上的,即盡量利用飛機(jī)必需設(shè)置無法省略的艙門作為維護(hù)口蓋。 例如武器艙、起落架艙。 如果能將需要維護(hù)的設(shè)備或接口集中到這些艙內(nèi),甚至可能不必在機(jī)身表面再開其它維護(hù)口蓋。 為保證反射波束的一致性,飛機(jī)表面所有口蓋、艙門都必須采用鋸齒狀設(shè)計,其鋸齒前緣在水平面的投影應(yīng)平行于飛機(jī)主要的反射邊緣。 不過,和通常想象的不同,多鋸齒前緣設(shè)計并不是最佳的控制雷達(dá)反射措施。 這種設(shè)計實(shí)際卜是隱身和重量要求折巾的結(jié)果。 就隱身的角度來看,最理想的是單一鋸齒設(shè)計。 但為了保證單一鋸齒的結(jié)構(gòu)強(qiáng)度,必須要付出相應(yīng)的重量代價。 在ATF的嚴(yán)格重量要才下,YF一23A和YF一22A均采用了多鋸齒設(shè)計。 然而在后來的F-22上,我們可以看到,經(jīng)過空軍同意,該機(jī)減少了鋸齒數(shù)量,以改善隱身特性。
富客戶端框架主要有以下幾種:
1. Spring MVC框架
Spring MVC是一種基于Java的Web應(yīng)用程序框架,廣泛應(yīng)用于構(gòu)建富客戶端應(yīng)用程序。 它提供了強(qiáng)大的功能,如模型-視圖-控制器(MVC)設(shè)計模式支持、視圖模板語言集成和Spring的各種便利功能,包括事務(wù)管理和安全性控制。 該框架可以使開發(fā)者以更低復(fù)雜性來開發(fā)高性能和可靠的富客戶端應(yīng)用。
2. JSF框架(JavaServer Faces)
JSF是Java EE平臺的一個規(guī)范,用于構(gòu)建基于Web的用戶界面層應(yīng)用。 它提供了豐富的組件庫和標(biāo)簽庫,可以方便地創(chuàng)建用戶界面。 JSF框架也支持事件驅(qū)動模型,這使得開發(fā)人員能夠更容易地實(shí)現(xiàn)富客戶端交互特性。
3. Angular框架
Angular是一個流行的前端JavaScript框架,適用于構(gòu)建單頁面應(yīng)用(SPA)。 它提供了強(qiáng)大的數(shù)據(jù)綁定和依賴注入功能,以及豐富的內(nèi)置指令和組件模型。 Angular框架可以幫助開發(fā)人員創(chuàng)建復(fù)雜且響應(yīng)迅速的富客戶端應(yīng)用。 由于其結(jié)構(gòu)清晰,適用于大型和復(fù)雜的項目,并且是端到端服務(wù)的集成棧的核心組成部分之一。 它的測試功能也使得維護(hù)和改進(jìn)復(fù)雜應(yīng)用的維護(hù)更加便利。 由于其流行度高、可跨瀏覽器操作并維護(hù)簡易的優(yōu)勢使得開發(fā)者更傾向于使用Angular構(gòu)建富客戶端應(yīng)用。 除了以上三種常見的框架外,還有其他一些例如React框架等也是常見的富客戶端框架選擇。 每種框架都有其獨(dú)特的優(yōu)點(diǎn)和適用場景,可以根據(jù)具體的需求進(jìn)行選擇。 希望這些信息能對您有所幫助!如您有其他疑問歡迎進(jìn)一步提問和交流經(jīng)驗。 希望我們可以共享信息和共同進(jìn)步交流新技術(shù)的發(fā)展方向及應(yīng)用范圍擴(kuò)展知識儲備。 主要優(yōu)勢和特性體現(xiàn)在易于管理客戶端應(yīng)用程序組件化和聲明式編程風(fēng)格上。
JavaServer Faces (JSF),作為一種新興的Java Web應(yīng)用程序開發(fā)標(biāo)準(zhǔn)框架,以其組件驅(qū)動的開發(fā)方式,為簡化開發(fā)過程帶來了革命性的變化。 它深受Java/Web開發(fā)者,特別是企業(yè)開發(fā)人員和Web設(shè)計人員的青睞。 通過直觀的界面設(shè)計,開發(fā)者只需簡單地將UI組件拖放到頁面上,即可實(shí)現(xiàn)功能豐富的用戶界面構(gòu)建,無需深入復(fù)雜的編程細(xì)節(jié)。 JSF的核心優(yōu)勢在于其內(nèi)建的模型-視圖-控制器(MVC)架構(gòu),這種設(shè)計模式的融入,使得應(yīng)用程序的維護(hù)性得到了顯著提升。 它將業(yè)務(wù)邏輯、用戶界面和數(shù)據(jù)處理分離,使得代碼更易于管理和擴(kuò)展。 這樣的設(shè)計使得系統(tǒng)開發(fā)人員能夠享受到卓越的靈活性,同時也能確保代碼的高效和清晰。 由于JSF是遵循Java Community Process (JCP)開發(fā)的Java標(biāo)準(zhǔn),它與各種開發(fā)工具無縫集成,為開發(fā)者提供了強(qiáng)大的支持。 各大供應(yīng)商都開發(fā)了易于使用的可視化開發(fā)環(huán)境,使得JSF的開發(fā)效率和用戶體驗都得到了極大的提升。 這無疑為Java應(yīng)用開發(fā)人員提供了一種高效且符合標(biāo)準(zhǔn)的解決方案。
HQL查詢:Criteria查詢對查詢條件進(jìn)行了面向?qū)ο蠓庋b,符合編程人員的思維方式,不過HQL(Hibernate Query Lanaguage)查詢提供了更加豐富的和靈活的查詢特性,因此Hibernate將HQL查詢方式立為官方推薦的標(biāo)準(zhǔn)查詢方式,HQL查詢在涵蓋Criteria查詢的所有功能的前提下,提供了類似標(biāo)準(zhǔn)SQL語句的查詢方式,同時也提供了更加面向?qū)ο蟮姆庋b。 完整的HQL語句形勢如下:Select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc其中的update/delete為Hibernate3中所新添加的功能,可見HQL查詢非常類似于標(biāo)準(zhǔn)SQL查詢。 由于HQL查詢在整個Hibernate實(shí)體操作體系中的核心地位,這一節(jié)我將專門圍繞HQL操作的具體技術(shù)細(xì)節(jié)進(jìn)行講解。 1、 實(shí)體查詢:有關(guān)實(shí)體查詢技術(shù),其實(shí)我們在先前已經(jīng)有多次涉及,比如下面的例子:String hql=”from user user ”;List list=(hql)();上面的代碼執(zhí)行結(jié)果是,查詢出User實(shí)體對象所對應(yīng)的所有數(shù)據(jù),而且將數(shù)據(jù)封裝成User實(shí)體對象,并且放入List中返回。 這里需要注意的是,Hibernate的實(shí)體查詢存在著對繼承關(guān)系的判定,比如我們前面討論映射實(shí)體繼承關(guān)系中的Employee實(shí)體對象,它有兩個子類分別是HourlyEmployee,SalariedEmployee,如果有這樣的HQL語句:“from Employee”,當(dāng)執(zhí)行檢索時Hibernate會檢索出所有Employee類型實(shí)體對象所對應(yīng)的數(shù)據(jù)(包括它的子類HourlyEmployee,SalariedEmployee對應(yīng)的數(shù)據(jù))。 因為HQL語句與標(biāo)準(zhǔn)SQL語句相似,所以我們也可以在HQL語句中使用where字句,并且可以在where字句中使用各種表達(dá)式,比較操作符以及使用“and”,”or”連接不同的查詢條件的組合。 看下面的一些簡單的例子:from User user where =20;from User user where between 20 and 30;from User user where in(20,30);from User user where is null;from User user where like ‘%zx%’;from User user where (%2)=1;from User user where =20 and like ‘%zx%’;2、 實(shí)體的更新和刪除:在繼續(xù)講解HQL其他更為強(qiáng)大的查詢功能前,我們先來講解以下利用HQL進(jìn)行實(shí)體更新和刪除的技術(shù)。 這項技術(shù)功能是Hibernate3的新加入的功能,在Hibernate2中是不具備的。 比如在Hibernate2中,如果我們想將數(shù)據(jù)庫中所有18歲的用戶的年齡全部改為20歲,那么我們要首先將年齡在18歲的用戶檢索出來,然后將他們的年齡修改為20歲,最后調(diào)用()語句進(jìn)行更新。 在Hibernate3中對這個問題提供了更加靈活和更具效率的解決辦法,如下面的代碼:Transaction trans=();String hql=”UPDATE User user set =20 where =18”;Query queryupdate=(hql);int ret=();();通過這種方式我們可以在Hibernate3中,一次性完成批量數(shù)據(jù)的更新,對性能的提高是相當(dāng)?shù)目捎^。 同樣也可以通過類似的方式來完成delete操作,如下面的代碼:Transaction trans=();String hql=”delete from User user where =18”;Query queryupdate=(hql);int ret=();();如果你是逐個章節(jié)閱讀的化,那么你一定會記起我在第二部分中有關(guān)批量數(shù)據(jù)操作的相關(guān)論述中,討論過這種操作方式,這種操作方式在Hibernate3中稱為bulk delete/update,這種方式能夠在很大程度上提高操作的靈活性和運(yùn)行效率,但是采用這種方式極有可能引起緩存同步上的問題(請參考相關(guān)論述)。 3、 屬性查詢:很多時候我們在檢索數(shù)據(jù)時,并不需要獲得實(shí)體對象所對應(yīng)的全部數(shù)據(jù),而只需要檢索實(shí)體對象的部分屬性所對應(yīng)的數(shù)據(jù)。 這時候就可以利用HQL屬性查詢技術(shù),如下面程序示例:List list=(“select from User user ”)();for(int i=0;((i));}我們只檢索了User實(shí)體的name屬性對應(yīng)的數(shù)據(jù),此時返回的包含結(jié)果集的list中每個條目都是String類型的name屬性對應(yīng)的數(shù)據(jù)。 我們也可以一次檢索多個屬性,如下面程序:List list=(“select , from User user ”)();for(int i=0;iObject[] obj=(Object[])(i);(obj[0]);(obj[1]);}此時返回的結(jié)果集list中,所包含的每個條目都是一個Object[]類型,其中包含對應(yīng)的屬性數(shù)據(jù)值。 作為當(dāng)今我們這一代深受面向?qū)ο笏枷胗绊懙拈_發(fā)人員,可能會覺得上面返回Object[]不夠符合面向?qū)ο箫L(fēng)格,這時我們可以利用HQL提供的動態(tài)構(gòu)造實(shí)例的功能對這些平面數(shù)據(jù)進(jìn)行封裝,如下面的程序代碼:List list=(“select new User(,) from User user ”)();for(int i=0;iUser user=(User)(i);(());(());}這里我們通過動態(tài)構(gòu)造實(shí)例對象,對返回結(jié)果進(jìn)行了封裝,使我們的程序更加符合面向?qū)ο箫L(fēng)格,但是這里有一個問題必須注意,那就是這時所返回的User對象,僅僅只是一個普通的Java對象而以,除了查詢結(jié)果值之外,其它的屬性值都為null(包括主鍵值id),也就是說不能通過Session對象對此對象執(zhí)行持久化的更新操作。 如下面的代碼:List list=(“select new User(,) from User user ”)();for(int i=0;iUser user=(User)(i);(“gam”);(user);//這里將會實(shí)際執(zhí)行一個save操作,而不會執(zhí)行update操作,因為這個User對象的id屬性為null,Hibernate會把它作為一個自由對象(請參考持久化對象狀態(tài)部分的論述),因此會對它執(zhí)行save操作。 }4、 分組與排序A、Order by子句:與SQL語句相似,HQL查詢也可以通過order by子句對查詢結(jié)果集進(jìn)行排序,并且可以通過asc或者desc關(guān)鍵字指定排序方式,如下面的代碼:from User user order by asc, desc;上面HQL查詢語句,會以name屬性進(jìn)行升序排序,以age屬性進(jìn)行降序排序,而且與SQL語句一樣,默認(rèn)的排序方式為asc,即升序排序。 B、Group by子句與統(tǒng)計查詢:在HQL語句中同樣支持使用group by子句分組查詢,還支持group by子句結(jié)合聚集函數(shù)的分組統(tǒng)計查詢,大部分標(biāo)準(zhǔn)的SQL聚集函數(shù)都可以在HQL語句中使用,比如:count(),sum(),max(),min(),avg()等。 如下面的程序代碼:String hql=”select count(user), from User user group by having count(user)>10 ”;List list=(hql)();C、優(yōu)化統(tǒng)計查詢:假設(shè)我們現(xiàn)在有兩張數(shù)據(jù)庫表,分別是customer表和order表,它們的結(jié)構(gòu)如下:customerID varchar2(14)age number(10)name varchar2(20)orderID varchar2(14)order_number number(10)customer_ID varchar2(14)現(xiàn)在有兩條HQL查詢語句,分別如下:from Customer c inner join o group by ;(1)select ,,,,_number,_IDfrom Customer c inner join c group by ;(2)這兩條語句使用了HQL語句的內(nèi)連接查詢(我們將在HQL語句的連接查詢部分專門討論),現(xiàn)在我們可以看出這兩條查詢語句最后所返回的結(jié)果是一樣的,但是它們其實(shí)是有明顯區(qū)別的,語句(1)檢索的結(jié)果會返回Customer與Order持久化對象,而且它們會被置于Hibernate的Session緩存之中,并且Session會負(fù)責(zé)它們在緩存中的唯一性以及與后臺數(shù)據(jù)庫數(shù)據(jù)的同步,只有事務(wù)提交后它們才會從緩存中被清除;而語句(2)返回的是關(guān)系數(shù)據(jù)而并非是持久化對象,因此它們不會占用Hibernate的Session緩存,只要在檢索之后應(yīng)用程序不在訪問它們,它們所占用的內(nèi)存就有可能被JVM的垃圾回收器回收,而且Hibernate不會同步對它們的修改。 在我們的系統(tǒng)開發(fā)中,尤其是Mis系統(tǒng),不可避免的要進(jìn)行統(tǒng)計查詢的開發(fā),這類功能有兩個特點(diǎn):第一數(shù)據(jù)量大;第二一般情況下都是只讀操作而不會涉及到對統(tǒng)計數(shù)據(jù)進(jìn)行修改,那么如果采用第一種查詢方式,必然會導(dǎo)致大量持久化對象位于Hibernate的Session緩存中,而且Hibernate的Session緩存還要負(fù)責(zé)它們與數(shù)據(jù)庫數(shù)據(jù)的同步。 而如果采用第二種查詢方式,顯然就會提高查詢性能,因為不需要Hibernate的Session緩存的管理開銷,而且只要應(yīng)用程序不在使用這些數(shù)據(jù),它們所占用的內(nèi)存空間就會被回收釋放。 因此在開發(fā)統(tǒng)計查詢系統(tǒng)時,盡量使用通過select語句寫出需要查詢的屬性的方式來返回關(guān)系數(shù)據(jù),而避免使用第一種查詢方式返回持久化對象(這種方式是在有修改需求時使用比較適合),這樣可以提高運(yùn)行效率并且減少內(nèi)存消耗。 ㊣真正的高手并不是精通一切,而是精通在合適的場合使用合適的手段。 5、 參數(shù)綁定:Hibernate中對動態(tài)查詢參數(shù)綁定提供了豐富的支持,那么什么是查詢參數(shù)動態(tài)綁定呢?其實(shí)如果我們熟悉傳統(tǒng)JDBC編程的話,我們就不難理解查詢參數(shù)動態(tài)綁定,如下代碼傳統(tǒng)JDBC的參數(shù)綁定:PrepareStatement pre=(“select * from User where =?”);(1,”zhaoxin”);ResultSet rs=();在Hibernate中也提供了類似這種的查詢參數(shù)綁定功能,而且在Hibernate中對這個功能還提供了比傳統(tǒng)JDBC操作豐富的多的特性,在Hibernate中共存在4種參數(shù)綁定的方式,下面我們將分別介紹:A、 按參數(shù)名稱綁定:在HQL語句中定義命名參數(shù)要用”:”開頭,形式如下:Query query=(“from User user where =:customername and user:customerage=:age ”);(“customername”,name);(“customerage”,age);上面代碼中用:customername和:customerage分別定義了命名參數(shù)customername和customerage,然后用Query接口的setXXX()方法設(shè)定名參數(shù)值,setXXX()方法包含兩個參數(shù),分別是命名參數(shù)名稱和命名參數(shù)實(shí)際值。 B、 按參數(shù)位置邦定:在HQL查詢語句中用”?”來定義參數(shù)位置,形式如下:Query query=(“from User user where =? and =? ”);(0,name);(1,age);同樣使用setXXX()方法設(shè)定綁定參數(shù),只不過這時setXXX()方法的第一個參數(shù)代表邦定參數(shù)在HQL語句中出現(xiàn)的位置編號(由0開始編號),第二個參數(shù)仍然代表參數(shù)實(shí)際值。 注:在實(shí)際開發(fā)中,提倡使用按名稱邦定命名參數(shù),因為這不但可以提供非常好的程序可讀性,而且也提高了程序的易維護(hù)性,因為當(dāng)查詢參數(shù)的位置發(fā)生改變時,按名稱邦定名參數(shù)的方式中是不需要調(diào)整程序代碼的。 C、 setParameter()方法:在Hibernate的HQL查詢中可以通過setParameter()方法邦定任意類型的參數(shù),如下代碼:String hql=”from User user where =:customername ”;Query query=(hql);(“customername”,name,);如上面代碼所示,setParameter()方法包含三個參數(shù),分別是命名參數(shù)名稱,命名參數(shù)實(shí)際值,以及命名參數(shù)映射類型。 對于某些參數(shù)類型setParameter()方法可以更具參數(shù)值的Java類型,猜測出對應(yīng)的映射類型,因此這時不需要顯示寫出映射類型,像上面的例子,可以直接這樣寫(“customername”,name);但是對于一些類型就必須寫明映射類型,比如類型,因為它會對應(yīng)Hibernate的多種映射類型,比如或者。 D、 setProperties()方法:在Hibernate中可以使用setProperties()方法,將命名參數(shù)與一個對象的屬性值綁定在一起,如下程序代碼:Customer customer=new Customer();(“pansl”);(80);Query query=(“from Customer c where =:name and =:age ”);(customer);setProperties()方法會自動將customer對象實(shí)例的屬性值匹配到命名參數(shù)上,但是要求命名參數(shù)名稱必須要與實(shí)體對象相應(yīng)的屬性同名。 這里還有一個特殊的setEntity()方法,它會把命名參數(shù)與一個持久化對象相關(guān)聯(lián),如下面代碼所示:Customer customer=(Customer)(,”1”);Query query=(“from Order order where =:customer ”);query. setProperties(“customer”,customer);List list=();上面的代碼會生成類似如下的SQL語句:Select * from order where customer_ID=’1’;E、 使用綁定參數(shù)的優(yōu)勢:我們?yōu)槭裁匆褂媒壎麉?shù)?任何一個事物的存在都是有其價值的,具體到綁定參數(shù)對于HQL查詢來說,主要有以下兩個主要優(yōu)勢:①、 可以利用數(shù)據(jù)庫實(shí)施性能優(yōu)化,因為對Hibernate來說在底層使用的是PrepareStatement來完成查詢,因此對于語法相同參數(shù)不同的SQL語句,可以充分利用預(yù)編譯SQL語句緩存,從而提升查詢效率。 ②、 可以防止SQL Injection安全漏洞的產(chǎn)生:SQL Injection是一種專門針對SQL語句拼裝的攻擊方式,比如對于我們常見的用戶登錄,在登錄界面上,用戶輸入用戶名和口令,這時登錄驗證程序可能會生成如下的HQL語句:“from User user where =’”+name+”’ and =’”+password+”’ ”這個HQL語句從邏輯上來說是沒有任何問題的,這個登錄驗證功能在一般情況下也是會正確完成的,但是如果在登錄時在用戶名中輸入”zhaoxin or ‘x’=’x”,這時如果使用簡單的HQL語句的字符串拼裝,就會生成如下的HQL語句:“from User user where =’zhaoxin’ or ‘x’=’x’ and =’admin’ ”;顯然這條HQL語句的where字句將會永遠(yuǎn)為真,而使用戶口令的作用失去意義,這就是SQL Injection攻擊的基本原理。 而使用綁定參數(shù)方式,就可以妥善處理這問題,當(dāng)使用綁定參數(shù)時,會得到下面的HQL語句:from User user where =’’zhaoxin’’ or ‘’x=’’x’’ ‘ and =’admin’;由此可見使用綁定參數(shù)會將用戶名中輸入的單引號解析成字符串(如果想在字符串中包含單引號,應(yīng)使用重復(fù)單引號形式),所以參數(shù)綁定能夠有效防止SQL Injection安全漏洞。
內(nèi)容聲明:
1、本站收錄的內(nèi)容來源于大數(shù)據(jù)收集,版權(quán)歸原網(wǎng)站所有!
2、本站收錄的內(nèi)容若侵害到您的利益,請聯(lián)系我們進(jìn)行刪除處理!
3、本站不接受違法信息,如您發(fā)現(xiàn)違法內(nèi)容,請聯(lián)系我們進(jìn)行舉報處理!
4、本文地址:http://www.lmxpnzry.com/article/4826c3984b633a58b4a0.html,復(fù)制請保留版權(quán)鏈接!
前言輪播是一種在網(wǎng)站上展示幻燈片內(nèi)容的交互式元素,它可以用于展示產(chǎn)品圖片、促銷活動或其他視覺內(nèi)容,當(dāng)設(shè)計和實(shí)施輪播時,遵循最佳實(shí)踐至關(guān)重要,以確保其有效、易于使用和吸引用戶,最佳實(shí)踐設(shè)計方面簡潔明了,輪播的布局和設(shè)計應(yīng)簡潔明了,避免使用復(fù)雜的動畫或過多的文本,高品質(zhì)圖像,使用高質(zhì)量的圖像...。
技術(shù)教程 2024-10-01 11:33:52
配置管理對于確保IT基礎(chǔ)設(shè)施的可靠性和安全至關(guān)重要,通過使用配置管理器,您可以自動化服務(wù)器、網(wǎng)絡(luò)設(shè)備和應(yīng)用程序的配置和管理任務(wù),新手入門了解配置管理的基礎(chǔ)知識,包括它的好處和挑戰(zhàn),選擇一個滿足您需求的配置管理器工具,安裝并配置配置管理器工具,創(chuàng)建和管理配置項,監(jiān)控和報告配置合規(guī)性,中級技能使用版本控制系統(tǒng)來管理和跟蹤配置項,自動化配置...。
最新資訊 2024-09-30 08:25:54
簡介`rm`命令是一個在Linux和macOS系統(tǒng)中常用的命令,用于刪除文件和目錄,它可以刪除單個文件,也可以使用通配符刪除一組文件或目錄,基本語法`rm`命令的基本語法如下,```bashrm[選項]文件或目錄```其中,`選項`,指定刪除操作的特定選項,`文件或目錄`,要刪除的文件或目錄,常用選項一些常用的`rm`命令選項包括,`...。
技術(shù)教程 2024-09-27 22:17:01
引言在數(shù)據(jù)分析和管理中,經(jīng)常需要處理重復(fù)的數(shù)據(jù),去除重復(fù)數(shù)據(jù)對于獲得準(zhǔn)確且有意義的結(jié)果至關(guān)重要,SQLDISTINCT操作符是一個強(qiáng)大的工具,可以幫助我們從結(jié)果集中去除重復(fù)行,SQLDISTINCT原理DISTINCT操作符用于從結(jié)果集中選擇唯一值,它將根據(jù)指定列的值對行進(jìn)行分組,然后只返回每個組中的第一行,例如,以下查詢將從empl...。
技術(shù)教程 2024-09-23 18:16:20
Linux核心是Linux操作系統(tǒng)的核心,它負(fù)責(zé)管理系統(tǒng)資源,例如內(nèi)存、CPU和輸入,輸出設(shè)備,了解Linux核心對于理解Linux操作系統(tǒng)如何工作至關(guān)重要,在文章中,我們將向您介紹一些視頻教程,幫助您掌握Linux核心基礎(chǔ)知識,這些教程將涵蓋以下主題,Linux核心架構(gòu)進(jìn)程和線程內(nèi)存管理設(shè)備驅(qū)動程序文件系統(tǒng)視頻教程1.Linux核心...。
互聯(lián)網(wǎng)資訊 2024-09-23 11:34:46
簡介批處理if語句是一個強(qiáng)大的工具,用于根據(jù)一組條件執(zhí)行或跳過一系列命令,布爾運(yùn)算符AND和OR可使if語句更加強(qiáng)大,可用于創(chuàng)建復(fù)雜的條件表達(dá)式,布爾AND運(yùn)算符,&,&,布爾AND運(yùn)算符,&,&,用于檢查多個條件是否同時為真,如果所有條件均為真,則表達(dá)式為真;否則,表達(dá)式為假,例如,以下批處理代碼檢查兩個...。
互聯(lián)網(wǎng)資訊 2024-09-16 10:56:22
簡介HTML,超文本標(biāo)記語言,是用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)編程語言,它是一種標(biāo)記語言,這意味著它使用標(biāo)簽來定義網(wǎng)頁的結(jié)構(gòu)和格式,本文將指導(dǎo)您完成創(chuàng)建第一個HTML網(wǎng)站的每一步,我們將從HTML的基礎(chǔ)知識開始,然后逐步構(gòu)建一個簡單的網(wǎng)站,HTML基礎(chǔ)知識文檔結(jié)構(gòu)HTML文檔由以下部分組成,<,html>,標(biāo)簽,定義HTML文檔的開始和結(jié)...。
互聯(lián)網(wǎng)資訊 2024-09-15 21:52:57
在過去的幾年里,Objective,C已經(jīng)逐漸成為創(chuàng)建服務(wù)器端應(yīng)用程序的首選語言,它的簡單性和靈活性使其成為構(gòu)建高性能、可擴(kuò)展的應(yīng)用程序的理想選擇,在本文中,我們將指導(dǎo)您使用Objective,C構(gòu)建服務(wù)器端應(yīng)用程序,我們將介紹基礎(chǔ)知識,并提供一些有關(guān)如何解決常見問題的提示,使用Objective,C構(gòu)建服務(wù)器端應(yīng)用程序的基礎(chǔ)知識安裝...。
最新資訊 2024-09-15 19:48:13
簡介Windows操作系統(tǒng)提供了廣泛的自定義選項,讓您可以根據(jù)自己的喜好和工作流程定制您的體驗,ModifyMenu是一個功能強(qiáng)大的工具,它可以讓您輕松地修改Windows菜單,使其更加符合您的需求,使用ModifyMenu下載并安裝ModifyMenu,運(yùn)行ModifyMenu,從菜單中選擇您要修改的菜單,根據(jù)您的喜好進(jìn)行所需的更改...。
互聯(lián)網(wǎng)資訊 2024-09-15 19:13:16
引言發(fā)卡源碼,又稱發(fā)行卡源碼,是金融機(jī)構(gòu)用來創(chuàng)建和管理支付卡的軟件平臺,它是一種強(qiáng)大的工具,可以幫助機(jī)構(gòu)提高效率、降低成本并改善客戶體驗,發(fā)卡源碼的優(yōu)勢1.提高效率發(fā)卡源碼可以自動化許多耗時的任務(wù),例如賬戶創(chuàng)建、交易處理和客戶服務(wù),這可以幫助機(jī)構(gòu)釋放資源,以便專注于更具戰(zhàn)略性的活動,2.降低成本發(fā)卡源碼可以幫助機(jī)構(gòu)減少支付處理費(fèi)用、欺...。
本站公告 2024-09-11 12:02:34
引言隨著互聯(lián)網(wǎng)的興起,在線閱讀已成為一種越來越受歡迎的方式來獲取信息和娛樂,傳統(tǒng)在線閱讀體驗往往缺乏交互性和沉浸感,文字卷軸代碼旨在改變這一現(xiàn)狀,為讀者帶來更具吸引力和互動性的體驗,本文將深入探討文字卷軸代碼,包括其優(yōu)點(diǎn)、局限性、最佳實(shí)踐以及各種可用的編碼語言,無論您是出版商、內(nèi)容創(chuàng)作者還是希望增強(qiáng)在線閱讀體驗的技術(shù)人員,本指南都將為...。
技術(shù)教程 2024-09-09 23:44:22
JavaScript是一種強(qiáng)大的編程語言,可用于創(chuàng)建令人驚嘆的交互式效果,從動畫到游戲,再到數(shù)據(jù)可視化,JavaScript都能滿足您的需求,本指南將帶您領(lǐng)略JavaScript特效世界,并向您展示如何創(chuàng)建自己的特效,動畫動畫是JavaScript最常見的用途之一,您可以使用JavaScript創(chuàng)建從簡單的淡入淡出效果到復(fù)雜的3D動畫...。
本站公告 2024-09-05 23:31:22