初识angularjs
该框架是一个jsmvc框架,具备以下特点:
- 把应用程序数据绑定到 HTML 元素;
- 可以克隆和重复 HTML 元素。
- 可以隐藏和显示 HTML 元素。
- 可以在 HTML 元素”背后”添加代码。
- 支持输入验证。
观察者模式:
定义了对象的一对多依赖,这样一来,当一个对象改变状态的时候,它的所有依赖者都会收到通知并作出相应的动作;
当subject状态更新的时候,如果想要通知观察他的对象,那么subject本身势必要持有观察他的对象的集合,这样才会自身有状态更新的时候,根据集合去通知观察者;观察者众多,通知的时候肯定是通过统一的接口来调用观察者的方法,这个统一的接口可以看做observer;subject本身拥有观察者的集合,那么自身会有一些管理观察者的动作,这些动作可以集合在subject接口;
从observer角度来说,要实施观察动作,那么就需要持有一个subject对象;
示例代码:
1 | package com.vayne.design; |
观察者:
1 | package com.vayne.design; |
各自的一个实现:
1 | package com.vayne.design; |
1 | package com.vayne.design; |
几个原则:
参考《headfirst设计模式》
1 | /** |
下面是一个使用示例:
1 | package com.vayne.boot; |
总结:
可以将一些需要使用的必要的属性设置到context的environment里面,然后使用的时候直接取用就可以了。
1 |
|
可以看到,spring的代码风格,先用方法列出逻辑框架,然后逐一进行填充,值得学习;
后面就每一步进行详细的补充。
之前对java中的异常如何使用一直存在疑问。
问题:自己写的代码什么时候抛出异常,当偏离程序主流逻辑的时候应该如何返回?
这篇文章就是对这类问题下一个定论。
先来看官方对Exception的总结:
概括一下:
Advantage 1: Separating Error-Handling Code from "Regular" Code
分离regular代码和错误处理代码,这里的regular代码不知道怎么翻译,不过可以理解成我们期望发生的的代码的主要逻辑。
Advantage 2: Propagating Errors Up the Call Stack
把异常传播到调用栈栈顶。
Advantage 3: Grouping and Differentiating Error Types
分组和细分错误类型。
所以确定以下几个原则:
public方法要对自己的入参负责,即需要进行null判断;总而言之:
公钥可以到处分发,属于易得的东西,私钥只能自己持有。公钥加密的东西,只有对应的私钥可以解开;
概括:
公钥用来加密消息,私钥解密消息,也就是用于加解密;
私钥签名,公钥验证签名,也就是用于签名;
所以,公钥加密的东西,私钥可以解开;私钥加密的东西,公钥也可以解开;
一句话概括: 数字签名是用来验证传输的内容是否被篡改。
内容通过hash算法计算出摘要,然后用私钥进行加密,公钥拥有方获得之后,可以解出来,然后通过相同的hash算法计算摘要,如果摘要相同,说明内容未被篡改。一句话再概括, 数字签名是对摘要内容经过公私钥加密之后的一段信息,也叫指纹。
一个受信任的机构,比如公安局,政府这种(手动狗头);
一句话概括: CA证书是经过权威机构认证的公钥,注意,是公钥;相当于数字签名过的信息。前面讲过,私钥签名,公钥解密然后验证签名;
既然CA证书是用来保证公钥的有效性和可靠性,那CA公钥的可靠性谁来保证呢;操作系统内部一般都集成了可用的CA机构的公钥;想要自己的公钥被CA认证,也就是被CA用自己的私钥签名,就需要把自己的公钥和身份等相关信息交给CA,由CA给你签名,当然,一般都是收费的;
这篇博客非常不错:Goroutine并发调度模型深度解析
关于这篇博客的一些总结:
这种模型在内核看来,用户只有进程。也就是说,用户进程请求内核操作时,内核使用一个内核线程为其服务。用户进程内的线程划分,是由进程内用户自调度的,内核线程无感知。坏处是,用户线程发起某个阻塞性的内核操作时,内核方面是为用户进程服务的,那么用户内自划分的其他的线程实际上也是阻塞的,因为在内核看来,用户进程已经发起调用,占用一个内核线程了。
java.lang.Thread使用的就是这种模型。这种模型是,一个内核线程对应一个用户进程内的一个线程。如果创建很多用户线程,那么就对应的会创建很多内核线程,此时调度开销会急剧上升。不过现在java好像是开始支持n-m模型了。在网络性能上,讲道理应该与GO不相上下,劣势可能就在于java这种半解释半编译型语言内存方面的消耗了,毕竟有得就有失嘛。
未完待续…
方法集规定了方法的接收规则。
从值的角度,也就是被调用的方法里面参数的角度来说:
从接收者角度:
1 | type notifier interface{ |