比哈弗H6強10倍,這5台車真的能上山下海!

威利斯可能你不知道,但給你看以下圖片你肯定恍然大悟。沒錯這就是二戰美軍的吉普車。而牧馬人則是其最純正的後裔沒有之一,你可能買不起路虎衛士,買不起奔馳G class,但你卻可以40多萬享受一台同樣B逼格滿滿的純種硬派越野。

雖然大家都喜歡SUV,但不少消費者心目中SUV就是越野車,這其實是一個錯誤的解讀,普通SUV跟越野車的通過能力還是有着非常巨大鴻溝,其最大的分別在於在車身結構:

承載式車身是一體式的概念,底盤跟發動機直接可以安裝在車身,這樣做優點在於重量輕,重心低,配合不同懸架可以得到極佳的舒適性能。一般用於轎車及通勤性質的SUV;

非載式車身是有車架的,車身、引擎、懸架都是作為零件安裝固定在車架上,這樣的車普遍重心較高難以擁有舒適性,整車也比較笨重,但相對的路面通過性及承載能力會更強,一般用於貨車,越野車上;

所以我們從車身結構上即可分辨出SUV跟越野車的分別,可以說硬派越野車都可以成為SUV,但不是所有SUV都能成為硬派越野! 下面我們來看看視頻感受下硬派越野的通過性吧!

看到視頻裏面普拉多逆天的通過能力!你是不是也很想擁有一台屬於自己能隨意闖蕩,遨遊大地的”硬派越野”呢?!接下來就跟你們推薦幾部吧!

人到山前必有路,有路必有豐田車!說的就是當年名聲在外的陸地巡洋艦(LAND CRUISER)!很多人認為LAND CRUISER是酷路澤與普拉多沒有關係,其實不然,普拉多跟FJ酷路澤都屬LAND CRUISER系列細分市場的產品,所以我們也能在普拉多車尾看見LAND CRUISER的字樣。而剛剛視頻的主角也正是普拉多!而且它的價格也算是親民!

威利斯可能你不知道,但給你看以下圖片你肯定恍然大悟;

沒錯這就是二戰美軍的吉普車!而牧馬人則是其最純正的後裔沒有之一,你可能買不起路虎衛士,買不起奔馳G class,但你卻可以40多萬享受一台同樣B逼格滿滿的純種硬派越野!而且它擁有着逆天越野能力,無論你攀山涉水,上天下地,它都能氣定神閑的輕鬆征服!

沙漠之王途樂的威名不是吹出來的,自1951年誕生開始,途樂67年來十年如一日地肩負起的尼桑越野大哥的地位!

其強悍的越野實力,且兼顧豪華舒適更一直都備受好評!

英菲尼迪QX80的出現與途樂上演了一出本是同根生相煎何太急的好戲!因為它們都是同平台產品,他們之間越野能力眾說紛紜,都在伯仲之間,但事實對比之下途樂是更加偏向越野;

而QX80則更靠攏豪華,其實第一眼從它奢華霸氣的外觀便可以看出!

這位享譽盛名的“黑武士”在全世界範圍內獲獎無數,是地球上最強的全地形越野車之一,在此列舉一下選它為座駕的世界名宿:納粹黨首希特勒、羅馬教皇、俄國前總統恭弘=叶 恭弘利欽、東正教教皇阿列克謝二世、沙特酋長穆罕默德·勒沙·普哈列維,這些無一不是影響世界發展歷史的重要人物;

奔馳G Class誕生至今核心追求從未改變,就是“功能決定形式”的設計理念!同時把舒適性與越野功能結合得天衣無縫!

結語

中國人那麼喜愛SUV,是有道理的!認為SUV確實是好東西,不論是讓你共享天倫的城市道路SUV還是今天的主角們“硬派越野”都在他們的領域作出巨大的貢獻,也希望各位能得到自己稱心滿意的產品!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

口述歷史與訪談 看見女性環境倡議者身處疫情下的困境

環境資訊中心綜合外電;黃鈺婷 翻譯;林大利 審校;稿源:Mongabay

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

C# 9.0 新特性之參數非空檢查簡化

閱讀本文大概需要 1.5 分鐘。

參數非空檢查是縮寫類庫很常見的操作,在一個方法中要求參數不能為空,否則拋出相應的異常。比如:

public static string HashPassword(string password)
{
    if(password is null)
    {
        throw new ArgumentNullException(nameof(password));
    }
    ...
}

當異常發生時,調用者很容易知道是什麼問題。如果不加這個檢查,可能就會由系統拋出未將對象引用為實例之類的錯誤,這不利於調用者診斷錯誤。

由於這個場景太常見了,於是我經常在我的項目中通過一個輔助類來做此類檢查。這個類用來檢查方法參數,所以命名為 Guard,主要代碼如下:

public static class Guard
{
    public static void NotNull(object param, string paramName)
    {
        if (param is null)
        {
            throw new ArgumentNullException(paramName);
        }
    }

    public static void NotNullOrEmpty(string param, string paramName)
    {
        NotNull(param, paramName);
        if (param == string.Empty)
        {
            throw new ArgumentException($"The string can not be empty.", paramName);
        }
    }

    public static void NotNullOrEmpty<T>(IEnumerable<T> param, string paramName)
    {
        NotNull(param, paramName);
        if (param.Count() == 0)
        {
            throw new ArgumentException("The collection can not be empty.", paramName);
        }
    }
    ...
}

這個類包含了三個常見的非空檢查,包括 null、空字符串、空集合的檢查。使用示例:

public static string HashPassword(string password)
{
    Guard.NotNull(password, nameof(password));
    ...
}

public static IEnumerable<TSource> DistinctBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector)
{
    Guard.NotNullOrEmpty(source, nameof(source));
    ...
}

介於這種非空檢查極其常見,C# 9.0 對此做了簡化,增加了操作符‘!’,放在參數名後面,表示此參數不接受 null 值。使用方式如下:

public static string HashPassword(string password!)
{
    ...
}

簡化了很多有木有。這個提案已經納入 C# 9.0 的特性中,但目前(2020-06-13)還沒有完成開發。

這個特性只支持非 null 檢查,其它參數檢查場景還是不夠用的,我還是會通過輔助類來進行像空字符串、空集合的檢查。

這個特性在寫公共類庫的時候很有用,但我想大多數人在寫業務邏輯代碼的時候可能用不到這個特性,一般會封自己的參數檢查機制。比如,我在項目中,對於上層 API 開發,我通過封裝一個輔助類(ApiGuard)來對對參數進行檢查,如果參數不通過,則拋出相應的業務異常,而不是 ArgumentNullException。比如下面的一段截取自我的 GeekGist 小項目的代碼:

public static class ApiGuard
{
    public static void EnsureNotNull(object param, string paramName)
    {
        if (param == null) throw new BadRequestException($"{paramName} can not be null.");
    }

    public static void EnsureNotEmpty<T>(IEnumerable<T> collection, string paramName)
    {
        if (collection == null || collection.Count() == 0)
            throw new BadRequestException($"{paramName} can not be null or empty.");
    }

    public static void EnsureExist(object value, string message = "Not found")
    {
        if (value == null) throw new BadRequestException(message);
    }

    public static void EnsureNotExist(object value, string message = "Already existed")
    {
        if (value != null) throw new BadRequestException(message);
    }
    ...
}

使用示例:

public async Task UpdateAsync(long id, BookUpdateDto dto)
{
    ApiGuard.EnsureNotNull(dto, nameof(dto));
    ApiGuard.EnsureNotEmpty(dto.TagValues, nameof(dto.TagValues));

    var book = await DbSet
        .Include(x => x.BookTags)
        .FirstOrDefaultAsync(x => x.Id == id);
    ApiGuard.EnsureExist(book);

    Mapper.Map(dto, book);

    ...
}

ApiGuard 的好處是,當 API 接口接到不合要求的參數時,可以自定義響應返回內容。比如,增加一個 Filter 或中間件用來全局捕獲業務代碼異常,根據不同的異常返回給前端不同的狀態碼和消息提示:

private Task HandleExceptionAsync(HttpContext context, Exception exception)
{
    ApiResult result;
    if (exception is BadRequestException)
    {
        result = ApiResult.Error(exception.Message, 400);
    }
    else if (exception is NotFoundException)
    {
        message = string.IsNullOrEmpty(message) ? "Not Found" : message;
        result = ApiResult.Error(message, 404);
    }
    else if (exception is UnauthorizedAccessException)
    {
        message = string.IsNullOrEmpty(message) ? "Unauthorized" : message;
        result = ApiResult.Error(message, 401);
    }
    ...
}

只是一個參數非空檢查,在實際開發中卻有不少的學問,所以學好了理論還要多實踐才能更透徹的理解它。

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

【其他文章推薦】

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

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

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

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

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

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

加拿大減塑 2021年底前禁六大類一次性塑膠製品

摘錄自2020年10月8日中央社報導

加拿大環境部長今(7日)宣布,2021年底之前,加拿大將禁用塑膠袋、塑膠吸管等一次性塑膠用品;他也坦言,加國在回收方面落後歐洲。

今天公布的禁令另將涵蓋攪拌棒、啤酒提環、餐盤以及難以回收的塑膠製餐具,是總理杜魯道(Justin Trudeau)放眼2030年前消滅塑膠垃圾,兌現氣候與環境政見核心的計畫一環。

但環境部長威金森(Jonathan Wilkinson)坦言:「我們這方面不在世界的前段班。」

政府表示,加拿大人每年丟棄300萬公噸塑膠垃圾,其中包括一年丟棄150億個塑膠袋、每天丟掉5700萬支塑膠吸管,在這之中,僅有9%回收。

污染治理
國際新聞
加拿大
一次性塑膠製品
禁塑
塑膠垃圾
一次性塑膠袋

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

15萬買啥車?有轎車有SUV,這2款合資車可以放心買

勁客的優勢在於成熟可靠的動力總成,採用1。5L自然吸氣發動機+CVT無級變速器的搭配能夠帶來非常平順線性的輸出,油門調校靈敏,能夠很好地應付日常市區內行駛,並且也非常省油,可靠性較高。不過其檔次感與配置水平不如哈弗H2。

15萬左右比較推薦的是本田XR-V與豐田卡羅拉,這兩款車目前在市場上都有着不錯的銷量、保值率以及口碑,XR-V在小型SUV市場混得風生水起,靠的就是其成熟的動力系統和越級的空間表現,家用是個非常棒的選擇。而卡羅拉乃全球銷量神車,中庸就是其最大的武器,除了汽油版本外還有雙擎版本可選,擁有非常優秀的燃油經濟性,能夠滿足許許多多的消費者,除了隔音濾振差點,其它方面的表現都非常不錯,乃家用車的不二之選。

一輛是接近中型車的緊湊型車,一輛是標準的中型車,凌渡280DSG豪華版擁有更加豐富的配置,不過因為其比較扁平的設計所以頭部空間表現一般,而君威中型車的身份自然擁有更大的空間以及更高的檔次感,同時全系標配9AT也讓其競爭力進一步上升,採用的1.5T發動機也有着不錯的動力輸出,因此更推薦君威1.5T中配。

510採用的是6擋手動變速器和5擋AMT變速器,假設會開手動擋的話更加推薦手動車型,6個擋位在高速行駛時把轉速壓得更低,能帶來更好的燃油經濟性,同時擁有更高的傳動效率及可靠性,510的手動擋換擋手感不錯,有吸入感並且行程不長,離合器的力度也不沉,沒那麼容易疲勞。而AMT變速器雖然說省去了踩離合器的麻煩,但是其換擋邏輯不清晰,而且頓挫比較嚴重,尤其是在起步階段或者是在堵車狀況下,因此更加推薦510的手動版車型。

兩車都是定位小型SUV,哈弗H2擁有更加親民的售價,更加大氣上檔次的外觀內飾設計,同時配置更加豐富,採用的1.5T發動機+7擋雙離合的搭配,擁有不錯的爆發力,但是雙離合變速器的邏輯有待提高,並且油耗也會偏高。

勁客的優勢在於成熟可靠的動力總成,採用1.5L自然吸氣發動機+CVT無級變速器的搭配能夠帶來非常平順線性的輸出,油門調校靈敏,能夠很好地應付日常市區內行駛,並且也非常省油,可靠性較高。不過其檔次感與配置水平不如哈弗H2。

綜上,假如你預算充足的話,更加建議購買勁客的中配以上車型,而預算不是很足的話,那麼家用選擇H2是一個非常具有性價比的選擇。

2018款飛度新增了運動套件車型,不過在配置方面還是一如既往的寒酸,比較推薦指導價為8.88萬的1.5L CVT潮跑版,在配置上面擁有主/副駕駛座安全氣囊、運動外觀套件、行車電腦显示屏、前霧燈等,類似比較常用的电子車身穩定系統、駐車雷達要到頂配才配備,但是飛度的動力和空間還是非常不錯的,1.5L自吸發動機就能爆發出131匹馬力,日常市區駕駛毫無壓力,加上本田“MM”理念,讓它的空間能夠滿足大多數人的使用需求,市面上大量的改裝件也能讓每位飛度車主把愛車改成獨一無二的樣子。

以上就是本期網友問答欄目的全部內容,假如你也想上牆的話,點擊下方留言留下你的問題並且點個贊,就有機會在下期欄目看見你的身影!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

Node.js躬行記(4)——自建前端監控系統

  這套前端監控系統用到的技術棧是:React+MongoDB+Node.js+Koa2。將性能和錯誤量化。因為自己平時喜歡吃菠蘿,所以就取名叫菠蘿系統。其實在很早以前就有這個想法,當時已經實現了前端的參數搜集,只是後台遲遲沒有動手,也就拖着。

  • 目前完成的還只是個雛形,僅僅是搜集了錯誤和相關的性能參數。

  • 後台樣式採用了封裝過的matrix。

  • 分析功能還很薄弱,只是做了簡單的演示,並且各種基礎功能還有待完善。

  • 後面打算強化數據分析,並且還要實現錯誤的回放機制,思路的話以前也調研過,參考之前的一篇文章

  現在的這個系統還只能算是個玩具,後期還需要雕琢雕琢。下面是這套系統的目錄結構。

├── pingapple --------------------------------- 菠蘿監控系統
│   ├── client -------------------------------- 系統的前端部分
│   ├── sdk ----------------------------------- 信息搜集代碼庫
│   ├── server -------------------------------- 系統的後端部分

一、SDK

1)primus.js

  在之前的《前端頁面性能參數搜集》一文中,詳細記載了各類性能指標的計算規則,並整理到了primus.js中。

  本次將在primus.js的基礎上做適當的修改,包括刪除代理、測速、資源信息等功能,改變部分性能指標的計算規則,例如從瀏覽器發起HTTP請求算起,忽略瀏覽器重定向的時間等。

2)錯誤處理

  完善錯誤處理,將錯誤分成三類:runtime、load和Promise。在window的error事件中,處理前兩種錯誤。像img元素載入的圖片地址不存在,就會執行formatLoadError()函數;像變量未定義,就會執行formatRuntimerError()函數。

window.addEventListener("error", function (event) {
    var errorTarget = event.target;
    // 過濾 target 為 window 的異常
    if (
      errorTarget !== window &&
      errorTarget.nodeName &&
      LOAD_ERROR_TYPE[errorTarget.nodeName.toUpperCase()]
    ) {
      handleError(formatLoadError(errorTarget));
    } else {
      handleError(
        formatRuntimerError(
          event.message,
          event.filename,
          event.lineno,
          event.colno,
          event.error
        )
      );
    }
  }, true
);

  將window綁定unhandledrejection事件后,就會在Promise被拒絕且沒有reject的回調函數時觸發。

window.addEventListener(
  "unhandledrejection",
  function (event) {
    // console.log('Unhandled Rejection at:', event.promise, 'reason:', event.reason);
    handleError({
      type: ERROR_PROMISE,
      desc: event.reason,
      stack: "no stack"
    });
  },
  true
);

3)初始化

  由於要計算白屏時間,DOM時間等,所以位置不能隨便放,得要放在head的最後面。

<head>
  <script>
    window.pineapple || (pineapple = {});
    pineapple.param = {
      "token": "dsadasd2323dsad23dsada"
    };
  </script>
  <script src="js/pineapple.js"></script>
</head>

二、服務端

1)Koa

  Koa是由Express原班人馬打造的Web輕量框架,通過組合各種中間件來避免繁瑣的回調函數嵌套,當前使用的版本是V2。

npm install --save koa

  使用的Koa腳手架:koa-generator,創建項目的結構,並且在此基礎上做了調整(目錄如下所示)。暫時還不會用到靜態資源和視圖層。

npm install -g koa-generator
├── server --------------------------------- 服務端
│   ├── bin -------------------------------- 命令
│   ├── config ----------------------------- 配置目錄
│   ├── controllers ------------------------ MVC中的邏輯層
│   ├── db --------------------------------- MVC中的數據層
│   ├── public ----------------------------- 靜態資源
│   ├── routes ----------------------------- 路由
│   ├── utils ------------------------------ 工具庫
│   ├── views ------------------------------ MVC中的視圖層
│   ├── app.js ----------------------------- 入口文件

  為了區分開發環境和生產環境,通過cross-env統一不同系統設置環境變量的方式。

npm install --save cross-env

  package.json中的命令如下,添加了環境配置。

"scripts": {
  "start": "node bin/www",
  "dev": "cross-env NODE_ENV=development ./node_modules/.bin/nodemon bin/www",
  "prd": "cross-env NODE_ENV=production pm2 start bin/www"
}

  prd按字面意思應該是生產環境的命令,其中使用了pm2,默認沒有安裝。還沒部署過Node.js,還不清楚裏面有多少坑。

npm install --save pm2

2)MongoDB

  MongoDB是一個開源的非關係型數據庫(圖1是下載界面),既沒有表、行等概念,也沒有固定的模式和結構,所有的數據以文檔(一個對象)的形式存儲。但其使用方式和關係型數據庫相似,並且還支持對數據建立索引,適用於高併發讀寫、海量數據存儲和實時分析等。

圖1

  注意,在安裝時默認會下載MongoDB Compress(一個可視化的MongoDB工具),默認下載會非常慢,建議自行下載,該工具的界面還是蠻清爽的,如圖2所示。

圖2

  在Mac上配置MongoDB比較麻煩,不像Windows那樣一件安裝,需要一些步驟,廢了點力氣才裝好,下面是執行的命令。

sudo mongod --dbpath=/Users/pw/data

3)Mongoose

  Mongoose是MongoDB的一個ORM(Object-Document Mapper,對象文檔映射)工具,可在Node.js環境中執行,封裝了MongoDB操作文檔的常用方法,包括引入數據庫連接(connect),定義模型(model),聲明文檔結構(scheme),實例化模型等操作數據庫的方法。

npm install --save mongoose

  借鑒了以前PHP數據分層的思想,單獨分離出數據庫的連接,並抽象通用的Model層(如下所示)。

const mongoose = require("./db");
class Mongodb {
  constructor(name, schema) {
    //聲明結構
    const mySchema = new mongoose.Schema(schema, { typeKey: "$type" });
    this.model = mongoose.model(name, mySchema);
  }
  //保存
  save(obj) {
    obj.created = Date.now();         //日期
    const doc = new this.model(obj);
    return new Promise((resolve, reject) => {
      doc.save((err, row) => {
        if (err) {
          reject(err);
          return;
        }
        resolve(row);
      });
    });
  }
}
module.exports = {
  model: Mongodb,
  mongoose
};

4)路由

  由於發送的地址是一張gif圖片,因此在處理路由時,返回本地的一張gif圖,如下所示,圖像地址得是絕對路徑,否則無法讀取。

router.get('/pa.gif', async (ctx, next) => {
  const ctr = new indexController();
  ctr.collect(ctx);
  const url = path.resolve(__dirname, "../public/images/blank.gif");
  ctx.body = fs.readFileSync(url);    //空白gif圖
});

5)代理分析

  在接收參數的時候分析代理所帶的信息,例如瀏覽器、操作系統、設備等。使用的是一個第三方庫:UAParser.js,四年前就關注過,當時GitHub上只有1K多個關注量,現在已經翻了4倍。

npm install --save ua-parser-js

6)假數據

  製作一套合適的假數據,新增命令“npm run data”,初始化數據,便於展示。

三、後台

1)UI

  後台模板採用了之前封裝過的Matrix,但不會依賴Bootstrap框架。

  將整個頁面分成五塊,分別是導航、側邊欄、麵包屑、底部欄以及主體。

  安裝react-router的history,用於路由。

npm install --save history

  期間也會安裝各類依賴包,例如不支持在類中直接聲明屬性等。

  在使用的過程中,ESLint會不時的彈出各種錯誤和警告,期間就不停的修改問題或查找相關配置忽略部分限制。

  後台的側邊欄和麵包屑等部分,會隨着URL的不同而發生狀態變化,本來想用多頁實現,但配置要改很多,就依然做成一個SPA,只是稍微做了些改動。

  組件庫採用了流行的Ant Design,調用了按鈕、單選框、日期等組件。

npm install --save antd

  圖表庫使用的是ECharts,目前只用到了折線圖和餅圖。在引用圖表時,為了優化構建,採取了按需引用的手段。

npm install --save echarts

2)項目管理

  首先建立一個項目,然後才能分析該項目的性能和錯誤,如圖3所示。

圖3

  用彈框的形式來創建項目,使用了Ant Design的Model、Form等組件,如圖4所示。

圖4

3)性能分析

  在第一個折線圖標籤中的過濾條件包括項目、字段、日期等,性能指標按平均值呈現,可看到每個性能指標的趨勢,如圖5所示。

圖5

  按分時日統計性能平均數,在MongoDB中計算。原先創建日期是以時間戳的形式存儲的,為了便於使用Aggregate,改成字符串形式。碰到一個坑,MongoDB中的Date類型採用的是格林尼治時間,而不是當前時區的時間,也就是說存在數據庫中的時間會比當前時間早8小時。

  在第二個列表標籤中,可以詳細看到每條記錄的信息,包括代理、網絡等,便於在了解趨勢的前提下,獲悉更為細節的內容,如圖6所示。

圖6

  點擊ajax那一列,可彈出具體的異步請求信息,如圖7所示。

圖7

4)錯誤分析

  有三個標籤,第一個也是折線圖,描繪的是某個時間的錯誤個數;第二個是錯誤列表,會給出具體的錯誤信息,如圖8所示。

圖8

  第三個是餅圖,餅圖主要體現的是發生錯誤的瀏覽器分佈情況(如圖9所示),點擊某一塊可查看瀏覽器的具體版本(如圖10所示)。

圖9

圖10

 

 

【參考資料】
PerformanceTiming

unhandledrejection 處理沒有顯式捕獲的 Promise 異常

狼書(卷2)

Node-區分環境

Koa從零搭建到Api實現—項目部署

koa如何連接MongoDB

Koa2進階學習筆記

如何計算首屏加載時間 

Mongoose Schema Error: “Cast to string failed for value” when pushing object to empty array

Support for the experimental syntax ‘classProperties’ isn’t currently enabled

Template string failing with Cannot read property ‘range’ of null

Disallow JSX props spreading (react/jsx-props-no-spreading)

TypeError: Cannot read property ‘range’ of null from template-curly-spacing

echarts項目的優化

使用 happypack 提升 Webpack 項目構建速度

mac下的mongoDB的安裝和啟動

安裝MongoDB報錯 mkdir: /data/db: Read-only file system

$sum mongoose

 

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

【其他文章推薦】

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

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

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

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

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

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

巴西大沼澤10月火災 創1998年監測以來新高

摘錄自2020年10月30日中央社報導

巴西國家太空署(INPE)最新數據指出,10月中西部大沼澤再次創下自1998年太空署開始監測以來,當月起火點數目最多紀錄,10月1日至28日共記錄有2825個起火點。

根據巴西刑警和聯邦警察調查,跡象顯示中西部大沼澤的火災是人為過失引起,至少4處農牧場業主涉嫌蓄意放火,燒毀2萬5000公頃山林。

國家太空署指出,2020年1月至10月28日,大沼澤共記錄2萬1084個起火點,是大沼澤生物群系史上最嚴重的火災。大沼澤生物群系是世界上最大的淹水平原區,一旦不下雨,平原不會被淹沒,火勢容易擴散。大沼澤今年面臨47年來最嚴重乾旱,更有助於火勢蔓延。

除了大沼澤外,亞馬遜的火災數量今年也屢創歷史新高,1月至10月28日,亞馬遜生物群系共記錄9萬1873個起火點,此外,今年1月至9月在雨林累計的起火點也創下2010年以來新高。

根據聯邦政府本身的數據顯示,位於瑪瑙斯市和博阿維斯塔市兩市之間的羅賴諾波利斯(Rorainopolis),是今年亞馬遜地區發生最多森林火災的城市,如果加上鄰近兩個城市,累計燒毀面積超過2萬公頃。

氣候變遷
國際新聞
巴西
沼澤
森林大火

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

20多萬起步的SUV,最高優惠14萬!這3款車同級最有面

尺寸和容積還是X1處於領先地位。配置對比配置不是X1的強項,GLA在這方面的表現則要厚道一些,特別是偏駕駛層面的配置比兩位對手要好。動態數據對比換裝了UKL前驅平台的新X1雖然比老款損失了一定的操控樂趣,但其表現在同級中依舊可以稱得上數一數二,而且最大的改變就是終於懂得照顧乘客的感受,懸挂在擁有一定的操控路感下,兼顧了不錯的日常舒適性,特別是在遇到大的顛簸路面時,過濾時的從容感明顯要比老款進步不少。

奔馳、寶馬、奧迪,

這三個在群眾中認知度最高的豪華品牌,

相信是不少小夥伴們一直以來的奮鬥目標,

還記得年少時站在夢想前依依不舍的自己嗎?

不過呢,如今的BBA為了迎合市場需求,推出了不少相對親民的車型,讓各位小夥伴們離夢想更近一步;以下介紹的三款正是如此,最低二十多萬的售價不再高高在上,並且還都是當前火熱實用的SUV車型。

華晨寶馬-X1

全新換代的X1在三圍尺寸上相比老款有了十足的增長,也為了迎合國內消費者“喜大”的口味,國產車型進行了軸距加長,達到了2780mm,再配合變得更加飽滿寬厚的外觀設計,整體氣場得到了大幅度提升,即便在大哥X3、X5面前也毫不遜色。

北京奔馳-GLA

雖然被定位為SUV車型,但它的整體設計更像是一款底盤加高的兩廂跨界車,家族化的奔馳大標前臉凸顯動感與自信,車身線條簡潔流暢,高高上揚的車窗線也符合運動型車的設計特徵,而尾部設計則相對緊湊,尾燈是為數不多的亮點,且夜間的點亮效果也很不錯。

一汽奧迪-Q3

上市多年的Q3在外形上我們是非常熟悉了,路上的能見度也比較高,改款后的前六邊形格柵變得更加硬朗立體,這也是以後奧迪Q系列的設計特徵之一,側麵線條保持了奧迪一貫的平穩簡約,包圍式的尾門設計不僅好看,還能讓後備箱開口接近最大化,實用性很好。

車身尺寸對比

X1除了在寬度稍遜Q3外,其它尺寸數據全面超越對手。

內飾中控台對比

在這方面都有着各自濃濃的家族式設計風格,X1營造的豪華感是最強的、GLA內飾和外形契合,有着濃郁的運動氛圍、而Q3的內飾設計中規中矩,並沒有太多的亮點。

乘坐空間對比

空間是這代X1的亮點,得益於加長的軸距,後排的腿部空間非常寬裕,美中不足的是坐墊有些短,對大腿的承托不夠;GLA雖然軸距上比Q3長得多,不過在後排空間表現上明顯不如Q3。

天窗尺寸對比

X1繼續保持領先優勢,各項數據都超越對手;GLA採用了分體式天窗,在開揚感方面會稍遜一些。

後備箱尺寸對比

三者都支持座椅放倒,且平整度相當;尺寸和容積還是X1處於領先地位。

配置對比

配置不是X1的強項,GLA在這方面的表現則要厚道一些,特別是偏駕駛層面的配置比兩位對手要好。

動態數據對比

換裝了UKL前驅平台的新X1雖然比老款損失了一定的操控樂趣,但其表現在同級中依舊可以稱得上數一數二,而且最大的改變就是終於懂得照顧乘客的感受,懸挂在擁有一定的操控路感下,兼顧了不錯的日常舒適性,特別是在遇到大的顛簸路面時,過濾時的從容感明顯要比老款進步不少;

而小夥伴們最擔心的1.5T三缸發動機,其實放在X1上完全夠用,並且與6AT變速箱的配合默契,整體動力響應有着不錯的积極性,不過由於先天性的結構,發動機在低速時的抖動明顯。

GLA整體的駕駛風格類似於轎車,坐姿不算高,而且靈活輕快,底盤在舒適和運動之間拿捏到位,日常開雖然會給駕駛員一定的路面反饋,但又不至於太過影響乘坐舒適性,對坑窪路面的處理還算從容,質感也還不錯。

Q3則保持了奧迪一貫的輕鬆駕駛風格,方向盤偏輕,容易上手,並且沒有明顯的虛位,底盤的高速行駛表現紮實,在低速經過小顛簸路面時有着不錯的質感和乘坐舒適性,不過在通過較大的坑窪路面時,懸挂對振動的吸收並不算全面;1.4T的日常動力表現沒有問題,提速輕快,並與6速雙離合變速箱有着不錯的默契度,無論是起步還是超車都能給人不錯的信心。

優惠參考

新X1為了迎合市場需求,採用了UKL前驅平台換來了更好的空間實用性和日常乘坐舒適性;GLA的駕駛風格更接近於轎車,但又比轎車擁有更好的通過性,遺憾的是車內空間相對較小;Q3在空間、駕駛等方面更屬於它倆的折中表現。

如果是你將會如何選擇,歡迎在下方給留言喔!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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

協議生成器工具

前言

何為協議生成器?其實就是前後端同學在對協議的時候使用的工具,手動添加對應的內容,最後一鍵發布自己需要的任何與協議有關的內容。
有人會說,我直接寫proto文件用它的命令行也可以生成很多文件的。不過proto本身的能力,我工具都可以使用,因為本身工具就可以調用proto。下面開始介紹一下這款附帶源碼的工具
良心價格,買來不一定要用,但是你可以拿來學習這種思想;用什麼語言開並不重要,重要的還是思想;編程編的就是思想,就跟寫文章一樣。

介紹

  1. 文件功能
  2. 定義服務

    可能我門一款遊戲用到好幾個服務,比如登陸服務,大廳獲得道具服務,戰鬥服務。對於棋牌遊戲或者聯網對戰遊戲尤其如此。而這些服務器有的是長連接,有的是短鏈接,有的是proto格式,有的是json格式。在這個工具里都是可以設置的。

  3. 定義協議號

    我們用socket做遊戲的一般定義格式的時候都是協議號+數據長度+數據段。這個很正常,當然http也是可以這樣定義的。比如http://xxx.xxx.com:80/classname/functionname?xxx=cc&xx=xx
    ip+端口,這個跟socket是一樣的。端口之後和問號之前的就可以定義為協議號了,也就是資源路徑。這樣就可以長短鏈接使用同樣的處理方式。

  4. 定義模塊

    我個人喜歡將不同的功能分為不同的模塊。然後在模塊中定義消息。

  5. 定義消息格式

    比如這個商店模塊,在進入商店時需要給服務器發送獲取商品列表的消息。而服務器需要兩個字段。並設置了類型。而工具是支持註釋的,CNName就是了。有請求格式,自然也有返回格式,所以有GetProductInfoResult,並定義了返回的消息格式。

  6. 使用

    xxxHandler代表了一個請求處理。一個處理會有請求消息,響應消息。所以將剛才定義的兩個消息格式,設置到request和response中就可以了。

導出

xml目錄為項目配置文件,export為導出內容目錄

導出的文檔

導出proto的java類

使用lua腳本解析xml文件

結語

工具介紹就這些,希望對有需求的人提供一定的幫助。關鍵還是思想,結合我微店裡的網絡框架一起學習會更快速。
歡迎關注我的公眾號,獲取更多精彩內容。

歡迎掃碼關注公眾號《微笑遊戲》,瀏覽更多內容。

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

【其他文章推薦】

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

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

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

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

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

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

日本福島核事故:日本證實一名工人死於輻射

摘錄自2018年9月6日BBC中文網報導

日本首次公開證實,2011年福島核電站洩漏事故當中的一名工人,在事後因為核輻射而死亡。

該名50多歲的男子在2016年被診斷患有肺癌,他最終也是死於這種疾病。

日本政府此前曾經承認,福島核輻射導致四名工人患病,但這是日本第一次承認有人因此而死亡。

在聽取放射科專家及其他專業人士的意見之後,厚生勞動省認為該名工人的家屬應當獲得賠償。

雖然福島核災當時並沒有人直接死於核事故,但負責福島核設施運作的東京電力株式會社仍然面對多起賠償申訴。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

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