Atitit.各种 数据类型 ( 树形结构,表形数据 ) 的结构与存储数据库 attilax 总结

Atitit.各种  数据类型 ( 树形结构,表形数据  ) 的结构与存储数据库 attilax  总结

1. 数据结构( 树形结构,表形数据,对象结构 ) 1

2. 编程语言中对应的数据结构 java c# php ( Dic/Map      List    datatable ) 1

3. 数据库存储数据  1

4. 数据的表形显示( 多条记录 与单条记录 ) 2

5. ASP.NET 数据控件:GridView,DataList,Repeater ,DetailsView,FormView。 2

6. 树形数据常见的操作 2

6.1. 获取所有子节点 2

7. Java  操作注册表 2

7.1. 使用Preferences API (限定访问路径了) 2

7.2. 使用JNI
4

7.3. Jregistrykey 推荐 4

7.4. Jregistry 4

1. 数据结构( 树形结构,表形数据,对象结构 )

2. 编程语言中对应的数据结构 java c# php ( Dic/Map      List    datatable )

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected]

转载请注明来源: http://blog.csdn.net/attilax

3.  数据库存储数据

表形数据当然适合 常见的关系型数据库了。。

树形数据库(层次数据库ldap ,,,注册表 ) ,树形数据库可以使用LDAP来访问,相当于rmdb的sql

面向对象数据库  db4o

4. 数据的表形显示( 多条记录 与单条记录 )

5. ASP.NET 数据控件:GridView,DataList,Repeater ,DetailsView,FormView。

ASP.NET 数据控件综述:

1.前3个用于呈现多条记录,后面2个用于呈现单条数据明细,即常用的记录明细。

2.GridView和DetailsView控件的布局固定,自定义数据显示的布局功能有限,一般适合布局简单的

数据呈现。3.DataList,Repeater和FormView数据控件都有很强的自定义布局能力,如果数据呈现

需要较为复杂的布局方案,这3个控件是首选。

6. 树形数据常见的操作

6.1. 获取所有子节点

7. Java  操作注册表

7.1. 使用Preferences API (限定访问路径了)

由于java程序是“write once, run everywhere”,用java读写注册表,那程序的跨平台性就差了。java对注册表的操作,在jdk1.4以前的版本中,那是不可能的,只能用 JNI来实现;然而jdk1.4之后提供的prefs包可以操作windows注册表,不过定死了root只在SOFTWARE/JavaSoft /prefs下,估计也是出于这种两难吧,又要保证所谓平台无关,还要照顾大家对windows的依赖

。而 JDK 提供操作 Windows 的 API 也就是 Preferences,因为这个 API 也是跨平台的,所功能比较弱,在 Win32 下只能用来操作 HKCU\Software\JavaSoft 和 HKLM\Software\JavaSoft 下及子节点的数据。

自由访问注册表其他键的值光用 Java 是做不到的,必然方案就是 JNI,

Preferences API并不是为访问Windows注册表而设计的,这是值得指出的一点。

我们之所以会有上面的误解是由于Sun的Windows版本的JDK在实现Preferences API时使用了Windows注册表作为存储库,即我们用Preferences API存储的数据会保存到Windows注册表中,这样Preferenes API也就有了访问Windows注册表的能力。但是换到其它的平台或其它厂商的JDK实现又会怎么样呢?这个问题是和Preferences API的实现相关的,我们没有办法回答。

如果程序不关心存储库的细节,只是要找一个存放数据的地方,那么Preferences API很合适。

Preferences API也是有局限的,请您考虑两个问题:

· 一个Java软件,这次我在Sun的JDK上运行并使用Preferences API保存了我的个人喜好,下次我在IBM的JDK上运行,这时我的个人喜好还可以通过Preferences API得到吗?可能可以也可能不可以,这时的行为是由Sun和IBM的Preferences API实现决定的。(在相同的JDK实现上可以使用Preferences API来在不同的程序间共享数据)

· 一个Java软件需要让用户设置是否和操作系统一起启动,类似的需求还很多。这类需求就是要求Java程序有真正的和相关操作系统协同的能力。这种能力不是Preferences API的设计目标。

java读写注册表需要用到两种方式:

1. java.util.prefs.* 中的包

其中 Preferences.systemRoot() 得到的是 HKEY_LOCAL_MACHINE/Software/JavaSoft/prefs 可以在此位置之下方便的进行注册表的        读写

Preferences.userRoot() 得到的是 HKEY_LOCAL_USER/Software/JavaSoft/prefs,可以在此位置下进行注册表

但是对其他

位置操作就不方便。

示例代码:

import java.util.prefs.*;

public class Registery {

String[] keys = {"aaa", "bbb", "ccc"};

String[] values = {"1", "2", "3"};

//把相应的值储存到变量中去

public void writeValue() {

// HKEY_LOCAL_MACHINE/Software/JavaSoft/prefs下写入注册表值.

Preferences pre = Preferences.systemRoot().node("/javaplayer");

for (int i = 0; i < keys.length; i++) {

pre.put(keys, values);

}

}

public static void main(String[] args) {

Registery reg = new Registery();

reg.writeValue();

}

}

执行代码的结果会在 HKEY_LOCAL_MACHINE/Software/JavaSoft/prefs/javaplayer 位置插入三个键值

7.2. 使用JNI

Windows操作系统提供了操作注册表的API,因此用JNI将Java和这些API连接起来我们就获得了用Java操作注册表的能力。这说起来有些简单,实现起来却需要处理大量的细节。幸运的是这样的工作已经有人做了,我们要感谢他们。下面我们就来看看其中的一个包。

com.ice.jni.registry包是通过JNI(Java native interface)实现的Windows注册表操作API,可以用来访问、修改和导出Windows注册表。现在这个包已经公开了,可以放心的使用而不 必担心license的问题,并且包括一个构建好的DLL和Java、C的源代码。它可以在Java 1.1和更高的版本上工作。

2. 开源读写注册表的库 registry-3.1.3 主页地址:http://www.trustice.com/java/jnireg/index.shtml

下载后需要将ICE_JNIRegistry.dll放到目前正在用的 jdk的bin目录下

7.3. Jregistrykey 推荐

7.4. Jregistry

jRegistry通过JNI技术来访问WINDOWS注册表API。

时间: 2024-10-25 00:48:11

Atitit.各种 数据类型 ( 树形结构,表形数据 ) 的结构与存储数据库 attilax 总结的相关文章

日思夜想之用表组织数据

用表组织数据 1.数据完整性(指数据库的数据能够正确地反映实际情况)(通过数据库表的设计和约束实现) 1.实体完整性约束(表中每一行数据反映不同的实体 即不存在相同的数据行) 2.域完整性约束(指给定列输入的有效性) 3.引用完整性约束(对于两张表而言  保持表之间已定义的关系) 4.自定义完整性约束() 2.主键和外键 主键(Primary Key): 用来唯一标识表中的每一行的列,称为该表的主键(用于强制表的实体完整性) 注意: 一个表只能有一个主键,且不允许有空值(null),若表中没有主

专利:结构化大数据通信协议

发明专利技术 结构化大数据通信协议 发明人:樊永正 [email protected] 技术领域 结构化大数据通信协议是一种通信协议,也是一种让数据成为合格的结构化大数据的技术.结构化大数据通信协议也类似于ETL,ETL是处理现有的信息系统所产生的数据的问题,而结构化大数据通信协议是在设计信息系统之初就开始预防数据产生问题.ETL是为数据治病,结构化大数据通信协议是预防数据产生疾病.ETL是对现有技术所产生的问题进行小修小补,结构化大数据通信协议提出了新的数据处理方案.结构化大数据通信协议也是一

利用Sql实现将指定表数据导入到另一个数据库示例

因为工作中经常需要将数据从一个数据库导入到另一个数据库中,所以将这个功能写成一个存储过程,以方便调用.现在粘贴出来供大家参考: 注意:1,以下示例中用到了syscolumns,sysobjects等系统视图,在sql2005及以后的版本中,大家也可以使用sys.columns与sys.objects来代替,只要修改对应的字段即可.2,以下示例还用到了set identity_insert设置,有对该设置不太清楚的朋友可以点击链接查看其用法.3,结合sys.tables表与游标,大家可以循环调用以

衡阳高防服务器租用-数据从sqlserver导入mysql数据库的体验

衡阳高防服务器租用-数据从sqlserver导入mysql数据库的体验 第一种是安装mysql ODBC,利用sql server的导出功能,选择mysql数据源,进行数据的直接导出,这种方法很简便,但是针对实际应用有很多弊端,最主要体现就是数据类型问题,首先,sql server数据库中的ntext,image等数据类型的数据无法直接写入到mysql数据库中,据说只要稍加改动就可以,可惜偶这只菜鸟还没想到如何改动,其次,因为偶在mysql中的数据库设计中将时间都设成int型(保存的是时间戳),

Atitit 常见的树形结构 红黑树 &#160;二叉树 &#160;&#160;B树 B+树 &#160;Trie树&#160;attilax理解与总结

Atitit 常见的树形结构 红黑树  二叉树   B树 B+树  Trie树 attilax理解与总结 1.1. 树形结构-- 一对多的关系1 1.2. 树的相关术语: 1 1.3. 常见的树形结构 红黑树  二叉树   B树 B+树  Trie树2 1.4. 满二叉树和完全二叉树..完全二叉树说明深度达到完全了.2 1.5. 属的逻辑表示 树形比奥死,括号表示,文氏图,凹镜法表示3 1.6. 二叉树是数据结构中一种重要的数据结构,也是树表家族最为基础的结构.3 1.6.1. 3.2 平衡二叉

菜单数据(树形)结构的使用-- ---数据的列存储转换为行存储

一.菜单数据表中的存储结构 二.转换后的数据结构 三. 转换过程 1.确定菜单数据的最大级别 /// <summary> /// 获得Nature定义的最大目录级别,以便于确定Nature的DataTable表结构中的列数目 /// </summary> /// <returns></returns> public int GetMaxNatureLevel() { if (dtNature == null && dtNature.Rows.

如何查看数据表及数据表结构

我们创建好了数据表,那么我们该怎么去查看数据表列表呢? 一.查看数据表列表的语法结构 SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr] FROM db_name表示,我们不仅可以查看当前数据库里的数据表,还可以查看别的数据库里的数据表 mysql> show tables;+----------------+| Tables_in_test |+----------------+| tb1 |+----------------+1

SQL批量更新具有树形结构表Path字段

如上图所示,需要更新该表中Path字段,如ID=14的Path值:-1,ID=17的Path值:-1.14,ID=20的Path值:-1.14.18.19 步骤1.创建函数 Create FUNCTION [dbo].[F_Org] ( @id int ) RETURNS TABLE AS RETURN ( with testTable as( select UpperID from Core_DeptInfo where ID=@id union all select Core_DeptInf

mysql表ibdata1数据切换到单个表储存、默认导出的表结构

释放MySQL ibdata1文件的空间 mysqldump选项: --add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句: --add-locks:备份数据库表时锁定数据库表: --all-databases:备份MySQL服务器上的所有数据库: --comments:添加注释信息: --compact:压缩模式,产生更少的输出: --complete-insert:输出完成的插入语句: --databases:指定要备份的数据库: --default-charact