re: WPF程序单例实现 xingd 2008-07-22 17:46
可以用Microsoft.VisualBasic.ApplicationServices中的WindowsFormsApplicationBase类,将IsSingleInstance设置为true即可。
re: 博客园正在招聘,期待您的加盟 xingd 2008-06-18 13:30
NBear、Spring.net、iBatis.Net、Castle、Nhibernate都没在项目里用过。。。
re: 觉得有必要来澄清几组重要概念 xingd 2008-06-04 11:23
LINQ to Entity在.Net 3.5 SP1里提供。
老赵最后的两个例子,第一个是用lambda生成匿名函数,调用Enumerable类中提供的IEnumerable的Where扩展方法,直接回调执行由编译器对lambda编译出来的函数。匿名函数是从代码的角度来看的,编译器会产出一个自动命名的IL函数。
第二个是调用Queryable类中提供的IEnumerable的AsQueryable扩展方法,编译器会对lambda语名产生表达式树。
其实IEnumerable.Where和IQueryable.Where的方法签名本来就不一样,一个是
public static IQueryable<TSource> Where<TSource>(
this IQueryable<TSource> source,
Expression<Func<TSource, bool>> predicate
)
另一个是
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)
对于我们自己定义的也是一样的,比如
class test
{
static void foo(Func<int, bool> predicate)
{}
static void bar(Expression<Func<int, bool> predicate)
{}
static void Main(string[] args)
{
foo(x => x > 5);
bar(x => x > 5);
}
}
编译器对同样的lambda表达式 x => x > 5产生的结果就完全不一样,一个是自动命名的函数,一个是表达式树对象。
re: 忽略大小写的.NET脏字过滤算法 xingd 2008-04-10 15:22
@fqf
GetHashCode的代码已发到你的邮箱
re: 忽略大小写的.NET脏字过滤算法 xingd 2008-04-10 10:51
@fqf
HashSet是.NET 3.5中新增的,如果使用.NET 2.0,可以用Dictionary<string, object>代替。
re: 微软收购SpringSource公司 xingd 2008-04-01 22:17
infoQ就不许开玩笑了。。
Johnson的话无比夸大,纯粹开个愚人节玩笑
re: 2007年度总结 xingd 2008-03-31 02:40
@把大海藏到心里
在校阶段多了解一些也挺不错的。
re: Minesweeper: 新版代码 xingd 2008-03-26 14:02
@木野狐(Neil Chen)
并不是所有的Action都会基于Cell的,因此设计Action<MineBoard>这种方式。
BaseMineAction的命名可能带来一些误解,BaseMineAction封装的是针对某个Cell的操作的基类,并不是所有的Action都要从这个基类派生。Run是针对所有Action<MineBoard>的共性,而RunValidCell则是针对Cell的操作,分开设计还是有需要的。
re: Minesweeper: 新版代码 xingd 2008-03-22 17:23
目前是VS2008的项目,因为用了不少lambda。
March 15 - Unity 1.0 release
March 15 - Enterprise Library 4.0 CTP (includes new features of WMI2 support, ability to provide your own cache manager, and other enhancements to the application blocks based on the community feedback (listed here); note, this CTP will not include integration of blocks with Unity, just an update of OB1 to OB2)
mid-end April - Enterprise Library 4.0 release (includes all of the above + integration with Unity).
DirectX SDK March 2008发布了。
有时候闪跟WM_ERASEBKGND消息有关,一定要替换掉Windows默认的WM_ERASEBKGND消息处理过程,否则很容易会闪。
@随风流月
这两天老赵的MSN签名就是"LINQ to Everything"。
我的意思跟你说的一样,自己解析编译器生成的LINQ表达式树,实现缓存和分布数据库的支持。
@Jeffrey Zhao
Entity Framework和LINQ to NHiberante都不会针对Web 2.0网站的一些特点作优化的,这就是为什么我计划要自己做一些实现。
具体要做的时候,要参考EntLib 4.0, IIS 7和SQL Server 2008的功能,所以目前还只是计划阶段。我在看SQL 2008,酒精在看IIS 7,要过一段时间才会启动这个项目。
@随风流月
前面我说的只是理想状态,具体的实现要经过一些探索也能决定。
等周五的时候听你讲这个,正好也是我计划要做的。
08年内我对这个主题会不断做一些探索,计划会替换全部的L2S实现,或者是间接调用L2S中的Expression Tree解析,目的是把多数据库、MemCached和全文检索统一集成到LINQ语法中,通过Attribute,减少应用开发人员对低层细节的关注,提高开发效率。
这个事情的优先级非常低,因为毕竟网站目前运行良好,开发人员也已经能够很熟练的使用MemCache客户端,实现之后只是能供提高开发效率、代码可读性和可维护性。
不过我们Team中几位同事对我的这个项目都感兴趣,所以这件事情应该还是会推动去做的,对大家的开发水平提高也都有帮助。
re: 从SqlServer中随机读取记录 xingd 2008-03-05 14:24
SELECT *
FROM tableA TABLESAMPLE (1 ROWS)
SQL Server 2005支持。
@floodpeak
Bitmap只是一段内存,创建好了之后不要释放,每次要重绘的时候用Graphics.FromImage重新获取一个Graphics对象即可。
用Graphics绘制的时候设定好Transform和Clip,根本不需要意识到你创建的Bitmap比全图小。绘制到可见区域外对性能影响不大,如果有大量的计算,则需要作可见判断。
@floodpeak
内存中的Bitmap只要创建到窗口大小,不要创建到全图大小。
@floodpeak
自己控制的滚动条吗?有一段时间没做GDI/GDI+,有些细节忘记了。设置Clip的Region,使用Transform处理滚动,应该可以提高速度吧。
@怪怪
我也是同样的意见,在内存Bitmap上绘制。这个要看Pixel处理的算法,如果有一定规律的话,也是可以通过优化提高速度。重绘时是全部重新计算,只计算脏矩形,或是只计算增量变化,对效率都有很大的影响,所以floodpeak提出GDI+绘制慢的时候,我没有直接回答,影响的因素太多了。
SWT应该也是基于GDI实现的,自己用API也可以不闪。不过SWT也支持openGL的,floodpeak提到的库有没有用到openGL,就不知道了。
@Sea.Yu
技术上只要对.NET Web开发和SQL Server熟悉就可以了,另外每周最好能保证两天过来。
招实习生是要有计划的,而且我们也一定会安排人指导,所以不可能随时都有名额的。
@jillzhang
就是要笼统介绍的,之前写的两篇过于关注细节了。
06,07两年只写了6篇blog,主要是自己太懒了,现在时间充足点了,争取保持写技术文章的习惯。
--引用--------------------------------------------------
Jeffrey Zhao: 呵呵,怎么又在搞GDI+了啊?
--------------------------------------------------------
我刚工作时,就在VC++中用GDI开发报表,之后做OLAP前端工具时,用C#中的GDI+绘制Grid和Decompose Tree控件,对GDI/GDI+还是挺有感情的,呵呵。
--引用--------------------------------------------------
Jeffrey Zhao: @Sea.Yu
因为大众点评的技术团队有一定规模了啊,呵呵。
--------------------------------------------------------
对啊,我们现在有两个架构师,应用开发组也有两个了。
re: 托管代码和非托管代码效率的对比。 xingd 2008-03-02 01:24
这么多回复,感兴趣的人还真多啊。
哪位有兴趣用Nvidia CUDA来试一下?我本本不是N记显卡。
Microsoft and Unisys announced a record for loading into a relational database, using SSIS (SQL Server 2008) to load over 1 TB of data in under 30 minutes! The previous known record-holder was Informatica, who reported loading 1 TB in 45 minutes.
@suqx520
CTP是技术预览版,距离RTM和正式发布还有一段时间。
@Cheney Shue
完全同意对你Oracle现状的分析,Oracle的对手是SAP,后者也在逐步改变自己沉稳的风格,以收购BO为开始。
@Cheney Shue
SSAS的聚合是可以调整的,2005里要自己编辑Cube的XML定义中的聚合部分,2008里提供了图形工具。
SSRS有两种Cache方式,都可以在执行计划里定义的,一种是基于时间的Cache,另一种是Snapshot。
@PerfectDesign
Oracle现在也不是专做数据库了。现在的企业软件市场就是大一统的局面,Oracle吞了BEA后能够提供几乎全系统的企业软件了。
在Oracle眼里,未必把Microsoft视为最大的竞争对手。
SSRS应该没有那么多的刷新,之前的应用效果都还是不错的,你看Adventure Works里的那几张也在刷新吗?
10G你指的是数据量的大小还是Cube的大小?不管哪一个,我都遇到过实际案例远超过10G的,单表数据都超过了10G。
我不是要跟你争论SQL Server和Oracle哪个好,只是想说SQL Server没你说的那么差……
@Cheney Shue
SSAS新增的是对MOLAP的Write Back支持。稀疏Cube的数据压缩存储可以说是OLAP的一项核心技术了,SQL 2005和2008在这一方面都在持续改进。
SSIS的确在扩展性上有一些问题,不支持分布,比DataStage等专业的ETL工具还是一些距离。
SSRS因为要兼顾直接用户和二次开发,关系数据和OLAP数据,因而在某些方面做得不成熟。在一些跳过Report Manager直接集成Reporting Services的应用中,参数刷选的问题可以很方便的解决。
另外,如果参数间无依赖关系,也不会有不必要的post back,只是report designer里会自动为所有参数加入依赖,很多时候要自己去掉。
SQL Server好就好在提供了一整套对大多数用户足够用的组件包,从数据存储、应用、转换、多维分析和展现都有支持,并且可以与Office System整合,因此也有足够的市场竞争力,毕竟客户不仅仅看产品的技术有多高。
bit会压缩存储的,不过我也同意楼主的结论,如果需要建立索引,可以考虑用tinyint来代替bit。
实际情况要复杂得多,像例子中的表,不建索引,直接table scan也未必慢多少。如果select返回的列比较多,在bit上建索引就更不值得了。
EnyimMemcached的代码中也有新的特性,比如Multi-Get,但是一直没有正式release出来。
consistent hashing和multi configuration接下来也都是需要的。
@PerfectDesign
Excel,SSRS都可以作多维前端展示,但是从专业性的角度来看,还是远不能取代PPS。
re: Minesweeper: 索引 xingd 2008-02-26 23:29
@工业酒精
等完C#版的逻辑写完给你做参考,这几天看SQL Server 2008,还没有继续下去。
@aspnetx
ProClarity是Office部门收购的,后续版本是PerformancePoint Server,在SQL Server中当然看不到ProClarity的发展了。
@Cheney Shue
抛开具体的功能点不谈,SQL Server现在也有大量的高端应用案例,“毁灭性的灾难”太过耸人听闻了。
坦率得讲,Oracle在技术上的领先还是很明显的,在SQL 2005和SQL 2008中的一些功能实际上早在Oracle11g之前的版本就实现了。但是对SQL Server评价如此糟糕,则不至于了。SQL Server同样也是一个完备的数据库系统,系统复杂性上比Oracle要低,决大多数应用场景上都是足够的了。而且在学习曲线上,SQL Server也是有优势的。
除了典型的数据库应用外,在一些商务智能领域,SQL Server也凭借All in One的组件系统,成熟的OLAP/DM支持,Reporting工具和Office,Sharepoint的整合也获得了不少应用。要学习数据库系统,选择SQL Server也没有任何问题。
三大数据库(Oracle, SQL Server, DB2)可以说都有优缺点,不过高端领域目前DB2和Oracle用得多一些。
就算Oracle官方,也不会评价SQL Server为“弱智”的。
@PerfectDesign
客气了,以后多来讨论下SQL相关技术。
@PerfectDesign
CDC应该与BCM和DCM无关,我这周内就CDC另写一篇吧,CDC也是我比较关心的特性。
@夜已醉
我是在Virtual PC里装的Windows 2008 + SQL Server 2008,分配了1G内存,学习用效率还可以。
re: 正确使用异步操作 xingd 2008-02-24 22:57
对于某些不需要返回信息到当前过程的操作,比如日志处理,可以用ThreadPool.QueueUserWorkItem加入到异步处理队列中。这种情况跟你在此文中讲述的情况不太一样,老赵有什么建议?
@Faceker
安装好了之后没有看到,应该是没有了吧。
@yuefq
在服务器配置页有一个“为所有服务使用同一帐户”的选项,把用户名密码填好,然后点应用就可以同时为所有服务设置好帐户了。