简单分享一下我的home network infrastructure

1、网络环境与设备 网络环境是comcast的100mbps/6mbps (down/up) cable network 1)有线设备6个(1个安防NVR,4个wired network security camera,1个电视盒子) 2)无线设备 约10个(2部手机,2部平板,1台laptop ,1台desktop,3个wireless security camera,一个wireless smart doorbell , 一个wireless smart thermostat ) 2、需求 1)要有流控,家里的所有网络设备加起来有10多个,有时候某个设备突然爆流量会拖垮网络,比如NVR上传视频流到云存储服务器的时候,如果不加以流控会影响使用。然后我也有下载机,这是后话。 2)有简单网络文件分享功能,主要是下载了电影电视剧,能直接在电视盒子/平板上点播 3)有下载机,不用开电脑就能下载,可以在公司远程推送下载任务…

Read more →

我对控制翻转与依赖注入的理解

控制翻转与依赖注入是一种由java届兴起的设计模式,比较老了,不算什么新鲜东西,可能是有一堆java的程序员转行写php,所以也把这种设计模式带入到了php。 现在比较新的框架,例如lavarel和phalcon都是用到了这种设计模式。 我算是比较老的程序员了,从大学里面学的面向对象和面向过程的开发模式,转去接触这种概念有点不适应。 也不知道是语言问题还是其他人写的教材故弄玄虚,我觉得他们没有讲清楚。 现在简单地谈谈我的理解。 所谓控制翻转,就是系统中的对象里面的属性,不依赖纯代码实现,而是通过这个对象之外的参数来实现。 这些参数可以在对象生成的时候通过构造函数传递进去,也可以对象生成后通过set方法来设置。 比较普遍的是通过xml配置文件控制参数的。 给他起名叫控制翻转,纯粹是老外故弄玄虚。直接叫参数控制估计就很多人能懂了。这样可以增加代码重用和灵活性。毕竟改xml文件比改代码文件代价低。 理解了控制翻转,再去理解所谓的依赖注入就容易很多。 前面说了,基于控制翻转/参数控制的概念,我们需要用一些参数去操控对象。 因此对象依赖于这些参数,我传递参数过去的时候,就叫注入依赖。 现在很多高级的框架可以做到,这些参数只有在实际使用的时候才会被系统初始化,而不是传递/设置的时候就被初始化。这样可以使程序运行起来时更有效率。 说到这里,其实就引申到一个概念。 就是如果区分/定义一个对象,可注入还是非可注入。 可注入的对象,可以理解为一种容器,这种对象的特性和功能会随着你注入的参数改变。 自然,不可注入的对象,都是一种特定的对象,设计来就是为了干某种特定功能的,因此不可以也不需要参数注入来改变功能。

Read more →