當前位置:首頁 » 存儲配置 » java存儲數據

java存儲數據

發布時間: 2022-09-19 10:41:36

java 怎樣存儲大數據

因為基本數據類型都有固定的大小,只能儲存一定范圍的數據
所以,對於較大的數據,只能通過數據類的方式實現:
java.math.BigDecimal
java.math.BigInteger

⑵ java 批量存儲數據

效率快慢不在於遍歷,而是資料庫的提交。只要不是頻繁的提交(commit)數據也差不了多少。提高效率的方式有:如果你用的是jdbc技術,請使用batchUpdate(),如果你的資料庫是oracle可以使用ocracle專有的insert all into語句,具體語法請查閱oracle api

⑶ java程序中怎樣用文件存儲數據

對於一些小文件,我們可以一次性讀取它的所有位元組,然後一次提交到資料庫
///
/// 這個方法演示了如何一次提交所有的位元組。這樣導致的結果是:應用程序立即需要申請等同於文件大小的內存
static void SubmitFileByOnce() {
string file = @"F:\功夫熊貓.rmvb";//文件大小為519MB
byte[] buffer = File.ReadAllBytes(file);
using (SqlConnection conn = new SqlConnection("server=(local);database=demo;integrated security=true")) {
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)";
cmd.Parameters.AddRange(
new[]
{
new SqlParameter("@fileName",file),
new SqlParameter("@fileContents",buffer)
});
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}

但是,上面的方法有幾個問題,主要體現在如果文件比較大的話
它需要一次性很大的內存,具體數據等同於文件大小。因為File.ReadAllBytes方法是將所有位元組全部讀入到內存。
它會導致提交失敗,就是因為數據太大了。資料庫也會拒絕。
那麼,我就對這個方法做了一下改進,將文件拆分為5MB一段,也就是說,此時每次申請的內存只有5MB。這就大大地提高了可用性。
/// 這個方法是將文件切分為5MB的塊,每次只是提交5MB,所以可能多次提交,但內存佔用就比較小
static void SubmitFileStepByStep() {
string file = @"F:\功夫熊貓.rmvb";//以這個文件為例,大小為519MB,一共需要的時間大約94秒。還是有點慢的,所以還可能需要進行壓縮
FileStream fs = new FileStream(file, FileMode.Open);

byte[] buffer = new byte[5 * 1024 * 1024];
int readCount;
using (SqlConnection conn = new SqlConnection("server=(local);database=demo;integrated security=true"))
{
conn.Open();

while ((readCount = fs.Read(buffer, 0, buffer.Length)) > 0)
{

using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)";
cmd.Parameters.AddRange(
new[]
{
new SqlParameter("@fileName",file),
new SqlParameter("@fileContents",buffer)
});

cmd.ExecuteNonQuery();
}

}
conn.Close();

}
}

這樣的話,有一個後果就是一個文件,可能在資料庫中會有多條記錄。所以在讀取的時候,我們需要對其進行合並
static void DownloadFile() {
string file = @"F:\功夫熊貓.rmvb";
string destfile = @"E:\Temp\Temp.wmv";
using (SqlConnection conn = new SqlConnection("server=(local);database=demo;integrated security=true"))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT FileContents FROM Files WHERE FileName=@fileName";
cmd.Parameters.AddRange(
new[]
{
new SqlParameter("@fileName",file),
});
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
FileStream fs = new FileStream(destfile, FileMode.Append, FileAccess.Write);

while (reader.Read())
{
byte[] buffer = (byte[])reader[0];
fs.Write(buffer, 0, buffer.Length);
}
fs.Close();
reader.Close();
conn.Close();
}
}
}

⑷ java中如何使用map存取數據

java中使用map存取數據的方法如下:

1、需要指定其中的K,V;k=keyv=value。

⑸ Java中,小數使用什麼數據類型要存儲最好

對,使用Bigdecimal來存儲高精度的浮點數,

⑹ java 本地數據存儲問題

這好辦啊

寫一個類實現序列化(序列化可以在IO流中傳輸 即implements Serializable )

加上map屬性用來存你要的數據

寫一些獲得map中的數據方法

我寫一個存取數據的方法:

importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.Serializable;

publicclassTestAa{
publicstaticvoidmain(String[]args)throwsException{
//存數據:
TestObjecta=newTestObject();
a.setAa("隨便存一個值");
Filefile=newFile("D:\data.dat");
ObjectOutputStreamout=newObjectOutputStream(newFileOutputStream(file));
out.writeObject(a);

//取數據:
ObjectInputStreamin=newObjectInputStream(newFileInputStream(file));
TestObjectb=(TestObject)in.readObject();
System.out.println(b.getAa());
}
}
{
privateStringaa;

publicStringgetAa(){
returnaa;
}

publicvoidsetAa(Stringaa){
this.aa=aa;
}

}

⑺ 如何在java里長期存儲數據 不要資料庫的那種

長期存儲數據,即把數據(如內存中的)保存到可永久保存的存儲設備中(如硬碟、U盤),也就是人們常說的持久化。

常用持久化的方案有資料庫、XML文件和文件存儲。

資料庫是按照數據結構來存儲和管理數據的倉庫,後文不再做詳細介紹。

XML是可擴展標記語言,最早是為了簡化Internet的文檔數據傳輸,它提供統一的語法格式來描述數據的結構,通常XML文件用於一些少量且無特殊類型要求的文本存儲。示例代碼使用W3C標準的介面生成XML:

importjava.io.FileOutputStream;
importjava.io.PrintWriter;

importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.transform.OutputKeys;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.TransformerFactory;
importjavax.xml.transform.dom.DOMSource;
importjavax.xml.transform.stream.StreamResult;

importorg.w3c.dom.Document;
importorg.w3c.dom.Element;

publicclass${
publicstaticvoidmain(String[]args)throwsException{
Documentdocument=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
//創建根節點為students的XML文件
Elementstudents=document.createElement("students");
document.appendChild(students);

//在根節點下創建一個子節點學生
Elementstudent=document.createElement("student");
students.appendChild(student);
//創建節點學生姓名,值為張三
Elementname=document.createElement("name");
name.appendChild(document.createTextNode("張三"));
student.appendChild(name);
//創建節點學生年齡,值為18
Elementage=document.createElement("age");
age.appendChild(document.createTextNode("18"));
student.appendChild(age);
//創建節點學生編號,值為150101
Elementnumber=document.createElement("number");
number.appendChild(document.createTextNode("150101"));
student.appendChild(number);

//在根節點下創建第二個子節點學生
student=document.createElement("student");
students.appendChild(student);
//創建節點學生姓名,值為李四
name=document.createElement("name");
name.appendChild(document.createTextNode("李四"));
student.appendChild(name);
//創建節點學生年齡,值為20
age=document.createElement("age");
age.appendChild(document.createTextNode("20"));
student.appendChild(age);
//創建節點學生編號,值為150102
number=document.createElement("number");
number.appendChild(document.createTextNode("150102"));
student.appendChild(number);

//將XML文件保存到硬碟
Transformertransformer=TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING,"utf-8");
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
PrintWriterwriter=newPrintWriter(newFileOutputStream("/home/test.xml"));
transformer.transform(newDOMSource(document),newStreamResult(writer));
}
}

無論是資料庫還是XML文件,它們都使用了能讓數據快速方便進出的標准規范。其它文件如propeties、json,都可以使用類似XML的方式來打包數據,然後通過Java豐富的io流介面保存到磁碟中。

⑻ java程序中數據的儲存方法有哪些

java程序中數據儲存方法如下:
一種是棧內存,另一種是堆內存
(1)在函數中定義的基本類型變數(即基本類型的局部變數)和對象的引用變數(即對象的變數名)都在函數的棧內存中分配;
(2)堆內存用來存放由new創建的對象和數組以及對象的實例變數(即全局變數)。
在函數(代碼塊)中定義一個變數時,java就在棧中為這個變數分配內存空間,當超過變數的作用域後,java會自動釋放掉為該變數所分配的內存空間;
在堆中分配的內存由java虛擬機的自動垃圾回收器來管理
堆和棧的優缺點
堆的優勢是可以動態分配內存大小,生存期也不必事先告訴編譯器,因為它是在運行時動態分配內存的。
缺點就是要在運行時動態分配內存,存取速度較慢;
棧的優勢是,存取速度比堆要快,僅次於直接位於CPU中的寄存器。

⑼ java 怎麼把數據存到內存中

這里你採納與否沒關系,給你說說編程與內存的關系。
你定義的任何變數,常量,類,方法等等,其實都在內存中,沒有所謂的把數據存內存中,這概念,你可以想一下電腦重啟或關機後,內存中的所有數據,都會丟失,除非你保存到磁碟中去。
在內存中的數據有兩塊,第一、緩沖,一般寫數據到磁碟的時候開辟出來的內存空間;第二、緩存,一般是從磁碟讀數據到內存中開辟出來的內存空間。會這么使用,原因很簡單,磁碟讀寫數據速度與內存不一致(磁碟的存取效率遠遠小於內存的存取效率),為了提高數據的存取效率,才會這么乾的。
一般而言,java中的所謂數據,大部分都是類,從自動引用計數的概念來分析,你想把對象長久的放在內存中,不會被垃圾回收機制釋放,注意制葯有一個對象在使用/引用你的數據,這條數據就會存在內存中。所以,想servlet中的全局配置參數,隨時可以取到還是唯一一份,你可以參考一下。
另外內存使用分堆與棧,堆在面向對象編程中存儲對象的,棧是方法或函數執行的時候臨時開辟的存儲空間,方法或函數執行完畢就會釋放。
希望我的回復能幫助到你,採納與否沒關系。有更好的答案,我就隱藏我的回復。

⑽ java怎麼存儲經常訪問的數據

java實現緩存的機制其實很簡單,首先確定那些數據是實時且頻繁被訪問的,將這些數據從資料庫中取出存入到java的內存機制中,這里需要看你怎麼定義你緩存裡面的數據結構,一般用到的數據結構包括List,haspmap,hashtable,HashSet,Vector等等,當然你也可以將這些數據結構組合形成滿足你自身業務數據相關的對象,這些對象的存儲即實現了緩存的機制,用戶在訪問數據的時候優先訪問這部分數據,如果要做到比較好的控制的話,需要設置數據的訪問權重,訪問頻率,優先順序等,已達到緩存的高命中以及高實時性

熱點內容
蘋果6怎麼設置短密碼 發布:2025-03-19 04:44:41 瀏覽:16
三人樂隊怎麼配置 發布:2025-03-19 04:34:42 瀏覽:913
趣編程入口 發布:2025-03-19 04:25:09 瀏覽:938
a的存儲形式 發布:2025-03-19 04:24:00 瀏覽:788
android鍵盤修改 發布:2025-03-19 04:21:45 瀏覽:164
記錄體溫源碼 發布:2025-03-19 04:14:06 瀏覽:895
安卓電池充電次數怎麼查看 發布:2025-03-19 04:08:44 瀏覽:318
問解壓 發布:2025-03-19 03:29:44 瀏覽:811
原神手機號如何修改賬號密碼 發布:2025-03-19 03:29:22 瀏覽:188
汽車配置哪些最省錢 發布:2025-03-19 03:10:16 瀏覽:518