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


程序员必的“大数据”知

一般我们谈到大数据,关于技术向的都离不开 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. 《爱情公寓2》将播 恶搞宣传片大喊“有种别看”
  2. AI发展这一年:不断衍生的技术丑闻与抵制声潮
  3. while loading shared libraries: libmysqlclient....
  4. 消息发送 C语言版和 Visual Basic Script版
  5. C. 奇奇怪怪的魔法阵(未搞懂)
  6. LeetCode 1409. 查询带键的排列(map模拟)
  7. java什么变量用作英文_Java基础之变量-什么是变量
  8. Qt中多个动态创建的按钮同时绑定一个槽函数,判断被点击的是哪个按钮
  9. linux服务器内存占用太高-释放内存
  10. Java推断文本文件编码格式以及读取
  11. 前端面试题之手写事件模型及事件代理/委托
  12. MySQL(18)-----表类型(存储引擎)的选择
  13. WordPress SEO插件,免费WordPress插件大全
  14. 社区发现算法——COPRA算法
  15. 浅析机器学习算法的应用场景!
  16. 线性方程组(高斯消元)
  17. 【## 1、浏览器及内核-】
  18. python允许无止境的循环_A-level Computer Science 计算机科学学习笔记/经验分享/教程 (12.6):PHP...
  19. ppt画深度学习网络图
  20. 从315晚会曝光网秦谈企业社会责任

热门文章

  1. 不错的互联网9大思维图
  2. linux ctrl命令,Linux Ctrl+Z的使用方法
  3. 计算机体系结构学习 --- RISC-V(一)
  4. android相关技术总结
  5. 登录亚马逊显示内部服务器出错,亚马逊账号无法登录怎么办?是什么原因导致的?...
  6. 27线性空间01——线性空间、线性相关、线性无关、向量组的秩与极大线性无关组的概念、基和维数
  7. Q3广告业务稳健、游戏超预期,搜狐利用直播技术向上破圈
  8. 【VHDL】3 GENERIC语句 和 INTEGER类型
  9. Android之ViewModel的使用
  10. 多台Mac电脑使用同一个apple开发者账号测试