文档库 最新最全的文档下载
当前位置:文档库 › HashMap和Hashtable 之源代码详解

HashMap和Hashtable 之源代码详解

HashMap和Hashtable 之源代码详解
HashMap和Hashtable 之源代码详解

HashMap和Hashtable 之源代码详解

Hashtable从JDK1.0就已经有了, 所以让我们先来看看它是怎么工作, 然后有浅入深, 来研究HashMap的原理, 以及两者的不同点.

Hashtable有几个主要的字段, 如下,

/**

* The hash table data.

*/

private transient Entry[] table;

/**

* The total number of entries in the hash table.

*/

private transient int count;

/**

* The table is rehashed when its size exceeds this threshold. (The

* value of this field is (int)(capacity * loadFactor).)

*

* @serial

*/

private int threshold;

其中最重要的就是那个table数组了. 它就是整个hashtable的基本数据结构! 在来看一下这个字段

private transient Entry[] table;

可以看到, hashtable的基本数据结构就是, 一个包涵Entry类的二维数组. 而这个Entry类是hashtable的内在类, 它其实是一个单向链, 让我们详细分析一下.

private static class Entry implements Map.Entry {

int hash;

K key;

V value;

Entry next;

...

...

看到这里有没有想到学校里教的数据结构原理这门课呢? Entry类就是定义了一个很简单的单向链结构, 它里面包括key, value和下个Entry类的对象next.

在这里我在强调一下, hashtable的数据结构就是一个包涵单向链的二维数组.

接下来让我们来看看hashtable的构造器是长的什么样的.

最长用的

public Hashtable() {

this(11, 0.75f);

}

这个构造器调用了另外一个构造器

public Hashtable(int initialCapacity, float loadFactor) {

if (initialCapacity < 0)

throw new IllegalArgumentException("Illegal Capacity: "+

initialCapacity);

if (loadFactor <= 0 || Float.isNaN(loadFactor))

throw new IllegalArgumentException("Illegal Load: "+loadFactor);

if (initialCapacity==0)

initialCapacity = 1;

this.loadFactor = loadFactor;

table = new Entry[initialCapacity];

threshold = (int)(initialCapacity * loadFactor);

}

细读代码后, 我们发现这个构造器构造了table字段和threshold. Table前面已经详细讲了, 那么这个threshold又是什么东东呢?

其实这个threshold对hashtalbe的性能影响是很大的! 因为table是个数组, 如果在hashtable中保存的实体大于一定的数量后, 对数据的读写就会有很慢, 那是因为, 很多数据都保存在entry类的单向链中, 每次读写都要比对链中所有的数据, 链越长读写就越慢.

所以当数据容量大于threshold的时候, hashtable就会做rehash(), rehash把table的容量扩大一倍, 再把从前在table里的数据统统搬回新的table. 这样的一个过程, 开销是多么的大呀.

threshold = (int)(initialCapacity * loadFactor);

Hashtable类提供了构造涵数, 用户可以自定, intitialCapacity和loadFactor. 对于那些大概知道容量的hashtable, 用户应该自定intitialCapacity. 这样的话, 就可以省去一大笔rehash的开销.

现在让我们来看hashtable的put和get操作

public synchronized V get(Object key) {

Entry tab[] = table;

int hash = key.hashCode();

int index = (hash & 0x7FFFFFFF) % tab.length;

for (Entry e = tab[index] ; e != null ; e = e.next) {

if ((e.hash == hash) && e.key.equals(key)) {

return e.value;

}

}

return null;

}

先来看get方法, get可谓是hashtable中的最基本方法了, 它是通过key来拿到hashtable中的value.

int hash = key.hashCode();

int index = (hash & 0x7FFFFFFF) % tab.length;

从key拿到hashCode, 从hashCode再计算出在table中的index, 也就是在数组中的第几个列.

至于为什么要与 0x7FFFFFFF, 那是hashtable 提供的hash算法, hashMap提供了不同的算法, 用户如果要定义自己的算法也是可以的. 如果要知道不同的具体算法, 就google or 百度一下吧.

好了, 现在我们有了index, 就可以到table数组里的entry单向链去找value啦.

for (Entry e = tab[index] ; e != null ; e = e.next) {

if ((e.hash == hash) && e.key.equals(key)) {

return e.value;

}

}

for语句就是简单的检索entry的单链, if语句检查key是否相同. 这里就遇到了java学习中的一个重大知识点. hasCode()和equal()的关系.

大家都学过如果hasCode()的值相同的话, equal不一定相同, 而如果equal相同的话, hasCode一定要相同. 但那是为什么呢? 其实答案就在上面的代码中!

Hashtable的数据结构是一个包涵单向链的二维数组. 从hasCode我们得到hash和index, 并得以确定这个key在table数组中的第几个列, 然而这显然是不够的, 因为, entry类是一个单向列, 它可以是一个, 也可能是很多个key组成, 那么要从一系列有着相同hasCode的entry中找到, 我们所要的key的话, 就要用equals了. 只有两个key是相等的, 那才是我们要找的. 找到key之后, 只要简单的把value返回就好了. 如果对entry 类还有疑问的话, 请参考前面的解释.

public synchronized V put(K key, V value) {

// Make sure the value is not null

if (value == null) {

throw new NullPointerException();

}

// Makes sure the key is not already in the hashtable.

Entry tab[] = table;

int hash = key.hashCode();

int index = (hash & 0x7FFFFFFF) % tab.length;

for (Entry e = tab[index] ; e != null ; e = e.next) {

if ((e.hash == hash) && e.key.equals(key)) {

V old = e.value;

e.value = value;

return old;

}

}

modCount++;

if (count >= threshold) {

// Rehash the table if the threshold is exceeded

rehash();

tab = table;

index = (hash & 0x7FFFFFFF) % tab.length;

}

// Creates the new entry.

Entry e = tab[index];

tab[index] = new Entry(hash, key, value, e);

count++;

return null;

}

接下来再来看看put方法, 理解了get, put就很容易弄明白了.

首先, 要放入hashtable的value不能是null, 否则就报错.

其次, 然后要确保key不能已经在hashtable里面, 有的话, 就返回value.

再次, 检查是否容量已经太大, 如果太大话就rehash, 这会是一个很浪费资源的方法, 请参考前文.

最后, 也是最重要的, 我们要把key-value保存到hashtable中去.

Entry e = tab[index];

tab[index] = new Entry(hash, key, value, e);

1.拿到当前在table数组中的entry对象.

2.根据传入的key和value建一个新的entry并赋予给当前的table的index中

protected Entry(int hash, K key, V value, Entry next) {

this.hash = hash;

this.key = key;

this.value = value;

this.next = next;

}

这是entry类的构造函数. 简单的说, 就是在单链的最前端加了个新的entry对象.

从这里也可以看出, 对于那些后写入的object, 反而可以以比较快的速度读出, 那是因为后写入的object, 总是在链的前端.

看完了hashtable, 我们在来看看hashMap

hashMap可以算作是hashtable的升级版本, 最早从1.2开始有的.

整体上hashMap对hashtable类优化了代码. 比如说, 消除了hardcoding, 增加了code reuse等等.

但是, 两者之间最主要的不同有两点.

1.hashMap的读写是unsynchronized, 在多线程的环境中要注意使用

而hashtable是synchronized

这两者的不同是通过在读写方法上加synchronized关键字来实现的.

hashMap

public V put(K key, V value)

public V get(Object key)

hashtable

public synchronized V get(Object key)

public synchronized V put(K key, V value)

可能有人问, 能synchronized, 能线程安全好啊. 为什么不要呢?

这里其实还是一个效率的问题. 对于线程安全的方法, 系统要进行加锁, 减锁操作. 性能会有很大的影响. 由于很多程序是在单线程或者说是线程安全的情况下工作的, 所以用synchronized就显得多余了.

3.第二个不同是hashMap可以放空值, 而hashtable就会报错.

hashMap

public V put(K key, V value) {

if (key == null)

return putForNullKey(value);

hashtable

public synchronized V put(K key, V value) {

// Make sure the value is not null

if (value == null) {

throw new NullPointerException();

}

室内设计经典布光思路及灯光讲解

室内设计经典布光思路及灯光讲解 有个著名而经典的布光理论就是“三点照明”。笔者在此简述一 下:三点照明,又称为区域照明,一般用于较小范围的场景照明。如果场景很大,可以把它拆分成若干个较小的区域进行布光。一般有三盏灯即可,分别为主体光、辅助光与背景光。 主体光:通常用它来照亮场景中的主要对象与其周围区域,并且担任给主体对象投影的功能。主要的明暗关系由主体光决定,包括投影的方向。主体光的任务根据需要也可以用几盏灯光来共同完成。如:主光灯在1 5度到30度的位置上,称顺光;在45度到90度的位置上, 称为侧光;在90度到120度的位置上成为侧逆光。主体光常用聚光灯来完成。笔者喜欢把主体光的亮度设置为240左右。辅助光: 又称为补光。用一个聚光灯照射扇形反射面,以形成一种均匀的、非直射性的柔和光源,用它来填充阴影区以及被主体光遗漏的场景区域、调和明暗区域之间的反差,同时能形成景深与层次,而且这种广泛均匀布光的特性使它为场景打一层底色,定义了场景的基调。由于要达到柔和照明的效果,通常辅助光的亮度只有主体光的 5 0%-80% 背景光:它的作用是增加背景的亮度,从而衬托主体,并使主体对象与背景相分离。一般使用泛光灯,亮度宜暗不可太亮。 布光的顺序是:1)先定主体光的位置与强度;2)决定辅助光的强度与角度;3)分配背景光与装饰光。这样产生的布光效果应该能达到主次分明,互相补充。布光还有几个地方需要特别注意:1)灯光宜精不宜多。过多的灯光使工作过程变得杂乱无章,难以处理,显

示与渲染速度也会受到严重影响。只有必要的灯光才能保留。另外要注意 灯光投影与阴影贴图及材质贴图的用处,能用贴图替代灯光的地方最好用贴图去做。例如要表现晚上从室外观看到的窗户内灯火通明的效果,用自发光贴图去做会方便得多,效果也很好,而不不要用灯光去模拟。切忌随手布光,否则成功率将非常低。对于可有可无的灯光,要坚决不予保留。 2)灯光要体现场景的明暗分布,要有层 次性,切不可把所有灯光一概处理。根据需要选用不同种类的灯光,如选用聚光灯还是泛光灯;根据需要决定灯光是否投影,以及阴影的浓度;根据需要决定灯光的亮度与对比度。如果要达到更真实的效果,一定要在灯光衰减方面下一番功夫。可以利用暂时关闭某些灯光的方法排除干扰对其他的灯光进行更好地设置。 3)要知道max中的灯光是可以超现实的。要学会利用灯光的“排除” 与“包括”功能,绝对灯光对某个物体是否起到照明或投影作用。例如要模拟烛光的照明与投影效果,我们通常在蜡烛灯芯位置放置一盏泛光灯。如果这盏灯不对蜡烛主体进行投影排除,那么蜡烛主体产生在桌面上的很大一片阴影可能要让我们头痛半天。在建筑效果图中,也往往会通过“排除”的方法使灯光不对某些物体产生照明或投影效果。 4)布光时应该遵循由主体到局部、由简到繁的过程。对于灯光效果的形成,应该先调角度定下主格调,再调节灯光的衰减等特性来增强现实感。 最后再调整灯光的颜色做细致修改。 灯光的分类及其属性 在3DMA中,灯光分为标准灯光与光度学灯光,还有制作室内效果图

20个代码生成框架

20个代码生成框架 11.1 CodeSmith http: 官方论坛: http: 版权形式:30天试用 开源:否需要先注册确认后才能下载 1.2 MyGenerator MyGenerator是又一个国外很不错的代码生成工具,有人觉得比CodeSmith 简单、好用。 所有api可以在帮助菜单中找到。 http: 官方论坛: 版权形式: 免费 开源:否 1.3 NHibernate. http: 官方论坛: 版权形式:

免费 开源:否 1.4湛蓝.Net代码生成器 http: 官方论坛: http: 版权形式: 免费 开源:否 1.5动软.NET代码自动生成器 一款人气很旺的免费C#代码生成器 http: 官方论坛: 版权形式: 免费 开源:否 1.6 CodePlus 专为sql server c#语言设计的代码生成器,功能还是很强大http: 官方论坛:

版权形式: 需要少量的注册费用 开源:否下载地址很神秘 1.7 CodeMaker http: 官方论坛: 版权形式: 免费 开源:否 https://www.wendangku.net/doc/fd5022561.html,代码生成器 可以使用本工具生成https://www.wendangku.net/doc/fd5022561.html,和C#语言的代码,以及三层架构与ORM架构代码,并且使用的ORM持久化组件是开源的,您可以在本软件的安装目录下找到它 官方论坛: 版权形式: 免费 开源:否 1.9 BMW业务模型及代码生成器 一款人气很旺的免费C#代码生成器

官方论坛: 版权形式: 免费 开源:否 1.10飞鹰CoolCoder 专门为采用nhibernate做关系对象影射架构的系统提供代码的工具,简单易用,虽然不提供源码,我们可以用反编译工具对其反编译看源码。这是个很不错的学习机会。 官方论坛: 版权形式: 免费 开源:否 1.11 AutoCoder自动代码生成器 AutoCoder自动代码生成器是一个根据模板自动生成代码的代码生成工具,根据模板的不同,可以生成任何语言(如: ASP、C#、C++BUILDER、DELPHI、JAV A、JSP、PHP、V B、https://www.wendangku.net/doc/fd5022561.html,……),不同层次结构(B/S、C/S、n-tiger……),基于不同数据库(ORACL E、MSSQL、MYSQL、

word域代码的详解

word域代码详解 十个特殊指令(域开关),分别是: 1.数组\A、 2.括号\B、 3. 位移\D、 4.分式\F、 5.积分\I、 6.列表\L、 7.重叠\O、 8.根号\R、 9.上下标\S、 10.框\X, 每个开关又有若干个选项,用以精确调节格式。 1. 数组开关\A(): 按行顺序将数组元素排列为多列 域代码:{EQ \a(100,2,31) } 讲解:{EQ\列表(100,2,31排成一列)} 可用参数:\al左对齐;\ac居中;\ar右对齐;\con元素排成n 列;\vsn行间增加n 磅;\hsn列间增加n磅 \al左对齐 域代码:{EQ \a\al(100,2,31)} 讲解:{EQ \列表\左对齐(100,2,31)} \ac居中 域代码:{EQ \a\ac(100,2,31) } 讲解:{EQ \列表\居中对齐(100,2,31)} \ar右对齐 域代码:{EQ \a\ar(100,2,31) } 讲解:{EQ \列表\右对齐(100,2,31)} \con元素排成n列 域代码:{EQ \a\co3(10,2,31,0,1,0,14,3,55)} 讲解:{EQ \列表\元素排成3 列(10,2,31,0,1,0,14,3,55)} \vsn 行间增加n磅 域代码:{EQ \a\co3\vs2(10,2,31,0,1,0,14,3,55)} 讲解:{EQ \列表\元素排成3列\行间增加2磅} \hsn 列间增加n磅 域代码:{EQ \a\co3\vs2\hs4(10,2,31,0,1,0,14,3,55)} 讲解:{EQ \列表\元素排成3列\行间增加2磅\列间增加4磅} 2. 括号开关\B(): 用大小适当的括号括住元素。 域代码:{EQ \b( \a(100,2,31)) } 讲解:{EQ \加括号( \数组(100,2,31))} 可用参数:左括号使用字符* \lc\*;右括号使用字符* \rc\* ;左右括号都使用字符* \bc\* \lc\* 左括号使用字符* 域代码:{EQ \b\lc\|( \a(100,2,31))} 讲解:{EQ \加括号\左括号使用字符|( \数组(100,2,31)) } \rc\* 右括号使用字符* 域代码:{EQ \b\rc\|( \a(100,2,31)) } 讲解:{EQ \加括号\右括号使用字符|( \数组(100,2,31))} \bc\* 左右括号都使用字符*

光线跟踪讲解及源代码

计算机图形学期末作业 作业题目:Ray Tracing算法的实现 姓名:李海广 学号:S130201036 任课教师:秦红星

摘要 Ray Tracing算法又叫光线跟踪算法,它能通过递归方法逐个计算每个像素点的光强,然后就可以绘制出高度真实感的图像,因此该方法在图形学领域得到了广泛的应用。Ray Tracing算法的思想还能应用到移动通信终端定位领域,该领域里的射线跟踪法与此算法思想类似。MFC是微软公司提供的一个类库,以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC在处理Windows窗口应用程序方面具有很大的优势,因此,本文使用MFC在VC6.0里实现Ray Tracing算法,并给出了该算法的详细讲解。 【关键词】Ray tracing 光线跟踪递归像素光强 MFC C++

目录 1.Ray Tracing算法概述 (1) 1.1Ray Tracing算法简介 (1) 1.2Ray Tracing算法的实现原理 (1) 2.Ray Tracing算法的具体实现 (2) 2.1算法的实现环境 (2) 2.2实现算法的C++程序简介 (2) 2.3算法的具体实现过程 (3) 2.4 程序运行结果 (11) 3.总结 (11) 3.1 通过该算法学到的东西 (11) 3.2本程序未完成的任务 (12) 4.参考文献 (12)

1.Ray Tracing算法概述 1.1Ray Tracing算法简介 光线跟踪(Ray tracing),又称为光迹追踪或光线追迹,它是来自于几何光学的一项通用技术,它通过跟踪与光学表面发生交互作用的光线从而得到光线经过路径的模型。它用于光学系统设计,如照相机镜头、显微镜、望远镜以及双目镜等。这个术语也用于表示三维计算机图形学中的特殊渲染算法,跟踪从眼睛发出的光线而不是光源发出的光线,通过这样一项技术将具有一定数学模型的场景显现出来。这样得到的结果类似于光线投射与扫描线渲染方法的结果,但是这种方法有更好的光学效果,例如对于反射与折射有更准确的模拟效果,并且效率非常高,所以在追求高质量结果时我们经常使用这种方法。 在光线跟踪的过程中,我们要考虑许多因素。要跟踪的光线包括反射光线、散射光线和镜面反射光线,利用递归方法并且设定一定的阀值来跟踪;在计算光强度时,我们要考虑场景中物体的反射系数、漫反射系数和镜面反射系数,还有交点处的法向量,出射光线的方向向量;在求视线以及反射光线和场景中物体的交点时,要计算出离眼睛以及出射点最近的交点作为击中点,得到击中点之后,我们就可以计算出击中点的坐标。最终,通过三个公式计算出每一个像素点处三种光线的光强值,再将三个光强值相加,就得到了该像素点出的总光强值,最后将颜色缓冲器中的三种颜色值输出到屏幕上,就得到了我们需要的光线跟踪图像。 1.2Ray Tracing算法的实现原理 (1)对图像中的每一个像素,创建从视点射向该像素的光线; (2)初始化最近时间T为一个很大的值,离视点最近的物体指针设为空值; (3)对场景中的每一个物体,如果从视点出发的光线和物体相交,且交点处的时间t比最近时间T小,则将t的值赋给最近时间T,并设置该物体为最近物体,将物体指针指向该物体; (4)经过第三步的计算后,如果最近物体指针指向空值NULL,则用背景色填充该像素。如果该指针指向光源,则用光源的颜色填充该像素;

用域代码处理Word页码

用域代码处理Word页码 一、插入基本页码 例如某份文档,当前设置为每页两栏,现在的要求是在每一栏的下面都插入相应的页码,也就是将原来的第一页设置为1、2页,第二页设置为3、4页,以此类推。简单分析一下,其实左侧栏的页码数可以由公式“当前页码×2-1”后得到,右侧栏的页码数可以由公式“当前页码×2”得到,这里以Word 2007为例进行说明,具体操作步骤如下: 第1步:切换到“页码布局”标签页,执行“分栏→两栏”命令,将当前文档拆分为两栏,至于其他的要求可以暂时取默认设置,效果如图1所示。 图1 Word 2007执行分栏(点击看大图) 第2步:切换到“插入”标签页,在“页脚”下拉菜单中选择“空白”,接下来请在需要添加页码的位置处分别画出两个文本框,右侧栏的文本框可以通过复制获得,见图2。 图2 Word 2007画出文本框(点击看大图 二、插入域代码 第3步:将光标定位在文本框中,注意此时请仍旧切换到“插入”标签页,在“文档部件”下拉菜单中选择“域”,此时会弹出图3所示的对话框,在“类别”下拉列表框中选择“等式和

公式”,在“域名”列表框中选择“= (Formula)”,记得请去除右下角的“更新时保留原格式”复选框。 图3 Word 2007插入域(点击看大图) 单击“确定”按钮,此时文本框中的文字会变为“!异常的公式结尾”,其实这并非错误,只是一行域代码而已,按下“Alt+F9”组合键后会正常显示“{ = }”原形;将光标定位在“=”的后面,继续插入“编号”中的“Page”域,注意请仍旧去除“更新时保留原格式”的复选框,插入后域代码变为“{ ={ PAGE } }”。 第4步:现在,我们应该根据事先的分析,将这个已插入的域更改为“{ ={ PAGE }*2-1 }”,接下来再按照同样的方法,将右侧栏的域代码更改为“{ ={ PAGE }*2 }”(见图4)。 图4 Word 2007修改已插入域(点击看大图) 完成上面的工作后,我们就可以按下“Alt+F9”组合键进行查看,注意请将两个文本框的“线条”的颜色设置为“无颜色”,如图5所示,效果不错吧?如果有需要的话,你可以在页码的前后分别输入“第”和“页”,如果是一页分成了三栏,那么它的域代码应该分别设置为

三维影像渲染基本概要

三维图像渲染基本概要 渲染(Render)是用软件从模型生成图像的过程。模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。图像是数字图像或者位图图像。渲染这个术语类似于“艺术家对于场景的渲染”。另外渲染也用于描述计算视频编辑文件中的效果以生成最终视频输出的过程。 渲染是三维计算机图形学中的最重要的研究课题之一,并且在实践领域它与其它技术密切相关。在图形流水线中渲染是最后一项重要步骤,通过它得到模型与动画最终显示效果。自从二十世纪七十年代以来随着计算机图形的不断复杂化,渲染也越来越成为一项重要的技术。 渲染的应用领域有:计算机与视频游戏、模拟、电影或者电视特效以及可视化设计,每一种应用都是特性与技术的综合考虑。作为产品来看,现在已经有各种不同的渲染工具产品,有些集成到更大的建模或者动画包中,有些是独立产品,有些是开放源代码的产品。从内部来看,渲染工具是都是根据各种学科理论经过仔细设计的程序,其中有:光学、视觉感知、数学以及软件开发。 三维计算机图形的预渲染或者实时渲染的速度都非常慢。预渲染的计算强度很大,通常是用于电影制作;实时渲染经常用于三维视频游戏,通常依靠带有三维硬件加速器的图形卡完成这个过程。 使用在图像初步建立(通常使用网格骨架构建)之后,就要进行

渲染了。渲染将会在上面添加位图纹理或者程序纹理、照明、凸凹纹理映射以及相对于其它物体的位置。得到的结果就是消费者或者观察者所能看到的完整图像。 对于电影动画来说,需要渲染几幅或几帧图像,并且将这些图像在动画制作程序中将它们连结在一起。大多数的三维图像编辑程序都能够完成这项工作。 特性 渲染的图像有许多显著的特性,渲染研究的领域也主要集中在寻找高效模拟这些特性的方法。有些特性只与特定的算法有关,有些却与多个算法相关。 ●浓淡处理 — 表面颜色与亮度随光照的变化 ●纹理映射 — 在表面生成细节的方法 ●凸凹纹理映射 — 在表面模拟小凸凹的方法 ●距离模糊 — 光照穿过不清澈的大气时的模糊 ●阴影 — 阻挡光照的效果 ●柔和阴影 — 非常微弱的光源生成的暗处 ●反射 — 镜子或者非常光滑的反射 ●透明 — 固体明显允许光线穿过 ●半透明 — 光线通过固体高度散射 ●折射 — 与透明相关的光线弯曲

word域功能详解

1.什么是域 简单地讲,域就是引导Word在文档中自动插入文字、图形、页码或其他信息的一组代码。每个域都有一个唯一的名字,它具有的功能与Excel中的函数非常相似。下面以Seq和Date域为例,说明有关域的一些基本概念。 形如“{Seq Identifier [Bookmark ] [Switches ]}”的关系式,在Word中称为“域代码”。它是由: 域特征字符:即包含域代码的大括号“{}”,不过它不能使用键盘直接输入,而是按下Ctrl+F9组合键输入的域特征字符。 域名称:上式中的“Seq”即被称为“Seq域”,Word 2003提供了9大类共74种域。 域指令和开关:设定域工作的指令或开关。例如上式中的“Identifier”和“Bookmark”,前者是为要编号的一系列项目指定的名称,后者可以加入书签来引用文档中其他位置的项目。“Switches”称为可选的开关,域通常有一个或多个可选的开关,开关与开关之间使用空格进行分隔。 域结果:即是域的显示结果,类似于Excel函数运算以后得到的值。例如在文档中输入域代码“{Date \@ "yyyy年m月d日" \* MergeFFormat}”的域结果是当前系统日期。 域可以在无须人工干预的条件下自动完成任务,例如编排文档页码并统计总页数;按不同格式插入日期和时间并更新;通过链接与引用在活动文档中插入其他文档;自动编制目录、关键词索引、图表目录;实现邮件的自动合并与打印;创建标准格式分数、为汉字加注拼音等等。 2.在文档中插入域 (1)使用命令插入域 在Word中,高级的复杂域功能很难用手工控制,如“自动编号”和“邮件合并”、“题注”、“交叉引用”、“索引和目录”等。为了方便用户,9大类共74种域大都以命令的方式提供。 在“插入”菜单中提供有“域”命令,它适合一般用户使用,Word提供的域都可以使用这种方法插入。你只需将光标放置到准备插入域的位置,单击“插入→域”菜单命令,即可打开“域”对话框。 首先在“类别”下拉列表中选择希望插入的域的类别,如“编号”、“等式和公式”等。选中需要的域所在的类别以后,“域名”列表框会显示该类中的所有域的名称,选中欲插入的域名(例如“AutoNum”),则“说明”框中就会显示“插入自动编号”,由此可以得知这个域的功能。对AutoNum域来说,你只要在“格式”列表中选中你需要的格式,单击“确定”按钮就可以把特定格式的自动编号插入页面。如图1所示。 你也可以选中已经输入的域代码,单击鼠标右键,然后选择“更新域”、“编辑域”或“切换域代码”命令,对域进行操作。 (2)使用键盘插入 如果你对域代码比较熟悉,或者需要引用他人设计的域代码,使用键盘直接输入会更加快捷。其操作方法是:把光标放置到需要插入域的位置,按下Ctrl+F9组合键插入域特征字符“{ }”。接着将光标移动到域特征代码中间,按从左向右的顺序输入域类型、域指令、开关等。结束后按键盘上的F9键更新域,或者按下Shift+F9组合键显示域结果。

室内设计经典布光思路及灯光讲解

室内设计经典布光思路及灯光讲解有个著名而经典的布光理论就是“三点照明”。笔者在此简述一下: 三点照明,又称为区域照明,一般用于较小范围的场景照明。如果场景很大,可以把它拆分成若干个较小的区域进行布光。一般有三盏灯即可,分别为主体光、辅助光与背景光。 主体光:通常用它来照亮场景中的主要对象与其周围区域,并且担任给主体对象投影的功能。主要的明暗关系由主体光决定,包括投影的方向。主体光的任务根据需要也可以用几盏灯光来共同完成。如:主 光灯在1 5度到30度的位置上,称顺光;在45度到90度的位置上,称为侧光;在90度到120度的位置上成为侧逆光。主体光常用聚光 灯来完成。笔者喜欢把主体光的亮度设置为240左右。辅助光:又称为补光。用一个聚光灯照射扇形反射面,以形成一种均匀的、非直射性的柔和光源,用它来填充阴影区以及被主体光遗漏的场景区域、调和明暗区域之间的反差,同时能形成景深与层次,而且这种广泛均匀布光的特性使它为场景打一层底色,定义了场景的基调。由于要达到柔和照明的效果,通常辅助光的亮度只有主体光的5 0%-80%。 背景光:它的作用是增加背景的亮度,从而衬托主体,并使主体对象与背景相分离。一般使用泛光灯,亮度宜暗不可太亮。 布光的顺序是:1)先定主体光的位置与强度;2)决定辅助光的强度与角度;3)分配背景光与装饰光。这样产生的布光效果应该能达到 主次分明,互相补充。布光还有几个地方需要特别注意:1)灯光宜精不宜多。过多的灯光使工作过程变得杂乱无章,难以处理,

显示与渲染速度也会受到严重影响。只有必要的灯光才能保留。另外要注意灯光投影与阴影贴图及材质贴图的用处,能用贴图替代灯光的地方最好用贴图去做。例如要表现晚上从室外观看到的窗户内灯火通明的效果,用自发光贴图去做会方便得多,效果也很好,而不不要用灯光去模拟。切忌随手布光,否则成功率将非常低。对于可有可无的灯光,要坚决不予保留。 2)灯光要体现场景的明暗分布,要有层次性,切不可把所有灯光一概处理。根据需要选用不同种类的灯光,如选用聚光灯还是泛光灯;根据需要决定灯光是否投影,以及阴影的浓度;根据需要决定灯光的亮度与对比度。如果要达到更真实的效果,一定要在灯光衰减方面下一番功夫。可以利用暂时关闭某些灯光的方法排除干扰对其他的灯光进行更好地设置。 3)要知道max中的灯光是可以超现实的。要学会利用灯光的“排除”与“包括”功能,绝对灯光对某个物体是否起到照明或投影作用。例如要模拟烛光的照明与投影效果,我们通常在蜡烛灯芯位置放置一盏泛光灯。如果这盏灯不对蜡烛主体进行投影排除,那么蜡烛主体产生在桌面上的很大一片阴影可能要让我们头痛半天。在建筑效果图中,也往往会通过“排除”的方法使灯光不对某些物体产生照明或投影 效果。 4)布光时应该遵循由主体到局部、由简到繁的过程。对于灯光效果的形成,应该先调角度定下主格调,再调节灯光的衰减等特性来增强现实感。最后再调整灯光的颜色做细致修改。 灯光的分类及其属性

20个代码生成框架

20个代码生成框架 1 1.1 CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://https://www.wendangku.net/doc/fd5022561.html, 官方论坛:http://https://www.wendangku.net/doc/fd5022561.html,/default.aspx 版权形式:30天试用 开源:否 需要先注册确认后才能下载 1.2 MyGenerator MyGenerator是又一个国外很不错的代码生成工具,有人觉得比CodeSmith简单、好用。 所有api可以在帮助菜单中找到。 官方网站:http://https://www.wendangku.net/doc/fd5022561.html,/portal/default.aspx 官方论坛: 版权形式:免费 开源:否 1.3 NHibernate. NHibernate是Hibernate公司在Java自动生成领域取得巨大成功后推出的一款ORM工具. 官方网站:http://https://www.wendangku.net/doc/fd5022561.html,/ 官方论坛: 版权形式:免费 开源:否 1.4 湛蓝.Net代码生成器

一款基于软件自动生成理念,能直接生成应用的dotnet代码生成器 官方网站:http://https://www.wendangku.net/doc/fd5022561.html, 官方论坛:http://https://www.wendangku.net/doc/fd5022561.html,/ 版权形式:免费 开源:否 1.5 动软.NET代码自动生成器 一款人气很旺的免费C#代码生成器 官方网站:http://https://www.wendangku.net/doc/fd5022561.html, 官方论坛: 版权形式:免费 开源:否 1.6 CodePlus 专为sql server c#语言设计的代码生成器,功能还是很强大 官方网站:http://https://www.wendangku.net/doc/fd5022561.html, 官方论坛: 版权形式:需要少量的注册费用 开源:否 下载地址很神秘 1.7 CodeMaker asp,jsp,php代码生成工具,自动生成维护数据库信息的动态网页的代码生成器。它可以帮助ASP、JSP、PHP开发人员快速的开发简单的数据库维护程序。无需任何编码,只需将数据库结构导入到CodeMaker中并做简单的设置,CodeMaker即可生成完整的数据库操作页面。用CodeMaker可以简单快速的创建网站后台维护程序。提高开发效率数十倍以

巧用域代码处理WORD中页码(双页码)

一、插入基本页码 例如某份文档,当前设置为每页两栏,现在的要求是在每一栏的下面都插入相应的页码,也就是将原来的第一页设置为1、2页,第二页设置为3、4页,以此类推。简单分析一下,其实左侧栏的页码数可以由公式“当前页码×2-1”后得到,右侧栏的页码数可以由公式“当前页码×2”得到,这里以Word 2007为例进行说明,具体操作步骤如下: 第1步:切换到“页码布局”标签页,执行“分栏→两栏”命令,将当前文档拆分为两栏,至于其他的要求可以暂时取默认设置,效果如图1所示。 图1 Word 2007执行分栏 第2步:切换到“插入”标签页,在“页脚”下拉菜单中选择“空白”,接下来请在需要添加页码的位置处分别画出两个文本框,右侧栏的文本框可以通过复制获得,见图2。

图2 Word 2007画出文本框 二、插入域代码 第3步:将光标定位在文本框中,注意此时请仍旧切换到“插入”标签页,在“文档部件”下拉菜单中选择“域”,此时会弹出图3所示的对话框,在“类别”下拉列表框中选择“等式和公式”,在“域名”列表框中选择“= (Formula)”,记得去除右下角的“更新时保留原格式”复选框。

图3 Word 2007插入域 单击“确定”按钮,此时文本框中的文字会变为“!异常的公式结尾”,其实这并非错误,只是一行域代码而已,按下“Alt+F9”组合键后会正常显示“{ = }”原形;将光标定位在“=”的后面,继续插入“编号”中的“Page”域,注意请仍旧去除“更新时保留原格式”的复选框,插入后域代码变为“{ ={ PAGE } }”。 第4步:现在,我们应该根据事先的分析,将这个已插入的域更改为“{ ={ PAGE }*2-1 }”,接下来再按照同样的方法,将右侧栏的域代码更改为“{ ={ PAGE }*2 }”(见图4)。 图4 Word 2007修改已插入域 完成上面的工作后,我们就可以按下“Alt+F9”组合键进行查看,注意请将两个文本框的“线条”的颜色设置为“无颜色”,如图5所示,效果不错吧?如果有需要的话,你可以在页码的前后分别输入“第”和“页”,如果是一页分成了三栏,那么它的

word域功能详解1

域应用基础 1.什么是域 简单地讲,域就是引导Word在文档中自动插入文字、图形、页码或其他信息的一组代码。每个域都有一个唯一的名字,它具有的功能与Excel中的函数非常相似。下面以Seq和Date域为例,说明有关域的一些基本概念。 形如“{Seq Identifier [Bookmark ] [Switches ]}”的关系式,在Word中称为“域代码”。它是由: 域特征字符:即包含域代码的大括号“{}”,不过它不能使用键盘直接输入,而是按下Ctrl+F9组合键输入的域特征字符。 域名称:上式中的“Seq”即被称为“Seq域”,Word 2003提供了9大类共74种域。 域指令和开关:设定域工作的指令或开关。例如上式中的“Identifier”和“Bookmark”,前者是为要编号的一系列项目指定的名称,后者可以加入书签来引用文档中其他位置的项目。“Switches”称为可选的开关,域通常有一个或多个可选的开关,开关与开关之间使用空格进行分隔。 域结果:即是域的显示结果,类似于Excel函数运算以后得到的值。例如在文档中输入域代码“{Date \@ "yyyy年m月d日" \* MergeFForma t}”的域结果是当前系统日期。 域可以在无须人工干预的条件下自动完成任务,例如编排文档页码并统计总页数;按不同格式插入日期和时间并更新;通过链接与引用在活动文档中插入其他文档;自动编制目录、关键词索引、图表目录;实现邮件的自动合并与打印;创建标准格式分数、为汉字加注拼音等等。 2.在文档中插入域 (1)使用命令插入域 在Word中,高级的复杂域功能很难用手工控制,如“自动编号”和“邮件合并”、“题注”、“交叉引用”、“索引和目录”等。为了方便用户,9大类共74种域大都以命令的方式提供。 在“插入”菜单中提供有“域”命令,它适合一般用户使用,Word提供的域都可以使用这种方法插入。你只需将光标放置到准备插入域的位置,单击“插入→域”菜单命令,即可打开“域”对话框。 首先在“类别”下拉列表中选择希望插入的域的类别,如“编号”、“等式和公式”等。选中需要的域所在的类别以后,“域名”列表框会显示该类中的所有域的名称,选中欲插入的域名(例如“AutoNum”),则“说明”框中就会显示“插入自动编号”,由此可以得知这个域的功能。对AutoNum域来说,你只要在“格式”列表中选中你需要的格式,单击“确定”按钮就可以把特定格式的自动编号插入页面。如图1所示。 你也可以选中已经输入的域代码,单击鼠标右键,然后选择“更新域”、“编辑域”或“切换域代码”命令,对域进行操作。 (2)使用键盘插入 如果你对域代码比较熟悉,或者需要引用他人设计的域代码,使用键盘直接输入会更加快捷。其操作方法是:把光标放置到需要插入域的位置,按下Ctrl+F9组合键插入域特征字符“{ }”。接着将光标移动到域特征代码中间,按从左向右的顺序输入域类型、域指令、开关等。结束后按键盘上的F9键更新域,或者按下Shift+F9组合键显示域结果。

电影级第一渲染器renderman

向你介绍电影级第一渲染器——renderman综合教程3 二、Renderman进阶 在学会了Prman的一些渲染流程后,我们将测试一下Renderman的一些高级工具:Displacement、Volume、Multi-segment Motion Blur和使用自己写的Shader。 Renderman除了上面的SoftShadow外,还有几样杀手锏——Displacement、MotionSample、RiCurve等强劲效果。其中Displacement是众多渲染器中最好效果的、最真实的。 Renderman的Displacement有两种方式——Do Displacement和Bump。Do Displacement是真实的贴图置换,效果惊人,而Bump只是简单地改变法线的方向,效果还算可以。

一般渲染真实的Volume需要光线跟踪,而Renderman的Volume效果就不用光线跟踪都可以渲染出漂亮的体积光。

Motion blur是运动模糊,它可以表现十分有动感的运动效果。一般的Motion blur都是简单的帧与帧之间的运动插值,欠缺真实感。而分布式光线跟踪虽然可以做出漂亮的效果但计算时间又太长。RAT套件里的Motio nSample就可以在

短时间内做出漂亮的效果,实现Multi-segment Motion Blur。 最新回复 香香儿 at 2008-5-26 16:05:53 renderman的一大特点是可以方便地使用自己写的Shader。自己写Shader 的条件十分简单,只要有纯ASCII码的文本编辑器,要shader.exe ,还 要脑子里的一点编程经验。 涉及编程的详细资料不属于“ very basic”范围,所以在此我不说编程的东西,只说说写好的Shader怎么用。网上有很多已经写好了的 Shader,在http://61.187.55.83/ycjl/https://www.wendangku.net/doc/fd5022561.html,和 http://61.187.55.83/ycjl/https://www.wendangku.net/doc/fd5022561.html,上有,大家可以自己去找一下。 现在提供一分Frame Shader,是用来做火焰的,下载后解压到硬盘就可以用了。 下载把文件名改成Shader.zip:

程序代码自动生成系统的设计与实现

万方数据

万方数据

万方数据

万方数据

基于敏捷开发的高校网络评教系统 作者:吴衡, WU Heng 作者单位:天水师范学院物理与信息科学学院,甘肃天水,741001 刊名: 计算技术与自动化 英文刊名:Computing Technology and Automation 年,卷(期):2011,30(4) 被引用次数:1次 参考文献(8条) 1.丁增富;葛信勇构建教学质量监控体系努力提高教学质量[期刊论文]-高等农业教育 2004(03) 2.陈莉和谐校园构建于素质教育双效联动[期刊论文]-中国市场 2007(2-3) 3.成奋华;金敏基于敏捷过程的IT项目范围管理的研究与应用[期刊论文]-计算机技术与发展 2010(10) 4.徐诚斌;王金平MVC在ThinkPHP框架中的应用研究 2011(03) 5.赵国栋;黄永中开源软件在高校的应用与推广策略研究[期刊论文]-中国资源综合利用 2007(01) 6.马文龙;高宝成用php实现基于MVC模式的Web应用程序开发 2008(07) 7.原晓林基于B/S教学管理系统的开发与研究[期刊论文]-山西警官高等专科学校学报 2009(04) 8.蓝蔚青;曹剑敏;张帆高校学生网络评教系统的构建与完善[期刊论文]-高等农业教育 2006(06) 引证文献(1条) 1.蒋建洪电子商务系统协同开发实践教学研究[期刊论文]-中国教育信息化·基础教育 2013(5) 本文链接:https://www.wendangku.net/doc/fd5022561.html,/Periodical_jsjsyzdh201104028.aspx

Word 中的域代码列表(官方)

Word 中的域代码列表 Word for Office 365 Word for Office 365 for Mac Word 2019 Word 2019 for Mac 更多... 注意:我们希望能够尽快以你的语言为你提供最新的帮助容。本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗?请在此处查看本文的英文版本以便参考。 注意:有关插入和编辑域代码、使用开关、设置和更改属性、显示结果与域代码、锁定域和其他常见任务的详细信息, 请参阅在 Word 中插入、编辑和查看域。 在 Word 中插入、编辑和查看域 域代码可用作文档中可能会更改的数据的占位符, 并且你可以使用它们来自动处理文档的某些方面。当您使用 Word 功能 (如页码或目录) 时, 将插入域代码, 但是您可以为其他任务手动插入域代码, 例如执行计算或填充数据源中的文档容。 这些步骤适用于在 Word 中插入任何域代码。有关包含每个域的详细信息的所有域代码的列表, 请参阅Word 中的域代码列表。 插入域 1.在要插入域的位置单击。

提示:如果你知道要插入的字段的域代码, 则可以直接在文档中键入它, 但不能键入方括号字符。按 Ctrl + F9, 然后在括号中键入代码。 2.单击“插入”>“文档部件”>“域”。 3.在“域名”列表中,选择域名。 提示:您可以通过单击 "类别" 列表中的向下箭头筛选列表。 4.在 "字段属性" 下, 选择所需的任何属性或选项, 然后单击"确定"。 注意: ?若要在 "字段" 框中查看特定字段的代码, 请单击 "域代码"。对于某些字段, 默认情况下会单击此按钮。 ?若要在另一个域中嵌套某个域,请先插入外部(容器)域(上面的步骤 1 - 4)。 然后将插入点放在要插入部域的域代码,并重复上面的步骤 2 - 4。 编辑域

在光线跟踪算法的递归过程中

在光线跟踪算法的递归过程中,加速算法有哪几种?说明他们分别使用与哪些场合光线跟踪的基本原理 由光源发出的光到达物体表面后,产生反射和折射,简单光照明模型和光透射模型模拟了这两种现象。在简单光照明模型中,反射被分为理想漫反射和镜面反射光,在简单光透射模型把透射光分为理想漫透射光和规则透射光。由光源发出的光称为直接光,物体对直接光的反射或折射称为直接反射和直接折射,相对的,把物体表面间对光的反射和折射称为间接光,间接反射,间接折射。这些是光线在物体之间的传播方式,是光线跟踪算法的基础。 最基本的光线跟踪算法是跟踪镜面反射和折射。从光源发出的光遇到物体的表面,发生反射和折射,光就改变方向,沿着反射方向和折射方向继续前进,直到遇到新的物体。但是光源发出光线,经反射与折射,只有很少部分可以进入人的眼睛。因此实际光线跟踪算法的跟踪方向与光传播的方向是相反的,而是视线跟踪。由视点与象素(x,y) 发出一根射线,与第一个物体相交后,在其反射与折射方向上进行跟踪,如图4. 6.1所示。 图4.6.1 基本光线跟踪光路示意

为了详细介绍光线跟踪算法,我们先给出四种射线的定义与光强的计算方法。在光线跟踪算法中,我们有如下的四种光线:视线是由视点与象素 (x,y)发出的射线;阴影测试线是物体表面上点与光源的连线;以及反射光线与折射光线。当光线V与物体表面交于点P时,点P分为三部分,把这三部分光强相加,就是该条光线V在P点处的总的光强: a) 由光源产生的直接的光线照射光强,是交点处的局部光强,可以由下式计算: b) 反射方向上由其它物体引起的间接光照光强,由 I s K s'计算,I s通过对反射光线的递归跟踪得到 c) 折射方向上由其它物体引起的间接光照光强,由I t K t'计算,I t通过对折射光线的递归跟踪得到。 在有了上面介绍的这些基础之后,我们来讨论光线跟踪算法本身。我们将对一个由两个透明球和一个非透明物体组成的场景进行光线跟踪(图4.6.2)通过这个例子,可以把光线跟踪的基本过程解释清楚。

WORD-域和域代码详解

WORD-域和域代码 对一般WORD用户来说,域是一个高级的议题,但是如果您希望自己能够更好地驯服WORD,使它为您效劳,您就需要熟悉并掌握它。在设定文档的页眉和页脚时,加入页码域让WORD替您对页面编号;在页眉中加入文档名称域,使打印的文档显示文件名称,以便以后查找文档;在大型文档中插入目录域,好让WORD替您管理目录的编撰等等。 域的概念 域代码是由域特征字符、域类型、域指令和开关组成的字符串; 域结果是域代码所代表的信息。 域特征字符是指包围域代码的大括号“{}”,它不是从键盘上直接输入的,按键可插入这对域特征字符。 域类型就是WORD域的名称,域指令和开关是设定域类型如何工作的指令或开关。 例如,域代码{ DATE \* MERGEFORMAT }在文档中每个出现此域代码的地方插入当前日期,其中“DATE”是域类型,“\* MERGEFORMAT”是通用域开关。域的功能 自动编页码、图表的题注、脚注、尾注的号码;按不同格式插入日期和时间;通过链接与引用在活动文档中插入其他文档的部分或整体;实现无需重新键入即可使文字保持最新状态;自动创建目录、关键词索引、图表目录;插入文档属性信息;实现邮件的自动合并与打印;执行加、减及其他数学运算;创建数学公式;调整文字位置等。 域类型 WORD提供了许多域类型,单击“插入"*"域”命令,打开插入域对话窗口,可以看到所有WORD域类型的列表及其分类信息。单击“帮助"*"Microsoft Word 帮助”命令,单击帮助向导的"查看帮助主题的完整列表"按钮,打开帮助主题窗口,在目录选项页双击列表中的“参考信息"*"域类型和开关”,就可以得到WORD 域类型的完整帮助信息。 通用域开关

代码自动生成系统

本钢ERP代码自动生成系统的开发 史洪波 (本钢信息自动化公司软件开发事业部) 摘要:本钢ERP系统维护的工作量大,大部分的页面功能类似。在新增业务需求的情况下,可以利用本系统自动修改和生成JSP、Java、XML、SQL、Properties类型的全部代码,生成的代码可以提供新增、修改、删除、导入、树、打印、查询等基本功能。本系统原理是利用各种页面风格的JSP、Java、XML、SQL等文件作为模板,利用配置参数替换掉文件中可变部分,从而形成多种页面风格通用的代码生成系统。本文总结了本钢ERP中常用的6种页面样式,并用Java语言实现了其代码的自动生成过程,只需书写好DAO文件并在系统中填写少许的配置信息,然后点击按钮即可完成代码的产生,节省时间,提高工作效率。 关键词:ERP Java 代码自动生成 Benxi Steel ERP automatic code generation system Shi Hongbo (Benxi Steel Information & Automation Co.Ltd Software Development Department) ABSTRACT:There are a great deal maintain work in Benxi Iron and Steel Co. Ltd. ERP system, most of the page features are similar. In the case of needing new business, the system can automatically generate and modify all of the codes in many types, such as JSP, Java, Xml, SQL, Properties. Codes provide new, modify, delete, import, tree, print, query, and other basic functions and pride many different page styles by replacing the parameter of file. There are 6 common page styles are summarized in the Benxi Iron and Steel Co. Ltd. ERP, and use java language to achieve the automatic code generation process, just to write the file of DAO in the system and a little configuration information, then click the button to complete the code, saved a lot of time and improved the work efficiency. KEY WORD: ERP Java automatic-code-generation 作者简介: 史洪波,男,出生于1974年7月28日,1998年7月毕业于华东冶金学院工业分析专业,同年到本钢技术中心从事钢铁检验工作。2006年3月调至本钢信息自动化公司软件开发事业部从事软件开发工作。Email:mynameshb@https://www.wendangku.net/doc/fd5022561.html, 1、引言 本钢ERP系统有着良好的开发规范,命名规则有规律可循,因此在新增业务需求的情况下非常适合用代码自动生成系统来减少开发过程中的工作量,减少了开发人员的Ctrl+C/Ctrl+V操作,节省时间,提高工作效率。本系统原理是利用各种页面风格的JSP、Java、XML、SQL等文件作为模板,利用配置参数替换掉文件中可变部分,从而形成多种页面风格通用的代码生成系统。本系统采用J2SE中的Awt和Swing技术来绘制整个系统的图形界面,使系统界面整洁美观,使用xml文件作为本系统的配置文件,并对XML文件设定了DTD的格式校验,保证XML的格式良好。在系统界面中输入少量的条件即可产生和修改JSP、Java、XML、SQL、Properites等类型的文件,并对已经存在的文件先备份成Bak文件,生成的代码可具有新增、修改、删除、查询、导入、树、打印等功能。由于XML具有便于阅读和理解,可扩展等优点,而DAO文件格式的不规范性,系统中还提供了DAO文件与XML格式的相互转换,转换中使用了XLST技术,简化了转

相关文档
相关文档 最新文档