Key-value 的监控是一个 MVC 应用中非常有用的技术。KVOController (来自 facebook)构建了一个基于 Cocoa 的 time-tested key-value 监控实现,提供简单方便、线程安全的 API。好处包括:
使用 Blocks、自定义 Actions 或者 NSKeyValueObserving 回调进行通知.
观测者移除时无异常
控制器 dealloc 时隐式的观测者移除
提升使用 NSKeyValueObservingInitial 的性能
线程安全并提供在观测者恢复时额外的保护Thread-safety with special guards against observer resurrection – rdar://15985376.
使用方法:
// create KVO controller with observer FBKVOController *KVOController = [FBKVOController controllerWithObserver:self]; // observe clock date property [KVOController observe:clock keyPath:@"date" options:NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew block:^(ClockView *clockView, Clock *clock, NSDictionary *change) { // update clock view with new value clockView.date = change[NSKeyValueChangeNewKey]; }];
要求:
iOS 6 or later.
OS X 10.7 or later.
结构 Facebook出品的这个KVOController算上.h文件一共只有5个文件,如图: 其中NSObject+FBKVOController 之中只是制作了两个属性 @property (nonatomic, strong) FBKVOController *KVOController; @property (nonatomic, strong) FBKVOController *KVOC
KVO存在的问题 iOS原生KVO有诸多缺点。 1. 需要手动在dealloc中移除观察者,否则会crash。重复remove,也会crash 2. 复写的观察者方法。 3. 观察多个对象时,需要在方法中if else判断 4. 通过context判断上下文 KVOController结构 FB开源的KVOController完美的解决了上述的问题 FBKVOController:负责管理Obse
KVOController是FaceBook的一个开源库,提供了方便的姿势让你去使用KVO。 github.com/facebook/KV… 大概的用法如下: [self.KVOController observe:target keyPath:keyPath options:NSKeyValueObservingOptionNew block:^(id observer, id object,
KVO以及facebook开源库KVOController的使用 KVO,即:Key-Value Observing,当特定对象的属性被改变后,观察者会接收到通知。 假设一个View Controler 里面有一个Clock类,有一个时间data属性标示当前时间,每隔一秒变化一次, 一个UILabel, Clock的data属性不断变化后会显示显示到label上 在ViewController.m
源码: github.com/facebook/KV… 版本: v1.2.0 用途: 更加方便的使用 KVO 相关类 _FBKVOInfo { @public __weak FBKVOController *_controller; // 防止观察者释放了然而_controller没有释放 NSString *_keyPath; NSKeyValueObservingOptions _
KVO,即:Key-Value Observing,当特定对象的属性被改变后,观察者会接收到通知。 假设一个View Controler 里面有一个Clock类,有一个时间data属性标示当前时间,每隔一秒变化一次, 一个UILabel, Clock的data属性不断变化后会显示显示到label上 在ViewController.m 中,, //定义context <span style="fon
2015 7,7 一天一工程总结系列 对各类优秀工程的剖析和拙见。有些胡言乱语还请作者谅解。 KVOController 1结构 1.1.@interface NSObject (FBKVOController)--可以用这种方式 1.2.FBKVOController--可以用这种方式 包括以下类 @interface _FBKVOInfo : NSObject @interface _FB
Websocket-外汇 接口: watch_jinshi_fx 目标地址: https://datacenter.jin10.com/market 描述: 获取商品、外汇、股市、美股、国债、指数实时行情数据, 如需要存储数据请修改 on_message 接口 限量: 主动推送 输入参数 名称 类型 必选 描述 - - - - 输出参数 名称 类型 默认显示 描述 - - - 基于 websock
APM 厂商「云智慧」是 DaoCloud 的合作伙伴,云智慧提供了用于 Docker 监控的产品,可用于 DaoCloud 上部署的应用,以下内容由云智慧公司提供。 Docker 监控 2015年9月7日,中国 APM 厂商云智慧(CloudWise)正式发布上线 Docker 监控。产品从部署到使用,整个过程都非常的简单。 Docker 监控不仅能够实时监控宿主机和 Docker 容器的性能信
Sentinel 提供对所有资源的实时监控。如果需要实时监控,客户端需引入以下依赖(以 Maven 为例): <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-transport-simple-http</artifactId> <version>x.y.z</version> </de
本文介绍了,小米公司在 Open-Falcon集群自监控方面 的一些实践。 概述 我们把对监控系统的监控,称为监控系统的自监控。自监控的需求,没有超出监控的业务范畴。同其他系统一样,自监控要做好两方面的工作: 故障报警和状态展示。故障报警,要求尽量实时的发现故障、及时的通知负责人,要求高可用性。状态展示,多用于事前预测、事后追查,实时性、可用性要求 较故障报警 低一个量级。下面我们从这两个方面,分
在数据采集一节中我们介绍了常见的监控数据源。open-falcon作为一个监控框架,可以去采集任何系统的监控指标数据,只要将监控数据组织为open-falcon规范的格式就OK了。 MySQL的数据采集可以通过mymon来做。 工作原理 mymon是一个cron,每分钟跑一次,配置文件中配置了数据库连接地址,mymon连到该数据库,采集一些监控指标,比如global status, global
本文向大家介绍Java实现ZooKeeper的zNode监控,包括了Java实现ZooKeeper的zNode监控的使用技巧和注意事项,需要的朋友参考一下 上一篇文章已经完成了ZooKeeper的基本搭建和使用的介绍,现在开始用代码说话。参考 https://zookeeper.apache.org/doc/current/javaExample.html ,但对场景和代码都做了简化,只实现基本的
目录大小和进程详情的数据采集可用脚本falcon-scripts来做。 收集的指标如下: 指标名 注释 du.bytes.used 目录大小,单位byte proc.cpu 进程所占cpu,百分比 proc.mem 进程所占内存,单位byte proc.io.in 进程io输入,单位byte proc.io.out 进程io输出,单位byte 工作原理 du.sh脚本借助du命令采集数据 proc
5. 监控 好的监控可以帮助了解项目的运行状态,更及时的发现问题。本章主要介绍Camel对Nginx服务器的监控。共有两种监控类型: QPS监控 监控Nginx的QPS访问量 状态码监控 由upstream的http返回状态码,监控业务服务器的响应状态