㈠ H2 Database 這個資料庫能用到真正的大型項目 生產環境嗎 , 一般java項目用到的內存資料庫用哪個呢
用來緩存消息的內存資料庫或Cache,需要滿足:
1.能快速方便的進行消息的查詢
2.能支持分布式 (網路模式)
3.能支持集群 (單點失效和負載均衡)
4. 支持持久化(自身能持久化, 不需要我們額外的開發)
SQLLite和Derby ,不過不是很確定這兩者是否都支撐集群,其他都支持,Derby是用純java寫的,集成在JDK6的安裝當中,現在叫JavaDB
㈡ 如何不用遞歸遍歷二叉樹
非遞歸的方法是用存儲代替計算,就是在建立樹時,實現了存儲展開,相當於存儲了未來需要遍歷的路徑,所以就快了。遞歸是送快遞,一層層往下遞,非遞歸是先建好區域倉庫,由各地倉庫儲存發貨,所以速度更快,但需要倉庫儲存(內存佔用更多)。
二叉樹遍歷在數據結構中用得多,這種演算法是從kb時代的內存來的,主要用於理解概念,提升編程時的思想用。
實際用途中
如果用於商業一般用資料庫代替,根本用不到二叉樹,是用存儲代替計算。速度快,可以用內存資料庫,如我用h2 database的Memory Mode 在java下可以實現1秒1百萬次插入。用sqlite內存模式代替以前在c++需要手工管理的數據結構。數據量大一個電腦存不下時,用hadoop/spark/redis,對分布式大數據支持比較好。
如果用於計算量大的任務或內核結構,可以用矩陣數組,鏈表,k/v這種比較直觀模式存儲。
對於樹和圖這種在內存中復雜的數據結構,盡量不要在生產環境下使用,容易內存泄露,用簡單方式代替。對於圖結構,可以使用圖資料庫,如neo4j。對於樹結構,可以在資料庫中存儲一棵樹。實際上資料庫的存儲多用樹,如B樹、B-樹、B+樹、B*樹。
當然如果你寫加密演算法,這種要求極高的程序時,還是需要考慮性能最大化的,否則一般用存儲代替遍歷計算,因為內存和硬碟,現在很便宜了,而cpu還是一種寶貴的資源。
㈢ 什麼是H2資料庫
H2是一個開源的、純Java實現的關系型資料庫。支持網路版和嵌入版本,另外還支持二者的混合應用。H2具有較好的兼容性,支持相當標準的sql標准。H2使用時非常簡單,只有一個jar文件,可以直接嵌入到應用項目中。
H2的優勢:
h2採用純Java編寫,因此不受平台的限制。只有一個jar文件,十分適合作為嵌入式資料庫試用,提供了一個十分方便的web控制台用於操作和管理資料庫內容。
(3)h2database大數據擴展閱讀:
H2支持三種不同的運行模式,以適用於更多不同的應用場景。
1、嵌入式模式:
嵌入式模式下,應用與H2運行於同一個JVM中,H2被應用啟動。該模式也是性能最好的模式,也是官方推薦的模式。
2、伺服器模式
伺服器模式下,H2被H2 Server啟動(獨立於應用的JVM),應用與數據分離,應用使用遠程連接(如JDBC)訪問資料庫。類似於傳統資料庫的部署,伺服器可以與應用部署與同一台機器,也可以部署與另一台機器。
實際上,H2 Server本身也是使用嵌入式模式來啟動運行H2 Database的。顯然,由於伺服器模式是通過遠程連接訪問數據,其性能也要低於嵌入式模式。
3、混合模式
該模式是嵌入式模式與混合模式的融合。一個應用啟動嵌入式模式的H2 Database,其他應用可以將其作為伺服器模式來遠程訪問。
㈣ 什麼是H2資料庫
H2是Thomas Mueller提供的一個開源的、純java實現的關系資料庫。
H2是一個開源的嵌入式資料庫引擎,採用java語言編寫,不受平台的限制,同時H2提供了一個十分方便的web控制台用於操作和管理資料庫內容。H2還提供兼容模式,可以兼容一些主流的資料庫,因此採用H2作為開發期的資料庫非常方便。
H2最大的用途在於可以同應用程序打包在一起發布,這樣可以非常方便地存儲少量結構化數據。
它的另一個用途是用於單元測試。啟動速度快,而且可以關閉持久化功能,每一個用例執行完隨即還原到初始狀態。
H2的第三個用處是作為緩存,作為NoSQL的一個補充。當某些場景下數據模型必須為關系型,可以拿它當Memcached使,作為後端MySQL/Oracle的一個緩沖層,緩存一些不經常變化但需要頻繁訪問的數據,比如字典表、許可權表。不過這樣系統架構就會比較復雜了。
(4)h2database大數據擴展閱讀:
H2資料庫運行方式:
1、內存模式
資料庫只在內存中運行,關閉連接後資料庫將被清空,適合測試環境,連接字元串:jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1,如果不指定DBName,則以私有方式啟動,只允許一個連接。
2、嵌入式
資料庫持久化存儲為單個文件。連接字元串:jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE。~/.h2/DBName表示資料庫文件的存儲位置,如果第一次連接則會自動創建資料庫。
3、服務模式
H2支持三種服務模式:web server:此種運行方式支持使用瀏覽器訪問H2 Console。
CP server:支持客戶端/伺服器端的連接方式。
PG server:支持PostgreSQL客戶端。
㈤ IDEA 2019.2.3怎麼創建H2資料庫
打開idea軟體
點擊右下角的【database】按鈕
接下來單擊【+】按鈕
點擊【Data Source】按鈕
在依次點擊【H2】按鈕
下載驅動,填寫連接信息,點擊測試連接,測試成功之後,,之後點擊【OK】按鈕
㈥ h2 database jdk哪個版本
JDK自帶的資料庫,你指的是Derby吧,JDK6之後自帶的微型資料庫。默認安裝之後會放在jdk下面的db包中,你可看看下面的示例代碼: try { // load the driver Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); System.out.p
㈦ H2資料庫遇到Could not fetch the SequenceInformation from the database
最近使用H2時遇到了主鍵自動生成不能獲取到sequence的問題。使用的h2版本和詳細日誌如下:
經多方尋找:最終鎖定問題h2版本過低,據說高於1.3.175已經修復這個問題,於是升級到最新版本,完美解決。
㈧ H2創建內存資料庫伺服器,並啟動Web控制台
寫HelloWorld的方便工具。依靠初始化腳本,數據隨時重置。交流起來,也方便。
maven
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.194</version>
</dependency>
web.xml中配置
<context-param>
<param-name>db.url</param-name>
<param-value>jdbc:h2:mem:test</param-value>
</context-param>
<context-param>
<param-name>db.user</param-name>
<param-value>sa</param-value>
</context-param>
<context-param>
<param-name>db.password</param-name>
<param-value>sa</param-value>
</context-param>
<context-param>
<param-name>db.tcpServer</param-name>
<param-value>-tcpAllowOthers</param-value>
</context-param>
<listener>
<listener-class>org.h2.server.web.DbStarter</listener-class>
</listener>
<servlet>
<servlet-name>H2Console</servlet-name>
<servlet-class>org.h2.server.web.WebServlet</servlet-class>
<init-param><param-name>webAllowOthers</param-name><param-value></param-value></init-param>
<init-param><param-name>trace</param-name><param-value></param-value></init-param>
</servlet>
<servlet-mapping>
<servlet-name>H2Console</servlet-name>
<url-pattern>/h2/*</url-pattern>
</servlet-mapping>
㈨ H2資料庫
According to documentation, closing the last connection closes the database and when closing the database, the database is automatically compacted for up to 200 milliseconds
.
I guess these together may cause data loss & corruption when a
single connection is repeatedly created, data altered, connection
closed, new connection created, etc. - eventually resulting in
exception such as "Block not found in id [1, -128, 8, 42] [1.4.186/50]"
when trying to access the DB. Version 1.3.176 (last stable) works fine with this, version 1.4.186 crashes and corrupts data.
The
behavior can be fixed by appending ";DB_CLOSE_DELAY=-1" to the DB URL,
i.e. disabling autoclosing DB when last connection is closed. I though
it might have had something to do with 1.4's new "FS" file locking
protocol, but changing that to old "FILE" doesn't seem to help.
Of
course this is not how a DB connection is typically used - when using a
connection pool, this would go unnoticed - and I found this purely by
accident. But it's a bug anyway, isn't it?
Best Regards,
Joonas
狗哥找的
㈩ h2資料庫在linux伺服器怎麼使用
簡單來說就是用jdbc:h2:mem:h2db來建立內存模式,並建表, 然後jdbc:h2:tcp://192.168.20.141:8082/mem:h2db來訪問上面的內存資料庫 package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; imp...