自定义博客皮肤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技术和未来,做喜欢的事情。

  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

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

前言本篇继续讲解泛型。上一篇讲解了泛型类的定义细节。本篇继续讲解泛型接口。泛型接口使用泛型可定义接口,即在接口中定义的方法可以带泛型参数。然后由继承接口的类实现泛型方法。用法和继承泛型类基本没有区别。不变、协变和逆变在.Net4.0之前,泛型接口是不变的。.Net4.0通过协变和逆变为泛型接口和泛型委托增加了重要的扩展。注:本书总体非常好,但在协变和逆变方面,我认为是有缺陷的。我...

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

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

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

2019-03-05 17:48:26 947

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

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

2019-02-28 17:47:26 361

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

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

2019-02-22 18:16:34 259

原创 多种Timer的场景应用

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

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

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

前言本章节继续讲实现继承。实现继承密封类和密封方法密封类和方法的概念很简单,就是为了不允许类和方法被继承和扩展。不允许扩展一般的原因有:如果类或者方法被扩展,可能会导致类库执行错误因为版权原因,不允许第三方随意扩展该类.Net库有很多密封类,使用者不能随意扩展。我猜测这么做可能是因为设计者想保持框架的纯净性和单一性,即不希望使用者随意扩展而导致出现众多“分支框架”,最终的导致...

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

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

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

2019-01-29 17:35:12 744

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

前言今天和大家分享一个效率工具,并分享运行程序和完整源代码。这个工具是辅助管理我自己的日常工作而开发的,从06年开始开发第一版,已经持续使用十多年,现在仍然在使用和改进中,这说明这个工具本质上是有效的,所以才能一直坚持使用和优化。在最近,我又用C#和Winform进行了重写。本来我想用WPF或者Electron重写,这样能把界面做的漂亮一点,或者能实现跨平台。但因为工作繁忙,确实难以抽出很多...

2019-01-24 17:30:34 462

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

前言今天,我们开始进入第四章的解读。本章讲的是继承。要做稍微复杂一些的开发,便不可避免的会使用到继承。本篇文章我们主要解读“实现继承”。另外,从本文开始,我开始使用Markdown格式来书写文章,它可以提供更好的布局风格和代码样式。继承的类型我们可能都知道,C++支持多继承,但Java和C#都不支持多继承。多继承非常繁琐和复杂,但现实世界中却又有很多多继承的情况,很简单的比如我们每个...

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

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

前言 上一篇《我的技能树》文章分享了我的技能成长过程,还未完成,今天继续跟大家分享。 01我的技能树 我的当前的技能树:其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练。未标注的只是了解。上篇分享完了C#部分,下面就根据我的学习历程的先后继续讲。 02前端开发 在上家公司上班期间,因为公司产品选型基于Winform+Dev...

2019-01-14 17:33:22 988

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

前言 本篇我们继续讲解本章其余的部分:构造函数、只读字段、匿名类型、结构详解、部分类、静态类、Object类、扩展方法,等。 01类 构造函数构造函数是一种特殊的方法:与类同名 没有返回值,甚至不能写void(但可以写修饰符public,private,protected) 未指定构造函数时,编译器会自动创建默认构造函数;一旦手工创建了构造函数,编译器就不会...

2019-01-11 17:51:00 194

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

前言 新年好,本篇开始进入第三章,《对象和类型》,深刻理解C#的对象,对于使用好.Net类库非常重要。 01类和结构 从使用角度看,结构和类的区别很小,比如,将结构定义转换为类,只需要将关键字struct改为class即可。创建结构的时候,也同样可以用关键字new。它们的本质区别是,结构是值类型,存储在栈上,而类存储在堆上。但我还没碰到什么情况下需要使用结构。因为一...

2019-01-10 17:31:38 227

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

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

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

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

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

2019-01-04 09:59:51 523

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

前言 本篇讲述枚举和名称空间。 01枚举 首先需要明确枚举的概念:枚举是用户定义的整数类型。使用枚举的目标是,使用一组容易记忆的名称,来使得代码更容易编写和维护。我们对比枚举的定义和类的定义,会发现它们有像的地方,有不像的地方,这不同之处体现了枚举的特性。我们按下图举例:C#中,一般习惯于一个文件定义一个类。而一个项目中可能有大量枚举,一般建议将多个枚举定义...

2019-01-03 09:53:32 265

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

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

2018-12-28 17:30:42 250

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

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

2018-12-27 10:36:05 248

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

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

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

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

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

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

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

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

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

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

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

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

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

    想起以前说过要把Web Datawindow ActiveX使用经验整理后发出来,由于项目实在是太忙,又想偷懒一直没搞。转眼间2006快过去了,今年的事情还是把它做了吧。    其实,使用ActiveX本身实在是没有什么难度,Datawindow大家都很熟悉。这也是我没有把它写下来的动力的原因之一。不过在实施过程中,确实 还碰到过一些问题,也有一些心得,也还有解决不了的问题存在。我就做...

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

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

http://www.pfcguide.com/index.asphttp://www.dw-extreme.com/http://www.ascensionlabs.com/index.htmlhttp://www.pbdr.com/http://www.levinecentral.com/pblwww.htmlhttp://www.powerbuilderuser.de/ind...

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

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

    开了这个Blog,好像访问的人还有一些,但是基本上没有回贴.让我非常郁闷!    其实我对这个Blog并没有什么奢求,本身写blog它也不可能给自己带来经济利益.而且为了一个主题,还的花费日常的空闲时间,写文章,写例程.    说实在的,我只是想把我学习,工作的一些经验,无偿的给奉献给大家.如果说到回报,那只是大家的一点支持:在评论里写上你的意见,建议,是褒是贬都无所谓,关键是我知...

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

原创 Pfc常用功能

        pfc对pb开发者来说绝对是一个很好,很方便的开发SDK工具,不过不知道为什么大家对它了解不多,可能是sybase公司没有主推这个工具的原因吧,它的唯一缺点就是开发库显得比较臃肿,运行速度相对无pfc的程序也有较大的下降,我想这个可能是sybase没有主推这个SDK的原因,不过对于对运行速度要求不是特别高的一般应用来说,用它确实是非常不错.如果运行速度要求苛刻的话,估计也不会用p...

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

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

有空写...

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

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

    做过大型系统的人应该都有这个体会,就是客户对报表的要求各异,而且中国式报表统计的要求都很高,不是一般的自定义报表软件能够实现的.一般大项目的报表工作量,往往占用了整个项目时间的50%以上,对报表的高要求,往往导致了两个结果:    一个结果是做一个功能强大的自定义报表系统,可以让用户自己定义,OK!真是好想法啊,不过有疑问了,这个和pb的数据库画板有什么区别呢?而且需要花费很大精力,肯...

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

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

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

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

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

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

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

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

有空写...

2004-11-06 17:13:00 1689 4

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

    大家都知道,PB的数据管道是个非常有用的数据传输的工具,支持多种数据库之间的数据传输,并且有完善的传输错误控制机制.    看到过一些网友实现的数据管道,综合起来有这么几种:    1.数据管道对象,预先建立好,然后在程序中,调用这些管道对象,实现数据传输,这样可以在编译好的程序中进行数据传输'    2.也有动态修改管道SQL语法的,但是只能修改检索条件.这样的做法,如果...

2004-11-06 17:08:00 3112

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

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

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

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

    COM/COM+作为取代OLE的一种新技术,问世已经很久了,PB7中也早已提供了对它的支持,不过从现实情况上看,似乎大家使用到的不是很多,其实对于新一代的互联网应用,它还是能够发挥很大作用.下面我将从COM/COM+组件的生成,调用,以及应用范围上谈谈我的看法和心得.        我将用PB10为开发工具做说明.假设要做一个表达式计算的COM组件,我想这个例子比较典型,用到了data...

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

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

    使用ASE已经有很长时间了,在使用过程中,不断深入的了解了它的各种功能,但是对于扩展存储过程基本上没有书籍中有讲到过,论坛上似乎也没有出现过此类问题,但是它确实能够解决部分特殊问题,而且功能是十分强大的,我专门对此进行了研究,现将结果与大家共享.    有时候大家可能会有这种需求,就是需要对服务器进行某些操作,比如拷贝文件,启动或者停止某些服务和程序等.一般这种情况下,PB就无能为力了,...

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

Entity Framework6.0 Extended 扩展库(Mysql支持修正版)

Entity Framework Extended 扩展库是一个开源的EF的扩展库代码,它对SqlServer数据库的支持很好,但对Mysql的支持存在问题。主要问题在于对于linq中的List.Contains()此类的列表判断支持存在问题。这种语法EF扩展会将其转换为in语句,in语句中生成多个全局变量,但List中的数据却未传入全局变量。 本程序包对EF Extended进行了修改,解决了这个问题。

2016-12-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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