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