Posts Tagged ‘c#’

程序设计是无止境的 —— 从一个黑名单查询业务说起

s1081441公司需要一个黑名单查询,对于我们公司的业务来讲所有的手机号中大约有过千万的手机号是进入了黑名单的,还有相应的白名单,红名单,VIP业务名单,每一个都有几百万的数据。

第一感觉,必然需要数据库的查询支持,那么一群程序员开如讨论如何优化这个查询,因为公司的业务都是毫秒级的,每秒都有上百个手机号码需要查询,难度是相当大的,并且,随着业务的推移,日积月累,黑名单也会越来越大,那么针对的查询速度也会越来越慢。

越讨论越觉得这个需求是非常有挑战的项目。

这时候走过来一个C程序员,听完需求后,略加思考讲出一个设计思路简直是我们几个人想都没有想过的:将所有的手机号码都影射到内存中,每个手机号码占四个字节,程序通过运算后内存指针可以直接找到请求手机号对应的值。再取半个字节来表示一个用户对应的vip值,二进制的1是,0是否,4位中从低到高分别表示。是否是vip,是否是白名单,是否是红名单,是否是黑名单,得到vip的数字值,放到协议包中需要转成字符。把这个程序独立架设两台普通服务器,互做镜像,1G的内存载入所有的手机号码,通过Socket连接进行Update,Select即可。(大致的意思,因是在Blog上写写,没有打算写那么清晰,懂的看客应该知道大概意思了。)

听完后,我们大吃一惊,我们一天到晚的面向对象,OO,DDD……,真的忘记了计算机的运算能力了,忘记了学校学习的知识了,事实上我们应该想到的。如此去做,一个有一年工作经验的毕业生,稍有点水平,没有忘了C语言的都能写出来。

程序设计真的是无止境的,有时候要跳出来想,且要跳得再远一点,干脆跳到月球上看地球,这样的话思维才能打得开。

基于.Net的C#语言解析与创建PDF文档的开源类库

2 all to pdf conversion 最近在研究PDF的生成和解析。在网上找了找相关的开源代码、类库之类的,发现这方面的代码,真是太多了,仅sourceforge上C#写的就超过8个,Java/PHP/C++等语言写的版本就更多了。

  1. iTextSharp,类库,创建PDF、RTF、XML等,并可解析PDF,功能最强;
  2. Report.NET,类库,创建PDF,不错;
  3. sharpPDF,类库,创建PDF,不错;
  4. iTextdotNET,类库,创建PDF,与Java原版最能保持更新同步;
  5. A pdf Forms Parser,类库,PDF解析器,效果不错;
  6. pdf Library for creating pdf with tables and text, in C# ,类库,轻量级的创建,中文支持不好;
  7. pdfizer, a dumb HTML to pdf converter, in C#,转换HTML到PDF,效果不错;
  8. TEXT to pdf Converter in .NET using Reporter.NET,利用Report.NET把纯文本转换成为PDF;
  9. pdf creation using C# (and Office) from RTF/DOC files,从RTF/Doc文件中生产PDF文件;
  10. Generate pdf docs from a HTML page using ASP.NET ,使用ASP.NET把HTML生成PDF.

PDF文档是网络上最好的复合文件格式。PDF全称Portable Document Format,译为可移植文档格式,是一种电子文件格式。这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说明、公司文告、网络资料、电子邮件开始使用PDF格式文件。PDF格式文件目前已成为数字化信息事实上的一个工业标准。

在C#使用XML注释,以及XML注释的预定义

为了使用C#提供的XML注释功能,你的注释应该使用特殊的注释语法(///)开头。在///之后,你可以使用预先定义的标签注释你的代码,也可以插入你自己定义的标签。你定制的标签将会在随后加入到生成的注释文档中。

其中预定义的标签有:

  • <c> 将说明中的文本标记为代码
  • <code> 提供了一种将多行指示为代码的方法
  • <example> 指定使用方法或其他库成员的示例
  • <exception> 允许你指定可能发生的异常类
  • <include> 允许你引用描述源代码中类型和成员的另一文件中的注释, 使用XML XPath语法来描述你的源代码中的类型和成员。
  • <list> 向XML注释文档中插入一个列表
  • <para> 向XML注释文档中插入一个段落
  • <param> 描述一个参数
  • <paramref> 提供了一种指示一个词为参数的方法
  • <permission> 允许你将成员的访问许可加入到文档中
  • <remarks> 用于添加有关某个类型的信息
  • <returns> 描述返回值
  • <see> 指定链接
  • <seealso> 指定希望在“请参见”一节中出现的文本
  • <summary> 类型或类型成员的通用描述
  • <value> 描述属性

收集的一些.net开源的项目

最近做一些C#的.net项目,发现很多开源项目还是非常值得借荐的。放在这里列出收藏。