摘要:
一种根据纠偏数据对火星坐标进行完美拟合的方法(2011-02-15 13:30:27)转载▼标签:地图纠偏算法it(原创:小牙,QQ328959,转载请注明出处)从GPS设备取得真实坐标,转换为火星坐标(你懂得的),是比较头疼的一件事。比较主流的办法是根据纠偏数据(0.1级,0.01级)进行纠偏:通过选取与要校正的真实坐标最接近的点的偏移数据,加到真实坐标上,得到纠正后的火星坐标。这种方法受纠偏数据精度影响,当真实坐标离纠偏点比较远时,偏差很大,并且由于纠偏数据不连续,导致一组连续的坐标纠偏后,有比较明显的锯齿。从实际应用效果来看,采用0.1的纠偏数据,数据量比较小,大概1M多,但偏差大,锯齿 阅读全文
摘要:
数据库连接是在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. 插件的方法有限,直接写上方法代理,去除了动态生成方法调用的性能损失。 阅读全文
摘要:
虽说现在多数电脑都支持WIFI,但也有不支持的。 而现在安卓手机都带WIFI设备,于是抱着试试看的态度,让电脑通过手机的WIFI上网, 没有想到一举成功。 阅读全文
摘要:
当签出完整项目后,在解决方案名称上点右键,选择"启用NuGet程序包还原",如下图: 出现询问,当然要点是: 当完成后,会发现在解决方案中,多出".nuget"目录,里面也多出3个文件。 下面,我们开始下载所有需要的包, 仍在解决方案上点右键,选择"管理解决方案的NuGet程序包", 出现的对话框, 会提示"此解决方案中缺少某些NuGet程序包,单击... 阅读全文