Fork me on GitHub

2013年7月4日

摘要: 分享.net常见的内存泄露及解决方法关于内存泄漏的问题,之前也为大家介绍过,比如:《C++中内存泄漏的检测方法介绍》,是关于C++内存泄漏的。今天为大家介绍的是关于.NET内存泄漏的问题。 前段时间帮项目组内做了一次内存优化,产品是使用c#开发的winForm程序,一直以为.net提供了垃圾收集机制,开发的时候也没怎么注意内存的释放,导致最后的产品做出来之后,运行一个多小时就内存直接崩溃了,看来.net的垃圾收集还是得需要开发者加以控制,也不是万能的啊。 下面将对垃圾收集做以简介,然后描述一下我在内存优化过程中常见的内存泄露及解决方法。 托管堆的内存分配(下文中的托管堆指的是GC堆) ... 阅读全文
posted @ 2013-07-04 16:50 HackerVirus 阅读(269) 评论(0) 推荐(0)
摘要: git的初步使用---本地代码库的使用和提交git是一个好东西,但对于新手来说,这个工具并不好使用,因为它里面涉及到很多东西,而这些东西新手一时间是无法理解的。不幸的是,本人就是新手一枚,所以,这里并不会讲太多有关于git的原理,什么样的阶段就该做什么样的事情,先从熟悉工具的常用用法开始。使用git,首先必须是在github上创建一个repository。我们可以在github上根据教程创建一个,这里不讲步骤,上面讲得非常清楚。我先在github上创建一个远程库"Pratice"。由于我之前在github上已经有一个远程库了,为了防止提交文件时产生混乱,我需要为这个新的re 阅读全文
posted @ 2013-07-04 13:41 HackerVirus 阅读(171) 评论(0) 推荐(0)
摘要: 使用WCF Data Service 创建OData服务在上一章中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源。下面来介绍如何创建一个 OData 服务。在这篇文章中,主要说明在.NET的环境下,如何使用 WCF Data Service 来创建OData服务。当然,对于 JAVA 或者其它平台,也是可以创建 OData 服务的。甚至是数据库,都可以提供 OData 服务。WCF Data Service 是需要 ORM 的支持的,当然,主流的 ORM 都已经支持 WCF Data Service 了,包括(但不限于) Entity Framework、Linq to 阅读全文
posted @ 2013-07-04 13:37 HackerVirus 阅读(259) 评论(0) 推荐(0)
摘要: mmap学习内存页:Linux是以页为单位来管理物理内存的,一页大小一般等于4096字节。页容量越大,系统中可能存在的内存碎片就越多。mmap将一个磁盘上的文件或者对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。比如像管道和消息队列,需要在内核和用户空间进行四次的数据拷贝。mmap的系统操作有两个:?12345#incl 阅读全文
posted @ 2013-07-04 13:32 HackerVirus 阅读(168) 评论(0) 推荐(0)
摘要: RemObjectsRemObjects提示:我们相信本文是正确的,但我们不做任何保证.在此感谢Henrick 写的文章,很高兴在此发表.介绍RemObjects是功能强大可扩展的远程框架;但是当考虑远程对象的allocation(内存分配)/deallocation(内存释放)/serialization(序列化)问题时让人摸不到边际. 本文将讨论RO内核澄清这些问题.Delphi开发者可以很幸运的使用RemObjects/DataAbstract创建n层服务. 使用RO,我们通过在Service Builder工具重创建服务定义库以导向的架构设计我们服务.其中之一就是我们可以自定义结构体类 阅读全文
posted @ 2013-07-04 09:52 HackerVirus 阅读(1516) 评论(0) 推荐(0)
摘要: Winform 单实例运行前言 前两天在博客园看到《如何防止程序多次运行》,文章写的很好,最后还留下一个问题给我们思考。关于Winform的防止多次运行,曾经也想研究过,但是后来工作上没有需要,于是就放弃了研究,这两天找资料,将其封装了一下,最后实现的效果为:Winform程序运行后,再次点击exe,会将Winform显示出去,若该窗体被其他窗体遮挡,则将其前置,若该窗体被最小化至托盘,将其显示并前置。原理 使用命名事件,进程在此启动时,前一个进程会收到通知,并做出回应。using System;using System.Collections.Generic;using System... 阅读全文
posted @ 2013-07-04 09:45 HackerVirus 阅读(428) 评论(0) 推荐(0)
摘要: 阅读开发高手的代码 分享二则.NET开发框架的技巧最近阅读了一套ERP开发框架的源代码,对开发框架的理解又深入一层,也为其将知识点运用的如此灵活而自叹不如。郎咸平教授说,国际金融炒家对国际金融知识的理解与运用程序,是不可想像的。1997年的亚洲金融危机,国际金融炒家对香港的攻击是卖空港币,但是最后却反应到股票市场,惨败。同理,开发高手将系统的知识点,运用的相当灵活,你完全没有想过可以按这种方式做出程序,灵活简便,维护方便。1 .NET组件自动重命名在Windows Forms开发,经常遇到一件头疼的事情是一个Form界面有很多控件,而这些控件的名称(Name)很难维持命名统一。比如,开发规范里 阅读全文
posted @ 2013-07-04 09:44 HackerVirus 阅读(233) 评论(0) 推荐(0)
摘要: Guava学习笔记:Immutable(不可变)集合不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象 2.线程安全的:immutable对象在多线程下安全,没有竞态条件 3.不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis) 4.可以被使用为一个常量,并且期望在未来也是保持不变的 ... 阅读全文
posted @ 2013-07-04 09:37 HackerVirus 阅读(227) 评论(0) 推荐(0)
摘要: 迷你MVVM框架 avalonjs 0.82发布本版本最大的改进是启用全新的parser。parser是用于干什么的?在视图中,我们通过绑定属性实现双向绑定,比如ms-text="firstName", ms-html="sex + '士'", ms-visible="Math.abs(toggle + 2000) >= 20", 我们需要将它们转换为求值函数。我们通过ms-controller="vm"来绑定ViewModel,比如vm = { firstName: '司徒' 阅读全文
posted @ 2013-07-04 09:36 HackerVirus 阅读(203) 评论(0) 推荐(0)
摘要: 看到他我一下子就悟了-- 反射(1)反射(reflection)是一种允许用户获得类型信息的C#特性。术语“反射”源自于它的工作方式:Type对象映射它所代表的底层对象。对Type对象进行查询可以获得(反射)与类型相关的信息。反射是一种功能强大的机制,它允许学习和使用只在运行时才能知道的类型功能。 这些是官方定义,其实说白了,反射就是能知道我们未知类型的类型信息这么一个东西.没什么神秘可讲!反射的核心是System.Type。System.Type包含了很多属性和方法,使用这些属性和方法可以在运行时得到类型信息。一旦得到类型信息,就可以调用其构造函数、方法和属性。因此,反射允许使用编译时不可. 阅读全文
posted @ 2013-07-04 09:33 HackerVirus 阅读(186) 评论(0) 推荐(0)