自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 应用架构需要分类思维

模块(Module)、组件(Component)、包(Package),这些概念对于我们技术同学并不陌生,但并不是所有人都能理解其要义。深入理解之后,我才发现,其背后的深意是分类思维。而这种分类也是应用架构的核心所在,通过不同粒度、不同层次的分类,把复杂的软件系统实现控制在可以被理解、被维护的程度。否则,对于动则上100万行代码的软件,人类根本没有办法理解和维护。试想一个极端情况,假如没有这些概念协助我们分类,我们把所有业务逻辑都写在一个类里面,会是什么样的结果呢?我们很多的“非人类”系统,正是因为没有

2020-11-30 23:16:52 105

原创 关于排序--学习笔记

快速排序性能分析快速排序的一次划分算法从两头交替搜索,直到low和hight重合,因此其时间复杂度是O(n);而整个快速排序算法的时间复杂度与划分的趟数有关。 [4]理想的情况是,每次划分所选择的中间数恰好将当前序列几乎等分,经过log2n趟划分,便可得到长度为1的子表。这样,整个算法的时间复杂度为O(nlog2n)。 [4]最坏的情况是,每次所选的中间数是当前序列中的最大或最小元素,这使得每次划分所得的子表中一个为空表,另一子表的长度为原表的长度-1。这样,长度为n的数据表的快速排序需要经过n趟划.

2020-11-29 23:15:16 88

原创 面向切面编程(AOP)--学习笔记

什么是AOPAOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对

2020-11-28 23:09:24 166

原创 依赖倒转原则--学习笔记

依赖倒置原则定义1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。2、抽象不应该依赖于细节,细节应该依赖于抽象。首先,这个原则听起来很像是“针对接口编程,不针对现实编程”,不是吗?的确很相似,然而这里更强调“抽象”。依赖倒置原则,究竟倒置在哪里?在依赖倒置原则中的倒置指的是和一般OO设计的思考方式完全相反。举个例子,现在你需要实现一个比萨店,你第一件想到的事情是什么?我想到的是一个比萨店,里面有很多具体的比萨,如:芝士比萨、素食比萨、海鲜比萨……比萨店是上层模块,比萨是下层模块,如果把比萨

2020-11-27 22:39:32 201

原创 开闭原则--学习笔记

开闭原则 软件对象(类、模块、方法等)应该对于扩展是开放的,对修改是关闭的。比如:一个网络模块,原来只有服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将客户端和服务端分开。公共部分抽象出来。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决办法:当软件需要变化时,尽量通过扩展软

2020-11-26 23:51:26 159

原创 接口隔离原则--学习笔记

接口隔离原则(ISP)设计应用程序的时候,如果一个模块包含多个子模块,那么我们应该小心对模块做出抽象。设想该模块由一个类实现,我们可以把系统抽象成一个接口。但是要添加一个新的模块扩展程序时,如果要添加的模块只包含原系统中的一些子模块,那么系统就会强迫我们实现接口中的所有方法,并且清寒要编写一些哑方法。这样的接口被称为肚胖接口或者被污染的接口,使用这样的接口将会给系统引入一些不当的行为,这些不当的行为可能导致不正确的结果,也可能导入资源浪费。1.定义接口隔离原则(Interface Segregatio

2020-11-25 23:16:28 129

原创 里氏替换原则--学习笔记

定义里氏替换原则的定义是:所有引用基类的地方必须能透明化地使用其子类的对象。里氏替换原则针对的问题有一个功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成,则子类B在完成新功能P2的同时,有可能会导致原有功能P1发生故障。里氏替换原则的解决方案当使用继承的时候,遵循里氏替换原则。类B继承类A的时候,除了添加新的方法完成新增功能P2外,尽量不要重写父类A的方法,也尽量不要重载父类A的方法。继承包含这样一层含义:父类中

2020-11-24 19:27:59 361

原创 单一职责原则--学习笔记

单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。该原则由罗伯特·C·马丁(Robert C. Martin)于《敏捷软件开发:原则、模式与实践》一书中给出的。马丁表示此原则是基于汤姆·狄马克(Tom DeMarco)和Meilir Page-Jones的著作中的内聚性原则发展出的。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责

2020-11-22 22:34:28 110

原创 文档对象模型DOM--学习笔记

定义文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。它是一种与平台和语言无关的应用程序接口(API),它可以动态地访问程序和脚本,更新其内容、结构和www文档的风格(目前,HTML和XML文档是通过说明部分定义的)。文档可以进一步被处理,处理的结果可以加入到当前的页面。DOM是一种基于树的API文档,它要求在处理过程中整个文档都表示在存储器中。另外一种简单的API是基于事件的SAX,它可以用于处理很大的XML文档,由于大,所以不

2020-11-08 16:40:27 451 1

原创 关于Ajax请求中的URL路径

ajax的url有两种,一种是绝对路径,另一种是相对路径。一、绝对路径:包括协议名称、主机地址、端口、web项目名称等的完整请求路径。例如:$.ajax({url:“http://localhost:8080/webname/test”});好处:比如在webA项目中的ajax需要请求webB项目中的服务,则必须使用绝对路径。坏处:使用绝对路径要求古地理更web项目的名称,如果webB项目重命名了,则对应的ajax请求都需要修改。二、相对路径:不需要协议名、主机地址、端口、web项目名称,只

2020-11-07 22:39:11 4813 1

原创 浏览器跨域访问

什么是跨域资源共享跨源资源共享 (CORS)是http-基于标头的机制,允许服务器指示任何其他起源S(域、协议或端口),而不是浏览器应该允许加载资源的自身。CORS还依赖于浏览器向承载跨源资源的服务器发出“预飞”请求的机制,以检查服务器是否允许实际请求。在该预运行中,浏览器发送指示将在实际请求中使用的HTTP方法和标头的标头。造成跨域的两种策略浏览器的同源策略会导致跨域,这里同源策略又分为以下两种DOM同源策略:禁止对不同源页面DOM进行操作。这里主要场景是iframe跨域的情况,不同域名的if

2020-11-06 23:18:00 669 2

转载 前端 UI 组件:组件特征

构成元素一个完整的具备功能的 UI 组件的构成,有结构(structure)、表现(presentation)和行为(behavior)这三个方面。为什么强调是「完整的具备功能的 UI 组件」?是因为它是一个最全的特征集合,而其他的「UI 组件」可能会缺少一些特征,从而使分析不那么完善。看到「结构」、「表现」与「行为」这三个词,作为一名有经验的前端开发者,很自然地就会想到很久很久之前开始一直提倡的前端开发的关注点分离——HTML 负责组织页面结构,CSS 负责网页内容的表现样式,JS 则负责用户与网页之

2020-11-04 20:50:15 869 1

原创 数据访问对象DAO和DAO模式--学习笔记

DAO(Data Access Object)DAO(Data Access Object)数据访问对象是一个面向对象的数据库接口,存在于微软的Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。DAO模式对外提供相应的接口在面向对象设计过程中,有一些"套路”用于解决特定问题称为模式。DAO 模式提供了访问关系型数据库系统所

2020-11-02 20:04:13 748

原创 结构化程序设计--学习笔记

结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易原则结构化程序设计采用自顶向下、逐步求精的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口、一个出口。结构化程序设计的原则可表示为:程序=(算法)+(数据结构)。算法是一个独立的整体,数据结构(包含数据类型与数据)也是一个独立的整体。两者分开设计,.

2020-11-01 18:18:09 665

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除