檢查硬碟完整性竟導致系統資料毀損,外媒發現 Windows 10 20H2 新問題_網頁設計

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

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

Windows 10 每次更新出現 Bug 已經不是什麼新聞,最近德國媒體 Planet 3D Now 就發現了一個很有問題的 Bug。這個問題一般人未必會用得到,但稍微懂一點電腦的人可能比較容易觸發。根據引發的狀況,無論如何都會出現 BSoD 藍色當機畫面,當機畫面顯示後會進入系統自動修復程序,但根據 Planet 3D Now 的報導,他們發現這個自動修復程序仍然無法解決這個狀況,並發現系統檔案在這個過程中已經毀損。而目前判斷僅有系統版號為 19042.685 的 Windows 10 系統將會出現這個問題,即便虛擬系統環境下,也能重現這個 Bug:

▲Windows 10 這次被自己內建的指令打敗了(圖片來源)

很多熟悉 Windows 系統的玩家多半知道一些終端機指令的實用操作,chkdsk 就是很多玩家熟悉的「檢查硬碟」指令。這個指令搭配一些參數後,可以檢測硬碟完整度,確認硬碟是否有嚴重的損壞或系統資料的毀損。這個指令相當歷史悠久,筆者至少記得在 DOS 系統能使用,而最新的 Windows 10 依然保有這個指令功能。不過這個堪稱骨灰級的指令,卻成為 Windows 10 20H2 的被發現的新問題來源之一。

一個更新竟讓專職檢查硬碟的指令成為當機兇手

根據外媒 Planet 3D Now 給出的結論,這個現象能在一般電腦與虛擬機器中發現,非常容易觸發。考慮到一般人未必會使用這個指令檢查硬碟,因此若非具備一定程度的電腦或 Windows 系統知識,未必會引發這個問題。根據 Planet 3D Now 與其他網友的測試後,發現只要在管理員權限下開啟終端機並輸入 chkdsk c: /f,就會立刻當機,並提示「NTFS FILE SYSTEM 錯誤」,嚴重的甚至會讓系統資料毀損:

▲國外網友很熱心的針對一整個教室的電腦實驗這個 Bug,發現通通無一例外的當機(圖片來源)

目前這個問題已經回報給 Microsoft,相信不久之後這個問題將能獲得解決。不過,一個小小的 chkdsk 指令竟然直接能讓 Windows 10 最新版本系統當機,這對微軟來說的確是個嚴重的形象問題。作為一個電腦編輯, chkdsk 指令雖然不見得天天使用,但至少知道這是個 Windows 內建的功能之一。如果內建功能都能讓系統出現嚴重的當機,那麼 Windows 10 20H2 系統在用戶心中的信賴度將會大幅下降。

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

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

另外,Planet 3D Now 根據網友們的反覆測試後提出一個新的發現,就是已經過安裝更新,使得系統版本號碼變更為 19042.685 的 Windows 10 20H2 系統肯定會出現這個狀況。但乾淨安裝的 Windows 10 20H2 並不會引發這個問題。從這個發現反推回微軟的更新時間表,可以發現 KB4592438 這個更新正好符合這些特徵。因此若已經安裝此更新的 Windows 10 20H2 系統有可能引發這個 Bug :

▲目前得知更新後成為特定版本的 Windows 10 將出現這個問題(圖片來源)

消息來源:PC Watch

您也許會喜歡:

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

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

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

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

其實 AirPods Max 閒置 5 分鐘就會進入 Smart Case 低耗電模式,還有個超低耗電模式等著呢_貨運

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

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

儘管 AirPods Max 已經是蘋果主動降噪無線耳機中續航最長,可達 20 小時連續聆聽時間的存在。然而,許多人似乎對於將這台美型耳機塞回具備 Smart Case 聰穎耳機套感到有些抗拒(?)。但仍會擔心假如無法藉由它啟動低耗電 AirPods Max 是否就會續航不足?好在,蘋果最近釋出了支援文件,分別提到了有無放在耳機套中,低功耗功能啟動的時機點。繼續閱讀其實 AirPods Max 閒置 5 分鐘就會進入 Smart Case 低耗電模式,還有個超低耗電模式等著呢報導內文。

【 AirPods Max 官網購買頁面 】


▲圖片來源:Apple

其實 AirPods Max 閒置 5 分鐘就會進入 Smart Case 低耗電模式,還有個超低耗電模式等著呢

▲圖片來源:Apple

雖然 AirPods Max 支援充電 5 分鐘即可獲得 1.5 小時聆聽時間的快充功能,不過無線耳機的重點想必就是「無線」這兩個字,所以大多數人應該都會希望在使用過程中盡量不需要插線使用吧!好在,這次的蘋果耳罩式主動降噪無線耳機 AirPods Max 支援最高 20 小時的聆聽時間,理論上來講應該能夠支援大多數人整天甚至多天的使用。

但很多人也會對於搭配聰穎耳機套來盡量省電的必要性有所疑問。現在,透過官方的說明文件,我們終於知道 AirPods Max「各種」低功耗模式的觸發時間點,在有無搭配聰穎耳機套的正確資訊。

▲圖片來源:Apple

簡單的講,AirPods Max 分為幾個「狀態」:

· 透過光感應確認耳機離開耳朵的暫停狀態,類似暫停。
· 靜置超過一定時間或收納到 Smart Case 聰穎耳機套內進入省電模式,類似待機。

上述兩者再維持更長時間後,則是會進入類似休眠的「超低耗電模式」。將會關閉藍牙與 Find My 尋機功能。

▲圖片來源:Apple

以上,其實大多數人關心的是耳機如果不搭配聰穎耳機套的話,是否就會一直處於暫停狀態造成續航損耗過多。而根據官方的說法,雖然想省電還是將 AirPods Max 放入聰穎耳機套最快,會立即啟動低耗電模式。不過其實這款耳機只要靜止閒置 5 分鐘的時間也就會進入放入聰穎耳機套的狀態。

沒錯,兩者就只差 5 分鐘而已。沒先前傳出的 18 小時那樣久。

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

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

至於更低功耗的 Ultra-low power 超低耗電模式則是需要再等 18 小時(Smart Case)/ 72 小時(靜置)才會啟動。

▲圖:說明文件提到,AirPods Max 耳機上也會有類似以往 AirPods 充電盒顯示有無低於 15% 電量的狀態燈號。

是說,除了超低耗電模式到底能讓 AirPods 續航延長到多少,該如何喚醒,還有包括「靜置(stationary)」的定義也蠻讓人好奇的 — 是代表儘管是塞在包包裡,只要有偵測到動態就會恢復一般的暫停狀態嗎?

假若如此,這應該代表 AirPods Max 放在固定場地使用的話,是不太需要塞回聰穎耳機套中。不過如果想保證通勤移動過程中攜帶時的低耗電狀態,最有效延長外出時的續航時間,也許原廠的耳機套(或類似功能的專用攜行盒)都還是要裝回比較好囉。

【 AirPods Max 官網購買頁面 】

本篇圖片 / 引用來源

延伸閱讀:

HomePod mini 開箱體驗:一顆就能敲開蘋果智慧家門,兩顆更是不嫌多

AirPods Max 過保電池維修價格公佈,這算… 便宜?

您也許會喜歡:

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

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

※回頭車貨運收費標準

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

圖解大頂堆的構建、排序過程_貨運

※回頭車貨運收費標準

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

這两天在複習大頂堆和小頂堆,比起兩年前的懵懵懂懂,這次理解起來就容易了一些。又翻看了一下自己之前的筆記數據結構與算法之PHP排序算法(堆排序),發現自己這次查閱資料,和之前的思路不太一樣,遂寫下這篇筆記,算是和以前的筆記做一個對照。

一、什麼是堆

堆是一種非線性結構,可以把堆看作一棵二叉樹,也可以看作一個數組,即:堆就是利用完全二叉樹的結構來維護的一維數組

堆可以分為大頂堆和小頂堆。
大頂堆:每個結點的值都大於或等於其左右孩子結點的值。
小頂堆:每個結點的值都小於或等於其左右孩子結點的值。

如果是排序,求升序用大頂堆,求降序用小頂堆。

一般我們說 topK 問題,就可以用大頂堆或小頂堆來實現,
最大的 K 個:小頂堆
最小的 K 個:大頂堆

二、大頂堆的構建過程

大頂堆的構建過程就是從最後一個非恭弘=叶 恭弘子結點開始從下往上調整。

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

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

最後一個非恭弘=叶 恭弘子節點怎麼找?這裏我們用數組表示待排序序列,則最後一個非恭弘=叶 恭弘子結點的位置是:數組長度/2-1。假如數組長度為9,則最後一個非恭弘=叶 恭弘子結點位置是 9/2-1=3。

比較當前結點的值和左子樹的值,如果當前節點小於左子樹的值,就交換當前節點和左子樹;
交換完后要檢查左子樹是否滿足大頂堆的性質,不滿足則重新調整子樹結構;

再比較當前結點的值和右子樹的值,如果當前節點小於右子樹的值,就交換當前節點和右子樹;
交換完后要檢查右子樹是否滿足大頂堆的性質,不滿足則重新調整子樹結構;

無需交換調整的時候,則大頂堆構建完成。

畫個圖理解下,以 [3, 7, 16, 10, 21, 23] 為例:

代碼如下:

<?php
/**
 * 構建大頂堆
 * 大頂堆的性質:每個結點的值都大於或等於其左右子結點的值。
 */
function buildBigHeap(&$arr, $len) {
    for ($i = floor($len/2) - 1; $i >= 0; $i--) {
        //根節點小於左子樹
        if (2 * $i + 1 < $len && $arr[$i] < $arr[2 * $i + 1]) {
            //交換根節點和左子樹的值
            swap($arr, $i, 2 * $i + 1);
            // $temp = $arr[$i];
            // $arr[$i] = $arr[2 * $i + 1];
            // $arr[2 * $i + 1] = $temp;
            //檢查左子樹是否滿足大頂堆的性質,如果不滿足,則重新調整
            if ((2 * (2 * $i + 1) + 1 < $len && $arr[2 * $i + 1] < $arr[2 * (2 * $i + 1) + 1])
            || (2 * (2 * $i + 1) + 2 < $len && $arr[2 * $i + 1] < $arr[2 * (2 * $i + 1) + 2])) {
                buildBigHeap($arr, $len);
            }
        }
        //根節點小於右子樹
        if (2 * $i + 2 < $len && $arr[$i] < $arr[2 * $i + 2]) {
            //交換根節點和右子樹的值
            swap($arr, $i, 2 * $i + 2);
            // $temp = $arr[$i];
            // $arr[$i] = $arr[2 * $i + 2];
            // $arr[2 * $i + 2] = $temp;
            //檢查右子樹是否滿足大頂堆的性質,如果不滿足,則重新調整
            if ((2 * (2 * $i + 2) + 1 < $len && $arr[2 * $i + 2] < $arr[2 * (2 * $i + 2) + 1])
            || (2 * (2 * $i + 2) + 2 < $len && $arr[2 * $i + 2] < $arr[2 * (2 * $i + 2) + 2])) {
                buildBigHeap($arr, $len);
            }
        }
    }
}

/**
 * 交換兩個值
 * m n 為數組的下標
 */
function swap(&$arr, $m, $n) {
    $temp = $arr[$m];
    $arr[$m] = $arr[$n];
    $arr[$n] = $temp;
}

三、大頂堆的排序過程

將待排序序列構造成一個大頂堆,此時,整個序列的最大值就是堆頂的根節點。將其與末尾元素進行交換,此時末尾就為最大值。然後將剩餘n-1個元素重新構造成一個堆,這樣會得到n個元素的次小值,如此反覆執行,便能得到一個有序序列了。

是不是對上面這一大段文字很頭疼?其實排序過程用下面 4 步就能概括:
第 1 步:先 n 個元素的無序序列,構建成大頂堆
第 2 步:將根節點與最後一個元素交換位置,(將最大元素”沉”到數組末端)
第 3 步:交換過後可能不再滿足大頂堆的條件,所以需要將剩下的 n-1 個元素重新構建成大頂堆
第 4 步:重複第 2 步、第 3 步直到整個數組排序完成。

/**
 * 交換交換根節點和數組末尾元素的值
 */
function adjustHeap(&$heap, $len) {
    $temp = $heap[0];
    $heap[0] = $heap[$len - 1];
    $heap[$len - 1] = $temp;
}
/**
 * 堆排序
 */
function heapSort(&$arr) {
    $len = count($arr);
    for ($i = $len; $i > 0; $i--) {
        buildBigHeap($arr, $i);
        adjustHeap($arr, $i);
    }
}

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

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

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

編程必備基礎之操作系統_網頁設計公司

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

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

操作系統概述

  操作系統是管理計算機硬件和軟件資源的計算機程序,管理配置內存、決定資源供需順序、控制輸入輸出設備等。操作系統提供讓用戶和系統交互的操作界面。操作系統的種類是多種多樣的,不局限於計算機,從手機到超級計算機,操作系統可簡單也可複雜,在不同的設備上,操作系統可向用戶呈現多種操作。因為我們不可能直接操作計算機硬件,而且設備種類繁多,需要一個統一的界面,因此有了操作系統,操作系統的簡易性使得更多人能使用計算機。常見的操作系統有:Windows、Linux、MacOS、Android等,總結一句話就是:操作系統是管理硬件、提供用戶交互的軟件系統。

  • 操作系統的基本功能
    • 操作系統統一管理着計算機資源。這些計算機資源包括處理器資源、存儲器資源、IO設備資源和文件資源等。
    • 操作系統實現了對計算機資源的抽象。即用戶無需面向硬件接口編程;IO設備管理軟件,提供獨寫接口;文件管理軟件,提供操作文件的接口。
    • 操作系統提供了用戶和計算機之間的接口。例如圖像窗口形式、命令行形式和系統調用形式等。
  • 操作系統的相關概念
    • 併發性:說到併發就不得不提一下并行性,并行性是指兩個或多個事件可以在同一時刻發生,而併發性是指兩個或多個事件可以在同一個時間間隔發生。
    • 共享性:多個程序可以同時使用主存資源,資源共享根據屬性分為互斥共享和同時訪問兩種形式
      • 互斥共享形式:當資源被程序A佔用時,其他想使用的話就只能等待,只有進程A使用完以後,其他進程才可以使用該資源。
      • 同時訪問形式:某種資源在一段時間內併發地被多個程序訪問,這種“同時”是宏觀的,從宏觀去看該資源可以被同時訪問
    • 虛擬性:虛擬性表現為把一個物理實體轉為若干個邏輯實體,物理實體是真實存在的,邏輯實體是虛擬的,虛擬的技術主要有時分復用技術和空分復用技術。
      • 時分復用技術:資源在時間上進行復用,不同程序進行併發使用,多道程序分時使用計算機的硬件資源,提高資源的利用率
        • 虛擬處理器技術:藉助多道程序設計技術,為每個程序建立進程,多個程序分時復用處理器
        • 虛擬設備技術:物理設備虛擬為多個邏輯設備,每個程序佔用一個邏輯設備,多個程序通過邏輯設備併發訪問
      • 空分復用技術:空分復用技術用來實現虛擬磁盤、虛擬內存等,提高資源利用率,提高編程效率
        • 虛擬磁盤技術:物理磁盤虛擬為邏輯磁盤,例如C、D、E等邏輯盤,使用起來更加安全方便
        • 虛擬內存技術:在邏輯上擴大程序的存儲容量,使用比實際內存更大的容量,大大提升編程效率
    • 異步性:在多道程序環境下,允許多個進程併發執行,進程在使用資源時可能需要等待和放棄,進程的執行並不是一氣呵成的,而是以走走停停的形式推進

進程管理

  為什麼需要進程呢?在沒有配置OS(操作系統)之前,資源屬於當前運行的程序,配置OS之後,引入多道程序設計的概念,可以合理的隔離資源、運行環境、提升資源利用率。進程是系統進行資源分配和調度的基本單位,進程作為程序獨立運行的的載體保障程序正常運行,進程的存在使得操作系統資源的利用率大幅提升。

進程管理之進程實體

主存中得進程形態

  • 標識符:標識符唯一標記一個進程,用戶區別其他進程,如進程id
  • 狀態:標記進程的進程狀態,如:運行態
  • 程序計數器:指向進程即將被執行的下一條指令的地址
  • 內存指針:程序代碼,進程數據相關指針
  • 上下文數據(重要):進程執行時處理存儲器的數據
  • IO狀態信息:被進程IO操作時所佔用的文件列表
  • 記賬信息:使用處理器時間、時鐘數總和等。

  由此可知,主存中的進程形態主要包括進程標識符,處理機狀態,進程調度信息,進程控制信息等。其中進程控制塊(PCB)是用於描述和控制進程運行的通用數據結構,記錄進程當前狀態和控制進程進行運行的全部信息,PCB使得進程成為能夠獨立運行的基本單位。PCB是操作系統進行調度經常會被讀取的信息,而且是常駐內存的,存放在系統專門開闢的PCB區域內。

進程與線程

  之前說過進程是操作系統進行資源分配和調度的基本單位,而線程是操作系統進行運行調度的最小單位,線程包含在進程之中,是進程中實際運行的工作單位,一個進程可以併發多個線程,每個線程執行不同任務。

   進程 線程
資源 資源分配的基本單位 不擁有資源
調度 獨立調度的基本單位 獨立調度最小單位
系統開銷 進程系統開銷大 線程系統開銷小
通信 進程IPC 讀寫同一進程數據通信

  一個進程可以有多個線程,一個進程中的線程共享資源,計算機對進程的調度,實際上是對進程中的線程進行調度

五狀態模型

  • 創建狀態:創建進程時擁有PCB但其它資源尚未就緒的狀態稱為創建狀態,操作系統提供fork函數接口創建進程。
  • 就緒狀態:當進程被分配到除CPU以外的所有必要資源后,只要再獲得CPU的使用權,就可以立即運行。其他資源都轉準備好、只差CPU資源的成為就緒狀態。
    • 在一個系統中處於就緒狀態的進程通常排成一個隊列,稱為就緒隊列。
  • 執行狀態:進程獲得CPU,其程序正在執行稱為執行狀態,再單處理機中,在某個時刻只能有一個進程是處於執行狀態。
  • 阻塞狀態:進程因某種原因如:其他設備未就緒而無法繼續執行,從而放棄CPU的狀態稱為阻塞狀態。
  • 終止狀態:程序執行完成。

進程同步

  為什麼需要進程間的同步呢?先讓我們來看一個經典的問題:生產者-消費者問題
生產者-消費者問題:有一群生產者進程在生產產品,並將這些產品提供給消費者進程進行消費,生產者進程和消費者進程可以併發執行,在兩者之間設置了一個具有n可緩衝區的緩衝池,生產者進程需要將所生產的產品放到一個緩衝區中,消費者進程可以從緩衝區取走產品消費

由上圖我們可以看出,單從生產者程序或消費者程序去看是沒問題的,但兩者併發執行時就可能會出現差錯。如下圖:

這裏的緩衝區就相當於臨界資源。
  再來看一個哲學家進餐問題:
有五個哲學家,他們的生活方式時是交替的進行思考和進餐,哲學家們共同使用一張圓桌子,分別坐在周圍的五張椅子上,在圓桌上有五個碗和五支筷子。平時哲學家們只進行思考,飢餓時則試圖取靠近他們的左、右兩隻筷子,只有兩支筷子都被他拿到的時候才能進餐,進餐完畢后,放下左右筷子繼續思考。

  出現上圖中的問題是什麼呢?其根源問題是:彼此之間沒有相互通信,如果“生產者通知消費者我已經完成了一件生產”,“哲學家向旁邊哲學家說我要進餐了”,就不會出現上圖中的問題了,也就是需要進程間的同步。

  什麼是進程同步呢?當對競爭資源在多個進程間進行使用次序的協調,使得併發執行的多個進程之間可以有效使用資源和相互合作。這裏的競爭資源也就是上圖中的臨界資源,什麼是臨界資源?臨界資源指的是一些雖作為共享資源,卻又無法同時被多個線程共同訪問的共享資源。當有進程在使用臨界資源時,其他進程必須依據操作系統的同步機制,等待佔用進程釋放該共享資源,才可以重新競爭使用共享資源。
進程同步的原則:

  • 空閑讓進:資源五佔用,允許使用
  • 忙則等待:資源有佔用,請求進程等待
  • 有限等待:保證有限等待時間能夠使用資源
  • 讓權等待:等待時,進程需要讓出CPU

  進程間同步的常用方法:如消息隊列,共享存儲,信號量。當多個線程併發使用進程資源時,進程內的多線程也需要,因為進程中的資源時進程中線程的共享資源。線程同步的方法有:互斥量、讀寫鎖、自旋鎖、條件變量等,這些方法是如何保證線程同步的呢?

  • 互斥量:由於多個線程的指令交叉執行,而互斥量可以保證先後執行,即保證原子性。什麼是原子性呢?原子性是指一系列操作不可被中斷的特性, 這一系列操作要麼全部執行完成,要麼全部沒有執行,不存在部分執行部分未執行的情況
    • 互斥量是最簡單的線程同步方法
    • 互斥量(互斥鎖),處於兩態之一的變量:解鎖和加鎖
    • 兩個狀態可以保證資源的串行
  • 自旋鎖:自旋鎖也是一種多線程同步的變量,使用自旋鎖的線程會反覆檢查鎖變量是否可用,自旋鎖不會讓出CPU,是一種忙等待狀態,即死循環等待鎖被釋放。
    • 自旋鎖避免了進程或線程上下文切換的開銷
    • 操作系統內部很多地方都是使用的自旋鎖
    • 自旋鎖不適合在單核CPU中使用
  • 讀寫鎖:這種鎖適用於臨界資源多讀少寫,讀取的時候並不會改變臨界資源的值。
    • 讀寫鎖是一種特殊的自旋鎖
    • 允許多個讀者同時訪問資源以提高讀的性能
    • 對寫的操作則是互斥的
  • 條件變量
    • 條件變量是一種相對複雜的同步方法
    • 條件變量允許線程睡眠,直到滿足某種條件
    • 當滿足條件時,可以向該線程發送信號,通知喚醒
同步方法 描述
互斥鎖 最簡單的一種線程同步方法,會阻塞線程
自旋鎖 避免切換的一種線程同步方法,屬於“忙等待”
讀寫鎖 為“讀多寫少”的資源設計的線程同步方法,可以顯著提高性能
條件變量 相對複雜的一種線程同步方法,有更靈活的使用場景

進程同步之共享內存
  在某種程度上,多進程是是共同使用物理內存的,由於操作系統的進程管理,進程間的內存空間是獨立的,進程默認是不能訪問進程空間之外的內存空間的

共享內存就可以打破這個限制,因為有這個共享內存,不同進程就可以通過頁表映射到同一個共享內存去,這個共享內存既可以被進程1使用,也可以被進程2使用。

  共享存儲允許不相關的進程訪問同一片物理內存,共享內存是兩個進程之間共享和傳遞數據的最快方式,共享內存未提供同步機制,需要藉助其他機制訪問。通過共享內存同步的過程就是:申請共享內存->連接到進程空間->使用共享內存->脫離進程空間並且刪除。共享內存是高性能後台開發中最常用的同步方式。
進程同步之Unix域套接字
  域套接字是一種高級的進程間通信的方法,Unix域套接字可以用於同一台機器進程間通信。其運行過程是創建套接字->綁定(bind)套接字->監聽(listen)套接字->接收&處理信息。域套接字提供了簡單可靠的進程通信同步服務,只能在單機使用,不能跨機器使用。

Linux的進程管理

Linux進程的相關概念:

進程類型:

  1. 前台進程:前台進程就是具有終端,可以和用戶交互的進程
  2. 後台進程:
    • 與前台進程相對,沒有佔用終端的就是後台進程
    • 後台進程基本上b不和用戶交互,優先級比前台進程低
    • 將需要執行的命令以“&”符號結束
  3. 守護進程(daemon):特殊的後台進程
    • 很多守護進程在系統引導的時候啟動,一直運行到系統關閉
    • Linux系統有很多典型的守護進程。例如:crond,sshd,httpd,mysqld等,進程名字以“d”結尾的一般都是守護進程。
      進程標記:
  • 進程ID
    • 進程ID是進程的唯一標記,每個進程擁有不同的ID
    • 進程ID表現為一個非負整數,最大值由操作系統限定
    • 操作系統提供fork()函數接口創建進程。例如進程A調用fork接口創建了進程B,進程B調用fork接口創建了進程C,那此時進程A和進程B就存在父子進程關係,進程A是父進程,進程B是子進程。進程的父子關係可以通過pstree命令查看。

ID為0的進程是idle進程,是系統創建的第一個進程,ID為1的進程init進程,是0號進程的子進程,完成系統初始化,Init進程是所有用戶進程的祖先進程。

  • 進程的狀態標記

Linux中進程的狀態如下:

狀態符號 狀態說明
R (TASK_RUNNING),進程正處於運行狀態
S (TASK_INTERRUPTIBLE),進程正處於睡眠狀態
D (TASK_UNINTERRUPTIBLE),進程正處於IO等待的睡眠狀態
T (TASK_STOPPED),進程正處於暫停狀態
Z (TASK_DEAD or EXIT_ZOMBIE),進程正處於退出狀態,或殭屍進程

操作Linux進程的相關命令

  • ps命令:ps命令常用於显示當前進程的狀態,ps命令常配合aux參數或ef參數和grep命令檢索特定進程
  • top命令
  • kill命令:kill命令發送指定信號給進程,kill-l可以查看操作系統所支持的系統

作業管理

作業管理之進程調度

  進程調度是指計算機通過決策,決定哪個就緒進程可以獲得CPU使用權。通俗來說就是保留舊進程的運行信息,請出舊進程(收拾包袱),選擇新進程,準備運行環境並分配CPU(新駐進)。那麼是如何進行進程的調度的呢?

  • 就緒隊列的排隊機制:將就緒進程按照一定的方式排成隊列,以便調度程序可以最快找到就緒進程。
  • 選擇運行進程的委派機制:調度程序以一定的策略選擇就緒進程,將CPU資源分配給它
  • 新老進程的上下文切換機制:保存當前進程的上下文信息,裝入被委派執行進程的運行上下文

  進程的調度方式分為搶佔式調度和非搶佔式調度。非搶佔式調度是指處理器一旦分配給某個進程,就讓該進程一直使用下去,調度程序不以任何原因搶佔正在被使用的處理器,直到進程完成工作,或因為IO阻塞才會讓出處理器;搶佔式調度是指允許調度程序以一定的策略,暫停當前運行的進程,保存好進程的上下文信息,分配處理器給新進程。

   搶佔式調度 非搶佔式調度
系統開銷 頻繁切換,開銷大 切換次數少,開銷小
公平性 相對公平 不公平
應用 通用系統 專用系統

進程調度算法

  • 先來先服務調度算法
  • 短進程優先調度算法:調度程序優先選擇就緒隊列中估計運行時間最短的進程;短進程優先調度算法不利於長作業進程的運行
  • 高優先權優先調度算法:進程附帶優先權,調度程序優先選擇權最高的進程,高優先權優先調度算法使得 緊迫的任務可以處理
  • 時間片輪轉調度算法:按先來先服務的原則排列就緒進程,每次從隊列頭部取出待執行進程,分配一個時間片執行;是相對公平的調度算法,但不能保證及時響應用戶

作業管理之死鎖

  死鎖是指兩個或兩個以上的進程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞現象,若無外力作用,他們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
死鎖的產生

  • 競爭資源:共享資源數量不滿足各個進程需求,各個進程 之間發生資源競爭導致死鎖,
  • 進程調度順序不當
    死鎖的四個必要條件:
  • 互斥條件:進程對資源的使用是排他性的使用,某資源只能由一個進程使用,其他進程需要使用只能等待
  • 請求保持條件:進程至少保持一個資源,又提出新的資源請求,新資源被佔用,請求被阻塞,被阻塞的進程不釋放自己保持的資源
  • 不可剝奪條件:進程獲得的資源在未完成使用前不能被剝奪,獲得的資源只能由進程自生釋放
  • 環路等待條件:發生死鎖時,必然存在進程-資源環形鏈
    死鎖的處理
  • 預防死鎖的方法
    • 摒棄請求保持條件:系統規定進程運行之前,一次性申請所有需要的資源,進程在運行期間不會提出資源的請求,從而摒棄請求保持條件
    • 摒棄步課剝奪條件:當進程請求一個新的資源得不到滿足時,必須釋放佔有的資源,當進程運行時佔有的資源可以被釋放,意味着可以被剝奪
    • 摒棄環路等待條件:可用資源線性排序,申請必須按照需要遞增申請,線性申請不在形成環路,從而摒棄了環路等待條件
  • 銀行家算法:銀行家算法是一個可操作得著名得避免死鎖得方法,以銀行借貸系統分配策略為基礎的算法。
    • 客戶申請的貸款是有限的,每次申請須聲明最大資金量
    • 銀行家在能夠滿足貸款時,都應該給用戶貸款
    • 客戶在使用貸款后,能夠及時歸還貸款。

根據還需要分配的資源表,對比可分配資源表,先給能夠滿足貸款的用戶,給用戶貸款,即圖中的P2,P2使用完資源后,需要及時歸還資源

存儲管理

  早期計算機編程並不需要過多的存儲管理,隨着計算機和程序越來越複雜,存儲管理成為必要。

  • 確保計算機有足夠的內存處理處理數據
  • 確保程序可以從可用內存中,獲取一部分內存使用
  • 確保程序可以歸還使用后的內存,已供其他程序使用

存儲管理之內存分配與回收

內存分配的過程

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

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

  • 單一連續分配:單一連續分配是最簡單的內存分配方式,只能在單一用戶、單進程的操作系統中使用
  • 固定分區分配:固定分區分配是支持多道程序的最簡單的存儲分配方式,內存空間被劃分成若干個固定大小的區域,每個分區只提供給一個用戶使用,互不干擾
  • 動態分區分配:根據進程實際需要,動態分配內存空間,相關數據結構、分配算法如下:
    • 動態分區空閑表數據結構:對空閑區進行標記,0表示空閑區,1表示已被使用
    • 動態分區空間鏈數據結構
    • 首次適應算法(FF算法):分配內存時從開始,順序查找適合內存區,若沒有合適的空閑區,則該次分配失敗;每次從頭部開始,使得頭部地址不斷被劃分
    • 最佳適應算法(BF算法):最佳適應算法要求空閑鏈表按照容量大小排序,遍歷空閑鏈表找到最佳合適的空閑區
    • 快速適應算法(QF算法):快速適應算法要求有多個空閑區鏈表,每個空閑區鏈表存儲一種容量的空閑區

內存回收的過程

  情況一:不需要新建空閑鏈表節點,只需要把空閑區1的容量增大為空閑區即可;情況二:將回收區與空閑區合併,新的空閑區使用回收區的地址;情況三:將空閑區1、空閑區2和回收區合併,新的空閑區使用空閑區1的地址;情況四:為回收區創建新的空閑節點,插入到相應的空閑區鏈表中去。

存儲管理之段頁式存儲管理

  由於每個進程都有自己獨立的進程空間,那操作系統是如何管理進程的空間呢?

  • 頁式存儲管理:
    • 將進程邏輯空間等分為若干大小的頁面
    • 相應的把物理內存空間分成與頁面大小的物理塊
    • 以頁面為單位把進程空間裝進物理內存中分散的物理塊

      頁表:頁表記錄了進程邏輯空間與物理空間的映射

現代計算機系統中,可以支持非常大的邏輯地址空間(\(2^{32}\)~\(2^{64}\)),這樣,頁表就變得非常大,要佔用非常大的內存空間,如具有32位邏輯地址空間的分頁系統,規定頁面大小為4KB,則在每個進程頁表中的頁表項可達1M(32位系統進程的尋址空間為4G,4G/4KB=1M)個,如果每個頁表項佔用1Byte,故每個進程僅僅頁表就要佔用1M的內存空間。

  • 段式存儲管理
    • 將進程邏輯空間劃分成若干段(非等分)
    • 段的長度由連續邏輯的長度決定
    • 主函數MAIN,子程序段X,系函數Y等

  段式存儲和頁式存儲都離散地管理了進程的邏輯空間。頁是物理單位,段是邏輯單位,分頁是為了合理利用空間,分段是為了滿足客戶需求;頁大小由硬件空間,段長度可動態變化;頁表信息是一維的,段表信息是二維的。

  • 段頁式存儲管理:由於分頁可以有效提高內存利用率(雖然說存在內存碎片),分段可以滿足用戶需求,我們可以將兩者結合,形成段頁式存儲管理。
    • 先將邏輯空間按段式管理分成若干段
    • 再把段內空間按頁式管理等分成若干頁

存儲管理之虛擬內存

  思考:一個遊戲十幾個G,物理內存只有4G,那這個遊戲是如何運行起來的呢?

  有些進程實際需要的內存很大,超過物理內存的容量,多道程序設計,使得每個進程可用物理內存更加稀缺,不可能無限增加物理內存,物理內存總有不夠的時候,這個時候就需要虛擬內存了。虛擬內存是操作系統內存管理的關鍵技術,使得多道程序運行和大程序運行成為現實,把程序使用內存劃分,將部分暫時不使用的內存放置在輔存。

程序的局部性原理:局部原理是指CPU訪問存儲器時,無論是存取指令還是存取數據,所訪問的存儲單元都趨於集中在一個較小的連續區域中。

  • 程序運行時,無需全部裝入內存,裝載部分即可
  • 如果訪問頁不在內存,則發出缺頁中斷,發起頁面置換
  • 從用戶層面看,程序擁有很大的空間,即是虛擬內存
  • 虛擬內存實際是對物理內存的補充,速度接近於內存,成本接近於輔存

虛擬內存的置換算法:和我在《計算機組成原理》這篇博客中的高速緩存的置換策略差不多,這裏就不詳細介紹了。

  • 先進先出算法(FIFO)
  • 最不經常使用算法(LFU)
  • 最近最少使用算法(LRU)

高速緩存的替換策略發生在Cache-主存層次,只要是為了解決速度問題;虛擬內存的替換策略發生在主存-輔存層次,主要是為了解決容量問題。

Linux的存儲管理

Buddy內存管理算法

  • Buddy算法是經典的內存管理算法
  • 算法基於計算機處理二進制的優勢具有極高的效率
  • 算法主要是為了解決內存外碎片的問題

頁內碎片:內部碎片是已經被分配出去(能明確指出屬於哪個進程)的內存空間大於請求所需的內存空間,不能被利用的內存空間就是內部碎片。
頁外碎片:外部碎片是指還沒有被分配出去(不屬於任何進程),但是由於大小而無法被分配給申請內存空間的新進程的內存空閑塊。
Buddy是夥伴的意思,這裏的”夥伴“指的是內存的”夥伴“,一片連續內存的”夥伴“是相鄰的另一片大小一樣的連續內存
Buddy內存管理算法執行過程:創建一系列空閑塊鏈表,每一種都是2的冪 –> 現在需要分配100kb內存 –> 回收剛才分配的內存

Linux的交換空間

  交換空間(Swap)是磁盤的一個分區,Linux物理內存滿時,會把一些內存交換至Swap空間,Swap空間是初始化系統時配置的。

冷啟動內存依賴:對於一些大型的應用程序,在啟動的過程中需要使用大量的內存,但是這些內存很大一部分只是在啟動的時候使用一下,在運行的時候很少使用到這部分內存,因此有了這個交換空間,系統就可以將這個部分不怎麼使用的內存數據保存在SWAP空間中,從而釋放跟多的物理內存,提供給這個系統使用。

系統睡眠依賴: 當Linux系統需要睡眠的時候,它就會把系統中的所有數據都保存在swap空間內,等下次這個系統需要啟動的時候,才把這些數據重新加載到內存中裏面,這樣就可以加快系統的啟動速度。

大進程空間依賴:有些進程確實需要使用大量的內存空間,但是物理內存不夠使用,因此需要把這些進程需要使用的內存暫時保存到交換空間中,使得這個大的進程也可以運行起來

Swap空間和虛擬內存的對比:

Swap空間 虛擬內存
存儲位置 Swap空間存在於磁盤 虛擬內存存在於磁盤
置換層次 Swap空間與主存發生置換 虛擬內存與主存發生置換
所屬概念 Swap空間是操作系統概念 虛擬內存是進程概念
解決的問題 Swap空間解決系統物理內存不足問題 虛擬內存解決進程物理內存不足的問題

操作系統的文件管理

文件的邏輯結構

  • 邏輯結構的文件類型
    • 有結構文件:例如文本文件、文檔、媒體文件等
      • 文件內容由定長記錄和可變記錄組成
      • 定長記錄存儲文件格式、文件描述等結構化數據項
      • 可變長記錄存儲文件具體內容等
    • 無結構文件:例如二進制文件、鏈接庫等
      • 也稱為流式文件,如exe文件、dll文件、so文件等
      • 文件內容長度以字節為單位
  • 順序文件
    • 順序文件是指按順序存放在存儲介質中的文件
    • 磁帶的存儲特性使得磁帶文件只能存儲順序文件
    • 順序文件是所有邏輯文件當中存儲效率最高的
  • 索引文件
    • 可變長文件不適合使用順序文件格式存儲
    • 索引文件是為解決可變長文件存儲而發明的一種文件格式
    • 索引文件需要配合索引表完成存儲的操作

輔存的存儲空間分配

  • 輔存的分配方式
    • 連續分配:順序讀取文件內容非常容易,速度很快,對存儲要求高,要求滿足容量的連續存儲空間
    • 鏈接分配:鏈接分配可以將文件存儲在離散的盤塊中,需要額外的存儲空間存儲文件的盤塊鏈接順序
      • 隱式鏈接:隱式分配的下一個鏈接指向存儲在當前盤塊內,隱式分配適合順序訪問,隨機訪問效率低,可靠性差,任何一個鏈接出問題都會影響整個文件
      • 显示鏈接:不支持高效的直接存儲(FAT記錄項多),檢索時FAT表佔用較大的存儲空間(需要將整個FAT表加載到內存)
    • 索引分配:把文件的所有盤塊集中存儲(索引),讀取某個文件時,將文件索引讀取進內存即可

      每個文件擁有一個索引塊,記錄所有盤塊信息,索引分配方式支持直接訪問盤塊,文件較大時,索引分配方式具有明顯優勢

  • 存儲空間管理
    • 空閑表:空閑盤區的分配與內存的分配相似,首次適應算法、循環適應算法等,回收過程也與內存回收類似
    • 空閑鏈表:空閑鏈表法把所有空閑盤區組成一個空閑鏈表,每個鏈表節點存儲空閑盤塊和空閑的數目
    • 位示圖:位示圖維護成本很低,可以非常容易找到空閑盤塊,位示圖使用0/1比特位,佔用空間小

目錄管理

  任何文件或目錄都只有唯一路徑。文件常見的描述信息有:文件標識符、文件類型、文件權限、文件物理地址、文件長度、文件連接計數、文件存取時間、索引節點編號、文件狀態、訪問計數、鏈接指針等。

Linux文件基本操作

Linux目錄

目錄 描述
/bin 存放二進制可執行文件(ls,cat,mkdir),常用的命令都在該目錄下
/etc 存放系統管理和配置文件
/home 存放所有用戶文件的根目錄,使用戶目錄的基點,比如用戶user的主目錄就是/home/user
/usr 用戶存放系統應用程序,比較重要的目錄/usr/local本地系統管理員軟件安裝目錄
/opt 額外安裝的可選應用程序包所放置的位置
/proc 虛擬文件系統目錄,是系統內存的映射,可直接訪問這個目錄來獲取系統信息
/root 系統管理員的主目錄
/sbin 存放二進制可執行文件,只有root才能當問
/dev 用於存放設備文件
/mnt 系統管理員安裝臨時文件系統的安裝點,系統提供這個目錄是讓用戶臨時掛載其他的文件系統
/boot 存放用於系統引導時使用的各種文件
/lib 存放跟文件系統種的程序運行所需要的共享庫及內核模塊
/var 用於存放運行時需要改變數據得文件

Linux文件常用操作

  創建文件:touch file 修改文件:vim file 查看文件:cat file 刪除文件:rm file 創建文件夾:mkdir dir 刪除文件夾:rm dir/ 該方式會提示,不能刪除文件夾 遞歸刪除文件夾:rm -r dir/ 進入文件后,通過ls -al 命令可以查看該文件的文件類型,即第一個字符

Linux文件類型

  Linux的文件類型有:套接字(s)、普通文件(-)、目錄文件(d)、符號鏈接(b、c)、設備文件、FIFO(p)

Linux文件系統

文件系統概覽

  • FAT(File Allocation Table):例如FAT16、FAT32等,微軟Dos/Windows使用的文件系統,使用一張表保存盤塊的消息
  • NTFS(New Technology File System):WindowsNT環境文件系統,NTFS對FAT進行了改進,取代了舊的文件系統
  • EXT(Extended file System):擴展文件系統,這個是Linux的文件系統,EXT2/3/4數字錶示第幾代。
    • Boot Selector:啟動扇區,安裝開機管理程序
    • Block Group:塊組,存儲數據的實際位置

EXT文件系統

  Inode Table是存放文件Inode的地方,每一個文件(目錄)都有一個Inode,是每一個文件(目錄)的索引節點。文件名不是存放在Inode節點上的,而是存放在目錄的Inode節點上,列出目錄文件的時候無需加載文件的Inode。Inode bitmap即Inode的位示圖,記錄已分配的Inode和未分配的Inode。Data block是存放文件內容的地方,每個block都有唯一的編號,文件的block記錄在文件的Inode上。Block bitmap功能與Inode bitmap類似,記錄Data block的使用情況。superblock是記錄整個文件系統相關信息的地方,包括block和Inode的使用情況,以及時間、控制信息等。

  命令 df -T:查看該系統所掛載的磁盤信息,查看文件系統的Inode信息:dumpe2fs 指定某個一設備,如 dumpe2fs /dev/sda2,使用超級管理員權限查看:sudo dumpe2fs /dev/sda2,查看文件的具體信息:stat dumpe2fs.log,文件重命名: mv dumpe2fs.log dumpe2fs.bak.log。Inode編號才是文件的唯一標記,文件名不是文件的唯一標記。

操作系統的設備管理

廣義的IO設備

  對CPU而言,凡是對CPU進行數據輸入的都是輸入設備;對CPU而言,凡是CPU進行數據輸出的都是輸出設備

  • 按使用特性分類
    • 存儲設備:U盤、內存、磁盤等
    • 交互IO設備:鍵盤、显示器、鼠標等
  • 按信息交換的單位分類
    • 塊設備:磁盤、SD卡
    • 字符設備:打印機、Shell終端
  • 按設備的共享屬性分類:獨佔設備、共享設備、虛擬設備
  • 按傳輸速率分類:底速設備、中速設備、高速設備

IO設備的緩衝區

  由於CPU與IO設備的速率不匹配,所以需要IO設備緩衝區,這樣可以減少CPU處理IO請求的頻率,提高CPU與IO設備之間的并行性。專用緩衝區只適用於特定的IO進程,當這樣的IO進程比較多時,對內存的消耗也很大,操作系統劃出可供多個進程使用的公共緩衝區,稱之為緩衝池。

SPOOLing技術

  SPOOLing技術是關於慢速字符設備如何與計算機主機交換信息的一種技術,利用高速共享設備將低速的獨享設備模擬為高速的共享設備。邏輯上,系統為每一個用戶都分配了一台獨立的高速共享設備。SPOOling技術把同步調用低速設備改為異步調用。SPOOLing技術在輸入、輸出之間增加了排隊轉儲環節(輸入井、輸出井),SPOOLing技術負責輸入(出)井與低速設備之間的調度,邏輯上,進程直接與高速設備交互,減少了進程的等待時間。

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

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

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

優質 NAS 快取選擇,全新 Seagate IronWolf 125 4TB SSD 開箱實測_包裝設計

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

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

Seagate的IronWolf系列,主要面向NAS專用的儲存設備,因為成本考量傳統都是使用 HDD 介面,不過今天我們要開箱的產品是Seagate IronWolf 125系列的4TB SSD,相比去年推出的IronWolf 110,這次全新的IronWolf 125其實可以分為 IronWolf 125 與 IronWolf Pro 125,其實主要就是將IronWolf 110系列的特色一分為二,IronWolf 125有著較低一點點的TBW(壽命)與MTBF(可靠性),而 IronWolf Pro 125 則是繼承了 IronWolf 110 的優點,並且在小檔讀取寫入(較快)以及供電上(只要5V即可驅動)有了改善,讓消費者有更多樣的選擇。

Seagate IronWolf 125 4TB SSD  開箱

IronWolf 125 4TB SSD 從外包裝上就有著霸氣的IronWolf圖案。

包裝上也採用了靜電袋包裝,相當用心。

撕開包裝後,可以看到正面有著大大的IronWolf LOGO。

而背面則是相關資訊,IronWolf 125與IronWolf 110最大的不同就在於供電的差異,IronWolf 125改回SSD的一般5V供電,使得在外接使用上會變得更為方便。

 

Seagate IronWolf 125 4TB SSD 效能測試

IronWolf 125 4TB SSD 屬於全新的IronWolf 125系列,從容量配置上來說,其實是更貼近硬碟的使用者,相比IronWolf 110與IronWolf Pro 125的最大容量3.84TB,IronWolf 125最大容量就是今天我們要測試的4TB版本,不過由於價格定位上的關係,一般大眾比較能接受的IronWolf 125 4TB SSD是有著5,600 TBW與1,800,000hr的MTBF,相比更高價格的IronWolf 125 Pro 3.84TB SSD則是有著7,000 TBW與2,000,000hr的MTBF。

首先可以看到,實際可使用的容量為3.63 TB。(換算格式不同)

IronWolf 125全系列的最大改動,為供電改為原本的5V即可驅動,因此可以直接透過外接硬碟盒驅動,在使用上就變得非常方便,尤其SATA SSD外接硬碟盒目前非常便宜的情況下,搭配一個超大容量的外接SSD就變得非常實用。

接著我們來實際測試傳輸速度,首先使用CrystalDiskMark進行讀寫測試,實際測試的讀寫速度分別為558.72 MB/s 與539.2 MB/s。

接著使用ATTO Disk Benchmark進行讀寫測試,最大的讀寫速度分別為559.7 MB/s 與540.4 MB/s。

因為是SSD,我們另外用了AS SSD Benchmark進行最後測試,其讀取寫入速度分別為523.98 MB/s 與508.28 MB/s,分數為1231。

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

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

而平常的傳輸檔案上,我們將檔案從桌面移動到SSD內,其實際的寫入速度初期會因為快取的關係跑到非常快,但穩定後速度為494 MB/s。

而反過來將檔案從SSD移到桌面上,則實際的讀取速度為501 MB/s。

 

原廠支援

除了擁有高水準的硬體表現外,Seagate IronWolf全系列還可以在相容的NAS上,啟動專屬的IronWolf Health Management (IHM) 保護機制,直接透過圖表監測NAS 每天的資料流量,掌握各種狀況,項目包含了:資料傳輸、效能、可讀性、可寫性、整體可靠性及其他相關的硬碟健康狀態參數(例如溫度、撞擊、振動、連線穩定度以及訊號完整性)並且針對資料保護提供了預防措施,在使用上更有保障。

除此之外 IronWolf 125 SSD 皆附有3年的Seagate Rescue資料救援服務,使用前須先至官網註冊,在救援計畫保固期限內,當硬碟發生損壞故障情形,資料無法讀取時,Seagate原廠提供免費的救援服務,盡其所能的為使用者救出硬碟內的資料,客戶滿意度高達 95%。

總結

IronWolf 125 SSD系列,除了同樣有著五年的保固外,SSD使用者更在意的TBW,更是有著超乎想像的水準,相比同樣用途的競品有著2~3倍的TBW,長期使用上不擔心,有著如此高TBW的優勢情況下,即使是拿來當作NAS的快取加速使用上,也不再擔心頻繁的寫入下造成的使用壽命縮短,放心的使用吧。

更大的容量 更安全的使用 全新Seagate IronWolf Pro NAS 18TB HDD 開箱

您也許會喜歡:

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

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

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

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

基於RBAC的權限控制淺析(結合Spring Security)_網頁設計公司

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

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

 

嗯,昨天面試讓講我的項目,讓我講講項目里權限控制那一塊的,講的很爛。所以整理一下。

按照面試官的提問流程來講:

一、RBAC是個啥東西了?

RBACRole-Based Access Control ),即基於角色的訪問控制模型,我的項目是基於RBAC0模型.由於之相對應的數據實體構成.由用戶表,角色映射表,角色表,權限表,權限映射表構成.

 

 

1 RBAC0模型圖

二、你可以講講權限控制大概執行流程嗎?

 用戶登錄之後首先進行身份驗證,成功之後獲取當前用戶的所有角色,之後根據角色加載對應的權限菜單,這裏默認不加載沒有權限的菜單,當存在直接輸入URL路徑的情況時,對於登錄用戶的每一個請求,都會通過鑒權處理,分析角色.最後通過權限的判斷分析是否可以訪問菜單資源.

在 spring Security,對用登錄的請先通過FilterInvocationSecurityMetadataSource的實現類獲取當前請求,分析需要的角色,該類的主要功能就是通過當前的請求地址,獲取該地址需要的用戶角色。

1、獲取當前訪問路徑的URL路徑

2、獲取所有資源URL,即所有的菜單URL路徑

3、當前的訪問URL和返回的每個URL基於Ant風格比較,如果相等,獲取當前訪問URL的所有角色。如果沒有相等的,定義資源為公告資源,並且給予一個公告資源的角色。

4、當為公共資源時,判斷用戶是否登錄。登錄放行。返回資源

5、當為角色資源時,登錄用戶的角色列表和該資源的角色列表進行比較,如果有相同角色,放行,返回資源

6、當即不是公共資源也沒有相匹配的角色的時候。拋異常,沒有權限

圖2 系統訪問控制流程圖

 代碼:

鑒權:

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

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

@Component
public class CustomFilterInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
    @Autowired
    MenuService menuService;
    //路徑比較工具
    AntPathMatcher antPathMatcher = new AntPathMatcher();
    Logger logger = Logger.getLogger("com.liruilong.hros.config.ustomFilterInvocationSecurityMetadataSource");
    /**
     * @return java.util.Collection<org.springframework.security.access.ConfigAttribute> * 返回值是 Collection<ConfigAttribute>,表示當前請求 URL 所需的角色。
     * @Author Liruilong
     * @Description 當前請求需要的角色,該方法的參數是一個 FilterInvocation, 開發者可以從 Filterlnvocation 中提取出當前請求的 URL,
     * @Date 18:13 2019/12/24
     * @Param [object]
     **/
    @Override
    public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
        //獲取當前請求路徑
        String requestUrl = ((FilterInvocation) object).getRequestUrl();
        logger.warning(requestUrl);
        //獲取所有的菜單url路徑
        List<Menu> menus = menuService.getAllMenusWithRole();
        // AntPathMatcher,主要用來實現 ant 風格的 URL 匹配。
         for (Menu menu : menus) {
            if (antPathMatcher.match(menu.getUrl(), requestUrl)) {
                //擁有當前菜單權限的角色
                List<Role> roles = menu.getRoles();
                String[] strings = new String[roles.size()];
                for (int i = 0; i < roles.size(); i++) {
                    strings[i] = roles.get(i).getName();
                }
                return SecurityConfig.createList(strings);
            }
        }
        // 沒匹配上的資源都是登錄,或者為公共資源
        return SecurityConfig.createList("ROLE_LOGIN");
    }

 

 @Override
    public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes)
            throws AccessDeniedException, InsufficientAuthenticationException {
        for (ConfigAttribute configAttribute : configAttributes) {
            String needRole = configAttribute.getAttribute();
            if ("ROLE_LOGIN".equals(needRole)) {
                if (authentication instanceof AnonymousAuthenticationToken) {
                    throw new AccessDeniedException("尚未登錄,請登錄!");
                } else {
                    return;
                }
            }
            Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
            for (GrantedAuthority authority : authorities) {
                if (authority.getAuthority().equals(needRole)) {
                    return;
                }
            }
        }
        throw new AccessDeniedException("權限不足,請聯繫管理員!");
    }

 

 

 

三、你可以把對應的SQL和表結構寫一下嗎?

 

加載所有的菜單資源;返回所有的菜單資源和對應的角色集合,Service端和訪問的URL的比較,存在判斷角色。(鑒權)


select m.*,r.`id` as rid,r.`name` as rname,r.`namezh` as rnamezh
from menu m,menu_role mr,role r
where m.`id`=mr.`mid` and mr.`rid`=r.`id` order by m.`id`
根據用戶ID返回當前用戶的全部菜單資源(授權)
   select m1.`id`,m1.url,m1.`path`,m1.`component`,m1.`iconCls`,m1.`name`,m1.`requireAuth`,m1.keepAlive,m1.enabled,
       m2.id as id2,m2.url as url2,m2.name as name2,m2.`component` as component2,m2.`iconCls` as iconCls2,m2.`keepAlive` as keepAlive2,m2.`path` as path2,m2.`requireAuth` as requireAuth2,m2.enabled as enabled2,m2.parentId as parentId2
       from menu m1,menu m2
       where m1.`id`=m2.`parentId` and m1.`id`!=1 and m2.`id`
       in(select mr.`mid` from hr_role h_r,menu_role mr where h_r.`rid`=mr.`rid` and h_r.`hrid`=#{hrId})
       and m2.`enabled`=true order by m1.`id`,m2.`id`

 

2 ERBAC數據實體關係圖

用戶登錄之後首先進行身份驗證,成功之後獲取當前用戶的所有角色,之後根據角色加載對應的權限菜單,這裏默認不加載沒有權限的菜單,當存在直接輸入URL路徑的情況時,對於登錄用戶的每一個請求,都會通過鑒權處理,分析角色.最後通過權限的判斷分析是否可以訪問菜單資源.

用戶表:

 

 角色表:

 

用戶角色映射表:

 

權資源表:

 

 

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

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

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

帥氣 寬敞 大氣!聽說大部分成熟男人都選了這幾輛座駕!_包裝設計

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

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

能給駕駛者提供更多的操控樂趣,但是也說不上運動型的底盤。如果忽略高轉速時比較轟耳的噪音,雅閣的舒適性是很不錯的。一汽馬自達-阿特茲指導價:17。58-23。98萬元阿特茲的顏值是一直都為車友們所稱道的,也承認,馬自達的魂動外觀的確是很有設計感,既有肌肉感的同時線條又十分流暢。



上世紀六七十年代,豐田乘着美國人的石油危機,憑藉其高可靠性,低油耗的汽車佔領了美國的汽車市場,奠定了豐田國際化的基礎。然而時至今日,日系車當中的佼佼者已經不止豐田一家。今天就和大家看看,在最能體現車企實力的B級車市場,“兩田一馬”,外加一個日產,其主力車型到底有什麼能耐。

指導價:18.48-32.98萬元

舊的凱美瑞會給人中庸,低調的感覺,難免會有“大叔車”的嫌疑。而新款的凱美瑞,採用了全新的家族式“Keen Look”前臉,六邊形的大嘴下格柵也讓車頭更加動感霸氣。側面的線條則比較簡潔流暢,變化不大,車尾造型依舊比較緊湊,橫穿左右的鍍鉻飾條是近來比較流行的元素,也讓車尾的整體感更強。

凱美瑞的內飾延續了以往車型的穩重大氣風格,採用人造皮革+縫線的工藝,內飾高級感更強。略遺憾的是中控大屏並沒有像其他主動和被動安全配置那樣都有全系標配。座椅厚實舒適的同時也保證一定的橫向支撐,舒適性不錯。

動力方面,搭載2.0L自然吸氣代號為6AR-FSE的發動機採用了D4-S雙模式噴射系統和VVT-iW新世代可變氣門正時技術,最大馬力167pS,6AT手自一體的變速箱集成了空擋控制系統、減擋補油控制系統和預緊差速器,動力平順性很好。實際駕駛感受起步動力是很靈敏的,雖然沒有很強的推背感,但也不會有“力不從心”的感覺,中後段的發力也有足夠的底氣。

凱美瑞的底盤是偏向舒適的設定,車內不會感受到十分直接的震動,同時轉向的助力比較沉穩,但轉向的靈敏度一般。總體來說如果你想要體驗操控樂趣的話,凱美瑞並不適合你,凱美瑞還是適合追求舒適、安靜的家用車用戶。

指導價:16.98-23.78萬元

本田也是很靈敏的廠商,它已經意識到現在購車群體的年輕化,所以就一改了以往雅閣那些濃濃的商務風,於是我們就看到呈現在我們眼前這個前臉造型立體,車身線條凌厲,有一雙科技感十足的LED大燈的新雅閣。當然,還有一些看不見的科技,如前置攝像頭和毫米波雷達,是Honda SENSING的基礎,該系統比較複雜,總的來說就是提供行駛安全輔助和保障。

和外觀不同,雅閣的內飾並沒有大改,對稱式的布局,線條十分流暢且有一點的高級感。不得不提是中控的雙屏設計了,兩個屏幕各司其職,用起來順手,看起來NB。但當你看了儀錶盤,你發現中央的行車電腦還是單色屏,也許是本田控製成本的手段,反正這個屏幕能显示必要信息足矣。

動力方面,2.0L/2.4L地球夢發動機,最大馬力155pS/186pS,搭配的CVT變速箱,都是本田的看見本領。和外觀的動感不同,雅閣的雖然油門響應靈敏,但動力的輸出卻不慌不忙,不會給你很激烈的加速感,

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

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

整個加速過程很平順。如果你打算購買雅閣,就不要想激烈駕駛了,好好享受那平順的CVT吧。

雅閣的採用多連桿獨立后懸挂,算是B級車標配了,底盤的質感很不錯,反應靈敏,處理震動的動作夠快,比凱美瑞的質感要硬。能給駕駛者提供更多的操控樂趣,但是也說不上運動型的底盤。如果忽略高轉速時比較轟耳的噪音,雅閣的舒適性是很不錯的。

指導價:17.58-23.98萬元

阿特茲的顏值是一直都為車友們所稱道的,也承認,馬自達的魂動外觀的確是很有設計感,既有肌肉感的同時線條又十分流暢。於是,2017款的阿特茲也延續了這種設計理念,大嘴格柵通過鍍鉻飾條與兩隻鷹眼大燈相連,感覺像一種很猛的動物,但是又說不出像什麼動物,大家發揮想象力吧。

內飾設計的改變也不少,全新樣式的方向盤和中控按鍵、懸浮式的中控屏,還有一些銀色飾條的加入,運動感更強,唯一不變的應該是變速箱擋把了。內飾採用軟質的皮革材料,也有縫線工藝,質感不錯。座椅的填充比較結實,不是很厚,支撐性和包裹性都比較好,也符合阿特茲偏向運動的風格。

2.0L/2.5L的Skyactiv發動機,最大馬力158/192pS,搭配換擋邏輯聰明,能夠幾乎讓你忘記它存在的6AT手自一體變速箱,組成這個好開有活力的動力系統。實際駕駛的感受是與歐系車類似的,油門初段比較沉重,後段較線性,動力輸出並不弱且提速很快,但又不會有渦輪增壓車那種激烈的推背感。

國產的阿特茲是針對了國內的情況進行了特殊的調校,前段偏軟,小坑小窪的過濾很到位,但仍保留一定的路感,後段的懸挂表現更加紮實,能為高速轉彎的阿特茲提供更好的支撐性。

指導價:17.58-29.98萬元

全新天籟的外觀加入了日產家族式的V-motion設計理念,V字型的中網鍍鉻飾條以及回力標的大燈造型,這些設計都是為了讓日產的外形更加年輕動感,減少了舊款日產圓潤成熟的氣息。至於新日產的外觀好不好看,那就是見仁見智的了。

至於中控的布局變化變化不大,仍然是簡潔商務風,方方正正的中控台造型給人穩重大氣的感覺,只是少了一點時尚感。觸控大屏的加入是新天籟的一個進化,多媒體功能得到了一些升級。至於座椅則一直是天籟的優點,寬大且柔軟,舒適性很好。

動力方面,新款天籟依舊搭載2.0L/2.5L+CVT變速箱的動力系統,最大馬力為150pS/186pS。實際的動力表現依舊是十分平順線性,沒有什麼爆發點。舊天籟的懸挂調校是很軟的,但新天籟在保證舒適性的基礎上給懸挂增加了一點韌性,配合彎道自動循跡系統,新天籟在轉彎時的側傾控制會比舊款天籟要好,但相對同級車型依然不算突出。

總結:

和德系車不同,日系車的動力少了一份直接;和美系車也不同,日系車少了一份力量感。乍一看彷彿沒有什麼優點,但是當你開在路上的時候你又不會發現動力不夠用,你也不會收到乘客投訴你後排的舒適性。這就是日系B級車,看似平庸,實際上這種中庸的均衡的表現,已經蘊含着不少技術的力量在裡頭。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

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

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

台灣之星推出網路限定「用多少付多少」升級版,享受 5G 高速網路就是這麼輕鬆_貨運

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

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

各家業者都在推 5G 行動網路,手機廠商也因應潮流陸續推出各種 5G 機型,5G 又快、又順真是非常誘人,只不過目前的 5G 資費價格還是偏高,且基站覆蓋率還須努力,要我立刻拋下 4G 轉身迎向 5G,皇上,臣妾真是做不到啊!好險世道還有公平正義,台灣之星從開台就主打「用到 5G 才付錢」的精神,將入手 5G 的門檻降到 399 元,每月有 20GB 上網量可以用;另外還有 4G 不限速吃到飽 799 起,5G 上網另外收費,最高只要加 200 元就可享 4G+5G 吃到飽,所以如果沒有用到 5G 訊號,就只要付 4G 吃到飽的錢就好。

這回台灣之星 So Sweet,特別為超想試試 5G 快感又步步驚心的你推出了「用多少,付多少」5G 版,讓你的每一分錢都用在刀口上,硬是把5G月租降到$0起,入主 5G 就是這麼輕鬆。

0 元起享受台灣之星 5G 飆速快感,立刻申辦點這裡

台灣之星推出網路限定「用多少付多少」升級版,享受 5G 高速網路就是這麼輕鬆

「4G 上網吃到飽」方案是許多人用以滿足生活、工作等網路需求的選擇,每個月只需繳交固定的金額就能滿足所需的無限網路流量,用起來心裡完全無負擔。雖說最新的高速 5G 網路相當吸引人,又很想試試,但是又不知道各家的訊號覆蓋怎麼樣,而目光所見所有的 5G 吃到飽方案低消都得要負擔制少 1399 元的高額月租,先不說這個金額對於一般人來說有多沉重,即便你每日出沒區域還是 4G 網路居多,用到 5G 的機會少之又少,還是免不了要繳交一樣的費用。對於薪水不漲、精打細算的現代人來說,這完全不符合經濟效益,難道要把血汗錢這麼揮霍?

0 元起享受台灣之星 5G 飆速快感,立刻申辦點這裡

台灣之星「用多少付多少」,5G 也可以輕鬆繳

好想用用時下最有話題的 5G 高速網路喔!可是月租拿~摸貴,訊號覆蓋又不夠普及,如果有平價 5G 那該有多好!
吃到飽餐廳裡明明都是付一樣的錢,卻可能因為食量小才吃一點點,對海鮮過敏只能吃肉,眼看著餐檯上滿滿的美食卻真得只能看而已,這根本不是真正的價格公道。噹啷!一向對電信資費方案最有創意的神燈精靈、正義使者 — 台灣之星將實現你的願望!在過去,台灣之星針對了輕量型 4G 行動上網用戶推出大受好評的「用多少付多少」方案,這次全新推出 5G 版「用多少付多少」。資費表先奉上:

◎設定費 300 元為單次費用,將在合約生效後的次月帳單中收取。

這個條件超優渥的資費方案可是【網路門市限定】,要怎麼辦理?必須符合哪些資格?

  • 新申裝與攜碼用戶皆可在網路門市申辦
  • 準備好身分證、第二證件(駕照或健保卡)就可申辦

0 元起享受台灣之星 5G 飆速快感,立刻申辦點這裡

台灣之星「用多少付多少」5G 版有什麼優勢?

為什麼筆者會如此推崇這回台灣之星的 5G 用多少付多少方案呢?先說說我的結論:夠厚道。怎麼說呢?筆者把台灣之星這項升級版方案的優勢與特色列了下來。

  • 4G 與 5G 分開計費,沒用到不用錢
    因為現在的 5G 基站還在進行中,除非你居住、工作與出沒地都在六都蛋黃區或是夠熱鬧的商圈,否則很多時候你用到的並不是 5G 網路,而是系統為了讓你能繼續上網而跳轉到 4G 網路。如果是其他電信業者的計費方式來看,不管你是用 4G 還是 5G 網路,通通得繳一樣的費用,就是一開始你所辦理,平均定價為 1,399 元的所謂「5G 吃到飽」(明明大多數時候可能吃的還是 4G)。台灣之星的計價方式清楚透明,將 4G 與 5G 用量分開計算,怎麼用就怎麼繳,有用到才收費,沒用到不坑錢,不敷衍、不含糊。
    舉例來說:
    這個月只有用到 4G,所用的網路計費就以資費表中的 4G 收費方式來算,每 GB 只要 30 元
    這個月只有用到 5G,所用的網路計費就以資費表中的 5G 收費方式來算,每 GB 只要 60 元
    兩個都有用到,那就看你用幾 GB 的 4G 網路、幾 GB 的 5G 網路,分開計算後再合計費用

    ※回頭車貨運收費標準

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

  • 設置計費天花板,不怕帳單爆天價
    以量計價的收費方式,很多人都會擔心是否在無聲無息之間用得太多使得下個月收到天價帳單而用得戰戰競競。台灣之星設置了收費天花板,4G 網路吃到飽最高收到 499 元,5G 網路最高收到 899 元,就算是有時 4G 有時 5G 的使用,最多也是只收到 899 元,有效幫你控制最高支出,讓你安心暢快飆網衝浪。
    舉例來說:
    5G 網路收費 60 元/GB,這個月用了 30GB;4G 網路收費 30 元/GB,這個月用了 20GB
    原本應該支付 60 元 x 30GB + 30 元 x 20GB = 2,400 元
    台灣之星優惠只需支付最高 899 元  為你省下 1,501 元

  • 帳單 0 元起,無低消限制
    最常看到的資費方案,就算你很少用到,還是要支付一筆最低消費,是說花錢買沒用到的東西再便宜都是浪費。台灣之星「用多少付多少」方案最大的特點(與優良傳統)就是終身 0 月租,如果這個月完全沒用到,你就完全不需要付費,讓你的每一分錢都發光發熱,不造成額外的浪費。
    舉例來說:
    我出國去玩個一個月,本月手機根本沒有用到,那我這個月就完全不需要繳錢。

0 元起享受台灣之星 5G 飆速快感,立刻申辦點這裡

沒用到,幹嘛繳?台灣之星「用多少付多少」收費最實在

筆者自己一直很猶豫到底要不要搶在首波加入 5G 的行列,但想想目前 5G 訊號覆蓋不如 4G 網路來得全面又穩定,看著各家業者動不動就上千元的 5G 吃到飽費率,我也產生了許多疑慮,因為居住地、出沒地的不同,似乎也很難確保真得能否暢享 5G 吃得飽,往往變成繳了 5G 吃到飽費用卻一直在用 4G。台灣之星「用多少付多少」升級版不僅有 4G,這回更把 5G 也納入其中,也就是說你用了多少 4G,用了多少 5G ,費用明明白白、清清楚楚,你沒有用到的就完全不需要付費,這點對於大眾來說是最實惠的計價方式。以實際用量為準,免除其他業者一刀切資費方案下可能白花的錢,最適合精打細算又對 5G 躍躍欲試的你。

 

您也許會喜歡:

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

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

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

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

Counterpoint公布2020第三季報告,聯發科逆襲成為最大手機晶片供應商_網頁設計公司

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

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

2020 年因為疫情的持續擴散,對各種產業來說都是個凜冬,然而還是有些企業在冷清的時局中創下不錯的成績,聯發科就是其中的一員。根據市場研究機構 Counterpoint 最新公布的 2020 年第三季報告中,更是顯示因為中階手機的蓬勃發展與在關鍵地區的市場持續增長,幫助聯發科逆襲高通,於第三季中登上最大智慧手機晶片供應商的寶座。

Counterpoint公布2020第三季報告,聯發科逆襲高通成為最大手機晶片供應商

在 2020 年第三季中,聯發科在 100 至 200 美元價位的手機間強勁增長,以及於至中國、印度等地區的增長,讓聯發科以 31% 的市場佔比成為最大的智慧手機晶片組供應商。於此同時,2020 年第三季最大的 5G 晶片供應商由高通穩坐,在全球市場的 5G 手機中擁有 39% 的佔比。5G 手機的需求量在 2020 年第三季翻了一倍,光是在這一季裡面售出的智慧型手機中有 17% 是 5G 手機,隨著 Apple 推出其 5G 產品線後,更是加速了 5G 手機的銷售。2020 年第四季度發貨的所有智慧型手機中,預計會有三分之一支援 5G,所以高通仍有可能於 2020 年第四季重新奪回榜首位置。

在對聯發科市場佔比增長的部分,分析師表示聯發科在 2020 年第三季市場佔比猛烈增長主要原因有三。首先是中階智慧型手機與新興市場的強勢表現相當亮眼,美國隊華為的禁令也使得最終讓 Samsung、小米、榮耀等 OEM 廠勝出。與去年同期相比,聯發科晶片在小米手機的佔比增長 3 倍以上,而聯發科也利用美國禁令的時機彌補了晶片需求缺口,使得由台積電製造、經濟實惠的聯發科晶片迅速成為許多 OEM 廠商填補空白的第一選擇。

從另一個方面來看,高通在 2020 年第三季裡面於高階領域與一年前相比也取得了強勁的市佔增長,這再次得益於 HiSilicon 的供應問題,然而高通在中階市場面臨著聯發科的競爭,顯然這一仗打得比較吃力。透過激進的訂價策略和主流 5G 晶片產品的推出,兩者之間激烈的兢爭在 2021 年還會繼續。

高通和聯發科都重新對各自的產品線重新洗牌,消費者對最新科技的關注在其中發揮了關鍵作用。去年,聯發科推出了一款以遊戲為主的曦力 G 系列晶片,而天璣系列晶片則將 5G 導向更經濟實惠的路線,全球最便宜的 5G 行動裝置 realme V3 就是由聯發科提供支援。分析師表示,晶片供應商的當務之急是將 5G 帶給大眾,從而釋放如雲端遊戲等消費者 5G 使用的潛力,進而提升對更高時脈 GPU 和更強大的處理器需求。

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

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

◎資料來源:Counterpoint

您也許會喜歡:

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

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

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

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

IDEA 插件推薦 —— 讓你寫出好代碼的神器!_包裝設計

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

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

概述

今天介紹的插件主要是圍繞編碼規範的。有追求的程序員,往往都有代碼潔癖,要盡量減少代碼的「壞味道」。

代碼靜態檢查是有很多種類,例如圈複雜度、重複率等。業界提供了很多靜態檢查的插件來識別這些不合規的代碼,幫助提高項目的質量。比較知名的一個產品是 SonarQube,它提供了一個「門禁」平台,集成了很多靜態檢查檢查。下次有機會介紹一下該平台的搭建。

本文主要介紹 IDEA 中對於 Java 語言靜態檢查的好插件:

  • Alibaba Java Coding Guidelines 阿里基於他們 Java 規範提供的插件
  • CheckStyle-IDEA 檢查代碼的格式是否符合規範
  • FindBugs-IDEA 檢查代碼是否有常見的一些 Bug

Alibaba Java Coding Guidelines

阿里巴巴 Java 編碼指南插件支持。

首先說說阿里的 p3c 項目,它的 Github 主頁地址是:https://github.com/alibaba/p3c 阿里之前開源過一份 Java 開發手冊。手冊從編程規約、異常日誌、單元測試、MySQL 數據庫、工程結構、設計規約等角度,介紹了阿里的 Java 開發規範,這個對於 Java 新手幫助挺大的,能夠學到不少東西。有一些坑可能老司機也會翻車。

開發人員 Coding 時,可能就忘記規範了,寫出來的代碼還是會有『壞味道』。這時候Alibaba Java Coding Guidelines 插件就派上用場了。它會根據上面的 Java 開發規範對你的代碼進行檢查,不符合規範的代碼會有提示,並給出修改建議。阿里作為國內 Java 大廠,基於成千上萬的工程師總結出來的踩坑經驗,我相信給出的規範建議還是比較可靠的。

上個栗子:

  String str = "hello";
  for (int i = 0; i < 100; i++) {
      str = str + "world!";
  }

先不要往下看,試着分析一下這段代碼哪裡可以優化?

其實,插鍵掃描的結果不僅有這個問題,還有『魔法数字』的問題。插件的用法,見下面的截圖。

除此以外,建議在 IDEA 進行代碼提交時,勾選上它提供的檢查項按鈕,這樣如果有不合規的代碼進行提交,就會提醒你修改:

CheckStyle-IDEA

項目主頁:https://github.com/jshiell/checkstyle-idea

安裝好之後,進入設置,勾選上你要選用的默認檢查規範:

大廠往往都有自己的語言規範,可以導入選用:

右鍵菜單,選擇 Check Current File 即可檢查當前文件是否符合編碼規範:

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

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

檢查結果:

如果不符合規範的寫法有點多,整改起來就會很痛苦了,這時候該怎麼辦?有一個功能叫格式化代碼(Reformat Code),快捷鍵是:

  • Mac:Command+Option+L
  • Win:Ctrl+Shift+L

如果想按照你指定的規則進行格式化,可以按照如下方式進行自定義:

FindBugs-IDEA

FindBugs 是一款老牌 Java 靜態檢查插件了。它的功能和阿里 p3c 那個插件很像,只不過它歷史悠久、國際化一點。它同樣的可以掃描代碼,發現一些可能會引入 Bug 的代碼段,給出參考建議。

啟動 FindBugs 的方式,右鍵菜單中,Findbugs 提供了好幾個選項:

  • Analyze Current File:檢查當前文件
  • Analyze Class uner Cursor:檢查光標處的類
  • Analyze Package Files:檢查包文件
  • Analyze Modul Files:檢查 Module 文件
  • Analyze Project Files:檢查項目文件
  • Analyze Scope Files:檢查指定範圍內的文件
  • Analyze All Modified Files:檢查所有修改過的文件
  • Analyze changelist files:檢查變更列表中的文件

檢查結果:

檢查結果分為如下類別:

  • Bad practice:不好的做法,代碼違反了公認的最佳實踐標準;
  • Malicious code vulnerbility:惡意的代碼漏洞;
  • Correctness:可能不正確,比如錯誤的強制類型轉換;
  • Performance:潛在的性能問題;
  • Security:安全性;
  • Dodgy code:糟糕的代碼,FindBugs團隊認為該類型下的問題代碼導 Bug 的可能性很高;
  • Experimental:實驗;
  • Multithreaded correctness:關注於同步和多線程問題;
  • Internationalization:國際化

掃描出來的結果怎麼看懂,官網有專門的一頁介紹 FindBugs Bug Description http://findbugs.sourceforge.net/bugDescriptions.html

除了上面右鍵菜單啟動檢查之外,還可以在相應文件夾右鍵菜單中啟動:

針對檢查的嚴格程度,其實是可以調節的,建議修改為 low,這樣會盡可能的掃描出有潛在 Bug 的代碼片段:

總結

以上是目前工作中經常用到的靜態代碼檢查插鍵,雖然不是用了它們就真的能寫出好代碼,但是這些工具的確能夠讓你能夠在前人的肩膀上少踩一些坑。比如阿里的那個檢查插鍵,你可以按照它的提示,對照着他們的 Java 開發手冊查看,分析一下,為何他們會有如此的規約。高樓大廈不都是一磚一瓦砌成的嘛?小知識點的基礎打紮實了,才能走得更高!

由於國內網絡問題,我提前將最新版的《阿里巴巴 Java 開發手冊(泰山版).pdf》上傳至雲盤了,有需要的小夥伴公眾號後台回復 泰山版 即可獲得下載鏈接。

一言

上周的寫的一篇文章分享到微信群里,群友有人指出來標題有錯別字,真是有點尷尬!其實,我寫文章也比較隨意,也是最近才開始堅持每周至少輸出一篇分享的。但想想既然寫了,就要盡量保證質量。引以為戒,以後要認真點才行!

目前分享的內容主要是開發環境、效率工具等。自己一直對這方面的文章比較感興趣,因此之前就有相關積累。今後希望能通過閱讀帶來一些讀書總結的分享,也希望關注的同學後台多留言,給出你的建議,感謝~

生命不息,折騰不止!關注 「Coder魔法院」,祝你 Niubilitiy !

參考

  • 代碼缺陷掃描神器——FindBugs:https://juejin.im/entry/591ad01ba22b9d005833903e

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

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

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