轻量级KVO[译]】的更多相关文章

    在这篇文章中,我会实现一个自己用的简单KVO类,我认为KVO非常棒,然而对于我大部分的使用场景来说,有这两个问题: 1. 我不喜欢在observeValueForKeyPath:ofObject:change:context:方法里通过keyPath值来做调度,当Observe比较多的对象时,会使得代码变得杂乱和迷惑.  2. 必须手动的来注册和删除一个观察者,如果能自动做就好了.   So,我们开始这个实现.这个技巧我第一次是在THObserversAndBinders项目中见到,本篇…
作者:Jeff Dean, Sanjay Ghemawat 原文:http://leveldb.googlecode.com/svn/trunk/doc/index.html 译者:phylips@bmy 2011-8-16 译文:http://duanple.blog.163.com/blog/static/70971767201171705113636/ LevelDB库提供了一种永久性的key value存储.Key和value都是任意的字节序列.在这个key value存储系统中,key…
09年的一篇文章,比较深入地阐述了KVO的内部实现.   KVO是实现Cocoa Bindings的基础,它提供了一种方法,当某个属性改变时,相应的objects会被通知到.在其他语言中,这种观察者模式通常需要单独实现,而在Objective-C中,通常无须增加额外代码即可使用.   概览 这是怎么实现的呢?其实这都是通过Objective-C强大的运行时(runtime)实现的.当你第一次观察某个object时,runtime会创建一个新的继承原先class的subclass.在这个新的cla…
转载自:http://www.cocoachina.com/applenews/devnews/2014/0107/7667.html   09年的一篇文章,比较深入地阐述了KVO的内部实现.   KVO是实现Cocoa Bindings的基础,它提供了一种方法,当某个属性改变时,相应的objects会被通知到.在其他语言中,这种观察者模式通常需要单独实现,而在Objective-C中,通常无须增加额外代码即可使用.   概览 这是怎么实现的呢?其实这都是通过Objective-C强大的运行时(…
KVO的使用方法 注冊 [object addObserver:observer forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil]; 实现回调方法 -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { i…
有话说 之前我写了3篇关于表达式树解析的文章 干货!表达式树解析"框架"(1) 干货!表达式树解析"框架"(2) 干货!表达式树解析"框架"(3) 这3篇文章更多的是说明一种方法,一种思路,而代码比较少 在发出来之后也有些朋友互加了好友一起讨论 在经过一些时间的修改和优化后,就有了现在这个框架 目前这个框架实现了SqlServer和Oracle的解释 其他数据库1来是不熟2来没时间3来我更希望大家可以使用这个框架自己动手实现一个数据库的解析,非常…
如果你已经开发一段时间的iOS应用,你一定听说过Model-View-Controller, 即MVC.MVC是构建iOS app的标准模式.然而,最近我已经越来越厌倦MVC的一些缺点.在本文,我将重温一下MVC是什么,详述它的缺点,并且告诉你一个新的方式来架构你的app:Model-View-ViewModel.拿出你的流行语bingo card(宾果卡,一种游戏卡片-译者注),因为我们即将进行一次范式转变. Model-View-Controller Model-View-Controlle…
1. 引言 wangEditor——一款轻量级html富文本编辑器(开源软件) 网站:http://www.wangeditor.com/ demo演示:http://www.wangeditor.com/wangEditor/demo.html 下载(github):https://github.com/wangfupeng1988/wangEditor QQ群:164999061 从我发布wangEditor到现在,大概有七八个月了,随着近期增加的插入视频,表情,地图这三个功能,目前为止基本…
最近老翁在项目中多处用到了KVO,深感这种模式的好处.现总结如下: 一.概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了. KVO其实也是“观察者”设计模式的一种应用.我的看法是,这种模式有利于两个类间的解耦合,尤其是对于 业务逻辑与视图控制 这两个功能的解耦合. 二.引子 先来看个引子: 有一个业务类:Walker,在这个类内部只负责关于…
原文  https://github.com/bboyfeiyu/iOS-tech-frontier/blob/master/issue-3/Swift的响应式编程.md 原文链接 : Reactive Swift 原文作者 : Agnes Vasarhelyi 译文出自 : 开发技术前线 www.devtf.cn 译者 :Mr.Simple 校对者:Lollypo 状态 : 完成 让我们首先回到Apple刚推出Objective-C的继任者-Swift的时候,那真是一个非比寻常的时刻. Sir…
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意. 原因是,monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的. 互斥是一种会导致线程挂起,并在较短的时间内又需要重新调度回原线程的,较为消耗资源的操作. 为了优化Java的Lock机制,从Java6开始引入了轻量级锁的概念. 轻量级锁(Lightweight Locking)本意是为了减少多线程进入互斥的几率,并不是要替代互…
前几天,在codeproject搜索Silverlight资料,偶然看到这篇文章,耐心读了2遍,非常不错:文章通过访谈聊天形式叙述,2位主角目前在<斯法克斯国家工程学院>软件学院上学. 周五晚上,我给作者Houssem Dellai发gmail,咨询能否授权我翻译为中文,并发布. 3个小时后,他很爽快的回邮件说没有问题,给我一个原文链接就行. 英文原文地址: Android vs Windows Phone ———————————————————————————————————————————…
键值观察:值更改时通知观察者 键值观察(Key-value observing,或简称 KVO)允许对象观察另一个对象的属性.该属性值改变时,会通知观察对象.它了解新值以及旧值:如果观察的属性为对多的关系(例如数组),它也要了解哪个包含的对象发生了改变.KVO 有助于使应用程序变得更内聚,保持模型.控制器和视图层中的对象与改变同步. 与 NSNotificationCenter 通知相似,多个 KVO 观察者可以观察单一属性.此外,KVO 更动态,因为它允许对象观察任意属性,而不需任何新的 AP…
原文:[译]ASP.NET MVC 5 教程 - 5:使用 SQL 服务器 LocalDB 创建连接字符串 在上一节中,我们创建了MovieDBContext 类来连接数据库.处理Movie 对象和数据库记录的映射.你可能会问我们到底使用了哪个数据库?其实,在我们没有指定数据库的时候,Entity Framework 默认使用LocalDB .在本节中我们将介绍如何在Web.config 文件中添加一个数据库连接. SQL Server Express LocalDB LocalDB 是SQL…
IOS中KVO模式的解析与应用 最近老翁在项目中多处用到了KVO,深感这种模式的好处.现总结如下: 一.概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了. KVO其实也是“观察者”设计模式的一种应用.我的看法是,这种模式有利于两个类间的解耦合,尤其是对于 业务逻辑与视图控制 这两个功能的解耦合. 二.引子 先来看个引子: 有一个业务类:Wa…
By Lennart Poettering 译 SReadFox 原文链接:http://0pointer.de/blog/projects/systemd.html 译注:笔者大约在 2011 年读到此文,近日从 Pocket 里面翻出来.那时有些东西并不十分明白,只感觉会有一场 PK,当时 Ubuntu 已经默认切换到了 Upstart,但没有想到在社区引起如此大的争议.如今 systemd 已经占据了主流的发行版,尽管它被批判为不符合 Unix 设计哲学,但它的隐式依赖管理及事件驱动模式或…
导语: PEP(Python增强提案)几乎是 Python 社区中最重要的文档,它们提供了公告信息.指导流程.新功能的设计及使用说明等内容.对于学习者来说,PEP 是非常值得一读的第一手材料,学习中遇到的大部分难题,都能在 PEP 中找到答案或者解决思路. 我翻译了几篇 PEP,这么做的目的一方面是为了加强学习,另一方面也是为了锻炼自己的英文水平.Python 与 English,都是如此重要.翻译能将两者巧妙地结合起来,真是一举两得. 本文介绍了子生成器的语法,即 yield from 语法.…
我正打算写写 Python 的生成器,然而查资料时发现,引入生成器的 PEP 没人翻译过,因此就花了点时间翻译出来.如果在阅读时,你有读不懂的地方,不用怀疑,极有可能是我译得不到位.若出现这种情况,我建议你直接阅读原文,最好也能将错误处告知于我,以便做出修改. 原文:https://www.python.org/dev/peps/pep-0255 创建日期:2001-05-18 合入Python版本:2.2 译者 :豌豆花下猫(Python猫 公众号作者) PEP背景知识 :学习Python,怎…
关于flask我有话说 flask作为一个轻量级框架,它里面有好多扩展包需要下载,比较麻烦,而且有的时候flask需要在虚拟环境下运行,但是他的优点还是有滴 ,只要是用过Django的人,都会觉得flask是真的 '轻' Flask自由.灵活,可扩展性强,能结合最流行最强大的Python库 入门简单,即便没有多少web开发经验,也能很快做出网站 非常适用于小型网站 非常适用于开发web服务的API 开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验 各方面性能均等于或优…
Kubernetes及容器编排的总体介绍[译] 翻译自The New Stack<Kubernetes 生态环境>作者:JANAKIRAM MSV和 KRISHNAN SUBRAMANIAN 仅仅在几年前,无论是旧的cgroup还是流行的Docker或者CNCF rkt,最可能发挥Linux容器功能的地方还是在一些开发人员笔记本上的隔离的沙盒环境中.通常它还只是一个实验环境,最多是个开发平台,根本就不是数据中心的一部分. 而今天,容器已经成为在生产环境中部署新的.基于云的应用程序的实际选择.在…
本文译自Vulnerability Scanning with OpenVAS 9 part 1: Installation & Setup系列,本文将融合目前已经发表的四个部分. Part I:安装和使用 安装Openvas 9 要在我们的Kali Linux系统上安装Openvas 9及其依赖项,我们只需运行以下命令: apt-get update && apt-get install openvas 下一步运行安装过程,该过程将安装OpenVAS并下载大量网络漏洞测试(NVT…
简言:今天进行第八天的记录(只是写了八天).有的时候看的多,有的时候看的少,看的少的时候就攒几天一起写了.而今天这个插件我昨天写了一下午,下班没写完就回去了,今天把尾收了,再加上一个过程图方便下面原理的理解.我这个特别不爱看书的人都看半个多月了,希望我一个月真能养成个戒不掉的习惯~ 第八章 插件 在前一篇介绍了四个对象,是SqlSession执行过程中通过他们来完成数据库操作和结果返回的.(Executor.StatementHandler.ParameterHandler.ResultSetH…
张戈博客很久以前分享过一个CC攻击的防御脚本,写得不怎么样,不过被51CTO意外转载了.博客从此走上了经常被人拿来练手的不归之路. 当然,还是有不少朋友在生产环境使用,并且会留言询问相关问题.根据这些问题的需求,我花了一些时间重新写了一个比较满意的轻量级CC攻击防御脚本,我给它取了一个比较形象的名字:CCKiller,译为CC终结者. 一.功能申明 分享之前我必须先申明一下,众所周知,DDoS攻击指的是分布式拒绝服务.而CC攻击只是DDoS攻击的一种,本文所阐述的CC攻击,指的是每个IP都以高并…
參考文章来自objcio站点   为什么要编写轻量级的View Controller??   1.作为iOS项目中最大的文件,ViewControllers中的代码复用率差点儿是最低的 2.重量级的View COntroller加大了測试的复杂度.   所以关注ViewController的瘦身.把业务逻辑.网络请求.Views的代码移到合适的地方.进而提高代码可读性.减少耦合.提高复用.减少測试难度极为重要   一.把DataSource和其它Protocols分离出来     比方uiTab…
[译] 尤雨溪:Vue 3.0 计划 原文:Plans for the Next Iteration of Vue.js作者:Evan You 发表时间:Sep 30, 2018译者:西楼听雨 发表时间: 2018/10/5 (转载请注明出处) 上周,在Vue.js 伦敦会议上,我对 Vue 的下一个主版本将带来的东西做了一个粗略的介绍.这篇贴文则将提供一份关于这个计划的详细介绍. 为什么要出一个新的主版本? Vue 2.0 已经发布有整整两年了(时间过得可真快啊!).在这段时期,Vue 发布了…
原文链接:https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/ 原作者:Tobias Schottdorf 原文日期:Dec 9, 2015 译:zifeiy Cgo 是 Go 的一个非常重要的部分: 它是你调用任何任何非Go代码的窗口(或者更确切地说,任何由C语言绑定的东西). 对于 CockroachDB 来说, cgo 减轻了我们在处理连接 ROcksDB 的存储层(storage layer)时候的压力, 而…
来自:http://ifeve.com/inside-nginx-how-we-designed-for-performance-scale/ 这篇文章写了nginx的设计,写的很仔细全面, 同时里面好多链接的文章也是值得多看一看 原文链接:Inside NGINX: How We Designed for Performance & Scale 翻译:丁一 NGINX在web性能上的表现尤为出众,这完全得益于其设计方式,许多web和应用服务器都是基于线程或进程这种简单的架构,NGINX用了一种…
By Lennart Poettering 译 SReadFox 原文链接:http://0pointer.de/blog/projects/systemd.html 译注:笔者大约在 2011 年读到此文,近日从 Pocket 里面翻出来.那时有些东西并不十分明白,只感觉会有一场 PK,当时 Ubuntu 已经默认切换到了 Upstart,但没有想到在社区引起如此大的争议.如今 systemd 已经占据了主流的发行版,尽管它被批判为不符合 Unix 设计哲学,但它的隐式依赖管理及事件驱动模式或…
译<容器网络中OVS-DPDK的性能> 本文来自对Performance of OVS-DPDK in Container Networks的翻译. 概要--网络功能虚拟化(Network Function Virtualization,VFV)是一种突出的(prominent)技术,用虚拟化的网络软件来代替传统硬件网络节点.伴随着软件领域细分到微服务应用这一过程的发展,容器似乎(appear to)适应了应用程序的可靠性,可获得性,可操作性.为了促进(facilitate)在高稠密(high…
今天,我将Youtube上的<RxJS + Redux + React = Amazing!>翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: https://www.youtube.com/watch?v=AslncyG8whg 开场白 管理状态很困难,对吧?如果你写过复杂应用,你一定对此深恶痛绝.React社区还有Angular2社区和Ember社区现在都开始使用一个库,叫Redux.为什么?因为它让管理状态变得简单多了.但Redux有个问题,就是它对你写异步…