随笔分类 - C#
摘要:题目要求:双倍超立方数是指一个正整数可以正好被拆分为两种不同的a^3+b^3的方式,其中a,b均为整数且0a=b。对于任何一个指定的 int n, 返回所有的小于等于n的双倍超立方数的个数。
因为题中大量使用3次方计算,这里我们也可以减少重复计算。原理公式为:
(n + 1)^2 = n^2 + 2n + 2
(n + 1)^3 = n^3 + 3n^2 + 3n + 1
阅读全文
摘要: 上一篇文章 "无侵入方面编程-用HttpModule+SoapExtension监视页面执行参数(一)"中,我们实现了监视每个页面的执行情况和调用WebService的简单信息。
这次我们继续深入一下SoapExtension的应用,在不改变Soap的WSDL文档的情况下,配合在Dotnet编写的WebService站点配置我们编写的SoapExtension,来穿透传输我们自定义的数据对象。由于SoapExtension是全局的,我们还要加一些标识来区分服务器是否已经配置了我们的SoapExtension,从而不影响其它的WebService调用。
在SoapExtension中,我想到有两种方案:
一种是直接在SoapMessage.Headers中插入自定义的SoapHeader对象,然后在客户端的序列化后,从SoapUnknownHeader中取出数据,然后反序列化成自定义的对象。
第二种是对SoapMessage.ContentType 添加一个额外的标识,在另一方检测这个标识,来从流中取出自己长度的数据。反序列化成自定
阅读全文
摘要: 先简单介绍一下项目吧,我们这个项目是用VS2003开发的,老早一个项目。WEB前端机+业务处理(WebService层)+数据库分别布置在不同的计算机上。
现在老总有一个需求,要统计出每个页面的执行时间,以及每次调用过哪些WebService方法,调用的时间等参数。
可行的方案有好多,但我感觉使用HttpModule+SoapExtension,可以不在改变目标系统源码的基础上,完成这项工作。也许有一天,老总说,现在不需要再统计了,我就直接配置一下,不再统计就行了。
由于要调用WebService,我们采用编写一个SoapExtension,在它的ProcessMessage函数中,在message.Stage是 BeforeSerialize 时,记一个开始时间,并采集一些数据,在message.Stage==AfterDeserialize时,再采集一些时间等数据。最后通过HttpContext.Current.Items[WSInvokeMonitorKey]获取HttpModule的对象,把采集到的数据放在HttpModule里
阅读全文
摘要: 接触到一个老的项目,里面大量使用OleDbConnection进行数据库操作,在执行SQL块语句时,对它的顺序参数、命名参数很不了解。据说不能使用命名参数,但我这里试验了一下,好像是可以的,只是对参数的顺序还是有要求。看看你能知道下面的输出结果吗?
测试环境:OleDbConnection+Oracle10G
阅读全文
摘要:一个数据缓存,一般由数据来源,缓存方案,缓存读取来完成,现在有了匿名函数,可以把获取数据来源变为匿名函数。这样就可以直接声明一个缓存:
protected static CacheManager companyCache = new CacheManager(new SmsDatabaseCache(), (key) =
{
return SmsDatabase.Instance.Context.Company.Where(c = c.ShortNumber == (string)key).SingleOrDefault();
});
SmsDatabaseCache是一个缓存方案,还可以使用SimpleCache,TimeoutCache等实现了ICache接口的类,因为我的ICacheManager从ICache继承,所以还可以实现级连缓存哟
阅读全文
摘要: 在执行SQL语句时,有时我们必须使用Like语句,还需要动态依条件拼出SQL然后执行。此时你可以会因为一点点麻烦而拒绝使用参数化SQL,其实一点也不麻烦。
阅读全文
摘要:AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
阅读全文
摘要: 在异架构间通讯时,我们一般会采用WS。我遇到的情况是WSDL已经由AXIS生成,我需要用Dotnet实现服务器。
简单实现后,发现里面的 NotifySOAPHeader 总是取不值,添加 SoapUnknownHeader[] 后,里面有值。可见是不能识别AXIS发送来的SoapHeader。本文尝试解决了这个问题,避免了为Java调用时写代码从SoapUnknownHeader中取数据了。
阅读全文
摘要: 如果你的项目要求你的程序对高达几万条的数据在集中的时间内执行固定序列的操作,且不能完全使用存储过程时而需要使用程序来执行时。会需要这些优化。
我们知道,SQL服务器对一条语句的执行,需要分析、编译、执行这些步骤,通过参数化我们可以对一种命令只分析和编译一次,而执行多次,从而提高效率。在执行时,如果每次提交语句,可以完成多条SQL语句,则可以减少通讯时间,也可以提高效率。
通过 System.Data.IDbCommand.Prepare() 方法,我们可以在第一次执行语句时,分析和编译SQL语句,然后保存这个Command对象,下次使用时,直接设置参数执行。这个方法对Oracle和MsSql Server都有效。
如果执行一批语句,在T-SQL和PLSQL中有一点不一样。
在T-SQL中,多条SQL语句之间,使用分号";"分隔就行。
delete from TableA where id = @id;update TableB set Name=@name where id=@id
而在PLSQL中,则需要
阅读全文
摘要:因工作需要,又使用了VS2003,但在使用时,鼠标悬停时,就是不出现任何提示。在看别人的代码时太累了。网了查了半天也是需要重装VS2003一类的。我发现了一个貌似可以的简单解决方法。 打开VS2003,在[工具/选项/文本编辑器/C#/常规]中,有语句结束的相关设置,你需要做的就是把“自动列出成员”和“参数信息”前面的勾去掉,确定。 然后再用相同的方法把它打开。 我的经过这...
阅读全文
摘要: 动态控件,复合控件,相信大家都已经很熟悉了。只要达到同样的展示及功能,用什么样的方式实现应该取决于实际情况。我在一个项目中遇到的情况是:已经有了很多页面,但每个页面都没有用Validation控件来验证输入的有效性。
为了达到相同的展示效果:
常规办法:是为每个页面的每个TextBox有选择的生成RequiredFieldValidator、RangeValidator、 CompareValidator、RegularExpressionValidator、FilteredTextBoxExtender。但这个方法,需要每个页面都去添加,并且统一调整起效果来,工作量太大。
复合控件:是写一个复合控件,依参数来添加验证控件。这个也需要在页面中统一添加一次(工作量约为第一个办法的1/3),还需要更改一下后台的控件类型声明(我的后台代码在另一个程序集中)。
动态控件:写了个直接继承自TextBox的控件,在适当的地方,依参数来添加验证控件。这个也需要在页面中统一改动一下(工作量和复合控件的方法相当),不过,后台的代码不用做发改
阅读全文
摘要:上次写了HqlBuilder,实现了用一个Filter类,来描述要生成的查询.但在列表时,我们不应该把所以的东西都列出来,我们应该只列一页的数据,往往是10条就足够了.所以,在很多页面使用了Filter来查询的情况下,如果对每个函数都加上参数,来传递要第几页的几条数据时,改动会很大. 我想到,一般情况下,一个页面只有一个查询.(我的项目中如此,具体问题具体对待).这样我们可以在一个Http交互中,...
阅读全文
摘要:最近在使用NHibernate时,发现有的列表无法绑定,如提示如下的错误: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->[TargetException: 对象与目标类型不匹配。] System.Reflection.Runtime...
阅读全文
摘要:由于采用Ajax.Net技术,要求客户不能用浏览器的后退来导航,因为这样会产生不正确的页面.因为有时,结果是Ajax查询返回的,不会保存住. JQuery是一个好东西,可以很方便的给每个 <A> 加上事件,来重写它的默认的跳转,我们把它改成单击时,调用Location.replace来完成页面切换. 代码如下: Code Code highlighting produced by Actip...
阅读全文
摘要:程序代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...
阅读全文
摘要:在使用NHibernate中,经常使用查询,又不愿意去写,就写了这个东东,依对象的属性,通过反射来生成查询。 先来看一下使用方式: 一个Filter类: Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> public class U...
阅读全文
摘要:有时候,我们不需要用CheckBoxList,这时就不能得到选中的值,其实,我们可以把值存在ViewState中,这样在服务器端可以取出来。
阅读全文
摘要: 建立步骤如下:
一. 建立一个 State Machine Workflow Library ,命名为StateLib. 完成后,修改文件WorkFlow1为WF_Login
二. 在里面通过设计器,加入下面的工作流(具体如何设计,不再说明),最终结果如图:
三. 把工作流发布成WebService,VS2005会自动命名为:StateLib_WebService
四. 添加一个新WebSite项目,命名WorkflowSite. 在Default.aspx中添加输入框,以及按钮
五. 编写事件,测试一下
阅读全文
摘要:public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { ...
阅读全文