㈠ 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...