1、??运算符

string str = null;
str = str ?? "123";
Console.WriteLine(str ?? "234");

variable ?? defaultValue
相当于
variable == null ? defaultValue : variable

2、 使用href="javascript:void(0)" 代替href="#",避免url产生没定义的锚点定位。

3、使用System.Runtime.Serialization.Json.DataContractJsonSerializer代替System.Web.Script.Serialization.JavaScriptSerializer
执行JSON的序列化和反序列化

    public static class JSONExtension
    {
        public static string ToJSON(this object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, obj);
                return Encoding.UTF8.GetString(ms.ToArray());
            }
        }

        public static T ParseJSON<T>(this string str)
        {
            T obj = Activator.CreateInstance<T>();
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
                return (T)serializer.ReadObject(ms);
            }
        }
    }

注意:引用如下组件System.Runtime.Serialization,System.ServiceModel,System.ServiceModel.Web

4、解决一例数据库服务器CPU占用资源100%的问题。
    最近根据用户技能搜索好友的功能根据新的需求作了调整,要求搜索的结果增加like用户名的结果集。例如:本来是以asp.net这种技能搜索出拥有这种技能的用户列表以供用户寻找好友,现在还要增加一个结果集是以asp.net开头的用户列表如:asp.net01,asp.net02。这两个结果集的排序以论坛专家分的多少为排序的依据。
现在的情况是UserPost表具有15000000的数据量,并且对该表有一个全文检索。根据技能搜索用户列表是通过全文检索进行(contains)得到,而根据用户相拟是通过对表的搜索([UserName] like @key+'%')得到,并且还以order by communityscore desc进行排序。
    当这个新功能上线后数据库的CPU总是高居不下,后来通过在数据库端跟踪SQL和存储过程的调用情况就大致找到出问题的语句。分析了原来的语句的写法是把contains和like都写在一个where里了,查看一下执行计划,对于全文检索的搜索的调用耗资非常之大。同时从需求上分析,这个搜索的意图主要还是以技能搜用户为主,以用户名相拟性搜索的用户列表为辅,所以逻辑上可以调整为先从全文检索中获取拥有这此技能的用户列表,再以用户名相拟搜索用户列表,然后进行组合。新的sp如下:

ALTER PROCEDURE [dbo].[ec_UserInfo_FindUsers2] 
    @top int,
    @key nvarchar(20)
AS
BEGIN
    SET NOCOUNT ON;

    WITH temp(username, communityscore) AS
    (
       select top(@top) username,communityscore 
       from dbo.userinfo with (nolock) 
       where contains(speciality, @key) 
       order by communityscore desc
    ),
    temp2(username, communityscore, theCount) AS
    (
       select username, communityscore, row_number() over(order by communityscore  desc) as row from temp
    )
    ,temp3(username, communityscore) AS
    (
       select username, communityscore from temp2 UNION ALL 
       select top( select COALESCE((select top 1 @top - theCount from temp2 order by theCount desc),@top)) username, communityscore 
           from dbo.userinfo with (nolock) where [UserName] like @key+'%' order by communityscore desc
    )
    select username from temp3 order by communityscore desc

END

经过这样的处理后就能把cpu降到正常水平了。
这里用到了几个SQL2005的新功能。
a、CTE
b、Ranking函数集。row_number() over (order by xxx desc)
c、top(select ....)函数

转载于:https://www.cnblogs.com/chenjunbiao/archive/2008/05/09/1760215.html

2008年5月小记(??, #, DataContractJsonSerializer, CTE Ranking top)相关推荐

  1. 2008年5月网络管理员考试上午试卷参考答案

    2008年5月网络管理员考试上午试卷参考答案 转载于:https://blog.51cto.com/296525818/78867

  2. 2008年12月13日上海USB驱动开发深度解析讲座PPT

    讲座PPT:宋宝华2008年12月13日上海USB驱动开发深度解析讲座PPT [url]http://www.linuxdriver.cn/200812/20081213172619_836.rar[ ...

  3. 高效的CSS(2008年7月4日更新)

    本文将介绍 Mozilla UI 在用的一些 CSS 优化规则.第一部分是关于 Mozilla 样式系统如何分类选择器的一般讨论,在理解了这些的基础上,第二部分则罗列了 Mozilla 样式系统书写 ...

  4. C#与Javascript变量、函数之间的相互调用2008年11月28日 星期五 05:28 P.M.1.如何在JavaScript访问C#函数?

    C#与Javascript变量.函数之间的相互调用 2008年11月28日 星期五 05:28 P.M. 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3 ...

  5. delphi项目开发经验2008年09月18日 星期四 10:07随着项目的失败,这些天一直在总结失败的原因,到底是为什么?

    delphi项目开发经验 2008年09月18日 星期四 10:07 随着项目的失败,这些天一直在总结失败的原因,到底是为什么? 一.技术层面          1.少用指针类型,多用类.       ...

  6. 浅析ASP.NET的Page.IsPostBack 属性http://www.sina.com.cn 2008年05月06日 11:33 IT168.com

    浅析ASP.NET的Page.IsPostBack 属性 http://www.sina.com.cn 2008年05月06日 11:33  IT168.com [IT168技术文档] 现在从对ASP ...

  7. 2008年5月系统分析师考试上午试卷参考答案与考点解析2

    2008年5月系统分析师考试上午试卷参考答案与考点解析2 转载于:https://blog.51cto.com/296525818/79183

  8. 2008年1月19日 微软(北京).NET俱乐部 线下休闲活动-滑雪

    2008年1月19日新年的第一次线下休闲活动,俱乐部选择了去平谷的渔阳滑雪场.(有些朋友问为什么没有发布该活动,实际上我们在几个qq群里发布了该活动的信息)以下是活动的照片. 大家在仔细的听教练讲解技 ...

  9. 微软2008系列 (Orcas + Longhorn Server+SQL2008)将于2008年2月27日发布

    据John ( Windows Server Blog,  com.com's news blog),Windows Server 2008, Visual Studio 2008 和 Microso ...

最新文章

  1. java+script+当前日期_javascript获取当前时间
  2. 用wubi在一个独立分区硬件装ubuntu12.04产生的无法识别U盘的解决办法
  3. 安装,使用node和npm,切换镜像源cnpm
  4. linux系统下/proc深度解析
  5. 库克考虑卸任苹果CEO,谁会是下一任接班人?
  6. python基础知识培训价格_Python基础知识的学习
  7. [原]批量删除VSS产生的scc文件
  8. KVM: Guest CPU doesn’t match specification: missing features: hle,rtm 无法启动虚拟机,解决方法
  9. Docker部署ssm项目
  10. 觉得小鹤双拼鹤形超级难的看一下-by老随风-2015-05-22
  11. aspen压缩因子_Aspen物性参数中英文对照
  12. iReal Pro for Mac(优秀的音乐练习参考工具)
  13. MACOS Terminal终端:更改zsh模式到bash模式(切换shell)
  14. centos7.4和ubuntu16.0.4常用命令
  15. 「趣小面」寻融资:前景美好,“钱”景难说
  16. [设计分析]3-1 v0.1 教学辅助——点名册外观详细设计
  17. 【重磅】网信办发布《互联网信息服务算法推荐管理规定》
  18. 软件工程课程团队项目——团队日志
  19. DicomVCL for D6-D2010-Crack
  20. Sipp工具实现呼叫中心的性能测试

热门文章

  1. 诺基亚7plus更新android10,诺基亚发布第五次Android 10更新 诺基亚7+可升级
  2. 信息系统项目管理师学习方法
  3. Flutter学习记录(一、Flutter环境搭建)
  4. 项目整体管理:指导和管理项目工作
  5. JS中怎样获取当前年以及前后几年并构造成对象数组
  6. Java中Socket通信-客户端与服务端相互传输对象数据
  7. VisualStudio2017中新建项目没有Asp.Net项目
  8. BJUI使用ajax异步表单提交时后台action要加@ResponseBody
  9. 知识图谱(八)——知识存储和检索
  10. 口的内存映射 stm32f7_STM32F7高速缓存