C# .NET

1.ajax访问时使用loading界面进行等待。使用beforesend加layerui的函数实现。

if(confirm("确定?")){
$.ajax({
type:'post',
url:'/xxxxModule/控制器/方法名',
data:{ProjectId:KeyValue},
beforeSend: function(jqXHR, settings) {
this.layerIndex = layer.load(1);
},
complete: function () {
layer.close(this.layerIndex);
},
success:function(data)
{
alert(data.msg);

}
})

}else{

}

2.string 的函数

compare 

substring

trim

format

split

insert

remove

copy

replace

 3. 分布式集群生成全局唯一ID:

UUID、数据库自增id、snowFlake

uuid的缺点是在于无序,入库性能差

自增过于依赖数据库,数据库宕机后服务不可用,性能有一定影响。

snowFlake使用64位,第一位为0,,4bit时间戳,10bit工作机器id,12bit序列号。

优点:

1.生成ID时不依赖于DB,完全在内存生成,高性能高可用。

2.ID呈趋势递增,后续插入索引树的时候性能较好。

缺点:

依赖于机器的时间,若被回拨会有重复的风险。

 4. 内存管理:

托管内存和非托管内存:

C#的程序运行起来,会内存申请一块专用的内存区,而这块内存区,就叫做托管内存。所声明的变量,不论是常量,还是变量都在该内存中,int .. new  ..

托管内存需要有工具来管理何时回收等,那个工具就是GC---控制系统垃圾回收器。

其他很多语言并没有这么智能没有有专门的内存管理机制,如c++ ,他们的变量和常量都是存储在非托管内存区的。

安全代码与不安全代码:

安全代码声明的变量和常量都在托管内存中。内存全部托管给了内存管理器,故而不存在安全泄露。

非安全代码的变量所使用的内存都在非托管内存区。unsafe

指针:c#中不推荐使用指针,但可兼容使用ToPointer()。指针一般是非安全代码,不存放于托管内存中。

 5.varchar/nvarchar   char/nchar

 var开头的可变长的实际存储空间。节省字段存储空间

n是所有字符都占两个字节。为了解决字符集这种不兼容的问题,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。

 6.穿插SPI

IAAS (基础设施即服务)相当于在朋友家吃饺子,只提供锅碗瓢盆的基础设施,云厂商对客户提供IaaS服务。

PAAS(平台即服务)在对象家吃饺子,已完成了包的过程只需要挑选合适的口味,云厂商对客户提供PaaS服务。云服务这块就有经营者和消费者的利益关系

SAAS(软件即服务)在店里吃饺子,只要付费即可使用,无需知道底层。

7.文件配置:

web上传文件默认为4M,可在配置文件中进行设置将最大文件size变大。最大为1024M,超时时间为90s 类和结构: 类是引用类型,结构是值类型 枚举类型: enum xxx { east=1, west=0, south=2, north=3 } 2.构造函数:当含有两个默认参数的对象创建的时候应该先调用了一个参数的构造函数对对象进行初始化,然后有调用了含有两个参数的构造函数对对象进行初始化 public Person(int nAge, string strName) : this(1) { Console.WriteLine("我是叫{0}的超人,年龄{1}", strName, nAge); } 虚方法就是在父类中写了虚方法,则在子类中就可以重写该方法。

 8.json转datatable

首先要讲json转list,list转datatable

            DataTable dataTable = new DataTable();  //实例化
            DataTable result;

                JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
                ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(strJson);
                if (arrayList.Count > 0)
                {
                    foreach (Dictionary<string, object> dictionary in arrayList)
                    {
                        if (dictionary.Keys.Count == 0)
                        {
                            result = dataTable;
                            return result;
                        }
                        if (dataTable.Columns.Count == 0)
                        {
                            foreach (string current in dictionary.Keys)
                            {
                                dataTable.Columns.Add(current, dictionary[current].GetType());
                            }
                        }
                        DataRow dataRow = dataTable.NewRow();
                        foreach (string current in dictionary.Keys)
                        {
                            dataRow[current] = dictionary[current];
                        }

                        dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
                    }
                }

            result = dataTable;
            return result

json转实体

JsonConvert.DeserializeObject<T>(Json)

json转list

JsonConvert.DeserializeObject<List<T>>(Json)

对象转json

JsonConvert.SerializeObject(obj)

 9.

posted @ 2019-05-28 15:52  lovebear  阅读(252)  评论(0编辑  收藏  举报