它是H2的默认存储引擎,支持SQL、JDBC、事务、MVCC等。但也可以直接在应用程序中使用,而不使用JDBC或SQL。 chunk header chunk:1,block:2,len:1,map:6,max:1c0,next:3,pages:2,root:4000004f8c,time:1fc,version:1 chunk 长度代码是从0到31的数字,其中0表示页面(page)的最大长度为32个字节,1表示48个字节,2表示64,3表示96,4表示128,5表示192,以此类推,直到31表示超过1 MB。 的存储内核了,这个还是比较简单,容易掌握和扩展的。 说明一点:有些朋友有疑问,为什么 DawnSql 选择 h2 的存储内核,而不是去重新做一个?这里主要是为了高用性!h2 作为成熟的数据库存储内核,已经在实际的项目中应用了多年,它是经得起考验的。
开篇说明 现在做数据库一般都才有 C/C++ 获取其它编译型的语言,为什么会选择 h2 这种基于 java 的语言?会不会影响效率? 我们选择 h2 的一个重要原因就是,学习完后,可以直接应用到工程上。行不行直接在擂台上比一下就知道了。 图片 2、MVMap 保存或者删除数据的过程 图片 3、MVStore 提交的过程 在 MVStore 中添加或者是删除数据,为了效率都是在内存中执行的,并没有刷到磁盘上,如果要刷到磁盘上需要调用 commite 图片 4、MVMap 查询的过程 图片 说明一点:有些朋友有疑问,为什么 DawnSQL 选择 h2 的存储内核,而不是去重新做一个?这里主要是为了高用性! h2 作为成熟的数据库存储内核,已经在实际的项目中应用了多年,它是经得起考验的。如果新做存储内核,可能会给使用者带来高可用性上面的顾虑,所以我们再三权衡后选择更稳定可用性更高的方案。
Windows内核开发-3-内核编程基础 这里会深入讲解kernel内核的API、结构体、和一些定义。考察代码在内核驱动中运行的机制。最后把所有知识合在一起写一个有用的驱动。 本章学习要点: 1:通用内核编程指南 2:debug和release版本的区别 3:内核API 4:函数和错误代码 5:字符串 6:动态内存分配 7:内核驱动对象 8:设备对象 1 内核编程注意事项 B:只把指针作为全局变量,利用指针来动态创建 3:C++中的异常长处理不支持(try,catch,throw),因为Kernel只支持SEH 4:不支持C++标准库 驱动用纯C来写没有任何问题,但是也可以采用 3 The Kernel API 内核API 写的内核驱动程序可以使用已经存在的一些内核组件中提供的API,这个函数被称为内核API。 IRP_MJ_READ(3) 读操作,通常被ReadFile、ZwReadFile和其类似的读取API调用 IRP_MJ_WRITE(4) 写操作,通常被WriteFile、ZwWriteFile和其类似的
目标: 通过分析makefile,明白make uImage如何编译内核 把整个内核的makefile分成三类(makefile资料文档在linux-2.6.22.6/Documentation/build /makefiles.txt) <1>各级子目录makefile(每个子目录都有makefile) <2>/arch/arm/Makefile(架构相关的makefile) <3>顶层目录makefile obj-m += s3c24xx_buttons.o obj-m += ker_rw.o obj-$(CONFIG_LEGACY_PTYS) += pty.o obj-$(CONFIG_UNIX98 /arch/arm/Makefile中的uImage 3 分析顶层目录Makefile 3.1 顶层vmlinux生成过程 在顶层目录makefile中第484行得出: 484 all: vmlinux 其中,all就是直接 make 指令编译内核,显然make uImage和make都依赖于vmlinux(内核) 然后在746得到出vmlinux生成步骤: 746 vmlinux: $(vmlinux-lds
目标: 通过分析makefile,明白make uImage如何编译内核 把整个内核的makefile分成三类(makefile资料文档在linux-2.6.22.6/Documentation/build /makefiles.txt) <1>各级子目录makefile(每个子目录都有makefile) <2>/arch/arm/Makefile(架构相关的makefile) <3>顶层目录makefile obj-m += s3c24xx_buttons.o obj-m += ker_rw.o obj-$(CONFIG_LEGACY_PTYS) += pty.o obj-$(CONFIG_UNIX98 /arch/arm/Makefile中的uImage 3 分析顶层目录Makefile 3.1 顶层vmlinux生成过程 在顶层目录makefile中第484行得出: 484 all: vmlinux 其中,all就是直接 make 指令编译内核,显然make uImage和make都依赖于vmlinux(内核) 然后在746得到出vmlinux生成步骤: 746 vmlinux: $(vmlinux-lds
在一些快速项目项目中,会使用H2作为数据库 引入jar包 使用mybatis作为ORM pom.xml <dependency> <groupId>org.mybatis.spring.boot version>2.1.4</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2 SELECT * FROM person WHERE id=#{id}") Person selectById(int id); } 配置文件 resources/application.yml H2 不需要用户名和密码 spring: datasource: url: jdbc:h2:mem:testdb #配置数据库URL driver-class-name: org.h2.Driver 的SQL语法跟MySQL有一点出入,需要检查一下,另外就是不能漏掉建表语句后面的分号";" 参考 Spring Boot With H2 Database
背景:腾讯云CDN回源不支持Upgrade:h2,但是宝塔新版本极速安装默认开启了Upgrade:h2,现在教大家如何关闭Upgrade:h2(实际上这个功能目前还没有听说那个业务必须要使用h2) 1、 先测试是否开启h2 0[1].png 2、 打开apache配置文件方法,通过宝塔ssl终端或者登陆服务器操作(其实功能差不多),这里以宝塔举例,通过宝塔终端操作,点击宝塔终端输入"vim /www/ server/apache/conf/httpd.conf" image.png 3、 找到以下4行配置文件,默认是在154~157行 (vim 展示行数可以输入":set nu") <IfModule http2_module> ProtocolsHonorOrder On Protocols h2 http/1.1 </IfModule> 输入#注销这4行。 3.png
介绍 H2是Java编写的一款内嵌式数据库,支持内存和文件两种方式存储数据。 SpringBoot整合 pom.xml org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 runtime application.yml spring: datasource: # url: jdbc:h2:mem:testdb url: jdbc:h2:file:. /src/main/resources/data.sql driver-class-name: org.h2.Driver username: sa password: password h2: # web
在网站的基础SEO优化中,有一个重要的标签,那就是H1、H2和H3。但是切记,这3个标签不可以胡乱用,尤其是H1标签,接下来将带领大家解读这3种标签如何运用,在什么位置用。 一、H1、H2、H3三种标签的合理运用 在搜索引擎中,这三种标签很重要。不仅仅是在搜索引擎中,在其他方面这三个标签也代表着一个网站的优化程度。 三、H2标签的合理运用 H2标签一般用来作为段落的标记。 列表页可以使文章列表的链接采用H2标注。 四、H3标签的合理运用 一般情况下,H3标记同样具备自身的标记权重。H3一般作为页面中不是特别重要,但又需要标记的地方。如内容页段落中的小段落。 通常一个网站页面如果有H1、H2、H3都存在的情况下,就已经足以证明和解释页面的结构情况。所以通常网站UI的设计者一般不会使用H4以下的标签。除非是非常复杂的网站页面结构可能会出现。
PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 一、弱类型语言 php是弱类型语言。一个变量可以表示任意数据类型。 ) 布尔型boolean 全部类型如下: 1 /* regular data types */ 2 #define IS_UNDEF 0 3 Zend\zend_types.h 1 struct _zval_struct { 2 zend_value value; //用来保存具体的变量值 3 2. union u1 = 结构体v + type_info 3. 参考资料: http://www.php-internals.com/ 《PHP7内核剖析》 作 者: Jackson0714 出 处:http://www.cnblogs.com
H2 Database做为轻量级的内嵌数据库,功能十分强大,而且运行时只需要一个jar包即可,下表是官网的描述: 更详细的对比见官网页面: http://www.h2database.com/html/ <bean id="dataSource" class="org.h2.jdbcx.JdbcConnectionPool" 2 destroy-method="dispose"> 3 -- 初始化数据表结构 --> 2 <jdbc:initialize-database data-source="dataSource" 3 ignore-failures="ALL 的使用示例 四、控制台界面 H2还提供了一个可视化界面 Windows开始菜单->H2->H2 console,点击connect连接就行了 有不熟悉的函数啥的,直接在SQL输入区,输入 help,然后 run,下面就有帮助信息 完整的示例代码下载 (基于struts2的rest-plugin showcase,增加了mybatis3 + hibernate4 + spring4 + velocity
) 布尔型boolean 全部类型如下: 1 /* regular data types */ 2 #define IS_UNDEF 0 3 Zend\zend_types.h 1 struct _zval_struct { 2 zend_value value; //用来保存具体的变量值 3 2. union u1 = 结构体v + type_info 3. 9 zend_reference *ref; //引用类型 10 zend_ast_ref *ast; //内核使用的 参考资料: http://www.php-internals.com/ 《PHP7内核剖析》 作 者: Jackson0714 出 处:http://www.cnblogs.com
www.python.org/downloads/ 说明:python2.7.9以下的版本没有pip,安装依赖需要手动下载依赖包 python2的建议使用2.7.9以上版本,python3自带 tar.gz tar -zxvf setuptools*.tar.gz cd setuptools-0.6c11 python setup.py build python setup.py install 3、 jaydebeapi/zip/master 解压 jaydebeapi-master.zip ,执行 cd jaydebeapi-master python setup.py install 4、调用h2 :tcp://localhost/~/sea' username = 'sa' password = 'sa' jar = 'D:/Hadoop/H2/h2-2017-06-10/h2/bin/h2-1.4.196 .jar' # jar = 'D:/Hadoop/H2/h2gis-standalone/h2gis-dist-1.5.0.jar' conn = jaydebeapi.connect(dirver,url
于是查看了embedded datasource : h2 h2: 依赖: <dependency> <groupId>com.h2database</groupId> <artifactId >h2</artifactId> </dependency> h2: 驱动名称: org.h2.Driver h2: jdbc url: 内存模式: jdbc:h2:mem:test embedded: jdbc:h2:file:. /db/springboot 最关键的是,file要指定绝对路径,即不能jdbc:h2:file:db/springboot这样说报错,说没指定具体位置。 会生成一个文件 project/db/springboot.mv.db h2:创建表: DROP TABLE IF EXISTS `country`; CREATE TABLE `country` (
H2 H2 是标准 SQL 的关系型数据库,由 java 编写,整个 H2 是一个 jar 包(大约 2.5MB),其开源且使用 JDBC API 进行调用。 DISTINCT 查询的 ORDER BY 子句中不相关的表达式 支持 LIMIT / OFFSET 子句 可以使用 AUTO_INCREMENT 子句 允许数值和布尔值之间的不安全比较运算符 ………… 3. , age, email) VALUES (1, 'Jone', 18, 'test1@baomidou.com'), (2, 'Jack', 20, 'test2@baomidou.com'), (3, age=18, email=test1@baomidou.com), User(id=2, name=Jack, age=20, email=test2@baomidou.com), User(id=3, name=Tom, age=28, email=test3@baomidou.com), User(id=4, name=Sandy, age=21, email=test4@baomidou.com
目标: 1.给内核打补丁 2.配置 3.编译 4.重启 1 内核打补丁 1.1 通过FTP将Windows里system目录下linux-2.6.22.6.tar.bz2和linux-2.6.22.6 这是内核配置的过程。 (2) 我们的是arm架构,所以 cd arch/arm/configs 进入configs目录,如下图所示,发现与2440相像的就只有s3c2410_deconfig。 ? (3)返回到linux-2.6.22.6顶层目录下,通过make s3c2410_defconfig 命令来配置,如下图所示 配置完后可以看出最后出现“configuration written to :表示这选项能被模块化(按下M键有响应) 3 编译(2种配置方法) 3.1 输入 make 命令直接编译 3.2 输入 make uImage 命令生成uImage内核文件(头部uImage+真正的内核
h2dhArchive Downloads 1 h2数据库的下载地址 2. H2软件包目录结构 h2 |—bin | |—h2-1.1.116.jar //H2数据库的jar包(驱动也在里面) | |—h2.bat //Windows控制台启动脚本 | |—h2.sh //Linux控制台启动脚本 | |—h2w.bat //Windows控制台启动脚本(不带黑屏窗口) |—docs //H2数据库的帮助文档(内有H2 |—src //H2数据库的源代码 |—build.bat //windows构建脚本 |—build.sh //linux构建脚本 3. windows下启动软件 我们可以进入到h2的bin level: com.baomidou.mybatisplus.samples.quickstart: debug 5 github地址 GitHub – Yong-Wang-Brave/h2
h2数据库进入shell java -cp .. /lib/h2-1.4.200.jar org.h2.tools.Shell Welcome to H2 Shell 1.4.200 (2019-10-14) Exit with Ctrl+C [Enter ] jdbc:h2:~/test URL jdbc:h2:/usr/local/db/xxx-xxx [Enter] org.h2.Driver Driver [Enter]
为什么要裁剪内核? 因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值) 首先裁剪内核里无关的CPU/单板文件 通过vi .config,然后搜索2440,如下图所示 然后参考上图,make menuconfig 进入System Type —> SAMSUNG S3C24XX SoCs Support: ? ,去掉: < > Second extended fs support //ext2 < > Ext3 journalling file system support < 如下图所示,内核启动时,看到初始化了PS2鼠标驱动 ?
——《宿命》 在apache-shenyu中也默认用h2数据库作为默认数据库,方便开发、演示、学习、轻量化部署等 但是我们知道h2数据库是基于内存的嵌入式数据库,如何让其在运行动态执行sql呢? console进行: h2-console | 阿超 今天我们换一种方式,直接使用客户端工具连接,默认的url肯定是连不上的: spring: datasource: url: jdbc:h2 DB_CLOSE_DELAY=-1;MODE=MySQL; username: sa password: sa driver-class-name: org.h2.Driver 因为这里是h2 :mem:路径,即便换成file也是不允许两个连接的 我们换成tcp连接,再指定一下目录 spring: datasource: url: jdbc:h2:tcp://localhost/$ server started and connection is open."); System.out.println("URL: jdbc:h2:" + server.getURL