摘要:简介序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)--->字节流--->字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。在面向对象的环境中实现序列化机制时,必须在易用性和灵活性之间进行一些权衡。只要您对此过程有足够的控制能力,就可以使该过程在很大程度上自动进行。例如,简单的二进制序列化不能满足需要,或者,由于特定原因需要确定类中那些字段需要序列化。以下各部分将探讨 .NET 框架提供的可靠的序列化机制,并着重介绍使您可以根据需要自定义序列化过程的一些重要功能。持久存储我们经常需 阅读全文
C#实现Base64编码与解码及编码名称和代码页(Encoding.GetEncoding)
2011-09-15 10:29 by elivsit, 1294 阅读, 0 推荐, 收藏, 编辑
摘要:一、编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 “=”。例:将对ABC进行BASE64编码:1、首先取ABC对应的ASCII码值。A(65)B(66)C(67);2、再取二进制值A(01000001 阅读全文
代码自动生成工具MyGeneration之一,二,三
2011-09-14 14:36 by elivsit, 511 阅读, 0 推荐, 收藏, 编辑
摘要:发现了很多.Net的ORM工具,不过都有缺点,就是代码得依赖于那些ORM工具,我希望能够让机器按我的要求生成我自己的代码,这样就更加灵活了。 于是乎,发现了CodeSmith和MyGeneration,CodeSmith是 网上传的.NET 程序员十种必备工具之一,我们写代码时,经常需要重复完成某些特定的任务,例如编写数据访问代码或者生成自定义集合。我们可以用CodeSmith编写模板自动完成这些任务,从而不仅提高工作效率,而且能够自动完成那些最为乏味的任务。可惜,CodeSmith是需要注册的,试用版只能用15天。而MyGeneration基本上和CodeSmith的功能差不多哦,但是他是开 阅读全文
代码生成器MyGeneration
2011-09-13 14:59 by elivsit, 592 阅读, 0 推荐, 收藏, 编辑
摘要:MyGeneration是一个功能很强大的代码生成工具。通过编写包含各种类型脚本(C#,VB.Net,JScript,VBScript)的模板,通过数据库的表内容,生成你需要的各种代码。你可以用它来生成ORM的实体类,存储过程,SQL语句等等。我甚至用它来生成Asp.Net的页面(呵呵,我很懒)。MyGeneration提供了强大的在线模版库,你可以通过访问其网站或者使用Template Browser中的在线模版功能按钮寻找你需要的模版。当然你也可以根据需要自己写模板。我的NHibernate模板已经公布,并写了个随笔专门介绍它。详见“用我的MyGeneration模板生成NHibernat 阅读全文
什么是iBATIS
2011-09-13 14:11 by elivsit, 391 阅读, 0 推荐, 收藏, 编辑
摘要:iBATIS是一个混合式的解决方案(hybrid solution),借鉴了多种操作关系数据库的方法的理念。那么iBATIS到底是什么呢?这一章就来回答这个问题。iBATIS是一种data mapper。Martin Fowler在他的《Patterns of Enterprise Application Architecture》一书中是这样描述Data Mapper的:一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身相独立。.注:Mapper是在两个独立对象间建立通信关系的一种对象。Martin很好地区分了数据映射(Data Mapping)和元数据映射(Metadata Ma 阅读全文
关于BinaryFormatter
2011-09-05 10:13 by elivsit, 259 阅读, 0 推荐, 收藏, 编辑
摘要:(一)有时候需要将C#中某一个结构很复杂的类的对象存储起来,或者通过网路传输到远程的客户端程序中去, 这时候用文件方式或者数据库方式存储或者传送就比较麻烦了,这个时候,最好的办法就是使用串行和解串(Serialization & Deserialization)..NET中串行有三种,BinaryFormatter, SoapFormatter和XmlSerializer.其中BinaryFormattter最简单,它是直接用二进制方式把对象(Object)进行串行或反串,他的优点是速度快,可以串行private或者protected的member, 在不同版本的。NET中都兼容,可以 阅读全文
.net中对象序列化技术浅谈
2011-09-05 09:52 by elivsit, 332 阅读, 0 推荐, 收藏, 编辑
摘要:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。反之,反序列化根据流重新构造对象。此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件中“恢复”对象到序列化之前的状态。在.net中有提供了几种序列化的方式:二进制序列化XML序列化SOAP序列化二进制序列化所谓二进制序列化,指的是对象序列化之后是二进制形式的。二进制序列化是通过BinaryFormatter类来实现的,这个类位于System. 阅读全文
大型高性能网站的十项规则
2011-06-20 13:50 by elivsit, 175 阅读, 0 推荐, 收藏, 编辑
摘要:在我们公司ChinaNetCloud,见过多种不同类型的网站和系统,有好也有差。其中有些系统拥有良好的服务器/网络架构,并且进行了合理的调整和监控;然而一般的系统都会有安全和性能上的问题,不能良好运行,也无法变得更流行。 在中国, 开源的LAMP栈是最流行的网络架构,它使用PHP开发,运行在Apache服务器上,以MySQL作为数据库,所有这些都运行在Linux上。它是个可靠的平台,运行良好,是现在全球最流行的Internet系统架构。然而,我们很难对其规模进行正确的扩展并保持安全性,因为每个应用层都有其自身的问题、缺陷和最佳实践。我们的工作就是帮助企业用最低的操作成本来创建并运行高性能的、. 阅读全文
看得见的互联网产品节奏
2011-06-20 13:46 by elivsit, 191 阅读, 0 推荐, 收藏, 编辑
摘要:产品节奏关我何事?互联网的产品节奏受哪些因素影响,如何应对?产品节奏能看到么?带着这几个疑问我们开始今天的讨论。 一个互联网产品的团队往往包括产品经理、项目经理、运营经理、设计师、程序员、测试员等,如果我们把互联网产品当做一个大乐章,那么这些角色就是演奏者,产品的节奏是大家一起演绎的,只有每个角色都了解整体的节奏,才能做出来有市场共鸣的产品。 那么互联网产品的整体节奏是如何的呢? 百科上说:节奏是音乐中交替出现的有规律的强弱、长短之现象。 强弱和长短,都是相对立的。正是因为这些相互对立牵制的因素有规律的串在一起,才出来了优美的乐章。互联网产品也是如此,会受到很多因素的影响,有的牵制、有的推动. 阅读全文
做产品,先找准产品的定位点再开工
2011-06-20 13:46 by elivsit, 167 阅读, 0 推荐, 收藏, 编辑
摘要:做产品前,需要先找准产品的定位。这是一句绝对正确的废话。不过我还是想要再写这篇文章,再提醒下自己。因为这个问题,基本上我应该已经算是犯了两次了。 一次是在我刚开始做产品设计1年左右的时候,山寨出生,没有人教,一边听老板的高谈阔论,一边疯狂的订阅产品相关Blog,体验一个又一个的网站。那个时候,算是刚入门。同时在小公司负责一个新的产品。 那个时候做产品关注更多的是交互效果,关注界面,关注产品功能本身对用户产生的吸引力。那个时候每天不断的去看同类网站,看他们新的模块,新的设计,只要觉得有趣就想搬到自己的网站中来。年轻,有激情,也不觉得有什么问题,一群人快快乐乐风风火火的干了大半年。结局当然并不好, 阅读全文
写在创业的路上:如何从无到有的打造一个产品
2011-06-20 13:44 by elivsit, 213 阅读, 0 推荐, 收藏, 编辑
摘要:转载:在如何把控产品 — 产品管理全流程解析一文中,和大家分享了“我心目中一个产品项目标准的执行套路与方法”,但是依据个人的经验发现:宏观的套路与道理,路人皆知,区别能力与决定成败的往往在于细节的“度”以及全局上的“节奏”。“从无到有建造一个产品”和“从有到优打磨一个产品”,虽然套路是一样的,但是在宏观执行节奏的把控上却是完全不同的。如果单纯的按上述方法去开发一个全新的方向或者产品,很可能出现以下问题: 不是每个公司或者项目能够非常好的进行需求采集与立项验证。 如果方向选择有错,要到后期才能发现,此时已为时晚矣。 产品在团队内部反复打磨,迟迟不能投放市场,甚至在错误的方向上越陷越深。 产品没. 阅读全文
创新工场CE0李开复:互联网创业黄金时代来临
2011-06-20 11:15 by elivsit, 180 阅读, 0 推荐, 收藏, 编辑
摘要:文摘: 另外是跨平台,虽然每个平台的运营者都希望他的开发者忠诚于他的平台,最好别的平台都不要有,但是实际上开发者一定会最喜欢某一个平台,但是他看到别的平台有赚钱的机会,还是要过去,所以这个时候平台有一个选择,他是要立起很高的壁垒,让人不能过去。在这些领域里,我相信在不影响商业运作,不带来灾难性后果,不影响用户体验的这几个前提之下,一个平台它越做得开放,应该对他和他的合作伙伴都是越好。 还有什么机会呢?还有两个巨大的机会,第一个机会是社交,这里举的一个例子大家都非常熟悉,我们都知道世界第一游戏,最赚钱的游戏就是《魔兽世界》,他六年在全世界达到了1200万用户。最近新推出的手机游戏《愤怒的小鸟》. 阅读全文
.Net反编译工具Reflector结合FileDisassembler插件
2011-06-16 11:32 by elivsit, 618 阅读, 0 推荐, 收藏, 编辑
摘要:早就听说Reflector这个强大的类库分析与反编译工具,不过一直没有很好的利用起来。最近使用Reflector解决了一个实际开发问题,现将其总结出来。需求导入:项目是一个GIS项目,在项目中使用到了ESRI公司的Application Development Framework中的一个WebControls控件,此控件的功能过于复杂,并且引用到了ArcGIS Server的很多COM组件。由于项目根本就没有使用ADF的任何服务器技术,但是也不得不跟着引用一些COM组件,更麻烦的是还得安装ADF(此组件可是有将近200M的庞然大物)。项目经理需要我解决这种问题并且必须尽快解决,我当时也相应的考 阅读全文
初识 WPF/Silverlight MVVM模式
2011-06-03 17:53 by elivsit, 1561 阅读, 1 推荐, 收藏, 编辑
摘要:表现模式 (Presentation patterns) 背景与用户界面 (UI) 相关的最大的问题就是大量的凌乱的代码,主要是由这两个因素造成的,首先是用户界面包含负责的逻辑用于维护界面相关对象,其次也包含了应用程序状态的维护。表现模式 (Presentation patterns) 就是围绕如何移除用户界面的复杂性,让界面更加简洁和可管理而产生的,下图就是常见表现模式的种类与分类:用户界面的3大问题:状态 (State) , 逻辑 (Logic) ,同步 (Synchronization)状态 (State) :状态是用户界面最关心的问题之一。状态是用户界面数据的当前快照,在 Web 应. 阅读全文
C#开源资源大汇总
2011-05-17 17:56 by elivsit, 328 阅读, 0 推荐, 收藏, 编辑
摘要:一、AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率。 NKalore是一款编程语言,它扩展了C#允许在.net平台使用AOP。NKalore的语法简单、直观,它的编译器是基于Mono C#编译器(MCS)。NKalore目前只能在命令行或#Develop内部使用。NKalore兼容公共语言规范CLS(Common Language Specification),它可以在任何.NET开发环境中使用 阅读全文