摘要: 使用Web Service 发送邮件,支持编辑邮件模板,使用wse多线程上传附件及发邮件(带附件)以及在服务器端自动发邮件(附源码)。 阅读全文
posted @ 2008-07-12 08:46 TG.Yang's IT Space 阅读(1588) 评论(6) 编辑
摘要: 不知道国内Community Server的资源这么少,找了很久才找到以下资源,现分享阅读全文
posted @ 2008-03-28 17:52 TG.Yang's IT Space 阅读(145) 评论(2) 编辑

1、智能提示工具

 image

现在人是越来越懒,需记忆的东西越少越好,在SQL SERVER中编写SQL不是很方便,没有像VS一样的智能提示;

SqlPrompt 是 Red-Gate 旗下的一款 SQL SERVER 辅助软件,为 SQL SERVER 的查询分析器 提供智能提示的功能,使得查询分析器像VS的IDE一样方便;

同时提供SQL语句的格式化和美化工作,是款非常不错的软件,对于SQL SERVER 2000的用户是非常值得推荐的;

对于SQL2000以及SQL 2005适用,SQL 2008没具体试过.

附破解方法:

crack dll:RedGate.Licensing.Client.dll

禁止对其进行验证,方法为:cd <所在目录>
sn -Vr RedGate.Licensing.Client.dll

image

2、数据库比对工具

2.1 运行程序后首先设置源数据库以及目标数据库,SQL Delta支持MS SQL 7/2000/2005

image

2.2 设置需要比较的项目

image

2.3数据库结构比较

image

Object Filters用来筛选显示的项目

Comparison Filters用来筛选比较状态

Select用来选择需要更新的项目,全选或者全否

Refresh用来刷新数据库结构

Sync用来更新选择的项目

2.4 更新数据库结构

image

点击Sync开始更新数据库,左侧为选择的项目,右侧为更新执行的SQl,点击Run进行数据库更新

2.5 生成相应报表

image

附最新版V4.2 SN  如下: 

Serial: QkoE6kVRmvaHuQgbV/vFIZzIIhoIx80=

posted @ 2009-10-25 21:54 TG.Yang's IT Space 阅读(115) 评论(0) 编辑

注:如类有共有的构造函数而且没有使用Dependency特性,可以在不需要注册映射关系的前提下,使用容器生成实例

1、获取默认映射

IMyService result = myContainer.Resolve<IMyService>();

2、获取命名映射

IMyService result = myContainer.Resolve<IMyService>("Data");

3、获取注册的所有对象

IEnumerable<IMyObject> objects = myContainer.ResolveAll<IMyObject>();

如果没有命名映射将返回Null

  foreach (IMyObject foundObject in objects) {

// convert the object reference to the "real" type

MyRealObject theObject = foundObject as MyRealObject;

if (null != theObject)

// work with the object

{

         Console.WriteLine(theObject.SomeProperty);

}

}

posted @ 2009-05-26 11:00 TG.Yang's IT Space 阅读(45) 评论(0) 编辑

1.初始化容器,注册

1.1使用XML格式的配置文件,具体参考

http://msdn.microsoft.com/en-us/library/dd203230.aspx

1.2使用UnityContainerll类的RegisterType方法和RegisterInstance方法

1.3 使用容器配置API,踢狗自定义配置

IUnityContainer myContainer = new UnityContainer();

IUnityContainer childCtr = myContainer.CreateChildContainer();

//默认映射

myContainer.RegisterType<IMyService, CustomerService>();

//命名映射

myContainer.RegisterType<IMyService, CustomerService>("Customers");

2.实例生命周期

默认通过容器返回的对象只有一个短暂的生命周期,容器不会存储其引用,每回通过Resolve返回的都是一个新的实例。

通过生命周期管理器管理其生命周期

//类注册为单例

myContainer.RegisterType<IMyService, CustomerService>(new ContainerControlledLifetimeManager());

 

myContainer.RegisterType<CustomerService>(new ContainerControlledLifetimeManager());

//已存在对象注册为单例

myContainer.RegisterInstance<IMyService>(myEmailService);

注意:注册已存在的对象,不会发生注入,可以通过BuildUp方法强制接口注入和属性注入

使用ExternallyControlledLifetimeManager进行扩展,注册时出入ExternallyControlledLifetimeManager,容器只会保留一个弱引用,可以通过代码去维持对象或者释放对象

注册泛型对象

三种生命周期管理器

1.ContainerControlledLifetimeManager ,RegisterInstance方法的默认管理器

2.ExternallyControlledLifetimeManager

3.PerThreadLifetimeManager

容器层次

容器注销时会注销其所包含的所有的实例

3、Fluent Interface 方法链编程

AddExtension()

Configure

posted @ 2009-05-26 11:00 TG.Yang's IT Space 阅读(162) 评论(0) 编辑

控制反转

依赖注入方式 DI Types(Dependency injection)

接口注入

     在接口中定义需要注入的信息。

    首先定义一个接口,组件的注入将通过这个接口进行,该接口应由组件提供者提

供,任何想使用该组件的类都必须实现这个接口。

    public interface ILog

   {

void Log(string message);

   }

   public interface ILogInject

  {

    void InjectLog(ILog log);

   }

   public class client:ILogInject

  {

  }

  

抽象工厂模式

将对象间的依赖关系转移到接口上,在调用时由容器来组装

构造函数注入

根据构造函数的类型调用Create方法建立实体对象,然后将对象传给构造函数

降低构造函数与实体对象之间的关联性

属性注入

与构造函数注入基本类似

Unity特点:

1.支持自定义容器

2.对要注入的类型没限制,除了属性注入和方法注入需要【Dependency】特性标注,对类声明没特别要求

3.支持容器层次结构

4.支持配置文件

什么时候使用

1.类或者对象依赖与别的类或者对象

2.依赖关系比较复杂或者需要进一步提前

3.想利用DI

4.想管理对象实例生命周期

5.希望在运行时改变依赖关系

6.希望在Web 应用程序回复时可以缓存或者持久化依赖关系

posted @ 2009-05-26 10:59 TG.Yang's IT Space 阅读(101) 评论(0) 编辑
摘要: 1.文本框焦点问题onBlur:当失去输入焦点后产生该事件onFocus:当输入获得焦点后,产生该文件Onchange:当文字值改变时,产生该事件Onselect:当文字加亮后,产生该文件<input type="text" value="郭强" onfocus="if(value=='郭强') {value=''}" onblur="if (value=='') {value='郭强'}"...阅读全文
posted @ 2008-09-17 15:20 TG.Yang's IT Space 阅读(155) 评论(0) 编辑
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
 
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
 DOS中可以执行时由于 在oracle 8i 中  安装目录ora81BIN被设置为全局路径,
 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
 oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。
 SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。
 
下面介绍的是导入导出的实例。
数据导出:
 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中
   exp system/manager@TEST file=d:daochu.dmp full=y
 2 将数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)
 3 将数据库中的表inner_notify、notify_staff_relat导出
    exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
   exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"
 
  上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
  也可以在上面命令后面 加上 compress=y 来实现。

数据的导入
 1 将D:daochu.dmp 中的数据导入 TEST数据库中。
   imp system/manager@TEST  file=d:daochu.dmp
   imp aichannel/aichannel@HUST full=y  file=d:datanewsmgnt.dmp ignore=y
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
   在后面加上 ignore=y 就可以了。
 2 将d:daochu.dmp中的表table1 导入
 imp system/manager@TEST  file=d:daochu.dmp  tables=(table1)
 
 基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。
 
注意:
 操作者要有足够的权限,权限不够它会提示。
 数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

附录一:
 给用户增加导入数据权限的操作
 第一,启动sql*puls
 第二,以system/manager登陆
 第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)
 第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
   DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
      DBA,CONNECT,RESOURCE,CREATE SESSION  TO 用户名字
 第五, 运行-cmd-进入dmp文件所在的目录,
      imp userid=system/manager full=y file=*.dmp
      或者 imp userid=system/manager full=y file=filename.dmp

 执行示例:
 F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp

屏幕显示
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation.  All rights reserved.

连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

经由常规路径导出由EXPORT:V08.01.07创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)
. 正在将AICHANNEL的对象导入到 AICHANNEL
. . 正在导入表                  "INNER_NOTIFY"          4行被导入
准备启用约束条件...
成功终止导入,但出现警告。

 
附录二:
 Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.
  先建立import9.par,
  然后,使用时命令如下:imp parfile=/filepath/import9.par
  例 import9.par 内容如下:
        FROMUSER=TGPMS      
        TOUSER=TGPMS2     (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)         
        ROWS=Y
        INDEXES=Y
        GRANTS=Y
        CONSTRAINTS=Y
        BUFFER=409600
        file==/backup/ctgpc_20030623.dmp
        log==/backup/import_20030623.log

以下我自己补充:
1.在导入导出命令中加上feedback=1000可以让过程显示一个不断增多的“...”,以改变以往的闪烁的光标
posted @ 2008-09-08 10:00 TG.Yang's IT Space 阅读(183) 评论(0) 编辑

页面框架通过如下过程处理aspx文件请求:
    1:解析aspx文件,并创建一个控件树;
    2:使用控件树动态实现一个继承自Page类的类或者控件 ;
    3:动态编译类;
    4:缓存编译类,以备后用;
    5:动态创建一个编译类的实例。页面开始启动生命期,在这个过程中,页面将通过生命周期的不同阶段;=========================================================
页面经历了如下阶段【其中一些阶段标记为仅仅回传,是说只有在被回传到服务器时,页面才经历这些阶段】:

 

 

01:页面首先从QueryString或者Request对象的Form集合中获得回传数据。

02:页面检测回传数据集合(NameValueCollection,Form或者QueryString)是否包含一个键为_CallBackId的项。如  果存在,那么设置其Boolean属性IsCallBack为True,以便通过AspNet客户端回调机制,标明页面已经回传到服务器。

03:预初始化(PreInit):
  在页面生命周期的预初始化阶段执行如下操作:
   a:调用OnPreInit方法引发PreInit事件。
   b:利用App_Themes目录中的内容初始化主题,以动态实现一个PageTheme类型的类,
    编译该类,并创建一个编译类的实例,接着将实例赋值给它的PageTheme属性值
   c:应用母版页

04:初始化(Init):
  在页面生命周期的初始化阶段执行以下操作
   a:递归初始化Controls集合中的控件。初始化包括设置这些控件的属性,
    例如:Page,Id和NameContainer等
   b:递归应用控件皮肤
   c:调用OnInit方法以引发自身的Init事件,接着递归调用子控件的OnInit方法来引发它们的Init事件
   d:调用自身的TrackViewState方法来启动自身的视图状态跟踪,接着递归调用子控件
    的TrackViewState方法来启动它们的视图状态跟踪。

05:完成初始化(InitComplete):
  页面调用OnInitComplete方法来引发InitComplete事件。该事件标明了初始化阶段的结束。
此时,页面Controls集合的所有控件都被初始化了。


06:加载控件状态(Load Control State)[PostBack Only]:
  页面递归调用Control集合中控件的LoadControlState方法,这些控件已经调用了Page类
的RegisterRequiresControlState方法,以使用它们的控件状态。

07:加载视图状态(Load View State)[PostBack Only]:
  页面首先调用自身的LoadViewState方法,接着递归调用Controls集合控件的LoadViewState方法,以允许它们加载它们的已经保存的视图状态。

08:加载回传数据(Load Post Data)[PostBack Only]:
  页面调用实现IPostBackDataHandler接口的控件的LoadPostData方法,并将回传数据传递给该方法。每个控件的LoadPostDate方法都必须访问回传数据,并据此更新相应的控件属性。
例如:TextBox控件的LoadPostData方法将文本框的新值设置为TextBox控件的Text属性值。

09:预加载(PreLoad):
  页面调用OnPreLoad方法以引发PreLoad事件。该事件表示页面生命周期将进入加载阶段。

10:加载(Load):
  页面首先调用自身的OnLoad方法以引发自身的Load事件,接着递归调用Controls集合中控件的OnLoad方法以引发它们的Load事件。页面开发人员可以为Load事件注册回调,那么就可以通过编程将子控件添加到页面的Controls集合中。

11:加载回传数据(Load Post Data)[PostBack Only Second Try]:
  页面调用控件的LoadPostBack方法。这些控件如果实现了IPostBackDataHandler接口,那么在加载阶段,它们已通过编程添加到Controls集合中。

12:引发回传数据修改事件(Raise Post Data Changed Event)[PostBack Only]:
  页面调用控件的RaisePostDataChangeEvent方法,这些控件的LoadPostData方法返回true。
RaisePostDataChangeEvent方法引发了回传数据修改事件。例如:当文本框的新值与旧值
不同时,那么TextBox控件将引发该事件。

13:引发回传事件(Raise PostBack Event)[PostBack Only]:
  页面调用控件的RaisePostEvent方法,这些控件相关的Html元素用于提交表单。例如,Button控件的相关Html元素将页面回传到服务器。控件的RaisePostBackEvent方法必须将回传事件映射到一个或多个服务器事件。例如,Button控件的RaisePostBackEvent方法将事件映射到了服务器端事件Command和Click上。

14:完成加载(Load Complete):
  页面调用OnLoadComplete方法来引发LoadComplete事件,这表示所有加载活动,包括加载回传数据,以及引发回传数据修改事件,并以更新控件自身的活动都完成了。

15:引发回调事件(Raise CallBack Event)(PostBack And CallBack Only):
  页面调用控件的RaiseCallBackEvent方法。该控件可使用AspNet客户端回调机制来允许客户端方法(例如JavaScript函数)调用服务器端方法,而无需将整个页面回传给服务器。
RaiseCallBackEvent方法必须调用服务器端方法。如果页面的回传使用了客户端回调机制,那么页面将不会执行剩余的页面生命周期阶段。

16:预呈现(PreRender):
  在页面生命周期这个阶段执行一下操作。
   a:调用EnsureChildControls方法来确保在页面进入呈现阶段之前,创建其子控件。
   b:调用自身的OnPreRender方法来引发PreRender事件。
   c:递归调用Controls集合中控件的OnPreRender方法,以引发它们的PreRender事件。

17:预呈现完成(PreRender Complete):
  页面调用OnPrerenderComplete方法来引发PreRenderComplete事件,这表示所有预呈现活动完成了。

18:保存控件状态(Save Control State):
  页面递归调用Controls集合中控件的SaveControlState方法。这些控件已经调用了Page类的RegisterRequiresControlState方法来保存它们的控件状态。

19:保存视图状态(Save View State):
  页面首先调用自身的SaveViewState方法,然后调用Controls集合中的SaveViewState方法,以允许它们来保存其视图状态。

20:保存状态完成(Save View Complete):
  页面调用OnSaveStateComplete方法以引发SaveStateComplete事件,这表示所有状态保存活动都完成了。

21:呈现:
  在页面生命周期的这个阶段执行一下操作。
   a:创建一个HtmlTextWriter类实例,该实例封装了输出响应流
   b:调用RenderCOntrol方法,并将HtmlTextWriter实例传递给该方法。
  RenderControl方法递归调用子控件的RenderControl方法,以便允许每个控件能够呈现其
Html标记文本。子控件的Html标记文本组成了最终发送给客户端浏览器的Html标记文本。

posted @ 2008-08-01 16:05 TG.Yang's IT Space 阅读(129) 评论(0) 编辑
摘要: 假设 obj 为某个 HTML 控件。obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型,单位像素。obj.offsetLeft 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置,整型,单位像素。obj.offsetWidth 指 obj 控件自身的绝对宽度,不包括因 overflow 而未显示...阅读全文
posted @ 2008-07-19 21:36 TG.Yang's IT Space 阅读(3451) 评论(1) 编辑
摘要: 使用Web Service 发送邮件,支持编辑邮件模板,使用wse多线程上传附件及发邮件(带附件)以及在服务器端自动发邮件(附源码)。 阅读全文
posted @ 2008-07-12 08:46 TG.Yang's IT Space 阅读(1588) 评论(6) 编辑
摘要: Basic Update Statements Update all records UPDATE <table_name> SET <column_name> = <value> CREATE TABLE test AS SELECT object_name, object_type FROM all_objs; SELECT DISTINCT object_...阅读全文
posted @ 2008-07-03 15:10 TG.Yang's IT Space 阅读(199) 评论(0) 编辑