动态

Android组件体系之BroadcastReceiver小结

会有一股神秘感。 提交于 2019-12-10 21:16:20
1、常见分类 BroadCastReceiver,按注册方式可以分为静态广播接收器和动态广播接收器。 静态广播接收器:不受程序是否启动的约束,当应用程序关闭之后,还是可以接收到广播(一般广播接收器的生命周期是和当前活动的生命周期保持同步)。 动态广播接收器:可以自由的控制注册和取消,有很大的灵活性。但是只能在程序启动之后才能收到广播。 对于广播(Broadcast),则可以分为普通广播和有序广播。 其中普通广播不在意顺序,各进程的广播接收器基本上可以同时收到这个广播。而有序广播,系统会根据接收者声明的优先级按顺序逐个接收处理,先收到有序广播的接收器,可以对该有序广播进行修改或者截断。 静态注册的广播接收器,在接收广播时,系统自动按有序广播的方式来串行处理(原因是进程的创建不能并发),此类接收器收到广播的先后顺序,和接收器所在package名称有关,或者说,和PMS扫描顺序有关。 动态注册的广播接收器,如果接收普通广播,接收器收到广播的顺序则和注册顺序有关。在所有普通广播里面,动态注册的广播接收器,相对于静态注册的广播接收器,会优先收到普通广播。 同优先级的动态有序广播,注册顺序影响广播的接收顺序;同优先级的静态有序广播,扫描顺序影响其接收顺序。 除了前面提到的这些,还有一种相对不太常用的:LocalBroadcastManager方式注册的应用内广播接收器

CAD动态提示操作(com接口网页版)

夙愿已清 提交于 2019-12-10 15:19:53
鼠标移动到实体上后,停留一会,控件可能得到该实体对象,然后能动态提示一些信息。响应控件事件:DMxDrawXEvents::InputPointToolTipEvent,详细说明参考: http://www.mxdraw.com/help/MxDrawXLib___DMxDrawXEvents__InputPointToolTipEvent@IDispatch_@BSTR_.htm ,调用函数SetDynToolTipPopTime设置动态提示时间。 1. 增加InputPointToolTipEvent事件响应函数: document.getElementById("MxDrawXCtrl").ImpInputPointToolTipFun = DoInputPointToolTipFun; 2. 在事件中返回需要提示的字符串,在事件代码里,把对象类型名提示出来: function DoInputPointToolTipFun(ent) { { var sClassName = ent.ObjectName; var tip = "<b><ct=0x0000FF><al_c>"+sClassName+ "</b><br><ct=0x00AA00><hr=100%></ct><br>"; mxOcx.SetEventRetString(tip); } ent = null;

第6章 RPC之道

ⅰ亾dé卋堺 提交于 2019-12-10 13:23:29
    6.1 认识RPC      分布式、微服务的架构思维中都不能缺少 RPC 的影子       RPC(Remote Procedure Call)远程过程调用。通过网络在跨进程的两台服务器之间传输信息,我们使用的时候不用关心网络底层的实现,通过RPC调用远程服务就像本地调用系统内部方法一样方便。      在 OSI 网络通信模型中,RPC跨越了传输层和应用层,使开发分布式应用程序变得非常方便。      RPC基本的调用过程如下图。客户端发起一个 RPC请求,本地调用 client stub 负责将调用的接口、方法和参数按照事先约定好的协议进行序列化,然后由 RPC 框架的 RPCRuntime 实例通过 socket 传输到远程服务器上。      远程服务器端 RPCRuntime 实例收到请求后再通过 server stub 进行反序列化,发起最终的 server method 调用。       一个良好的 RPC框架要兼具可靠性和易用性,可靠性方面要保证 I/O、序列化等准确处理,还要考虑网络的不确定性,心跳、网络闪断等因素;易用性方面要考虑超时与重试机制的控制,同步和异步调用的使用等。以上都是考量一个 RPC框架好坏的标准。       目前有很多优秀的开源 RPC框架,比如国内的 Dubbo(阿里)、Motan(新浪微博)等。   6.2

Nginx-配置动静分离实例

。_饼干妹妹 提交于 2019-12-10 10:10:21
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大致分为两种, 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案; 另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。 通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200。 实验代码 1. 项目资源准备 2. 进行 nginx 配置 找到 nginx 安装目录,打开 /conf/nginx.conf 配置文件, 添加监听端口、访问名字 重点是添加 location

使用@selector动态加载方法

倾然丶 夕夏残阳落幕 提交于 2019-12-10 08:10:57
Objective-C能够动态识别方法,通过在运行时实用@selector方法,动态加载需要的方法。这是Objective-C灵活性的一点儿。这里简单说说如何使用@selector动态加载方法。 如何定义@selector? 通过Objective-C的SEL关键字可以定义一个selector,简单定义如下: SEL selName = @selector(methodName); 不过需要注意的是,这里的methodName是方法名,不能加引号的。但这点似乎并不能完全满足动态加载的要求,如果用户需要自行加载一个方法呢?如果 能够使用一个NSString对象来传递用户自行加载的方法则更灵活的多,行不行呢?当然可以,我们可以使用如下方法来定义一个SEL: SEL selName = NSSelectorFromString(methodNameString); NSSelectorFromString(NSString *)方法可以通过传递一个NSString对象来创建一个selector,这样就方便多了。不过需要注意的是,这个NSString对象的内容一定要符合方法命名规则,以免出错。 如何使用@selector? 只定义不使用这没有什么用。任何对象都是继承自NSObject,NSObject自身有selector的使用方法。这里说两个,一个是判断selector方法是否存在

Cocos2d Box2D之动态刚体

£可爱£侵袭症+ 提交于 2019-12-10 03:22:01
| 版权声明:本文为博主原创文章,未经博主允许不得转载。 b2_dynamicBody 动态物体可以进行全模拟。用户可以用手手动移动动态刚体,也可以由动态刚体自己受力而自运动。动态物体可以和任何物体发生碰撞,拥有有限的非零质量。当设置动态物体的质量为零,那么动态刚体它会自动设置一个1千克质量的物体,而不会质量为0,在Box2D中物体总是刚体。动态Body也就是在物理世界中受力的运动的物体。 add BodyDef set bodyDef gravity set Linear Velocity *. 如果需要横向移动的话,只需要将b2Vec2(x,y)中的x!=0即可 来源: https://www.cnblogs.com/geore/p/5799829.html

Linux字符设备动态申请设备号

独自空忆成欢 提交于 2019-12-10 00:55:25
alloc_chrdev_region是一个函数语句,头文件是<linux/fs.h>,可以动态分配设备编号。int alloc_chrdev_region(dev_t *dev,unsigned int -firstminor,unsigned int -count,char *name); dev_t *dev:用于返回的设备号参数 unsigned int -firstminor:默认为0 unsigned int -count:请求连续设备号的个数 char *name:待注册的设备名称在不再使用时释放这些设备编号void unregister_chrdev_region(dev_t from, unsigned int count); //////////////////////////////////////////////////////////////////////// dev_t dev = 0; ret = alloc_chrdev_region(&dev, 0, 1,DEVICE_NAME); if(ret<0) { printk(KERN_ERR "register_chrdev_region error\r\n"); goto alloc_err; } ///////////////////////////////////////////////////

Vue Class 与 style 动态绑定

旧巷老猫 提交于 2019-12-09 19:21:34
Vue Class 与 style 动态绑定 出自: https://learning.dcloud.io/#/?vid=7 1, 对象形式绑定 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div id="app"> <div class="test" v-bind:class="{active : isActive,green:isGreen}" style="width: 200px; height: 200px; text-align: center; line-height: 200px;"> hi vue </div> </div> <script type="text/javascript"> var vm = new Vue({ el: "#app", data: { isActive: true, isGreen:false } }) </script> <style> .active {background: #FF0000;} .green{color: #00FF00;} .test

sp_executesql介绍和使用

∥☆過路亽.° 提交于 2019-12-09 19:06:32
execute相信大家都用的用熟了,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的, 如: exec sp_executesql @sql , N' @count int out,@id varchar(20)', @cou out ,@id @sql为拼成的动态sql N'@count int out,@id varchar(20)'为拼成的动态sql内的参数列表 @cou out,@id为为动态sql内参数列表提供值的外部参数列表 那么它们之间有什么区别呢? 1,它们之间最大的区别是嵌入式的参数,如下面一个语句 declare @sql nvarchar(2000) declare @id varchar(20) set @id='1' set @sql='select count(*) from emp where id=' + @id exec @sql 我想把得到的count(*)传出来,用传统的exec是不好办到的,但是用sp_executesql则很容易就办到了: declare @sql nvarchar(2000) declare @cou int declare @id varchar(20) set @id='1' set @sql='select

如何实现报表数据的动态层次钻取(二)

我怕爱的太早我们不能终老 提交于 2019-12-09 16:29:02
上一篇《如何实现报表数据的动态层次钻取(一)》介绍了利用复杂 sql 实现动态层次结构的方法,但该方法依赖 Oracle 的递归语法,在其他类型的数据库中难以实现。要想通用地实现此类报表,可以使用下面介绍的“集算脚本 + 本地文件”的方法。 《各级部门 KPI 报表》的格式和具体要求参见上一篇文章。有所不同的是,报表数据源从数据库表变为本地文件:tree.b(树形结构维表)和 kpi.b(指标事实表),数据示例如下图: Tree 文件数据 Kpi 文件数据 说明:Tree 的叶子节点,通过 id 字段与 kpi 表关联。KPI 文件每个 ID 每天都会新增 kpi 记录,总数据量较大。 具体实现步骤如下: 第一步 编写集算脚本 tree.dfx,完成源数据计算,输入参数为当前节点号 id。 集算脚本如下: A B C 1 =[“省”,“地市”,“区县”,“营业部”]|to(4,13).(“架构”+string(~)) =file(“D:\\files\\tree.b”).import@b() =file(“D:\\files\\kpi.b”).cursor@b() 2 =B1.switch(PID,B1:ID) =B1.select@1(ID==string(id)) =B2.prior(PID).rvs() 3 =C2.new(ID,NAME,A1.m(#):title)