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


程序员必的“大数据”知

一般我们谈到大数据,关于技术向的都离不开 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的名称源自“虫子”

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


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

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

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

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

  1. 想要成为一名优秀的程序员,这十八招必看

    文章目录 第一招:速学能力 第二招:理解能力 第三招:编程能力 第四招:使用能力 第五招:编码能力 第六招:注释能力 第七招:思维能力 第八招:英语能力 第九招:学习能力 第十招:思考能力 第十一招: ...

  2. 俄罗斯程序员编程水平全球第2名 哪国程序员编程水平全球第1名

    点击上面 免费订阅本账号! 本公众号主要推送javaweb开发相关技术,基础知识点,同时会深入剖析复杂的问题,分享一些优秀的框架,大型项目经验,当今最流行的Javaweb技术,热点科技新闻,招聘信息, ...

  3. 什么才是厉害的程序员?

    有一个读者问我:你认为一个程序员具备什么样的能力,才算得上是厉害的程序员? 我答:拥有解决问题的能力的程序员. 这个回答貌似有点抽象,不要紧看下面的文章你会慢慢有所了解.  一.解决问题的能力 很多年 ...

  4. 一名新晋程序员的自述:我的编程自学之路

    我相信每个程序员都具备自学的能力,因为如果没有自身的努力,我们不会成为一名优秀的程序员. 大概交代一下故事背景 2016年,我被计算机科学专业录取.计算机科学家需要研究如何使用计算机解决广泛问题及其应 ...

  5. 如何成为一个优秀的程序员_如何成为一名优秀的程序员

    如何成为一个优秀的程序员 by Amy M Haddad 通过艾米·M·哈达德(Amy M Haddad) 如何成为一名优秀的程序员 (How to be a great programmer) Wh ...

  6. 如何使用搜索技巧来成为一名高效的程序员

    没有人是完全独立的孤岛,每个人都是整体的一部分.-- 约翰·多恩 对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序.如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码.即使是经验丰 ...

  7. 成为一名成功的程序员要做到以下10点?网友:是真的吗?

    编程是一个没有极限的职业,所以要成为一名优秀的程序员,你必须超越现有已存在的极限.在程序员职业生涯的开始阶段,他们将面临许多挑战,面对困境,他们之中有一些人将会放弃,而只有少数人会坚持到底,并成为这个 ...

  8. 我要成为一名优秀的程序员!

    2019独角兽企业重金招聘Python工程师标准>>> 2013年的3月14号,所谓的白色情人节,这天我很不幸.在班级篮球比赛中,我上篮落地时不小心搞到小腿骨折,然后在恐慌中被送进了 ...

  9. cass地籍参数设置命令_想成为一名厉害的测绘员?南方Cass教程+插件+课件不可少!...

    想成为一名厉害的测绘员?南方Cass教程+插件+课件不可少! 南方Cass绝对是测绘人的工作神器,强大的测绘功能,精准的计算无一不受广大测绘人的好评.自推出上线以来已经占据了我国绝大部分的测绘市场,但 ...

最新文章

  1. RDKit | 基于RDKit获取分子3D距离矩阵
  2. java activiti5_工作流Activiti5.13学习笔记(一)
  3. AlertDialog显示错误 Unable to add window token null is not for an application
  4. 学习 jQuery 源码整体架构,打造属于自己的 js 类库
  5. Java学习笔记(二):String
  6. mask属性是css3的吗_使用CSS3 mask(蒙版,遮罩)属性实现超酷按钮悬停动画
  7. Get_key.c模块流程
  8. Python(42)_文件操作
  9. 阻止 Mac 进入睡眠模式保持清醒的 5 种方法
  10. 微信小程序DEMO初体验
  11. android9 添加开机音乐
  12. navicat中文破解
  13. vga焊接线顺序_VGA线的焊接方法,15线与7线分别如何焊接?
  14. vue3 通过naive-ui 使用xicons
  15. vs工程生成自定义图标的exe
  16. 通过虚拟机安装Ubuntu系统到移动硬盘
  17. redis cluster 4.0.9 之四: redis-trib.rb add-node
  18. 基于spark的车辆分析
  19. 实现类似Twitter的启动动画
  20. CSS 基础篇、绝对有你想要

热门文章

  1. vue项目使用luckyexcel插件预览excel表格
  2. html如何解决图片溢出,图片溢出div,超出div解决办法
  3. HIVE MAP 函数使用
  4. 新标日语初级第21课应用课文
  5. C语言学习笔记“输出Hello World”
  6. 激光焊接3系铝合金的工艺分析
  7. JSLint JSHint ESLint的区别
  8. 活久见!TCP两次挥手,你见过吗?那四次握手呢?
  9. 腾讯马松松谈企业安全建设:安全工程化如何落到实处
  10. 集合划分讲解-And-2021年ACM竞赛班训练(九)2021.5.20-问题 E: 登上火星-题解