![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 90
chentaihan
做一个牛B的程序员
展开
-
C#方法
C#方法1:实例构造器和类2:实例构造器和结构3:类型构造器4:操作符重载方法5:转换操作符方法6:扩展方法7:部分方法 1:实例构造器和类构造器是允许将类型的实例初始化为良好状态的一种特殊方法,创建一个引用类型的实例时,先为实例的数据字段分配内存,然后初始化对象的附加字段(类型对象指针和同步索引),最后调用构造函数来设置对象的初始状态。构造函数不能被继承,原创 2011-12-11 12:00:34 · 1108 阅读 · 1 评论 -
在开发中你可能没有考虑到的两个性能优化
1:多余的存储引用导致性能降低;2:利用局部性提高程序性能;先来说说引用是怎么降低程序性能,个人认为降低程序性能主要有两个原因,一是数据结构选择不合理,二是多层嵌套循环导致部分代码被多余重复执行。在第二种情况下我们一般都是优化循环最里层的代码,能提出来的尽量往外层提,实在不行的就优化它的运行速度。1:多余的存储引用导致性能降低。先来看一个关于引用导致性能降低的问题。下面两个方法哪个更快原创 2013-01-13 17:16:13 · 865 阅读 · 0 评论 -
毕业两年工作三年小结
不知不觉毕业两年工作三年了,回忆记录一下。大学。话还得从大学开始说起,高考两次顺利考上了武汉的一个著名专科学校,以极度郁闷的心情开始了我的大学生涯。大一上半年基本上是浑浑噩噩的过来的,印象最深刻的是和几个死党打牌,没有任何精神寄托,下半年开始学习C语言,听说是个很牛B的编程语言,就很想学习,差不多用了1个月的时间把高数课本看完了,以后上高数课我就拿出一本从同学那里借来的C语言看啊看,期末考试高原创 2012-06-17 20:15:18 · 11433 阅读 · 62 评论 -
C#基础知识
1:JIT(即时编译)。一个方法在第一次调用时JIT会把改方法的IL代码转换成CPU指令,再次调用该方法时就只需执行对应的指令。方法第一次被调用的过程大致是:1获得方法的IL代码;2:分配内存;3:将IL代码转换成CPU指令存在2分配的内存中;4:将方法表中对应该方法的指针指向2分配的内存;5:跳转到2分配的内存执行其中的指令,即该方法的CPU指令。 2:as的性能高于is。Is的作用是判原创 2012-05-18 12:41:45 · 794 阅读 · 1 评论 -
C#成员初始化有点坑爹
C#成员的初始化顺序你真的非常清楚吗,我发现有点坑爹,坑到爹突然有点搞不清楚什么状况。下面咱们开始分析,先看3个简单类。 public abstract class Base { public Base() { SetValue(); } public abstract void Se原创 2012-04-19 13:28:39 · 674 阅读 · 0 评论 -
C#内存管理与垃圾回收
垃圾回收还得从根说起,就像生儿育女一样。根:根是一个位置,存放一个指针,该指针指向托管堆中的一个对象,或是一个空指针不指向任何对象,即为null。根存在线程栈或托管堆中,大部分的跟都在线程栈上,因为定义的变量就存在线程栈上,类型对象指针存在托管堆中,因为实例化一个对象要额外分配两个字段“类型对象指针”和“同步块索引”。 类型对象指针的作用。实例化一个对象并没有为其方法分配内存,类型的静原创 2012-04-12 13:02:30 · 1283 阅读 · 0 评论 -
基于二叉查找树的集合
我们都知道Dictionary查找元素非常快,其实现原理是:将你TKey的值散列到数组的指定位置,将TValue的值存入对应的位置, 由于取和存用的是同一个算法,所以就很容易定位到TValue的位置,花费的时间基本上就是实现散列算法的时间,跟其中元素的个数没有关系, 故取值的时间复杂度为O(1)。 集合无非都是基于最基础语法的数组[],先欲分配,然后向其中添加元素,容量不够就创原创 2012-03-15 10:29:53 · 706 阅读 · 0 评论 -
撒列实现关键字过虑二(附源码)
由于第一个版本想复杂了,思路不是很清新,导致有些问题没有攻克,过年那些天也想了很多,还是没有解决,一直想放弃那个解决方案,可就是舍不得放弃,我做了那么多,我想了那么久,我不想重头再来,但到最后还是没有找到既高效又没有明显BUG的解决方案,最终选择放弃第一版中的解决方案,今天本想用基于撒列的搜索树的方式实现的,可写了一部分代码后发现还是有些问题,当然并不代表用基于撒列的搜索树实现有问题,只是对于我来原创 2012-01-31 16:28:34 · 697 阅读 · 0 评论 -
撒列实现关键字过滤,速度可快了
一直对搜索、过滤很好奇,觉得他们很有技术含量,只有非常NB的人才能做。很想知道他们的原理,实现这样的功能,设计是不是必须得非常NB非常奇特,代码是不是要写得非常好,性能非常高。总之这一切都不是我这样级别的人能做的。直到我看了《编程珠玑(第二版)》中的这么一段文字:“假定我们可以在执行搜索之前对文本内容进行预处理,那么我们可以建立一个撒列表(或者搜索树),为文档中的每个不同的单词建立索引,并为每原创 2012-01-20 23:01:58 · 1025 阅读 · 1 评论 -
并发小工具
其实就是多线程构造多个请求,请求同一个地址,在网站测试的时候还是能用上的,有的时候方法在同一时间只能被一个线程访问,用这个工具就可以测试的方法是不是真的是在同一时间只能被一个线程访问,在处理订单的时候用处就大了,如银行订单,支付宝订单,骏卡订单等,我们都知道一个订单只能被处理一次,也就是说在同一时间只能有一个线程处理这个订单,等这个线程处理完之后,才能让其他线程访问,等这个线程处理完之后,其他线程原创 2012-01-18 12:12:54 · 2388 阅读 · 2 评论 -
C#运行时的相互关系
C#运行时的相互关系本博客主要讲述运行时类型、对象、线程栈和托管堆之间的相互关系,静态方法、实例方法和虚方法的区别,以及内存的分配和回收。线程栈:在一个进程中可能包含多个线程,一个线程在创建的时候,会分配到一个大小1MB大小的栈,栈用于存储方法的实参、形参以及方法内部的局部变量,栈是从高位内存地址向地位地址构建的,由于栈有先进后出的特点,所以先定义的变量后被回收。下面来看一个简单的例子原创 2011-12-27 09:10:24 · 1060 阅读 · 0 评论 -
垃圾回收--代
垃圾回收--代代是CLR垃圾回收器采用的一种机制,他唯一的目的就是提升应用程序的性能,采用代的垃圾回收器做到了一下几点:1:对象越新,生存周期越短,跟栈的原理很像,先进后出,先定义的局部变量,在栈中停留的时间相对长一点。2:对象越老,生存周期越长,后面解释。3:回收堆的一部分,速度快于回收整个堆,那是肯定的,就是为了实现只回收一部分内存中的数据,才产生了代的概念,大多数时间只回收第原创 2011-12-20 12:53:57 · 1278 阅读 · 0 评论 -
一键构造你的博客目录
最近看了一下吴军的数学之美。书很好,废话我就不多少了。看了第9章图论和网络爬虫,一直都觉得网络爬虫很牛B,搜索引擎不就是用爬虫爬网页的吗,于是想写一个简单的爬虫来爬网页试试,最先想到的就是给自己的博客建一个目录,够小够简单了吧,于是就有了这篇文章,简单的分享一下,先申明我的实现很简单没有技术含量,在看下文之前可以先看看我的博客目录。 源码必共享简单介绍一下网原创 2013-02-20 15:50:00 · 685 阅读 · 0 评论