关于编程的一些我的感悟

关于编程的一些我的感悟

参加工做有一段时间了,在不断的工做中对于编程有了新的体会,在这里记录并跟你们分享一下,也但愿你们能够留言探讨。程序员

为何须要编程?

站在公司的角度上,它须要提供一种产品能够知足客户的需求,而编程就是为客户制造产品的一种手段,其终极目的仍是为了解决客户的问题。也就是说,编程并非目的,只是一种手段,若是存在一种更加便捷有效的方式能够解决问题,就没有必要去进行编程。数据库

为何要强调编程不是目的呢?编程

由于大多数初入职场的人,尤为是应届毕业生,老是会在作产品时陷入对技术的过分追求。对技术有追求是一件好事,可是更要时刻谨记技术的意义。当前很火爆很牛x的一些开源技术,它们的存在难道单纯是做者为了炫技吗?真正牛x的大佬应当是即具有了技术的深度,又能寻找到商业价值与技术价值的平衡点,过分的滥用技术只能说明其对技术的把控力不足,不能恰当合理的使用技术。缓存

如何进行编程?

编程的目的是完成既定的需求,编程的过程就是一个不断遇到问题、解决问题最终知足需求的过程。这些在完成需求的过程当中所遇到的问题被称之为风险,一名程序员若是能够提早识别风险,并会在真正开始编码以前解决掉风险,他就算是迈入了架构师的门槛。性能优化

解决复杂问题的一个重要途径是对问题进行拆解,将其转换为简单问题或已知问题,并逐一解决。网络

人类目前全部的知识体系,都是创建在人类对这个世界的认知中,计算机的整个知识体系也不例外。这也就意味着在编程中所遇到的问题,基本上都是在咱们认知范围内能够解决的,甚至能够借鉴一些特别朴素的生活经验,来帮助你寻找解决问题的方向。架构

以性能优化为例,怎么作才能够加快网络中数据的传输速度呢?编程语言

这个问题能够转换为,在生活中若是咱们想快速的运输一批货物到异地,应该怎么作才好?工具

依据经验,想要更快的运输速度,首先确定选择更高速的运输设备,毕竟飞机快于高铁,高铁快于火车。性能

进一步的,咱们能够多租几架飞机,同时进行货物的运输,也能加快货物运输的速度。

再进一步的,每次运输的货物体量有限,咱们要想尽办法利用运输工具的每一分空间运送货物,在不损坏货物的前提下使劲挤压货物,向有限的空间内塞进去更多的货物。

回到问题自己,如何加快网络数据的传输速度?咱们能够获得一些答案:

  1. 使用更高速的传输介质,光纤的传输速度老是好于五类线。

  2. 对数据进行并行传输。

  3. 先对数据进行压缩,再进行数据传输。

这种思路甚至能够推而广之,譬如如何对数据库性能进行优化?

  1. 使用更高速的设备。

SSD比普通的机械盘确定是要快的。

大内存,数据库能够尽可能的将数据缓存在内存中。

更高运算频率的CPU,每秒运算更多的指令。

  1. 并行处理

配置开启更多的工做线程。

集群多节点部署,将读或者写分散到多个节点上,并行处理。

  1. 数据压缩

此处的数据压缩,不只仅是单纯意义上的压缩数据。

数据的本质是什么?是信息!咱们存储数据,处理数据都是为了可以按需从数据中提取须要的信息。

在存储数据时,对数据进行筛选、处理,尽量的只存储所需数据,减小数据冗余,是数据压缩的一种形式。在读取数据时,只读取特定范围知足特定条件的有效数据,减小对数据的检索范围,也是一种数据压缩的特殊形式。合理的使用索引,对数据进行分库分表,或者相似ES的集群形式,数据被分散到多个节点的多个分片内,每一个节点只存储部分数据,这些都是数据压缩,可让你在较小的数据集范围内get到本身想要的全部信息。

怎样学习编程?

解决问题的思路离不开丰富的知识储备,以及对知识的概括与演绎,不管是提高知识的广度仍是深度其实都是异曲同工。

有些人比较具有钻研精神,对技术的深度有狂热的追求,在学习的过程当中遇到了什么技术问题必定要抠的明明白白。首先,我要对这种作事方式进行确定,好的技术离不开钻研精神,可是从我我的角度来说我不建议你们在学习编程时这么作。计算机软件是一个很是宽泛的学科,它的知识栈囊括了各种操做系统,网络,以及各类各样的编程语言。而且,这些知识栈并不是都是彻底独立的个体,它们所使用的技术,解决问题的思路有好多都是大同小异。

我建议在初学编程时,应当尽可能多的去接触各种技术,将学到的知识互相印证理解,最大可能的开拓本身的视野。这么作的好处在于,第一不会由于某个极其困难的点而丧失掉对学习编程的兴趣,第二视野的开拓能够学习到更多解决问题的思路,让你了解到同一种技术原来存在这么多的可利用方式,对之后的工做生活有所启发。

如何学习的一些建议:

我我的对于编程的学习经历了几个阶段:

  1. 视频学习

如今视频教学网站不少,我当时主要是在淘宝购买相关的视频教程。

视频教学比较适合彻底什么都不懂的小白阶段,很差的地方就是学习进度太慢,本身思考的会比较少,如今我我的已经彻底放弃了这种学习方式。

  1. 看书

对于新人来说,有些技术书籍仍是值得一看的。有不少国外的经典著做,均可以一览。目前国内的技术书基本上是鱼龙混杂,我目前也不多会去看技术书籍了,由于我发现书里的内容手册中基本上均可以找到,手册里有的内容,每每由于篇幅的缘由书籍中却没法全量的覆盖。

另外,目前技术的更迭速度仍是很快的,书籍里的内容每每都是一些技术几个版本以前的老东西了,即使学习了不少时候也没法彻底适用于新版本,还可能会给你带来一些困扰。

  1. 官方文档+google+stackoverflow

这是本人目前获取知识的主要途径。在学习一种新技术时,鉴于本人的英语水平不是很高(目前好不少了),多数状况下会首先使用搜索引擎阅读一些博客对新技术的一些概念进行快速入门。以后,再进行文档阅读(了解了一些概念,在进行翻译时才能更准确的理解原文的意思)。

对于一门技术的学习,最好的途径是使用它,若是当前没有环境去使用它,那么就去了解别人是怎么使用它的!《开发者头条》是一个挺不错的技术站点,我常常能够在上面找到一些别的公司在生产环境对某个技术的应用实战,这些生产环境的真实应用让我受益不浅。

不喜欢看春晚,又没有别的事情可作,年三十晚上随便写点东西,但愿能给你们带来一些收获。

最后,祝你们新年快乐啊!猪年发大财!

最后,我的公众号,欢迎你们关注~

相关文章
相关标签/搜索