第十七章.中介者模式 中介者模式也称为调解者模式或调停者模式,是一种行为型模式. 1.定义 中介者模式包装了一系列对象相互作用的方式.使得这些对象不必相互明显作用.从而使它们能够松散耦合.当某些对象之间的作用发生改变时.不会马上影响其它的一些对象之间的作用.保证这些作用能够彼此独立的变化. 2.使用场景 当对象之间的交互操作非常多且每一个对象的行为操作都依赖彼此时,为防止在改动一个对象的行为时.同一时候涉及非常多其它对象的行为,可使用中介者模式. 3.UML类图 (1)Mediator:抽象中介…
第十四章.迭代器模式 迭代器模式,又叫做游标模式.是行为型设计模式之中的一个.我们知道对容器对象的訪问必定会涉及遍历算法.我们能够将遍历的方法封装在容器中,或者不提供遍历方法,让使用容器的人自己去实现去吧. 这两种情况好像都能够解决这个问题. 然而在前一种情况.容器承受了过多的功能.它不仅要负责自己"容器"内的元素维护(加入.删除等等),并且还要提供遍历自身的接口:并且因为遍历状态保存的问题,不能对同一个容器对象同一时候进行多个遍历.另外一种方式倒是省事,却又将容器的内部细节暴露无遗.…
第十章.解释器模式 解释器模式是一种用的比較少的行为型模式.其提供了一种解释语言的语法或表达式的方式. 可是它的使用场景确实非常广泛,仅仅是由于我们自己非常少回去构造一个语言的文法,所以使用较少. 1.定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. (当中语言就是我们须要解释的对象,文法就是这个语言的规律,解释器就是翻译机.通过文法来翻译语言.) 2.使用场景 1.假设某个简单的语言须要解释运行并且能够将该语言中的语句表示为一个抽象的语法树时…
第二十章.适配器模式 适配器模式是结构型设计模式之中的一个,它在我们的开发中使用率极高,比方ListView.GridView以及RecyclerView都须要使用Adapter. 1.定义 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而使原本因接口不匹配无法在一起工作的两个类能够在一起工作. 2.使用场景 (1)系统须要使用现有的类.但此类的接口不符合系统的须要.即接口不兼容. (2)想要建立一个能够反复使用的类.用于与一些彼此之间没有太大关联的一些类,包含一些可能在将来…
第十八章.代理模式 代理模式也称托付模式,是结构型设计模式之中的一个.是应用广泛的模式之中的一个. 1.定义 为其它对象提供一种代理以控制对这个对象的訪问. 2.使用场景 当无法或不想直接訪问某个对象或訪问某个对象存在困难时能够通过一个代理对象来间接訪问,为了保证client使用的透明性.托付对象与代理对象须要实现相同的接口. 3.UML类图 (1)Subject:抽象主题类.声明真实主题与共同接口方法,该类能够是抽象类或接口. (2)RealSubject:真实主题类(被托付类).尤其运行详细…
1.定义 将对象组合成树形结构以表示"部分-总体"的层次结构,使得用户对单个对象和组合对象的使用具有一致性. 2.使用场景 (1)表示对象的部分-总体层次结构时. (2)从一个总体中可以独立出部分模块或功能的场景. 3.UML类图 (1)Component:抽象根节点,为组合中的对象声明接口.在适当的情况下.实现全部类共同拥有接口的缺省行为. 声明一个接口用于訪问和管理Component的子节点.可在递归结构中定义一个接口,用于訪问一个父节点,并在合适的情况下实现它. (2)Compo…
第八章.状态模式 1.定义 状态模式中的行为是由状态来决定,不同的状态下有不同的行为.当一个对象的内在状态改变时同意改变其行为,这个对象看起来像是改变了其类. 2.使用场景 1.一个对象的行为取决于它的状态,而且它必须在执行时依据状态改变它的行为. 2.代码中包括大量与对象状态有关的条件语句,比如,一个操作中含有大量的多分支语句.且这些分支依赖于该对象的状态. 3.简单实现 实现效果:首先将电视的状态分为开机与关机状态,开机时能够通过遥控器实现频道切换和调节音量,可是关机时,这些操作都会失效.…
断断续续的,<Android源代码设计模式解析>也看了一遍.书中提到了非常多的设计模式.可是有部分在开发中见到的几率非常小,所以掌握不了也没有太大影响. 我认为这本书的最大价值有两点,一个是从设计模式的角度去理解Android源代码,结合着日常开发中的经常使用类,对设计模式的理解会更加的深刻:另外一个优点就是了解经常使用模式.再看其它人写的代码的时候,更easy理解代码思路. 以下是我的读书笔记和一些思考,设计模式仅仅整理我认为重要的部分. 建造者模式 建造者模式最明显的标志就是Build类,…
iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的应用12.导航工具13.企业应用 Delegation模式——delegation(委托)模式就是使用回调机制 NSData.NSMutableData——存放二进制数据的数据类型 对于画图,你首先需要重载drawRect方法.UIKit提供了如下方法:UIRectFill(CGRect rect)…
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. 降维技术的用途 使得数据集更易使用: 降低很多算法的计算开销: 去除噪声: 使得结果易懂. 基本概念 降维(dimensionality reduction). 如果样本数据的特征维度很大,会使得难以分析和理解.我们可以通过降维技术减少维度. 降维技术并不是将影响少的特征去掉,而是将样本数据集转换成一个低维度…
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growth算法 FP-growth算法的性能很好,只需要扫描两次数据集,就能生成频繁项集.但不能用于发现关联规则. 我想应该可以使用Apriori算法发现关联规则. FP代表频繁模式(Frequent Pattern). 条件模式基(conditional pattern base). 条件模式基是以所查找元素项为结…
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(association analysis)或者关联规则学习(association rule learning) 这是非监督学习的一个特定的目标:发现数据的关联(association)关系.简单的说,就是那些数据(或者数据特征)会一起出现. 关联分析的目标包括两项:发现频繁项集和发现关联规则.首先需要找到频繁项集,然后才能…
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是,有时会发现生成的算法\(f(x)\)的错误率比较高,只使用这个算法达不到要求. 这时\(f(x)\)就是一个弱算法. 在以前学习算法的过程中,我们认识到算法的参数很重要,所以把公式改写成这样: \[ f(x,arguments) \\ where \\ \qquad x \text{ : calculated…
Spring实战读书笔记 Spring-core Spring之旅 - DI 和 AOP 概念 spring 的Bean容器 spring 的 核心模块 Spring的核心策略 POJO 最小侵入式编程 Spring不会强迫你实现接口或者继承类,通过DI来装配POJO类型. 采用依赖注入和面向接口实现松耦合 依赖反转容器(IOC):将整体设计和局部实现之间的依赖关系反转,比如汽车厂设计汽车:如果先设计轮子,再根据轮子设计底盘,再根据底盘设计汽车,在我们更换轮子的时候就会由于轮子和底盘之间依赖关系…
<<Java RESTful Web Service实战>> 读书笔记 第一章   JAX-RS2.0入门 REST (Representational State ransfer) 表述性状态转移 REST 具有跨平台跨语言的优势 RPC请求都是HTTP协议的POST方法,使用SOAP协议和HTTP协议 RPC 是面向方法的调用 REST 是面向资源状态的 架构风格  RPC.REST.MVC JAX-RS .JAX-WS Jersey 第二章JAX-RS2.0快速实现 J2SE…
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第6章:SVM 支持向量机. 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知识,需要慢慢地理解.我也是通过看别人的博客理解SVM的. 推荐大家看看on2way的SVM系列: 解密SVM系列(一):关于拉格朗日乘子法和KKT条件 解密SVM系列(二):SVM的理论基础 解密SVM系列(三):SMO算法原理与实战求解 解密SVM系列(四):SVM非线性分类原理实验 基本概念 SVM -…
前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,IDE是Intellij,数据库为mySql.在Spring Web中,一般把系统划分为3个部分: 1.持久层----数据库的操作 2.业务层----主要的业务逻辑判断 3.展现层----展示给用户的操作界面 这是一种大而化之的分类方式,比如展现层可能是html,也可能是移动端的App.持久层可能操作的数据库也…
声明:    本篇博客绝大多数内容为<Spring3.x企业开发应用实战>一书原内容,所有版权归原书作者所有!,仅供学习参考,勿作他用! 3.2 相关Java基础知识 Java语言允许通过程序化的方式间接对Class对象实例操作,Class文件由类装载器装在后,在JVM(Java虚拟机)中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息: 如构造函数.属性和方法等.Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能,这就为使用程…
Maven的生命周期是对所有构建过程的抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有构建步骤. Maven的生命周期是抽象的,其实际行为是由插件来完成的,生命周期和插件两者协同合作,密不可分. 这种思想与设计模式中的模板方法非常相似.模板方法模式在父类定义算法的整体结构,子类通过实现或者重写父类的方法来控制实际行为,这样既能保证算法有足够的可扩展性,又能严格控制算法的整体结构. 4.1 生命周期 Maven拥有3套独立的生命周期:clean.de…
原文地址: https://www.cnblogs.com/steven-yang/p/5686473.html ----------------------------------------------------------------------------------------------------------------- 前言 最近在看Peter Harrington写的“机器学习实战”,这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 这个思路称之…
软件测试基础 软件的复杂度已经超越了人的理解能力 1. 虽然高抽象的层次语言,程序框架,程序库等提高了人的生产力,但是还是需要开发者深入理解细节,可以减少开发时间,但是无法减少开发者学习整个技术栈的时间 2. 对于复杂的软件,如果测试人员不能掌握全部的信息,那么他的测试策略已经会错误(对于开发也是如此),所以需要和各个工作岗位的人进行协作 3. 软件复杂,所以测试用例需要进行迭代,持续地评估和反思 4. 大规模的软件中,对于少量代码的变更都不能掉以轻心 5. 单凭人的脑力已经很难应对复杂的软件测…
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第14章 - 利用SVD简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. 基本概念 降维(dimensionality reduction). 如果样本数据的特征维度很大,会使得难以分析和理解.我们可以通过降维技术减少维度. 降维技术并不是将影响少的特征去掉,而是将样本数据集转换成一个低维度的数据集. 降维技术的用途 使得数据集更易使用: 降低很多算法的计算开销: 去除噪声: 使得结…
2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow=TRUE/FALSE,表示按行填充还是按列填充,默认情况下是按列填充 2.2.4 数据框 1.attach,detach()和with() attach():将数据框加入搜索路径 detach():将数据框移除出搜索路径 with():赋值仅在括号内有效,如果想在括号外生效也可以,用<<- 2.…
第一章.开始启程,你的第一行android代码 1.android系统架构: 1)linux内核层:为底层硬件提供驱动,如显示驱动.音频驱动.照相机驱动.蓝牙驱动.Wifi驱动.电源管理等 2)系统运行库层:用C/C++实现的各种底层库,如:OpenGL/ES库提供了3D绘图的支持,Webkit提供了浏览器内裤的支持,Dalvik虚拟机(Java的虚拟机) 2.5)android运行时:由android核心库集和ART组成,ART是虚拟机. 3)应用框架层:提供各种API 4)应用层:手机上的各…
多线程的基础概念本人在学习多线程的时候发现一本书——java多线程编程实战指南.整理了一下书中的概念制作成了思维导图的形式.按照书中的章节整理,并添加一些个人的理解.…
一个Spring加载属性的工具类,指定目标位置之后可以用${}的方式加载配置文件 测试maven工程发送email的例子:运行成功的例子—github 常用的命令: mvn clean compile mvn clean test mvn clean package mvn clean install mvn archetype:generate  生成一个maven骨架,不用每次一个个目录新建 <maven实战>第五章65页左右,这部分先有个概念,对依赖的概念,之后如果项目中碰到依赖的问题再…
环境变量设置 MAVEN_HOME:G:\maven-3.2\apache-maven-3.2.5 Path: G:\maven-3.2\apache-maven-3.2.5\bin 其实正确的设置应该是 : path:%GRADLE_HOME%\bin 这样将path配置成动态,不用每次修改对不对. 小想法:另外用windows开发是不是low爆了???我也想换,不过用着不顺手罢了.等以后再说吧. 升级maven的时候直接改变环境变量的指向即可 linux中可以直接用符号链接,当需要升级版本的…
1..title()  每个单词首字母大写     .upper()  所有字母大写     .lower()  所有字母小写 2. \t 空白   转义字符只能用在""内      \n 换行 3..rstrip() 删除末尾空白     .lstrip() 删除开头空白     .strip()  删除两端空白 4.Python将带小数点的数都称为浮点数 5.Python的字符串既可以用单引号也可以用双引号  引号内部还有单引号时,只能用"" str() 可以将…
说来惭愧,4个多月未更新了.4月份以后就开始忙起来了,论文.毕设.毕业旅行等七七八八的事情占据了很多时间,毕业之后开始忙碌的工作,这期间一直想写博客,但是一直没能静下心写.这段时间在看<JavaScript设计模式与开发实践>,感觉很不错,受益匪浅. 这篇文章将围绕高阶函数是什么.高阶函数有什么作用等几个方面来进行介绍. 什么是高阶函数? 高阶函数是指至少满足下列条件之一的函数: 1.函数可以作为参数被传递 2.函数可以作为返回值输出 1.函数作为参数传递,这样我们可以抽离出一部分容易变化的业…
从linux驱动转行至Android驱动开发大半年了,一开始就产生了一个很纠结目标和问题,就是不停的google如何porting android!这个问题得到的结果对于初出茅庐的我,感到迷惘.随着工作的需要,自己的经验也就慢慢的增加,这些迷雾也慢慢解开,这里要多谢我自己的努力和老大高工的精心栽培. 言归正传,将android移植到特定硬件平台上,其核心是bsp的搭建工作,bsp是板级支持包,并不是特定某个文件,而是从功能上理解的一种硬件适配软件包,它的核心就是: 1. linux内核硬件相关部…