模板错误:主模板的声明中不允许使用模板参数列表

没有主模板,所以编译报错

#include "killCmake.h"

#include<string>

using namespace std;

template<typename T>
class Point<char*, T> // 编译,报错error:主模板的声明中不允许使用模板参数列表
{
public:
	Point(char* x, T y) : x_(x), y_(y) {
	}
public:
	char* getX() const
	{
		return x_;
	}
	void setY(char* x)
	{
		x_ = x;
	}
	T getY() cosnt
	{
		return y_;
	}
	void setY(T y)
	{
		y_ = y;
	}
	void display() const
	{
		std::cout << "x_: " << x_ << std::endl;
		std::cout << "y_: " << y_ << std::endl;
	}
private:
	char* x_;
	T y_;
};

int main()
{
	return 0;
}

添加主模板,解决错误: 主模板的声明中不允许使用模板参数列表

#include "killCmake.h"

#include<string>

using namespace std;

// 添加主模板
template<typename T,typename TT>
class Point;

template<typename T>
class Point<char*, T> // 编译,报错error:主模板的声明中不允许使用模板参数列表
{
public:
	Point(char* x, T y) : x_(x), y_(y) {
	}
public:
	char* getX() const
	{
		return x_;
	}
	void setY(char* x)
	{
		x_ = x;
	}
	T getY() const
	{
		return y_;
	}
	void setY(T y)
	{
		y_ = y;
	}
	void display() const
	{
		std::cout << "x_: " << x_ << std::endl;
		std::cout << "y_: " << y_ << std::endl;
	}
private:
	char* x_;
	T y_;
};

int main()
{
	return 0;
}

遇到说c++成员函数声明为const是鸡肋的,敬而远之,我前面一篇专门讲过,const类型的成员函数修改了类中this指针的指向类型,提高了成员函数的调用灵活性,这是实打实的语法功能,绝不是什么鸡肋,我的模板编程系列正在写,有些工作很多年的面试者说我们代码是为了写的简单易懂所以不用模板,不写元编程,我面试过程中晕过去,就事论事,不用模板,在标准库重写过程中寸步难行。
永生追随开源及分享精神,不断向他人学习,并乐意分享

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前言................................................................................................................................. 7 什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .......................................................................................... 8 文档规约................................................................................................................... 8 联系我们................................................................................................................... 8 几点说明................................................................................................................... 9 第一部分 模板开发指南 ................................................................................................. 10 第一章 模板开发入门 ............................................................................................. 10 1.1 简介 .......................................................................................................... 10 1.2 模板 + 数据模型 = 输出 ........................................................................... 10 1.3 数据模型一览 ............................................................................................ 11 1.4 模板一览 ................................................................................................... 14 第二章 数值和类型 ................................................................................................. 20 2.1 基本内容 ................................................................................................... 20 2.2 类型 .......................................................................................................... 22 第三章 模板 ........................................................................................................... 26 3.1 总体结构 ................................................................................................... 26 3.2 指令 .......................................................................................................... 27 3.3 表达式 ....................................................................................................... 28 3.4 插值 .......................................................................................................... 43 第四章 其它 ........................................................................................................... 46 4.1 自定义指令 ................................................................................................ 46 4.2 在模板定义变量 ..................................................................................... 51 4.3 命名空间 ................................................................................................... 54 4.4 空白处理 ................................................................................................... 57 4.5替换(方括号)语法 ................................................................................... 60 第二部分 程序开发指南 ................................................................................................. 62 第一章 程序开发入门 ............................................................................................. 62 1.1 创建配置实例 ............................................................................................ 62 1.2 创建数据模型 ............................................................................................ 62 1.3 获得模板 ................................................................................................... 63 1.4 合并模板和数据模型 .................................................................................. 64 1.5将代码放在一起 .......................................................................................... 64 第二章 数据模型 .................................................................................................... 66 2.1 基本内容 ................................................................................................... 66 2.2 标量 .......................................................................................................... 66 2.3 容器 .......................................................................................................... 67 2.4 方法 .......................................................................................................... 68 2.5 指令 .......................................................................................................... 69 2.6 节点变量 ................................................................................................... 75 2.7 对象包装 ................................................................................................... 76 第三章 配置 ........................................................................................................... 80 3.1 基本内容 ................................................................................................... 80 3.2 共享变量 ................................................................................................... 80 3.3 配置信息 ................................................................................................... 81 3.4 模板加载 ................................................................................................... 83 3.5 错误控制 ................................................................................................... 86 第四章 其它 ........................................................................................................... 90 4.1 变量 .......................................................................................................... 90 4.2 字符集问题 ................................................................................................ 90 4.3 多线程 ....................................................................................................... 92 4.4 Bean的包装 ................................................................................................ 92 4.5 日志 .......................................................................................................... 98 4.6 在Servlet使用FreeMarker ...................................................................... 99 4.7 为FreeMarker配置安全策略......................................................................106 4.8 遗留的XML包装实现 ................................................................................107 4.9 和Ant一起使用FreeMarker.......................................................................111 4.10 Jython 包装器 ..........................................................................................112 第三部分 XML处理指南................................................................................................114 前言.......................................................................................................................114 第一章 揭示XML文档 ...........................................................................................115 1.1 节点树 ......................................................................................................115 1.2 将XML放到数据模型 ............................................................................117 第二章 必要的XML处理 ........................................................................................119 2.1 通过例子来学习 ........................................................................................119 2.2 形式化描述 ...............................................................................................126 第三章 声明的XML处理 ........................................................................................131 3.1 基础内容 ..................................................................................................131 3.2 详细内容 ..................................................................................................133 第四部分 参考文档 .......................................................................................................136 第一章 内建函数参考文档 .....................................................................................136 1.1 处理字符串的内建函数 .............................................................................136 1.2 处理数字的内建函数 .................................................................................150 1.3 处理日期的内建函数 .................................................................................153 1.4 处理布尔值的内建函数 .............................................................................158 1.5 处理序列的内建函数 .................................................................................158 1.6 处理哈希表的内建函数 .............................................................................164 1.7 处理节点(XML)的内建函数....................................................................164 1.8 很少使用的和专家级的内建函数 ...............................................................166 第二章 指令参考文档 ............................................................................................170 2.1 if,else,elseif指令 ...................................................................................170 2.2 switch,case,default,break指令..............................................................172 2.3 list,break 指令 .........................................................................................173 2.4 include指令 ...............................................................................................174 2.5 import 指令 ...............................................................................................177 2.6 noparse指令 ..............................................................................................178 2.7 compress指令 ............................................................................................179 2.8 escape,noescape指令...............................................................................180 2.9 assign 指令 ................................................................................................182 2.10 global 指令 ..............................................................................................184 2.11 local 指令 ................................................................................................185 2.12 setting 指令 .............................................................................................185 2.13 用户自定义指令() ......................................................................187 2.14 macro,nested,return 指令 ....................................................................189 2.15 function,return 指令...............................................................................193 2.16 flush 指令 ................................................................................................195 2.17 stop 指令.................................................................................................195 2.18 ftl 指令 ....................................................................................................196 2.19 t,lt,rt 指令 ..........................................................................................197 2.20 nt 指令 ....................................................................................................198 2.21 attempt,recover 指令 .............................................................................199 2.22 visit,recurse,fallback 指令 .....................................................................200 第三章 特殊变量参考文档 .....................................................................................205 第四章 FTL的保留名称.......................................................................................207 第五章 废弃的FTL结构 .........................................................................................208 5.1 废弃的指令列表 ........................................................................................208 5.2 废弃的内建函数列表 .................................................................................208 5.3 老式的macro和call指令 ..........................................................................208 5.4 转换指令 ..................................................................................................210 5.5 老式FTL语法 ............................................................................................211 5.6 #{…}式的数字插值 ......................................................................................212 第五部分 附录 ..............................................................................................................214 附录A FAQ .............................................................................................................214 1. JSP和FreeMarker的对比 .............................................................................214 2. Velocity和FreeMarker的对比.......................................................................215 3. 为什么FreeMarker对null-s和不存在的变量很敏感,如何来处理它? ......215 4. 文档编写了特性X,但是好像FreeMarker并不知道它,或者它的行为和文档描述的不同,或者一个据称已经修改的BUG依然存在。 .....................................216 5. 为什么FreeMarker打印奇怪的数字数字格式(比如1,000,000或1 000 000而不是1000000)? ...............................................................................................216 6. 为什么FreeMarker会打印不好的小数和/或分组分隔符号(比如3.14而不是3,14).......................................................................................................................217 7. 为什么当我想用如格式打印布尔值时,FreeMarker会抛出错误,又如何来修正呢?................................................................................................................217 8. FreeMarker标签的混淆了编辑器或XML处理器,应该怎么做? .........217 9. 什么是合法的变量名? ...............................................................................217 10. 如何使用包含空格,或其他特殊字符的变量(宏)名? ............................218 11. 当我试图使用JSP客户标签时为什么会得到非法参数异常:形式参数类型不匹配?................................................................................................................218 12. 如何像jsp:include一样的方式引入其它的资源?................................219 13. 如何给普通Java方法/ TemplateMethodModelEx/ TemplateTransformModel/ TemplateDirectiveModel的实现传递普通java.lang.* / java.util.*对象的参数? ...............................................219 14. 为什么在myMap[myKey]表达式不能使用非字符串的键?那现在应该怎么做?................................................................................................................220 15. 当使用?keys/?values遍历Map(哈希表)的内容时,得到了混合真正map条目的java.util.Map的方法。当然,只是想获取map的条目。 ...............221 16. 在FreeMarker的模板如何改变序列(lists)和哈希表(maps)? ...........221 17. 关于null在FreeMarker模板语言是什么样的? ......................................222 18. 我该怎么在表达式(作为另外一个指令参数)使用指令(宏)的输出? 223 19. 在输出为什么用“?”来代替字符X? ..................................................223 20. 在模板执行完成后,怎么在模板获取计算过的值? ................................224 21. 我能允许用户上传模板吗?又如何保证安全呢? .......................................224 22. 如何在Java语言实现方法或宏而不是在模板语言?............................225 23. 为什么FreeMarker的日志压制了我的应用程序? ......................................225 24. 在基于Servlet的应用程序,如何在模板执行期间发生错误时,展示一个友好的错误提示页面,而不是堆栈轨迹? ...........................................................226 25. 我正使用一个可视化的HTML割裂模板标记的编辑器。你们可以改变模板语言的语法来兼容我的编辑器么? .........................................................................226 26. FreeMarker有多快?真的是2.X版本的要比1.X版本(经典的FreeMarker)的慢吗?................................................................................................................226 27. 我的Java类怎么才能获取到关于模板结构的信息(比如所有变量的列表)?.......................................................................................................................227 28. 你会一直提供向后的兼容性吗? ...............................................................227 29. 如果我们把FreeMarker和我们的产品一起发行,我们需要发布我们产品的源代码么? ............................................................................................................228 附录B 安装FreeMarker..........................................................................................229 附录C 构建FreeMarker..........................................................................................230 附录D 版本 ...........................................................................................................231 2.3.18版 .........................................................................................................231 2.3.17版 .........................................................................................................233 2.3.16 版.........................................................................................................235 2.3.15 版.........................................................................................................236 2.3.14 版.........................................................................................................237 2.3.13 版.........................................................................................................238 2.3.12 版.........................................................................................................238 2.3.11 版.........................................................................................................239 2.3.10 版.........................................................................................................240 2.3.9 版 ..........................................................................................................241 2.3.8 版 ..........................................................................................................242 2.3.7 版 ..........................................................................................................242 2.3.7 RC1版 .....................................................................................................243 2.3.6 版 ..........................................................................................................244 2.3.5 版 ..........................................................................................................244 2.3.4 版 ..........................................................................................................245 2.3.3 版 ..........................................................................................................246 2.3.2 版 ..........................................................................................................247 2.3.1 版 ..........................................................................................................248 2.3 版 .............................................................................................................250 2.2.8 版 ..........................................................................................................262 2.2.7 版 ..........................................................................................................263 2.2.6 版 ..........................................................................................................263 2.2.5 版 ..........................................................................................................264 2.2.4 版 ..........................................................................................................264 2.2.3 版 ..........................................................................................................265 2.2.2 版 ..........................................................................................................265 2.2.1 版 ..........................................................................................................266 2.2 版 .............................................................................................................266 2.1.5 版 ..........................................................................................................275 2.1.4 版 ..........................................................................................................275 2.1.3 版 ..........................................................................................................275 2.1.2 版 ..........................................................................................................276 2.1.1 版 ..........................................................................................................276 2.1 版 .............................................................................................................277 2.01 版 ...........................................................................................................281 2.0 版 .............................................................................................................281 2.0 RC3版........................................................................................................282 2.0 RC2版........................................................................................................283 2.0 RC1版........................................................................................................284 附录E 许可 ...........................................................................................................287 词汇表 ..........................................................................................................................288
通过 ADO.NET 访问数据 ADO.NET 概述 ADO.NET 的设计目标:讨论创建 ADO.NET 的动机和设计目标。 ADO.NET 结构:提供 ADO.NET 结构和组件的概述。 .NET 数据提供程序:提供有关随 ADO.NET 提供的 .NET 数据提供程序和 .NET 数据提供程序的设计的概述。 ADO.NET DataSet:提供有关 DataSet 设计和组件的概述。 为 .NET 数据提供程序编写通用代码:提供有关如何使用 ADO.NET 所提供的通用接口来编写一组对于任何 .NET 数据提供程序都将运行的代码的信息。 ADO.NET 示例应用程序:提供 ADO.NET 应用程序的示例,该示例从数据库检索数据并将其返回到控制台。   使用 .NET 数据提供程序访问数据 使用 ADO.NET 连接到数据源:描述 ADO.NET Connection 对象,并说明如何使用它来连接到数据源。 执行命令:描述 ADO.NET Command 对象,并说明如何使用它来对数据源执行查询和命令。 使用 DataReader 检索数据:描述 ADO.NET DataReader 对象,并说明如何使用它从数据源返回结果流。 将存储过程用于命令:描述如何使用 Command 对象来调用存储过程,并提供有关发送和检索参数值的信息。 从数据库获取单个值:描述如何使用 Command 从数据库查询返回单个值。 从数据库获取 BLOB 值:描述如何使用 DataReader 从数据库返回二进制大对象 (BLOB)。 执行数据库操作和修改数据:描述如何使用 Command 对数据源发出 INSERT、UPDATE 和 DELETE 命令,以及如何执行目录操作(如创建或更改表)。 从 SQL Server 以 XML 形式获取数据:描述如何使用 Command 以 XmlReader 形式返回 SQL Server FOR XML 查询的结果。 从 DataAdapter 填充 DataSet:描述如何通过 DataAdapter 来使用表、列和行填充 DataSet。 使用 DataAdapter 和 DataSet 更新数据库:描述如何使用 DataAdapter 将对 DataSet 数据的更改解析回数据源。 向 DataSet 添加现有约束:描述如何从数据源填充 DataSet 的约束(如键列的唯一约束)。 设置 DataTable 和 DataColumn 映射:描述如何使用表和列映射来提供从数据源返回的列的应用程序特定名称。 将参数用于 DataAdapter:描述如何将参数用于 DataAdapter 的命令属性(包括如何将 DataSet 列的内容映射到命令参数)。 输入和输出参数及返回值:描述如何将 DataSet 表列的内容映射到 DataAdapter 命令属性的输入和输出参数(包括如何从存储过程检索返回值)。 自动生成的命令:描述如何使用 CommandBuilder 为具有单个表 SELECT 命令的 DataAdapter 自动生成 INSERT、UPDATE 和 DELETE 命令。 使用 DataAdapter 事件:描述 DataAdapter 事件并说明如何使用这些事件。 从数据库获取架构信息:解释如何从数据源获取架构信息,如数据库或目录表的列表。 执行事务:解释如何使用 Connection 和 Transaction 对象对数据源执行事务。 .NET 数据提供程序的代码访问安全性:描述随 .NET 框架提供的 .NET 数据提供程序的可用附加代码访问安全权限,并说明如何确定特定权限是否可用于所运行的代码。   创建和使用 DataSet 创建 DataSet:描述创建 DataSet 实例的语法。 向 DataSet 添加 DataTable:描述如何创建表和列并将其添加到 DataSet 。 添加表间关系:描述如何创建 DataSet 表之间的关系。 导航表间关系:描述如何使用 DataSet 表之间的关系来返回具有父子关系的子行或父行。 将 DataSet 与现有数据一起使用"描述如何使用 DataAdapter 将 DataSet 的更改解析回数据源。 合并 DataSet 内容:描述如何将一个 DataSet、DataTable 或 DataRow 数组的内容并入另一个 DataSet。 复制 DataSet 内容:描述如何创建可包含架构和指定数据的 DataSet 副本。 使用 DataSet 事件:描述 DataSet 的事件并说明如何使用这些事件。 使用类型化的 DataSet:描述类型化 DataSet 并说明如何创建和使用类型化 DataSet。   XML 和 DataSet:描述 DataSet 如何与作为数据源的 XML 进行交互(包括以 XML 数据的形式加载和保持 DataSet 的内容)。 DiffGram:提供有关 DiffGram 的详细信息,DiffGram 是一种用于读写 DataSet 内容的 XML 格式。 从 XML 加载 DataSet:讨论在从 XML 文档加载 DataSet 内容时需考虑的不同选项。 以 XML 数据形式编写 DataSet:讨论如何以 XML 数据的形式生成 DataSet 的内容以及可使用的不同 XML 格式选项。 从 XML 加载 DataSet 架构信息:讨论用于从 XML 加载 DataSet 架构的 DataSet 方法。 以 XML 架构 (XSD) 形式编写 DataSet 架构信息:讨论 XML 架构的用途以及如何从 DataSet 生成 XML 架构。 使 DataSet 与 XmlDataDocument 同步:讨论同步访问单个数据集的关系和分层视图的 .NET 框架的可用功能,并解释如何在 DataSet 和 XmlDataDocument 之间创建同步关系。 嵌套的 DataRelation:讨论嵌套 DataRelation 对象在以 XML 数据形式表示 DataSet 内容时的重要性,并描述如何创建这些对象。 从 XML 架构 (XSD) 生成 DataSet 关系结构:描述从 XML 架构定义语言 (XSD) 架构创建的 DataSet 的关系结构(即架构)。 将 XML 架构 (XSD) 约束映射到 DataSet 约束:描述用于在 DataSet 创建唯一和外键约束的 XML 架构元素。 从 XML 架构 (XSD) 生成 DataSet 关系:描述用于在 DataSet 各表列间创建关系的 XML 架构元素。 了解约束和关系之间的相互关系:描述当使用 XML 架构元素在 DataSet 创建约束时如何隐式地创建关系。   从 XML 推断 DataSet 关系结构:描述在从 XML 元素进行推断时所创建的 DataSet 的结果关系结构(即架构)。   创建和使用数据表:描述如何创建和自定义 DataTable 对象。 创建数据表:说明如何创建 DataTable 并将其添至 DataSet。 定义数据表的架构:提供有关创建和使用 DataColumn 对象和约束的信息。 在数据表操作数据:说明如何添加、修改和删除表的数据。说明如何使用 DataTable 事件来检查对表数据的更改。   创建和使用 DataView:描述如何创建 DataTable 数据的动态视图,这些视图通常用于数据绑定应用程序。 创建 DataView:描述如何为 DataTable 创建 DataView。 使用 DataView 对数据排序和筛选:描述如何设置 DataView 的属性,以按照特定筛选条件返回数据行的子集或以特定排序顺序返回数据。 使用 DataView 查看数据:描述如何访问 DataView 的内容,在 DataView 查找特定的数据行,以及基于父子关系创建数据的视图。 使用 DataView 修改数据:描述如何通过 DataView 修改基础 DataTable 的数据(包括启用或禁用更新)。 使用 DataView 事件:描述如何使用 ListChanged 事件接收在 DataView 的内容或顺序得到更新时发出的通知。 使用 DataViewManager 设置默认表视图:描述如何使用 DataViewManager 来管理 DataSet 每个表的 DataView 设置。   从 ADO.NET 访问 ADO 记录集或记录:描述如何使用 OleDbDataAdapter 从 ADO 记录或记录集填充 DataSet。 ADO.NET 方案示例:提供数据识别应用程序的常见编程方案的示例,并使用 ADO.NET 提供这些方案的解决方案。 检索“标识”或“自动编号”值:提供一个特定示例,它将为 Microsoft SQL Server 表的“标识”(Identity) 字段所生成的值以及 Microsoft Access 表的“自动编号”(Autonumber) 字段映射到表插入行的列。 开放式并发:描述开放式并发模型,并提供有关如何使用 ADO.NET 测试是否存在开放式并发冲突的示例。 从 XML Web services 使用 DataSet:提供一个 XML Web services 的示例,该示例以 DataSet 的形式返回数据源的数据,另外还接收更新的 DataSet 并将更改解析回数据源。 查询结果分页:提供有关以数据页的形式查看查询结果的示例。   实现 .NET 数据提供程序:描述如何为数据存储区创建自定义 .NET 数据提供程序,并为您提供模板代码。 .NET 数据提供程序实现入门:为定义 .NET 数据提供程序提供信息和建议,其包括有关可用于实现的接口的说明和有关为提供程序创建命名空间的信息。 实现连接:描述连接的特性,并说明如何为 .NET 数据提供程序实现您自己的连接。 实现命令:描述命令的特性,并说明如何为 .NET 数据提供程序实现您自己的命令。 实现 DataReader:描述 DataReader 的特性,并说明如何为 .NET 数据提供程序实现您自己的 DataReader。 实现 DataAdapter:描述 DataAdapter 的特性,并说明如何为 .NET 数据提供程序实现您自己的 DataAdapter。 示例 .NET 数据提供程序:包含 .NET 数据提供程序的示例实现。   数据集 数据集介绍:提供什么是 ADO.NET 数据集、如何对它们进行类型化或非类型化、它们的用途及结构的概述。 用于创建数据集的 Visual Studio 工具:描述 Visual Studio 提供了哪些允许创建数据集的功能,以及在何时选用什么样的工具。 用组件设计器创建类型化数据集:描述在窗体或组件工作时如何创建数据集。 用表达式创建数据集列:描述如何在数据集表定义基于计算或其他表达式(而不是直接基于数据源的数据)的列。 将表添加到现有数据集:描述如何在以前创建的类型化数据集创建新数据表。 将现有类型化数据集添加到窗体或组件:描述如何在窗体或组件上创建数据集的实例。 将非类型化数据集添加到窗体或组件:描述如何创建无关联架构的数据集。 演练:将数据源表映射到数据集表:描述如何基于另一个架构,使用数据适配器表和列映射从数据库将数据加载到数据集。 数据适配器 数据适配器介绍:提供有关数据适配器的定义、用途和结构的概述。 数据适配器命令的参数:描述适配器在运行时传递给 SQL 语句或存储过程的参数的结构和用途。 数据适配器的表映射:描述如何在源表和数据集表之间映射列名的选项。 创建数据适配器:列出在 Visual Studio 创建数据适配器的各种方法。 为数据适配器配置参数:解释如何创建将在运行时传递给数据适配器命令的参数并设置其属性。 将数据源列映射到数据集数据表列:提供有关如何建立和修改源表和数据集表的列名之间映射的说明。 预览数据适配器的结果:提供有关测试数据适配器填充数据集的方式的说明。 数据连接 与 ADO 的早期版本和其他数据访问组件相比,ADO.NET 提供了若干好处。这些好处分成以下几个类别: 互操作性 ADO.NET 应用程序可以利用 XML 的灵活性和广泛接受性。由于 XML 是用于在网络传输数据集的格式,因此可以读取 XML 格式的任何组件都可以处理数据。实际上,接收组件根本不必是 ADO.NET 组件:传输组件可以只是将数据集传输给其目标,而不考虑接收组件的实现方式。目标组件可以是 Visual Studio 应用程序或无论用什么工具实现的其他任何应用程序。唯一的要求是接收组件能够读取 XML。作为一项工业标准,XML 正是在谨记这种互操作性的情况下设计的。 可维护性 在已部署系统的生存期,适度的更改是可能的,但由于十分困难,所以很少尝试进行实质的结构更改。这是很遗憾的,因为在事件的自然过程,这种实质上的更改会变得很有必要。例如,当已部署的应用程序越来越受用户欢迎时,增加的性能负荷可能需要进行结构更改。随着已部署的应用程序服务器上的性能负荷的增长,系统资源会变得不足,并且响应时间或吞吐量会受到影响。面对该问题,软件设计者可以选择将服务器的业务逻辑处理和用户界面处理划分到单独计算机上的单独层上。实际上,应用程序服务器层将替换为两层,缓解了系统资源缺乏。 该问题并不是要设计三层应用程序。相反,它是要在应用程序部署以后增加层数。如果原始应用程序使用数据集以 ADO.NET 实现,则该转换很容易进行。请记住,当用两层替换单个层时,将安排这两层交换信息。由于这些层可以通过 XML 格式的数据集传输数据,所以通讯相对较容易。 可编程性 Visual Studio 的 ADO.NET 数据组件以不同方式封装数据访问功能,帮助您加快编程速度并减少犯错几率。例如,数据命令提取生成和执行 SQL 语句或存储过程的任务。 同样,由这些工具生成的 ADO.NET 数据类导致类型化数据集。这又使您可以通过已声明类型的编程访问数据。例如,请考虑下面这行代码(它访问未声明类型的数据集内的数据成员): ' Visual Basic If TotalCost > DataSet1.Tables("Customers").Rows(i)("AvailableCredit") Then // C# if (TotalCost > DataSet1.Tables["Customers"].Rows[i]["AvailableCredit"]) { } 访问已声明类型的数据集内的数据成员的等效代码行如下所示: ' Visual Basic If TotalCost > DataSet1.Customers("Jones").AvailableCredit Then // C# if(TotalCost > DataSet1.Customers("Jones").AvailableCredit) { } 已声明类型的数据集的代码更易阅读。因为提供了语句结束,所以它还便于编写。例如,“AvailableCredit”在完成以下语句的选择列表: IF TotalCost > Customer. 最后,已声明类型的数据集的代码更安全,原因在于它提供对类型的编译时检查。例如,假定 AvailableCredit 表达为货币值。如果程序员误向 AvailableCredit 分配了字符串值,则环境会在编译时向程序员报告该错误。当使用声明类型的数据集时,程序员直到运行时才会知道该错误。 有关类型化数据集和非类型化数据集的更多信息,请参阅数据集介绍。 性能 对于不连接的应用程序,ADO.NET 数据库提供的性能优于 ADO 不连接的记录集。当使用 COM 封送在层间传输不连接的记录集时,会因将记录集内的值转换为 COM 可识别的数据类型而导致显著的处理开销。在 ADO.NET ,这种数据类型转换则没有必要。 可伸缩性 因为 Web 可以极大增加对数据的需求,所以可缩放性变得很关键。Internet 应用程序具有无限的潜在用户供应。尽管应用程序可以很好地为十几个用户服务,但它可能不能向成百上千个(或几百万个)用户提供同样好的服务。使用数据库锁和数据库连接之类资源的应用程序不能很好地为大量用户服务,因为用户对这些有限资源的需求最终将超出其供应。 ADO.NET 通过鼓励程序员节省有限资源来实现可缩放性。由于所有 ADO.NET 应用程序都使用对数据的不连接访问,因此它不会在较长持续时间内保留数据库锁或活动数据库连接。
phpBB具有友好的用户界面,使用了当今网络上流行的php语言工作,可搭配MySQL、MS SQL、PostgreSQL、Access等数据库系统使用,适合大多数网站用来搭建论坛系统。 phpBB 3.3.3 简体文 更新日志:2020-01-30漏洞[PHPBB3-16178]-通过env参数覆盖缓存目录时,Container_builder和Container不使用相同的cache_dir;[PHPBB3-16535]-从MySQL8.x断的phpBB2.0.x迁移;[PHPBB3-16582]-使用“数字”类型的空自定义字段保存配置文件时,SQL错误;[PHPBB3-16619]-拼写不存在;[PHPBB3-16629]-ACP get_database_size()在MySql8.0.xx上失败;[PHPBB3-16630]-保留文本操作API;[PHPBB3-16640]-MCP链接未显示在菜单栏;[PHPBB3-16641]-ACP的config.php验证失败(Windows)-PHP8;[PHPBB3-16646]-安装时发生PHP致命错误;[PHPBB3-16648]-setExpectedTriggerError()测试出现“访问未声明的静态属性”错误;[PHPBB3-16653]-Recaptcha v3-设置了请求方法,即使该默认值实际上不可用;[PHPBB3-16656]-mbstring http_input和output的过时签入代码;[PHPBB3-16665]-修正了表情符号,用于设置面板设置和新事件的字符串;[PHPBB3-16666]-github操作的Windows测试无法在postgres写入文件;[PHPBB3-16667]-删除未使用的create_schema安装任务;[PHPBB3-16670]-OAuth提供者的唯一机密和密钥检查在PHP 8上失败;[PHPBB3-16673]-无效的Atom供稿;[PHPBB3-16677]-下拉容器的事件处理程序在移动视图不起作用;[PHPBB3-16679]-登录表单应遵守“允许重置密码”的设置。改进[PHPBB3-15722]-允许论坛topicrow分页使用topicrow值;[PHPBB3-16538]-添加MySQL 8测试;[PHPBB3-16549]-使用PHPUnit9.3+进行PHP8.0+测试;[PHPBB3-16606]-UCP_PM_VIEWMESSAGE.HTML事件请求;[PHPBB3-16607]-Oracle DBAL驱动程序使用过时的PHP OCI8别名和功能;[PHPBB3-16617]-添加事件以修改内容状态变量;[PHPBB3-16632]-将作曲家更新为版本2;[PHPBB3-16636]-向TravisCI添加PHP8.0版本;[PHPBB3-16659]-使用Github操作代替TravisCI和AppVeyor;[PHPBB3-16661]-合并后清理github操作任务;[PHPBB3-16675]-恢复检查提交消息;[PHPBB3-16676]-使Github操作缓存作曲家依赖项;[PHPBB3-16678]-在代码嗅探器添加对Traits的支持。新功能[PHPBB3-15951]-将核心事件添加到core.mcp_delete_topic_modify_ *。任务[PHPBB3-16633]-3.2生命周期结束后更新拉取请求模板

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值