小米11 Pro 傳聞規格首次曝光:預計 2021 上半年推出, Redmi K11 將為同期最便宜 S888 旗艦新機之一_台北網頁設計

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

日前小米11 選在 2020 年底發表,不僅讓它成為首款搭載高通 S888 處理器的 5G 旗艦手機。然而,除了螢幕和外型、減輕重量有較顯著的升級外,眾人也能猜到接下來還會有更高階的「小米11 Pro」會在未來登場。即便目前距離小米11 Pro 的發表至少得等到 2021 年的上半年,最近也已經有傳聞規格爆料曝光。

小米11 Pro 傳聞規格首次曝光:預計 2021 上半年推出, Redmi K11 將為同期最便宜 S888 旗艦新機之一

縱使小米 11 首發搭載高通 Snapdragon 888 處理器,也許有些人會認為它規格不如當初期望的那麼「強悍」,畢竟光是 2020 年小米就已經發表多款「數字旗艦」手機,從 2020 上半年的小米 10 、小米 10 Pro ,接著到下半年的小米10 至尊紀念版(小米 10 Ultra),也讓消費著的胃口越養越大,似乎早已忘記小米10 距今發表還不到一年時間。
如果想比較規格,其實還是要以對應的上一代機種「小米10」較為恰當,經過比較後就能發現小米11 從各方面都是全面的升級、價格不變的。

當然在選擇旗艦級手機時,許多人都知道在價差不大的前提下,選擇更高規的版本才能享有該系列最新、最強的規格,而細看小米11 的規格就能發現在它之後還會有更高階旗艦的「升級」空間,而那個更強悍的手機有可能就是小米11 Pro 。
近日,根據數碼閒聊站在微博回覆網友的留言表示小米11 Pro 的螢幕尺寸、規格和形態都與小米11 完全一致,這也表示小米11 Pro 也將配備 6.81 吋 2K 解析度 SuperAMOLED 挖孔四曲面全螢幕:

▲圖片來源:數碼閒聊站(微博)

消費者將有機會在接下來見到小米11 Pro 或者有機會小米11 Ultra ,數碼閒聊站在微博表示基本上在正面螢幕規格尺寸將相同,最大差異在相機規格、快充、電池容量等方面的升級,像是除了採用大感光元件的主鏡頭搭配兩顆不小的副鏡頭,主相機模組的尺寸也會大一些,也伴隨著他定位將不再是「輕薄」取向。
至於發表時間,目前只能肯定小米11 Pro 在 2020 年無緣亮相,預計要等到 2021 年上半年農曆春節後發表。

▲圖片來源:數碼閒聊站(微博)

今日稍早,數碼閒聊站在微博也預告 Redmi(紅米)的 Snapdragon 888 新旗艦 Redmi K11 手機也有了消息,其代號為 Haydn(海頓),可能是同期最便宜的 Snapdragon 888 新機之一。

消息來源:數碼閒聊站(微博)

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

延伸閱讀:
小米氮化鎵GaN充電器Type-C 55W 推出:體積更小、價格更親民

realme 7 5G 開箱動手玩|天璣 800U 處理器、5G+5G 雙卡雙待、120Hz 更新率螢幕、5000mAh大電量與 30W Dart 閃充,萬元內 5G 超值選擇

您也許會喜歡:

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

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

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

Google 搜尋魔爪(?)伸向 Instagram 與抖音短影片_網頁設計公司

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

透過資料庫的網站架設建置,建立公司的形象或購物系統,並提供最人性化的使用介面,讓使用者能即時接收到相關的資訊

短影音的流行,可以從各種服務近年都開始「致敬」Snapchat 的風潮看出。然而,這方面的資訊以往卻無法在 Google 搜尋找到,顯然會一定程度導致使用者變成分別得到不同的平台尋找想看的內容,不再倚賴這個搜尋服務(業績掉的意思)。現在,這個情況似乎將獲得解決。繼續閱讀 Google 搜尋魔爪(?)伸向 Instagram 與抖音短影片報導內文。

▲圖片來源:TechCrunch

Google 搜尋魔爪(?)伸向 Instagram 與抖音短影片

其實這個功能已經在今年稍早啟動了相關的測試,不過據稱現在已經可以開始普遍地在 Google Search 的行動應用中發現(雖然小編在 Android 與 iOS app 似乎都沒看到) 。只要搜尋特定字串如:Packers,便可看到 Instagram 與 TikTok 抖音的短影片內容,出現在 Short Videos 欄位之中。

現在雖然搜尋一般內容並不會顯示短影片的資訊,但很顯然 Google 應該是已經緊鑼密鼓準備要將搜尋引擎的索引爬蟲,伸向這些以往無法觸及的領域。

▲圖片來源:9to5Google

是說,其實類似的功能 Google 也有針對推特的相關平台伸手過。只不過這明顯也是要看其他平台願不願意「配合」?畢竟 Facebook 內建的搜尋功能能找到的東西,似乎與 Google 搜尋還是差上一截。總覺得未來也許也要端看這些短影音服務是否真的肯開放索引,這也將直接影響到這種搜尋結果的實用程度。

而就目前來講點入這些短影音搜尋結果只會開啟網路版本,不會跳轉至 App 的狀態來講,感覺這些短影音社群的服務業者應該不會太樂意?

▲圖片來源:TechCrunch

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

RWD(響應式網頁設計)是透過瀏覽器的解析度來判斷要給使用者看到的樣貌

引用來源

延伸閱讀:

Tesla FSD 全自動輔助駕駛夜晚山路表現如何?實測看來似乎比多數人開得更好…(影片)

Apple Watch 才在台灣開放 ECG 心電圖功能,就有醫師分享幫病患找出心臟問題的實例

您也許會喜歡:

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

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

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

當全世界的人們隨著網路時代而改變向上時您還停留在『網站美醜不重要』的舊有思維嗎?機會是留給努力改變現況的人們,別再浪費一分一秒可以接觸商機的寶貴時間!

國外用戶抱怨 AirPods Max 長時間使用後,耳罩裡面會出現水滴_包裝設計

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

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

AirPods Max 台灣要等到明年 2 月才會到貨,但國外第一批購買者早在 12/15 就已經拿到,離現在也過了半個月,果然不出所料,新產品多少都有些問題,最近就有多位用戶在 Reddit 論壇上反應,他的 AirPods Max 使用一段時間後,耳罩內會出現水滴,雖然目前還沒有引起任何故障,但畢竟 AirPods Max 不防水,還是會讓人擔心這個現象。

國外用戶抱怨 AirPods Max 長時間使用後,耳罩裡面會出現水滴

近日一名 Donald_Filimon 網友在 Reddit 論壇上抱怨,長時間使用 AirPods Max 之後,耳罩裡面都會有多個凝結小水滴。他沒有在潮濕的環境使用過,主要都是坐在辦公桌前,如果不是某次耳機檢測不正常,他也不知道裡面發生這種情況:

從他 Twitter 推文圖片可以看到,這凝結小水滴數量還真的不是普通的多,感覺很像流汗:

So, uhh… my AirPods Max form condensation after extended use. They’ve never been used in any humid environment. The water gets inside the drivers and has caused ear detection problems. I’ve been wearing them inside sitting at a desk mainly, nothing crazy. Super concerning issue pic.twitter.com/0pWicvxLv9

— Donald Filimon (@donaldfilimon) December 27, 2020

隨後陸續有多位用戶也回報發生同樣狀況像這位 Natural-Peak-4366,他住在佛羅里達州的布雷登頓(Bradenton),使用 AirPods max 長達 2.5 個小時,想清潔耳將耳罩取下後,才注意到裡面有凝結小水滴,他覺得很奇怪,因為他沒有四處走動。這狀況真的嚇到我了:

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

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

好消息是,至少這幾位用戶把水滴弄乾之後,AirPods Max 並沒有出現任何故障問題,依舊可以正常使用。

不過不確定這是個案,還是每一個 AirPods Max 都有這狀況,但至少 AirPods Max 的耳罩還蠻容易拆卸的,手邊已經有的人,建議每使用一段時間就打開來擦拭一下,來避免這些凝結小水滴產生更大的問題。

至於導致水滴的原因,有人猜測可能是最近冬天比較冷,房間溫度低,長時間使用才會發生這狀況。

資料來源:Reddit

日本網友異想天開使用民間散熱法 + 散熱片幫 MacBook 散熱,結果螢幕不小心蓋上整個毀了

您也許會喜歡:

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

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

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

部分 ROG Phone 3 與 ZenFone 7 用戶反映無法以 HD 觀賞 Netflix 影片_台中搬家

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

台中搬家公司推薦超過30年經驗,首選台中大展搬家

ASUS 在今年推出的 ROG Phone 3 與 ZenFone 7 受到不少用戶青睞,而最近在國外出現部分用戶反映手上的 ROG Phone 3 與 ZenFone 7 忽然無法用 HD 來觀賞 Netflix 線上串流影片,經過檢查才發現問題出在 DRM 版本跑掉了,如果你也出現同樣的問題,請務必檢查看看。

部分 ROG Phone 3 與 ZenFone 7 用戶反映無法以 HD 觀賞 Netflix 影片

這些出現問題的用戶已經到 ASUS 的論壇上投訴,這個問題似乎已經持續了數週且沒有消失的跡象。Widevine 是許多串流媒體平台服務所使用的 DRM 技術,用於確保未修改和韌體安全的裝置使用他們的服務,如果 Widevine 並非處於 L1 狀態,使用者將無法從 Netflix 串流傳輸超過 540P 解析度的影片。

由於 ROG Phone 3 與 ZenFone 7 韌體上的問題,對少數的用戶來說,手機的 Widevine DRM 級別已經從 L1 降至 L3,ASUS 就此發表了一個聲明,表此現象是由 SoC 供應商高通的錯誤所造成,如果在手機上有此狀況,請聯繫當地的支援服務,交由官方來處理,而這似乎也是目前解決此問題的唯一辦法。但論壇中的部分使用者表示,在手機修復後沒多久,這個問題又再次出現,使得必須再次前往服務中心處理。

如果大家也有遇到一樣的問題,可以下載「DRM Info」(下載點這裡)這款免費應用程式來檢查自己的手機 DRM 層級,確認 Security Level 是否保持在 L1 等級。

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

擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司

◎資料來源:XDA Developers

您也許會喜歡:

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

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

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

台中搬家公司推薦超過30年經驗,首選台中大展搬家

Microsoft Edge 新安全功能開測,允許用戶掃描哪些網站密碼外洩_台中搬家公司

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

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

自從 Chromium 版 Microsoft Edge 推出以來,因為功能、操作介面越來越好用,也已經吸引許多用戶轉移,現在 Microsoft Edge 可以說終於成為一個成熟的瀏覽器了,除了積極地向用戶提供各種更新,還在個人資料安全部分下了不少功夫。現在微軟開始測試一個新安全功能,能夠讓你直接掃描在哪些網站的密碼外洩了。

Microsoft Edge 新安全功能開測,允許用戶掃描哪些網站密碼外洩

Microsoft Edge 中附帶了一個內建密碼監視器,其主要目的在於保護使用者的密碼並且確保各項憑證沒有被外洩。微軟解釋道:「密碼是保護網路資料的一部份,有助於管理個人線上帳戶核魚塊地使用體驗,也因為這些原因對不肖人士極具吸引力。許多網站要求你使用密碼來建立帳戶,許多人會在各網站上重複使用同樣的密碼以便記憶,這些網站可能會在無意中經由網路釣魚或大規模資料外洩而使密碼洩漏出去,隨後可能在暗網上被交易並且被犯罪份子用來接管你的帳號。」

儘管多年來,各種駭客事件、資料外洩頻傳,各方已經呼籲大家避免堅持在各網站上用同樣的密碼,甚至直到現在還是有很多人用 123456 來做為自己的密碼。Microsoft Edge 現在開始測試一項與密碼監視器同綑綁在一起的密碼外洩掃描功能,使用方式非常簡單但卻挺實用,可以幫助你快速查看在哪些網站上的密碼外洩。目前這個功能已經在 Microsoft Edge 的 Dev 版上線,你可以從「設定 >> 個人檔案 >> 密碼」這個路徑進入即可找到它。

  • 進入上面路徑後,你可以看到有一個顯示你有幾個新外洩密碼的項目(如果有外洩的話)。

  • 點選後就能進入密碼監視器這一功能裡去修復密碼。你可以按網頁上的按鈕即刻掃描,並且可以從疑似有外洩情事的網址後面點擊立刻前去變更。

這裡要注意的是,這項掃描僅適用於你保存在 Microsoft Edge 中的密碼,所以其他沒有儲存登入資訊的網站無法用這個功能來檢查。這項功能目前已經可以在 Dev 版上使用,正式版本可能還要稍等一段時間。

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

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

◎資料來源:SoftPedia

您也許會喜歡:

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

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

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

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

Blazor 修仙之旅 – 組件與數據綁定_網頁設計

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

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

一.前言

在第一篇文章中,有提到過組件(Component)這個概念。組件在 Blazor 中是必不可少的,UI 全靠它組裝起來,和前端的 JS 組件是一個意思,比如:vue component、react component 等等。借用官方文檔的描述:

Blazor 應用是使用組件構建的。 組件是自包含的用戶界面 (UI) 塊,例如頁、對話框或窗體。 組件包含插入數據或響應 UI 事件所需的 HTML Tag和處理邏輯。 組件非常靈活且輕量。 可在項目之間嵌套、重複使用和共享。

二.組件

組件一般以 .razor 為文件名後綴,且組件名必須以大寫字母開頭(猜測可能是和VUE里的命名限制一樣,表面和Html標籤名重複)。

我們新建的項目,Shared 文件夾中就有三個組件:

左側導航菜單組件:

在主布局組件中應用了導航菜單組件:

更多關於組件的資料請查閱官方文檔:創建和使用 ASP.NET Core Razor 組件

三.數據綁定

1.介紹

Razor 組件通過名為 @bind 的HTML元素屬性提供數據綁定功能,這個綁定是雙向的。

@bind 是區分大小寫的,例如:@BIND@Bind 都是錯誤的,下面寫了一個例子,將 CurrentValue 綁定到兩個文本框中。

<div class="row">
    <div class="col-6">
        <input class="form-control" type="text" @bind="CurrentValue" />
    </div>
    <div class="col-6">
        <input class="form-control" type="text" @bind="CurrentValue" />
    </div>
</div>

<div class="row">
    <button class="btn btn-primary" @onclick="ChangeValue">變 更</button>
</div>

@code
{
    public int CurrentValue { get; set; } = 0;

    private void ChangeValue()
    {
        CurrentValue ++;
    }
}

需要注意的是在文本框的綁定中,僅當呈現組件時,UI才會更新文本框,而不響應於更改屬性的值。由於組件是在事件處理程序代碼執行后呈現的,因此屬性更新通常在觸發事件處理程序后立即反映在UI中。

@bind="CurrentValue" 等同於以下代碼:

<input value="@CurrentValue"
    @onchange="@((ChangeEventArgs __e) => CurrentValue = 
        __e.Value.ToString())" />
        
@code {
    public int CurrentValue { get; set; } = 0;
}

點擊按鈕,變更了值,也會應用到文本框中:

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

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

2.變更綁定事件

上面小節中,默認綁定了 onchange 事件,只有文本框失去焦點才會觸發,體驗不是很好,那麼可不可以在輸入的時候就同步更新值呢,當然是可以的,解決方案就是變更綁定事件為 oninput,通過設置@bind:event屬性來變更綁定事件:

<div class="col-6">
    <input class="form-control" type="text" @bind="CurrentValue" @bind:event="oninput" />
</div>
<div class="col-6">
    <input class="form-control" type="text" @bind="CurrentValue" @bind:event="oninput" />
</div>

3.輸入錯誤的值

我們設置的 CurrentValue 的類型是 int ,如果我們輸入字母,那麼字母將不會被接受,同時值會恢復到輸入前的正確值。

4.子父組件數據傳遞

在 vue、react 等 js 中,都有子父組件傳值概念,Blazor 也不例外。

(1)父傳子

新建一個子組件命名為 ChildComponent

<div class="row">
    <h2>子組件</h2>
</div>

<div class="row">
    <span>Year: </span> <input class="form-control" type="text" value="@Year" />
</div>

@code {
    [Parameter]
    public int Year { get; set; }

    [Parameter]
    public EventCallback<int> YearChanged { get; set; }
}

定義一個 Year 屬性和 EventCallback<int> 類型的屬性 YearChanged

新建一個父組件命名為ParentComponent

<div class="row">
    <h2>父組件</h2>
</div>

<div class="row">
    <span>ParentYear: </span> <input class="form-control" type="text" @bind="ParentYear" @bind:event="oninput"/>
</div>

<ChildComponent @bind-Year="ParentYear" />

@code {
    [Parameter]
    public int ParentYear { get; set; } = 1978;
}

在頁面中引用父組件:

YearChanged 是一個約定命名,不能更改,更改將會報錯:

EventCallback 用於子父組件嵌套時公開事件,比如 YearChanged 就公開了子組件 Year 屬性的 changed 事件。父組件里,通過 @bind-Year 來綁定 Year 的 changed 事件,然後將父組件 ParentYear 的值傳遞過去,達成父級組件向子級組件傳遞值。

<ChildComponent @bind-Year="ParentYear" /> 等同於 <ChildComponent @bind-Year="ParentYear" @bind-Year:event="YearChanged" /> ,如果使用後者,那麼事件命名將不會受約定命名限制。

運行效果:

(2)子傳父(鏈式綁定)

子傳父,無法直接通過 @bind 來實現,需要單獨指定事件處理程序和值,我們更改上面的子組件,定義一個 OnYearChanged 事件,並將其綁定到文本框的 oninput 事件,在事件裏手動更新了 Year的值,並調用 YearChanged 來進行傳遞。

<div class="row">
    <h2>子組件</h2>
</div>

<div class="row">
    <span>Year: </span> <input class="form-control" type="text" @oninput="OnYearChanged" value="@Year" />
</div>

@code {
    [Parameter]
    public int Year { get; set; }

    [Parameter]
    public EventCallback<int> YearChanged { get; set; }

    private Task OnYearChanged(ChangeEventArgs e)
    {
        Year = int.Parse(e.Value.ToString());

        return YearChanged.InvokeAsync(Year);
    }
}

運行:

四.資料

  • 本文Demo

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

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

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

被纏上了,小王問我怎麼在 Spring Boot 中使用 JDBC 連接 MySQL_貨運

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

搬家價格與搬家費用透明合理,不亂收費。本公司提供下列三種搬家計費方案,由資深專業組長到府估價,替客戶量身規劃選擇最經濟節省的計費方式

上次幫小王入了 Spring Boot 的門后,他覺得我這個人和藹可親、平易近人,於是隔天小王又微信我說:“二哥,快教教我,怎麼在 Spring Boot 項目中使用 JDBC 連接 MySQL 啊?”

收到問題的時候,我有點頭大,難道以後就要被小王纏上了?

沒等我發牢騷,小王就緊接着說:“二哥,你先別生氣,上次你幫了我的忙后,我在心裏感激了你一晚上,想着第一次遇到這麼親切的大佬,一定要抱緊大腿。。。。。”

馬屁拍到這份上,我的氣自然也就消了。隨後,我花了五分鐘的時間幫他解決了苦惱,沒成想,他又發給我了一個小紅包,表示對我的感謝。並建議我再寫一篇文章出來,因為他覺得像他這樣的小白還有很多。沒辦法,我關上門,開了燈,開始了今天這篇文章的創作。

01、初始化 MySQL 數據庫

既然要連接 MySQL,那麼就需要先在電腦上安裝 MySQL 服務(本文暫且跳過),並且創建數據庫和表。

CREATE DATABASE `springbootdemo`;
DROP TABLE IF EXISTS `mysql_datasource`;
CREATE TABLE `mysql_datasource` (
  `id` varchar(64NOT NULL,
  PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

02、使用 Spring Initlallzr 創建 Spring Boot 項目

創建一個 Spring Boot 項目非常簡單,通過 Spring Initlallzr(https://start.spring.io/)就可以了。

勾選 Lombok、Web、MySQL Driver、Actuator、JDBC 等五個依賴。

1)Lombok 是一種 Java 實用工具,可用來幫助開發人員消除 Java 的一些冗餘代碼,比如說可以通過註解生成 getter/setter。使用之前需要先在 IDE 中安裝插件。

2)Web 表明該項目是一個 Web 項目,便於我們直接通過 URL 來實操。

3)MySQL Driver:連接 MySQL 服務器的驅動器。

4)Actuator 是 Spring Boot 提供的對應用系統的自省和監控的集成功能,可以查看應用配置的詳細信息,例如自動化配置信息、創建的 Spring beans 以及一些環境屬性等。

5)JDBC:本篇文章我們通過 JDBC 來連接和操作數據庫。

選項選擇完后,就可以點擊【Generate】按鈕生成一個初始化的 Spring Boot 項目了。生成的是一個壓縮包,導入到 IDE 的時候需要先解壓。

03、編輯 application.properties 文件

項目導入成功后,等待 Maven 下載依賴,完成后編輯 application.properties 文件,配置 MySQL 數據源信息。

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdemo
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

1)spring.datasource. 為固定格式。

2)URL 為 MySQL 的連接地址。

3)username 為數據庫的訪問用戶名。

4)password 為數據庫的訪問密碼。

5)driver-class-name 用來指定數據庫的驅動器。也可以不指定,Spring Boot 會根據 URL(有 mysql 關鍵字) 自動匹配驅動器。

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

網動結合了許多網際網路業界的菁英共同研發簡單易操作的架站工具,及時性的更新,為客戶創造出更多的網路商機。

04、編輯 Spring Boot 項目

為了便於我們操作,我們對 SpringBootMysqlApplication 類進行編輯,增加以下內容。

@SpringBootApplication
@RestController
public class SpringBootMysqlApplication {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping("insert")
    public String insert() {
        String id = UUID.randomUUID().toString();
        String sql = "insert into mysql_datasource (id,name) values ('"+id+"','沉默王二')";
        jdbcTemplate.execute(sql);
        return "插入完畢";
    }

}

1)@SpringBootApplication、@RestController、@RequestMapping 註解在[之前的文章]()中已經介紹過了,這裏不再贅述。

2)@Autowired:顧名思義,用於自動裝配 Java Bean。

3)JdbcTemplate:Spring 對數據庫的操作在 jdbc 上做了深層次的封裝,利用 Spring 的注入功能可以把 DataSource 註冊到 JdbcTemplate 之中。JdbcTemplate 提供了四個常用的方法。

①、execute() 方法:用於執行任何 SQL 語句。

②、update() 方法:用於執行新增、修改、刪除等 SQL 語句。

③、query() 方法:用於執行查詢相關 SQL 語句。

④、call() 方法:用於執行存儲過程、函數相關 SQL 語句。

本例中我們使用 execute() 方法向 mysql_datasource 表中插入一行數據 {id:uuid, name:'沉默王二'}

05、運行 Spring Boot 項目

接下來,我們直接運行 SpringBootMysqlApplication 類,這樣一個 Spring Boot 項目就啟動成功了。

這時候,我們可以直接瀏覽器的 URL 中鍵入 http://localhost:8080/insert 測試 MySQL 的插入語句是否執行成功。很遺憾,竟然出錯了。

該怎麼辦呢?這需要我們在連接字符串中顯式指定時區,修改 spring.datasource.url 為以下內容。

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdemo?serverTimezone=UTC

重新運行該項目后再次訪問,發現數據插入成功了。

為了確保數據是否真的插入成功了,我們通過 Navicat(一款強大的數據庫管理和設計工具)來查看一下。

情況不妙,中文亂碼了。該怎麼辦呢?需要我們在連接字符串中顯式指定字符集,修改 spring.datasource.url 為以下內容。

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdemo?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC

重新運行該項目后再次訪問,發現中文不再亂碼了。

快給自己點個贊。

06、鳴謝

我是沉默王二,一枚有趣的程序員。如果覺得文章對你有點幫助,請微信搜索「 沉默王二 」第一時間閱讀,回復【666】更有我為你精心準備的 500G 高清教學視頻(已分門別類)。

本文 GitHub 已經收錄,有大廠面試完整考點,歡迎 Star。

原創不易,莫要白票,請你為本文點個贊吧,這將是我寫作更多優質文章的最強動力。

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

※回頭車貨運收費標準

宇安交通關係企業,自成立迄今,即秉持著「以誠待人」、「以實處事」的企業信念

這些Java8官方挖過的坑,你踩過幾個?_網頁設計公司

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

搬家費用:依消費者運送距離、搬運樓層、有無電梯、步行距離、特殊地形、超重物品等計價因素後,評估每車次單

導讀:系統啟動異常日誌竟然被JDK吞噬無法定位?同樣的加密方法,竟然出現部分數據解密失敗?往List裏面添加數據竟然提示不支持?日期明明間隔1年卻輸出1天,難不成這是天上人間?1582年神秘消失的10天JDK能否識別?Stream很高大上,List轉Map卻全失敗……這些JDK8官方挖的坑,你踩過幾個? 關注公眾號【碼大叔】,實戰踩坑硬核分享,一起交流!

@

目錄

  • 一、Base64:你是我解不開的迷
  • 二、被吞噬的異常:我不敢說出你的名字
  • 三、日期計算:我想留住時間,讓1天像1年那麼長
  • 四、List:一如你我初見,不增不減
  • 五、Stream處理:給你,獨一無二
  • 六、結尾:紙上得來終覺淺,絕知此事要躬行!
  • 推薦閱讀

一、Base64:你是我解不開的迷

出於用戶隱私信息保護的目的,系統上需將姓名、身份證、手機號等敏感信息進行加密存儲,很自然選擇了AES算法,外面又套了一層Base64,之前用的是sun.misc.BASE64Decoder/BASE64Encoder,網上的資料基本也都是這種寫法,運行得很完美。但這種寫法在idea或者maven編譯時就會有一些黃色告警提示。到了Java 8后,Base64編碼已經成為Java類庫的標準,內置了 Base64 編碼的編碼器和解碼器。於是乎,我手賤地修改了代碼,改用了jdk8自帶的Base64方法

import java.util.Base64;

public class Base64Utils {

    public static final Base64.Decoder DECODER = Base64.getDecoder();
    public static final Base64.Encoder ENCODER = Base64.getDecoder();

    public static String encodeToString(byte[] textByte) {
        return ENCODER.encodeToString(textByte);
    }

    public static byte[] decode(String str) {
        return DECODER.decode(str);
    }

}

程序員的職業操守咱還是有的,構造新老數據、自測、通過,提交測試版本。信心滿滿,我要繼續延續我 0 Bug的神話!然後……然後版本就被打回了。

Caused by: java.lang.IllegalArgumentException: Illegal base64 character 3f
    at java.util.Base64$Decoder.decode0(Base64.java:714)
    at java.util.Base64$Decoder.decode(Base64.java:526)
    at java.util.Base64$Decoder.decode(Base64.java:549)

關鍵是這個錯還很詭異,部分數據是可以解密的,部分解不開

Base64依賴於簡單的編碼和解碼算法,使用65個字符的US-ASCII子集,其中前64個字符中的每一個都映射到等效的6位二進制序列,第65個字符(=)用於將Base64編碼的文本填充到整數大小。後來產生了3個變種:

  • RFC 4648:Basic
    此變體使用RFC 4648和RFC 2045的Base64字母表進行編碼和解碼。編碼器將編碼的輸出流視為一行; 沒有輸出行分隔符。解碼器拒絕包含Base64字母表之外的字符的編碼。​
  • RFC 2045:MIME
    此變體使用RFC 2045提供的Base64字母表進行編碼和解碼。編碼的輸出流被組織成不超過76個字符的行; 每行(最後一行除外)通過行分隔符與下一行分隔。解碼期間將忽略Base64字母表中未找到的所有行分隔符或其他字符。
  • RFC 4648:Url
    此變體使用RFC 4648中提供的Base64字母表進行編碼和解碼。字母表與前面显示的字母相同,只是-替換+和_替換/。不輸出行分隔符。解碼器拒絕包含Base64字母表之外的字符的編碼。
S.N. 方法名稱 & 描述
1 static Base64.Decoder getDecoder()
返回Base64.Decoder解碼使用基本型base64編碼方案。
2 static Base64.Encoder getEncoder()
返回Base64.Encoder編碼使用的基本型base64編碼方案。
3 static Base64.Decoder getMimeDecoder()
返回Base64.Decoder解碼使用MIME類型的base64解碼方案。
4 static Base64.Encoder getMimeEncoder()
返回Base64.Encoder編碼使用MIME類型base64編碼方案。
5 static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator)
返回Base64.Encoder編碼使用指定的行長度和線分隔的MIME類型base64編碼方案。
6 static Base64.Decoder getUrlDecoder()
返回Base64.Decoder解碼使用URL和文件名安全型base64編碼方案。
7 static Base64.Encoder getUrlEncoder()
返回Base64.Decoder解碼使用URL和文件名安全型base64編碼方案。

關於base64用法的詳細說明,可參考:https://juejin.im/post/5c99b2976fb9a070e76376cc

對於上面的錯誤,網上有的說法是,建議使用Base64.getMimeDecoder()Base64.getMimeEncoder(),對此我只能建議:老的系統如果已經有數據了,就不要使用jdk自帶的Base64了。JDK官方的Base64和sun的base64是不兼容的!不要替換!不要替換!不要替換!

二、被吞噬的異常:我不敢說出你的名字

這個問題理解起來還是蠻費腦子的,所以我把這個系統異常發生的過程提煉成了一個美好的故事,放鬆一下,吟詩一首!

最怕相思濃
一切皆是你
唯獨
不敢說出你的名字
— 碼大叔

這個問題是在使用springboot的註解時遇到的問題,發現JDK在解析註解時,若註解依賴的類定義在JVM加載時不存在,也就是NoClassDefFoundError時,實際拿到的異常將會是ArrayStoreException,而不是NoClassDefFoundError,涉及到的JDK里的類是AnnotationParser.java, 具體代碼如下:

private static Object parseClassArray(int paramInt, ByteBuffer paramByteBuffer, ConstantPool paramConstantPool, Class<?> paramClass) {
    Class[] arrayOfClass = new Class[paramInt];
    int i = 0;
    int j = 0;
    for (int k = 0; k < paramInt; k++){
        j = paramByteBuffer.get();
        if (j == 99) {
            // 注意這個方法
        	arrayOfClass[k] = parseClassValue(paramByteBuffer, paramConstantPool, paramClass);
        } else {
        	skipMemberValue(j, paramByteBuffer);
        	i = 1;
        }
    }
    return i != 0 ? exceptionProxy(j) : arrayOfClass;
}
private static Object parseClassValue(ByteBuffer paramByteBuffer, ConstantPool paramConstantPool, Class<?> paramClass) {
    int i = paramByteBuffer.getShort() & 0xFFFF;
    try
    {
        String str = paramConstantPool.getUTF8At(i);
        return parseSig(str, paramClass);
    } catch (IllegalArgumentException localIllegalArgumentException) {
        return paramConstantPool.getClassAt(i);
    } catch (NoClassDefFoundError localNoClassDefFoundError) {
         // 注意這裏,異常發生了轉化
        return new TypeNotPresentExceptionProxy("[unknown]", localNoClassDefFoundError);
    } catch (TypeNotPresentException localTypeNotPresentException) {
        return new TypeNotPresentExceptionProxy(localTypeNotPresentException.typeName(), localTypeNotPresentException.getCause());
    }
}

parseClassArray這個方法中,預期parseClassValue返回Class對象,但看實際parseClassValue的邏輯,在遇到NoClassDefFoundError時,返回的是TypeNotPresentExceptionProxy,由於類型強轉失敗,最終拋出的是java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy,此時只能通過debug到這行代碼,找到具體是缺少哪個類定義,才能解決這個問題。

筆者重現一下發現這個坑的場景,有三個module,module3依賴module2但未聲明依賴module1,module2依賴module1,但聲明的是optional類型,依賴關係圖如下:

上面每個module中有一個Class,我們命名為ClassInModuleX。ClassInModule3啟動時在註解中使用了ClassInModule2的類,而ClassInModule2這個類的繼承了ClassInModule1,這幾個類的依賴關係圖如下:

如此,其實很容易知道在module運行ClassInModule3時,會出現ClassInModule1的NoClassDefFoundError的,但實際運行時,你能看到的異常將不是NoClassDefFoundError,而是java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy,此時,若想要知道具體是何許異常,需通過debug在AnnotationParser中定位具體問題,以下展示兩個截圖,分別對應系統控制台實際拋出的異常和通過debug發現的異常信息。

控制台異常信息:

注意異常實際在紅色圈圈這裏,自動收縮了,需要展開才可以看到通過debug發現的異常信息:

如果你想體驗這個示例,可關注公眾號碼大叔和筆者交流。如果你下次遇到莫名的java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy,請記得用這個方法定位具體問題。

三、日期計算:我想留住時間,讓1天像1年那麼長

Java8之前日期時間操作相當地麻煩,無論是Calendar還是SimpleDateFormat都讓你覺得這個設計怎麼如此地反人類,甚至還會出現多線程安全的問題,阿里巴巴開發手冊中就曾禁用static修飾SimpleDateFormat。好在千呼萬喚之後,使出來了,Java8帶來了全新的日期和時間API,還帶來了Period和Duration用於時間日期計算的兩個API。

Duraction和Period,都表示一段時間的間隔,Duraction正常用來表示時、分、秒甚至納秒之間的時間間隔,Period正常用於年、月、日之間的時間間隔。

網上的大部分文章也是這麼描述的,於是計算兩個日期間隔可以寫成下面這樣的代碼:

// parseToDate方法作用是將String轉為LocalDate,略。
LocalDate date1 = parseToDate("2020-05-12");
LocalDate date2 = parseToDate("2021-05-13");
// 計算日期間隔
int period = Period.between(date1,date2).getDays();

一個是2020年,一個是2021年,你認為間隔是多少?1年?
恭喜你,和我一起跳進坑裡了(畫外音:裏面的都擠一擠,動一動,又來新人了)。
正確答案應該是:1天。

這個單詞的含義以及這個方法看起來確實是蠻誤導人的,一不注意就會掉進坑裡。Period其實只能計算同月的天數、同年的月數,不能計算跨月的天數以及跨年的月數。

正確寫法1

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

透過選單樣式的調整、圖片的縮放比例、文字的放大及段落的排版對應來給使用者最佳的瀏覽體驗,所以不用擔心有手機版網站兩個後台的問題,而視覺效果也是透過我們前端設計師優秀的空間比例設計,不會因為畫面變大變小而影響到整體視覺的美感。

 long period = date2.toEpochDay()-date1.toEpochDay();

toEpochDay():將日期轉換成Epoch 天,也就是相對於1970-01-01(ISO)開始的天數,和時間戳是一個道理,時間戳是秒數。顯然,該方法是有一定的局限性的

正確寫法2

long period = date1.until(date2,ChronoUnit.DAYS);

使用這個寫法,一定要注意一下date1和date2前後順序:date1 until date2。

正確做法3(推薦)

 long period = ChronoUnit.DAYS.between(date1, date2);

ChronoUnit:一組標準的日期時間單位。這組單元提供基於單元的訪問來操縱日期,時間或日期時間。 這些單元適用於多個日曆系統。這是一個最終的、不可變的和線程安全的枚舉。

看到”適用於多個日曆系統“這句話,我一下子想起來歷史上1582年神秘消失的10天,在JDK8上是什麼效果呢?1582-10-15和1582-10-04你覺得會相隔幾天呢?11天還是1天?有興趣的小夥伴自己去寫個代碼試試吧。

打開你的手機,跳轉到1582年10月,你就能看到這消失的10天了。

四、List:一如你我初見,不增不減

這個問題其實在JDK里存在很多年了,JDK8中依然存在,也是很多人最容易跳的一個坑!直接上代碼:

public List<String> allUser() {
    // 省略
    List<String> currentUserList = getUser();
    currentUserList.add("碼大叔");
    // 省略
}

就是上面這樣一段代碼,往一個list里添加一條數據,你覺得結果是什麼呢?“碼大叔”成功地添加到了List里?天真,不報個錯你怎麼能意識到JDK存在呢。

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)

原因
因為在getUser方法里,返回的List使用的是Arrays.asList生成的,示例:

    private List<String> getUser(){
        return Arrays.asList("劍聖","小九九");
    }

我們來看看Arrays.asList的源碼

    @SafeVarargs
    @SuppressWarnings("varargs")
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }
 private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable
    {
   		private final E[] a;
        // 部分代碼略
        ArrayList(E[] array) {
            // 返回的是一個定長的數組
            a = Objects.requireNonNull(array);
        }
        // 部分代碼略
   }

很明顯,返回的實際是一個定長的數組,所以只能“一如你我初見”,初始化什麼樣子就什麼樣子,不能新增,不能減少。如果你理解了,那我們就再來一個栗子

   int[] intArr  = {1,2,3,4,5};
   Integer[] integerArr  = {1,2,3,4,5};
   String[] strArr = {"1", "2", "3", "4", "5"};
   List list1 = Arrays.asList(intArr);
   List list2 = Arrays.asList(integerArr);
   List list3 = Arrays.asList(strArr);
   System.out.println("list1中的數量是:" + list1.size());
   System.out.println("list2中的數量是:" + list2.size());
   System.out.println("list3中的數量是:" + list3.size());

你覺得答案是什麼?預想3秒鐘,揭曉答案,看跟你預想的是否一致呢?

list1中的數量是:1
list2中的數量是:5
list3中的數量是:5

是不是和你預想又不一樣了?還是回到Arrays.asList方法,該方法的輸入只能是一個泛型變長參數。基本類型是不能泛型化的,也就是說8個基本類型不能作為泛型參數,要想作為泛型參數就必須使用其所對應的包裝類型,那前面的例子傳遞了一個int類型的數組,為何程序沒有報編譯錯誤呢?在Java中,數組是一個對象,它是可以泛型化的,也就是說我們的例子是把一個int類型的數組作為了T的類型,所以在轉換后在List中就只有1個類型為int數組的元素了。除了int,其它7個基本類型的數組也存在相似的問題。

JDK里還為我們提供了一個便捷的集合操作工具類Collections,比如多個List合併時,可以使用Collections.addAll(list1,list2), 在使用時也同樣要時刻提醒自己:“請勿踩坑”!

五、Stream處理:給你,獨一無二

Java8中新增了Stream流 ,通過流我們能夠對集合中的每個元素進行一系列并行或串行的流水線操作。當使用一個流的時候,通常包括三個基本步驟:獲取一個數據源(source)→ 數據轉換→執行操作獲取想要的結 果,每次轉換原有 Stream 對象不改變,返回一個新的 Stream 對象(可以有多次轉換),這就允許對其操作可以 像鏈條一樣排列,變成一個管道。

項目上千萬不要使用Stream,因為一旦用起來你會覺得真屏蔽詞爽,根本停不下來。當然不可避免的,還是有一些小坑的。

假設我們分析用戶的訪問日誌,放到list里。

list.add(new User("碼大叔", "登錄公眾號"));
list.add(new User("碼大叔", "編寫文章"));

因為一些原因,我們要講list轉為map,Steam走起來,

private static void convert2MapByStream(List<User> list) {
    Map<String, String> map = list.stream().collect(Collectors.toMap(User::getName, User::getValue));
    System.out.println(map);
}

咣當,掉坑裡了,程序將拋出異常:

Exception in thread "main" java.lang.IllegalStateException: Duplicate key 碼大叔

使用Collectors.toMap() 方法中時,默認key值是不允許重複的。當然,該方法還提供了第三個參數:也就是出現 duplicate key的時候的處理方案

如果在開發的時候就考慮到了key可能重複,你需要在這樣定義convert2MapByStream方法,聲明在遇到重複key時是使用新值還是原有值:

    private static void convert2MapByStream(List<User> list) {
        Map<String, String> map = list.stream().collect(Collectors.toMap(User::getName, User::getValue, (oldVal, newVal) -> newVal));
        System.out.println(map);
    }

關於Stream的坑其實還是蠻多的,比如尋找list中的某個對象,可以使用findAny().get(),你以為是找到就返回找不到就就返回null?依然天真,找不到會拋出異常的,需要使用額外的orElse方法。

六、結尾:紙上得來終覺淺,絕知此事要躬行!

所謂JDK官方的坑,基本上都是因為我們對技術點了解的不夠深入,望文生義,以為是怎樣怎樣的,而實際上我們的自以為是讓我們掉進了一個又一個坑裡。面對着這些坑,我流下了學藝不精的眼淚!但也有些坑,確實發生的莫名其妙,比如吞噬異常,沒有理解JDK為什麼這麼設計。還有些坑,誤導性確實太強了,比如日期計算、list操作等。最後只能說一句:

紙上得來終覺淺,絕知此事要躬行!
編碼不易,且行且珍惜!

推薦閱讀

Try-Catch包裹的代碼異常后,竟然導致了產線事務回滾!
Redis 6.0 新特性-多線程連環13問!
報告老闆,微服務高可用神器已祭出,您花巨資營銷的高流量來了沒?
我成功攻擊了Tomcat服務器,大佬們的反應亮了

公眾號:碼大叔
資深程序員、架構師技術社區
微服務 | 大數據 | 架構設計 | 技術管理
個人微信:itmadashu

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

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

節能減碳愛地球是景泰電動車的理念,是創立景泰電動車行的初衷,滿意態度更是服務客戶的最高品質,我們的成長來自於你的推薦。

城市SUV在它面前就是渣!真正的硬漢座駕為什麼卻賣不好?_網頁設計公司

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

網站的第一印象網頁設計,決定了客戶是否繼續瀏覽的意願。台北網動廣告製作的RWD網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上它。

值得一提的是,皮卡車的改裝潛力絲毫不亞於傳統轎車,只要你喜歡,从里到外都能細細地更改一番,包括外包圍、懸挂底盤、發動機等等車身部分。3皮卡車在國內舉步維艱眾所周知,皮卡車向來不是市場還是廠商的主流產品,起初也是有不少廠家願意把資源傾向到皮卡車,例如長城。

SUV之所以會如此火爆,國人無非是看上它的高底盤與大空間。但是,要論綜合實力的話,皮卡車似乎還真找不到什麼對手,身懷十八般武藝樣樣精通。然而,即便是空有一身本領的皮卡車,輾轉進入國內,卻一直是叫好不叫座,一度成為低層專用的代名詞,或者被說成是土豪手中的大玩具,處在一個極為兩難的地位。

相信很多人對皮卡的印象還停留在好萊塢電影,影片中總會出現一款令你震撼驚艷的大皮卡車。與中國人熱衷SUV不同,皮卡車在美國簡直就是天堂,大街小巷隨處可見。皮卡車渾身上下都散發出一股濃郁的霸道硬漢氣質,與美國人奔放自由的性格取向不謀而合。反而在國內,大眾對於皮卡車的審美評價分歧得厲害,有人認為是男人就得擁有一台,但也有些人不以為然。當然,關於外形就沒什麼好計較的,總之是見仁見智。但有一點讓不得不承認,皮卡車真的非常耐操。

由於皮卡車的車架設計與貨車有很高的相似度,均是採用非承載車身的結構,因此,皮卡車完全具有更高強度的剛性與硬性,不僅能承受高負荷的承載量,同時又不失良好的通過性。除此之外,一顆強勁耐用的“大心臟”也是其制勝法寶,基本上皮卡車都搭載着大排量的自吸發動機,或者低扭強、成熟可靠的柴油發動機,獨特的駕駛體驗是SUV還是轎車遠遠所不及的。

不僅車身三大件穩定可靠,而且平日里的維護費用也非常低廉。儘管使用了大排量的發動機,但對於皮卡車這類粗養粗放的車型來說,

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

台中景泰電動車行只是一個單純的理由,將來台灣的環境,出門可以自由放心的深呼吸,讓空氣回歸自然的乾淨,減少污染,留給我們下一代有好品質無空污的優質環境

實際的油耗會比SUV更具優勢,最可貴的是它們還不怎麼“挑食”。

得益於大塊頭、大動力等先天條件,賦予了皮卡車全方位多功能用途。目前來說,皮卡車大部分都是雙排座式,車內雖談不上多麼寬敞,但依然能夠滿足5個成年人的容量,舒適性則與車型的定位、價格有關。

寬大結實的后廂,無論塞滿多少沉甸甸的貨物都不在話下。值得一提的是,皮卡車的改裝潛力絲毫不亞於傳統轎車,只要你喜歡,从里到外都能細細地更改一番,包括外包圍、懸挂底盤、發動機等等車身部分。

眾所周知,皮卡車向來不是市場還是廠商的主流產品,起初也是有不少廠家願意把資源傾向到皮卡車,例如長城。但隨着國人消費觀念轉變和SUV、微面的興起,皮卡車便逐漸遭受冷遇,不斷有人意識到皮卡車只不過是高價的小“貨車”。 老百姓買低端皮卡車不放心,買高端的又不划算。在各方權衡利弊之下,同樣是多用途,但更便宜的微面贏得廣大三、四線城市和農村地區的青睞,皮卡車的市場佔有率自此呈現斷崖式下降。

皮卡車在農村地區失利,換成在一線城市也好不到哪去,處處碰壁,嚴重打擊了皮卡車在大城市的存活率。其中最大的問題就是出在嚴厲的政策把控,大城市幾乎都把皮卡車歸屬到貨車一列,皮卡車無法獲得與轎車、SUV同樣平等的路權,禁行、限行的手段層出不窮。不僅如此,貼反光條標識、年檢、報廢制度等強制規定,讓一部分潛在用戶徹底對皮卡車心灰意冷。

從今年年初放寬皮卡車的信號來看,多少能察覺到國家已經開始正視皮卡車的存在,未來想必也有希望迎來皮卡車大幅度解禁,這無論對刺激車市還是消費者,都算得上一個利好消息。但是,如今擺在消費者的一個難題是,車企受制於長期的政策壓力,國內可選擇的皮卡車數量十分匱乏,不是產品太低端,就是價格太作死。那麼,即然說到這,無一例外地推薦幾款耐操實幹的皮卡車吧!

長城 風駿6

指導價:8.68-12.48萬

五十鈴 瑞邁

指導價:8.48-11.88萬

豐田坦途

指導價:49.00-51.80萬

福特F-150

指導價:F-150 50-57萬

本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

以設計的實用美學觀點,規劃出舒適、美觀的視覺畫面,有效提昇使用者的心理期待,營造出輕鬆、愉悅的網站瀏覽體驗。

銳界漢蘭達都驚訝!這款全新SUV簡直就是重磅炸彈!_台北網頁設計

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

0T的渦輪增壓兩款車型,1。5T的動力對於家庭用車來說,也是完全夠用的,1。5T車型還能享受到國家購置稅減半的政策呢。性價比在同級別中也有着較強的競爭力,而對於一些追求動力的客戶又可以選擇2。0T的車型,昂科威可是下足了功夫。

本田冠道

本田,一個最會將空間玩的淋漓盡致的品牌,最會完虐同級別發動機的品牌,每一次的新車發布,都能對整個市場牽起風聲血雨,在緊湊型SUV的紅海中,CR-V也穩穩的佔據了屬於它的市場份額,而中型SUV 的細分市場中,本田目前還沒有一款主力的產品,讓它在這個細分領域來爭奪,市場上除了昂科威、漢蘭達、熱銷之外和不溫不火的、酷威、全新勝達都讓這个中型SUV市場始終平平淡淡,不像緊湊車型般來的猛烈,不過,本田準備將這一局面,打破了,專門為中國市場開發了一台中型SUV,誓要將空間玩到極致的,廣汽本田冠道。

它的特點有什麼?很簡單,也很要命,最大的後排空間+同級最強的2.0T 發動機,其它人拿着“水果刀”開殺,本田卻,一上來就拿着“開山刀”準備殺出一條血路,而且更是贏得了國內媒體一遍好評,就是這樣,冠道已經佔據了天時地利人和,就等本田,拔鞘出劍了。

實力與顏值同樣出色

冠道的外形採用了本田的家族式設計,前臉採用飛翼式中網 ,車身整體十分寬大,採用溜背式設計,全LED大燈,看起來十分具有科技感,

後排空間要用手臂來量

用手臂來量車身,這是在這個級別當中是史無前例的,但是本田就是做到了,在車身尺寸上,它的軸距達到了2820mm,比漢蘭達長出了30mm,

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

已經可以威脅七座SUV的地位了,在尺寸的優勢上,冠道又是一個贏家,不能不佩服本田在空間的設計是多麼的厲害。

完勝同級別的動力配置

完勝同級別這句話,曾經在飛度GK5身上,無數次出現過,然而這一次,冠道的2.0T發動機,也要來繼續演繹這句話,身為本田VTEC TUBRO三款發動機中的最強选手,這台2.0T發動機在排氣側氣門帶有VTEC,那在動力方面,新車將搭載一台2.0T雙VTC直噴渦輪增壓發動機,傳動系統與發動機匹配的是9速自動變速箱。此外,新車還將採用全新的电子按鍵式換擋設計,並提供標準、運動和舒適三種駕駛模式選擇。

競品對手:

上汽通用別克-昂科威

指導價:20.99-34.99萬

作為一款專門為中國研發的汽車,昂科威可以說是牢牢抓住了中國消費者的心理。外觀沉穩大氣,內飾的做工用料也十分的的厚道。全系搭配了1.5T和2.0T的渦輪增壓兩款車型,1.5T的動力對於家庭用車來說,也是完全夠用的,1.5T車型還能享受到國家購置稅減半的政策呢。性價比在同級別中也有着較強的競爭力,而對於一些追求動力的客戶又可以選擇2.0T的車型,昂科威可是下足了功夫!

東風日產-樓蘭

指導價:23.88-37.98萬

日產的車型,一直在人們的心目中都是一種非常穩重,舒適的車型。而這次日產打破局面,可見這台樓蘭的外形顯的非常的運動、激進、前臉一個U字型的鍍鉻。內飾時尚,商務也有高級感。車型搭載了2.5L自然吸氣發動機,動力方面只能說是夠用,畢竟他們主推的是舒適。相對於冠道的2.0T的渦輪增壓發動機來說,樓蘭可是弱爆了。

未上市已讓對手俯視眈眈

本田冠道會在今年四季度正式上市,對比已經在市場搏殺多年早已站穩腳跟的漢蘭達而言,可能你會覺得它慢半拍,但是,它不是手無寸鐵的來拼殺,而是有着一身總夠能威脅着“江湖”的必殺技,而且冠道在各方面的設計都是為了國內消費者去量身打造的,從內飾的大麵皮革材質極變態的後排空間,加上同級最強的2.0T發動機都足以證明,冠道的實力,雖未上市,也不知定價格如何,但是它的出現,會在這个中級SUV市場,牽起一場大撕殺,我很期待這個拿着“開山刀”的日本武士如何開山劈地,佔領江山!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。