成为一名厉害的程序员,需要哪些必备知识

程序员在入职时,大部分互联网公司都会进行基础知识的考察,基础知识的重要性不言而喻。计算机基础知识对程序员来说很重要。计算机核心基础知识方面,算法、数据结构、组成原理、网络等涉及到的基础知识一定要彻底掌握,牢牢记住并融会贯通。想要达到更高的层次,一定要打好计算机基础。

成为一名厉害的程序员,需要哪些必备知识_第1张图片


程序员必的“大数据”知

一般我们谈到大数据,关于技术向的都离不开 Hadoop 体系及其衍生的工具,Hadoop 体系其核心就是 HDFS 和 MapReduce。

HDFS

计算可能需要涉及大量的数据,可能都是 PB 级别的,普通单机的磁盘无法存储那么多数据,因此就需要分布式文件存储,组合起众多廉价的服务器,让每个服务器存储部分数据,对外展示却看起来是一个文件,这就是分布式文件存储。

对 Hadoop 家族来说,就是 HDFS:Hadoop Distributed File System,这是存储的基石。

MapReduce

存储的问题解决了,紧接着就是计算了,这就是大数据计算框架 MapReduce 的工作。

MapReduce 的原理其实非常简单,它包含两个过程:map 和 reduce。


了解了大体的核心技术后,我们再来看看相关的组件。

Hbase

一个列式存储的 NoSQL 数据库,底层利用 HDFS 存储。

Hive

支持类 SQL 语句,不需要显示编写 map 和 reduce 的代码,仅仅写个 SQL, Hive 就可以把这个 SQL 转成对应的 MapReduce 代码,然后执行返回结果,降低了使用成本西。

Spark

它的目标就是低延迟,它使用内存来保存中间结果。

Flink

当前有很多需求要的是实时计算,比如数据大屏的实时展示等,这就需要大数据的流式计算,在这个领域比较出名的就是 Flink。

Kafka

它是消息队列,它主要用于数据的传输,还有削峰填谷,平衡数据的发送和接收速率,在大数据场景下有很多应用。

Flume

还有一个数据来源就是日志,我们有很多数据都会通过日志保存在服务器的磁盘上,而 Flume 就是一个日志采集工具,负责日志的采集,然后输入到不同的数据源中。

其实还有很多组件没提,从网上找了个总结比较全的的图。

成为一名厉害的程序员,需要哪些必备知识_第2张图片


程序员必备工具

程序员是一个要不断向上攀爬的职业,需要学习新的知识,掌握新的工具,才能跟上时代的步伐。


01·Vim文本编辑器

优点:功能强大、高度可定制,Vi编辑器中最好的一个。

Vim是vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

02·uTools桌面插件工具

优点:简洁美观、插件化,能够节约时间。

uTools 是一个极简、插件化的现代桌面软件,通过自由选配丰富的插件,打造得心应手的工具集合。

03·Git分布式版本控制系统

优点:分布式开发、速度快、灵活。

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

04·Navicat数据库管理工具

优点:高效、安全,是最好用的数据库管理工具。

“Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和 MongoDB 等不同类型的数据库,它与阿里云、腾讯云、华为云、Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud 和 MongoDB Atlas等云数据库兼容。

05·IntelliJ IDEA集成开发环境

优点:业界排名第一的java开发工具。

IntelliJ IDEA,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、创新的GUI设计等方面的功能可以说是超常的。

06·Alfred查询和搜索工具

优点:被称作效率神器。

Alfred 是 Mac系统上一款专注于效率提升的著名应用,它能帮你快速打开网页、快速进行自定义搜索、查看剪贴板历史、快速查询单词等等。Alfred 提供的功能虽然很多,但目的只有一个 —— 那就是减少我们工作中的一些重复动作,提升我们的工作效率。

07·Beyond Compare代码比较工具

优点:高效,适用于用于文档、源代码和HTML。

Beyond Compare可以很方便地对比出两份源代码文件之间的不同之处,相差的每一个字节用颜色加以表示,查看方便,支持多种规则对比。

08·Docker开源的应用容器引擎

优点:跨平台,跨服务器,实现应用程序跨平台间的无缝衔接。

Docker 其中包括,镜像、容器、仓库,很简单,目的就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品(可以是 web 应用或者数据库应用)及其环境能够做到“一次封装,到处运行”。

09·Postman接口调试与测试工具

优点:功能强大,使用简单且易用性好。

Postman是一个简单好用的网页调试软件,很适合开发人员使用,性能稳定流畅,提供接口测试、并发测试等功能,还支持编写测试脚本,快速处理各种HTTP请求,测试数据精准高效。

10·iTerm2终端管理器

优点:功能强大,一款终端神器。

Term2 Mac版可以说是Mac下最好的终端工具。iTerm2拥有多标签、中键复制粘贴、命令记忆、高亮指针、迅捷重复、全屏切换等功能,提升操作效率。


程序员应该了解的冷门小知识

(以下冷门知识就不做详细讲解了,如果有感兴趣的小伙伴可以自己在网上搜索一下。)

第一台电脑为蒸汽驱动

电脑病毒的设计初衷并非是造成损害

第一名程序员竟然是女性Ada Lovelace

第一款数字化电脑游戏从未带来任何利润回报

图像处理算法中使用最广的一幅图片来自《花花公子》杂志

GIT中保证文件完整性的SHA-1值

程序中bug的名称源自“虫子”

丰富多彩的计算机编程世界

成为一名厉害的程序员,需要哪些必备知识_第3张图片


看完文章后,你都掌握了哪些必备知识呢?

如果你喜欢本篇文章记得点赞收藏,以防找不到我哦~

(以上图片及文字均来源于网络,如有侵权联系删除)

你可能感兴趣的:(九耶教育(钛伦特软件),hadoop,大数据,分布式,javascript,java)