自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(53)
  • 资源 (10)
  • 收藏
  • 关注

原创 Lucene分布式构想

当数据量越来越大时,就必须要考虑分布式方案了,网上关于c#上的lucene分布式方案目前基本上还没有, 我在分布式索引和检索的设想如下: 索引 类似于数据库的分区表,我们也可建立分区节点,如将ID为1-1000000 放到 节点1 上将1000001-2000000 放到 节点2 上,以至类推可以很容易进行扩展,由主程序根据id往各节点进行写入.如果要均衡的

2010-05-07 09:51:00 1884 2

原创 一些说明

构建了一个VLDB系统, 采用SQLServer2005存储主记录数据,硬盘存储内容数据,Lucene进行检索, 主记录数据目前采用按时间的分区表方案, Lucene目前采用的是按时间进行分离存储,计划采用分布式方案。    

2010-05-07 09:45:00 423

原创 Red5中的调用与回调

在red5中,服务端Application类需要实现IApplication接口,默认的做法是继承ApplicationAdapter,ApplicationAdapter实现了很多接口,它提供一些典型的代码,使我们只需要重写关注的方法, 客户端 -> 服务端调用 客户端由NetConnection的实例发起调用,定义如下:public function call(comm

2009-09-22 19:51:00 846

原创 长城Portal社区开源版发布

长城Portal特点如下:页面自定义页面模块所见即所得调整全静态化支持布局模板支持主题支持内置CMS系统易于二次开发项目地址: http://www.cchensoft.com/opensource/cc-portal/svn:http://code.google.com/p/cc-portal2/

2009-05-11 18:01:00 553

原创 在IIS环境之外运行ASPNET程序

有时候,我们需要在IIS环境之外运行ASPNET程序,如向用户提供ASPNET的程序(别指望用户都安装了IIS),在WinForm程序中提供WebService接口(这种场合比较少,但我恰好遇到了,实际就是在C/S的基础上加入了WebService)。 解决方案很简单,在Visual Studio里自带了一个Web服务器程序,此程序是WebHost.dll的一个UI外壳,有了WebHo

2009-05-04 14:48:00 807 1

转载 由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题

 以前用VC6和VS2003的话, 如果缺少库文件,是会提示缺少“**.dll”,但是用VS2005却没有这样的提示。 自己实验了一下,感觉以下几种解决办法是可行的:方法一:在类似C:/Program Files/Microsoft Visual Studio 8/VC/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT 下找到了下列文件:

2008-12-03 20:00:00 3403

原创 .Net Remoting应用中的回调(callback)

 在c/s应用中,有时需要从服务端回调客户端的程序,在.Net下,通过事件委托机制可以很简单的进行实现, 因为服务端需要调用客户端程序,它必须知道客户端程序的存根(即类定义),但我们应该对程序逻辑实现进行隔离,即服务端不应该包括客户端具体的实现代码,在这个前提下,我们引入了一个ServiceAdapter类,定义如下:    public class Service

2008-11-26 16:14:00 1520 1

原创 开源应用框架 ccWebFx 1.3 发布

在v1.3版本中,我们做了几个很大的调整:1. 组件的配置描述进行了统一    组件统一采用bean描述进行定义;2. 新增了组件依赖注入功能    在配置中可定义依赖组件描述,由系统注入依赖组件; 3. 新增了一个数据访问服务IDataService    可根据需要实现不同的数据访问服务,如ADO.NET,IBatisNet和NHibernate等; 4. 新增了一个注

2008-11-26 15:56:00 609

原创 使用IBatisNet对NText类型的字段插入超长文本

  使用IBatisNet当对NText类型的字段插入超长的文本时,报错误"当前命令发生了严重错误。应放弃任何可能产生的结果"查了一下资料,当使用命名参数式sql语句时,对于NText类型的参数,如指定length,则可避免上面的问题,但IBatisNet的resultMap的property里只有dbType而没有length,不知为何不提供? NHibernate里就有类似length

2008-10-11 22:25:00 1233

原创 ccWorkflow 开源工作流发布

DotNet下的工作流量引擎,基于OSWorkflow 进行重构和扩展,增加了与业务模型交互的接口。下载地址: http://code.google.com/p/cc-workflow/ 后面我将陆续写一些关于此工作流原理和应用的文章。 

2008-10-09 18:17:00 1637 2

原创 NHibernate 2.x应用: 返回DataSet

虽然NHibernate是完全OO的,但我们还是有需要返回DataSet的时候。在ADO.NET里,要返回DataSet需要使用IDbDataAdapter, 那么通过NHibernate返回DataSet的关键就是如何创建合适的IDbDataAdapter实现类。在NHibernate里,由IDriver负责创建Connection和Command,我们可以扩展相应的Driver使其能创

2008-10-08 18:20:00 1862 1

原创 NHiberante源码分析之: 事务

对数据库的操作是少不了事务处理的,事务能保整数据完整性和有效性。 在nh中,使用Transaction对象对.net的事务对象(实现了IDbTransaction接口的对象)进行了包装。在nh中,一个典型的事务处理是这样的(见ISession.cs的注释)ISession sess = factory.OpenSession();Transaction tx;try {   tx = sess.B

2008-10-07 14:17:00 1037

原创 NHibernate 架构UML图

  从图中可以看到,Session和SessionFactory是NHibernate的核心部分。SessionFactory维护到持久机制(数据库)的连接并对它们进行管理,同时还保存着所有持久对象的映射信息。SessionFactory由Configuration.BuildSessionFactory创建,这个对象一般使用Singleton模式。Session用于将对象持久化,支持数据库事务,

2008-10-07 13:56:00 3684

原创 NHibernate应用 many-to-many

在数据库的多对多关系中, 实现方法是通过一个额外的关联表将两个主表关联起来,关联表中只保存两个主表的主健,显然, 主表与关联表是一对多的关系. 这样两个主表就通过这个关联表构成了一个多对多的关系. 典型的例子就是用户和权限了, 每个用户可以有多个权限, 而每个权限也可以分配给多个用户. 通过一个用户权限表就可以实现这样的要求.因为关联表并没有其它任何信息, 所以在NH中它不能算是一个持久对象, 没

2008-10-07 13:55:00 1397

原创 NHibernate应用 one-to-one

nh中的one-to-one(一对一)映射有两种情况, 一种是主键(PrimaryKey)关联, 一种是外健(ForeignKey)关联. 在主键关联的情况下, 显然必须有一个主键是根据别一个主键而来的, nh通过一个特殊的方式来处理这种情况, 要注意的是两个主健名称必须同名.而外健一对一关联, 需要在one-to-one配置中定义一个property-ref属性, 这个配置属性在当前版本的nh中

2008-10-07 13:54:00 2171 1

原创 Log4net 架构UML图

[以log4net-1.2.0-beta8为准]

2008-10-07 13:50:00 2020 1

原创 NHibernate应用 one-to-many

数据库中的主从表就是一对多的关系了,这种关系在按范式设计的数据库中是十分常见的.在nh中,通过one-to-many映射可以十分方便的处理这种关系,包括级联更新,删除等. 下面以一个简单的主从表来说明one-to-many的应用.先来看看Parent类的映射信息:                                 one-to-many关系必须通过一个nh的集合类型来定义,

2008-10-07 13:44:00 1529

原创 NHibernate dotNet2.0的一个web demo

三层结构设计, web层使用了三种方式进行数据展示,1. GridView2. Repeater + DataBinder3. Repeater + ItemDataBound事件 下载地址: http://www.cchensoft.com/down/NHibernateDemo2005v0.1.zip 

2008-09-11 11:01:00 1488 2

原创 IronPython脚本程序与宿主语言的交互

随着web2.0和敏捷开发方法论的兴起,动态语言的灵活高效的特性成为了它被更多项目选择和使用的理由。一些大型网站已开始使用动态语言来实现。微软更是不甘落后,建立了dlr(动态语言运行时)来吸引动态语言爱好者在其上实现动态语言。ironpython就是其主要成员之一。// 定义一个业务对象class businessobject {   private string oneproperty;  

2008-09-05 17:41:00 662

原创 将ibatis.net中定义的statement转换为实际的sql语句

  有时我们需要查看ibatisnet中statement生成的实际sql语句,可以通过下面的方式取得:public static string GetSql(string statementName, object paramObject){       ISqlMapper mapper = Mapper.Instance();       IMappedStatement

2008-09-04 15:05:00 1016 1

原创 IBatis/IBatis.Net中的数据加密

 作为一个o/r mapping组件,IBatis通过反射(Reflect)完成对象的持久化,如果要对数据进行加密,那么切入点就在reflect上,思路就是当IBatis通过Reflect给对象属性赋值时,我们解密数据,反之加密数据。那么如何切入了?先跟踪源代码看看 :)如何跟踪源代码这里就不繁述了,这里列出几个重要的对象/接口:1. DotNetObjectDataExcha

2008-09-04 14:56:00 1255

原创 开源Web框架cc-WebFx发布

 cc-WebFx是一个简单的AOP框架,它的目标就是在尽量不改变原有系统结构的情况下,为应用程序加入统一的安全,日志,事务等方面的处理功能,为实现这一目标,Framework采用动态代理和自定义Attribute来设计。通过Proxy机制,可以在正常处理流程前进行拦截,并加入相应的功能代码,在cc-WebFx中,定义了两个拦截点,一个是在执行WebForm请求处,另一个是在调用业务逻辑功

2008-03-05 10:17:00 986

原创 IBatisNet for dotNet2.0的一个web demo

三层结构设计,web层使用了三种方式进行数据展示,1. GridView2. Repeater + DataBinder3. Repeater + ItemDataBound事件下载地址: http://www.cchensoft.com/down/IBatisDemo2005v0.1.zip 

2007-08-16 18:40:00 1830 1

原创 springnet实例框架0.1版发布

 springnet实例框架0.1版发布,这是一个基于springnet的文章管理案例,同时征集实例框架的最终名称!已完成功能:1. 集成spring.data.nhibernate;2. 集成spring mvc;3. skin支持;4. usercontrol属性配置化;待完成功能:1. 集成ibatisnet;2. 页面usercontrol动态设置;如想加入开发组,请加入q

2006-12-15 12:25:00 1330

原创 Lucene中文分词组件

LuceneNet的中文分词组件 示例代码如下: public static void Main(string[] args) { StreamReader reader = new StreamReader( "E://projects//Segment//test//a.txt", Encoding.GetEncodi

2006-11-21 17:28:00 1408

原创 FlexWiki中文支持

Title Summary FlexWiki的Topic采用Pascal单词形式,对中文的Topic无法自动进行处理,我对其进行了一些扩展以支持中文主题,一. 在什么地方切入到FlexWiki的格式化处理中?FlexWiki的设计并没有提供很好的扩展点,为了避免对原有的格式处理造成影响,采用在其对Topic内容格式化完成后进行切入, string formattedBod

2006-11-17 12:46:00 2785 1

原创 使用Gentle做数据层的业务层源码

一个小型web网站的业务层源码,使用Gentle(一个开源的O/R Mapping框架)做为数据持久层。这个业务层使用VB.net编写,涉及的业务对象比较少,功能也很简单,主要是给想使用O/R Mappingg进行开发的朋友一些参考。下载(367K)

2004-10-21 16:53:00 2168 3

原创 Gentle架构UML图

本文已转至如下地址:http://www.narchitecture.net/Article/ArticleDetails.aspx?id=wkoudu

2004-10-18 11:22:00 2007 1

原创 NHibernate源码分析之三(续):数据持久化

当持久化对象时,显然必须存在把记录的值赋值到对象属性和取得对象属性的值用于持久化操作,对于更新操作,还需要检查对象的值是否已发生变化,即是否为Dirty,这些操作都是由对象的持久化类来完成的。有关持久化类可参考《会话和持久化操作》一文。下面对NH的源码进行分析,以了解NH中数据加载和更新的过程。一、持久对象加载先来想像一下对象的加载过程(Load).1. 根据对象Id从数据库取得记录;2. 使用默

2004-10-18 11:18:00 3465

原创 nhibernate源码分析之八: 解析HQL

 本文将对HQL查询文本的解析过程进行分析,这个可以说是NH中比较复杂的一块了(个人认为),涉及到的类也比较多。建议阅读之前先深呼吸十下,看完之后脑袋成浆糊可不要找我哟。:-)在HQL数据加载一文中,我们有提到QueryTranslator的创建过程,代码如下://*** SessionFactoryImpl.cs 429行 *** private QueryTranslator GetQ

2004-09-25 12:44:00 2881 1

原创 nhibernate源码分析之七: HQL数据加载

 NH中,HQL是一个十分强大的面向对象的查询语言,简单的说,就是不需要使用实际的表名和列名来查询数据,而改用类名和属性。有两种方式来执行HQL数据加载,一种是直接使用ISession的Find方法,另一种是使用IQuery接口。IQuery接口提供了一些额外的设置,最重要的就是分页了,这个和ICriteria差不多,另外一些就是设置参数的值了。IQuery最终还是会调用ISession的

2004-09-23 17:08:00 2848 1

原创 nhibernate源码分析之六: Criteria数据加载

 ICriteria是使用Expression进行数据加载的接口, 提供了设置表达式(Expression), 排序方式(Order), 分页记录等操作.它使用一种类似于SQL语句where表达表的方式来加载满足条件的数据.下面以一个查询Username为billy, Password为test的用户为例来分析nh中Criteria数据加载是怎样工作的.查询代码如下:Expre

2004-09-22 21:17:00 1894

原创 Aspect#的动态截入

代理对象是通过以下代码来进行动态戴入.switch (handlerField.Name) { case mixinHandlerFieldName:     {        ilGenerator.Emit(OpCodes.Callvirt, typeof(IMixinInvocationHandler).GetMethod("Invoke") );        break;    } 

2004-09-15 12:51:00 1601

原创 Aspect#应用 - 事务处理

下面以删除产品及其报价做为例子来说明AOP应用中的事务处理, 因数据库访问使用NHibernate, 所以使用NH中的事务.思路如下:在TransactionInterceptor(事务拦截器)中启动事务, 然后执行实现方法, 如果异常就回滚事务.事务拦截器TransactionInterceptor中的Invoke方法代码如下:public class TransactionInterc

2004-09-15 12:50:00 1832

原创 Aspect#应用 - 权限验证

下面以删除产品做为例子来说明Aspect#应用中的权限验证, 此操作请求ProductAccess.Delete权限.思路如下:因为需要传送一些信息到拦截器中, 所以我使用自定义权限属性来解决. 然后在拦截器的方法中调用自定义权限属性的验证方法.自定义权限属性public enum ProductAccess {   Create = 1010,   Update = 1020,   Delete

2004-09-15 12:48:00 1851 1

原创 Aspect#中的代理对象

代理对象是AOP动态截入的关键部分. 下面来分析一下代理对象是如何定义的.1. CreateProxyTypeinternal static Type CreateProxyType(Type[] interfaces, IMixin[] mixins)  {     //...     AssemblyName assemblyName = new AssemblyName();     a

2004-09-07 12:07:00 1810

原创 AspectSharp例子分析

AspectSharp自带的例子提供了一个简单的logger拦截器和一个持久化混合器. 下面来看看它的工作原理.1. 类和接口说明:IMessage: Message对象接口, (要实现aspect的对象必须声明接口?)MessageImpl: 实现IMessage接口;IMessagePersistence: Message对象持久化接口;LoggerInterceptor: 日志拦截器;

2004-09-07 12:06:00 3323

原创 在nhibernate中执行SQL语句和存储过程

在有些时候,可能需要直接执行SQL语句、存储过程等,但nhibernate并没有提供一种让我们执行SQL语句的方法,不过可以通过一些间接的方法来实现。1. IDriver接口IDriver接口就是数据访问的驱动器,对于不同的数据提供者(SqlClient, OleDb等)就有不同的驱动器,与SqlClient对应的是SqlClientDriver, 而与OleDb对应的就是OleDbDriver。

2004-08-12 19:45:00 5175 10

原创 nhibernate源码分析之五: 对象标识

对象标识相当于数据表中的主键,在持久化中起着十分重要的作用,nhibernate通过对象标识来辨别两个持久对象是否相等。在映射文件中,通过id属性来定义对象标识,内容如下:   其中unsaved-value属性用来指明对象未持久化时的值,如果此值与未持久化的对象标识值不符,将无法save对象,generator用于指定标识对象的类型,常用的有identity, assigned等。标识对象为实现

2004-08-08 23:38:00 3446 2

原创 nhibernate源码分析之四 持久化操作与SQL语句

持久化操作由与持久对象关联的持久化类来完成,持久化类是实现IClassPersister接口的类,每个持久对象都有一个关联的持久化类,这些持久化类存储在会话工厂的classPersisters集合中,nhibernate允许用户通过自定义的持久化类来持久化数据。IClassPersister接口定义了基本的CRUD操作,在nhibernate中由AbstractEntityPersister类实现

2004-08-06 14:57:00 2335

Agile Java 测试驱动开发的编程技术

本书是写给每一位程序员,甚至包括对Java、面向对象开发或敏捷方法几乎没有经验的程序的,他向我们展示如何把口头需求转变成实际的,然后如何利用这些测试创建可靠的、高性能的Java代码,从而解决实际问题。 本书不仅是教授Java语言的核心特性,而且提供这些特性的测试代码例子。以TDD为中心的方法不仅带来更好的代码,而且提供有效的反馈,可以帮助你更快地掌握Java。较之传统的教学技巧,TDD方法是一个划时代的开始。

2018-09-12

敏捷软件开发-原则、模式与实践

在本书中,享誉全球的软件开发专家和软件工程大师Robert C. Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导们所面临的最棘手的问题。这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。 讲述在预算和时间要求下,软件开发人员和项目经理如何使用敏捷开发完成项目; 使用真实案例讲解如何用极限编程来设计、测试、重构和结对编程; 包含了极具价值的可多次使用的C++和Java源代码; 重点讲述了如何使用UML和设计模式解决面向客户系统的问题。

2018-09-12

敏捷软件开发-原则、模式与实践(C#版)

敏捷开发就是指能够在需求迅速变化的情况下快速开发软件。为了达到这种敏捷性,我们需要使用一些实践提供必要的准则和反馈,需要使用一些设计原则使我们的软件保持灵活且可维护,还需要理解一些被证明在特写问题中可以权衡这些原则的设计模式。本书试图将所有这3个概念融汇起来,使他们成为有机的整体。 本书首先描述了这些原则、模式以及实践,然后通过许多案例来演示如何应用他们。更重要的是,案例给出的并不是最终的结果,而是设计的过程。你会看到设计者犯错误;你会看到他们如何找到错误并最终改正;你会看到他们对问题苦思冥想,而对一些难以权衡的含糊问题的疑惑与探索。是的,你会看到设计的真正历程。

2018-09-12

持续集成—软件质量改进和风险降低之道

本书向我们介绍了一种增加项目可见性、降低项目失败风险的有效实践经验。许多软件开发的资深人士认定,这种方陆非常不错。我们不必把宝全部押在最后那一次 “大爆炸”式的集成上,而是采用”早集成、常集成”的策略。这样做可以减少缺陷引人和缺陷发现之间的时间,提高开发效率,降低风险。您对项目报告中提到的百分比将有更大的信心,而且任何时候,您都可以得到一个可以部署的软件。虽然功能可能还没有全部实现,但它是可用的!

2018-09-11

用户故事与敏捷方法

本书介绍了如何编写理想的用户故事,造成用户故事不理想的原因有哪些,如何在无法与用户交流的情况下有效地搜集用户故事,如何对已经写好的用户故事进行整理,排列优先级及在此基础上进行计划,管理和测试。

2018-09-09

敏捷软件测试 - 测试人员与敏捷团队的实践指南

本书定义了敏捷测试的概念,并通过来自现实敏捷团队的示例阐述测试人员的职责。他们讲述如何利用敏捷测试象限来识别需要哪些测试,谁来做,以及哪些工具有帮助。本书从测试人员的角度记录了敏捷软件开发迭代的一个完整周期,并解释了敏捷测试的七大关键成功要素。

2018-09-09

Scrum敏捷软件开发

这本书为实用主义者而生。写给那些已经开始尝试S且可能已经遇到一些问题的人,以及那些虽然没有开始但已经按捺不住跃跃欲试的人。这些人需要的已经不是关于如何画一张燃尽图,或者是在每日站会上如何经出三个问题的答案等入门介绍。他们需要的是一些更加高阶的课题 -- 比如如何在企业或者项目中引入Sprint,并进行推广,如何帮助人们在项目初期放弃大的设计,如何在每个Scrum交付可以工作的软件,经理应该做什么,等等。如果这些课题你似曾相识,本书正好可以满足你的需要!

2018-09-09

Storm技术内幕与大数据实践

本书介绍了Storm实时平台的总体架构,剖析相关源码并配有顺序图,分享了监控Storm的常用方法、应用小技巧和性能优化经验。

2018-05-27

第一本Docker书(带目录)

介绍了Docker的安装、部署、管理和扩展,涉及从测试到生产的整个开发生命周期,是小白用户的首选入门书籍。

2018-05-27

Spark最佳实践(带目录)

Spark实战指南,介绍Spark的部署、工作机制、内核、Spark SQL、Streaming、GraphX、 MLib,以及一些在应用过程中的问题。

2018-05-27

空空如也

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

TA关注的人

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