C#生成PDF(含iTextSharp.dll)
示例源码
//Document:(文档)生成pdf必备的一个对象,生成一个Document示例
Document document = new Document(PageSize.A4, 30, 30, 5, 5);
//为该Document创建一个Writer实例:
PdfWriter.GetInstance(document, new FileStream(Server.MapPath("/upload/"+"Chap0101.pdf"), FileMode.Create));
//打开当前Document
document.Open();
//为当前Document添加内容:
document.Add(new Paragraph("Hello World"));
//另起一行。有几种办法建立一个段落,如:
Paragraph p1 = new Paragraph(new Chunk("This is my first paragraph.\n", FontFactory.GetFont(FontFactory.HELVETICA, 12)));
Paragraph p2 = new Paragraph(new Phrase("This is my second paragraph.", FontFactory.GetFont(FontFactory.HELVETICA, 12)));
Paragraph p3 = new Paragraph("This is my third paragraph.", FontFactory.GetFont(FontFactory.HELVETICA, 12));
//所有有些对象将被添加到段落中:
p1.Add("you can add string here\n\t");
p1.Add(new Chunk("you can add chunks \n")); p1.Add(new Phrase("or you can add phrases.\n"));
document.Add(p1); document.Add(p2); document.Add(p3);
//创建了一个内容为“hello World”、红色、斜体、COURIER字体、尺寸20的一个块:
Chunk chunk = new Chunk("Hello world", FontFactory.GetFont(FontFactory.COURIER, 20, iTextSharp.text.Font.COURIER, new iTextSharp.text.Color(255, 0, 0)));
document.Add(chunk);
//如果你希望一些块有下划线或删除线,你可以通过改变字体风格简单做到:
Chunk chunk1 = new Chunk("This text is underlined", FontFactory.GetFont(FontFactory.HELVETICA, 12, iTextSharp.text.Font.UNDEFINED));
Chunk chunk2 = new Chunk("This font is of type ITALIC | STRIKETHRU", FontFactory.GetFont(FontFactory.HELVETICA, 12, iTextSharp.text.Font.ITALIC | iTextSharp.text.Font.STRIKETHRU));
//改变块的背景
chunk2.SetBackground(new iTextSharp.text.Color(0xFF, 0xFF, 0x00));
//上标/下标
chunk1.SetTextRise(5);
document.Add(chunk1);
document.Add(chunk2);
//外部链接示例:
Anchor anchor = new Anchor("website", FontFactory.GetFont(FontFactory.HELVETICA, 12, iTextSharp.text.Font.UNDEFINED, new iTextSharp.text.Color(0, 0, 255)));
anchor.Reference = "http://itextsharp.sourceforge.net/";
anchor.Name = "website";
//内部链接示例:
Anchor anchor1 = new Anchor("This is an internal link\n\n");
anchor1.Name = "link1";
Anchor anchor2 = new Anchor("Click here to jump to the internal link\n\f");
anchor2.Reference = "#link1";
document.Add(anchor); document.Add(anchor1); document.Add(anchor2);
//排序列表示例:
List list = new List(true, 20);
list.Add(new iTextSharp.text.ListItem("First line"));
list.Add(new iTextSharp.text.ListItem("The second line is longer to see what happens once the end of the line is reached. Will it start on a new line?"));
list.Add(new iTextSharp.text.ListItem("Third line"));
document.Add(list);
//文本注释:
Annotation a = new Annotation("authors", "Maybe its because I wanted to be an author myself that I wrote iText.");
document.Add(a);
//包含页码没有任何边框的页脚。
HeaderFooter footer = new HeaderFooter(new Phrase("This is page: "), true);
footer.Border = iTextSharp.text.Rectangle.NO_BORDER;
document.Footer = footer;
//Chapter对象和Section对象自动构建一个树:
iTextSharp.text.Font f1 = new iTextSharp.text.Font();
f1.SetStyle(iTextSharp.text.Font.BOLD);
Paragraph cTitle = new Paragraph("This is chapter 1", f1);
Chapter chapter = new Chapter(cTitle, 1);
Paragraph sTitle = new Paragraph("This is section 1 in chapter 1", f1);
Section section = chapter.AddSection(sTitle, 1);
document.Add(chapter);
//构建了一个简单的表:
iTextSharp.text.Table aTable = new iTextSharp.text.Table(4, 4);
aTable.AutoFillEmptyCells = true;
aTable.AddCell("2.2", new Point(2, 2));
aTable.AddCell("3.3", new Point(3, 3));
aTable.AddCell("2.1", new Point(2, 1));
aTable.AddCell("1.3", new Point(1, 3));
document.Add(aTable);
//构建了一个不简单的表:
iTextSharp.text.Table table = new iTextSharp.text.Table(3);
table.BorderWidth = 1;
table.BorderColor = new iTextSharp.text.Color(0, 0, 255);
table.Cellpadding = 5;
table.Cellspacing = 5;
Cell cell = new Cell("header");
cell.Header = true;
cell.Colspan = 3;
table.AddCell(cell);
cell = new Cell("example cell with colspan 1 and rowspan 2");
cell.Rowspan = 2;
cell.BorderColor = new iTextSharp.text.Color(255, 0, 0);
table.AddCell(cell);
table.AddCell("1.1");
table.AddCell("2.1");
table.AddCell("1.2");
table.AddCell("2.2");
table.AddCell("cell test1");
cell = new Cell("big cell");
cell.Rowspan = 2;
cell.Colspan = 2;
cell.BackgroundColor = new iTextSharp.text.Color(0xC0, 0xC0, 0xC0);
table.AddCell(cell);
table.AddCell("cell test2");
// 改变了单元格“big cell”的对齐方式:
cell.HorizontalAlignment = Element.ALIGN_CENTER;
cell.VerticalAlignment = Element.ALIGN_MIDDLE;
document.Add(table);
//关闭Document
document.Close();
Spring.NET框架中文参考文档
关于《Spring.NET框架参考文档》中文版
首先,请读者注意原文中的版权信息:“您可以创建本文档的副本留作自用或分发他人,但前提是不得收取任何费用,另外,不管是以印刷版还是以电子版形式分发本文档,请在每个副本中包含这条版权信息。”。
Java社区早已有人将java版的文档翻译成中文,且目前有不少Spring的书籍可购买,但由于java与dotNet技术本身的差异,java版spring与spring.net还是存在一些细节上的不同,所以我决定将Spring.NET的文档翻译为中文,希望能对初学Spring.Net的朋友有所帮助。当然了,如果可以,还是建议您去阅读英文原文。不过,我会尽量保证译文和原文的一致性,使其更符合中文阅读习惯,更易理解。目标而已,能否实现自然要靠大家帮助,如果您觉得还可以,就拿来看看,您能从中获益就是对它的肯定。如果您觉得很糟糕,也别骂我,毕竟把这堆垃圾放在网上,也不至于对您造成损失。
中文版已在2006年12月7日版原文的基础上进行了更新。原文更新的规律一般是每月两次,分别在上旬中期和下旬中期,我会尽量保证在新版原文发布之后的一个星期内更新译文。
译文中:
1、错误疏漏在所难免,但我会不断修正。在阅读过程中,如果您愿意,可以把发现的错误和您的建议发送到delpher@yeah.com,一起来完善这份文档。
2、保留了英文版原文的格式(HTML,若有需要,A4纸横向打印比较合适);
3、若原文有明显的错误便进行更正(当然,我会在更正的位置加以说明)
4、在必要的时候添加一些我自己的注释和例子,此处难免出错,但我会小心处理
原文的内容很不错。希望读者通过这篇文档,学到的不只是具体的Spring技术,还有通用的思想。由于原文还在频繁更新中,所以目录和某些章节的编目略显混乱,译文没有对此做出调整,相信在未来的版本中这些问题会逐一被修正。
译者
--------------------------------------------------------------------------------
校对日志
2007-3-22:第十九章,原2006-12-7日版,初校,已上传
2007-3-22 15:45:第十九章,原2006-12-7日版,添加对19.6.7.节的注释内容,已上传
2007-3-28 15:37:第一、二、三章,初校,修正标题与主页链接(目前指向中文版目录,其余页面也有此问题,不再记录),已上传
2007-3-30 14:30:第四章(未完成,至4.3.3节),初校,主要修正文中不当的表达方式,补译前文遗漏的4.3.3.2节中一个段落,删除了部分糟糕注释,已上传
2007-3-30 14:30:第四章,初校完成,已上传
2007-4-4 16:10:第二十二章,初校,已上传
2007-4-5 17:10:第十二章,初校,已上传
2007-4-6 17:45:第十一章,初校,已上传
2007-4-9 17:57:第十九章,添加对双向绑定的注释(19.6节之前)
2007-4-10 16:15:第二十五、二十六、二十七章,初校,已上传
2007-4-11 12:20:第十九章,添加关于如何在MasterPage中更改语言文化的注释,已上传
2007-4-23 17:55:第九、十、十三章,初校,已上传
2007-4-24 17:20:第十四章,补译,初校,已上传
2007-4-26 17:15:第十五、十六、十七章,初校,已上传
2007-4-27 13:45:第二十、二十一、二十三章,初校,已上传
2007-5-28:校对,已上传,修改第十章关于#this和#root的错误描述;修改原文第十九章数据绑定示例中的错误,见译文中说明。
--------------------------------------------------------------------------------
2007-6-4:根据1.1 M1版文档补充、校对,完成1,2,3章,已上传
2007-6-26:根据1.1 M1版文档补充、校对第4章,已上传
C#语言教程(英文原版教程)
CSharp Language Specification
C#语言教程(英文原版教程)
史上最好的ASP.Net+C#三层架构实例(源代码)
这是我见过的最好的.net三层架构实例(源代码),对于想学.net和三层架构的人来说,简直是必须的。只要你把这个例子学习好,那你的三层架构肯定就没问题了。
附实例(源代码):用户注册例子(最终版三层模式+单元测试)
解决闪屏界面绘制双缓存代码
通过内存DC双缓存解决了图形界面绘制的闪屏的问题,为了提供可供复用的代码,使用函数指针模板来封装双缓存技术。
该代码中包括的技术点有:
双缓存,函数指针,指向类成员函数的指针,模板类,模板函数。
条码打印机/斑马(zebra)ZM400/ZM600/ZM系列中文设置操作说明
条码打印机/斑马(zebra)ZM400/ZM600/ZM系列中文设置操作说明
基于Windows CE操作系统下USB设备驱动程序研究与开发
Windows CE操作系统是微软针对嵌入式领域开发的一个全新的操作系统,具备抢占式多任务功能以及强大的通信能力,广泛应用在信息设备、移动设备、电子产品以及嵌入式应用等非PC领域。随着计算机技术、网络技术和多媒体通信技术的发展,以及PDA、信息家电、机顶盒等为代表的嵌入式系统应用的广泛发展,嵌入式系统已经越来越走近普通人的生活,随之而来的,就是对嵌入式软、硬件设计的广泛需要。 本课题所涉及的研究方向是探索在Windows CE 5.0嵌入式操作系统下进行USB总线设备驱动程序开发相关原理。USB总线已经成为微机与功能繁多的外部设备连接的重要标准手段,所以以Windows CE 5.0为操作系统的嵌入式产品具备对USB总线的支持将能连接更多的具有USB总线接口形式的功能设备,扩大产品的应用领域,成为该产品的一个突出竞争优势。因此本课题的研究内容具有很大的理论意义以及实际应用价值。 在研究过程中,由于在嵌入式系统下开发USB总线驱动的相关成果资料较少,本课题横向类比了相关领域如Windows,Linux系统下USB总线设备驱动程序开发的各类成熟和较成熟思想,结合Windows CE操作系统下开发相关的各种中英文资料,并分析该操作系统自带的各种驱动源代码示例,从而提出以流驱动模式为策略的框架下具体开发该类总线设备驱动程序的流程。 分析Windows CE操作系统对于USB总线的支持,并结合在ARMSYS2410嵌入式开发板上关于Webeye 2000的USB摄像头的开发步骤,详细阐述了WindowsCE下USB摄像头驱动程序开发的策略,并根据该策略开发出USB总线实验设备的驱动程序,这是本课题的主体部分。由于针对的应用领域不同,相对于成熟的如Windows,Linux等大型操作系统,Windows CE嵌入式系统中设备驱动程序开发机制较为精简,可以根据不同的功能设备灵活的实现二者的通信。本文所总结的驱动开发策略是流驱动的形式,可以运用于产生流式数据的设备或者与这种方式相关相近的设备驱动程序开发中。
Windows CE API 手册 v2.0
《Windows CE API手册》v2.0 说明
Blitz Force-加百力的个人标志:带大卫星的黑鹰
《Windows CE API手册》是Blitz Force团队继 Xarm和ROS开发系统之后之后又一重要作品。本手册收录并翻译了 MSDN Library for Visual Studio 2008 中超过2000 个API函数和宏的资料信息。分为:系统函数、COM函数、驱动函数、网络通信4个大类,有以下特点:
01. 资料权威。本手册中收录的绝大多数函数和宏都取自微软MSDN,权威性比较有保证。部分从DLL中找到的API在MSDN中尚未介绍。我们收录这部分MSDN未介绍的API主要是认为这些API似乎比较重要,希望有熟悉这部分API使用的高手能够多多指教。
02. 分类详细。本手册根据API函数的功能进行了详细分类。通过分类 方便读者查找和扫描学习API,提高学习效率。
03. 提供编程示例和开发经验。本手册取自Xarm开发系统,我们已经用Xarm系统试验了1000个左右的函数,在试验中获得的经验教训都保存在本手册中。用户使用本手册除了可以查询函数的使用方法,还可以参考我们提供的心得体会加深对API的理解。查看Xarm编写的函数示例可以到我们的联系站点下载Xarm 1.0。
04. 不断更新。本手册1.0版在2008年4月底完成后,发给Blitz Force队员做内部测试并收到很多反馈意见,本次发布的是2.0版。我们还会继续努力发布新的版本,根据新系统增加新函数,不断完善旧函数说明,提供更多示例。希望使用本手册的朋友如果发现手册中有错误或者有好的改进意见给我们发邮件或者留言。《作者简介》中有详细的联系方式。
生成和解析二维码开发类(QRCode)
二维码开发类QRCode
支持二维码生成、解析
支持各类平台,C/S、B/S、WindowsMobile
附带示例源码
二维码控件DotNetBarcode_V2.4.0
二维码控件DotNetBarcode_V2.4.0
附带C#和VB示例
ZPLII Programming Guide
Zebra Programming Language II (ZPL II)
Zebra Programming Language II(ZPL II)is a high-level label definition and printer control language. Labels may be defined in ZPLII Language and generated by a host computer system. A commercial label preparation system or a software package which automatically generates ZPLII Code may also be used. For information about label preparation systems, consult your distributor, systems integrator, or computer software vendor.
浙大算法设计课(英文)
浙大算法设计课(英文)
dye-np
dye-lp
dye-local search
dye-greedy
dye-geometry computational
dye-Dynamic programming
dye-Divide-and-conquer
dye-approximation
dye-algorithm design and analysis
北大研究生高级软件工程讲义
北大研究生高级软件工程讲义
高级软件工程01(概述、DOT与对象模型)
高级软件工程02(CORBA概述)
高级软件工程03(IDL与ORB接口)
高级软件工程04(IR、POA.)
高级软件工程05(IIOP、现有产品、开发过程)
高级软件工程06(COM基础:接口与实现)
高级软件工程07(包含与聚合)
高级软件工程08(DCOM、自动化)
高级软件工程09(VC与COM、CORBA与COM比较)
高级软件工程10(SA概述、SA风格及实例)
高级软件工程11(DNA、MTS、MSMQ)
参考手册全集经典
微软Microsoft Windows脚本技术[全面].CHM
微软Jet SQL参考手册.chm
微软Asp参考手册.chm
微软ADO中文帮助.CHM
XML官方指南中文版.chm
xmlhttp.CHM
SQL语法大全.chm
prototype.js中文手册.chm
MySQL手册.chm
jQuery.chm
javascript.chm
DOM文档对象中文手册.chm
DHTML 手册.chm
CSS样式表.CHM
Javascript教程(PPT版)
一、概述
二、语言的基础
三、基本对象
四、函数
五、Navigator浏览器对象
六、Screen屏幕对象
七、Window窗口对象
八、History历史对象
九、Location地址对象
十、Document文档对象
十一、事件处理
Asp.net使用技巧集锦
Asp.net使用技巧集锦包含以下收集的几类文档
我收集的ASP.net技巧.chm
aspx.chm
ASP.NET程序中常用的三十三种代码.doc
以上文件包含各种常用编程技巧。。。
ASP.NET 3.5 开发大全
ASP.NET是微软力推的Web开发编程技术,也是当今最热门的Web开发编程之一。本书深入浅出,循序渐进讲授读者如何使用ASP.NET进行系统开发。全书内容包括了解ASP.NET、认识C# 3.5、认识面向对象、ASP.NET基础控件、ASP.NET高级控件、数据库与ADO.NET、数据库基础、ASP.NET操作数据库、ASP.NET访问其他数据源、ASP.NET MVC、LINQ及Lambda表达式、WCF应用开发、WPF应用开发以及图形图像编程等内容。为了便于读者学习和理解ASP.NET的知识,本书最后几章进行了不同的小型模块的开发,以便读者能够深入的了解ASP.NET技术的基础开发,在了解了基本的模块开发后,还包括两章进行较大、较完整的系统开发。具体讲解了用户注册模块、登陆模块、投票模块、聊天模块以及留言本系统和校友录系统。
本书适合广大Web网站开发人员、网站管理维护人员和大专院校学生阅读,尤其是有一定Internet/Intranet编程技术的人员,同样本书也适合.NET平台的初学者以及热爱.NET技术的入门人员。
程序员常用JavaScript特效
程序员常用JavaScript特效.chm
1)0、1数字下落
2)0.1文字整屏下坠
3)16进制时间显示
4)2000年日历
5)默林,魔法师置顶小人,界面引导提示
6)21点游戏
7)Alert只弹出一次
8)asf文件在线播放
9)ASP删除记录的方法
10)BrowserCheck脚本
11)cookie的写入
12)CSS的链接效果
13)CSS的鼠标影响
14)CSS使用大全
15)ctrl加回车提交
.................
等等,几百种不同物效。。。
ASP.NET动态网站开发教程PPT
ASP.NET动态网站开发教程PPT
ASP.NET动态网站开发教程PPT
ASP.NET动态网站开发教程PPT
CSS 2.0中文手册(含索引)
CSS 2.0中文手册(含索引)
CSS 2.0中文手册(含索引)
CSS 2.0中文手册(含索引)
数据挖掘原理.算法.技术
1. 时代的挑战
近十几年来,人们利用信息技术生产和搜集数据的能力大幅度提高,千千万万个数据库被用于商业管理、政府办公、科学研究和工程开发等等,这一势头仍将持续发展下去。于是,一个新的挑战被提了出来:在这被称之为信息爆炸的时代,信息过量几乎成为人人需要面对的问题。如何才能不被信息的汪洋大海所淹没,从中及时发现有用的知识,提高信息利用率呢?要想使数据真正成为一个公司的资源,只有充分利用它为公司自身的业务决策和战略发展服务才行,否则大量的数据可能成为包袱,甚至成为垃圾。需要是发明之母,因此,面对"人们被数据淹没,人们却饥饿于知识"的挑战,数据挖掘和知识发现(DMKD)技术应运而生,并得以蓬勃发展,越来越显示出其强大的生命力。
这里所说的知识发现,不是要求发现放之四海而皆准的真理,也不是要去发现崭新的自然科学定理和纯数学公式,更不是什么机器定理证明。实际上,所有发现的知识都是相对的,是有特定前提和约束条件,面向特定领域的,同时还要能够易于被用户理解。最好能用自然语言表达所发现的结果。
2. 历史的必然
从商业数据到商业信息的进化过程中,每一步前进都是建立在上一步的基础上的。见下表。表中我们可以看到,第四步进化是革命性的,因为从用户的角度来看,这一阶段的数据库技术已经可以快速地回答商业上的很多问题了。
从下表中还可以清晰得看到,数据挖掘的应运而生是历史必然的选择,它符合人类社会的认识事物的客观发展规律,仅从这一点上来讲,刚刚开始处于流行中的数据挖掘的前景还是非常乐观的。
进化阶段
商业问题
支持技术
产品厂家
产品特点
数据搜集
(60年代)
“过去五年中我的总收入是多少?”
计算机、磁带和磁盘
IBM,CDC
提供历史性的、静态的数据信息
数据访问
(80年代)
“在纽约的分部去年三月的销售额是多少?”
关系数据库(RDBMS),结构化查询语言(SQL),ODBC
Oracle、Sybase、Informix、IBM、Microsoft
在记录级提供历史性的、动态数据信息
数据仓库;决策支持
(90年代)
“在纽约的分部去年三月的销售额是多少?洛杉矶据此可得出什么结论?”
联机分析处理(OLAP)、多维数据库、数据仓库
Pilot、Comshare、Arbor、Cognos、Microstrategy
在各种层次上提供回溯的、动态的数据信息
数据挖掘
(正在流行)
“下个月洛杉矶的销售会怎么样?为什么?”
高级算法、多处理器计算机、海量数据库
Pilot、Lockheed、IBM、SGI、其他初创公司
提供预测性的信息
3. 数据挖掘的定义
数据挖掘(Data Mining)就是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。还有很多和这一术语相近似的术语,如从数据库中发现知识(KDD)、数据分析、数据融合(Data Fusion)以及决策支持等。人们把原始数据看作是形成知识的源泉,就像从矿石中采矿一样。原始数据可以是结构化的,如关系数据库中的数据,也可以是半结构化的,如文本、图形、图像数据,甚至是分布在网络上的异构型数据。发现知识的方法可以是数学的,也可以是非数学的;可以是演绎的,也可以是归纳的。发现了的知识可以被用于信息管理、查询优化、决策支持、过程控制等,还可以用于数据自身的维护。因此,数据挖掘是一门非常广义的交叉学科,它汇聚了不同领域的研究者,尤其是数据库、人工智能、数理统计、可视化、并行计算等方面的学者和工程技术人员。
简而言之,数据挖掘其实是一类深层次的数据分析方法。数据分析本身已经有很多年的历史,只不过在过去数据收集和分析的目的是用于科学研究,另外,由于当时计算能力的限制,对大数据量进行分析的复杂数据分析方法受到很大限制。现在,由于各行业业务自动化的实现,商业领域产生了大量的业务数据,这些数据不再是为了分析的目的而收集的,而是由于商业运作而产生。分析这些数据也不再是单纯为了研究的需要,更主要是为商业决策提供真正有价值的信息,进而获得利润。但所有企业面临的一个共同问题是:企业数据量非常大,而其中真正有价值的信息却很少,因此从大量的数据中经过深层分析,获得有利于商业运作、提高竞争力的信息,就像从矿石中淘金一样,数据挖掘也因此而得名。
数据挖掘是一种潜在的功能强大的新技术,它能帮助企业在他们的数据仓库中找到最重要的信息。数据挖掘工具能预测未来趋势和行为,使得商务活动具有前瞻性,并作出具有知识驱动的决策。数据挖掘所提供的自动的预期分析已经远远超出由典型的决策支持系统工具对过去事件所做的回顾性分析的范围。数据挖掘工具可以回答传统上需费很多时间解决的商务问题。它能搜遍数据库去查找隐藏的模式,找出那些专家也会错过的预测信息,因为它并不在人们期待的位置上;
数据挖掘(Data Mine)简称 DM,其本质就是发现数据实质与数据间的关系的探索过程,找出潜在于数据中的现实事务的规律和趋势,进而把感觉转化为事实。数据挖掘大致可分为三类:关系发现、模式发现、趋势行为发现。数据挖掘技术主要应用于决策支持系统(DSS)。
数据挖掘从技术上讲有如下几种:
神经网络(Neural Networks)、联系发现、分类(连续维?)、分簇(离散维?)、连续发现(基于时间的?)。另外的分法还会有:决策树(Decision Tree)、分类和衰退树(Classification And Regression Tree)、遗传算法(Genetic Algorithm)、规则归纳(Rules Induction)、最近邻居算法(Nearest Neighbor)。正方自动交互发现(Chi Square Automation Interactive Detection, CHAID)......
数据挖掘技术的三大支柱
(1) 数据库技术。
(2) 人工智能技术。
(3) 概率与数理统计。
数据库技术已经从原始的文件处理发展到开发具有查询和事务处理的数据库管理系统。进一步的发展已经导致越来越需要有效的高级数据分析工具。这种需求是各种应用收集的数据爆炸性增长的必然结果,这些应用包括商务和管理、行政管理、科学和工程以及环境控制。
数据挖掘是从大量数据中发现有趣模式,其中数据可以存放在数据库、数据仓库或其他信息库中。这是一个年轻的跨学科领域,源于诸如数据库系统、数据仓库、统计学、机器学习、数据可视化、信息检索和高性能计算。其他有贡献的领域包括神经网络、模式识别、空间数据分析、图像数据库、信号处理和许多应用领域,如商务、经济学和生物信息学。
知识发现过程包括数据清理、数据集成、数据选择、数据变换、数据挖掘、模式评估和知识表示。
典型的数据挖掘系统结构包括数据库和/或数据仓库及相应的服务器,数据挖掘引擎和模式评估模块(二者与知识库交互),以及图形用户界面。作为一个整体,数据挖掘组件与数据库或数据仓库系统集成可能是不耦合、松散耦合、半紧密耦合或紧密耦合。一个设计良好的数据挖掘系统应当提供与数据库和/或数据仓库系统的紧密耦合或半紧密耦合。
数据模式可以从许多不同类型的数据库挖掘,如关系数据库、数据仓库、事务数据库和对象-关系数据库。有趣的数据模式也可以从其他类型的信息库中提取,包括空间的、时间序列的、序列的、文本的、多媒体的数据库和遗产数据库、数据流和万维网。
数据仓库是一种数据的长期存储储存库,这些数据来自多个数据源,经过组织数据仓库以有利于管理决策的方式组织。这些数据在一种一致的模式下存放,并且通常是汇总的。数据仓库提供一些数据分析能力,称作OLAP(联机分析处理)。
数据挖掘功能包括发现概念/类描述、关联和相关、分类、预测、聚类、趋势分析、离群点和偏差分析以及相似性分析。特征化和区分是数据汇总形式。
模式表示知识,如果它是易于理解的,在某种必然程度上对于检验数据是有效的,并且可能有用、新颖或者验证用户好奇的直觉。模式兴趣度度量,无论是客观的还是主观的,都可以用来指导发现过程。
数据挖掘系统可以根据所挖掘的数据库类型、所挖掘的知识类型、所使用的技术或应用加以区分。
我们研究了五种以数据挖掘查询形式说明数据挖掘任务的原语。这些原语说明任务相关的数据(即待挖掘的数据集)、挖掘的知识类型、背景知识(通常是概念分层形式)、兴趣度度量以及用来显示所发现模式的知识表示和可视化技术。
可以设计数据挖掘查询语言,支持即席的和交互的数据挖掘。数据挖掘查询语言(DMQL)应当提供说明每种数据挖掘原语的命令。这种查询语言是基于SQL的,并且可以最终形成标准,成为数据挖掘图形用户界面的基础。
数据预处理对于数据仓库和数据挖掘都是一个重要的问题,因为现实中的数据多半是不完整的、有噪声的和不一致的。数据预处理包括数据清理、数据集成、数据变换和数据规约。
描述性数据汇总为数据预处理提供分析基础。数据汇总的基本统计学度量包括度量数据集中趋势的均值、加权平均、中位数和众数,度量数据离散程度的极差、四分位数、四分位数间距、方差和标准差。图形表示,如直方图、盒图、分位数图、分位数-分位数图、散布图和散布图矩阵都有利于数据的视觉考察,因此对数据预处理和挖掘是有用的。
数据清理例程试图填补缺失的值,光滑噪声,识别离群点并纠正数据的不一致性。数据清理通常是一个迭代的两步过程,包括偏差检测和数据变换。
数据集成将来自不同数据源的数据整合成一致的数据存储。元数据、相关分析、数据冲突检测和语义异构性的解决都有助于数据的顺利集成。
数据变换例程将数据变换成适于挖掘的形式。例如:属性数据可以规范化,使得它们可以落在较小的区间,如0.0~1.0。
数据规约技术,如数据立方体聚集、属性子集选择、维度规约、数值规约和离散化都可以用来得到数据的规约表示,而使信息内容的损失最小。
数值数据的数据离散化和概念分层自动产生可能涉及诸如分箱、直方图分析、基于熵的离散化、X2分析、聚类分析和基于直观划分的离散化等技术。对于分类数据,概念分层可以根据定义分层的属性的不同值个数自动产生。
4. 数据挖掘的知识分类
4.1 概化知识(Generalization)
概化知识指类别特征的概括性描述知识。根据数据的微观特性发现其表征的、带有普遍性的、较高层次概念的、中观和宏观的知识,反映同类事物共同性质,是对数据的概括、精炼和抽象。
概化知识的发现方法和实现技术有很多,如数据立方体、面向属性的归约等。数据立方体还有其他一些别名,如“多维数据库”、“实现视图”、“OLAP"等。该方法的基本思想是实现某些常用的代价较高的聚集函数的计算,诸如计数、求和、平均、最大值等,并将这些实现视图储存在多维数据库中。既然很多聚集函数需经常重复计算,那么在多维数据立方体中存放预先计算好的结果将能保证快速响应,并可灵活地提供不同角度和不同抽象层次上的数据视图。另一种概化知识发现方法是加拿大SimonFraser大学提出的面向属性的归约方法。这种方法以类SQL语言表示数据挖掘查询,收集数据库中的相关数据集,然后在相关数据集上应用一系列数据推广技术进行数据推广,包括属性删除、概念树提升、属性阈值控制、计数及其他聚集函数传播等。
4.2 关联知识(Association)
它反映一个事件和其他事件之间依赖或关联的知识。如果两项或多项属性之间存在关联,那么其中一项的属性值就可以依据其他属性值进行预测。最为著名的关联规则发现方法是R.Agrawal提出的Apriori算法。关联规则的发现可分为两步。第一步是迭代识别所有的频繁项目集,要求频繁项目集的支持率不低于用户设定的最低值;第二步是从频繁项目集中构造可信度不低于用户设定的最低值的规则。识别或发现所有频繁项目集是关联规则发现算法的核心,也是计算量最大的部分。
4.3 分类和聚类知识(Classification&Clustering)
它反映同类事物共同性质的特征型知识和不同事物之间的差异型特征知识。最为典型的分类方法是基于决策树的分类方法。它是从实例集中构造决策树,是一种有指导的学习方法。该方法先根据训练子集(又称为窗口)形成决策树。如果该树不能对所有对象给出正确的分类,那么选择一些例外加入到窗口中,重复该过程一直到形成正确的决策集。最终结果是一棵树,其叶结点是类名,中间结点是带有分枝的属性,该分枝对应该属性的某一可能值。最为典型的决策树学习系统是ID3,它采用自顶向下不回溯策略,能保证找到一个简单的树。算法C4.5和C5.0都是ID3的扩展,它们将分类领域从类别属性扩展到数值型属性。
数据分类还有统计、粗糙集(RoughSet)等方法。线性回归和线性辨别分析是典型的统计模型。为降低决策树生成代价,人们还提出了一种区间分类器。最近也有人研究使用神经网络方法在数据库中进行分类和规则提取,其中的代表就是向后传播分类。
4.4预测型知识(Prediction)
它根据时间序列型数据,由历史的和当前的数据去推测未来的数据,也可以认为是以时间为关键属性的关联知识。
目前,时间序列预测方法有经典的统计方法、神经网络和机器学习等。1968年Box和Jenkins提出了一套比较完善的时间序列建模理论和分析方法,这些经典的数学方法通过建立随机模型,如自回归模型、自回归滑动平均模型、求和自回归滑动平均模型和季节调整模型等,进行时间序列的预测。由于大量的时间序列是非平稳的,其特征参数和数据分布随着时间的推移而发生变化。因此,仅仅通过对某段历史数据的训练,建立单一的神经网络预测模型,还无法完成准确的预测任务。为此,人们提出了基于统计学和基于精确性的再训练方法,当发现现存预测模型不再适用于当前数据时,对模型重新训练,获得新的权重参数,建立新的模型。也有许多系统借助并行算法的计算优势进行时间序列预测。
4.5偏差型知识(Deviation)
----此外,还可以发现其他类型的知识,如偏差型知识(Deviation),它是对差异和极端特例的描述,揭示事物偏离常规的异常现象,如标准类外的特例,数据聚类外的离群值等。
所有这些知识都可以在不同的概念层次上被发现,并随着概念层次的提升,从微观到中观、到宏观,以满足不同用户不同层次决策的需要。
5. 数据挖掘的常用技术
5.1人工神经网络
仿照生理神经网络结构的非线形预测模型,通过学习进行模式识别。粗略的说,神经网络是一组连接的神经单元,其中每个连接都与一个权相联。在学习阶段,通过调整神经网络的权,使得能够预测输入样本的正确类标号来学习。由于单元之间的连接,神经网络学习又称连接者学习。它的优点包括对噪声数据的高承受力,以及它对未经训练的数据分类模型的能力。
5.2判定树
“什么是判定树?”判定树(decision tree)是一个类似于流程图的树结构。它和算法与数据结构中的二叉判定树的概念很类似。其中每个内部节点表示在一个属性上的测试,每个分枝代表一个测试输出,而每个树叶节点代表类或类分布。树的最顶层界定就是根节点。
5.3遗传算法
基于进化理论,并采用遗传结合、遗传变异、以及自然选择等设计方法的优化技术。根据适者生存的原则,形成由当前群体中最合适的规则组成新的群体,以及这些规则的后代。典型情况下,规则的适合度(fitness)用它对训练样本集的分类准确率评估。后代通过使用诸如交叉和变异等遗传操作来创建。
5.4最近邻算法
将数据集合中每一个记录进行分类的方法。最临近分类是基于要求的或懒散的学习法,即它存放所有的训练样本,并且直到新的(未标记的)样本需要分类时才建立分类。它也可用于预测,即返回给定的位置样本的实数值预测。
5.5Apriori算法
它是一种最有影响的挖掘布尔关联规则频繁项集的算法。算法的名字基于这样的事实:算法使用频繁项集性质的先验知识。它用一种称作逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。首先找出频繁1-项集的集合。然后利用前者找出2-项集的集合,如此迭代,直到不能找出频繁k-项集。最后由频繁项集产生关联规则。
5.6频繁模式增长(FP-增长)
和上面的方法相比,它是一种不产生候选的挖掘频繁项集的方法。它构造一个高度压缩的数据结构(FP-增长),压缩原来的事物数据库。它聚焦于频繁模式增长,避免了高代价的候选产生,获得更好的效率。
采用上述技术的某些专门的分析工具已经发展了大约十年的历史,不过这些工具所面对的数据量通常较小。而现在这些技术已经被直接集成到许多大型的工业标准的数据仓库和联机分析系统中去了。
1. 数据挖掘的功能
数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策。数据挖掘的目标是从数据库中发现隐含的、有意义的知识,主要有以下五类功能。
6.1自动预测趋势和行为
数据挖掘自动在大型数据库中寻找预测性信息,以往需要进行大量手工分析的问题如今可以迅速直接由数据本身得出结论。一个典型的例子是市场预测问题,数据挖掘使用过去有关促销的数据来寻找未来投资中回报最大的用户,其它可预测的问题包括预报破产以及认定对指定事件最可能作出反应的群体。
6.2关联分析
数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时序关联、因果关联。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有置信度和支持度。
6.3相关性分析
数据中许多属性可能与分类和预测任务不相关。例如:记录银行贷款申请是星期几提出的数据可能与申请的成功不相关。此外,其他的属性可能是冗余的。因此,可以进行相关性分析,删除学习过程中不相关的或冗余的属性。在机器学习中,这一过程称为特征选择。
6.4聚类分析
数据库中的记录可被化分为一系列有意义的子集,即聚类。聚类增强了人们对客观现实的认识,是概念描述和偏差分析的先决条件。聚类技术主要包括了划分方法,层次的方法,基于密度的方法和基于模型的方法。还有一些聚类算法继承了多种聚类方法的思想。
6.5概念描述
概念描述就是对某类对象的内涵进行描述,并概括这类对象的有关特征。概念描述分为特征性描述和区别性描述,前者描述某类对象的共同特征,后者描述不同类对象之间的区别。生成一个类的特征性描述只涉及该类对象中所有对象的共性,它将大的任务相关的数据集从较低的概念层抽象到较高的概念层。大的数据集有效的,灵活的概化方法可以分成两类:1:数据立方体(或OLAP)方法,和2:面向属性的归纳方法。生成区别性描述的方法很多,如判定树方法、遗传算法等。
6.6偏差检测
数据库中的数据常有一些异常记录,从数据库中检测这些偏差很有意义。偏差包括很多潜在的知识,如分类中的反常实例、不满足规则的特例、观测结果与模型预测值的偏差、量值随时间的变化等。偏差检测的基本方法是,寻找观测结果与参照值之间有意义的差别。
C#界面皮肤源码(带大量皮肤素材)
1. 先把IrisSkin2.dll文件添加到当前项目引用(解决方案资源管理器->当前项目->引用->右键->添加引用 ,找到IrisSkin2.dll文件.....之后就不用我说了吧^_^).IrisSkin2.dll文件最好放在当前项目\bin\Debug文件中.
2. 然后把IrisSkin2.dll文件添加到vc2005的工具箱:右键->选择项->浏览找到IrisSkin2.dll文件(文件最好放在当前项目\bin\Debug文件中)按确定,控件就添加到工具箱中了.然后把工具箱中新添加的 SkinEngine控件拖到当前项目中。
3. 把皮肤目录中的.ssk文件复制到当前项目\bin\Debug文件中,(ssk文件可选).
4. 再在项目中调用.ssk皮肤文件。例:
namespace 当前项目
{
public partial class Form1 : Form
{
public Form1() //当前项目的构造器中调用皮肤文件
{
InitializeComponent();
this.skinEngine1.SkinFile = "DiamondBlue.ssk"; //DiamondBlue.ssk可换用皮肤目录中你喜欢的.ssk文件
//(把.ssk复制到当前项目\bin\Debug目录中)
}
...
...
...
Crystal Reports 水晶报表教程
学习如何使用 Crystal Reports
要自学如何使用 Crystal Reports,可以选择本节中提供的方法:
可以学习 Crystal Reports 中的示例报表和示例数据库。
可以使用新用户快速入门中详细的描述和说明。
可以利用高级用户快速开始中的汇总和主题交叉引用,如果已经熟悉报表概念,则这些内容尤为有用。
对于学习和理解 Crystal Reports,每种方法均有助益。尽管任何一种方法都足以让您上手使用它,您仍然可以在需要时返回本节,查阅其他方法。