程序员在入职时,大部分互联网公司都会进行基础知识的考察,基础知识的重要性不言而喻。计算机基础知识对程序员来说很重要。计算机核心基础知识方面,算法、数据结构、组成原理、网络等涉及到的基础知识一定要彻底掌握,牢牢记住并融会贯通。想要达到更高的层次,一定要打好计算机基础。
程序员必备的“大数据”知识
一般我们谈到大数据,关于技术向的都离不开 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 就是一个日志采集工具,负责日志的采集,然后输入到不同的数据源中。
其实还有很多组件没提,从网上找了个总结比较全的的图。
程序员必备工具
程序员是一个要不断向上攀爬的职业,需要学习新的知识,掌握新的工具,才能跟上时代的步伐。
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的名称源自“虫子”
丰富多彩的计算机编程世界
看完文章后,你都掌握了哪些必备知识呢?
如果你喜欢本篇文章记得点赞收藏,以防找不到我哦~
(以上图片及文字均来源于网络,如有侵权联系删除)