面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候再一个个的依次调用即可. 优点:性能高 缺点:相较于面向对象而言,不易维护,不易复用,不易扩展 适合于小型的项目面向对象编程:把事务分解成为一个个对象,然后由对象之间分工与合作. 优点:易维护,易复用,易扩展,低耦合,系统更加灵活 有三大特性:封装,继承,多态 缺点:性能比面向过程低 适合多人协作的大型项目 用面向过程的方法写出来的程序就像是一份蛋炒饭,先炒蛋,混合些洋葱粒,胡萝卜丝,豌豆,翻炒片刻,再把饭加入锅里,…
9.0 设计模式 在编写程序时经常会遇到一此典型的问题或需要完成某种特定需求,设计模式就是针对这些问题和需求,在大量的实践中总结和理论化之后优选的代码结构编程风格,以及解决问题的思考方式. 设计模式就像是经典的棋谱.不同的棋局,使用不同的棋谐,免得自己再去思考和模索.本节将针对PHP应用程序中最常用的两种设计模式进行详细讲解. 9.1 单例模式 单例模式是PHP中的一种设计模式,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象. 就像世界上只有一个月亮,假设现在要设计一…
和一些面向对象的语言有所不同,PHP并不是一种纯面向对象的语言,包PIP它支持面向对象的程序设计,并可以用于开发大型的商业程序.因此学好面向对象输程对PHP程序员来说也是至关重要的.本章并针对面向对象输程在PIP语言中的使用进行详细讲解. 2.1 面向对象概述 面向对象是一种符合人类思维习惯的编程思想.现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系.在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象. 提到面向对象,自然会想到面向过程…
传统的面向过程 将要完成的工作,分作若干个步骤,或再细分为子步骤,然后后步骤从前往后一步一步完成,最初达致目标. 现代的面向对象 将要完成的工作拆分为“一个一个对象”的任务(功能),每个对象独自完成自己的任务,任务之间的链接通过“调用”来实现,最终也完成了整体的工作. 万事万物都是对象. 面向对象是设计思想的“升华”——面向过程是解决简单问题的自然的思维过程,面向对象是解决大规模的复杂问题的良好思想. 面向对象基本概念 面向对象三大特性:封装  继承inherit  多态 类与对象 抽象与具体…
8.0  多态 在设计一个成员方法时,通常希望该方法具备一定的通用性.例如要实现一个动物叫的方法,由于每个动物的叫声是不同的,因此可以在方法中接收-个动物类型的参数的对象当传人猫类对象时就发出猫类的叫声,传人犬类对象时就发出犬类的叫声,这种向方法中传人不同的对象,方法执行效果各异的现象就是多态.为了让读者更好地拿握多态的用法,接下来通过一个案例来学习,如例8-22所示. 例8-22 <?php //定义Animal接口 abstract class Animal{ public abstract…
7.0 抽象类与接口 当定义一个类时,常常需要定义一些方法来描述该类的行为特征.但有时这些方法的实现方式是无法确定的,此时就可以使用抽象类和接口. 抽象类和接口用于提高程序的灵活性.抽象类是一种特殊的类,而接口又是一种待殊的抽象类. 接下来本节将针对抽象类和接口进行详细讲解. 7.1 抽象类 当在定义一个类的 时候,其中所霜的某些方法暂时并不能完全定义出来,而是让其继承的类来实现,此时就可以用到抽象类. 比如定又一个动物类,每种动物有一“叫” 的方法,面每种动物叫的方式不同,因此可以将动物类定义…
6.0 自动加载及魔术方法  6.1 自动加载 在PHP开发过程中,如果希望从外部引入一个class.通常会使用incluae和requre方法把定义这个class的文件包含进来.但是,在大型的开发项目中,这么做会产生大量的require或者include方法的使用.这样不仅会降低效率,并且使代码难以维护. 如果不小心忘记引入某个类的定又文件,PHP就会报告一个致命错误,导致整个应用程序崩溃. 为了解决上述问题,PHP提供了类的自动加载机制,即定义一个_ autoload()函数,它会在试图使用…
5.0 继承 5.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使许多事物之间形成一种关系体系 . 例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物.同理,波斯猫和田园猫继承自猫,而阿拉斯加和哈士奇继承自犬,这些动物之间会形成一个继承体系, 具体下图所示. 在PHP中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法. 在程序中,如果想…
4.0 类常量和静态成员 通过上几篇博客我们了解到,类在实例化对象时,该对象中的成员只被当前对象所有.如果希望在类中定义的成员被所有实例共享. 此时可以使用类常量或静态成员来实现,接下来将针对类常量和静态成员的相关知识进行详给讲解. 4.1 类常量 在类中,有些属性的值不能改变,并且希望被所有对象所共享,例如圆周率,它是个数学常数,在数学物理计算中广泛使用,此时可以将表示圆周率的成员属性定义为常量.类常量在定义时需要使用const关键字来申明.示例代码如下: const PI=3.1415926…
3.0 构造方法和析构方法 从我之前的博客可以发现,实例化一个类的对象后,如果要为这个对象的属性赋值,需要直接访问该对象的属性.如果想要在实例化对象的同时就为这个对象的属性进行赋值,则可以通过构造方法来实现.构造方法是类的一个特殊成员,它会在类实例化对象时自动调用,用于对类中的成员进行初始化.与构造方法对应的是析构方法,它在对象销毁之前被自动调用.用于完成清理工作.本节将针对构造方法和析构方法进行详细讲解. 3.1 构造方法  在每个类中,都有一个构查方法,在创建对象时会被自动调用.如果在类中没…
前言 在.Net程序开发过程中,我们经常会遇到如下场景: 编写WinForm程序客户端,需要查询数据库获取数据,于是我们根据需求写好了代码后,点击查询,发现界面卡死,无法响应.经过调试,发现查询数据库这一步执行了很久,在此过程中,UI被阻塞,无法响应任何操作. 如何解决此问题?我们需要分析问题成因:在WinForm窗体运行时,只有一个主线程,即为UI线程,UI线程在此过程中既负责渲染界面,又负责查询数据,因此在大量耗时的操作中,UI线程无法及时响应导致出现问题.此时我们需要将耗时操作放入异步操作…
浅谈JS面向对象 一 .什么是面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了.注重代码的过程部分. 二.什么是面向对象 最先出现在管理学中,是一种管理资源(资源等于空间)和能力(能力导致运动,运动等于时间)的方法论. 面向对象是一种思维方法 面向对象是一种编程方法 面向对象并不只针对某一种编程语言 三.面向对象和面向过程的区别和联系 “面向过程”是一种以过程为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步…
浅谈响应式编程(Reactive Programming) https://www.jianshu.com/p/1765f658200a 例子写的非常好呢. 0.9312018.02.14 21:22:16字数 1877阅读 9816 这是告别CSDN后第一次使用简书写IT类的博客,还在适应.最不适应的就是不能直接手输markdown语法标记.(好像原因是我没有切换编辑器) 什么是响应式编程(Reactive Programming) In computing, reactive program…
前言 在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等. 针对这些缺点,微软在.Net 2.0中提出了基于事件的异步模式,简称为EAP模型. 第二个异步编程模型:EAP 概述 EAP,全称Event-based Asynchronous Pattern,基于事件的异步模式,它提供了一系列的事件声明与方法,用于实现异步模式的各个阶段. 典型的内置组件为Backg…
前言:虽有陈皓<Javascript 面向对象编程>珠玉在前,但是我还是忍不住再画蛇添足的补上一篇文章,主要是因为javascript这门语言魅力.另外这篇文章是一篇入门文章,我也是才开始学习Javascript,有一点心得,才想写一篇这样文章,文章中难免有错误的地方,还请各位不吝吐槽指正 吐槽Javascript 初次接触Javascript,这门语言的确会让很多正规军感到诸多的不适,这种不适来自于Javascript的语法的简练和不严谨,这种不适也 来自Javascript这个悲催的名称,…
WinSDK是编程中的传统难点,个人写的WinAPI程序也不少了,其实之所以难就难在每个调用的API都包含着Windows这个操作系统的潜规则或者是windows内部的运行机制…… WinSDK是编程中的传统难点,曾经听有一个技术不是很好的朋友乱说什么给你API谁都会用,其实并非那么简单,个人写的WinAPI程序也不少了,其实之所以难就难在每个调用的API都包含着Windows这个操作系统的潜规则或者是windows内部的运行机制. 首先来谈谈句柄,初学习WinSDK的朋友刚看到这个词头大了吧?…
PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成.OOP 达到了软件工程的三个主要目标:重用性.灵活性和扩展性.为了实现整体运算,每个对象都能够接收信息.处理数据和向其它对象发送信息. 1.PHP中的抽象类 PHP 5 支持抽象类和抽象方法.定义为抽象的类不能被实例化.任何一个类,如果它里面至少…
我们常用的两种编程模式 POP--面向过程编程(Process-oriented programming) 面向过程编程是以功能为中心来进行思考和组织的一种编程方法,它强调的是系统的数据被加工和处理的过程,在程序设计中主要以函数或者过程为程序的基本组织 方式,系统功能是由一组相关的过程和函数序列构成.面向过程强调的是功能(加工),数据仅仅作为输入和输出存在.这种过程化的思想是一种很朴素和普遍的思 想和方法,人类很多活动都是这种组织模式,比如工厂生产,企业服务等.面向过程以数据的加工处理过程为主线…
hello,everybody,今天要探讨的问题是JS面向对象,其实面向对象呢呢,一般是在大型项目上会采用,不过了解它对我们理解JS语言有很大的意义. 首先什么是面向对象编程(oop),就是用对象的思想去写代码,那什么是对象呢,其实我们一直在用,像数组 Array  时间 Date 都是对象,并且这些对象是系统创建的,所以叫系统对象,而我们自己当然也可以创建对象,一般对象有两部分组成: 1 方法 (动态的,相当于对象下面的函数)比如Array 的push(),sort()方法 2  属性 (静态…
一:前言 面向切面编程是一个很重要的编程思想,想要写出一个便于维护的程序,理解AOP并且能熟练的在实际编程中合理的运用AOP思想是很有必要的 二:AOP的基本概念 基础概念:AOP中文翻译面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. 三:通过动态代理实现AOP 读完上面的概念,也许还不知道什么是AOP,但是我们只少能从上面概念知道实现AOP的技术基础是预编译方式和运行期动态代理,那么我们就来通过实际代码用动态代理来实现一个简单的程序吧 我们在日常的面向对象编程中…
PHP高级程序设计 学习笔记 2014.06.11 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 单例模式 当需要保证某个对象只能有一个实例的时候,单例模式非常有用.它把创建对象的控制权委托到一个单一的点上,任何时候应用程序都只会仅有一个…
在开发的道路上,就始终无法避开版本控制,哪怕你是独自一人进行开发,版本控制也是有必要的,从最早开始使用CVS,到后来使用SVN,再到git,最后又回到了SVN,但是不知道为什么真的对SVN很无爱. 现在工作的地方,使用的是SVN,我每天都得把自己修改过的文件单独的提出来,然后以相同的目录路径打包好,然后提交到测试版本库目录下,然后再交由其他人用ftp对服务器上的文件进行覆盖 然而每天这样创建对应的目录创建文件都已经快把我逼疯了,幸好我自己写了一个脚本来自动的执行这个过程,但那是在我忍受了一星期那…
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现了代码的复用,提高了编程效率.  多态:程序的可扩展性及可维护性增强. 继承(extends) 类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模.(从OOA.OOD即面向对象设计的角度考虑) 继承可以提高代码的复用性!(从OOP的角度考虑) extends的意思是“扩展”.子类…
主要内容: OMP算法介绍 OMP的MATLAB实现 OMP中的数学知识 一.OMP算法介绍 来源:http://blog.csdn.net/scucj/article/details/7467955 1.信号的稀疏表示(sparse representation of signals) 给定一个过完备字典矩阵,其中它的每列表示一种原型信号的原子.给定一个信号y,它可以被表示成这些原子的稀疏线性组合.信号 y 可以被表达为 y = Dx ,或者.字典矩阵中所谓过完备性,指的是原子的个数远远大于信…
阅读目录: 基础 Socket编程 多线程并发 阻塞式同步IO 基础 在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践. Socket是一种网络编程接口,它是对传输层TCP.UDP通信协议的一层封装,通过友好的API暴露出去,方便在进程或多台机器间进行网络通信. Socket编程 在网络编程中分客户端和服务端两种角色,比如通过打开浏览器访问到挂在Web软件上的网页,从程序角度上来看,即客户端(浏览器)发起了一个Socket请求到服务器端,服务器把网页内容返回到浏览…
PHP高级程序设计 学习笔记 2014.06.12 命名空间概述 PHP 在 5.3.0 以后的版本开始支持命名空间.什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念.在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性. PH…
前言 CPU 的并行编程技术,也是高性能计算中的热点,也是今后要努力学习的方向.那么它和 GPU 并行编程有何区别呢? 本文将做出详细的对比,分析各自的特点,为将来深入学习 CPU 并行编程技术打下铺垫. 区别一:缓存管理方式的不同 GPU:缓存对程序员不透明,程序员可根据实际情况操纵大部分缓存 (也有一部分缓存是由硬件自行管理). CPU:缓存对程序员透明.应用程序员无法通过编程手段操纵缓存. 区别二:指令模型的不同 GPU:采用 SIMT - 单指令多线程模型,一条指令配备一组硬件,对应32…
初学Task的时候上网搜索,看到很多文章的标题都是task取代thread等等相关,我也一直以为task和thread是一类,其实task是.net4.0提出的异步编程,在之前.net1.0有delegete.beginInoke(XXXX),还有.net2.0中的EAP,在最新的4.5中又有async.await这种新的异步编程.而Thread和Threadpool则是多线程编程. 但是Task也是把任务推到线程池中 static void Main(string[] args) { ;i<;…
计算机网络,基本上可以抽象是端的通信.实际在通讯中会用到不同的设备,不同的硬件中,为了能友好的传输信息,那么建立一套规范就十分必要了.先来了解一些基本概念 了解网络中传输的都是二进制数据流.  2.了解网络编程概念. 认识网络: // 网络概念 <1> 经常见到的: 网卡/网线/IP地址/子网掩码/路由地址/DNS服务器地址 作用? // <2> 容易忽略的:MAC地址/数据/数据包 // <3> 网络编程的概念:客户端/服务器/请求/响应/数据流 // 网络是数据交互…
前言 多家公司和组织已经公开了它们的风格规范,详细可參阅jscs.info,以下的内容主要參考了Airbnb的JavaScript风格规范.当然还有google的编程建议等编程风格 本章探讨怎样使用ES6的新语法.与传统的JavaScript语法结合在一起.写出合理的.易于阅读和维护的代码. 编程风格 块级作用域 (1)let 代替 var ES6提出了两个新的声明变量的命令:let和const. 当中,let全然能够代替var.由于两者语义同样,并且let没有副作用. 'use strict'…