主頁 > 移動端開發 > 計算機組成原理

計算機組成原理

2020-11-08 12:07:37 移動端開發

目錄

    • 一、計算機組成原理
        • 1. 什么是計算機?
        • 2. 為什么要用計算機?
        • 3. 計算機的五大組成部分
        • 4. 作業系統概述
    • 二、CPU作業原理
      • CPU作業流程
      • CPU指令集
      • 啟動計算機

一、計算機組成原理

1. 什么是計算機?

俗稱電腦,即通電的大腦,電腦二字蘊含了人類對計算機的終極期望,希望它能真的像人腦一樣去作業,從而解放人力,

2. 為什么要用計算機?

世界是由聰明的懶人統治的,任何時期,總有一群聰明的懶人想要奴隸別人,在奴隸制社會,聰明的懶人奴役的是真正的人,而人是無法不吃、不喝、不睡覺一直作業的,但是計算機作為一臺機器是可以做到的,所以把計算機當奴隸是上上之選,


3. 計算機的五大組成部分

計算機有五大組成部分,既然計算機是人的奴隸,那么計算機設計核心肯定也是在模仿真正的人,所以我們完全可以把計算機的五大組件比喻成人類的各種器官

  • 控制器
    控制器是計算機的指揮系統,用來控制計算機其他組件的運行,相當于人類的大腦
  • 運算器
    運算器是計算機的運算功能,用來做算術運算和邏輯運算,相當于人腦,
    ps:控制器+運算器=CPU,cpu相當于人的大腦
  • 存盤器
    存盤器是計算機的記憶功能,用來存取資料,
    存盤器主要分為記憶體與外存:
    ? 記憶體相當于人的短期記憶,斷電資料丟失
    ? 外存(如磁盤),相當于記事的本子,斷電資料不會丟失,是用來永久保存資料的
    ? ps:記憶體的存取速度要遠遠高于外存
  • 輸入設備input
    輸入設備是計算接收外界輸入資料的工具,如鍵盤、滑鼠,相當于人的眼睛或耳朵,
  • 輸出設備output
    輸出設備是計算機向外輸出資料的工具,如顯示幕、列印機,相當于人說的話,寫出的文章,
    ps:存盤器如記憶體、磁盤等既是輸入設備又是輸出設備,統稱為IO設備
    一個非常重要的基礎知識:與運行程式相關的三大核心硬體
    我們撰寫的程式一定是要運行于計算機硬體之上,而站在硬體的角度,與運行程式有關的三大核心硬體為CPU、記憶體、硬碟,
    程式最先是存放于硬碟中的,程式的運行是先從硬碟把代碼加載到記憶體中,然后cpu是從記憶體中讀取指令運行,

4. 作業系統概述

  • 作業系統的由來
    ? 大前提:我們編程目的就是為了奴役計算機,讓計算機硬體自發地運行起來,然而硬體畢竟是”死的“,硬體的運行都是由軟體支配,倘若我們要開發一個應用程式,比如暴風音影,該軟體的一個核心業務就是播放視頻,開發者若要撰寫程式完成播放視頻這個業務邏輯,必先涉及到底層硬體硬碟的基本運作(視頻檔案都是先存放于硬碟中),這意味著開發者在撰寫業務邏輯代碼之前,必須先撰寫一個控制硬碟基本運行的控制程式,然而這僅僅只是一個開始,事實上,在撰寫應用程式的業務邏輯前,需要開發者撰寫出一套完整的控制程式用來控制所有硬體的基本運行(這要求開發者需要詳細了解計算機硬體的各種控制細節,例如我們必須把CPU里面所有指令集都掌握一遍),如此,所有的開發者在開發程式時都必須依次開發兩種:
    1、撰寫一套完整的的控制程式,用來控制硬體的基本運行,以及把復雜的硬體的操作封裝成簡單的介面
    2、基于控制程式的介面開發包含一系列業務邏輯的程式,為了與控制程式區分,可以稱為應用程式,以ATM這款應用程式為例,業務邏輯有提款、轉賬、查詢余額等
    ? 綜上,對于不同公司的開發者來說,應用程式的業務邏輯各不相同,但硬體的控制程式都大致相同,為了避免所有程式員做重復勞動,以及不用再耗費精力去了解所有硬體的運行細節,有公司專門跳出來承擔起控制程式的開發任務,這里所說的控制程式指的就是作業系統,
    ? 作業系統的功能就是幫我們把復雜的硬體的控制封裝成簡單的介面,對于開發應用程式來說只需要呼叫作業系統提供給我們的介面即可

  • 系統軟體與應用軟體
    硬體以上運行的都是軟體,而軟體分為兩類:

    1. 應用軟體(例如qq、word、暴風影音、酷我音樂、pycharm等)
    2. 作業系統,作業系統應用軟體與硬體之間的一個橋梁,是協調、管理、控制計算機硬體與應用軟體資源的控制程式,
  • 計算機系統三層結構
    綜上,我們開發應用程式本質是在控制硬體,但是我們直接打交道的是作業系統,應用程式都是通過作業系統來間接地操作硬體的,所以一套完整的計算機系統分為三層,如下
    在這里插入圖片描述

  • 平臺
    應用程式都是運行于作業系統之上,而作業系統則是運行于硬體之上的,所以承載應用程式的是一臺運行有作業系統的計算機,稱之為應用程式的運行平臺,即:硬體 + 作業系統 == 平臺
    在這里插入圖片描述
    常見的平臺有:windows系統+某款硬體、linux系統+某款硬體、ubuntu+某款硬體等,我們在開發應用程式時就需要考慮到應用程式的跨平臺性,如果能開發出一款可以在任意平臺運行的應用程式,那對于開發者來說真是極大的福音,而決定應用軟體的跨平臺性的關鍵因素往往是編程語言的選擇,python恰好是一款跨平臺性語言,這也是我們學習它的原因之一,


二、CPU作業原理

CPU作業流程

CPU的核心作業在于進行運算和判斷,那么要被運算與判斷的資料是從哪里來的?
CPU讀取的資料都是從主存盤器(記憶體)來的,主存盤器內的資料則是從輸入單元所傳輸進來!而CPU處理完畢的資料也必須先寫回主存盤器中,最后資料才從主存盤器傳輸到輸出單元,
所以計算機五大組成部分的基本作業流程就是:輸入單元=>主存盤器=>CPU=>主存盤器=>輸出單元
而CPU會從記憶體中取指令->解碼->執行,然后再取指->解碼->執行下一條指令,周而復始,直至整個程式被執行完成,
總結CPU的大致作業流程就是:獲取指令—>解碼—>執行,詳細見下圖
在這里插入圖片描述

CPU指令集

cpu是計算機的大腦,大腦里集成了一系列具體控制身體其他器官做事的指令集,所以站在純硬體角度去看,計算機所有其他組件都由cpu發出的指令控制,
我們程式員編程的目的是為了控制計算機硬體作業,程式員的代碼都會轉換成cpu的指令集才能去控制其他硬體,所以程式員是通過直接控制cpu來達到間接控制其他硬體的目的,具體流程如下:在這里插入圖片描述
記憶體中存放的是程式員的代碼/指令,cpu從記憶體中取出這些指令后需要翻譯成自己的指令去執行,即cpu在出場時內部就集成了一系列的指令集(指令集是cpu的靈魂),
? 在超大規模集成電路構成的微型計算機中,往往將CPU制成一塊具有特定功能的芯片,稱為微處理器,芯片里邊有撰寫好的微指令集,我們在主機上的所有操作或者說任何軟體的執行最終都要轉化成cpu的指令去執行,如輸入輸出,閱讀,視頻,上網等這些都要參考CPU是否內置有相關微指令集才行,如果沒有,那么CPU無法處理這些操作,
? 不同的CPU指令集不同對應的功能也不同,這就好比不同的人腦,對于大多數人類來說,人腦的結構一樣,但是大家的智商都有差別,
那么目前世界上的主流CPU由那些呢?我們筆記本上貼的Intel、AMD是怎么回事呢?

1、CPU的分類(了解)

我們已經知道CPU內部是含有微指令集的,我們所使用的的軟體都要經過CPU內部的微指令集來完成才行,這些指令集的設計主要又被分為兩種設計理念,這就是目前世界上常見到的兩種主要的CPU種類:分別是精簡指令集(RISC)與復雜指令集(CISC)系統,下面我們就來談談這兩種不同CPU種類的差異!

  • 精簡指令集(了解)
      精簡指令集(Reduced Instruction Set Computing,RISC):這種CPU的設計中,微指令集較為精簡,每個指令的運行時間都很短,完成的動作也很單純,指令的執行效能較佳;但是若要做復雜的事情,就要由多個指令來完成,常見的RISC指令集CPU主要例如Sun公司的SPARC系列、IBM公司的Power Architecture(包括PowerPC)系列、與ARM系列等,【注:Sun已經被Oracle收購;】
    SPARC架構的計算機常用于學術領域的大型作業站中,包括銀行金融體系的主服務器也都有這類的計算機架構;
    PowerPC架構的應用,如Sony出產的Play Station 3(PS3)使用的就是該架構的Cell處理器,
    ARM是世界上使用范圍最廣的CPU了,常用的各廠商的手機、PDA、導航系統、網路設備等,幾乎都用該架構的CPU,

  • 復雜指令集
      復雜指令集(Complex Instruction Set Computer,CISC)與RISC不同,在CISC的微指令集中,每個小指令可以執行一些較低階的硬體操作,指令數目多而且復雜,每條指令的長度并不相同,因此指令執行較為復雜所以每條指令花費的時間較長,但每條個別指令可以處理的作業較為豐富,常見的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架構的CPU,

  • 總結
    CPU按照指令集可以分為精簡指令集CPU和復雜指令集CPU兩種,區別在于前者的指令集精簡,每個指令的運行時間都很短,完成的動作也很單純,指令的執行效能較佳;但是若要做復雜的事情,就要由多個指令來完成,后者的指令集每個小指令可以執行一些較低階的硬體操作,指令數目多而且復雜,每條指令的長度并不相同,因為指令執行較為復雜所以每條指令花費的時間較長,但每條個別指令可以處理的作業較為豐富,

2、x86架構64位

  • x86架構
    x86是針對cpu的型號或者說架構的一種統稱,詳細地講,最早的那顆Intel發明出來的CPU代號稱為8086,后來在8086的基礎上又開發出了80285、80386…,因此這種架構的CPU就被統稱為x86架構了,
    由于AMD、Intel、VIA所開發出來的x86架構CPU被大量使用于個人計算機上面,因此,個人計算機常被稱為x86架構的計算機!
    程式員開發出的軟體最終都要翻譯成cpu的指令集才能運行,因此軟體的版本必須與cpu的架構契合,舉個例子,我們在MySQL官網下載軟體MySQL時名字為:
    Windows(x86,32-bit),ZIP Archive
    (mysql-5.7.20-win32.zip)
    我們發現名字中有x86,這其實就是告訴我們:該軟體應該運行在x86架構的計算機上,
  • 64位
    cpu的位數指的是cpu一次性能從記憶體中取出多少位二進制指令,64bit指的是一次性能從記憶體中取出64位二進制指令,
    在2003年以前由Intel所開發的x86架構CPU由8位升級到16、32位,后來AMD依此架構修改新一代的CPU為64位,到現在,個人計算機CPU通常都是x86_64的架構,
    cpu具有向下兼容性,指的是64位的cpu既可以運行64位的軟體,也可以運行32位的軟體,而32位的cpu只能運行32位的軟體,這其實很好理解,如果把cpu的位數當成是車道的寬,而記憶體中軟體的指令當做是待通行的車輛,寬64的車道每次肯定既可以通行64輛車,也可以通信32輛車,而寬32的車道每次卻只能通行32輛車

3、CPU歷史(了解)
  微處理器由一片或少數幾片大規模集成電路組成的中央處理器,這些電路執行控制部件和算術邏輯部件的功能,微處理器能完成取指令、執行指令,以及與外界存盤器和邏輯部件交換資訊等操作,是微型計算機的運算控制部分,它可與存盤器和外圍電路芯片組成微型計算機,
計算機的發展主要表現在其核心部件——微處理器的發展上,每當一款新型的微處理器出現時,就會帶動計算機系統的其他部件的相應發展,如計算機體系結構的進一步優化,存盤器存取容量的不斷增大、存取速度的不斷提高,外圍設備的不斷改進以及新設備的不斷出現等,根據微處理器的字長和功能,可將其發展劃分為以下幾個階段,
第1階段(1971——1973年)是4位和8位低檔微處理器時代,通常稱為第1代,
第2階段(1974——1977年)是8位中高檔微處理器時代,通常稱為第2代,
第3階段(1978——1984年)是16位微處理器時代,通常稱為第3代,
第4階段(1985——1992年)是32位微處理器時代,又稱為第4代,
第5階段(1993-2005年)是奔騰(pentium)系列微處理器時代,通常稱為第5代,
第6階段(2005年至今)是酷睿(core)系列微處理器時代,通常稱為第6代,“酷睿”是一款領先節能的新型微架構,設計的出發點是提供卓然出眾的性能和能效,提高每瓦特性能,也就是所謂的能效比,

4、 運算器與控制器(了解)

常將運算器和控制器合稱為中央處理器(Central Processing Unit,CPU),
其中運算器用來主要負責程式運算與邏輯判斷,控制器則主要協調各組件和各單元的作業,所以CPU的作業主要在于管理和運算,可以說計算機的大腦就是CPU

  1. 運算器
    運算器是對資訊進行處理和運算的部件,經常進行的運算是算術運算和邏輯運算,所以運算器又可稱為算術邏輯運算部件(Arithmetic and Logical,ALU),
    運算器的核心是加法器,運算器中還有若干個通用暫存器或累加暫存器,用來暫存運算元并存放運算結果,暫存器的存取速度比存盤器的存放速度快很多,

  2. 控制器
    控制器是整個計算機的指揮中心,它的主要功能是按照人們預先確定的操作步驟,控制整個計算機的各部件有條不紊的自動作業,
    控制器從主存中逐條地讀取出指令進行分析,根據指令的不同來安排操作順序,向各部件發出相應的操作信號,控制它們執行指令所規定的任務,控制器中包括一些專用的暫存器,

5、cpu作業的兩種狀態內核態與用戶態

內核態:運行的程式是作業系統,可以操作計算機硬體
用戶態:運行的程式是應用程式,不可以直接操作計算機硬體
應用程式的運行必然涉及到計算機硬體的操作,所以計算機在作業時候頻繁發生內核態與用戶態的切換

6、多執行緒和多核芯片

moore定律指出,芯片中的晶體管數量每18個月翻一倍,隨著晶體管數量的增多,更強大的功能成為了可能,如

第一步增強:在cpu芯片中加入更大的快取,一級快取L1,用和cpu相同的材質制成,cpu訪問它沒有時延

第二步增強:一個cpu中的處理邏輯增多,intel公司首次提出,稱為多執行緒(multithreading)或超執行緒(hyperthreading),對用戶來說一個有兩個執行緒的cpu就相當于兩個cpu,我們后面要學習的行程和執行緒的知識就起源于這里,行程是資源單位而執行緒才是cpu的執行單位,
多執行緒運行cpu保持兩個不同的執行緒狀態,可以在納秒級的時間內來回切換,速度快到你看到的結果是并發的,偽并行的,然而多執行緒不提供真正的并行處理,一個cpu同一時刻只能處理一個行程(一個行程中至少一個執行緒)

第三步增強:除了多執行緒,還出現了包含2個或者4個完整處理器的cpu芯片,如下圖,要使用這類多核芯片肯定需要有多處理作業系統
在這里插入圖片描述

在這里插入圖片描述


7、 存盤器
在這里插入圖片描述

  • 暫存器即L1快取:
    用與cpu相同材質制造,與cpu一樣快,因而cpu訪問它無時延,典型容量是:在32位cpu中為3232,在64位cpu中為6464,在兩種情況下容量均<1KB,

  • 高速快取即L2快取:
    主要由硬體控制高速快取的存取,記憶體中有高速快取行按照064位元組為行0,64127為行1,,,最常用的高速快取行放置在cpu內部或者非常接近cpu的高速快取中,當某個程式需要讀一個存盤字時,高速快取硬體檢查所需要的高速快取行是否在高速快取中,如果是,則稱為高速快取命中,快取滿足了請求,就不需要通過總線把訪問請求送往主存(記憶體),這畢竟是慢的,高速快取的命中通常需要兩個時鐘周期,高速快取為命中,就必須訪問記憶體,這需要付出大量的時間代價,由于高速快取價格昂貴,所以其大小有限,有些機器具有兩級甚至三級高速快取,每一級高速快取比前一級慢但是容易大,

快取在計算機科學的許多領域中起著重要的作用,并不僅僅只是RAM(隨機存取存盤器)的快取行,只要存在大量的資源可以劃分為小的部分,那么這些資源中的某些部分肯定會比其他部分更頻發地得到使用,此時用快取可以帶來性能上的提升,一個典型的例子就是作業系統一直在使用快取,比如,多數作業系統在記憶體中保留頻繁使用的檔案(的一部分),以避免從磁盤中重復地呼叫這些檔案,類似的/root/a/b/c/d/e/f/a.txt的長路徑名轉換成該檔案所在的磁盤地址的結果然后放入快取,可以避免重復尋找地址,還有一個web頁面的url地址轉換為網路地址(IP)地址后,這個轉換結果也可以快取起來供將來使用,

快取是一個好方法,在現代cpu中設計了兩個快取,再看4.1中的兩種cpu設計圖,第一級快取稱為L1總是在CPU中,通常用來將已經解碼的指令調入cpu的執行引擎,對那些頻繁使用的資料自,多少芯片還會按照第二L1快取 ,,,另外往往設計有二級快取L2,用來存放近來經常使用的記憶體字,L1與L2的差別在于對cpu對L1的訪問無時間延遲,而對L2的訪問則有1-2個時鐘周期(即1-2ns)的延遲,

記憶體:
RAM: 主存通常稱為隨機訪問存盤RAM,就是我們通常所說的記憶體,容量一直在不斷攀升,所有不能再高速快取中找到的,都會到主存中找,主存是易失性存盤,斷電后資料全部消失
ROM: 除了主存RAM之外,許多計算機已經在使用少量的非易失性隨機訪問存盤如ROM(Read Only Memory,ROM),在電源切斷之后,非易失性存盤的內容并不會丟失,ROM只讀存盤器在工廠中就被編程完畢,然后再也不能修改,ROM速度快且便宜,在有些計算機中,用于啟動計算機的引導加載模塊就存放在ROM中,另外一些I/O卡也采用ROM處理底層設備的控制,

EEPROM(Electrically Erasable PROM,電可擦除可編程ROM)和閃存(flash memory)也是非易失性的,但是與ROM相反,他們可以擦除和重寫,不過重寫時花費的時間比寫入RAM要多,在便攜式電子設備中中,閃存通常作為存盤媒介,閃存是數碼相機中的膠卷,是便攜式音譯播放器的磁盤,還應用于固態硬碟,閃存在速度上介于RAM和磁盤之間,但與磁盤不同的是,閃存擦除的次數過多,就被磨損了,

CMOS: 還有一類存盤器就是CMOS,它是易失性的,許多計算機利用CMOS存盤器來保持當前時間和日期,CMOS存盤器和遞增時間的電路由一小塊電池驅動,所以,即使計算機沒有加電,時間也仍然可以正確地更新,除此之外CMOS還可以保存配置的引數,比如,哪一個是啟動磁盤等,之所以采用CMOS是因為它耗電非常少,一塊工廠原裝電池往往能使用若干年,但是當電池失效時,相關的配置和時間等都將丟失

# TB,PB, Eb, Zb, YB
1B= 8bit
1KB=2(10)B=1024B; 括號中的數字為2的指數(即多少次方) 
1MB=2(10)KB=1024KB=2(20)B; 
1GB=2(10)MB=1024MB=2(30)B, 
1TB=2(10) GB=1024GB=2(40)B 
1PB=2(10) TB=1024TB=2(50)B 
1EB=2(10) PB=1024PB=2(60)B 
1ZB=2(10) EB=1024EB=2(70)B 
1YB=2(10) ZB=1024ZB=2(80)B 

1Byte相當於一個英文字母
Kilobyte(KB)=1024B相當於一則短篇故事的內容, 
Megabyte(MB)=l024KB相當於一則短篇小說的文字內容, 
Gigabyte(GB)=1024MB相當於貝多芬第五樂章交響曲的樂譜內容, 
Terabyte(TB)=1024GB相當於一家大型醫院中所有的X光圖片資訊量, 
Petabyte(PB)=l024TB相當於50%的全美學術研究圖書館藏書資訊內容, 
Exabyte (EB)=1024PB;5EB相當於至今全世界人類所講過的話語, 
Zettabyte(ZB)=1024EB如同全世界海灘上的沙子數量總和, 
Yottabyte(YB)=1024ZB相當於7000位人類體內的微細胞總和,

8、虛擬記憶體:
許多計算機支持虛擬記憶體機制,該機制使計算機可以運行大于物理記憶體的程式,方法是將正在使用的程式放入記憶體取執行,而暫時不需要執行的程式放到磁盤的某塊地方,這塊地方成為虛擬記憶體,在linux中成為swap,這種機制的核心在于快速地映射記憶體地址,由cpu中的一個部件負責,成為存盤器管理單元(Memory Management Unit MMU)

PS:從一個程式切換到另外一個程式,成為背景關系切換(context switch),快取和MMU的出現提升了系統的性能,尤其是背景關系切換


啟動計算機

在計算機的主板上有一個基本的輸入輸出程式(Basic Input Output system)
BIOS就相當于一個小的作業系統,它有底層的I/O軟體,包括讀鍵盤,寫螢屏,進行磁盤I/O,該程式存放于一非易失性閃存RAM中,

啟動流程:

1.計算機加電

2.BIOS開始運行,檢測硬體:cpu、記憶體、硬碟等

3.BIOS讀取CMOS存盤器中的引數,選擇啟動設備

4.從啟動設備上讀取第一個扇區的內容(MBR主引導記錄512位元組,前446為引導資訊,后64為磁區資訊,最后兩個為標志位)

5.根據磁區資訊讀入bootloader啟動裝載模塊,啟動作業系統

6.然后作業系統詢問BIOS,以獲得配置資訊,對于每種設備,系統會檢查其設備驅動程式是否存在,如果沒有,系統則會要求用戶按照設備驅動程式,一旦有了全部的設備驅動程式,作業系統就將它們調入內核,然后初始有關的表格(如行程表),穿件需要的行程,并在每個終端上啟動登錄程式或GUI

linux系統centos7啟動順序:https://www.cnblogs.com/linhaifeng/articles/13274099.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/206549.html

標籤:其他

上一篇:資料結構C語言嚴蔚敏版(第二版)超詳細筆記附帶課后習題

下一篇:華為 組播理論知識

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more