Jerry.Duan

坚信在China's Coder的世界也有和谐的阳光
posts - 6, comments - 12, trackbacks - 0, articles - 1

2012年2月6日

Asp.Net性能优化 分两方面

1.设计时

1.权衡安全性和性能

动态的ADO.NET数据库连接池

加密算法的选择

2.应用程序的逻辑层ixing一个

尽可能的将各层部署在一起:in-process>cross-process>remote network

3.减少客户端与服端器或者服务器间的往返

在执行一个长时间的服务器操作前,使用HttpResponse.IsClientConnected检查客户端是否保持连接

使用缓存

输出缓存

尽可能的使用Server.Transfer代替Response.Redirect

4.避免长时间运行任务的阻塞

使用异步调用Web Service或者Remote Object

5.使用Caching

缓存对性能影响大的数据和输出

缓存数据应该是静态的或者是很少变动的,而且使用频繁

使用user control封装静态页面的内容,使其与动态内容分离。

选择正确的缓存机制:session,response caching,user control。

6.避免不必要的异常

设计代码去避免异常:验证用户输入,对已知情况进行检查

避免使用异常控制逻辑流程

避免依赖全局异常来处理所有异常:尽可能的就进catch和处理异常

尽早检查复杂操作的依赖项

避免大量的异常信息呈现给用户。

2.实现时

1.线程指导

避免手动创建基于客户端请求的线程

使用ThreadPool.QueueUserWorkItem或者异步调用

避免阻塞线程

2.资源管理

晚获取,早释放

不要缓存池资源

显式的调用Dispose或者Close释放打开的资源:finally;using

3.页面

减小页面大小

使用include,js,删除页面空格和tabs

禁用不必要的viewstate

限制图片的使用,使用压缩图像

避免长的控件名称

使用Buffering

使用Page.IsPostBack减少多余的处理

划分页面内容提交的caching效率

设置<compilation debug="false".../>

设置客户端校验

3.数据绑定

 避免使用Page.DataBind

少使用DataBinder.Eval

4.数据访问

 对大数据量的结果集使用分页

使用DataReader做数据绑定

防止用户请求大量数据

考虑缓存数据

posted @ 2012-02-06 11:47 DarkNight 阅读(48) 评论(0) 编辑

2011年8月22日

摘要: 水晶报表初体验阅读全文

posted @ 2011-08-22 20:10 DarkNight 阅读(1946) 评论(12) 编辑

2010年1月5日

 本帖转自http://blog.csdn.net/net_lover/archive/2009/04/20/4095606.aspx  只为自己查看方便,希望孟老师勿怪.

2009年3月31日,微软发布了 Microsoft Visual Studio International Pack 1.0 SR1。Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持。使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用。下载地址是:http://www.microsoft.com/downloads/details.aspx?FamilyID=44cac7f0-633b-477d-aed2-99aee642fc10&DisplayLang=zh-cn  该软件包1.0版提供下面七个组件以增强.NET Framework对全球化软件应用开发的支持。

East Asia Numeric Formatting Library - 支持将小写的数字字符串格式化成简体中文,繁体中文,日文和韩文的大写数字字符串。
Japanese Kana Conversion Library - 支持将日文假名(Kana)转化为另一种日文字符。
Japanese Text Alignment Library - 支持日文特有的一种对齐格式。
Japanese Yomi Auto-Completion Library - 类库支持感知日文输入法的输入自动完成和一个文本框控件的示例。
Korean Auto Complete TextBox Control - 支持韩文输入法的智能感知和输入自动完成的文本框控件。
Simplified Chinese Pin-Yin Conversion Library - 支持获取简体中文字符的常用属性比如拼音,多音字,同音字,笔画数。
Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool - 支持简繁体中文之间的转换。该组件还包含一个Visual Studio集成开发环境中的插件(Add-in)支持简繁体中文资源文件之间的转换。
下载完毕后,进行解压,里面有7个msi文件,其中:CHSPinYinConv.msi就是汉字拼音相关的,CHTCHSConv.msi是进行简体与繁体进行相互转换的,值安装这2个msi即可。安装完毕后,需要在VS里添加引用,分别引用:C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library下和C:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool下的dll即可使用。下面是一个汉字“孟”的测试例子:

 

代码
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
using System.Collections.ObjectModel;


public partial class Default2 : System.Web.UI.Page
{

  
protected void Page_Load(object sender, EventArgs e)
  {
    ChineseChar chineseChar 
= new ChineseChar('');
    Response.Write(
"<h2>关于汉字 “孟” 的相关信息:</h2>");
    Response.Write(
"<li>“孟”笔画数:" + ChineseChar.GetStrokeNumber(''));
    Response.Write(
"<li>“孟”是否是多音字: " + chineseChar.IsPolyphone);
    ReadOnlyCollection
<string> pinyin = chineseChar.Pinyins;
    Response.Write(
"<li>“孟”所有拼音:");
    
foreach (string pin in pinyin)
    {
      Response.Write(pin 
+ ",");
    }

    
char[] ChineseChars;

    Response.Write(
"<li>所有拼音 MENG1 的汉字<br/>");
    ChineseChars 
= ChineseChar.GetChars("MENG1");
    Response.Write(
"" + ChineseChars.Length.ToString() + "个,分别是:");
    
for (int i = 0; i < ChineseChars.Length; i++)
    {
      Response.Write(ChineseChars[i] 
+ ",");
    }

    Response.Write(
"<li>所有拼音 MENG2 的汉字 <br/>");

    ChineseChars 
= ChineseChar.GetChars("MENG2");
    Response.Write(
"" + ChineseChars.Length.ToString() + "个,分别是:");
    
for (int i = 0; i < ChineseChars.Length; i++)
    {
      Response.Write(ChineseChars[i]);
    }

    Response.Write(
"<li>所有拼音 MENG3 的汉字<br/>");
    ChineseChars 
= ChineseChar.GetChars("MENG3");
    Response.Write(
"" + ChineseChars.Length.ToString() + "个,分别是:");
    
for (int i = 0; i < ChineseChars.Length; i++)
    {
      Response.Write(ChineseChars[i]);
    }
    Response.Write(
"<li>所有拼音 MENG2 的汉字<br/>");
    ChineseChars 
= ChineseChar.GetChars("MENG4");
    Response.Write(
"" + ChineseChars.Length.ToString() + "个,分别是:");
    
for (int i = 0; i < ChineseChars.Length; i++)
    {
      Response.Write(ChineseChars[i]);
    }
    Response.Write(
"<li>所有拼音 MENG5 的汉字<br/>");
    ChineseChars 
= ChineseChar.GetChars("MENG5");
    Response.Write(
"" + ChineseChars.Length.ToString() + "个,分别是:");
    
for (int i = 0; i < ChineseChars.Length; i++)
    {
      Response.Write(ChineseChars[i]);
    }

    String simText 
= "欢迎光临【孟子E章】";
    String traText 
= ChineseConverter.Convert(simText, ChineseConversionDirection.SimplifiedToTraditional);
    Response.Write(
"<li>繁简转换测试:" + traText);
  }
}

本文来自CSDN博客,转载请标明出处:http:
//blog.csdn.net/net_lover/archive/2009/04/20/4095606.aspx

 

 

得到的结果是:

关于汉字 “孟” 的相关信息:
“孟”笔画数:8
“孟”是否是多音字: True
“孟”所有拼音:MENG4,MENG5,,,,,,,
所有拼音 MENG1 的汉字
共4个,分别是:擝,濛,矇,蒙,
所有拼音 MENG2 的汉字
共45个,分别是:儚冡夣嫇尨幪庬懜懞掹曚朦橗檬氋氓溕濛獴甍甿盟瞢矇矒礞艨莔萌蒙蕄虻蝱鄳鄸雺霚霿靀顭饛鯍鸏鹲鼆
所有拼音 MENG3 的汉字
共16个,分别是:勐幪懜懵猛瓾矇艋蒙蜢蠓錳锰鯭黽鼆
所有拼音 MENG2 的汉字
共6个,分别是:夢夣孟懜梦霥
所有拼音 MENG5 的汉字
共61个,分别是:儚冡勐夢夣嫇孟尨幪庬懜懞懵掹擝曚朦梦橗檬氋氓溕濛猛獴瓾甍甿盟瞢矇矒礞艋艨莔萌蒙蕄虻蜢蝱蠓鄳鄸錳锰雺霚霥霿靀顭饛鯍鯭鸏鹲黽鼆
繁简转换测试:歡迎光臨【孟子E章】
 不过:有几个方面主要注意:

不清楚这个工具参照的是哪个汉字标准,SDK上也没有看到说明,“孟”这个字在字典中并不是多音字;
拼音后面的1,2,3,4,5猜测应当是声调标记:阴平,阳平,上声,去声,轻声。具体是否是有待查证;
中文简体与中文繁体之间的转换比较简单,下面就是一个将简体转换成繁体的代码:


 

String simText = "欢迎光临【孟子E章】";
String traText 
= ChineseConverter.Convert(simText, ChineseConversionDirection.SimplifiedToTraditional);
Response.Write(
"<li>繁简转换测试:" + traText);

 

下面是Microsoft.International.Converters.PinYinConverter.ChineseChar类的成员:

封装了简体中文的读音和笔画等基本信息。

成员类型 成员 描述
  ChineseCharNew(Char) ChineseChar类的构造函数。
  ChineseCharacter 获取这个汉字字符。
  CompareStrokeNumber(Char) 将给出的字符和实例字符的笔画数进行比较。
  静态成员 GetCharCount(Int16) 检索具有指定笔画数的字符个数。
  静态成员 GetChars(String) 获取给定拼音的所有同音字。
  静态成员 GetChars(Int16) 检索具有指定笔画数的所有字符串。
  静态成员 GetHomophoneCount(String) 检索具有指定拼音的字符数。
  静态成员 GetStrokeNumber(Char) 检索指定字符的笔画数。
  HasSound(String) 识别字符是否有指定的读音。
  IsHomophone(Char) 识别给出的字符是否是实例字符的同音字。
  静态成员 IsHomophone(Char, Char) 识别给出的两个字符是否是同音字。
  IsPolyphone 获取这个字符是否是多音字。
  静态成员 IsValidChar(Char) 识别给出的字符串是否是一个有效的汉字字符。
  静态成员 IsValidPinyin(String) 识别给出的拼音是否是一个有效的拼音字符串。
  静态成员 IsValidStrokeNumber(Int16) 识别给出的笔画数是否是一个有效的笔画数。
  PinyinCount 获取这个字符的拼音个数。
  Pinyins 获取这个字符的拼音。
  StrokeNumber 获取这个字符的笔画数。

 
其他信息请参与随机安装的chm帮助文件。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/net_lover/archive/2009/04/20/4095606.aspx

 

posted @ 2010-01-05 09:29 DarkNight 阅读(87) 评论(0) 编辑

2009年9月27日

今天搞CMS的时候又遇到一个问题:由于新闻列表页面用的是GridView,觉得自带的分页不怎么样,就加入了DropDownList,感觉会人性化一些,但是,也出了问题!
艰难的为DropDownList动态绑定了值,但是,Change事件却不能翻页,而且不能保存状态,于是,百度,Google搜罗了一箩筐,问题还没解决,看来我真的很笨,这个问题都这么拗口.

先贴出部分源码,以后解决了再贴上解决方法.
页面部分:
Code


CS:
Code
DropDownList事件:
Code

1 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
2         {
3             this.GridView1.PageIndex = e.NewPageIndex;
4             BindNewsWithClassID();
5         }

posted @ 2009-09-27 21:43 DarkNight 阅读(456) 评论(0) 编辑

2009年9月23日

最近总算开始做东西了
    刚开工,就遇到了FCK的老问题  可是,还没解决,先做个记号.
错误描述:点击FCK的插入图片---浏览服务器,弹出窗口之后报错


相关配置:
<add key="FCKeditor:BasePath" value="~/HKCMSFCK_Editor/"/>
<add key="FCKeditor:UserFilesPath" value="/Upload/" />

补充说明:HKCMSFCK_Editor和Upload目录都是位于网站根目录下,Upload目录给了Everyone所有权限
Connector.aspx 文件也改过
Code

OK,问题解决了,是FCK DLL的问题,重新编译就好了,看来,即使是官方库也有问题

posted @ 2009-09-23 17:54 DarkNight 阅读(206) 评论(0) 编辑

如题 决定也学各位大大一样记录下自己的点点滴滴

posted @ 2009-09-23 17:23 DarkNight 阅读(8) 评论(0) 编辑