Jon Prosser 爆料全新 iPad Pro 與 AirTags 將於 3 月發表

2021 年 Apple 也預計會發表許多新產品,其中第一波的新品可能將在不久後登場。根據 Jon Prosser 上個月的爆料指出 Apple 計劃在 3 月推出搭載 Mini LED 螢幕的全新年式 iPad Pro (2021) ,當時就有傳聞 AirTags 有機會同時登場。稍早, Jon Prosser 在 Twitter 再次發文提及 AirTags 將會在 3 月推出,預計 Apple 會採線上發表的型式宣佈此消息。另外,針對 iPad Pro 的發表時間的疑問也再次回應會在下個月一併亮相。

▲圖片來源:MacRumors

Jon Prosser 爆料全新 iPad Pro 與 AirTags 將於 3月發表

過去多次精準預測、但在去年也有幾次失準紀錄的 Jon Prosser 在今日稍早於 Twitter 發文表示 AirTags 仍在進行中、預計會在 3 月發表,而且這次並沒有聽到會有延誤。但是,這並非他第一次聲稱取得 AirTags 的相關消息,因為在早在去年他就曾表示 AirTags 肯定會在 11 月中的活動中亮相,最終該活動則是推出多款搭載 Apple M1 晶片的 Mac 電腦,並沒有 AirTags 。後續也提及 AirTags 將與 iOS 14.3/iPadOS 14.3 一同發表,但事實也非如此。
這次 Jon Prosser 宣稱 2021 年 3 月是 AirTags 的發表月份,值得注意過去 Apple 通常不會在每年 3 月之前舉行活動發表新品,因此這次的說法似乎是有根據的猜測。

▲圖片來源:Jon Prosser(Twitter/@jon_prosser)

早在去年, Jon Prosser 就在 Twitter 釋出 AirTags 的外觀渲染圖,後續也曾分享 3D 動圖版本的渲染圖,不過目前還未見到這款 Apple 的藍牙接收裝置發表。Ming-Chi Kuo 在上個月也表示 AirTags 有望在 2021 年發表,不過他並未提供具體的時程。

▲圖片來源:Jon Prosser(Twitter/@jon_prosser)

另外也有網友在該則貼文底下詢問 iPad Pro 的發表時間, Jon Prosser 則再次回應時間會在 3 月:

▲圖片來源:Jon Prosser(Twitter/@jon_prosser)

早在之前, Jon Prosser 就曾透露接下來在 3 月就可能會見到搭載 Mini LED 的 iPad Pro 登場。據悉全新 mini LED 螢幕的 2021 年款 iPad Pro 將搭載 5nm 製程的 A14X 仿生晶片,同時和 iPhone 12 系列一樣採用 Qualcomm Snapdragon X55 5G 連網數據晶片、支持 mmWave 毫米波和 6GHz 以下頻段,記憶體則有 6GB RAM。

▲圖片來源:MacRumors

也有網友詢問今年 Apple 是否還會推出具備 Touch ID 的 iPhone?關於這一點 Jon Prosser 回應也確認了此消息。

▲圖片來源:Jon Prosser(Twitter/@jon_prosser)

上個月, Apple Lab 在 Twitter 爆料指出 Apple 今年預計會推出全新 2021 年版本、螢幕更大的 iPhone SE 後繼機型,預計採用「iPhone SE Plus」。傳聞這款新機將配備 6.1 吋 LCD 螢幕、 A14 仿生晶片、 12MP 單鏡頭主相機和 700 萬像素視訊鏡頭、和 iPhone 12 系列一樣俱備 Smart HDR 3 拍攝,值得注意的是傳聞這款新機將保留 Touch ID 指紋辨識,不過預計會將指紋感應器比照 iPad Air 4 整合在機身側邊的電源鍵上。價格方面,傳聞 iPhone SE Plus 售價比起 2020 年的 iPhone SE(第 2 代)售價提升 100 美元左右,換算屆時在台灣的售價預計落在 16,900 元起。

▲圖片來源:Apple Lab(Twitter/@aaple_lab)

消息來源:Jon Prosser(Twitter/@jon_prosser)|MacRumors|Apple Lab(Twitter/@aaple_lab)

延伸閱讀:
Redmi K40 / K40 Pro、小米10 新版本外觀認證照曝光

小米11 Pro 新外觀渲染圖、規格曝光?!小米11 系列還有兩款高階機型尚未推出,不過小米10 將有 S870 小改升級版本

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

【其他文章推薦】

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※回頭車貨運收費標準

※推薦評價好的iphone維修中心

※超省錢租車方案

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

※推薦台中搬家公司優質服務,可到府估價

小米11 非官方拆解影片來了!有更多官方未提到的設計小巧思

在小米11 國際版於歐洲發表後,在 YouTube 的知名虐機頻道 JerryRigEverything 日前除了針對這款小米發表的首款 Snapdragon 888 旗艦手機小米11 進行虐機測試,其實也有針對這款小米新旗艦進行手機拆解,比起先前小米官方親自釋出的拆機影片, JerryRigEverything 的拆機則帶大家看到更多小米官方未提及的設計細節。 

小米11 非官方拆解影片來了!有更多官方未提到的設計小巧思

除了虐機測試考驗著手機螢幕、機身的耐用性表現,近日 JerryRigEverything 也為大家帶來小米11 的拆解影片,在卸下小米11 的玻璃後蓋後,可以看到一片大尺寸的無線充電線圈,可幫助小米11 完成最高 50W 的無線充電。

在小米11 機身內部的周圍的螺絲可以發現以不同顏色區分,例如其中有包括大量綠色的螺絲,這對於維修人員在作業時也更為方便:

另外,小米11 主相機的鏡頭蓋採用金屬製成:

小米11 搭載 2000 萬像素前置鏡頭相機:

小米11 搭載 1.08 億像素 AI 三鏡頭主相機,分別為 1.08 億像素廣角鏡頭為主鏡頭,搭配 1300 萬像素 123° 超廣角鏡頭 500 萬像素長焦微距鏡頭:

接著看到電池部分,小米11 內部電池旁有拆卸指引的貼片,只需依照指示即可輕鬆拆卸電池進行維修。

電池容量部分,小米11 內建等效 4,600mAh (typ) 高容量電池,實際上使用兩節單獨的電池以雙電池形式組合在一起,雙電池設計比起傳統單體電池組具備更快的充電效率。小米11 在充電方面支持 55W 有線快充、 50W無線快充以及10W 無線反充,小米11 國際版也將標配 55W GaN 氮化鎵充電器。

小米11 完整拆機影片

 

圖片/消息來源: JerryRigEverything(YouTube)

延伸閱讀:
小米11 骨牌挑戰影片!以 4100支成功完成挑戰

小米MIX系列「可量產」新機確認將在今年即將回歸,另有小米平板也將登場

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

【其他文章推薦】

※回頭車貨運收費標準

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※推薦評價好的iphone維修中心

※教你寫出一流的銷售文案?

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

這些車15萬預算就給你30萬般高顏值上檔次的內飾!

99-15。99萬英朗外觀造型非常的有神韻。英朗的懸浮式的中控台造型上讓車廂內更具簡潔、時尚的氣質,懸浮式的中控台設計層次分明,按鍵數量精簡,簡約設計更讓視覺效果更顯檔次,英朗的內飾做工用料出色,銀色飾板的點綴到位,給人厚重紮實的感覺,全彩的3。

一台車,我們待的時間最多就是在車廂里,而外觀只有在上車時或者下車時,多看兩眼,正所謂,一步三回頭,欣賞它的美。所以內飾對我我們來說也是非常重要,好看的內飾,決定了你的品位,好看的內飾,還能調動你內心的情緒。

我們都知道

概念車的內飾

可實際上靠譜的內飾應該是這樣

東風本田-傑德

指導價:14.98-18.38萬

傑德的外觀可是顏值爆表,尤其是側面,非常符合年輕人的審美。傑德的內飾也是它的亮點之一,傑德的內飾整體給人一種很居家的感覺,沒有任何誇張的元素,簡約實用的設計風格。傑德的內飾雖然沒有讓人過目不忘的視覺衝擊,但是整體感覺非常舒適溫馨,中控台的設計也比較簡單,區域的劃分也很明顯,按鍵的布局排列也十分整齊。內種大面積的採用了木紋裝飾板,這種裝飾板摸上去手感還是不錯的,整體效果看上去更更居家,傑德採用了液晶屏式的儀錶盤,相對比傳統樣式的儀錶盤,信息的显示會更加豐富。時尚運動的外表之下,也可以有一顆居家的心,這就是傑德內飾給我的感覺。

上汽通用別克-英朗

指導價:10.99-15.99萬

英朗外觀造型非常的有神韻。英朗的懸浮式的中控台造型上讓車廂內更具簡潔、時尚的氣質,懸浮式的中控台設計層次分明,按鍵數量精簡,簡約設計更讓視覺效果更顯檔次,英朗的內飾做工用料出色,銀色飾板的點綴到位,給人厚重紮實的感覺,全彩的3.5英寸液晶儀錶清晰明了,錶盤刻度設計非常精緻,行車電腦显示信息豐富。英朗的內飾做工用料非常出色,坐在車內,你能感受到沉穩、從容的感覺。

長安標緻雪鐵龍-DS 5LS

指導價:14.98-24.68萬

法系車的外觀設計一直都是天馬行空,現在這種誇張的元素也慢慢收斂了許多,慢慢趨向大眾化,但它的外觀設計依然是特別有味道,DS 5LS外形依然顯豪華的質感,非常搶眼!5LS的內飾設計非常精緻和豪華感,中控的布局也是比較分明,功能區按鍵手感細膩,空間區按鍵和旋鈕搭配的布局合理,直觀,使用便捷,非常精緻,細節之處凸顯文化底蘊。DS 5LS的儀錶盤造型也很獨特、很有科技感,行車電腦显示的信息也比較豐富。DS 5LS的內飾設計更加豪華、上檔次。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

網頁設計最專業,超強功能平台可客製化

※別再煩惱如何寫文案,掌握八大原則!

奇瑞全新小型SUV瑞虎3x智趣上市 售價5.89-8.09萬元

9L,燃油經濟性十分突出。瑞虎3x大量選用環保材料技術,在零件、系統、整車各個階段對內飾空氣質量層層監控,營造綠色、環保、低氣味的內飾空間。同時,瑞虎3x遵循五星安全標準設計,具有高強度車身結構和嚴謹的製造工藝,不僅擁有輕量化前防撞鋼樑、環護式四位一體安全氣囊的全方位被動安全配置,還配備了全方位倒車雷達+動態輔助倒車影像系統、全新ESC車身穩定系統、TpMS直接式胎壓監測、EBA剎車輔助控制系統、上坡輔助HHC等越級高科技主動安全配置,全方位保障用戶行車安全。

11月15日,奇瑞全新小型SUV—瑞虎3x正式上市。新車共推出搭載1.5VVT發動機共10款車型,售價5.89萬——8.09萬元。

瑞虎3x是奇瑞戰略2.0體系下的第三款全新產品,將以“同級首款4G互聯SUV”的優勢進軍小型SUV市場,並與此前上市的新瑞虎3共同組成產品雙擎,進一步完善瑞虎家族產品線,實現對年輕時尚細分市場的全面覆蓋。

以“智趣”為標籤的瑞虎3x是奇瑞基於當下年輕消費群體的用車需求以及SUV年輕化、智能化、個性化的發展趨勢,為追求獨特個性、玩樂精神的年輕群體量身打造的一款“4G智趣SUV”。

“全新品質標杆” 引領小型SUV新潮流

作為奇瑞2.0產品的新一代小型SUV,無論是引領潮流的造型設計,還是智能互聯的科技屬性,都讓瑞虎3x領先一步樹立起小型SUV市場的全新品質標杆。

雖然是一款體量小的SUV,但瑞虎3x在尺寸空間和動力性能上都有獨特優勢。4200 *1760 *1570 mm的車身尺寸和2555 mm的超長軸距全面超越同級競爭對手。合理的設計使瑞虎3x在實際空間的表現上更為突出,提供了同級別最優的前排頭腿部空間、後排頭部空間,高達420L的後備箱載物空間也是同級容積最大。升級后的1.5VVT全國十佳發動機匹配5MT/4AT兩款變速箱,使瑞虎3x的最大輸出功率高達106馬力。百公里40m制動距離、186mm的最小離地間隙、24°接近角、32°離去角更是造就了瑞虎3x的同級最優通過性。

憑藉奇瑞2.0體系的強大支撐,瑞虎3x的品質和可靠性比肩國際水準。在耐久可靠性方面,瑞虎3x經歷了全球極限環境的苛刻路試,通過了近100項試驗驗證,開發過程中總計投入試驗車超過200台,累計行駛里程數約110萬公里;百公里綜合油耗僅5.9L,燃油經濟性十分突出。瑞虎3x大量選用環保材料技術,在零件、系統、整車各個階段對內飾空氣質量層層監控,營造綠色、環保、低氣味的內飾空間。同時,瑞虎3x遵循五星安全標準設計,具有高強度車身結構和嚴謹的製造工藝,不僅擁有輕量化前防撞鋼樑、環護式四位一體安全氣囊的全方位被動安全配置,還配備了全方位倒車雷達+動態輔助倒車影像系統、全新ESC車身穩定系統、TpMS直接式胎壓監測、EBA剎車輔助控制系統、上坡輔助HHC等越級高科技主動安全配置,全方位保障用戶行車安全。在售後服務方面也擁有尊貴禮遇,可享受“3年10萬公里整車保修”的服務品質保障。

“4G全時互聯” 定義全新用車生活

對以“智趣”為靈魂的瑞虎3x來說,“4G全時互聯”的引入,成為瑞虎3x最受關注之處。在智能科技配置方面,瑞虎3x深諳年輕用戶對互聯的需求,搭載了Cloudrive2.0智雲互聯行車系統,不僅配備了4G極速wifi、VOS智能語音控制、語音導航、Carplay手機互聯、8寸超大高清彩屏、動態輔助倒車影像、GSI換擋提醒等多項同級別獨有配置,還配有定速巡航、伴我回家功能、后視鏡電加熱 、外后視鏡集成轉向燈、遙控鑰匙等人性化科技配置,樹立起小型SUV配置標杆。

汽車“雲”服務是未來汽車發展的趨勢,瞄準年輕用戶的瑞虎3x,此次聯手業界“語音怪獸”科大訊飛推出Cloudrive 2.0智能語音交互系統,是同級唯一擁有4G互聯功能的SUV。這套系統此前在艾瑞澤5車型上已經體現了強大的功能和互動便利性,此次更是不惜成本在原先版本上升級優化,打造出“中國最強”車載語音系統。

“能說話絕不動手”,瑞虎3x還突破性地迎來了人機之間的無障礙溝通。系統內置4G無線網卡、硬件採用2G DDR3/8G ROM雙核,可實現最快的瀏覽分享速度;雙麥語音降噪模塊、雲+端語音識別技術的應用,普通話識別率近100%,16種方言也能精準識別交互;On Cloud全網雲端在線服務,私人定製在線服務、海量數據支持等互聯體驗使人與機器的交流像人與人之間的“對話”,一舉顛覆傳統用車方式。

2.0發力 品牌年輕化築優勢

從小型SUV瑞虎3到緊湊型SUV瑞虎5,再到中級SUV瑞虎7……瑞虎3x的上市,將進一步完成奇瑞在SUV市場的全方位布局。瑞虎3x將與新瑞虎3一起組合“雙子星“,實現奇瑞在SUV市場實現更細分的市場覆蓋,形成個性鮮明、高低搭配的瑞虎家族產品矩陣。

從今年上市的艾瑞澤5、瑞虎7、瑞虎3x這三款奇瑞2.0產品可以看到,奇瑞在設計中摒棄了中庸的設計理念,採用了大量時尚、個性的元素,充分迎合年輕消費者的審美和喜好。在科技配置上,新一代車型增強了智能互聯功能,搭載了語音交互、雲端服務、內置4G網卡等配置,滿足年輕消費群體高度依賴互聯網的生活方式和出行需求。奇瑞把未來品牌和產品的主力目標人群鎖定為年輕人,品牌形象正在變得更加年輕、時尚、國際范。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

※回頭車貨運收費標準

我對互聯網汽車的一些思考

理想非常美好,現實不確定性很多,唯有務實工作,埋頭苦幹,用釘釘子的精神,把一個又一個的問題解決,一個又一個的難關攻克,不斷夯實技術基礎,不斷積累試驗數據,不斷磨鍊人才隊伍,不斷疊代升級,螺旋發展,才有可能到達勝利的彼岸。

11月16日,以“創新驅動 造福人類——攜手共建網絡空間命運共同體”為主題的第三屆世界互聯網大會在烏鎮開幕,作為參与本屆大會的汽車行業代表,浙江吉利控股集團董事長李書福發表了題為《我對互聯網汽車的一些思考》的署名文章,全文如下:

我對互聯網汽車的一些思考

吉利控股集團董事長 李書福

外行人看熱鬧,內行人看門道。我半路出家,談不上內行,但由於在汽車行業工作幾十年,對所謂的互聯網汽車略有所研究。如果我沒有記錯的話,大概在2007年夏天,有一位中國記者問我:“李總,智能手機改變了傳統電話,在通訊領域發起了一場革命,你認為下一場革命是什麼行業?”我當初回答不出來,我真的不知道是哪個行業。她說:“有人講下一場革命會發生在汽車行業。”

我當初確實沒有想到,也不以為然。當然這位記者也沒有搞清楚這場革命將如何起源,如何發展。而今天,基本上已經有了一個方向,比如電動化、智能化、輕量化,尤其是無人駕駛及人們所謂的互聯網汽車,這些方向在汽車行業內已經被廣泛認同。但如何電動化,電動化程度及水平,如何輕量化,輕量化程度及水平,如何智能化,智能化程度及水平等等問題都沒有標準答案。行業內不同的企業尋求不同的解決方案,大家都在大量投入研發,尤其是在一些基礎技術研發方面的投資是巨大的。

有些技術的研發不僅僅是錢的問題,錢當然重要,但完全靠錢不一定達到目的。比如電動化程度及水平的問題,電動車技術不是新鮮技術,一百多年來一直存在。到今天,有些技術雖然取得了突破,但還有許多技術難題依然找不到解決方案。許多人都說自己的技術世界第一,都說自己的商業模式最有競爭力。但無論怎麼說,汽車電動化這條道路上還有許多困難與問題在等待着我們克服與解決,就是成為“世界第一”了也不一定就能取得成功。

我認為這一場產業革命今天才剛剛開始,離真正的成功還有很大的距離。又比如輕量化的問題,表面上看,電動化與輕量化沒有直接聯繫,但事實上二者關聯非常密切。從商業的本質與產品競爭來講,沒有輕量化就不能電動化,二者密不可分。由於電池的能量密度太低,今天的電動化技術還不能幫助整車解決輕量化的難題,二者是矛盾體。如何解決這個矛盾,全球汽車同行都在做各種嘗試,既要在成本上可行,又要在用戶體驗上有競爭力,雖然已經有了一些科學發明,已經有了一些創新成果,已經有了一些解決方案,在世界各地經常傳來一些神奇的重大技術突破的好消息,但還是需要實踐檢驗。這些檢驗不僅僅是技術可行性,同時還必須要有商業可行性。由於汽車這個產品的特殊性,這種檢驗需要一個漫長而反覆的過程。

探明石油儲量的增加以及全球石油價格的下降,對電動汽車的發展不是好消息,對電動車的成本、經濟性及用戶體驗提出更高要求。由於汽車的電動化與輕量化技術還走在路上,因此我們必須了解行業全貌,共同努力,积極探索,必須明白電動化技術路線存在許多不確定性,需要耐心,切勿急於求成。操之過急可能欲速而不達,只有尊重規律,認清現實,一步一個腳印,循序漸進,才能水到渠成。

互聯網與電動化、輕量化照樣有着先天的關係。汽車工業的發展過程就是工業與信息化技術融合的過程。傳統汽車工業是機電一體化工業,今天的汽車工業是人機、機電、电子信息一體化工業,也就是有些人所謂的互聯網汽車。

所謂互聯網,就是信息技術的網絡化發展,既涉及到汽車本身通訊技術的研發,也涉及到汽車與外部通訊網絡的連接。所謂互聯網汽車,就是把汽車與互聯網有機融合,實現人機交互智能化、機電執行自動化、駕駛路線信息化,最終實現完全無人駕駛,讓汽車成為服務於交通運輸領域的超級機器人。

但是,所有這一切美好追求,都是人們的理想藍圖。什麼時候能夠實現?如何實現?成功率有多高?誰能保證?所有這一切的一切,都需要市場檢驗。理想非常美好,現實不確定性很多,唯有務實工作,埋頭苦幹,用釘釘子的精神,把一個又一個的問題解決,一個又一個的難關攻克,不斷夯實技術基礎,不斷積累試驗數據,不斷磨鍊人才隊伍,不斷疊代升級,螺旋發展,才有可能到達勝利的彼岸。

吉利雖然制定了“藍色吉利行動”計劃,但現在看來需要重新審視,滾動修訂,尤其是美國新一任總統的能源戰略將會對巴黎氣候協定產生影響,從而對汽車行業產生影響,對汽車的電動化進程產生影響。

從理論上講,真正的互聯網汽車必須是高度電動化的汽車,沒有電動化就很難實現互聯網化,也就不可能高度智能化。原因很簡單,電動化有利於能源供給自動化、車輛啟停安全性及長時間待機網絡化的在線服務,但是從此岸到彼岸不能簡單跨越發展,也無法跨越發展,必須按規律發展。

沃爾沃新一代XC90是全球第一輛真正意義上的互聯網概念汽車

有想法的人很多,把想法變成現實卻非常艱難。十多年前沃爾沃就開始研究無人駕駛汽車、電動汽車及輕量化技術。去年沃爾沃XC90新一代車型在全球同步投放市場,其受歡迎程度完全出乎人們的想象,尤其在美國、德國、日本等市場更是供不應求,一車難求,一年內在全球拿了一百多個大獎,這麼一輛沃爾沃XC90,為何如此受歡迎呢?原因有以下幾條:

一、全球第一輛真正意義上的互聯網概念汽車,並且具備持續迭代升級的基礎能力;

二、已經實現0-130公里高度輔助駕駛功能,可以讓司機駕車更加輕鬆;

三、車內空氣質量達到兒童級別標準,不僅過濾了pM2.5,而且確保一氧化氮、一氧化碳、碳氧化合物、甲醛、花粉等各種有害物質得到有效控制;

四、車內音響設計達到歌劇院標準,舉世無雙;

五、安全水平全球遙遙領先;

六、2.0的排氣量油耗,相當於4.0功率、扭矩。

基於可疊代升級的SpA基礎架構開發的沃爾沃XC90,雖然走在行業前列,獲得市場的廣泛認可,但追兵與模仿者也不在少數,其競爭對手紛紛解剖、分析研究XC90,同行開發的類似產品也陸續推向市場,參与競爭。因此,如何更快更好升級疊代,始終擺在汽車行業的面前。

CMA模塊架構具有很強的疊代升級屬性

2013年,吉利歐洲研發中心成立,沃爾沃主導與協同吉利研發CMA基礎架構模塊,這種模塊的最大特點就是靈活、軟硬件都可疊代升級,可以搭載純電、油電、插電,也可以搭載傳統能源,电子架構技術領先,人機交互智能,最終可升級為完全無人駕駛。吉利汽車、沃爾沃汽車兩個汽車公司都可以使用CMA基礎架構模塊進行各自汽車產品的研發設計,雙方的汽車產品標準不同,設計不同,配置不同,消費群體不同。簡單地講,CMA架構就是吉利汽車公司與沃爾沃汽車公司聯合打造的互聯網汽車基礎架構,與傳統汽車底盤概念完全不同。吉利汽車基於CMA基礎架構推出的全新品牌LYNK & CO已於上月在歐洲發布,媒體和消費者給與了高度評價,該品牌下首款車型將於明年第四季度面世。

吉利汽車旗下全新品牌LYNK&CO應互聯網而生

我可以毫不誇張地說,沃爾沃汽車公司的自動駕駛技術是當今世界上最先進的技術,沃爾沃公司研發的XC90、S90汽車產品是全球唯一大批量商業化的高度輔助駕駛汽車,實現了時速0-130公里的智能輔助駕駛。自動駕駛的目的首先是為了安全,無論是電動汽車還是傳統汽車,安全是最基本的前提,這一點全世界沒有第二個汽車公司可以與沃爾沃相抗衡。美國優步與沃爾沃合作開發無人車並由沃爾沃提供基礎車型;全球知名汽車安全零部件公司奧特利夫與沃爾沃合作,聯合研發完全無人駕駛技術等等,都足以說明沃爾沃在無人駕駛技術方面的全球地位。即便這樣,我們依然認為前方的道路充滿了挑戰。

S90已經實現時速0-130公里的智能輔助駕駛

變革是需要條件的,革命是需要環境的。汽車行業的變革雖然已經開始,但條件還需要繼續成熟,環境還需要不斷改善。汽車行業的變革是需要時間的,而且可能反覆並充滿不確定性。理想可以吹得天花亂墜,可以充滿無窮想象,但現實依然殘酷無情。商場就是戰場,眼淚不能解決問題。吉利造汽車是從自己投資建設技師學院及工程師學院開始培養人才的,近二十年來在技師、工程師培養上大量投入。沃爾沃汽車公司雖然做了大量基礎性工作,雖然在汽車及交通領域互聯互通技術上取得了大量研究成果,但以後的路還很長,面臨的挑戰依然非常嚴峻。當然,我們充滿信心,我們堅信,世上無難事,只要肯登攀。

最後,我想用一句千年古訓與大家共勉:“不積跬步,無以至千里;不積小流,無以成江海。”本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化

※回頭車貨運收費標準

17萬起可以買到大切諾基的親弟弟?要趕緊下單了嗎

5牛米。自由俠搭載了7擋雙離合變速箱導致溜坡,並且行駛過程中頓挫不斷,而自由光的9速變速箱則到120km/h也上不了第9擋。因此,對於這兩個動力組合,我持保留意見。配置從配置上來看,全系標配ESC电子穩定控制系統和胎壓監測系統,這點頗為厚道。

前言11月16日,全新指南者正式上市,新車的定位介於自由光與自由俠之間,那麼這款車究竟有什麼特別呢?

售價上入門級的200T指南者在17萬以內,中高配則去到18到20萬區間,200TS高性能四驅版的售價在24萬元左右。從售價上不難看出,指南者完全是對準了合資緊湊型SUV的消費市場,直接競爭對手包括奇駿,CR-V等城市SUV。不過,這個價格段內,可供選擇的車型還是有點少,如果將來可以豐富一下車型選擇,那就挺不錯。

外觀設計

外觀設計上,指南者就是典型的小號大切諾基。長寬高分別為4415x1819x1625mm,而200TS版本的高度會提升到1648mm,軸距則同為2636mm前臉七個鍍鉻矩形框,整齊劃一地置在中心,相當霸氣,給人一種一夫當關,萬夫莫開的感覺。不過,這些矩形框的面積還是小於大切諾基的。

側面則複製了自由光,雖然看上去簡潔,但是一條從A柱沿車窗頂部一直延伸到尾部的鍍鉻裝飾條更顯大氣,梯形輪拱則展現了美國車剛強的一面。在輪轂的造型上,採用了五幅式漏斗形的樣式,看上去比較有力量感。尾部造型也是縮小版的大切諾基,但是由於車身尺寸不夠大, 所以整個造型無法做到很舒展,兩個車燈上方開始有明顯的回收,對乘坐空間有一定影響。

動力總成

全新指南者有兩套動力系統可供選擇分別是1.4T+7速雙離合變速箱和2.4L+9速手自一體變速箱。前者最大輸出165馬力和250牛米,後者最大輸出175馬力和227.5牛米。自由俠搭載了7擋雙離合變速箱導致溜坡,並且行駛過程中頓挫不斷,而自由光的9速變速箱則到120km/h也上不了第9擋。因此,對於這兩個動力組合,我持保留意見。

配置

從配置上來看,全系標配ESC电子穩定控制系統和胎壓監測系統,這點頗為厚道。上到頂配,則多了很多高科技配置,包括自適應定速巡航系統、前碰撞預警制動系統、行駛盲點監測系統、車道偏離預警系統、自動雙方位泊車輔助系統。

從舒適性配置來看,除最低配外,均有電動全景天窗、無鑰匙進入與啟動系統,以及雙區獨立控制空調。另外,全系標配日間行車燈和家人最喜歡的後排座椅出風口,這幾點也誠意十足。

在多媒體方面,全系標配Uconnect智能車載控制系統和語音控制系統,最低配配有5.0英寸中控台彩色显示屏,其餘配置均有8.4英寸的大屏。

作為一輛Jeep,儘管定位於城市SUV,但是一些越野的配置還是不能少的。指南者的頂配車型有Active Drive Low智能四驅系統,並且擁有同級中絕無僅有的低速扭矩放大功能。除此以外,還有五種駕駛模式可供選擇,分別是標準、沙地、泥地、雪地、岩石,全方位滿足各種路況需求。

編者總結:

Jeep近幾年也在慢慢地往市場需求投入更多的精力,然而做出來的產品卻差強人意。可見,在通往優秀家用SUV的路上,Jeep還有不少路要走,但求屬於它的那份野性不會就此丟失。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

台中搬家公司費用怎麼算?

重學 Java 設計模式:實戰橋接模式(多支付渠道「微信、支付寶」與多支付模式「刷臉、指紋」場景)

作者:小傅哥
博客:https://bugstack.cn – 編寫系列原創專題文章

沉澱、分享、成長,讓自己和他人都能有所收穫!

一、前言

為什麼你的代碼那麼多ifelse

同類的業務、同樣的功能,怎麼就你能寫出來那麼多ifelse。很多時候一些剛剛從校園進入企業的萌新,或者一部分從小公司跳槽到大企業的程序員,初次承接業務需求的時候,往往編碼還不成熟,經常一桿到底的寫需求。初次實現確實很快,但是後期維護和擴展就十分痛苦。因為一段代碼的可讀性閱讀他後期的維護成本也就越高。

設計模式是可以幫助你改善代碼

很多時候你寫出來的ifelse都是沒有考慮使用設計模式優化,就像;同類服務的不同接口適配包裝、同類物料不同組合的建造、多種獎品組合的營銷工廠等等。它們都可以讓你代碼中原本使用if判斷的地方,變成一組組類和面向對象的實現過程。

怎麼把設計模式和實際開發結合起來

多從實際場景思考,只找到代碼優化的最佳點,不要可以想着設計模式的使用。就像你最開始看設計模式適合,因為沒有真實的場景模擬案例,都是一些畫圓形、方形,對新人或者理解能力還不到的夥伴來說很不友好。所以即使學了半天 ,但實際使用還是摸不着頭腦。

二、開發環境

  1. JDK 1.8
  2. Idea + Maven
  3. 涉及工程三個,可以通過關注公眾號bugstack蟲洞棧,回復源碼下載獲取(打開獲取的鏈接,找到序號18)
工程 描述
itstack-demo-design-7-01 使用一坨代碼實現業務需求
itstack-demo-design-7-02 通過設計模式優化改造代碼,產生對比性從而學習

三、橋接模式介紹

橋接模式的主要作用就是通過將抽象部分與實現部分分離,把多種可匹配的使用進行組合。說白了核心實現也就是在A類中含有B類接口,通過構造函數傳遞B類的實現,這個B類就是設計的

那麼這樣的橋接模式,在我們平常的開發中有哪些場景

JDBC多種驅動程序的實現、同品牌類型的台式機和筆記本平板、業務實現中的多類接口同組過濾服務等。這些場景都比較適合使用橋接模式進行實現,因為在一些組合中如果有如果每一個類都實現不同的服務可能會出現笛卡爾積,而使用橋接模式就可以非常簡單。

四、案例場景模擬

隨着市場的競爭在支付服務行業出現了微信和支付寶還包括一些其他支付服務,但是對於商家來說並不希望改變用戶習慣。就像如果我的地攤只能使用微信或者只能使用支付寶付款,那麼就會讓我顧客傷心,雞蛋灌餅也賣不動了。

在這個時候就出現了第三方平台,把市面上綜合佔據市場90%以上的支付服務都集中到自己平台中,再把這樣的平台提供給店鋪、超市、地攤使用,同時支持人臉、掃描、密碼多種方式。

我們這個案例就模擬一個這樣的第三方平台來承接各個支付能力,同時使用自家的人臉讓用戶支付起來更加容易。那麼這裏就出現了多支付多模式的融合使用,如果給每一個支付都實現一次不同的模式,即使是繼承類也需要開發好多。而且隨着後面接入了更多的支付服務或者支付方式,就會呈爆炸似的擴展。

所以你現在可以思考一下這樣的場景該如何實現?

五、用一坨坨代碼實現

產品經理說老闆要的需求,要儘快上,kpi你看着弄!

既然你逼我那就別怪我無情,還沒有我一個類寫不完的需求!反正寫完就完事了,拿完績效也要走了天天逼着寫需求,代碼越來越亂心疼後面的兄弟3秒。

1. 工程結構

itstack-demo-design-7-01
└── src
    └── main
        └── java
            └── org.itstack.demo.design
                └── PayController.java
  • 只有一個類裏面都是ifelse,這個類實現了支付和模式的全部功能。

2. 代碼實現

public class PayController {

    private Logger logger = LoggerFactory.getLogger(PayController.class);

    public boolean doPay(String uId, String tradeId, BigDecimal amount, int channelType, int modeType) {
        // 微信支付
        if (1 == channelType) {
            logger.info("模擬微信渠道支付划賬開始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount);
            if (1 == modeType) {
                logger.info("密碼支付,風控校驗環境安全");
            } else if (2 == modeType) {
                logger.info("人臉支付,風控校驗臉部識別");
            } else if (3 == modeType) {
                logger.info("指紋支付,風控校驗指紋信息");
            }
        }
        // 支付寶支付
        else if (2 == channelType) {
            logger.info("模擬支付寶渠道支付划賬開始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount);
            if (1 == modeType) {
                logger.info("密碼支付,風控校驗環境安全");
            } else if (2 == modeType) {
                logger.info("人臉支付,風控校驗臉部識別");
            } else if (3 == modeType) {
                logger.info("指紋支付,風控校驗指紋信息");
            }
        }
        return true;
    }

}
  • 上面的類提供了一個支付服務功能,通過提供的必要字段;用戶ID交易ID金額渠道模式,來控制支付方式。
  • 以上的ifelse應該是最差的一種寫法,即使寫ifelse也是可以優化的方式去寫的。

3. 測試驗證

3.1 編寫測試類

@Test
public void test_pay() {
    PayController pay = new PayController();
    System.out.println("\r\n模擬測試場景;微信支付、人臉方式。");
    pay.doPay("weixin_1092033111", "100000109893", new BigDecimal(100), 1, 2);
    
    System.out.println("\r\n模擬測試場景;支付寶支付、指紋方式。");
    pay.doPay("jlu19dlxo111","100000109894",new BigDecimal(100), 2, 3);
}
  • 以上分別測試了兩種不同的支付類型和支付模式;微信人臉支付、支付寶指紋支付

3.2 測試結果

模擬測試場景;微信支付、人臉方式。
23:05:59.152 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬微信渠道支付划賬開始。uId:weixin_1092033111 tradeId:100000109893 amount:100
23:05:59.155 [main] INFO  o.i.demo.design.pay.mode.PayCypher - 人臉支付,風控校驗臉部識別
23:05:59.155 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬微信渠道支付風控校驗。uId:weixin_1092033111 tradeId:100000109893 security:true
23:05:59.155 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬微信渠道支付划賬成功。uId:weixin_1092033111 tradeId:100000109893 amount:100

模擬測試場景;支付寶支付、指紋方式。
23:05:59.156 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬支付寶渠道支付划賬開始。uId:jlu19dlxo111 tradeId:100000109894 amount:100
23:05:59.156 [main] INFO  o.i.demo.design.pay.mode.PayCypher - 指紋支付,風控校驗指紋信息
23:05:59.156 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬支付寶渠道支付風控校驗。uId:jlu19dlxo111 tradeId:100000109894 security:true
23:05:59.156 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬支付寶渠道支付划賬成功。uId:jlu19dlxo111 tradeId:100000109894 amount:100

Process finished with exit code 0
  • 從測試結果看已經滿足了我們的不同支付類型和支付模式的組合,但是這樣的代碼在後面的維護以及擴展都會變得非常複雜。

六、橋接模式重構代碼

接下來使用橋接模式來進行代碼優化,也算是一次很小的重構。

從上面的ifelse方式實現來看,這是兩種不同類型的相互組合。那麼就可以把支付方式支付模式進行分離通過抽象類依賴實現類的方式進行橋接,通過這樣的拆分后支付與模式其實是可以單獨使用的,當需要組合時候只需要把模式傳遞給支付即可。

橋接模式的關鍵是選擇的橋接點拆分,是否可以找到這樣類似的相互組合,如果沒有就不必要非得使用橋接模式。

1. 工程結構

itstack-demo-design-7-02
└── src
    ├── main
    │   └── java
    │       └── org.itstack.demo.design.pay
    │           ├── channel
    │           │   ├── Pay.java
    │           │   ├── WxPay.java
    │           │   └── ZfbPay.java
    │           └── mode
    │               ├── IPayMode.java
    │               ├── PayCypher.java
    │               ├── PayFaceMode.java
    │               └── PayFingerprintMode.java
    └── test
         └── java
             └── org.itstack.demo.design.test
                 └── ApiTest.java

橋接模式模型結構

  • 左側Pay是一個抽象類,往下是它的兩個支付類型實現;微信支付、支付寶支付。
  • 右側IPayMode是一個接口,往下是它的兩個支付模型;刷臉支付、指紋支付。
  • 那麼,支付類型 × 支付模型 = 就可以得到相應的組合。

2. 代碼實現

2.1 支付類型橋接抽象類

public abstract class Pay {

    protected Logger logger = LoggerFactory.getLogger(Pay.class);

    protected IPayMode payMode;

    public Pay(IPayMode payMode) {
        this.payMode = payMode;
    }

    public abstract String transfer(String uId, String tradeId, BigDecimal amount);

}
  • 在這個類中定義了支付方式的需要實現的划賬接口:transfer,以及橋接接口;IPayMode,並在構造函數中用戶方自行選擇支付方式。
  • 如果沒有接觸過此類實現,可以重點關注 IPayMode payMode,這部分是橋接的核心。

2.2 兩個支付類型的實現

微信支付

public class WxPay extends Pay {

    public WxPay(IPayMode payMode) {
        super(payMode);
    }

    public String transfer(String uId, String tradeId, BigDecimal amount) {
        logger.info("模擬微信渠道支付划賬開始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount);
        boolean security = payMode.security(uId);
        logger.info("模擬微信渠道支付風控校驗。uId:{} tradeId:{} security:{}", uId, tradeId, security);
        if (!security) {
            logger.info("模擬微信渠道支付划賬攔截。uId:{} tradeId:{} amount:{}", uId, tradeId, amount);
            return "0001";
        }
        logger.info("模擬微信渠道支付划賬成功。uId:{} tradeId:{} amount:{}", uId, tradeId, amount);
        return "0000";
    }

}

支付寶支付

public class ZfbPay extends Pay {

    public ZfbPay(IPayMode payMode) {
        super(payMode);
    }

    public String transfer(String uId, String tradeId, BigDecimal amount) {
        logger.info("模擬支付寶渠道支付划賬開始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount);
        boolean security = payMode.security(uId);
        logger.info("模擬支付寶渠道支付風控校驗。uId:{} tradeId:{} security:{}", uId, tradeId, security);
        if (!security) {
            logger.info("模擬支付寶渠道支付划賬攔截。uId:{} tradeId:{} amount:{}", uId, tradeId, amount);
            return "0001";
        }
        logger.info("模擬支付寶渠道支付划賬成功。uId:{} tradeId:{} amount:{}", uId, tradeId, amount);
        return "0000";
    }

}
  • 這裏分別模擬了調用第三方的兩個支付渠道;微信、支付寶,當然作為支付綜合平台可能不只是接了這兩個渠道,還會有其很跟多渠道。
  • 另外可以看到在支付的時候分別都調用了風控的接口進行驗證,也就是不同模式的支付(刷臉指紋),都需要過指定的風控,才能保證支付安全。

2.3 定義支付模式接口

public interface IPayMode {

    boolean security(String uId);

}
  • 任何一個支付模式;刷臉、指紋、密碼,都會過不同程度的安全風控,這裏定義一個安全校驗接口。

2.4 三種支付模式風控(刷臉、指紋、密碼)

刷臉

public class PayFaceMode implements IPayMode{

    protected Logger logger = LoggerFactory.getLogger(PayCypher.class);

    public boolean security(String uId) {
        logger.info("人臉支付,風控校驗臉部識別");
        return true;
    }

}

指紋

public class PayFingerprintMode implements IPayMode{

    protected Logger logger = LoggerFactory.getLogger(PayCypher.class);

    public boolean security(String uId) {
        logger.info("指紋支付,風控校驗指紋信息");
        return true;
    }

}

密碼

public class PayCypher implements IPayMode{

    protected Logger logger = LoggerFactory.getLogger(PayCypher.class);

    public boolean security(String uId) {
        logger.info("密碼支付,風控校驗環境安全");
        return true;
    }

}
  • 在這裏實現了三種支付模式(刷臉、指紋、密碼)的風控校驗,在用戶選擇不同支付類型的時候,則會進行相應的風控攔截以此保障支付安全。

3. 測試驗證

3.1 編寫測試類

@Test
public void test_pay() {
    System.out.println("\r\n模擬測試場景;微信支付、人臉方式。");
    Pay wxPay = new WxPay(new PayFaceMode());
    wxPay.transfer("weixin_1092033111", "100000109893", new BigDecimal(100));

    System.out.println("\r\n模擬測試場景;支付寶支付、指紋方式。");
    Pay zfbPay = new ZfbPay(new PayFingerprintMode());
    zfbPay.transfer("jlu19dlxo111","100000109894",new BigDecimal(100));
}
  • 與上面的ifelse實現方式相比,這裏的調用方式變得整潔、乾淨、易使用;new WxPay(new PayFaceMode())new ZfbPay(new PayFingerprintMode())
  • 外部的使用接口的用戶不需要關心具體的實現,只按需選擇使用即可。

3.2 測試結果

模擬測試場景;微信支付、人臉方式。
23:14:40.911 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬微信渠道支付划賬開始。uId:weixin_1092033111 tradeId:100000109893 amount:100
23:14:40.914 [main] INFO  o.i.demo.design.pay.mode.PayCypher - 人臉支付,風控校驗臉部識別
23:14:40.914 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬微信渠道支付風控校驗。uId:weixin_1092033111 tradeId:100000109893 security:true
23:14:40.915 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬微信渠道支付划賬成功。uId:weixin_1092033111 tradeId:100000109893 amount:100

模擬測試場景;支付寶支付、指紋方式。
23:14:40.915 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬支付寶渠道支付划賬開始。uId:jlu19dlxo111 tradeId:100000109894 amount:100
23:14:40.915 [main] INFO  o.i.demo.design.pay.mode.PayCypher - 指紋支付,風控校驗指紋信息
23:14:40.915 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬支付寶渠道支付風控校驗。uId:jlu19dlxo111 tradeId:100000109894 security:true
23:14:40.915 [main] INFO  o.i.demo.design.pay.channel.Pay - 模擬支付寶渠道支付划賬成功。uId:jlu19dlxo111 tradeId:100000109894 amount:100

Process finished with exit code 0
  • 從測試結果看內容是一樣的,但是整體的實現方式有了很大的變化。所以有時候不能只看結果,也要看看過程

七、總結

  • 通過模擬微信與支付寶兩個支付渠道在不同的支付模式下,刷臉指紋密碼,的組合從而體現了橋接模式的在這類場景中的合理運用。簡化了代碼的開發,給後續的需求迭代增加了很好的擴展性。
  • 從橋接模式的實現形式來看滿足了單一職責和開閉原則,讓每一部分內容都很清晰易於維護和拓展,但如果我們是實現的高內聚的代碼,那麼就會很複雜。所以在選擇重構代碼的時候,需要考慮好整體的設計,否則選不到合理的設計模式,將會讓代碼變得難以開發。
  • 任何一種設計模式的選擇和使用都應該遵頊符合場景為主,不要刻意使用。而且統一場景因為業務的複雜從而可能需要使用到多種設計模式的組合,才能將代碼設計的更加合理。但這種經驗需要從實際的項目中學習經驗,並提不斷的運用。

八、推薦閱讀

  • 1. 重學 Java 設計模式:實戰工廠方法模式(多種類型商品發獎場景)
  • 2. 重學 Java 設計模式:實戰抽象工廠模式(替換Redis雙集群升級場景)
  • 3. 重學 Java 設計模式:實戰建造者模式(裝修物料組合套餐選配場景)
  • 4. 重學 Java 設計模式:實戰原型模式(多套試每人題目和答案亂序場景)
  • 5. 重學 Java 設計模式:實戰單例模式(Effective Java 作者推薦枚舉單例模式)

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

網頁設計最專業,超強功能平台可客製化

※別再煩惱如何寫文案,掌握八大原則!

【大廠面試04期】講講一條MySQL更新語句是怎麼執行的?

在面試中,經常會問到在MySQL中一條更新語句是怎麼執行的?在本文中,我們就來詳細學習一下更新語句的執行流程,也有利於我們在工作中更好地使用MySQL。

流程圖

這是在網上找到的一張流程圖,寫的比較好,大家可以先看圖,然後看詳細閱讀下面的各個步驟。

執行流程:

1.連接驗證及解析

客戶端與MySQL Server建立連接,發送語句給MySQL Server,接收到後會針對這條語句創建一個解析樹,然後進行優化,(解析器知道語句是要執行什麼,會評估使用各種索引的代價,然後去使用索引,以及調節表的連接順序)然後調用innodb引擎的接口來執行語句。

2.寫undo log

innodb 引擎首先開啟事務,對舊數據生成一個UPDATE的語句(如果是INSERT會生成UPDATE語句),用於提交失敗后回滾,寫入undo log,得到回滾指針,並且更新這個數據行的回滾指針和版本號(會設置為更新的事務id)。

3.從索引中查找數據

根據查詢條件去B+樹中找到這一行數據(如果是唯一性索引,查到第一個數據就可以了(因為有唯一性約束),如果是普通索引,會把所有數據查找出來。)

4.更新數據

首先判斷數據頁是否在內存中?

4.1 如果數據頁在內存中

先判斷更新的索引是普通索引還是唯一性索引?

4.1.1 普通索引

如果更新的索引是普通索引,直接更新內存中的數據頁

4.1.2 唯一性索引

如果更新的索引是唯一性索引,判斷更新后是否會破壞數據的唯一性,不會的話就更新內存中的數據頁。

4.2 如果數據頁不在內存中

先判斷更新的索引是普通索引還是唯一性索引?

4.2.1 普通索引

如果是更新的索引是普通索引,將對數據頁的更新操作記錄到change buffer,change buffer會在空閑時異步更新到磁盤。

4.2.2 唯一性索引

如果是更新的索引是唯一性索引,因為需要保證更新后的唯一性,所以不能延遲更新,必須把數據頁從磁盤加載到內存,然後判斷更新后是否會數據衝突,不會的話就更新數據頁。

5.寫undo log(prepare狀態)

將對數據頁的更改寫入到redo log,將redo log設置為prepare狀態。

6.寫bin log(commit狀態),提交事務

通知MySQL server已經更新操作寫入到redo log 了,隨時可以提交,將執行的SQL寫入到bin log日誌,將redo log改成commit狀態,事務提交成功。(一個事務是否執行成功的判斷依據是是否在bin log中寫入成功。寫入成功后,即便MySQL Server崩潰,之後恢復時也會根據bin log, redo log進行恢復。具體可以看看下面的崩潰恢復原則)

補充資料:

二段提交制是什麼?

更新時,先改內存中的數據頁,將更新操作寫入redo log日誌,此時redo log進入prepare狀態,然後通知MySQL Server執行完了,隨時可以提交,MySQL Server將更新的SQL寫入bin log,然後調用innodb接口將redo log設置為提交狀態,更新完成。
如果只是寫了bin log就提交,那麼忽然發生故障,主節點可以根據redo log恢複數據到最新,但是主從同步時會丟掉這部分更新的數據。
如果只是寫binlog,然後寫redo log,如果忽然發生故障,主節點根據redo log恢複數據時就會丟掉這部分數據。
MySQL崩潰后,事務恢復時的判斷規則是怎麼樣的?(以redolog是否commit或者binlog是否完整來確定)
如果 redo log 裏面的事務是完整的,也就是已經有了 commit 標識,則直接提交;

如果 redo log 裏面的事務只有完整的 prepare,則判斷對應的事務 binlog 是否存在並完整:a. 如果是,則提交事務;b. 否則,回滾事務。

undo log是什麼?

undo log主要是保證事務的原子性,事務執行失敗就回滾,用於在事務執行失敗后,對數據回滾。undo log是邏輯日誌,記錄的是SQL。(可以認為當delete一條記錄時,undo log中會記錄一條對應的insert記錄,反之亦然,當update一條記錄時,它記錄一條對應相反的update記錄。)
在事務提交后,undo log日誌不會立即刪除,會放到一個待刪除的鏈表中,有purge線程判斷是否有其他事務在使用上一個事務之前的版本信息,然後決定是否可以清理,簡單的來說就是前面的事務都提交成功了,這些undo才能刪除。
change buffer是什麼(就是將更新數據頁的操作緩存下來)
在更新數據時,如果數據行所在的數據頁在內存中,直接更新內存中的數據頁。
如果不在內存中,為了減少磁盤IO的次數,innodb會將這些更新操作緩存在change buffer中,在下一次查詢時需要訪問這個數據頁時,在執行change buffer中的操作對數據頁進行更新。
適合寫多讀少的場景,因為這樣即便立即寫了,也不太可能會被訪問到,延遲更新可以減少磁盤I/O,只有普通索引會用到,因為唯一性索引,在更新時就需要判斷唯一性,所以沒有必要。

redo log 是什麼?

redo log就是為了保證事務的持久性。因為change buffer是存在內存中的,萬一機器重啟,change buffer中的更改沒有來得及更新到磁盤,就需要根據redo log來找回這些更新。
優點是減少磁盤I/O次數,即便發生故障也可以根據redo log來將數據恢復到最新狀態。
缺點是會造成內存臟頁,後台線程會自動對臟頁刷盤,或者是淘汰數據頁時刷盤,此時收到的查詢請求需要等待,影響查詢。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

※回頭車貨運收費標準

.Net Core 會逆襲成為最受歡迎開發平台嗎?

本文由葡萄城技術團隊於博客園原創並首發

轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。

.Net Core 是什麼?

最新.Net Core 熱詞霸佔了各個技術熱搜,看來微軟近年來發布的 .Net Core 還是成功了引起了大家的熱烈討論。如果您對微軟熟悉,肯定是很了解.Net 平台,但是隨着互聯網的興起,好像微軟這個霸主的地位有所撼動。

 

.NET Core 是.NET Framework的新一代版本,是微軟開發的第一個跨平台 (Windows、Mac OSX、Linux) 的應用程序開發框架(Application Framework),未來也將會支持 FreeBSD 與 Alpine 平台。.Net Core也是微軟在一開始發展時就開源的軟件平台[1],由於 .NET Core 的開發目標是跨平台的因此 .NET Core 會包含 .NET Framework 的類別庫,但與 .NET Framework 不同的是 .NET Core 採用包化 (Packages) 的管理方式,應用程序只需要獲取需要的組件即可,與 .NET Framework 大包式安裝的作法截然不同,同時各包亦有獨立的版本線 (Version line),不再硬性要求應用程序跟隨主線版本。

 

重點來啦:

  • 跨平台:可在 Windows、macOS 和 Linux 操作系統上運行
  • 跨體繫結構保持一致:在多個體繫結構(包括 x64、x86 和 ARM)上以相同的行為運行代碼
  • 命令行工具:包括可用於本地開發和持續集成方案中的易於使用的命令行工具。
  • 部署靈活:可以包含在應用或已安裝的并行(用戶或系統範圍安裝)中。 可搭配 Docker 容器使用
  • 兼容性: .NET Core 通過 .NET Standard 與 .NET Framework、Xamarin 和 Mono 兼容
  • 開放源代碼: .NET Core 平台是開放源代碼,使用 MIT 和 Apache 2 許可證。 .NET Core 是一個 .NET Foundation 項目
  • 強勁性能:超強的後台性能,超出.Net Framework
  • 支持命令行執行所有操作

 

.Net Core 當前的現狀是什麼

目前可以看到很多傳統行業的信息系統也在逐漸升級平台,而且很多大的互聯網公司也已經使用,畢竟一次開發即可實現跨平台的部署及應用,也是減少成本的重要體現。

 

可以確定.Net Core 是未來的發展趨勢。 .Net FrameWork也會延續使用,畢竟短期內遷移一些大型項目是很有難度的,而且也不太可能。.Net Core 和.Net FrameWork 的關係就如同是新能源汽車和傳統穩定的油耗汽車。油耗汽車已經經歷了多年的發展,技術非常成熟穩定,可以放心自由的使用。而新能源汽車是一個新興的技術,也是未來將要取待傳統技術的未來發展方向,所以使用.Net Core 開發項目必須越早越好。

 

.Net Core 與. Net FrameWork 對比:

.NET Core

.NET Framework

跨平台 (OS platform): 支持Windows, Linux, 及 macOS

僅支持在 Windows運行

安裝過程是獨立,端對端,可以在同一計算器中為應用程序指定獨立的.Net Core 版本。

一台計算機上的所有應用程序都在同一.NET Framework版本上運行

高性能:在集合,數學,正則表達式,字符串,文件等方面都有提升。.

高兼容性

開源: 基於.NET平台既可以根據 MIT或 Apache 2 授權

與最廣泛的NuGet軟件包,第三方庫和內部庫兼容

v2.0 實現了.NET Standard 2.0¹

v4.6.1+ 以上版本支持s .NET Standard 2.0

 

使用.Net Core 優勢:

1. 支持在任何平台部署,跨平台幾乎沒有任何成本

2. 龐大的.Net 標準庫支持

3. 面向高性能的服務器開發,基於 微軟 Azure雲的平台優勢,已提供高性能的服務。

4. 高性能和可移植性

5. 兼容多平台

 

如何平滑的遷移項目至.Net Core 平台

很多原有的項目是基於.Net FrameWork 開發的,可能是 Windows. WPF, ASP.NET MVC,那本身的局限是只能在Windows系統部署外,還涉及到一些核心功能的實現。傳統框架的種種不足,需要大的突破和改變。這意味着打破變化,但結果是值得期待的。

 

遷移原有項目到新的.Net Core 平台意味着你可以保留舊項目的所有核心業務功能,不需要重構整個項目,從0開始開發。以下是我們根據經驗給出了幾類的應用的遷移難度。

項目類型

遷移難易程度

Web 應用: ASP.NET MVC

簡單

WebForm 應用

不建議遷移,因為.Net Core 支持 WebForm

Windows 應用 (Universal Framework)

不需要遷移

Windows 應用(基於Sliverlight)

簡單

WPF 及WinForms 桌面應用

複雜

控制台應用

簡單

 

1. 遷移還是重構

如果針對前端項目,遷移是最佳選擇,畢竟前端代碼均可復用,唯一要改動的就是後端代碼。儘管.Net Core 和.Net Frame Work 項目都是基於C# 語言做開發的,然而兩者是不同的運行機制。所以如果是後端很重的項目,還是建議重寫,這樣也會利用一些新技術的優勢。

 

2. NuGet 包

在遷移之前,需要確認引用的.Net 標準庫是否在.Net Core中支持或丟棄,如果不支持的話,就需要考慮如何用新的包代替或者當前功能的重構。

.Net 標準包是在.Net 4.6.1 和.Net Core 中都可使用的,所以只需要可以使用該技術升級舊的PCL。如果你添加了.Net 標準庫的引用,同樣也可以在.Net Core 項目中使用。

 

3. Html / JavaScript / CSS 復用

可以將這些文件直接複製到.NET Core解決方案中。 但是,請確保更改代碼中的文件路徑,例如CSS中的圖像路徑。 因為經典的ASP.NET / MVC模板使用“ / Content /”目錄,而.NET Core使用“ / css /”,“ / js /”,“ / lib /”等。對此沒有任何限制,它們只是約定而已 。

 

如何選擇.Net Core 的開發工具

在開發項目時候,新的平台和技術總是帶給你項目的一些新的重大突破功能,比如性能,比如核心功能提升,所以不僅我們的項目要一直跟隨升級,我們所選擇的開發工具,也要緊跟技術前沿,甚至要領先於我們的項目升級進度,為我們開發項目始終提供最有力的技術支持。

 

.NET Core是多平台應用程序的未來。 如我們所見,.NET Core提供了傳統框架不支持的強大的本機新功能。 另一方面,.NET Core並不完全支持所有現有的應用程序類型進行遷移,尤其是那些與Windows OS緊密集成的應用程序類型,因此必須仔細考慮並計劃這些挑戰。

 

所以我們在選擇新平台的同時,也需要考慮一些輔助開發的工具。以及這些工具在該領域的技術背景,是否足夠穩定,是否有足夠明確的未來,甚至比我們更能預先跟蹤未來的技術棧,以始終在我們遷移新項目的時候提供輔助工具。

 

這裏推介一些支持.Net Core 平台的開發控件:

  • API Protability Tool。這是一款輔助.net開發者在不同的開發框架上遷移源代碼工程的靜態代碼審查工具。由於.net framework具有多個歷史版本,並且.net core以及Xamarin等開發框架在基礎類庫中實現API數量和類型有很多的不一致情況。.net開發者想把自身源代碼升級到更高的.net版本或者遷移到其他的.net開發框架上,會面臨很多API調用不兼容的問題。該工具就是幫助.net開發者審查.net項目的源代碼,並生成審查報告,快速幫助開發人員找到不兼容代碼行以及協助評估遷移工作量。
  • PostMan,Postman是一款支持跨平台的應用程序,用來幫助開發者快速構建和測試REST API 服務。Postman可以模擬HTTP請求的所有謂詞,用於REST API的測試。
  • Visual Studio Code , Visual Studio Code是跨操作系統平台的輕量級代碼編輯器。支持絕大多數主流語言編譯和調試的能力。
  • ActiveReports .Net 報表控件,專註報表領域20餘年,所以可見專業性以及對於.Net 技術的完善的集成技術,支持最新的ASP.Net Core MVC (.Net Core)項目的開發。可快速解決.Net Core 平台的報表設計,展示,打印/導出,數據鑽取等功能,與此也提供了最終用戶免費設計器(在線/桌面端)解決部署差異的難題。
  •  

     

  • Wyn Enterprise 嵌入式商業智能和報表軟件,基於.NET Core平台,可以以白標的方式嵌入到應用系統中,快速增強應用系統的自助式分析、移動BI、數據可視化、報表統計和數據填報等功能,最終用戶在業務系統中便能通過數據分析,為決策制定提供數據支撐。

  •  

     

     

 

綜上所述,無論從其性能和生態上預測,.NET Core 都極有可能成為最受歡迎的開發平台,不過,當前國內僅有騰訊、阿里等廠家願意試水,葡萄城作為一家具備30多年開發經驗的軟件廠商,同樣也在持續對.NET控件進行更新迭代。

如果您有 .NET Core及其衍生技術和開發工具的需求,請訪問葡萄城官網了解詳情。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化

※回頭車貨運收費標準

Python面試常用的高級用法,怎麼動態創建類?

本文始發於個人公眾號:TechFlow,原創不易,求個關注

今天是Python專題的第16篇文章,今天我們來聊聊Python當中的元類。

元類是Python當中的高級用法,如果你之前從來沒見過這個術語或者是沒聽說過這個概念,這是非常正常的,因為一方面它的使用頻率不高,另外一方面就是它相對不太容易理解。以至於很多Python開發者都理解得不是很深入,導致了市面上相關的資料也並不太多。我也是讀了一些大牛的代碼才開啟了這扇新世界的大門。

一切都是對象

我們之前的時候曾經介紹過,在Python當中一切都是對象,注意,是一切都是對象。我們都知道對象是類實例化之後的結果,可以簡單地將類和對象類比成模具和成品的關係。模具是類,而根據模具做出來的產品是對象。

這個比喻思想比較接近,但是不完美。因為實際當中一個模具可以做出多個產品,一個產品只有一個模具。但編程語言當中不同,由於類之間可以繼承以及多繼承,也就是說一個對象可以對應多個類。所以這個比喻不是特別合適,但是類和對象的關係是沒錯的。

但是這就有了一個問題,既然Python當中一切都是對象,那麼是不是說類其實也是一個對象呢?也就是說一個模具其實也是另外一個模具的產品?同樣,這個模具的模具其實也是另外一個模具的產品,那麼我們一直追問下去會怎麼樣呢?

很簡單,我們做個實驗就知道了,我們可以用_class__關鍵字來查看一個變量的類型,那麼我們反覆調用就可以查看其中的關係了:

從上面的圖中我們可以發現,num是int類型的變量。我們繼續查看int這個類型的類型,得到了type類型。而當我們去查看type的類型的時候,會發現我們得到的還是一個type的類型。

所以我們可以明白了,type是Python中用來創建所有類的元類,是所有模具的模具。在Python當中,我們把一個類的類叫做元類(metaclass)。所以type就是Python當中內置的元類,我們也可以自己創建我們需要的元類。通過元類,我們創建的對象也是一個類,而不是一個實例。

動態創建類

理解了type是一切類基礎之後,再來看動態類就簡單了。動態類是動態語言最大的特性之一,作為典型的動態語言,Python自然也是支持類型的動態創建的。

在Python當中,創建動態類型的一種方式就是通過type關鍵字。說起來有些意想不到,type函數不是用來查詢對象所屬的類型的嗎,怎麼還可以創建類呢?

這其實是type的另外一種用法,作為元類來創建一個類。在這種用法,type函數接收3個參數,分別是類型的名稱,父類的元組,以及一個字典。除了第一個參數之外,後面兩個參數都可以為空。比如我們來看一個例子:

注意,type返回的結果是一個類,而不是一個實例。所以我們還可以通過它創建實例:

hello = Hello()

這樣創建出來的是最簡單的空類,它什麼也沒有,和下面的代碼等價。

class Hello:
    pass

我們也可以在type的參數當中為這個類填充屬性和方法:

def hello_world(self):
    print('hello')
    
Hello = type('Hello', (), {'hello':hello_world, 'num': 3})

這樣我們就為Hello這個類創建了一個方法叫做hello,一個屬性num等於3。我們可以來調用一下試試:

也就是說我們可以使用type來根據我們的需要自行定義類,只不過type既可以獲取對象的類型又可以創建新的類,看起來可能覺得有些不太直觀,但是其實這也是說得通的。我們在Python當中通過調用str創建一個string對象,通過int來創建一個integer對象,那麼通過type則是創建一個類的對象。

實現繼承

我們之前說了,當我們使用type來創建類的時候,還可以傳入父類的元組從而實現類的繼承。

比如我們再創建一個叫做World的類繼承剛才通過type創建出來的Hello類,然後在為它加上額外的函數:

def say_world(self):
    print('World')
    
World = type('World', (Hello, ), {'world': say_world})

注意這裏傳入第二個參數是父類的元組,既然是元組,那麼當元素只有一個的時候,需要加上逗號,表示這是一個元組。這樣創建出來的類和我們通過class定義的靜態類效果是一樣的:

也就是說,我們可以先把函數實現,然後再根據任務的需要把這些函數組裝成新的類。顯然,這和傳統的C++以及Java這些靜態類型的語言相比,要靈活得多。

總結

我們固然可以通過type來創建動態創建類,但是從上面的使用過程也應該看得出來,這樣使用起來並不太方便,並且很多進階的功能很難實現。舉個簡單的例子,比如我們想要動態地為一個已有的類添加一些動態的方法,生成新的類。我們使用type就很難實現。type也的確不是Python元類的主要運用,metaclass才是王道,但由於篇幅限制,這部分將放在下一篇文章當中。

當然,元類是一個非常高級的用法,以至於Python的創始人說99%的Python程序員並不需要用到它。所以如果你覺得理解起來非常費勁的話也沒有關係,知道這麼個概念就可以了。

今天的內容就是這些,如果喜歡本文,可以的話,請點個關注,給我一點鼓勵,也方便獲取更多文章。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

台中搬家公司費用怎麼算?