① 海量數據儲存後保存數據完整性的細節及原理是什麼
快閃記憶體(Flash Memory)是非揮發存儲的一種,具有關掉電源仍可保存數據的優點,同時又可重復讀寫且讀寫速度快、單位體積內可儲存最多數據量,以及低功耗特性等優點。 其存儲物理機制實際上為一種新型EEPROM(電可擦除可編程只讀存儲)。是SCM(半導體存儲器)的一種。
早期的SCM採用典型的晶體管觸發器作為存儲位元,加上選擇、讀寫等電路構成存儲器。現代的SCM採用超大規模集成電路工藝製成存儲晶元,每個晶元中包含相當數量的存儲位元,再由若干晶元構成存儲器。目前SCM廣泛採用的主要材料是金屬氧化物場效應管(MOS),包括PMOS、NMOS、CMOS三類,尤其是NMOS和CMOS應用最廣泛。
RAM(隨機存取存儲),是一種半導體存儲器。必須在通電情況下工作,否則會喪失存儲信息。RAM又分為DRAM(動態)和SRAM(靜態)兩種,我們現在普遍使用的PC機內存即是SDRAM(同步動態RAM),它在運行過程當中需要按一定頻率進行充電(刷新)以維持信息。DDR DDR2內存也屬於SDRAM。而SRAM不需要頻繁刷新,成本比DRAM高,主要用在CPU集成的緩存(cache)上。
PROM(可編程ROM)則只能寫入一次,寫入後不能再更改。
EPROM(可擦除PROM)這種EPROM在通常工作時只能讀取信息,但可以用紫外線擦除已有信息,並在專用設備上高電壓寫入信息。
EEPROM(電可擦除PROM),用戶可以通過程序的控制進行讀寫操作。
快閃記憶體實際上是EEPROM的一種。一般MOS閘極(Gate)和通道的間隔為氧化層之絕緣(gate oxide),而Flash Memory的特色是在控制閘(Control gate)與通道間多了一層稱為「浮閘」(floating gate)的物質。拜這層浮閘之賜,使得Flash Memory可快速完成讀、寫、抹除等三種基本操作模式;就算在不提供電源給存儲的環境下,也能透過此浮閘,來保存數據的完整性。
Flash Memory晶元中單元格里的電子可以被帶有更高電壓的電子區還原為正常的1。Flash Memory採用內部閉合電路,這樣不僅使電子區能夠作用於整個晶元,還可以預先設定「區塊」(Block)。在設定區塊的同時就將晶元中的目標區域擦除干凈,以備重新寫入。傳統的EEPROM晶元每次只能擦除一個位元組,而Flash Memory每次可擦寫一塊或整個晶元。Flash Memory的工作速度大幅領先於傳統EEPROM晶元。
MSM(磁表面存儲)是用非磁性金屬或塑料作基體,在其表面塗敷、電鍍、沉積或濺射一層很薄的高導磁率、硬矩磁材料的磁面,用磁層的兩種剩磁狀態記錄信息"0"和"1"。基體和磁層合稱為磁記錄介質。依記錄介質的形狀可分別稱為磁卡存儲器、磁帶存儲器、磁鼓存儲器和磁碟存儲器。計算機中目前廣泛使用的MSM是磁碟和磁帶存儲器。硬碟屬於MSM設備。
ODM(光碟存儲)和MSM類似,也是將用於記錄的薄層塗敷在基體上構成記錄介質。不同的是基體的圓形薄片由熱傳導率很小,耐熱性很強的有機玻璃製成。在記錄薄層的表面再塗敷或沉積保護薄層,以保護記錄面。記錄薄層有非磁性材料和磁性材料兩種,前者構成光碟介質,後者構成磁光碟介質。
ODM是目前輔存中記錄密度最高的存儲器,存儲容量很大且碟片易於更換。缺點是存儲速度比硬碟低一個數量級。現已生產出與硬碟速度相近的ODM。CD-ROM、DVD-ROM等都是常見的ODM。
② C# SQL 怎麼一次添加多條數據的存儲過程 求源代碼
1、這分幾各情況的:
一種是類似配置表,只需要傳遞相應ID就行(用XML,埋雹脊或者CSV格彎滲式的字元串)
一種是類似於新建數據,比如注冊,多種信息為一個對象(用XML)
兩都都是將參數轉換為一個臨時表,然後用臨時表與Insert Table 做匹配寫入
2、這個A ~Z夠不夠你用的。。
如果夠的話:A~Z每個對應一人數字從1開始26.
每次寫入前查詢「XXXXX20121120%」這樣的數據有多少條,然後通過條數+1.來決定給此條記錄用哪個字母,然後寫入就行了。
如果不夠肆尺的話:寫個Function演算法來通過給個數取需要用的字母,方法類似上面。
再者簡單一點的:事先准備好一個Config表來存儲字母與數字對應關系,得到上面所說的記錄條數+1,取Config表中的字母值來做寫入
③ asp 如何一次保存多條記錄
一次保存多條記錄並握,這里提供2中方式:1是在EXCEL里寫好了,批量導入;2是利用表單提交。
【方法一】
自己定義個標准EXCEL模板,在模板里填寫好多條數據後,導入到資料庫內。
思路是:先把EXCEL傳到伺服器上,然後連接EXCEL表,讀取數據,依次插入到產品表裡。其中連接EXCEL不用我告訴你了吧,自己不會就搜索一下吧。雀衫
【方法二】
創建表單,在表單內添加多個產品ID文本控制項,控制項名稱都一樣(name="ProctID"),以及對應的多個產品價格文本控制項,控制項名稱也都一樣(name="ProctName"),填寫完數據後,提交。
此時提交的數據,用request接收到的數據是如下樣式:
ProctID=1,2,3,4,5
ProctName = 3.9, 4.9, 5.9, 6.9, 7.9
然後你就可頃蔽腔以利用split函數,創建數組,樣例如下:
AryProctID = split(ProctID,",")
AryProctName = split(ProctName,",")
for i=0 to ubound(AryProctID)
ProctID = AryProctID(i)
ProctName = AryProctName(i)
conn.execute("insert into .......")
next
另外,不推薦你用你那樣方式,用記錄集插入數據太慢。
明白?
④ Android中用什麼方法來存儲數據,最常的方式是什麼 像 QQ 微信的數據如何存儲的
Android應用開發中,給我們提供了5種數據的存儲方式
1 使用SharedPreferences存儲數據
2 文件存儲數據
3 SQLite資料庫存儲數據
4 使用ContentProvider存儲數據
5 網路存儲數據
不同的業務邏輯,或者需求,用不同的實現方式,以下是這幾中數據存儲方式的說明用及法:
第一種: 使用SharedPreferences存儲數據
SharedPreferences是Android平台上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態,
一般在Activity中 重載窗口狀態onSaveInstanceState保存一般使用SharedPreferences完成,
它提供了Android平台常規的Long長 整形、Int整形、String字元串型的保存。
SharedPreferences類似過去Windows系統上的ini配置文件,但是它分為多種許可權,
可以全局共享訪問,android123提示最終是以xml方式來保存,整體效率來看不是特別的高,
對於常規的輕量級而言比SQLite要好不少,如果真的存儲量不大可以考慮自己定義文件格式。
xml 處理時Dalvik會通過自帶底層的本地XML Parser解析,比如XMLpull方式,這樣對於內存資源佔用比較好。
它的本質是基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。
其存儲位置在/data/data/< >/shared_prefs目錄下。
SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現。
實現SharedPreferences存儲的步驟如下:
一、根據Context獲取SharedPreferences對象
二、利用edit()方法獲取Editor對象。
三、通過Editor對象存儲key-value鍵值對數據。
四、通過commit()方法提交數據。
下面是示例代碼:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//獲取SharedPreferences對象
Context ctx = MainActivity.this;
SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
//存入數據
Editor editor = sp.edit();
editor.putString("STRING_KEY", "string");
editor.putInt("INT_KEY", 0);
editor.putBoolean("BOOLEAN_KEY", true);
editor.commit();
//返回STRING_KEY的值
Log.d("SP", sp.getString("STRING_KEY", "none"));
//如果NOT_EXIST不存在,則返回值為"none"
Log.d("SP", sp.getString("NOT_EXIST", "none"));
}
}
這段代碼執行過後,即在/data/data/com.test/shared_prefs目錄下生成了一個SP.xml文件,一個應用可以創建多個這樣的xml文件。
SharedPreferences對象與SQLite資料庫相比,免去了創建資料庫,創建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。
但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數據類型,比如其無法進行條件查詢等。
所以不論SharedPreferences的數據存儲操作是如何簡單,它也只能是存儲方式的一種補充,而無法完全替代如SQLite資料庫這樣的其他數據存儲方式。
第二種: 文件存儲數據
關於文件存儲,Activity提供了openFileOutput()方法可以用於把數據輸出到文件中,具體的實現過程與在J2SE環境中保存數據到文件中是一樣的。
文件可用來存放大量數據,如文本、圖片、音頻等。
默認位置:/data/data/< >/files/***.***。
代碼示例:
public void save(){
try {
FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);
outStream.write(text.getText().toString().getBytes());
outStream.close();
Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
return;
}
catch (IOException e){
return ;
}
}
openFileOutput()方法的第一參數用於指定文件名稱,不能包含路徑分隔符「/」 ,如果文件不存在,Android 會自動創建它。
創建的文件保存在/data/data//files目錄,如: /data/data/cn.itcast.action/files/itcast.txt ,
通過點擊Eclipse菜單「Window」-「Show View」-「Other」,在對話窗口中展開android文件夾,
選擇下面的File Explorer視圖,然後在File Explorer視圖中展開/data/data//files目錄就可以看到該文件。
openFileOutput()方法的第二參數用於指定操作模式,有四種模式,分別為:
Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有許可權讀寫該文件。
MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;
MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。
如果希望文件被其他應用讀和寫,可以傳入: openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); android有一套自己的安全模型,當應用程序(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創建的文件,sharedpreferences,資料庫都應該是私有的(位於/data/data//files),其他程序無法訪問。
除非在創建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有這樣其他程序才能正確訪問。
讀取文件示例:
public void load(){
try {
FileInputStream inStream=this.openFileInput("a.txt");
ByteArrayOutputStream stream=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
while((length=inStream.read(buffer))!=-1) {
stream.write(buffer,0,length);
}
stream.close();
inStream.close();
text.setText(stream.toString());
Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e){
return ;
}
}
對於私有文件只能被創建該文件的應用訪問,
如果希望文件能被其他應用讀和寫,
可以在創建文件時,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE許可權。
Activity還提供了getCacheDir()和getFilesDir()方法: g
etCacheDir()方法用於獲取/data/data//cache目錄 getFilesDir()方法用於獲取/data/data//files目錄。
把文件存入SDCard:
使用Activity的openFileOutput()方法保存文件,文件是存放在手機空間上,
一般手機的存儲空間不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。
對於像視頻這樣的大文件,我們可以把它存放在SDCard。
SDCard是干什麼的?你可以把它看作是移動硬碟或U盤。
在模擬器中使用SDCard,你需要先創建一張SDCard卡(當然不是真的SDCard,只是鏡像文件)。
創建SDCard可以在Eclipse創建模擬器時隨同創建,也可以使用DOS命令進行創建,
如下: 在Dos窗口中進入android SDK安裝路徑的tools目錄,
輸入以下命令創建一張容量為2G的SDCard,文件後綴可以隨便取,
建議使用.img: mksdcard 2048M D:\AndroidTool\sdcard.img 在程序中訪問SDCard,你需要申請訪問SDCard的許可權。
在AndroidManifest.xml中加入訪問SDCard的許可權如下:
<!-- 在SDCard中創建與刪除文件許可權 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard寫入數據許可權 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
要往SDCard存放文件,程序必須先判斷手機是否裝有SDCard,並且可以進行讀寫。
注意:訪問SDCard必須在AndroidManifest.xml中加入訪問SDCard的許可權。
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();//獲取SDCard目錄
File saveFile = new File(sdCardDir, 「a.txt」);
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write("test".getBytes());
outStream.close();
}
Environment.getExternalStorageState()方法用於獲取SDCard的狀態,如果手機裝有SDCard,並且可以進行讀寫,那麼方法返回的狀態等於Environment.MEDIA_MOUNTED。
Environment.getExternalStorageDirectory()方法用於獲取SDCard的目錄,當然要獲取SDCard的目錄,你也可以這樣寫:
File sdCardDir = new File("/sdcard"); //獲取SDCard目錄
File saveFile = new File(sdCardDir, "itcast.txt");
//上面兩句代碼可以合成一句:
File saveFile = new File("/sdcard/a.txt");
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write("test".getBytes());
outStream.close();
第三種: SQLite資料庫存儲數據
SQLite是輕量級嵌入式資料庫引擎,它支持 SQL 語言,
並且只利用很少的內存就有很好的性能。
此外它還是開源的,任何人都可以使用它。
許多開源項目((Mozilla, PHP, Python)都使用了 SQLite
SQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。
SQLite 通過利用虛擬機和虛擬資料庫引擎(VDBE),使調試、修改和擴展 SQLite 的內核變得更加方便。
特點:
面向資源有限的設備,
沒有伺服器進程,
所有數據存放在同一文件中跨平台,
可自由復制。
SQLite 基本上符合 SQL-92 標准,和其他的主要 SQL 資料庫沒什麼區別。它的優點就是高效,Android 運行時環境包含了完整的 SQLite。
SQLite 和其他資料庫最大的不同就是對數據類型的支持,創建一個表時,可以在 CREATE TABLE 語句中指定某列的數據類型,但是你可以把任何數據類型放入任何列中。當某個值插入資料庫時,SQLite 將檢查它的類型。如果該類型與關聯的列不匹配,則 SQLite 會嘗試將該值轉換成該列的類型。如果不能轉換,則該值將作為其本身具有的類型存儲。比如可以把一個字元串(String)放入 INTEGER 列。SQLite 稱這為「弱類型」(manifest typing.)。 此外,SQLite 不支持一些標準的 SQL 功能,特別是外鍵約束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 還有一些 ALTER TABLE 功能。 除了上述功能外,SQLite 是一個完整的 SQL 系統,擁有完整的觸發器,交易等等。
Android 集成了 SQLite 資料庫 Android 在運行時(run-time)集成了 SQLite,所以每個 Android 應用程序都可以使用 SQLite 資料庫。
對於熟悉 SQL 的開發人員來時,在 Android 開發中使用 SQLite 相當簡單。但是,由於 JDBC 會消耗太多的系統資源,所以 JDBC 對於手機這種內存受限設備來說並不合適。因此,Android 提供了一些新的 API 來使用 SQLite 資料庫,Android 開發中,程序員需要學使用這些 API。
資料庫存儲在 data/< 項目文件夾 >/databases/ 下。 Android 開發中使用 SQLite 資料庫 Activites 可以通過 Content Provider 或者 Service 訪問一個資料庫。
下面會詳細講解如果創建資料庫,添加數據和查詢資料庫。 創建資料庫 Android 不自動提供資料庫。在 Android 應用程序中使用 SQLite,必須自己創建資料庫,然後創建表、索引,填充數據。
Android 提供了 SQLiteOpenHelper 幫助你創建一個資料庫,你只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。
SQLiteOpenHelper 的子類,至少需要實現三個方法:
1 構造函數,調用父類 SQLiteOpenHelper 的構造函數。這個方法需要四個參數:上下文環境(例如,一個 Activity),資料庫名字,一個可選的游標工廠(通常是 Null),一個代表你正在使用的資料庫模型版本的整數。
2 onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數,根據需要對這個對象填充表和初始化數據。
3 onUpgrage() 方法,它需要三個參數,一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣你就可以清楚如何把一個資料庫從舊的模型轉變到新的模型。
第四種 使用ContentProvider存儲數據 ContentProvider其實也是通過資料庫的方式來存儲數據的,因此這里不再做詳細介紹
第五種 網路存儲數據 也就是說將數據保存在伺服器,android上只需要通過httpclient發起一個請求,向伺服器獲取數據即可
⑤ 目前企業級的資料庫大多用什麼存儲介質存儲的
三層:1.光纖通道硬碟(FC HDD)2.窗口硬碟(SATA)3.大容量磁帶
⑥ 用什麼存儲介質保存電腦的數據信息好呢
移動硬碟存儲介質保存電腦的數據信息好。
DVD刻錄光碟壽命在5~10年,依據盤的質量,這些自行刻錄的盤只有兩至五年的壽命。如果你想延長它們的壽命,就要將它們放置在低溫和黑暗的地方,但能延長的時間也有限。造成此問題的原因是這些刻錄盤表面的染料塗層。在刻錄時,刻錄機通過熱量修改此塗層,將數據記錄上去。但在長期存放或使用過程中,染料塗層將發生退化,會使數據「移位」,激光束就讀不出數據。那些打折店出售的刻錄盤一般只有兩年的壽命,高質量的盤最多能有五~十年的壽命,但區分這兩者是很困難的,因為很少有商家拿使用壽命作賣點的。dvd刻錄盤和外面賣的dvd盤是不一樣的,外面賣的盤是壓制的,而不是刻錄的,他們記錄數據的介質不同,反光率也不一樣。
一般的移動硬碟裡面採用的是機械硬碟。但是它比電腦的內置的機械硬碟好,它不用像內置硬碟那樣經常發生讀寫。機械硬碟壽命與讀寫次數,使用時間有關。不過機械硬碟容易出現壞道,一般的移動硬碟本身質量好很少出現壞道的,保管好的,保存數據起碼8年以上不是問題。
⑦ 在存儲器中,數據和程序是以什麼形式存放的
在存儲器中,數據和程序是以二進制形式存放的。計算機的程序和程序運行所需要的數據以二進制形式存放在計算機的存儲器中。
程序和數據存放在存儲器中,即「存儲程序」的概念。計算機執行程序時,無需人工干預,能自動、連續地執行程序,並得到預期的結果。
存儲器是計算機的記憶裝置,它的主要功能是存放程序和數據。程序是計算機操作的依據,數據是計算機操作的對象。
存儲容量的大小以位元組為單位來度量。經常使用KB(千位元組)、MB(兆位元組)、GB(千兆位元組)和TB來表示。它們之間的關系是:1KB=1024B=210B,1MB=1024KB=220B,1GB=1024MB=230B,1TB=1024G=240B。(1024 = 2^32)
(7)存儲多條數據列表用什麼進行存儲擴展閱讀
位(bit):是計算機存儲數據的最小單位。機器字中一個單獨的符號「0」或「1」被稱為一個二進制位,它可存放一位二進制數。
位元組(Byte,簡稱B):位元組是計算機存儲容量的度量單位,也是數據處理的基本單位,8個二進制位構成一個位元組。一個位元組的存儲空間稱為一個存儲單元。
根據存儲器與CPU聯系的密切程度可分為內存儲器(主存儲器)和外存儲器(輔助存儲器)兩大類。
現代計算機系統中廣泛應用半導體存儲器,從使用功能角度看,半導體存儲器可以分成兩大類:斷電後數據會丟失的易失性(Volatile)存儲器和斷電後數據不會丟失的非易失性(Non-volatile)存儲器。
微型計算機中的RAM屬於可隨機讀寫的易失性存儲器,而ROM屬於非易失性(Non-volatile)存儲器。