应用

Spring AOP 实现原理与 CGLIB 应用

你。 提交于 2019-12-01 07:17:54
AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等。AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;而动态代理则在运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。 AOP 的存在价值 在传统 OOP 编程里以对象为核心,整个软件系统由系列相互依赖的对象所组成,而这些对象将被抽象成一个一个的类,并允许使用类继承来管理类与类之间一般到特殊的关系。随着软件规模的增大,应用的逐渐升级,慢慢出现了一些 OOP 很难解决的问题。 我们可以通过分析、抽象出一系列具有一定属性与行为的对象,并通过这些对象之间的协作来形成一个完整的软件功能。由于对象可以继承,因此我们可以把具有相同功能或相同特性的属性抽象到一个层次分明的类结构体系中。随着软件规范的不断扩大,专业化分工越来越系列,以及 OOP 应用实践的不断增多,随之也暴露出了一些 OOP 无法很好解决的问题。 现在假设系统中有 3 段完全相似的代码,这些代码通常会采用“复制”、“粘贴

Paxos算法在大型系统中常见的应用场景

一世执手 提交于 2019-11-29 09:32:44
在分布式算法领域,有个非常重要的算法叫Paxos, 它的重要性有多高呢,Google的Chubby [1]中提到 all working protocols for asynchronous consensus we have so far encountered have Paxos at their core. 关于Paxos算法的详述在维基百科中有更多介绍,中文版介绍的是choose value的规则[2],英文版介绍的是Paxos 3 phase commit的流程[3],中文版不是从英文版翻译而是独立写的,所以非常具有互补性。Paxos算法是由Leslie Lamport提出的,他在Paxos Made Simple[4]中写道 The Paxos algorithm, when presented in plain English, is very simple. 当你研究了很长一段时间Paxos算法还是有点迷糊的时候,看到上面这句话可能会有点沮丧。但是公认的它的算法还是比较繁琐的,尤其是要用程序员严谨的思维将所有细节理清的时候,你的脑袋里更是会充满了问号。Leslie Lamport也是用了长达9年的时间来完善这个算法的理论。 实际上对于一般的开发人员,我们并不需要了解Paxos所有细节及如何实现,只需要知道Paxos是一个分布式选举算法就够了

iOS 9音频应用播放音频之第一个ios9音频实例

孤街醉人 提交于 2019-11-28 16:57:58
iOS 9音频应用播放音频之第一个ios9音频实例 第一个ios9音频实例 为了让开发者可以对上面的内容有更加深入的了解,本节将实现播放音频的第一个实例。在此实例中会涉及到项目的创建、界面设计、关联以及功能代码等内容。 创建IOS9音频项目 在 iOS 开发中所有的应用程序都会存在一个项目,在项目中存放了 iOS 开发所需的各种文件。在 Xcode 7.0 中创建项目会与之前的有所不同,具体的操作步骤如下: ( 1 ) 打开 Xcode ,弹出 Welcome to Xcode 对话框,如图 2.8 所示。 图 2.8 Welcome to Xcode 对话框 ( 2 ) 选择 Create a new Xcode project 选项,弹出 Choose a template for your new project: 对话框,如图 2.9 所示。 图 2.9 Choose a template for your new project: 对话框 ( 3 ) 选择 iOS|Application 中的 Single View Application 模板,单击 Next 按钮后,弹出 Choose options for your new project: 对话框,如图 2.10 所示。 图 2.10 Choose options for your new project: