技术小结

1.

default(T) 在泛型编成中如果不限制T类型参数是值类型或引用类型的话 你程序内部可能会出现错误,
因为值类型不允许NULL.所以default用来获取一个类型的默认值,对于值类型得到new T()  基本得到的都是0;
对于引用类型会得到Null
或者你不使用Default关键词,自己通过反射得到T是指类型还是引用类型 然后设置默认值

例子:/// <summary>
        /// 逆序列化对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="json">Json字符串</param>
        /// <param name="log">如有log传入log对象,没有为null</param>
        /// <returns></returns>
        public static T DeserializeObject<T>(string json,ILog log)
        {
            try
            {
                T obj = JsonConvert.DeserializeObject<T>(json);
                return obj;
            }
            catch (Exception ex)
            {
                if (null != log)
                {
                    log.Error("DeserializeObject ["+typeof(T).FullName +"] Error",ex );
                }                
            }
            return default(T);
        }

2.

fetch next from @Cur into newtable
循环从表@cur中取出,并插入新表中

3.

存储过程 SET NOCOUNT ON:

当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。

如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。

4.

强制类型转换
cast(column_name as varchar2(20))之类的

5.

1.传入的参数,只有验证通过了并且要参数化,不可用sql拼接的参数,才允许进入数据库,目的防止sql注入,减少与数据库的接触,节省资源
 2.从库中查出的数据,只是看有没有数据的,不要转化成dt,要用ExecuteScalar,只读取第一行第一列
 3.在数据库中是什么类型,在定义实体时也要用什么类型,很简单的道理,在与数据库打交道时,很容易被sql注入
 
  注意:uid 数据类型为int
  eg:
            int re = -1;
            //string sql = string.Format("select id from T_Users where id={0} and ISNULL(passport,‘‘)= ISNULL(‘{1}‘,‘‘) ", uid, passport);
            //DataTable dt = Shove.Database.MSSQL.Select(sql, new Shove.Database.MSSQL.Parameter[0]);
            
            //if (dt != null && dt.Rows.Count > 0) re = Convert.ToInt32(dt.Rows[0]["id"]);
            //return re;
             
             
            if (string.IsNullOrEmpty(passport))
                return re;
            string sql = @"SELECT id FROM t_users WHERE id [email protected] AND [email protected]";
            MSSQL.Parameter[] par=new MSSQL.Parameter[]{
                new MSSQL.Parameter("id",SqlDbType.BigInt,0,ParameterDirection.Input,uid),
                new MSSQL.Parameter("passport",SqlDbType.NChar,38,ParameterDirection.Input,passport)
            };
            object ret= Shove.Database.MSSQL.ExecuteScalar(sql, par);
            if (ret != null)
                return Convert.ToInt32(uid);
            else
                return re;
 
6.
   要把加log,成为一种习惯,要颠覆之前的只有调试才能找到错误点,学会从log中读取信息找出造成错误的点

技术小结

时间: 2024-10-15 23:02:50

技术小结的相关文章

SVG图片技术小结

今天在公司没事,研究了一下最近流行的SVG技术,发现,随着css3的不断流行,和浏览器技术的发展,SVG将会取代网站大量图片,成为网站图片展现的主流. AI是我们常用的矢量图编辑器,现在AI可以直接另存SVG图片,SVG图片相比传统图片,占位更小,浏览更方便!而且可扩展性更强! 下面看一个SVG的例子: <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//

前端html、Javascript、CSS技术小结

简单地总结了一下前端用过的html.javascript.css技术,算是清点一下,做个大略的小结,为进一步的学习给个纲领. 一.HTML 由于HTML5的兴起,简单地判断一个网页是否是html5网页,只需要找找内部是否有html5的标志性标签就行了.然而平时虽然写了不少html,却没怎么关注它的发展史: GML(Generalized Marcup Language)通用标记语言 和SGML(Standard Generalized Markup Language)标准通用标记语言. 由Tim

ATM技术小结

ATM技术小结 ATM是一种高速.低延迟的多路复用和交换技术,它可支持任何类型的用户业务,比如语音.数据和视频.ATM采用小的.固定长度的单元(称作信元),每个信元由包含于信元头部的虚电路标识符来识别,ATM网络使用这些标识符经由高速交换机对业务进行中继处理.ATM提供有限的差错检测操作,它不提供重发服务,只在小的信元头部进行很少的操作,这样做的目的是使网络具有足够快的速度以支持多兆位传输速率.在ATM层之上还有一层,称作ATM适配层,这一层对各种业务类型进行大量的会聚.分段和重装操作. ATM

爆栈之前端工程化技术小结备案

ps,前些天一90后同事说,要我多写些blog,因为你的实力要show给别人知道,就要怎样怎样的.. 同时建议写个工程化架构来简化工作等等.有时觉得有点对,又觉得有点可笑,有觉得有点无奈... 由于本人是重后端技术,所以对前端技术了解并不深入. 由于很多都是原始pc的web,而且大多都是轻前端项目.所以这里先说下以前用到过的前端js技术大多是: jquery,extjs,easyui,ko,bootstrap,dorado等等,当然还有各种各样的,如日历,上传,富编辑器,报表等等js插件. 但现

GCD技术小结

什么是 GCD GCD 是 libdispatch 的市场名称,而 libdispatch 作为 Apple 的一个库,为并发代码在多核硬件(跑 iOS 或 OS X )上执行提供有力支持.它具有以下优点: 1.GCD 能通过推迟昂贵计算任务并在后台运行它们来改善你的应用的响应性能. 2.GCD 提供一个易于使用的并发模型而不仅仅只是锁和线程,以帮助我们避开并发陷阱. 3.GCD 具有在常见模式(例如单例)上用更高性能的原语去优化你的代码的潜在能力. GCD 术语 Serial vs. Conc

Web开发中前台与后台技术小结--关于EL表达式,JSTL,eval()函数

在我们日常Web开发中,常常用到EL表达式,JSTL标签,还有可能用到JavaScript中的eval().下面就这样技术和函数小小说明一下. EL(Expression Language),全称表达式语言,既然是开发语言,那么就像Java等语言一样是用来写语句的,通常是用在JSP页面中,我们为了获取JSP提供的内置对象的属性值, 我们通常会使用到EL表达式,比如开发中常见的一个需求就是获取项目的根目录,如果项目的名值变化了,我们在指定路径时,如果把项目的根目录用一个变量来表示的话,那么就不 需

NLP︱中文分词技术小结、几大分词引擎的介绍与比较

笔者想说:觉得英文与中文分词有很大的区别,毕竟中文的表达方式跟英语有很大区别,而且语言组合形式丰富,如果把国外的内容强行搬过来用,不一样是最好的.所以这边看到有几家大牛都在中文分词以及NLP上越走越远.哈工大以及北大的张华平教授(NLPIR)的研究成果非常棒! 但是商业应用的过程中存在的以下的问题: 1.是否先利用开源的分词平台进行分词后,再自己写一些算法进行未登录词.歧义词的识别? 2.或者直接调用下文介绍的分词引擎来进行分词呢?缴费使用固然很棒,但是是否值得? ---------------

传统数据挖掘技术小结

数据分析或者挖掘到底在做什么?认为分析是为了定性地.概括地从庞大的数据中找到规律,找到数据挖掘的方向.就像解数学题之前要对题目进行定性,简单的推演以找到解决数学问题的思路. 数据挖掘是从庞大的信息源中获得知识[1]的过程.数据挖掘是为了得到目标结果而使用的方法,手段.有一些比较成熟的数据挖掘算法.如,决策树算法[2],神经网络算法[2],支持向量机[3],线性回归等.其中决策树算法时间复杂度最低,应该是最常用的挖掘算法. 知识的挖掘离不开信息源.未经处理的信息往往带有很大的噪声.因此必须要对原始

形式化规格技术和验证技术小结

形式化规格技术: 1.定义: 对系统或者对象及其期望的特性或者行为进行的描述.规格所要描述的内容包括:功能特性(做什么).行为特性(具体行为演化-如何做).结构特性(系统的组成,子系统间的联系和复合).时间特性(时间相关的系统特性).形式化规格就是通过具有明确数学定义的文法和语义的语言实现以上描述. 2.分类:操作类.描述类.双重类. 2.1 操作类技术基于状态和迁移,因其本质上可执行,有直观和可视的特点: 2.2 描述类技术基于数学公理和概念,通过逻辑和代数给出系统的状态空间,具有高度抽象.便