星文快投v2全新升级】的更多相关文章

2017-07-31 关于“星文快投”,我的初衷是:简单.稳定.可定制的投标软件.前期版本其实也基本达到这个目标了,系统跑起来后,几天下来也累积过手三十多万个标的了,自动投标也工作正常,作为一个纯粹的工具,应该是达标了.不过,随着应用的深入,我也不断在思考: 1.用哪些属性来构造策略?可以用来组成策略的属性有很多,从接口来说,有最先获取到的摘要属性,如利率.金额等,还有随后可以获得的详细信息.除此以外,还可以从接口信息推算出进一步的信息,如通过毕业学校推算出“是否985/211高校”,通过投标的…
多年之前利用IL Emit写了一个名为Dora.Interception(github地址,觉得不错不妨给一颗星)的AOP框架.前几天利用Roslyn的Source Generator对自己为公司写的一个GraphQL框架进行改造,性能得到显著的提高,觉得类似的机制同样可以用在AOP框架上,实验证明这样的实现方式不仅仅极大地改善性能(包括执行耗时和GC内存分配),而且让很多的功能特性变得简单了很多.这并不是说IL Emit性能不好(其实恰好相反),而是因为这样的实现太复杂,面向IL编程比写汇编差…
在Dora.Interception(github地址,觉得不错不妨给一颗星)中按照约定方式定义的拦截器可以采用多种方式注册到目标方法上.本篇文章介绍最常用的基于"特性标注"的拦截器注册方式,下一篇会介绍另一种基于(Lambda)表达式的注册方式.如果原生定义的这两种注册方式不能满足要求,利用框架提供的扩展,我们可以完成任何你想要的拦截器注册手段.(拙著<ASP.NET Core 6框架揭秘>于日前上市,加入读者群享6折优惠) 目录 一.InterceptorAttribu…
如果拦截器应用的目标类型是由自己定义的,Dora.Interception(github地址,觉得不错不妨给一颗星)可以在其类型或成员上标注InterceptorAttribute特性来应用对应的拦截器.如果对那个的程序集是由第三方提供的呢?此时我们可以采用提供的第二种基于表达式的拦截器应用方式.这里的拦截器是一个调用目标类型某个方法或者提取某个属性的Lambda表达式,我们采用这种强类型的编程方式得到目标方法,并提升编程体验.(拙著<ASP.NET Core 6框架揭秘>于日前上市,加入读者…
本系列前面的五篇文章主要介绍Dora.Interception(github地址,觉得不错不妨给一颗星)的编程模式以及对它的扩展定制,现在我们来聊聊它的设计和实现原理.(拙著<ASP.NET Core 6框架揭秘>6折优惠,首印送签名专属书签). 目录 一.调用链抽象 二.基于约定的拦截器定义 三.基于调用上下文的依赖注入容器 四.拦截器的提供 五.调用链的构建 六.方法拦截的实现原理 七.依赖注入框架的整合 八.看看生成的代理类 一.调用链抽象 从设计模式来看,Dora.Intercepti…
CyberArticle (网文快捕)是一款知识管理软件,主要致力于网页的保存和后期管理.CyberArticle (网文快捕)主要功能,就是收集和整理网页.利用CyberArticle (网文快捕),您可以方便的在各种浏览器内,例如IE以及IE核心的浏览器,Firefox,Google Chrome,苹果Safari,Opera等浏览器,保存您正在浏览的网页,或者批量保存您关心的网页.同时,CyberArticle (网文快捕)还可以管理各种资料,例如Office文档(doc,xls,ppt)…
2018年,移动端适配话题热闹无比,有iOS新版本新机型发布,全面屏.异形屏.曲面屏争相斗艳,从而产生了各类特殊的屏幕分辨率设备. 正是因为这些特殊分辨率,导致2018年手机设备频繁出现适配问题,如屏幕显示不全.双边未占满.顶部导航栏高度不对导致部分被遮挡,包括之前经常被用户提及的黑屏.闪退.安装失败等问题.特别是iOS设备在18年推出三款新的 iPhone:6.1英寸的iPhone XR.5.8英寸的iPhone XS.6.5英寸的iPhone XS Max.加上iOS版本升级成iOS 12,…
随着移动互联网的飞速发展,如何增强社交关系.留住用户的心已成为移动社交化时代各类App持续探索的问题,除了接入即时通讯的能力,众多社交平台开始通过趣味性十足的红包功能为App中的社交场景赋能.当即时通讯遇到了红包,产生了神奇的化学反应,用户间的互动变得更活跃,同时由于形成了资金往来的强社交关系,用户更愿意长久地留在App中.所以,假如你的App只能聊天却不能发红包,那就OUT了! 融云作为即时通讯的领跑者,基于自身技术服务优势,在提供即时通讯功能的同时,还为App 用户们提供用“钱”交流感情的方…
Dora.Interception有别于其他AOP框架的最大的一个特点就是采用针对"约定"的拦截器定义方式.如果我们为拦截器定义了一个接口或者基类,那么拦截方法将失去任意注册依赖服务的灵活性.除此之外,由于我们采用了动态代码生成的机制,我们可以针对每一个目标方法生成对应的方法调用上下文,所以定义在拦截上下文上针对参数和返回值的提取和设置都是泛型方法,这样可以避免无谓的装箱和拆箱操作,进而将引入拦截带来的性能影响降到最低.(拙著<ASP.NET Core 6框架揭秘>于日前上…
Dora.Interception提供了两种拦截器注册方式,一种是利用标注在目标类型.属性和方法上的InterceptorAttribute特性,另一种采用基于目标方法或者属性的调用表达式.通过提供的扩展点,我们可以任何我们希望的拦截器注册方式.(拙著<ASP.NET Core 6框架揭秘>6折优惠,首印送签名专属书签) 一.IInterceptorProvider 拦截器最终需要应用到某个具体的目标方法上,所以拦截器的注册就是如何建立拦截器与目标方法之间的映射关系,Dora.Intercep…