随笔分类 -  C#

摘要:0x01 Aspose.Words 介绍Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务。Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式。使用Aspose.Words可以在不使用Micro 阅读全文
posted @ 2016-09-25 10:00 阿牛 阅读(2948) 评论(2) 推荐(0) 编辑
摘要:先告诉大家一个秘密,EF在使用 update-database 时候,使用的连接字符串来自于解决方案中的“启动项目”,而不是你在包管理器中选择的“默认项目” 0x01. 先说错误,方便大家检索到 开发环境,VS2015+MySql+EntityFramework6 EF在使用包管理器执行命令的时候,所有的配置都使用解决方案中”启动项目“的配置文件(app.config or web.config)。而不是EF所在项目的配置文件。 阅读全文
posted @ 2015-09-30 23:02 阿牛 阅读(5050) 评论(2) 推荐(2) 编辑
摘要:项目中需要快速求解Asin(x) 的近似值,原以为用泰勒展开式会快一些,结果比原生的慢一倍。 Math.ASin Time Elapsed: 9ms Gen 0: 0 Gen 1: 0 Gen 2: 0 Maclaurin.ASin Time Elapsed: 17ms Gen 0: 4 Gen 1: 0 Gen 2: 0 各位,谁有能力改进? 阅读全文
posted @ 2014-10-10 10:14 阿牛 阅读(1235) 评论(0) 推荐(0) 编辑
摘要:获取谷歌地图的行政区边界,演示地址:http://gist.hecmcc.com/division/getbounds.htm 原理: 1.从百度取行政区边界。 2.从百度坐标转化为GPS坐标。(基于百度API,0.1精度) 3.从GPS坐标转化为火星坐标。(基于网传0.1数据库插值) 注:坐标转化全部采用插值法。 阅读全文
posted @ 2013-10-22 09:08 阿牛 阅读(16781) 评论(2) 推荐(0) 编辑
摘要:数据库连接是在TCP/IP、命名管道等通讯层之上,通过Oracle安全认证并关联数据库上下文信息的通讯通道。 在TCP/IP网络层之上的数据库连接,每打开一次,除了完成网络层的三次握手,还要进行数据库的安全认证以及数据库层上的上下文准备工作。所以建立一次数据库连接需要许多计算机和网络资源,而我们应该尽可以复用这些数据库连接。 数据库连接池完成这些数据库连接的管理,我们在使用时从数据库池中取出一个数据库连接,用完后马上告诉这个连接我已经用完,可以提供给其它人使用。如果一段时间内一直没有人使用数据库连接,数据库连接会关闭多余的空闲连接,避免资源的浪费。 阅读全文
posted @ 2012-11-12 10:54 阿牛 阅读(2391) 评论(0) 推荐(0) 编辑
摘要:前面实现了单机程序中使用的插件框架,但如果插件以服务形式存在,并且分布在多个服务器上, 更新一次插件需要到每个服务器上进行更新,这样很不方便。这次我们在此原框架基础上,利用WCF在进程中Host一个WebService,然后管理端引用该服务后,就可以指的对被管理运算服务器进行插件更新了。 阅读全文
posted @ 2012-11-05 16:47 阿牛 阅读(997) 评论(0) 推荐(0) 编辑
摘要:前面已经实现了插件的自动加载,调用者拿到插件实例后,如果要调用含有Action或者Func参数的方法时,需要思考"我这个回调应该在哪个域执行呢?" . 仔细想想,貌似应该在哪个域里执行,应该在接口定义时定义好以避免混乱 阅读全文
posted @ 2012-10-14 21:29 阿牛 阅读(814) 评论(4) 推荐(0) 编辑
摘要:前面我们已经实现了IPlugin接口的插件自动加载。 但是程序使用中,可以不仅仅只有一个接口,而可能是多个接口并存,不能每个接口都手动实现代码类!怎么办? 解决方案是:泛型+EMIT。 使用泛型把自动加载和插件接口分开,使用EMIT自动生成代理类。 阅读全文
posted @ 2012-10-14 01:26 阿牛 阅读(1353) 评论(0) 推荐(1) 编辑
摘要:前面已经得到了热插拔的插件原型,这次讨论如果插件是服务提供者怎么办? 我能想到的, 需要在起动时加载所有插件 然后在插件变动时,及时卸载旧的插件,加载新的插件。 如果有新插件放在目录中,需要马上加载新的插件。 如果插件被删除,我们要把对应的服务也移除。 最终使用时,如下: private void FormMain_Load(object sender, EventArgs e) { var inst = PluginManager.Instance; inst.PluginChanged += OnPluginChanged; } void OnPluginChanged(object sender, PluginManagerEventArgs e) { if (e.ChangeType == PluginChangeType.Created) { // 这里初始化插件,提供服务 e.PluginInstance.Run(DateTime.Now.To 阅读全文
posted @ 2012-10-12 21:06 阿牛 阅读(749) 评论(1) 推荐(0) 编辑
摘要:实现在调用域中执行回调 阅读全文
posted @ 2012-10-12 10:28 阿牛 阅读(904) 评论(1) 推荐(0) 编辑
摘要:看了空逸云的"基于AppDomain的"插件式"开发"后,在其基础上,做优化修改。 1. 使用AppDomain.CurrentDomain.AssemblyResolve ,在程序集找不到时,去plugins 目录中再次加载。这样就可以直接加载插件类名,方便多了。 2. 插件的方法有限,直接写上方法代理,去除了动态生成方法调用的性能损失。 阅读全文
posted @ 2012-10-11 17:18 阿牛 阅读(1895) 评论(1) 推荐(0) 编辑
摘要:public static class EmitDynamicProperty { private static ConcurrentDictionary<string, Delegate> action = new ConcurrentDictionary<string, Delegate>(); public static TRet DynamicGetProperty<TRet>(this object obj, string propertyName) { var type = obj.GetType(); ... 阅读全文
posted @ 2012-07-31 10:21 阿牛 阅读(284) 评论(0) 推荐(0) 编辑
摘要:调试UDP包交互时,在网上没有找到一个好的端口转发工具。便自己实现了一个UDP端口转发器。 .net 4.0 阅读全文
posted @ 2011-12-26 09:32 阿牛 阅读(277) 评论(0) 推荐(0) 编辑
摘要:OleDb执行Oracle带自定义函数的SQL深度历险 阅读全文
posted @ 2010-10-20 11:51 阿牛 阅读(863) 评论(0) 推荐(0) 编辑
摘要:http://files.cnblogs.com/evlon/webbrowser.7z 阅读全文
posted @ 2010-07-13 16:21 阿牛 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 朋友说开发电信的MMS,其实需要图片作为附件放在调用WebService接口上,使用Http的Content-Type: Multipart/Related;来发送,真让人感觉不伦不类的。不知道为什么不设计成一个字段是BASE64编码得了呗。 难道只能用朋友说的拼字段的方法了不? 我用Reflect分析了一下,貌似这样也可以实现。 我们知道,我们添加一个WebService引用时,会自动生成从 SoapHttpClientProtocol 的子类。我的想法是,我们写一个 继承自"SoapHttpClientProtocol” 的子类SoapHttpClientProtocolEX, 重写方法:GetWebRequest() 返回我们写的代码 HttpWebRequestEx类,然后在原始 HttpWebRequest 类的GetRequestStream()时,返回我们的流转移器:NetwordStreamEx ,并在方法关闭流 Close() 前,加入自定义的附件信息。 阅读全文
posted @ 2009-12-27 23:56 阿牛 阅读(1139) 评论(1) 推荐(0) 编辑
摘要: 新浪博客上好多牛人的博客,有时候想下载下来离线观看,便有了这个软件。 此软件本想做一个支持众博客的下载器,不过后来精力有限,只完成了新浪博客的部分博客的下载。 下载时,目前想从博客地址上,得到博客类型,然后加载不同的博客配置文件,从而获得文章列表分页信息,文章总数等信息,再依配置文件,匹配出博客文章地址。 目前支持在线查看博客,和导出博客到本地功能。(附程序和源码下载) 阅读全文
posted @ 2009-12-24 22:12 阿牛 阅读(650) 评论(0) 推荐(3) 编辑
摘要: 研究了一下,发现系统已经有这类的函数,晕吧!! 实现一个类似Func和Action的方法吧. 调用示例如下: object inst = new Program(); decimal ret = inst.Dynamic("HelloWorld", Guid.NewGuid(), 2009); 阅读全文
posted @ 2009-12-13 16:43 阿牛 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 上周五快下班时,看到一个博友BillGan文章:DynamicMethod (JIT Compiler encountered an internal limitation. )我还是相信中国人 ,当时没有太多时间,只是实现了调用静态方法的访问,不能称为动态方法调用。今天看到,BillGan好像已经死心了。 不过,其实没有那么绝望的吧,我实现了一个原型,原理是使用Emit声明一个变量,然后强制类型转化成类型,最后再去调用方法: 阅读全文
posted @ 2009-12-13 15:30 阿牛 阅读(2918) 评论(3) 推荐(2) 编辑
摘要: 在使用Dotnetfx2.0开发WinForm程序时,经常需要使用后台线程来进行运算,并把运算的过程数据,结果数据等信息更新显示到窗口中。由于窗体线程和工作线程不是一个线程,我们不能在工作线程中直接设置窗体中控件的属性,而需要使用Control.Invoke(Delegate del,...)来间接调用。其实,可以使用一个匿名函数很简单的调用。 阅读全文
posted @ 2009-10-24 23:30 阿牛 阅读(2767) 评论(11) 推荐(5) 编辑