JS技術分享

文件碎片是由於文件被分散保存到整個磁盤的不一樣地方,而不是連續地保存在磁盤連續的簇中造成的。[1]javascript

中文名css

文件碎片html

外文名html5

File fragmentationsjava

隸屬chrome

文件系統數據庫

定義 聽語音瀏覽器

磁盤上的文件和文件夾一般佔用磁盤的多個簇,而且每一個簇大多分散在磁盤上,這些分散的簇稱爲文件碎片。磁盤上的文件碎片越多,系統讀取和新建文件的速度越慢。[2]緩存

當應用程序所需的物理內存不足時,通常操做系統會在硬盤中產生臨時交換文件,用該文件所佔用的硬盤空間虛擬成內存。虛擬內存管理程序會對硬盤頻繁讀寫,產生大量的碎片,這是產生硬盤碎片的主要緣由。微信

其餘如IE瀏覽器瀏覽信息時生成的臨時文件或臨時文件目錄的設置也會形成系統中造成大量的碎片。文件碎片通常不會在系統中引發問題,但文件碎片過多會使系統在讀文件的時候來回尋找,引發系統性能降低,嚴重的還要縮短硬盤壽命。另外,過多的文件碎片還有可能致使存儲文件的丟失。

文件碎片 聽語音

產生

(1)在文件操做過程當中,Windows系統可能會調用虛擬內存來同步管理程序,這樣就會致使各個程序對硬盤頻繁讀寫,從而產生文件碎片。

(2)還有一種狀況就是當中間的一個扇區內容被刪除後,新寫入一個較小的文件,這樣在這個文件兩邊就會出現一些空間,這時候再寫入一個文件,兩段空間的任意一部分都不能容納該文件,這時候就須要將文件分割成兩個部分,碎片再次產生了。

(3)最多見的就是下載電影之類的大文件,這期間你們通常都會處理一下其它事情,而下載下來的電影文件被迫分割成若干個碎片存儲於硬盤中。所以下載是產生碎片的一個重要源頭。還有就是常常刪除、添加文件,這時候若是文件空間不夠大,就會產生大量的文件碎片,隨着文件的刪改頻繁,這種狀況會日益嚴重。

影響

雖說文件碎片對於正常工做影響並不大,可是會顯著下降硬盤的運行速度,這主要是硬盤讀取文件須要在多個碎片之間跳轉,增長了等待盤片旋轉到指定扇區的潛伏期和磁頭切換磁道所需的尋道時間。[1]

磁盤讀寫操做的原理 聽語音

知道了文件碎片的產生緣由以後,咱們還有必要了解一下程序運行時磁盤的讀寫動做。通常運行一個程序時,磁盤驅動器的磁頭所作的工做是先搜索該程序運行必需的文件,而後讀取數據,最後作讀後處理——將數據傳送至磁盤高速緩存(Cache)和內存中。搜索時間在硬盤性能指標中被稱爲平均尋道時間(Average seek time),單位爲毫秒(ms),當下主流硬盤的平均尋道時間小於9.5ms。若是能將應用程序的相關文件放在磁盤的連續空間內,磁頭搜索的時間將會減小不少。讀取時也是如此,磁盤讀取位於磁頭下方扇區的數據所需時間僅爲將磁頭移到另外一地點再讀取相同數據所需時間的五分之一。讀盤時,系統先檢查數據是否在高速緩存中,若是有則直接讀取;若是沒有則訪問磁盤,也就是讀盤。當須要屢次讀取同一份數據時,Cache的做用很大,但對於第一次讀取某個文件,Cache就無能爲力了。因而搜索時間和讀取時間在很大程度上影響着程序執行的效率。

爲什麼要整理磁盤 Windows系統並不能自動將每一個文件按照最大程度減小磁頭搜索時間的原則放到磁盤上最合適的位置。因而Microsoft在Windows中加入了「Disk Defragment」(文件碎片整理程序),並提供了「TaskMonitor」(任務監視器)來跟蹤程序啓動過程當中的磁盤活動,以利於「Disk Defragment」可以更有效地工做。「TaskMonitor」是隨Windows啓動而自動運行的(固然要在「啓動」中選中「TaskMonitor」)。當加載某個應用程序時,它經過監視磁盤的訪問動做來了解該程序啓動時搜索和調用的文件,對所需文件進行定位,並將監視結果儲存在「C:\Windows\Applog」隱藏目錄中。這個目錄中的大多數文件以「.lgx」爲擴展名,其中「lg」表明記錄文件(Log File),「x」表示盤符,如D盤程序就以「.lgd」爲擴展名;記錄文件的文件名爲TaskMonitor所監視的應用程序的文件名,如E盤上的WinZip程序記爲「Winzip32.lge」。用戶進行文件碎片整理時,該程序會根據Applog目錄中的信息把應用程序的相關文件移動到磁盤上的連續空間內。

TaskMonitor僅在程序加載過程當中對文件信息進行搜索,而且根據程序的加載頻率調整優化的順序,也就是說使用次數最多的軟件可得到最多的關照。Applog目錄中的APPLOG.ind文件就記錄了應用程序運行的次數。用戶須要將經常使用軟件屢次啓動,接受TaskMonitor的監視和記錄,再使用Disk Defragment進行整理,才能真正實現程序啓動速度的提升。但若是用戶中途改變了經常使用軟件,好比之前經常使用WinZip,改用ZipMagic,那麼在至關長的時間內Disk Defragment仍是先把與WinZip相關的文件移到連續的空間內,而不是ZipMagic,除非ZipMagic的加載次數超過WinZip。要解決這個問題,用戶可將「Winzip32.lgx」文件刪除,記錄文件不存在了,Disk Defragment也就不會去優化它了。

 

1.阻塞IO 

 

 

 

                  圖1

 

 從圖1咱們看到一個最簡單的IO操做的流程,從通知內核準備數據階段到數據從內核Copy到用戶空間兩個過程都是阻塞的。

 

2.非阻塞IO

 

 

 

                    圖2

 

在應用進程在內核數據準備階段不斷接受輪詢,直到數據準備完畢。數據從內核Copy到用戶空間這個階段I/O操做仍是阻塞的。

 

3.I/O複用

 

 

 

                    圖3

 

在內核數據準備(I)階段,當一個或者多個IO準備就緒時,通知程序,數據從內核Copy到用戶空間階段仍是阻塞的,在第I階段仍是輪詢實現的,只是全部的IO都集中在一個地方,這個地方進行輪詢。同時阻塞多個I/O操做,並且能夠同時對多個讀操做,多個寫操做的I/O函數進行檢測,直到有數據可讀或可寫時,才真正調用I/O操做函數。

 

4.信號驅動IO

 

 

 

                  圖4

 

當內核數據準備階段數據準備完畢的時候,信號通知程序數據準備完畢,數據從內核Copy到用戶空間階段阻塞。

 

5.異步IO

 

 

 

                  圖5

 

發出系統調用後,直接返回。通知IO操做完成。

 

 

前四種IO操做都屬於同步IO操做,最後一種異步IO。兩者區別:同步IO在內核Copy到用戶控件階段必需要求進程主動調用recvfrom.而異步IO則將IO操做所有交給內核完成,完成後發信號通知。此期間,用戶不須要去檢查IO操做的狀態,也不須要主動的去拷貝數據

 

 

H5是HTML5的簡稱。HTML5是HTML最新的修訂版本,是一種超文本標記語言。H5有兩大特色:首先,強化了 Web 網頁的表現性能。其次,追加了本地數據庫等 Web 應用的功能。

 

H5頁面就是利用html5製做出來的頁面,尤爲在微信中發展迅速,藉由微信這個移動社交平臺,正在走進更多人的視野,好比從引爆朋友圈的H5小遊戲《圍住神經貓》,到顛覆傳統廣告的大衆點評H5專題頁《咱們之間只有一個字》,各類H5遊戲和專題頁紛紛嶄露頭角。

 

爲活動推廣運營而打造的H5頁面是最多見的類型,形式多變,包括邀請函、賀卡、測試題等形式。與以往簡單的靜態廣告圖片傳播不一樣,現在的H5活動運營頁須要有更強的互動、更高質量、更具話題性的設計來促成用戶分享傳播。從進入微信H5頁面到最後落地到品牌App內部,那麼如何製做H5頁面?

 

其實製做H5頁面很是簡單,首選平臺是應用之星 。整個製做過程無技術要求,圖形化操做,簡單易上手。具體步驟以下:

 

第一步:登錄網站點擊「應用製做」,進入製做頁面。

 

 

 

第二步: 選擇「高級模式」,點「+」建立應用。

 

 

 

第三步: 進入製做頁面。九個控件,經過點擊添加到製做界面,控件的選擇使用按照你的需求進行。

 

 

 

第四步:等你一切製做好後,點擊保存,發佈,便可生成H5頁面。

 

第五步:發佈後,你將看到預覽頁面,其中Web就是你要的H5頁面,微信掃描二維碼將看到頁面的內容,同時也能夠分享到你的朋友圈。

 

 

 

若是你想在生成H5頁面的同時,也想生成Android app,那麼請看這篇教程:應用之星能生成APP嗎?怎樣生成?

 

第六步:若是你還想修改你的內容,請直接去我的中心的應用管理裏面進行修改,從新發布便可完成內容的更新。

 

 

這篇文章主要介紹了javascript獲取當前鼠標座標的方法,可針對不一樣瀏覽器獲取鼠標的座標位置,是很是實用技巧,須要的朋友能夠參考下

本文實例講述了javascript獲取當前鼠標座標的方法。分享給你們供你們參考。具體實現方法以下:

對於javascript獲取當前鼠標座標來講,得對不一樣瀏覽器的座標位置有所瞭解。具體代碼以下:

複製代碼 代碼以下:

<html>

<head>

<title>javascript獲取當前鼠標座標</title>

<meta http-equiv="content-type" content="text/html;charset=utf-8" />

<script type="text/javascript">

 function mousePosition(ev){

  if(ev.pageX || ev.pageY){//firefox、chrome等瀏覽器

   return {x:ev.pageX,y:ev.pageY};

  }

  return {// IE瀏覽器

   x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,

   y:ev.clientY + document.body.scrollTop - document.body.clientTop

  };

 }

 function mouseMove(ev){

  ev = ev || window.event;

  var mousePos = mousePosition(ev);

  document.getElementById('x').innerHTML = mousePos.x;

  document.getElementById('y').innerHTML = mousePos.y;

 }

 document.onmousemove = mouseMove;

</script>

<style type="text/css">

h3{color:blue;}

p{line-height:30px;height:30px;font-size:14px;width:500px;}

span{color:orange;font-weight:bold;}

</style>

</head>

<body>

 <h3>您的鼠標已經被跟蹤</h3>

 <p> X 軸座標:<span id="x"></span></p>

 <p> Y 軸座標:<span id="y"></span></p>

</body>

</html>

相關文章
相關標籤/搜索