随笔分类 -  CSharp

带有加解密通信的应用安装为windows服务时,需要注意使用的账户
摘要:今天在客户演示试用系统掉了回链子,本来服务器端安装包要安装到win2003上的,但客户手头只有个xp, 我感觉问题不大就装了,结果登录认证时却报了个“该项不适于在指定状态下使用”,折腾半天,好歹客户是熟人,没太计较,给他一个调试时使用的控制台算是也能试用起来了。 回来研究半天,这问题肯定来源于传输使用的非对称加密过程,网上有说增强组件才能支持512位以上的私钥,但改到512也照旧。接着琢磨,网上的一条讨论说与账户权限有关。于是我想为什么win2003安装没有问题而xp有问题呢,应该是为服务使用的登录帐号在xp上的权限不够。查了查,安装包注册服务使用了"本地服务"账户,改为“ 阅读全文

posted @ 2012-11-14 19:44 窗户纸 阅读(113) 评论(0) 推荐(0)

有关对耗时很大循环进行并行化优化的探讨之三:并行线程越多运行就会越快吗?
摘要:在.net framework4.0以后,出现了并行编程的概念,使用 Parallel.For(0, N, i =>{ ... },很容易就可以实现我们自定义的并行化循环操作,在并行循环体中,还可以操作外部的变量,这个特性是很多其他语言所没有的,当然其他语言,诸如JAVA之类,完全可以采用我们在第二篇所介绍的方法自己生成并行化操作。 由于.net framework使用环境的局限性,以及“庞大的身躯”,和安装时必须向微软“报到”的限制。很多开发商并不喜欢用,完全可以采用我所介绍的方式实现并行化,与微软的并行化的区别只是他的循环体是使用了lamda表达式,而我的方式是使用委托而已。再发散一 阅读全文

posted @ 2012-04-11 13:05 窗户纸 阅读(911) 评论(0) 推荐(0)

有关对耗时很大循环进行并行化优化的探讨之二:多重循环任务的并发处理
摘要:【引】在上一篇有关并行化的《有关对耗时很大循环进行并行化优化的探讨 之一:并发搜索的处理》博文中,我们看到,不使用并行语言,而使用基本的编程语言配合多线程可以进行并行化处理,本文进一步将并行化操作进行一个简单封装,并开始完成一个并行化的数据操作,以供大家参考。【多重循环的操作】有很多方法可以实现并行查询,必须并行化Linq就是很不错的途径,相比linq to entity,真正实现了性能的有效提升,但如果考虑在循环中进行复杂的业务处理,进行独立的并行化编程会更有效的帮助我们实现系统的优化。下面我们以一个简单的操作为例,看看如何自己做一个并行化的程序: 在如下的例程中,我们自定义了一个继承于d. 阅读全文

posted @ 2012-04-02 21:05 窗户纸 阅读(380) 评论(0) 推荐(0)

有关对耗时很大循环进行并行化优化的探讨 之一:并发搜索的处理
摘要:在对程序优化过程中,我们往往对循环体有着刻骨的仇恨,因为它对性能的损耗尤其之大,比如如下例程,是个简单的循环例程,全部执行需要30秒以上(痛苦): public enum HandleRst { 完成, 错误_手术刀忘肚子里了, 失败_药物过敏, 失败_家属不签字, } public class Obj_Fath { private int _SonLen; public int SonLen { get { return _SonLen; } set { _SonLen = value; } } public Obj_Fath(string myt) { _T = myt; _SonOb.. 阅读全文

posted @ 2012-03-09 13:57 窗户纸 阅读(156) 评论(0) 推荐(0)

如何从底层的datatable更新上层的datagridview
摘要:使用微软 SQL SERVER MANAGEMENT Studio的人都经常发现,他打开表显示数据的速度很快,而且,如果有数万条记录不能立即显示时,数据表格会自动的加载数据,而不影响整个界面的操作,那么这个效果是如何完成的呢? 肯定的一点是,他用到了多线程,数据的提取线程和界面操作不在一个线程中,这样就可以做到数据随提取,随时送到界面的表格控件中。 实现的方式就不废话了,给个代码,大家自然很容易就看懂了public partial class Form2 : Form { private DDD _D; public Form2() { InitializeComponent(); _D =. 阅读全文

posted @ 2012-02-26 21:39 窗户纸 阅读(174) 评论(0) 推荐(0)

为什么要对字段封装属性
摘要:为什么要对字段封装属性? 每次有新人来,都要问这个问题,我直接对字段操作多省事呀,就像这样 public class A { publicstring _Name; } public Class B { private A _MyA; public void DoB(string n) { _MyA._Name=n; } } 很多砖家会毫不犹豫的说,你这样“封装不好”,于是新人眨着两只无神而又水汪汪的大眼睛,分明是在说:“这不脱了裤子放X吗”,心里一肚子不服气。 但从编程角度说,封装为属性除了从外面看起来“顺眼”些,还有啥实际作用呢? 牛人会巴拉巴拉讲出一大套,我就说一点简单而实用的,那就.. 阅读全文

posted @ 2011-12-09 19:05 窗户纸 阅读(259) 评论(0) 推荐(0)

工作流系统的硬伤- 修改有数据的表单限制及解决方式分析
摘要:最近客户部署了某著名公司的工作流软件,我也顺便研究了一下,发现了一些问题。目前的工作流系统,从结构体系看都是相似的,主要包括: - 工作流引擎 - 图形化的流程设计器 - 表单设计器 如果从企业数据角度来看,我们分析一下各个组件的含义 工作流引擎当然是处理具体的业务数据(或叫流程实例)的节点状态流转,保存的是节点状态数据表单当然保存了业务数据,由于不同流转步骤需要的数据不同,表单里面也存在着非常多的脚本信息,这些脚本中以字段名的方式标识着数据计算公式。 流程设计器保存的是业务流程流转的规则,由于很多流程跳转是有条件的,因此这里面就产生了大量的脚本,而流程跳转条件又多与表单中的字段有关,因此脚本 阅读全文

posted @ 2011-04-13 18:16 窗户纸 阅读(277) 评论(0) 推荐(0)

在Datagridview控件利用下拉菜单进行枚举数据输入
摘要:在Datagridview控件利用下拉菜单进行数据输入可以使用户操作更加方便,在配置COMBOX控件时,只要设置了datasource, displaymember,valuemember,即可实现comboxbox的数据输入,如: 有一个类如下: public class Class1 { string _Name; public string Name { get { return _Name; } set { _Name = value; } } int _Weight; public int Weight { get { return Weight; } set { Weight = 阅读全文

posted @ 2011-03-05 19:00 窗户纸 阅读(416) 评论(0) 推荐(0)

面向对象的编号-避免变量命名发生混淆的途径
摘要:软件开发项目具有风险大,周期长的特点,由于行业的复杂性,对于很多开发小组,人员的更替是十分频繁的,而软件开发项目的特点又恰恰是需要统一定义的信息非常多,包括组件名、对象名、变量名、界面、版本号、配置文件、功能清单等等,而人员的更替往往带来的结果是是新成员需要长时间的适应项目规范、定义等,而由于定义混淆而造成的编码错误占软件开发错误很大比重,因此,软件项目组如果能有一个很好的规范定义体系,可以大幅度提高软件开发的效率及软件质量。 由于面向对象的软件开发模式在减少代码冗余,解除项目组成员过多耦合等软件项目管理问题中具有特殊的优势,现代的绝大多数软件开发项目都采用了此种模式进行开发。 在此种模式下. 阅读全文

posted @ 2011-01-23 10:08 窗户纸 阅读(217) 评论(0) 推荐(0)

探寻Remoting和WCF以外的远程对象编程的新途径
摘要:在现代的编程技术中,客户端以对象的方式调用服务器上的数据及处理方法,可以大幅的简化分布式系统的开发难度,在.net世界中,人们在此广泛使用了Remoting技术,目前微软也在大力的推广其WCF技术,但这两种技术也存在着一定的先天缺陷。虽然WCF号称速度快过Remoting,但是底下的众多程序员却不太认同,其底层采用XML的通信机制决定其难以超越Binary方式传输的方式, 网上有一些专家自测的测试结果,如http://geekswithblogs.net/marcel/archive/2007/04/12/111542.aspx。 而Remoting也有他的一些问题,其断线重连似乎总是不太稳定 阅读全文

posted @ 2011-01-20 21:47 窗户纸 阅读(111) 评论(0) 推荐(0)

使用自己开发的ORM数据层的好处
摘要:使用了对象映射转换层确实可以大幅简化开发工作,但最近研究了各家数据层的有缺点后,我发现自己开发数据层可能更划算些:1. 向Hibernate等著名ORM产品号称缓存的命中率达90%以上,但如果应用时分布到多台服务器上,甚至是客户端时,其缓存命中率会差得一塌糊涂, 于是乎大家都在说建立在其上建立应用缓存,但应用缓存会带来脏读、冲突等诸多问题。而自己编制数据层就可有选择的处理缓存问题,显著提高效率。2. 面向对象编程一个很突出的特点就是其支持继承,而继承的实现在数据库设计中有两种方式: 1) 父子类使用同一张表,特点是效率较高,但多个对象数的据在一起会浪费部分空间2) 父子类使用不同的表,并用相同 阅读全文

posted @ 2011-01-18 23:36 窗户纸 阅读(214) 评论(0) 推荐(0)

BindingList 看起来很美
摘要:最近有同事迷上了使用BindingList开发应用,看上去用BindingList绑定datagridview很是省事,只要如下即可:BindingList<T> x = new BindingList<T>(); .... datagridivew1.datasource = x; datagridiew1.columns["name'].DataPropertyName = "Name"; ... T = datagridview1.selectedrows[0].boundItem as T; 列表控件的信息就可以和对象集合的 阅读全文

posted @ 2011-01-18 22:54 窗户纸 阅读(532) 评论(0) 推荐(0)