关注的博客专栏

By timebusker on December 31, 2017

本博客均是本人在阅读过程中发现的一些优秀博文,并加以记录,在此感谢各位博主的辛苦写作,方便我等学渣阅读。

Docker

Docker博客

JAVA编程

幽灵雾的专栏
JAVA基础
JAVA系列博客

技术大咖

docker、java 多线程、redis、nginx、tomcat
Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总
江南一点雨(MyBatis、关于Spring Boot、MongoDB教程、Spring Cloud系列)
Soyoger(算法、大数据、架构)

GitHub

后端架构师技术图谱
技术面试需要掌握的基础知识整理
温故而知新,分享知识,快乐编码~

数据挖掘与算法

kNN、决策树、贝叶斯、逻辑回归、SVM、线性回归、树回归
机器学习笔记
吴恩达老师的深度学习课程笔记及资源
大数据、算法

大数据博客篇

Hadoop官网(中文)
过往记忆(推荐阅读)
萧邦主的城邦
qindongliang1922
Kafka系列文章

数据库

postgresql

分割线

面向过程与面向对象编程的区别

  • 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;

  • 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

面向过程与面向对象的优缺点

面向过程
  • 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
  • 缺点:没有面向对象易维护、易复用、易扩展
面向对象
  • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
  • 缺点:性能比面向过程低

函数式编程

函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算, 并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。 而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。

优点
  • 在函数式编程中,由于数据全部都是不可变的,所以没有并发编程的问题,是多线程安全的。可以有效降低程序运行中所产生的副作用, 对于快速迭代的项目来说,函数式编程可以实现函数与函数之间的热切换而不用担心数据的问题,因为它是以函数作为最小单位的, 只要函数与函数之间的关系正确即可保证结果的正确性。

  • 函数式编程的表达方式更加符合人类日常生活中的语法,代码可读性更强。实现同样的功能函数式编程所需要的代码比面向对象编程要少很多,代码更加简洁明晰。 函数式编程广泛运用于科学研究中,因为在科研中对于代码的工程化要求比较低,写起来更加简单,所以使用函数式编程开发的速度比用面向对象要高很多, 如果是对开发速度要求较高但是对运行资源要求较低同时对速度要求较低的场景下使用函数式会更加高效。

缺点
  • 由于所有的数据都是不可变的,所以所有的变量在程序运行期间都是一直存在的,非常占用运行资源。同时由于函数式的先天性设计导致性能一直不够。虽然现代的函数式编程语言使用了很多技巧比如惰性计算等来优化运行速度,但是始终无法与面向对象的程序相比,当然面向对象程序的速度也不够快。

  • 函数式编程虽然已经诞生了很多年,但是至今为止在工程上想要大规模使用函数式编程仍然有很多待解决的问题,尤其是对于规模比较大的工程而言。如果对函数式编程的理解不够深刻就会导致跟面相对象一样晦涩难懂的局面。