一个进销存系统
摘要:开源依旧:再次分享一个进销存系统开篇我之前发过一篇博文《两天完成一个小型工程报价系统(三层架构)》,不少朋友向我要源码学习,后来久而久之忘记回复了。今天我再分享一个进销存系统,只为学习,没有复杂的框架和设计模式,有的是我个人的理解,大家互相探讨技术才会提高。当然我的命名不是很规范,兄弟们凑合着看。:)思想和架构在传统的三层架构思想上扩展出N层架构,将业务逻辑层换成WCF服务。抽象工厂的引入提高了程序的扩展性,单利+缓存+反射则提升了程序的性能。数据库则换成了Oracle,所以相应的数据访问层也换成了OracleDal,当然你完全可以写SqlServerDal,因为我数据访问层接口都已定义好。界
阅读全文
.NET Micro Framework动态调用C/C++底层代码(原理篇)
摘要:.NET Micro Framework动态调用C/C++底层代码(原理篇).NET Micro Framework和WinCE系统不同,从应用开发角度来说,仅支持C#开发(从V4.2版本开始,才支持VB.NET开发),而不像WinCE应用开发,既可以用C#/VB.Net,也可以用EVC等工具进行C/C++开发。针对.NET Micro Framework平台由于C#等.NET语言是托管代码,系统需要对中间语言进行解释执行,所以运行效率上和原生的C/C++相比,效率是打了一个折扣的,这样对一些实时性要求比较高的应用来说,是很难实现的。如果非要用.NET Micro Framework开发一些实
阅读全文
IList,ICollection,IEnumerable,IEnumerator,IQueryable
摘要:1、首先看一个简单的例子int[] myArray = { 1, 32, 43, 343 }; IEnumerator myie = myArray.GetEnumerator(); myie.Reset(); while (myie.MoveNext()) { int i = (int)myie.Current; Console.WriteLine("Value: {0}", i); }相信很多人都不会像上面这样去遍历myA...
阅读全文
浅谈.net remoting 与webservice
摘要:1. .NET Remoting .NET Remoting是微软随.NET推出的一种分布式应用解决方案,被誉为管理应用程序域之间的RPC的首选技,它允许不同应用程序域之间进行通信(这里的通信可以是在同一个进程中进行、一个系统的不同进程间进行、不同系统的进程间进行)。 更具体的说,Microsoft .NET Remoting提供了一种允许对象通过应用程序域与另一对象进行交互的框架。也就是说,使用.NET Remoting,一个程序域可以访问另外一个程序域中的对象,就好像这个对象位于自身内部,只不过,对这个远程对象的调用,其代码是在远程应用程序域中进行的,例如在本地应用程序域中调用远程对象..
阅读全文
垃圾收集
摘要:章节安排内存管理简介垃圾回收机制性能问题C#下非托管资源的处理要强调的几点References内存管理简介 对于任何一种编程语言,内存管理都是不得不提很重要的一块内容,但可惜的是目前为止没有任何一种编程语言对内存管理处理的非常完美,每种语言都在兼顾性能效率,语法语义易用性等方面折中中有所侧重。例如较之于C#,JAVA等语言C++号称不需要垃圾收集,因为C++本身产生的垃圾很少,诚然这是C++的优势,这也就是为什么在内存受限或者效率优先的环境下优先考虑C++,但它的缺点也是明显的--程序员必须自己控制内存管理,很容易产生内存泄漏,这同时也造就了C++很难掌握。感谢摩尔定律吧,它促使了垃圾收集这个
阅读全文
Entity Framework 并发处理详解
摘要:引言在软件开发过程中,并发控制是确保及时纠正由并发操作导致的错误的一种机制。从 ADO.NET 到 LINQ to SQL 再到如今的 ADO.NET Entity Framework,.NET 都为并发控制提供好良好的支持方案。并发处理方式一般分为乐观必并发与悲观必并发两种,本文将为大家介绍 Entity Framework 、 LINQ to SQL 中的并发处理方式。在本文最后,将提供一个了可参考的方案,结合事务与并发控制确保安全的数据交换机制。目录一、并发处理的定义二、模型属性的并发处理选项三、Entity Framewrok 悲观并发四、Entity Framework 乐观并发五、
阅读全文
C#多线程1
摘要:MVC4的新增功能之前端优化 做asp.net平台开发都能感觉到,微软更新速度很快。对于这点是好是坏各人的评价不尽相同。有的认为更新快是才能及时用上最新技术,有的又觉得更新快是由于不能一次性做得最好。本文简单讲一下mvc4中关于前端的一个新功能——js与css的压缩与合并。在这之前,也有很多第三方工具可以来做这件事,MVC4中把该功能也集成上去了,可谓微软真的很贴心。 mvc4中的这个功能是在System.Web.Optimization命名空间中。在MVC4的测试版跟RC版里也有所不同,这里只说RC版的。我们创建一个MVC4(RC)项目后,项目中会比以往的项目多了个App_Start目录,里
阅读全文
SignalR QuickStart
摘要:SignalR QuickStartSignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。它和AJax类似,都是基于现有的技术。本身是一个复合体。一般情况下,SignalR会使用Javascript的长轮询( long polling),实现客户端和服务端通信。在WebSockets出现以后,Signal
阅读全文
客户端服务端
摘要:为VS定制一个自己的代码生成器以前用VS一直不知道自定义工具这家伙是干什么用的,后来渐渐明白是用来生成代码的。现在一个项目需要将一个自定义格式的XML转换为代码,就想到要自己做一个自定义工具来生成代码,于是找了网上一些资料,终于开发成功。第一步,编写代码在VS里创建一个类库,这与一般的过程没什么两样,然后需要添加两个DLL的引用,一个是Microsoft.VisualStudio.Shell.Interop.DLL,另一个是Microsoft.VisualStudio.Shell.DLL。但奇怪的是,这两个DLL并没有出现在添加引用的对话框里,我找了很久,最后还是直接从GAC的目录里复制出来的
阅读全文
C#下的异步编程及其同步机制
摘要:前几天公司内部有人搞了一个关于多线程及其同步问题的讲座,内容很丰富,覆盖面很广,让人听了大呼过瘾。他采取了横向铺陈的方法讲的,罗列了C#下异步编程方法和模式及各种同步机制,这种讲述方式对于熟悉这块的人来说总结一下,帮助很大,但对于新手有可能就云里雾里了。虽然我研究不深,但纵向讲一下这一块内容,对新手入门有可能会有所帮助,也算是自己对这块内容的一种总结。只讨论技术,不涉及细节和Demo。 本篇文章涵盖一下几部分内容: 1. 什么是异步编程,为什么会需要异步编程 2. .NET下的异步编程及其发展 3. .NET线程同步机制及线程间数据封送 4. 异步模式 5. 线程安全及异常处理 6. 线程取消
阅读全文
对.Net状态保持机制和并发问题的思考
摘要:最近在琢磨并发操作控制的问题,在此小小总结一下关于状态保持机制和并发解决方案,如有问题希望大家留言指正。并发问题分为几类:1.一个办理页面仅允许一个人进,第二个人再点就提示已经被别人访问,难点在于如何解决用户非法退出时放锁。2.一个人“签出”后另一个人无法办理。(这是情景1的简化版)3.多个人同时点“提交”按钮,但是系统应该只允许第一个人成功,后面的人都应该提交失败。4.一个人更新了表单的内容到数据库,另一个人w3wp进程的用户刷新后依旧读缓存而没读取数据库,缓存不同步。情景1和2已经在我另一篇帖子里解决了,这里主要讨论情景3和4的解决方案.对于这种提交操作,大体来讲可以把并发控制的执行流程分
阅读全文
Google Chrome样式进度指示器(进度条)
摘要:© 野比 2012最近不用Opera,换成用Google Chrome,觉得它的进度条挺有意思的,就像这样:于是简单复刻了一个。功能显示给定进度百分比(0-100)。如果进度值达到100%,则将闪烁指定次数。属性BlinkCount,结束后闪烁几次。0为不闪烁,默认2BlinkSpeed,闪烁速度,0-255,默认10Image,图标,null则不显示SpokeColor,辐条颜色SpokeCount,辐条数量(穿过圆心算1根)Value,进度百分比事件没有加入进度变化或完成事件,如果需要请自行添加。结构原理比较简单,参照此图:层次如下:用Parent.BackColor填充背景画进
阅读全文
GC堆中的“内存泄漏”
摘要:首先介绍一下程序,Server程序,同时有好多Client连接,Client用tcpSocket发送数据给Server,Server对数据进行处理并返回处理结果给Client。虽然整个程序的开发时间很长,但中间不停的需求变更,功能不停地增加减少,代码也是好多人,每人几个模块甚至是几个函数杂凑起来,系统正在被使用,功能也不断被增加,总之......是一个SHZY初级阶段特色的绝对代表的Server程序。这是我接手这个程序之后的一些Bug的发现和修改,把他记录下来,以做茶余饭后的谈资。对于这种要文档没文档、要规范没规范程序,要在一边添加新功能,一边发现和修改bug是极其困难的,如果没有一些大杀器,
阅读全文
new,is和as运算符解析及运行时类型,对象,线程堆栈,托管堆之间的联系
摘要:CLR要求对象必须使用new运算符创建,在使用new运算符创建一个对象时具体都做了些什么呢?1.计算所有定义的实例字段,所有的基类型包括System.Object需要分配的字节数。每一个堆上的对象还需要两个额外的成员:类型对象指针和同步块索引,CLR使用它们来管理对象。它们两个需要的字节数算在对象的大小里面。2.从托管堆分配对象需要的字节数(也就是给对象分配内存)。所有的字节置为03.初始化类型对象指针和同步块索引4.调用实例构造器。大多数编译器自动生成调用基类构造器的代码。最终会调用Sytem.Object的构造器,这个构造器方法什么也不做,只是return。在new执行完上面的操作以后,返
阅读全文
.NET线程同步之Interlocked和ReadWrite 锁线程同步——事件构造
摘要:摘要: 本系列意在记录Windwos线程的相关知识点,包括线程基础、线程调度、线程同步、TLS、线程池等。这篇来说说静态的Interlocked类和ReadWrite锁.NET中的InterlockedInterlocked的系列方法提供了对简单类型的原子操作(不会被打断的操作),因此这也是一种多线程共享变量,防止冲突争用的方法。比如下面的方法作用是以原子的方式递增整数i:?12inti = 0 ;Interlocked.Increment( refi);除此之外还包括Add、Exchange、CompareExchange、Decrement、Read和其中的某些泛型版本。如果看官使用过wi
阅读全文
Prism学习笔记
摘要:最近3周一直都在学习Prism,留下点笔记,梳理下思路......要点1: 在CAL中,模块是实现Imodule接口的类,此接口仅包含一个方法,成为称为Initializae。如果把引导程序看做应用程序的Main方法,那么Initialize方法就是每个模块的Main方法。要点2: 对于Module中的Initialize方法中,提到的_contianer 和 _regionManager的作用需讨论一下。如果接口并未定义他们,那么他们从何而来?我们是否需要将逻辑硬编码到模块中以找出这些依赖关系? 幸运的是,后一个问题的答案是“否”,此时,IoC容器就派上用场。加载此模块时,它从容器中被解析出
阅读全文
一周最新示例代码回顾 (7/16 - 7/22)
摘要:一周最新示例代码回顾 (7/16 - 7/22)2012-07-23 11:27 by Jialiang, 420 阅读,1评论,收藏,编辑回顾上周微软一站式示例代码库最新发布的7篇示例代码:[Sample of July 22nd] VSTO Excel workbook customization该实例演示如何使用VSTO定制Excel工作簿[Sample of July 21st] Windows Forms single instance application该示例演示如何创建只允许运行单个进程的Windows Forms应用程序[Sample of July 20th] Named
阅读全文
apache-solr-4.0.0-ALPHA中文分析器IKAnalyzer4.0
摘要:最近看solr出了4.0ALPHA版本,管理界面比3.x漂亮,而且在和mmseg和lucene的SmartChineseAnalyzer、StandardAnalyzer、CJKAnalyzer比较之后,感觉IKAnalyzer比较好用!在配置IKAnalyzer的时候发现有些接口已经改变了,所以根据启动时出现的错误进行修改,所以有了4.0版本,已经测试可用!如下为IKAnalyzer的新目录结构IKAnalyzer4.0的jar包 ==>下载解压后把IKAnalyzer4.0.jar,IKAnalyzer.cfg,stopword.dic放到solr目录下的lib中编辑solrconf
阅读全文
线程同步
摘要:目录:一、线程同步概述二、线程同步的使用三 、总结一、线程同步概述前面的文章都是讲创建多线程来实现让我们能够更好的响应应用程序,然而当我们创建了多个线程时,就存在多个线程同时访问一个共享的资源的情况,在这种情况下,就需要我们用到线程同步,线程同步可以防止数据(共享资源)的损坏。然而我们在设计应用程序还是要尽量避免使用线程同步, 因为线程同步会产生一些问题:1. 它的使用比较繁琐。因为我们要用额外的代码把多个线程同时访问的数据包围起来,并获取和释放一个线程同步锁,如果我们在一个代码块忘记获取锁,就有可能造成数据损坏。2. 使用线程同步会影响性能,获取和释放一个锁肯定是需要时间的吧,因为我们在决定
阅读全文
CLR及程序集部署
摘要:摘要.NET Framework 到底是什么?公共语言运行时和 .NET Framework 类库分别指的是什么东西?CLR、 CLS、 CTS、FCL等这些又是什么?为什么出现程序集的概念?它与动态链接库的区别是什么?什么是强命名程序集?如何签名及部署程序集?这一节将帮助您学习和了解其中的秘密。第一节 .NET Framework是什么?.NET Framework(.NET框架),是由微软提出并实施的一个集成在Windows中的组件。它基于虚拟机技术实现的平台无关性的软件开发平台,它以语言运行库(CLR)为平台支持多种语言开发,如C#、VB、托管C++等,以强制的类型安全为基础实施运行在托
阅读全文