- 博客(48)
- 资源 (13)
- 问答 (1)
- 收藏
- 关注
原创 DOTNET笔记_GC
1 Windows进程内存管理与GC 进程 在32 位Windows上面,非托管程序的进程都有4G的虚拟地址空间,其中有一半是系统可以访问的,一半是用户可以访问的,由于是虚拟的,只有真正需要用到的时候,才可能会真正提交给该进程。每个进程都是在各自的进程空间中进行资源管理和代码执行,进程本身只是代码执行的环境,它本身并不执行任何代码,它为真正执行代码的线程提供了一个相对独立的资源
2015-10-01 19:05:13 422
原创 DOTNET笔记_StringBuilder_List<T>_Array
1 由于String的不可变特性,导致任何一个修改的结果都是一个新的String实例创建,这必然导致内存的操作,从而影响效率,当然我们也知道,一般遇到不断更新字符串的情况下,我们都会自觉的使用StringBulider,但是值得注意的,StringBuilder本身也会根据当前的Capacity和内容决定是否需要重新申请内存,这样的,仍然会影响其效率;另外一方面,删除子串,或者插入子串,效率依然低
2015-09-22 22:35:09 456
原创 DOTNET笔记_操作符重载
1 操作符重载的一般原则: 重载的方法实现会用到operator关键字 重载的方法必须是public static 如果重载了 ==,那必须重载 != ,同时需要改写 Equals,GetHashCode,C#要求Equals与==的逻辑保持一致,这种同步关系本身是默认的,如果修改了Equals的比较,比如改成按内容比较,那么最好重载 ==,!=操作符,反之亦然
2015-09-20 12:03:56 375
原创 DOTNET笔记_值比较的实现
背景回顾1 在DOTNet的世界中,只有值类型和引用类型两种 值类型有以下几种:系统内置的基本值类型,struct,用户自定义的struct类型,Enum类型 引用类型:class,string,array,delegate,box-result2 值类型由于直接存储了内容,值类型变量的比较直接,简单; 引用类型变量,由于变量本身存储的只是托管堆上的引用,引
2015-09-20 11:46:30 387
原创 DOTNET笔记_Convert_CONST_ReadOnly_Enumerator
1 Type Cast类型转换 前置条件: Double src = 4.5; Int32 target; 转换方式: 1) 强制转换 target = (Int32)src; 这种转换的工作原理是只取小数点左边的整数部分 2) Convert.Int32 target = Con
2015-09-19 23:28:07 372
原创 【每日一发】DELPHI位图文件的裁剪和伸缩操作
在工作中有用到缩略图展示,这个时候就需要对图片进行伸缩处理,也有时候会遇到需要裁剪部分区域,比如正中间的部分,通过在网上查阅资料,发现通过Windows的两个API就可以很方便的搞定。 先贴下代码: procedure FitBitmap(const Source,Dest:string;const x,y:integer;const ColorBit:TPixelForm
2015-04-18 12:31:03 1506
原创 【分享一个SQL函数】在SQL脚本中匹配使用特定分隔符分隔字符串的位置
前段时间在工作中遇到一个问题: abc,12,345,78 这个字符串统一通过逗号隔开,现在需要通过知道 12这个字符串的位置。 这种情况可以通过下面这个方法 /** 说明: 1)返回第一个满足的字串的位置 2)位置从0开始 */IF EXISTS(SELECT * FROM DBO.SYSOBJECTS WHERE
2015-04-18 12:16:29 843
原创 【每日一发】同样4个字节的浮点数和整数为什么表达的范围有很大差异
如果突然问这个问题,不知道是不是每个人都能思路清晰的应答。下面简单的说一说这个区别 32位的整数,最大值是21亿左右,占用4个字节的浮点数,最大值大约是3.4×10^38. 虽然两者占用的空间一致,但是其组织数据的方式是完全不同的。 先说说比较属性的整形吧,为了简单,只说正数,符号位1位,值为0,后面的全部是111, 0111 1111 1111 1
2015-04-18 11:52:39 8076
原创 【每日一发】基于JS的图片瀑布流
前段时间通过网络课程学习了一个基于JS的瀑布流展示,今天想起来想重写起来,发现还是不能正确写出,究其原因还是因为工作中很少用到前端的东西,很多东西感觉都丢了。对照以前写的Demo,看了之后感觉还是小小总结一下。 一 如何展示一张图片比较好看呢? 1) 现实生活中的图片是什么样的? 一张相片纸,中间部分是真实的图片,外面部分是边框。如果从HTML控件上思考,可以分为3层:
2015-04-09 23:48:51 435
原创 JavaScript_个人笔记6_再说函数
在JS中,函数可以分为3中:1)函数声明 FD(FUNCTION DECLARE) 2),函数表达式 FE 3) Function类。 函数声明 FD:这种是最常见的。 function Foo(){} 函数声明在进入上下文时就会创建,所以针FD,在代码结构上往往可以会出现 var fooResult = Foo(); function
2015-04-08 21:30:58 323
原创 JavaScript_个人笔记3_JavaScript的函数
1 函数的arguments arguments是js内置的关键字,类似Array,但并不是Array。 arguments有length属性,可以通过下标来访问。 arguments的个数跟实参的个数保持一致,跟形参没有关系。 arguments的内容可以在函数体内修改 Array.prototype.testStr="Test";
2015-04-05 16:37:21 392
原创 JavaScript_个人笔记3_JavaScript扩展
Javascript使用prototype的机制实现继承,今天就总结一下利用prototype实现类的继承。 prototype的使用方式一般为Class.prototype,prototype可以认为是所有JS类的一个静态属性。 var Class = function(){}Class.printLn = function(str){ documen
2015-04-05 10:36:03 337
原创 JavaScript_个人笔记2_JavaScript的变量
JS是一款原型语言,没有内置的类型,但是js允许通过function关键在来模拟一个类。 对于任何一款有类概念的原来说,构造函数肯定是重要的,毕竟它是类实例化的方法。js相对于其他语言,有一个重要的特点就是,它允许用户切换上下文,并且,在js里面,一切皆对象,因此,一个对象的确切含义是需要结合其所在的上下文来理解的。 说一说js的构造函数中的变量。 //一个类的构造
2015-04-04 10:59:59 340
原创 CXGRID_实现类似邮件阅读状态的图片切换
之前为了实现这个功能,各种搜索结果都不理想,最终找到了一个方案,文字没有说清楚,提供的Demo链接竟然是死链,没有办法自己摸索了一番终于搞定了,但是过了一段时间又忘记了,又回去看自己写的代码,内疚万分,整理于此,以防止以后又忘记了。 需要的控件: CxGrid, TClientDataSet, TDataSource, TcxImageList. 要点:
2015-04-02 23:03:43 796
原创 JavaScript_个人笔记1_JavaScript的面向对象是模仿的
这几天看了一些javascript的资料,有一些想法和疑惑,整理整理放在这里当作一个历史足印。 今天是第一篇,来点最基础的,说一说js的面向对象特性,总的来说,js的面向对象都是模拟的,跟一般的面向对象语言是有差异的,抓住这一点,所有的东西 说到OO,无非就是三大特性:封装/继承/多态。这些特性的存在都是基于类和对象的,那么先说说js的类。 js的类【模拟的类】:
2015-04-02 21:58:37 345
原创 使用JCL查找问题
最近一个项目,偶尔出现一些外部异常,有同事推荐使用JCL挂着,在程序运行的过程中抓一些堆栈的出入情况。 简要的说一些使用的方式: 1 打开MAP file的生成功能。 Project Option->Linker->Map File->Detail 2 在工程中引用DelphiStackTrace,这个单元没有直接被使用,但是关系到堆栈信息的获取
2014-03-15 22:40:58 869
原创 [CSharp In Depth]迭代器
最近好多事请,好多事情都反反复复,这样的结果就是给人很大的挫败感。从今以后,做什么事一定要有头有尾,坚持完成! 除了集合类型可以使用Foreach,其他的内容也可以使用Foreach来遍历,使用Foreach保证了类型统一安全,代码简洁高效。 要想使用Foreach的语法规则进行遍历,只需要实现IEnumber接口,而该接口的实现就是要实现IEnumerator,在
2014-03-08 17:35:48 1656
原创 基于MoreWindows整理的基础排序的个人理解
春节期间拜读了MoreWindows整理的白话经典算法之七大排序,受益匪浅。但正所谓纸上得来终觉浅,这两天一一重新写了一遍,将一些心得体会记录如下: 一、关于排序算法的稳定性:一个稳定的排序算法,就是相同值的左右位置经过排序之后不会更换。一个很好的例子是:一个学生的信息包含学号,年龄,按照年龄来进行由小到大的排序,最终学号的顺序也还是从小到大的。七种算法里面,冒泡,插入,归并排序是稳定
2014-02-08 15:43:28 654
原创 BUG,错误的反思:20131224
最近慌忙火急的完成了一个项目,本以为凭借着之前的一些经验可以很快交付,但是还是折腾了2天的工作时间调试,到现在终于要提交代码了,看看中间跳出来的BUG,分类总结一下: 1 初始化结构体数组,用局部变量修改,没有更新到数组中 对于这种问题,今后应该直接使用数组名称逐个遍历元素,更新即可。引入局部变量的本意是让代码更清晰,但是这样就把之前一步完成的工作分解成三步了:1)
2013-12-24 21:48:42 536
原创 基础代码分析五:委托,引用,变量
委托实例是一个引用,委托的实例之间是独立的,一般情况下并不会影响到彼此,但是,在委托实现中,匿名方法,变量的共用会出现一些意想不到的问题。 public static void TestBoth() { MIT[] delegates = new MIT[3]; int outside = 0; for (
2013-12-22 21:41:36 682
原创 基础代码分析之四:委托与匿名方法
匿名方法顾名思义就是没有省略名称的方法,委托的定义需要使用delegate关键字,匿名方法的关键就是用这个关键字,让编译器可以按照左边的放类型进行正确的代码补全进行编译,生成IL.匿名了,参数列表,实现均不受影响。using System;using System.Collections.Generic;using System.Linq;using System.Text;using
2013-12-21 14:04:50 532
原创 代码分析三:委托,协变性
今天看到委托方法的协变性存在,会出现一个,子类重载了子类的方法,在C#2中会导致委托方法会主动找派生类的方法,但是我用VS2010试验了一下结果有点奇怪,委托方法找的还是基类的方法,难道是C#的版本不同导致的,新版本的C#已经修改了该方法?using System;using System.Collections.Generic;using System.Linq;using Syste
2013-12-21 11:42:21 701
原创 代码分析二:泛型方法与反射
泛型在类型安全,对于值操作的性能,代码的表现力上有极大的意义。 在CSharpInDepth中,有一个结合泛型方法和反射的例子,代码抄了一遍贴上: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;
2013-12-17 22:11:11 621
原创 代码分析一:泛型与接口,枚举
VS有个一个解决方案的概念,这样诸多的工程可以放在同一个工程之中,方便管理,因为初学C#,本来以为只要我将学习的代码放到解决方案中就可以了,但是,随着代码量的增加,之前的例子还是石城大海,也没很多机会再回头看看,所以,就把一些很有意思的代码贴到博客里面,强制自己分析一遍,加深理解和印象,也保留了学习的足迹。--2013.12.15. 之前理解了接口的运行机制,但是泛型接口一度让我有点糊涂
2013-12-15 13:26:28 670
原创 大数据导入之Bulk Insert的一点总结
最近项目中需要对服务程序进行大规模的模拟测试,于是专门写了一个测试程序,测试程序包含:测试数据的管理,功能测试,流程测试,压力测试。 对于要测试的程序的数据源来自数据库,所以,需要模拟一个大的数据量,从1W,10W,100W,1000W...。其实,一直以来没有怎么搞过大数据,写程序的时候,最多搞一两条记录测试一下功能,功能OK了就提交代码,进行下一步测试了。但是,进行实际的测试中,总是
2013-12-13 23:19:45 3627
原创 C#基础实践:引用与值类型
C#里面表示和存储数据有两类方式:1 引用类型 2 值类型。 一、引用类型 表示引用类型的关键字有三大类:class,interface,delegate。 当然,还有一种引用就是基于泛型的定义,不过其基础还是前面三种基本的类型。引用在我的理解中其实就是,基于地址的访问,地址就就需要向系统申请空间,然后指向定所分配空间的开始点,所以就有了class,delagate这两
2013-12-06 22:38:44 843 1
原创 Inside VCL阅读有感一
Delphi的类架构为什么这么设计?一个TObject完成了管理对象的功能,一个TComponent完成了基本的组件管理。 Borland摒弃了多重继承,采用单根继承,这样程序设计和阅读都清爽不少。 首先是TObject TObject是Delphi的万类之王:1. 使用表格驱动的VMT轻松完成了类层面信息的管理 2 实现了申请内存和释放内存的功能,所有的方法都处于Publish
2012-07-01 23:25:49 568
原创 Delphi对象指针小结
1 一个对象指针指向的一个对象的数据区,该数据区前面4个字节是一个指针,指向的是大名鼎鼎的VMT,其实是Self的地址,代码如下:procedure TForm1.btn3Click(Sender: TObject);var Chld: TChild; P1, p2, p3, p4: Pointer;begin Chld := TChild.Create; tr
2012-06-07 22:54:25 2866
原创 多看几遍就能够对Delphi或者指针有多一点的理解
使用Dephi使用指针的频率不会像C那么高,但是确实也会使用,特别是操作VMT的时候,下面是根据VMT的一些知识写的一个程序片段,在写出来之后,结合自己的理解,进行了比较详细的注释,在注释的过程中,对于所写的内容有了更加清晰的认识。 procedure TForm1.btn1Click(Sender: TObject);var iInstanceSize: Intege
2011-12-15 22:55:11 941 1
原创 又见DLL
其实,DLL这东西也用过一段时间了,但是大多都是对照着Copy样式,剩下的就是把自己想包含的东西写在里面,所以一直以来也没有报什么错。 今天中午,迷迷糊糊的写了一个动态库,大概的功能就是通过动态库传递选择一个颜色,然后传递回来。很简单的一个东西,但是或许是在午睡状态,更可能是该注意的东西其实根本就是没有理解,所以,这事真是“一波两折”。 一、测试调用DLL报内存错误。
2011-11-13 15:43:26 500 2
原创 将常用的字符串资源化
利用资源文件把一些字符串管理起来很方便。 1. 常量定义单元 unit ErrorCodeDef;interfaceconst CI_ERR_Input = $1001; CI_ERR_Ouput = $1002; CI_
2011-09-19 18:38:49 373
原创 代码审查小结
1 不要异地释放内存,释放内存请用FreeAndNil。伪代码:procedure TForm1.btn2Click(Sender: TObject);var p: Pointer;begin //FList存放了很多的同类型的指针 p := F
2011-08-20 13:14:36 476
瀑布流演示
2015-04-20
内存泄露工具FastMM
2011-07-31
c# 如何在winForm中实现扫码软件中的蒙板效果
2015-04-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人