(转)关于UI开发总结一些技术和一些论坛牛人讨论

1,MFC

基于VC6.0的微软基础库

2,WPF

做绚丽界面一律用WPF,做一般绚丽界面用WinForm,做windows标准界面用MFC

WPF也有个致命缺点,就是要.net framework支持

3,DirectUI

Windowsless或者Handleless,也就是无句柄窗口

4,迅雷界面引擎

http://xldoc.xl7.xunlei.com/

继续阅读(转)关于UI开发总结一些技术和一些论坛牛人讨论

Docker与KVM的区别

最近Docker和火,什么是Docker 估计很多人一下看了不明所以。

在说Docker之前,我们要先讲一下虚拟机技术,目前流行的虚拟机技术有KVM、Vbox、VMware、Xen 等等,我们称为传统虚拟技术。

传统虚拟技术的实现是,使用虚拟技术虚拟出一个独立的虚拟硬件环境,可以在这个环境中安装操作系统。
Docker和传统虚拟技术的区别就是,Docker不需要每个虚拟环境中去安装操作系统,直接针对具体的应用程序提供一个虚拟的隔离空间容器。
相关资料:

KVM:http://baike.baidu.com/link?url=z7p7PrmE2bYg65NpB0o6zwIDXAH9y9imqHUCvZCI_b6Vnh6zs9451IxmRYsDoLNwwGwB5tJUAmImxVvI-ozW4K

KVM、Vbox、Xen比较:http://blog.csdn.net/jollyjumper/article/details/12313953

Docker是什么:http://www.lupaworld.com/article-243555-1.html

3分钟,9个Q&A让你快速知道Docker到底是什么:http://www.csdn.net/article/2014-10-28/2822323
他们的区别是,如下图:

三步让ASP.NET MVC 自动压缩js和css

MVC4 之后提供了对样式表和脚本捆绑(Bundles)功能,在App_Start文件夹内

一,在BundleConfig.cs中配置所有需要自动压缩的js,css 

using System.Web;
using System.Web.Optimization;

namespace Web
{
    public class BundleConfig
    {
        // 有关 Bundling 的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                        "~/Scripts/jquery-ui-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.unobtrusive*",
                        "~/Scripts/jquery.validate*"));

            // 使用要用于开发和学习的 Modernizr 的开发版本。然后,当你做好
            // 生产准备时,请使用 http://modernizr.com 上的生成工具来仅选择所需的测试。
            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));

            bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                        "~/Content/themes/base/jquery.ui.core.css",
                        "~/Content/themes/base/jquery.ui.resizable.css",
                        "~/Content/themes/base/jquery.ui.selectable.css",
                        "~/Content/themes/base/jquery.ui.accordion.css",
                        "~/Content/themes/base/jquery.ui.autocomplete.css",
                        "~/Content/themes/base/jquery.ui.button.css",
                        "~/Content/themes/base/jquery.ui.dialog.css",
                        "~/Content/themes/base/jquery.ui.slider.css",
                        "~/Content/themes/base/jquery.ui.tabs.css",
                        "~/Content/themes/base/jquery.ui.datepicker.css",
                        "~/Content/themes/base/jquery.ui.progressbar.css",
                        "~/Content/themes/base/jquery.ui.theme.css"));

        }
    }
}

二,cshtml中的引用变成这样

 @Styles.Render("~/Content/themes/base/css", "~/Content/css") //css的引用
 @Scripts.Render("~/bundles/modernizr") //js的引用

三,在Global.asax.cs中加入: BundleTable.EnableOptimizations = true;启动压缩。

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace Web
{
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleTable.EnableOptimizations = true;
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

sql server日期时间转字符串

一、sql server日期时间函数
Sql Server中的日期与时间函数 
1.  当前系统日期、时间 
    
select getdate()  

2dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值
   例如:向日期加上2天 
   
select dateadd(day,2,2004-10-15)  返回:2004-10-17 00:00:00.000 

3datediff 返回跨两个指定日期的日期和时间边界数。
   
select datediff(day,2004-09-01,2004-09-18)   返回:17

4datepart 返回代表指定日期的指定日期部分的整数。
  
select DATEPART(month2004-10-15)  返回 10

5datename 返回代表指定日期的指定日期部分的字符串
   
select datename(weekday, 2004-10-15)  返回:星期五

6day(), month(),year() 可以与datepart对照一下

select 当前日期=convert(varchar(10),getdate(),120
,当前时间
=convert(varchar(8),getdate(),114

select datename(dw,2004-10-15

select 本年第多少周=datename(week,2004-10-15)
      ,今天是周几
=datename(weekday,2004-10-15)

二、日期格式转换

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM 
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06 
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06 
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06 
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06 
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM 
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06 
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16 
Select CONVERT(varchar(100), GETDATE(), 12): 060516 
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM 
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM 
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006 
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16 
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006 
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006 
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006 
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006 
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006 
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49 
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM 
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006 
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16 
Select CONVERT(varchar(100), GETDATE(), 112): 20060516 
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513 
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547 
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700 
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827 
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM

 

函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

参数 interval的设定值如下:

缩 写(Sql Server) Access 和 ASP 说明
Year Yy yyyy 年 1753 ~ 9999
Quarter Qq 季 1 ~ 4
Month Mm 月1 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1-366
Day Dd 日,1-31
Weekday Dw w 一周的日数,一周中的第几日 1-7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh 时0 ~ 23
Minute Mi 分钟0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms 毫秒 0 ~ 999


转自:http://www.cnblogs.com/zhangq723/archive/2011/02/16/1956152.html

枚举与数组的相互转换

//  将枚举名称转换成文字数组
string[] status = Enum.GetNames(typeof(MyEnum.Dict_Status));

// 讲枚举值转换成文字数组
Array array = Enum.GetValues(typeof(MyEnum.Dict_Status));

// 建立一包含枚举值与枚举名称的字典
Dictionary<int, string> status = new Dictionary<int, string>();
foreach (int y in array)  //列出枚举项对应的数字
{
      string name = ((MyEnum.Dict_Status)y).ToString();
      status.Add(y, name);
}

// 访问字典
foreach (var statu in status)
{
     string outstr="value="+statu.Key.ToString()+",Name="+statu.Value;
}

or 让索引失效的情况

首先,or 让索引失效是有条件的,并不是使用or就让索引失效。

or本身无罪。


OR会引起索引失效的说法是这样来的:
如果是这样一个查询
SELECT * FROM TB WHERE A=1 AND B>2 AND C<3 AND D IN (4,5,6)
并且在TB表上有这样一个索引:CREATE INDEX INX_TB_ABCD ON TB (A,B,C,D)
那么这个查询可以用到这个索引
如果同样是这个索引,查询换成
SELECT * FROM TB_ WHERE A=1 OR B>2 OR C<3 OR D IN (4,5,6)
那么这个查询就用不到上面那个索引,因为结果集是几个条件的并集,最多只能在查找A=1的数据时用索引,其它几个条件都需要表扫描,那优化器就会选择直接走一遍表扫描,所以索引就失效了。

那么像第二个查询这样的应该怎么建索引呢,答案就是四个列上各建一个索引,或者只在选择性最高的列上建索引,比如A=1的数据量很少,就在A上建,如果D是4,5,6的数据很少,就在D上建,这样优化器就会选择先走索引查找,再对找出的结果集进行筛选,扫描数就会大幅减少。

回过头来看你上面那个查询,两个条件都在TID上,所以只有TID上有一个索引就OK了,不存在索引失效的问题。

看书不要全信,多想想书上为什么这么说,自己多试试。


以下是引用:http://www.cnblogs.com/hongfei/archive/2012/10/20/2732589.html

索引并不是时时都会生效的,比如以下几种情况,将导致索引失效

  1. 如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)

注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引

2.对于多列索引,不是使用的第一部分,则不会使用索引

3.like查询是以%开头

4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引

5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引

此外,查看索引的使用情况

show status like ‘Handler_read%’;
大家可以注意:
handler_read_key:这个值越高越好,越高表示使用索引查询到的次数
handler_read_rnd_next:这个值越高,说明查询低效

读取属性(Property)中的特性(Attribute)

    //TestParamAttribute 是数据约束特性
    //DBType、DBLenght 是具体的约束
    [AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
    public class TestParamAttribute : Attribute
    {
        private string dBType;

        public string DBType
        {
            get { return dBType; }
            set { dBType = value; }
        }
        private int dBLenght;

        public int DBLenght
        {
            get { return dBLenght; }
            set { dBLenght = value; }
        }
    }

    //为类中的属性定义约束特性
    class Tester
    {
        private int iD;
      
        [TestParam(DBType=”varchar”,DBLenght=4)]
        public int ID
        {
            get { return iD; }
            set { iD = value; }
        }
        private string testName;
       
        [TestParam(DBType=”varchar”,DBLenght=50)]
        public string TestName
        {
            get { return testName; }
            set { testName = value; }
        }
    }

     Tester test = new Tester();
      test.ID = 1;
      test.TestName = “未完待续”;

       //读取对象的 属性、属性的特性、特性的具体约束

       Type t = test.GetType();

        PropertyInfo[] ps = t.GetProperties(); //类的属性列表,对应sql语句的参数(没有指明具体的对象)

        foreach (PropertyInfo p in ps)  //遍历属性列表,可以得到每一个属性
        {
             // label1.Text += “@” + p.Name + “=” + p.GetValue(test, null).ToString() + “,”;//获取指明的对象‘test’的各个属性和值
             //p.GetCustomAttributes(false) 获得每个属性的特性(Attribute)列表
             //遍历特性列表,可以得到每个特性对象
             foreach (object o in p.GetCustomAttributes(false))
             {
                  if (o.GetType().Equals(typeof(TestParamAttribute))) //校验特性是否符合预设特性类型
                  {
                        TestParamAttribute tpa = (TestParamAttribute)o; //将对象强制转化为特性类型
                         //获取指明的对象‘test’的各个属性的特性中各个具体约束的值
                         label1.Text += “@” + p.Name + “(” + tpa.DBType + “,” + tpa.DBLenght + “)” + “=” + p.GetValue(test,null).ToString() + “,”;//p.GetValue(test, null) 函数指定需要获取的对象
                   }
               }
          }