在相同字符串的许多操作上,使用StringBuilder类会比使用String对象更有效率。
当你对一个string对象赋值时,这时会生成一个这个对象的副本,如果你赋值多次的话在系统中就会保存多个这个对象的副本,会对系统资源造成很大的浪费,但是StringBuilder不会出先上述情况
String数据类型代表的是一种不可变的字符串, 以为着对这个字符串的插入, 删除或是更改,唯一的方式就是建立一个新的字符串,会引发对内存的配置操作以及对内存的反配置操作,加重CLR管理内存和内存回收的工作,这中情形尤其是在操作大字符串时,更为明显,在单一的用户环境中,不会带来任何问题,但是在服务器环境中,在效能和可扩展性上会造成比较严重的问题。
与System.String相比,StringBuilder会保留自己的字符串缓冲区,在针对StringBuilder执行字符串操作时,会先检查缓冲区的大小是否能否容纳新的字符串,不够时再去增加需要的内存数量,因此大幅降低内存配置的操作次数,提高了效能,当然大多数的情况下,多估算一些缓冲区空间比后来又不断加大要好。
比如:string+=string会占用更多的内存分配。最好使用stringbuilder.append
......
在相同字符串的许多操作上,使用StringBuilder类会比使用String对象更有效率。
当你对一个string对象赋值时,这时会生成一个这个对象的副本,如果你赋值多次的话在系统中就会保存多个这个对象的副本,会对系统资源造成很大的浪费,但是StringBuilder不会出先上述情况
String数据类型代表的是一种不可变的字符串, 以为着对这个字符串的插入, 删除或是更改,唯一的方式就是建立一个新的字符串,会引发对内存的配置操作以及对内存的反配置操作,加重CLR管理内存和内存回收的工作,这中情形尤其是在操作大字符串时,更为明显,在单一的用户环境中,不会带来任何问题,但是在服务器环境中,在效能和可扩展性上会造成比较严重的问题。
与System.String相比,StringBuilder会保留自己的字符串缓冲区,在针对StringBuilder执行字符串操作时,会先检查缓冲区的大小是否能否容纳新的字符串,不够时再去增加需要的内存数量,因此大幅降低内存配置的操作次数,提高了效能,当然大多数的情况下,多估算一些缓冲区空间比后来又不断加大要好。
比如:string+=string会占用更多的内存分配。最好使用stringbuilder.append
......
服务器控件 html标记
label----------<span/>
button---------<input type="submit"/>
textbox--------<input type="text"/>
linkbutton-----<a href="javascript:" />
imagebutton----<input type="image"/>
hyperlink------<a />
dropdownlist---<select />
listbox--------<select size=""/>
checkbox-------<input type="checkbox"/>
checkboxlist---
<table id="CheckBoxList1" border="0">
<tr>
<td><input id="CheckBoxList1_0" type="checkbox" name="CheckBoxList1$0" /><label for="CheckBoxList1_0">1</label></td>
</tr><tr>
<td><input id="CheckBoxList1_1" type="checkbox" name="CheckBoxList1$1" /><label for="CheckBoxList1_1">2</label></td>
</tr>
</table>
radiobutton------<input type="radio" />
radiobuttonlist--
<table id="RadioButtonList1" border ......
经过一个多月的准备,我的小站ASP.NET学习网(www.17aspx.com)终于上线了。界面图如下:
ASP.NET学习网(www.17aspx.com),为ASP.NET学习者提供教程、示例、源码、工具等学习资料,推动ASP.NET学习者之间的交流。涉及ASP.NET、ASP.NET MVC、LINQ、VS2010、WPF、Silverlight、C#3.5等方面。 ......
asp.net中常用的26个优化性能的方法
1. 数据库访问性能优化
数据库的连接和关闭
访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。
使用存储过程
存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。
优化查询语句 ......
ASP.NET中的三层结构分为表示层(UI),业务逻辑层(BLL),数据访问层(Models,DAL,IDAL,DALFactory,DB),下面我来说说我对学习三层结构的运用。
首先我给大家说说这三层都是什么意思。
1. 表示层:web项目自然是应用程序的表示层,就是访问的站点,它提供所有与用户进行交互的界面,通过业务逻辑层(BLL)项目相关方法,展示站点的功能。表示层主要的内容就是控件+事件。如果仅仅是展示,可能只需要将控件绑定数据即可,不需要编写代码;如果需要和用户交互,就要编写相关的事件代码。举个例子吧,比如说是用户“登录”按钮事件,可能需要编写代码验证用户输入内容是否合法(非空验证),然后通过调用业务逻辑的相关方法判断用户名和密码是否匹配,从而达到成功登陆的结果。
2. 业务逻辑层:BLL项目是业务逻辑层的项目,它为表示层提供所有业务的方法和数据访问,自然就是表示层与数据访问层的桥梁。当然它并不直接访问数据库,而是通过引用DALFactory项目来实现。
3. 数据访问层:DALFactory项目、IDAL项目、DAL项目都属于数据访问层的项 ......
C#使用SQLite数据库(asp.net/winform)
2009年1月7日
评论
发表评论
SQLite
是目前比较流行的一个开源、免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,个别不支持的情况,在这里
说明
对各种语言的支持也比较不错,wrapper很多。
Google
Gears 、Mozilla
和 Adobe AIR 都在使用sqlite,应该说明其还是很不错的
SQLite 的关键字列表,这里
支持的sql语法,在这里
在 .NET
里面使用 SQLite
, 我这里使用的wrapper是 System.Data.SQLite
,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点
因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient
, OleDb
等原生的一致
using System.Data;
using System.Data.SQLite;
//...
using (SQLiteConnection cn = new SQLiteConnection(
"Data Source=Test.db3;Pooling=true;FailIfMissing=false")
)
{
//在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录 ......
C#使用SQLite数据库(asp.net/winform)
2009年1月7日
评论
发表评论
SQLite
是目前比较流行的一个开源、免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,个别不支持的情况,在这里
说明
对各种语言的支持也比较不错,wrapper很多。
Google
Gears 、Mozilla
和 Adobe AIR 都在使用sqlite,应该说明其还是很不错的
SQLite 的关键字列表,这里
支持的sql语法,在这里
在 .NET
里面使用 SQLite
, 我这里使用的wrapper是 System.Data.SQLite
,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点
因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient
, OleDb
等原生的一致
using System.Data;
using System.Data.SQLite;
//...
using (SQLiteConnection cn = new SQLiteConnection(
"Data Source=Test.db3;Pooling=true;FailIfMissing=false")
)
{
//在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录 ......
C#使用SQLite数据库(asp.net/winform)
2009年1月7日
评论
发表评论
SQLite
是目前比较流行的一个开源、免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,个别不支持的情况,在这里
说明
对各种语言的支持也比较不错,wrapper很多。
Google
Gears 、Mozilla
和 Adobe AIR 都在使用sqlite,应该说明其还是很不错的
SQLite 的关键字列表,这里
支持的sql语法,在这里
在 .NET
里面使用 SQLite
, 我这里使用的wrapper是 System.Data.SQLite
,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点
因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient
, OleDb
等原生的一致
using System.Data;
using System.Data.SQLite;
//...
using (SQLiteConnection cn = new SQLiteConnection(
"Data Source=Test.db3;Pooling=true;FailIfMissing=false")
)
{
//在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录 ......