December 2009 - Posts
阅读: 18 评论: 1 作者: geff zhang 发表于 2009-12-31 17:31 原文链接 Thinkpad X200 7458 CTO上安装Windows Server 2008 R2,windows Server 2008 R2安装过程非常简单,只要下一步就可以了,主要是驱动程序的安装和将服务器配置成工作站环境。 1、驱动安装:Thinkpad缺乏服务器的驱动程序,可以选择和Windows Server 2008 R2相同核心的Windows 7的驱动程序,下载地址: http://www-307.ibm.com/pc/support/site.wss/product.do?template=/product.do?template=%2Fproductpage%2Flandingpages%2FproductPageLandingPage.vm&sitestyle=lenovo&brandind=10&familyind=422602&machineind=423469&modelind=430937&partnumberind=0&subcategoryind=0&doctypeind=9&doccategoryind=0&operatingsystemind=466746&validate=true 下载64位的 Win 7驱动安装就可以了。 2、通过服务器管理添加如下的系统功能 Windows Server 2008的无线网络、多媒体功能和桌面体验默认是没有安装的,需要手动添加,还需要启动多媒体的服务,修改为自动启动。 默认打开的服务器管理器中,选择“登录时不要显示此控制台...
SQL Server 的 ltrim 和 rtrim 函数只会取消 char(32) 的字符, char(9) 之类的字符则不会剔除。今天在处理论坛的一个bug时,发现数据多了空格,就是char(9)在作怪。 一个演示SQL代码: declare @s nvarchar (50) select @s = char (32)+ char (9)+' * ' print (' % '+@s+' % ') select @s = ltrim(rtrim(@s)) print (' % '+@s+' % ') print (str(len(@s))) 而 C# 中则没有类似问题,它剔除了很多非 char(32) 的空格。 演示代码: static void Main( string [] args) { string s = string .Format(" {0}{1}* ", ( char )32, ( char )9); Console.WriteLine(" % " + s + " % "); Console.WriteLine(s.Length); s = s.Trim(); Console.WriteLine(" % " + s + " % "); Console.WriteLine(s.Length); Console.ReadLine(); } MSDN上一些空格的资料: 下表列出了被 Trim 方法移除的空白字符。第一列列出了字符的 Unicode 名称,第二列列出了标识该字符的 Unicode...
我们以前要实现朗读一段文本,需要如何做呢? 首先在项目中引用 Microsoft Speech Object Library 。 如下Com组件: 然后是一堆复杂的代码。这部分的实现可以采看以下几篇文章: .Net平台下开发中文语音应用程序 http://www.microsoft.com/china/community/program/originalarticles/TechDoc/Cnspeech.mspx C#中实现语音朗读(短信 & 语音短信)sms http://www.cnblogs.com/joyyuan97/archive/2009/02/26/1398716.html 当然 由于 .Net Framework 3.0 中增加了一个命名空间:System.Speech。 实际上从 .Net Framework 3.0 开始,我们要实现语音朗读要简单多了,具体如何实现可以参看我之前的博客: 用.net 编码实现朗读文本的方法 。 但是我们操作其他微软没有封装的 Com 组件,仍然跟之前一样超级复杂,而且需要相当的技巧。 在 .Net 4.0 中,我们只需要三行代码就可以实现上面的功能,而且项目不需要引用 Microsoft Speech Object Library 。超简单,这是利用了 C# 4.0 的动态查找新特性, 即 dynamic 类型。有关 dynamic 的基础知识,请参看我前篇博客: C# 4.0 特性: dynamic 和 ExpandoObject 。 C# 4.0 的项目不需要引用任何其他组件,只需要下面简单的几行代码,完成阅读文字的功能。 using System; namespace ConsoleApplication1...
C# 4.0引入了一个新类型:dynamic,简单来说,任何直接声明为这种类型的变量,或者从函数中返回这种类型的值,都将自动地视为后期绑定。即在运行时才会被初始化绑定。这类似于在Visual Basic中把变量声明为“object”,不过它现在可以支持任何类型系统了,不仅仅是CTS(通用类型规范)和COM。 C# 4.0 的主打特性就是动态类型。也就在这里体现。 在 New features in CSharp 4.docx 中提到 dymanic主要应用于下面的场景也是这样: 自动反射 COM组件互操作 混合编程,例如IronRuby和IronPython 处理Html DOM对象 一个简单例子: static void Main( string [] args) { dynamic person = new System.Dynamic.ExpandoObject(); person.Name = " cary "; person.Age = 25; person.ShowDescription = new Func< string >(() => person.Name + person.Age); Console.WriteLine(person.Name + person.Age + person.ShowDescription()); Console.ReadLine(); } 这里的 System.Dynamic.ExpandoObject 是个特殊的对象,简单地说它的行为可以被“扩展”——是如动态语言般真正的扩展,而非静态的多态。当我们使用dynamic 饰变量后,在它之上的方法调用会由编译器和DLR配合出不一样的行为。例如...
阅读: 0 评论: 0 作者: geff zhang 发表于 2009-12-29 13:18 原文链接 数据流是在SQL Server 2005中才引入的新概念。数据流是专门处理数据操作的工作流。数据流也称为流水线。可以将数据流认为是装配线,该装配线包含了顺序执行的多个操作。在数据流中的每个节点都称为转换。数据流通常以源转换开始,以目标转换结束。在这两个转换之间,预定义的数据流转换被依序应用到数据上。一些转换是同步的,例如,查找、条件性拆分和数据转换。这些同步的转换可以并行执行。 一旦已经将转换应用到数据行上,则下一个转换可以开始处理该数据行,而无需等到上一级转换处理完整个数据集。一些转换是异步的,例如聚合和排序。这些转换必须从前面的输出中获得所有的行,从而可以处理和产生输出,用于后续转换。 SSIS 学习(2):数据流任务(上) Integration Services学习(3):数据流任务(下) SSIS工程师为您揭秘数据流 为SSIS编写自定义数据流组件(DataFlow Component)之进阶篇:自定义编辑器 发表评论 新闻频道: 福布斯推出09美国富豪排行榜 谷歌创始人居首 推荐链接: Windows 7专题发布 网站导航: 博客园首页 个人主页 新闻 社区 博问 闪存 知识库 Read More...
我们先来看一段超简单的使用了这个特性的代码例子: public static void ShowMessage( string msg = " ") { Console.WriteLine(" Hello {0} ", msg); } static void Main( string [] args) { // 使用默认的 msg = "" ShowMessage(); // 使用指定的参数值 ShowMessage(" ghj1976 "); // 指定参数值的又一种写法 ShowMessage(msg: " 郭红俊 "); Console.ReadLine(); } 为什么需要开放命名参数和可选参数呢? 这是出于动态语言运行时兼容性的要求。动态语言中存在动态绑定的参数列表,有时候并不是所有的参数值都需要指定(有些语言可能没有重载决策); 另外,在一些 COM 互操作时,往往 COM Invoke 的方法参数列表非常的长(例如 ExcelApplication.Save,可能需要 12 个参数),但 COM 暴露的参数的实际值往往为 null,只有很少一部分参数需要指定植,如 ExcelApplication.Save(),可能不需要指定任何参数值,或者仅仅一个值,例如 fileType。为了精简书写的代码,就有着这个特性。 一些注意点: 上面 ShowMessage 函数写法的可选参数(Optional Parameters)必须放在最后,否则将引发 "Optional parameters must appear after all required...
阅读: 39 评论: 0 作者: geff zhang 发表于 2009-12-26 23:03 原文链接 最近在学习.NET的并行计算技术,学到一个服务器NUMA架构,NUMA架构在中大型系统上一直非常盛行,也是高性能的解决方案,在系统延迟方面表现都很优秀。Windows一向都没有在NUMA架构上有多少表现机会,AMD的多路系统大多也会用在UNIX/Linux上。Intel如期进入了NUMA架构的怀抱,英特尔最新的服务器处理器至强5500是一项重大的结构变革。与上一代至强处理器相比,至强5500采用了非一致性存储结构(NUMA),它在一块芯片上增加了向内存控制器的并行化访问路径增加非统一内存访问。可以看这篇文章 三款Nehalem至强5500塔式服务器横评对决 。Windows Server 2003 在线程调度程序和内存管理器中引入了 NUMA 优化,而 Windows Server 2008 在 I/O 管理器中添加了 NUMA 优化同时扩展了内存管理器的 NUMA 优化。NUMA 系统通常是多处理器系统,其中的内存延迟随访问它的处理器不同而有所不同。内存被分成多个节点,CPU 和节点之间的延迟可能各不相同,并且每个 CPU 都被视为它可最快访问的那个节点的一部分。Windows 7 和 Windows Server 2008 R2 一个重要更新是增强了对多核的支持。 现已可以支持超过64个逻辑处理器(也就是所谓的“核”),并且引入了NUMA 技术, 大幅度提高多核运算的性能。可以说Windows 7/Server 2008 R2已经进入高端的企业级市场。 传统的多核运算是使用SMP(Symmetric Multi-Processor )模式:将多个处理器与一个集中的存储器和I...
I worked with SQL 2008 in a recent project, but I got the following message whenever I try to make change to a table structure in SQL management studio: Saving changes is not permitted. The changes you have made require the following tables to be dropped...
OAuth 协议是现在众多网站提供API服务所选择的认证方式,是由Blaine Cook、Chris Messina、Larry Halff 及David Recordon共同发起,目的是为API服务提供一个安全、统一和开放的标准。 官方网站对 OAuth 的一句话介绍是: An open protocol to allow secure API authentication in a simple and standard method from desktop and web applications. 大概意思是说 OAuth 是一种 开放的协议 ,为桌面程序或者基于BS的web应用提供了一种 简单的 , 标准的 方式去访问 需要用户授权的API服务 。OAUTH认证授权具有以下特点: 1. 简单:不管是 OAuth 服务提供者还是应用开发者,都很容易于理解与使用; 2. 安全:没有涉及到用户密钥等信息,更安全更灵活; 3. 开放:任何服务提供商都可以实现 OAuth ,任何软件开发商都可以使用 OAuth ; OAUTH认证授权流程: 下面这个图就是演示了认证流程。这个图来自: http://wiki.opensocial.org/index.php?title=OAuth_Use_Cases 上述5个步骤解释如下: A user wishes to use their social network data inside of a third party website or application. The application server contacts the social network, but does not...
System.Data.SqlClient 命名空间下有个类: SqlConnectionStringBuilder ,可以帮助我们维护链接字符串。 这个类对我们下面的需求场景很有帮助。 对于同一个数据库,我们可能有正常和比较耗时的统计工作两种需求,为何互相不干扰,我们一般可以配置2个数据库链接字符串,类似如下的配置: Persist Security Info=False;Integrated Security=true;Initial Catalog=Northwind;server=(local); Persist Security Info=False;Integrated Security=true;Initial Catalog=Northwind;server=(local);Connect Timeout=0; 注: 在没有设置 Connect Timeout 时, Connect Timeout 默认为15秒,如果 Connect Timeout 设置为0,则表示永远不超时。这个设置是以秒为单位的。 其实我们完全可以只配置一个数据库链接字符串,然后使用 SqlConnectionStringBuilder 类来帮助我们实现不同 Connect Timeout 的需求。 演示代码如下: // connString 原汁原味的配置的链接字符串 SqlConnectionStringBuilder connStr = new SqlConnectionStringBuilder(connString); // 不论之前是否设置了Connect Timeout,这里都强制设置为用不超时 connStr.ConnectTimeout = 0;...
More Posts
Next page »