1. 微信小程序入門(七):緩存數據-單條數據
微信小程序的編寫中,涉及到有些業務場景需要將數據緩存到本地,則微信小程序api提供了兩個介面函數,
wx.setStorage可以將數據緩存在本地指定的key中,如果本地緩存已經存在指定的key,則會覆蓋該key對應的內容,這是一個非同步的介面,在調用時會涉及到成功,失敗,完成三個狀態,
與wx.setStorage唯一不同的就是wx.setStorageSync是同步進行的,所以不會涉及到成功,失敗,完成等回調,但是在使用時需要使用try.......catch....來捕獲異常;
現在編寫一個將字元串緩存本地的例子
編譯項目,點擊緩存按鈕:
現在改變緩存的內容,但是緩存的key保持不變
可以看到第二次的內容把第一次覆蓋了。
將內容緩存到本地之後,將其從本地提取展示出來,則可是使用微信小程序api提供的兩個介面:wx.getStorageInfo(Object object),wx.getStorageSync(string key),與緩存同樣,讀取緩存也分同步和非同步;
我們將剛剛存儲到本地的數據展示到頁面上:
編譯項目,點擊按鈕獲取緩存數據並將其展示到頁面上。
完成了本地數據的緩存,獲取,則接下來就是關於緩存數據的清除,同樣微信小程序api也提供了可使用的介面,
至此微信小程序本地保存數據就此結束!
2. Oracle認證的體系
oracle的體系很龐大,要學習它,首先要了解oracle的框架。在這里,簡要的講一下oracle的架構,讓初學者對oracle有一個整體的認識。 (由控制文件、數據文件、重做日誌文件、參數文件、歸檔文件、密碼文件組成)
控制文件:包含維護和驗證資料庫完整性的必要信息、例如,控制文件用於識別數據文件和重做日誌文件,一個資料庫至少需要一個控制文件
數據文件:存儲數據的文件
重做日誌文件:含對資料庫所做的更改記錄,這樣萬一出現故障可以啟用數據恢復。一個資料庫至少需要兩個重做日誌文件
參數文件:定義Oracle 常式的特性,例如它包含調整SGA 中一些內存結構大小的參數
歸檔文件:是重做日誌文件的離線副本,這些副本可能指姿對於從介質失敗中進行恢復很必要。
密碼文件:認證哪些用戶有許可權啟動和關閉Oracle常式 (表山逗簡空間、段、區、塊)
表空間:是資料庫中的基本邏輯結構,一系列數據文件的集合。
段:是對象在資料庫中佔用的空間
區:是為數據一次性預留的一個較大的存儲空間
塊:ORACLE最基本的存儲單位,在建立資料庫的時候指定 (SGA和PGA)
SGA:是用於存儲資料庫信息的內存區,該信息為資料庫進程所共享。它包含Oracle 伺服器的數據和控制信息, 它是在Oracle 伺服器所駐留的計算機的實際內存中得以分配,如果實際內存不夠再往虛擬內存中寫。
PGA:包含單個伺服器進程或單個後台進程的數據和控制信息,與幾個進程共享的SGA 正相反PGA 是只被一個進程使用的區域,PGA 在創建進程時分配在終止進程時回收 (數據寫進程、日誌寫進程、系統監控、進程監控、檢查點進程逗褲、歸檔進程、服務進程、用戶進程)
數據寫進程:負責將更改的數據從資料庫緩沖區高速緩存寫入數據文件
日誌寫進程:將重做日誌緩沖區中的更改寫入在線重做日誌文件
系統監控:檢查資料庫的一致性如有必要還會在資料庫打開時啟動資料庫的恢復
進程監控:負責在一個Oracle 進程失敗時清理資源
檢查點進程:負責在每當緩沖區高速緩存中的更改永久地記錄在資料庫中時,更新控制文件和數據文件中的資料庫狀態信息。
歸檔進程:在每次日誌切換時把已滿的日誌組進行備份或歸檔
服務進程:用戶進程服務。
用戶進程:在客戶端,負責將用戶的SQL 語句傳遞給服務進程,並從伺服器段拿回查詢數據。 (System Change Number):系統改變號,一個由系統內部維護的序列號。當系統需要更新的時候自動增加,他是系統中維持數據的一致性和順序恢復的重要標志。
3. java怎麼將數據放入緩存
java放入session緩存中
方法如下:
session.setAttribute("Name",Value);
Name 隨便取,value就是要放的數據
獲取的時候session.getAttribute("Name);
就可以了
4. asp.net怎麼設置瀏覽器客戶端緩存
1. Expires:+過期時間
表示在指定時間後瀏覽器緩存失效,需要注意的是這兒的過期時間必須是HTTP格式的日期時間,其他的都會被解析成當前時間「之前」,緩存會馬上過期,HTTP的日期時間必須是格林威治時間(GMT),而不是本地時間。舉例:
5. asp.net緩存要注意些什麼
asp.net性能的技巧
【IT168 技術文檔】根據經驗的總結,讓我們來看看十個能幫助你提升你的應用程序性能的經驗,我將按將它們提升效率的多少從大到小小依次說明。
一、返回多個數據集
檢查你的訪問資料庫的代碼,看是否存在著要返回多次的請求。每次往返降低了你的應用程序的每秒能夠響應請求的次數。通過在單個資料庫請求中返回多個結果集,可以減少與資料庫通信的時間,使你的系統具有擴展性,也可以減少資料庫伺服器響應請求的工作量。
如果你是用動態的SQL語句來返回多個數據集,那我建議你用存儲過程來替代動態的SQL語句。是否把業務邏輯寫到存儲過程中,這個有點爭議。但是我認為,把業務邏輯寫到存儲過程裡面可以限制返回結果集的大小,減小網路數據的流量,在邏輯層也不用在過濾數據,這是一個好事情。
用SqlCommand對象的ExecuteReader方法返回一個強類型的業務對象,再調用NextResult方法來移動數據集指針來定位數據集。示例一演示了一個返回多個ArrayList強類型對象的例子。只從資料庫中返回你需要的數據可以大大的減小你的伺服器所耗用的內存。
二、對數據進行分頁
ASP.NET的DataGrid有一個非常有用的功能:分頁。如果DataGrid允許分頁,在某一時刻它只下載某一頁的數據,另外,它有一個數據分頁的瀏覽導航欄,它讓你可以選擇瀏覽某一頁,而且每次只下載一頁的數據。
但是它有一個小小的缺點,就是你必須把所有的數據都綁定到DataGrid中。也就是說,你的數據層必須返回所有的數據,然後DataGrid再根據當前頁過濾出當前頁所需要的數據顯示出來。如果有一個一萬條記錄的結果集要用DataGrid進行分頁,假設DataGrid每頁只顯示25條數據,那就意味著每次請求都有9975條數據都是要丟棄的。每次請求都要返回這么大的數據集,對應用程序的性能影響是非常大的。
一個好的解決方案是寫一個分頁的存儲過程,例子2是一個用於對Northwind資料庫orders表的分頁存儲過程。你只需要傳當前頁碼,每頁顯示的條數兩個參數進來,存儲過程會返回相應的結果。
在伺服器端,我專門寫了一個分頁的控制項來處理數據的分頁,在這里,我用了第一個方法,在一個存儲過程裡面返回了兩個結果集:數據記錄總數和要求的結果集。
返回的記錄總數取決於要執行查詢,例如,一個where條件可以限制返回的結果集的大小。因為在分頁界面中必須要根據數據集記錄的大小來計算總的頁數,所以必須要返回結果集的記錄數。例如,如果一共有1000000條記錄,如果用where條件就可以過濾成只返回1000條記錄,存儲過程的分頁邏輯應該知道返回那些需要顯示的數據。
三、連接池
用TCP來連接你的應用程序與資料庫是一件昂貴的事情(很費時的事情),微軟的開發者可以通過用連接池來反復的使用資料庫的連接。比起每次請求都用TCP來連一次資料庫,連接池只有在不存在有效的連接時才新建一個TCP連接。當關閉一個連接的時候,它會被放到池中,它仍然會保持與資料庫的連接,這樣就可以減少與資料庫的TCP連接次數。
當然,你要注意那些忘記關的連接,你應在每次用完連接後馬上關閉它。我要強調的是:無論什麼人說.NET Framework中的GC(垃圾收集器)總會在你用完連接對象後調用連接對象的Close或者Dispose方法顯式的關閉你的連接。不要期望CLR會在你想像的時間內關掉連接,雖然CLR最終都要銷毀對象和關閉邊接,但是我們並不能確定它到底會在什麼時候做這些事情。
要用連接池優化,有兩條規則,第一,打開連接,處理數據,然後關閉連接。如果你必須在每次請求中多次打開或關閉連接,這好過一直打開一個邊接,然後把它傳到各個方法中。第二,用相同的連接字元串(或者用相同的用戶標識,當你用集成認證的時候)。如果你沒有用相同的連接字元串,如你用基於登錄用戶的連接字元串,這將不能利用連接池的優化功能。如果你用的是集成的論證,因為用戶很多,所以你也不能充分利用連接池的優化功能。.NET CLR提供了一個數據性能計數器,它在我們需要跟蹤程序性能特性的時候非常有用,當然也包括連接池的跟蹤了。
無論你的應用程序什麼時候要連在另一台機子的資源,如資料庫,你都應該重點優化你連資源所花的時間,接收和發送數據的時間,以及往返回之間的次數。優化你的應用程序中的每一個處理點(process hop),它是提高你的應用的性能的出發點。
應用程序層包含與數據層連接,傳送數據到相應的類的實例以及業務處理的邏輯。例如,在Community Server中,要組裝一個Forums或者Threads集合,然後應用業務邏輯,如授權,更重要的,這里要完成緩存邏輯。
四、 ASP.NET緩存API
在寫應用程序之前,你要做的第一件事是讓應用程序最大化的利用ASP.NET的緩存功能。
如果你的組件是要在Asp.net應用程序中運行,你只要把System.Web.dll引用到你的項目中就可以了。然後用HttpRuntime.Cache屬性就可訪問Cache了(也可以通過Page.Cache或HttpContext.Cache訪問)。
有以下幾條緩存數據的規則。第一,數據可能會被頻繁的被使用,這種數據可以緩存。第二,數據的訪問頻率非常高,或者一個數據的訪問頻率不高,但是它的生存周期很長,這樣的數據最好也緩存起來。第三是一個常常被忽略的問題,有時候我們緩存了太多數據,通常在一台X86的機子上,如果你要緩存的數據超過800M的話,就會出現內存溢出的錯誤。所以說緩存是有限的。換名話說,你應該估計緩存集的大小,把緩存集的大小限制在10以內,否則它可能會出問題。在Asp.net中,如果緩存過大的話也會報內存溢出錯誤,特別是如果緩存大的DataSet對象的時候。
這里有幾個你必須了解的重要的緩存機制。首先是緩存實現了「最近使用」原則( a least-recently-used algorithm),當緩存少的時候,它會自動的強制清除那些無用的緩存。其次 「條件依賴」強制清除原則(expiration dependencies),條件可以是時間,關鍵字和文件。以時間作為條件是最常用的。在asp.net2.0中增加一更強的條件,就是資料庫條件。當資料庫中的數據發生變化時,就會強制清除緩存。要更深入的了解資料庫條件依賴請看Dino Esposito 在MSDN雜志2004年七月刊的Cutting Edge專欄文章。
五、 預請求緩存
在前面,我提到過即使我們只對某些地方作了一個小小的性能改進也可以獲得大的性能提升,我非常喜歡用預請求緩存來提升程序的性能。
雖然Cache API設計成用來保存某段時間的數據,而預請求緩存只是保存某個時期的某個請求的內容。如果某個請求的訪問頻率高,而且這個請求只需要提取,應用,修改或者更新數據一次。那麼就可以預緩存該請求。我們舉個例子來說明。
在CS的論壇應用程序中,每一個頁面的伺服器控制項都要求得到用於決定它的皮膚(skin)的自定義的數據,以決定用哪個樣式表及其它的一些個性化的東西。這裡面的某些數據可能要長時間的保存,有些時間則不然,如控制項的skin數據,它只需要應用一次,而後就可以一直使用。
要實現預請求緩存,用Asp.net 的HttpContext類,HttpContext類的實例在每一個請求中創建,在請求期間的任何地方都可以通過HttpContext.Current屬性訪問。HttpContext類有一個Items集合屬性,在請求期間所有的對象和數據都被添加到這個集合中緩存起來。和你用Cache緩存訪問頻率高數據一樣,你可以用HttpContext.Items緩存那些每個請求都要用到的基礎數據。它背後的邏輯很簡單:我們向HttpContext.Items中添加一個數據,然後再從它裡面讀出數據。
6. java怎麼將資料庫的數據做緩存,方便查找。
你的數據非常大,那你寫入內存會不會比較占資源,為什麼不用非同步刷新,讓它顯示不部分再慢慢載入