自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

产品技术知与行

讲讲技术,谈谈产品,感悟生活,展望IT技术和未来,做喜欢的事情。

原创 解读经典《C#高级编程》最全泛型协变逆变解读 页127-131.章4

前言 本篇继续讲解泛型。上一篇讲解了泛型类的定义细节。本篇继续讲解泛型接口。 泛型接口 使用泛型可定义接口,即在接口中定义的方法可以带泛型参数。然后由继承接口的类实现泛型方法。用法和继承泛型类基本没有区别。 不变、协变和逆变 在.Net4.0之前,泛型接口是不变的。.Net4.0通过协变和逆变...

2019-03-12 17:46:00 134 2

原创 解读经典《C#高级编程》泛型 页122-127.章4

前言 本篇继续讲解泛型。上一篇讲解了泛型类的创建。本篇讲解泛型类创建和使用的细节。 泛型类 上篇举了个我产品中用到的例子,本篇的功能可以对照着此案例进行理解。 /// <summary> /// 单一事务处理服务,用于单表的数据读写事务 /// </s...

2019-03-05 17:48:26 73 0

原创 解读经典《C#高级编程》泛型 页114-122.章4

前言 本章节开始讲解泛型。.Net从2.0开始支持泛型,泛型不仅是C#的一部分,也与IL代码紧密集成。所以C#中泛型的实现非常优雅。相对于C#,Java是后期引入的泛型,受限于最初的设计架构,就实现的比较别扭,遭到不少人的吐槽,比如“类型擦除”问题。使用C#还是幸福的。 使用泛型最典型的应用,可...

2019-02-28 17:47:26 142 0

原创 解读经典《C#高级编程》继承 页107-113.章4

前言 本章节开始讲接口。 接口 接口的声明很像抽象类,有方法的声明但无方法体。但它比抽象类限制更多。和类比起来,接口的定义有众多限制。 接口只能包含声明,而无方法体 接口只能包含方法、属性、索引器、事件的声明。即不能有:构造函数、字段、操作符重载 成员不允许声明修饰符。接口默认就是publi...

2019-02-22 18:16:34 152 0

原创 多种Timer的场景应用

前言 今天讲讲各种Timer的使用。 三种Timer组件 .Net框架提供了三种常规Timer组件,分别是System.Windows.Forms.Timer、System.Timers.Timer和System.Threading.Timer。实际最常用的也就是前两种,而且应用场景比较明确。...

2019-02-15 17:48:21 95 2

原创 解读经典《C#高级编程》第七版 Page100-107.继承.Chapter4

前言 本章节继续讲实现继承。 实现继承 密封类和密封方法 密封类和方法的概念很简单,就是为了不允许类和方法被继承和扩展。不允许扩展一般的原因有: 如果类或者方法被扩展,可能会导致类库执行错误 因为版权原因,不允许第三方随意扩展该类 .Net库有很多密封类,使用者不能随意扩展。我猜测这么做可...

2019-01-31 17:34:51 91 1

原创 基于.Net进行前端开发的技术栈发展路线(三)

前言 上一篇《我的技能树二》文章分享了我的技能中的前端技能和Java技能,今天继续跟大家分享的就是后端技能了。 我的技能树 我当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练。未标注的只是了解。 数据库 数据库 数据库是信息化系统编程的基础。因为我一直是做...

2019-01-29 17:35:12 132 0

原创 分享一个效率工具的程序和源代码

前言 今天和大家分享一个效率工具,并分享运行程序和完整源代码。这个工具是辅助管理我自己的日常工作而开发的,从06年开始开发第一版,已经持续使用十多年,现在仍然在使用和改进中,这说明这个工具本质上是有效的,所以才能一直坚持使用和优化。 在最近,我又用C#和Winform进行了重写。本来我想用WPF...

2019-01-24 17:30:34 238 0

原创 解读经典《C#高级编程》第七版 Page94-100.继承.Chapter4

前言 今天,我们开始进入第四章的解读。本章讲的是继承。要做稍微复杂一些的开发,便不可避免的会使用到继承。本篇文章我们主要解读“实现继承”。 另外,从本文开始,我开始使用Markdown格式来书写文章,它可以提供更好的布局风格和代码样式。 继承的类型 我们可能都知道,C++支持多继承,但Jav...

2019-01-22 17:32:31 88 1

原创 基于.Net进行前端开发的技术栈发展路线(二)

前言   上一篇《我的技能树》文章分享了我的技能成长过程,还未完成,今天继续跟大家分享。   01 我的技能树   我的当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练。未标注的只是了解。 上篇分享完了C#部分,下面就根据我的学习历程的先后继续讲。...

2019-01-14 17:33:22 248 0

原创 解读经典《C#高级编程》第七版 Page79-93.对象和类型.Chapter3

前言   本篇我们继续讲解本章其余的部分:构造函数、只读字段、匿名类型、结构详解、部分类、静态类、Object类、扩展方法,等。   01 类   构造函数 构造函数是一种特殊的方法: 与类同名 没有返回值,甚至不能写void(但可以写修饰符public,private,pro...

2019-01-11 17:51:00 97 0

原创 解读经典《C#高级编程》第七版 Page68-79.对象和类型.Chapter3

前言   新年好,本篇开始进入第三章,《对象和类型》,深刻理解C#的对象,对于使用好.Net类库非常重要。   01 类和结构   从使用角度看,结构和类的区别很小,比如,将结构定义转换为类,只需要将关键字struct改为class即可。创建结构的时候,也同样可以用关键字new。它们...

2019-01-10 17:31:38 105 0

原创 基于.Net进行前端开发的技术栈发展路线(一)

前言   今天想讲讲的是我的技术树。我最初是做CS开发的,第一阶段的技术经历是以Powerbuilder来做CS开发,第二阶段开始基于C#做winform开发,眼看前端开发越来越流行,需要更广泛的技术栈势在必行。因此以.Net为基础,我开始拓展自己的技术栈。从14年到18年,跨越了很多界限,到...

2019-01-07 12:16:44 723 2

原创 解读经典《C#高级编程》第七版 Page50-68.核心C#.Chapter2

前言   本篇讲述Main方法,控制台,注释,预处理指令,编程规范等。这些概念比较琐碎,为避免长篇大论,主要以列举要点的方式来说明。   01 Main方法   Main方法并不是所有应用类型的入口方法,它只是控制台程序、Winform程序的入口方法。 创建项目时自动生成的Main...

2019-01-04 09:59:51 315 0

原创 解读经典《C#高级编程》第七版 Page45-50.核心C#.Chapter2

前言   本篇讲述枚举和名称空间。   01 枚举   首先需要明确枚举的概念:枚举是用户定义的整数类型。使用枚举的目标是,使用一组容易记忆的名称,来使得代码更容易编写和维护。 我们对比枚举的定义和类的定义,会发现它们有像的地方,有不像的地方,这不同之处体现了枚举的特性。我们按下图...

2019-01-03 09:53:32 122 0

原创 解读经典《C#高级编程》第七版 Page38-45.核心C#.Chapter2

前言   控制流是语言中最基础的部分,我们不谈具体的细节,只讲讲一些关键和有趣的点。   01 流控制   条件语句:if, else if, else if语句的使用非常值得细讲,如何是好的使用习惯。有一点非常重要,就是尽可能的避免太多层次的嵌套,这将带来可读性灾难。我自己的原则...

2018-12-28 17:30:42 100 0

原创 解读经典《C#高级编程》第七版 Page32-38.核心C#.Chapter2

前言   接下来讲讲预定义数据类型。关于数据类型,其实是非常值得透彻研究的。   01 预定义数据类型   值类型和引用类型 C#将把数据类型分为两种,值类型和引用类型,值类型存储在堆栈上,引用类型存储在托管堆上。因此,对于值类型,如果: Int a = 1; Int b = ...

2018-12-27 10:36:05 100 0

原创 解读经典《C#高级编程》第七版 Page20-32.核心C#.Chapter2

前言   讲到核心C#的语法,其实很难讲,因为大部分是基础知识。如果只讲入门的基础知识,那细节又多,意义也不大。我们就不讲一般性的内容,而是找一些有趣的点,展开讲讲。   01 Hello World   Hello World 一般开始编程的开头,都是写一个Hello World...

2018-12-25 13:16:46 131 1

原创 解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page13-20

01 程序集   程序集是包含编译好的、基于.Net Framework的代码逻辑单元。一般来说,在Visual Studio中的一个项目即一个程序集,而一个项目中包含多种不同的代码文件。程序集分为可执行程序集和库程序集,比如一个Winform项目就编译为可执行程序集,而Winform项目所...

2018-12-20 06:40:17 85 2

原创 解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page6-13

01 中间语言(IL) .Net中间语言(IL)的特性,很大程度上来自于要支持多语言互操作性。要支持多语言互操作性,是因为微软想搞一个大事情,将它的老产品线VB和VC++,VJ++都装入.Net架构中。要支持多语言互操作,就需要实现这些基本功能: 1) 继承:一种语言的类能继承另一种语言编写...

2018-12-18 20:48:01 97 2

原创 解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page1-6

前言 大家好。本号今天重启。 看上一篇文章,已经是06年的事情了,从07年之后,我转做产品经理,机缘巧合,在2012年之后,又接触到.Net编程,在2016年正式回归到开发的行列,整整10年。最近几年,在技术上要补以前落下的课,所以变化很快,进步也很快,16年基于DevExpress做Winf...

2018-12-12 10:39:43 159 1

原创 使用Web Datawindow ActiveX实现Web页面的打印功能

    想起以前说过要把Web Datawindow ActiveX使用经验整理后发出来,由于项目实在是太忙,又想偷懒一直没搞。 转眼间2006快过去了,今年的事情还是把它做了吧。     其实,使用ActiveX本身实在是没有什么难度,Datawindow大家都很熟悉。这也是我没有把它写下来的动...

2006-12-30 20:25:00 4643 12

原创 向大家推荐几个不错的国外pb网站.

http://www.pfcguide.com/index.asp http://www.dw-extreme.com/ http://www.ascensionlabs.com/index.html http://www.pbdr.com/http://www.levinecentral....

2004-11-11 22:39:00 7397 4

原创 大家都看贴不回贴,郁闷!

    开了这个Blog,好像访问的人还有一些,但是基本上没有回贴.让我非常郁闷!     其实我对这个Blog并没有什么奢求,本身写blog它也不可能给自己带来经济利益.而且为了一个主题,还的花费日常的空闲时间,写文章,写例程.     说实在的,我只是想把我学习,工作的一些经验,无偿的给奉...

2004-11-09 15:20:00 1473 20

原创 Pfc常用功能

        pfc对pb开发者来说绝对是一个很好,很方便的开发SDK工具,不过不知道为什么大家对它了解不多,可能是sybase公司没有主推这个工具的原因吧,它的唯一缺点就是开发库显得比较臃肿,运行速度相对无pfc的程序也有较大的下降,我想这个可能是sybase没有主推这个SDK的原因,不过对...

2004-11-09 03:14:00 2968 8

原创 Pfc核心:窗口数据的保存原理(暂缺)

有空写...

2004-11-09 00:35:00 1420 1

原创 采用Informaker和pbl中dw相结合的方式实现强大的自定义报表功能

    做过大型系统的人应该都有这个体会,就是客户对报表的要求各异,而且中国式报表统计的要求都很高,不是一般的自定义报表软件能够实现的.一般大项目的报表工作量,往往占用了整个项目时间的50%以上,对报表的高要求,往往导致了两个结果:     一个结果是做一个功能强大的自定义报表系统,可以让用户自...

2004-11-08 23:35:00 3318 2

原创 如何实现100%的动态数据管道(三)

下面看看,如何根据中间层的数据,构建管道语法: 1.首先建立一个数据窗口对象:d_vdtcolumns SQL语法是:  SELECT vdt_columns.utid,            vdt_columns.uid,            vdt_columns.upkey,   ...

2004-11-08 00:46:00 2265 5

原创 如何实现100%的动态数据管道(二)

主要思路解决了,下面开始写详细设计(以Sybase ASE数据库为例,其他各位扩展):             1.建立中间层表vdt_columns,这个表的属性用于构建管道中的列资料.             执行类似的代码生成:             ls_sql = "...

2004-11-07 23:47:00 1987 1

原创 如何实现最精细的权限控制?(暂缺)

有空写...

2004-11-06 17:13:00 1532 2

原创 如何实现100%的动态数据管道(一)

    大家都知道,PB的数据管道是个非常有用的数据传输的工具,支持多种数据库之间的数据传输,并且有完善的传输错误控制机制.     看到过一些网友实现的数据管道,综合起来有这么几种:     1.数据管道对象,预先建立好,然后在程序中,调用这些管道对象,实现数据传输,这样可以在编译好的程序中...

2004-11-06 17:08:00 2835 0

原创 关于PB代码重用的全面探讨

    在现在面向对象的编程的时代,代码重用是个永远值得讨论的话题,关于PB代码的重用,不少人都有提过,不过我觉得有些观点是不适当的,如何提高PB代码的重用性,我谈谈我的看法.     首先说的应该就是如何在PB程序内部实现代码的重用.这个相信大家都比较熟悉,那就是面向对象编程的3个关键:继承,...

2004-11-06 13:55:00 2328 3

原创 PB中如何编写COM和COM+程序.

    COM/COM+作为取代OLE的一种新技术,问世已经很久了,PB7中也早已提供了对它的支持,不过从现实情况上看,似乎大家使用到的不是很多,其实对于新一代的互联网应用,它还是能够发挥很大作用.下面我将从COM/COM+组件的生成,调用,以及应用范围上谈谈我的看法和心得.          我...

2004-11-06 11:20:00 5451 6

原创 如何使用Sybase ASE数据库的扩展存储过程?

    使用ASE已经有很长时间了,在使用过程中,不断深入的了解了它的各种功能,但是对于扩展存储过程基本上没有书籍中有讲到过,论坛上似乎也没有出现过此类问题,但是它确实能够解决部分特殊问题,而且功能是十分强大的,我专门对此进行了研究,现将结果与大家共享.     有时候大家可能会有这种需求,就是需...

2004-11-06 00:15:00 2045 3

提示
确定要删除当前文章?
取消 删除