技术方向:比较与选择

news2024/12/25 14:17:40

针对未入行、刚入行、工作好几年依然不停切换择业方向、长期技术无法突破的人。

1 技术栈

一切的开始其实是对编程的兴趣,兴趣指引你跨过所有障碍。

编程语言是基础,编程语言之上,发展为两个主要方向,服务和大数据。

2 编程语言

C/C++:一般的教学从C/C++开始,非常难学,经常能吓跑一帮计算机入门者。尤其是指针,看似计算机的指令灵魂,让一些初学者敬而远之。C/C++对学生时期最大的用处是锻炼算法题,然并没有什么成果,主要是C/C++可以上手磨炼的项目不多。C/C++基本都是和linux打交道。C/C++更进一步是Go,现在逐渐流行。

Java:java是主流。Java可以编写业务系统软件,比如一个web系统。一个程序员真正对程序感兴趣可能就是独立能写一个网站,后端各种数据处理使用java完成。Java负责数据访问处理,在java之上利用spring框架的能力,读写存储mysql、缓存redis、消息kafka,提供restful接口,加上html+css+js前端,形成一个网站的闭环。Java提供的项目非常丰富,唾手可得。

Python:相比java的大而全,python则是小而美。python的入门比java更容易,甚至不需要花费大力气就能用。如果学习编程语言有捷径,那么请从python开始。python也可以做小网站;python擅长数据处理,不需要java各种封装。所以在大数据处理,首推python,使用python运行sql语句,python打通大数据各个组件降低使用成本。Python也是算法的首选。

Scala:只有会java之后再考虑学scala。Scala最后也是编译为.class文件,所以scala和java是相通的。Scala的兴盛,得益于spark和flink都是使用scala和java语言编写。

Sql:其貌不扬,大学其实是从mysql的sql语法学起,简单容易懂。记住,程序即数据处理。而数据处理的最好的语言是sql,并不是java、python等等等。数据的最好载体是表。所有数据最稳妥的保存是落表,做服务保存业务数据到mysql表,做大数据保存到hive表等。在大数据,sql对应为hive sql,spark sql,flink sql,presto sql,clickhouse sql,starrocks sql等。Sql在所有数据处理都是相通的。

在大数据领域,java是大刀,python是匕首,配合使用。

3 服务

一切皆服务。何为服务?提供一个功能,一个接口,一款APP产品等都可以理解为服务,机器和人的交互即服务。

服务是起点。对于入行的人来说,首先会开发一个功能,牛叉的会独自开发一个网站综合大量功能,对一个软件有了全面的掌握。此时,会涉及到多方面的功能,存储(IO)、计算(CPU)、网络(接口/请求)。流量上来,需要考虑存储和计算之间的缓冲,引入了缓存;大量数据无法及时处理完,排队处理,引入了排队即队列等。为了更好快速开发大型软件,需要一个框架把所有的软件整合起来,spring生态成为大集成者。

Mysql:mysql是存储的基础。所有的工业级系统的存储基本使用mysql,除了银行一类。mysql有严格的事务保证,数据非常可靠。而且在分布式主从、分库分表都已非常成熟。mysql的sql语法、运维是必须的。

Elasticsearch:Elasticsearch是文件搜索系统。除超大厂自研一套搜索引擎系统,一般的业务系统使用Elasticsearch基本能满足业务的需求实现。Elasticsearch也是对存储的文件搜索。

Linux:做服务无法绕开linux,要跑的程序最终都部署到linux,现在基本都是虚拟化,k8s已是主流。linux常用的命令必知必会。

Redis:redis是所有业务系统的缓存标准。彪悍的缓存架构和分布式能力。redis基于C/C++实现,非常巧妙的数据结构与算法,基本是大学C++版本《数据结构与算法》的完美阐释。如果当时老师拿redis来教,我想我当时不至于昏昏欲睡。

Kafka:kafka是唯一在服务和大数据都吃香的组件。排队在日常生活无处不在,吃饭排队、进站排队等,这些场景在软件实现上也是一样。kafka一边写入一边读出,它的优势是高可靠又非常廉价,数据落盘。尤其是日志数据,服务的程序产生大量的日志数据,通过kafka同步,大数据组件把kafka的数据消费保留到表用于分析。

Netty:netty是网络通信的组件,如果不是专门开发linux通信软件基本不涉及。通常的web开发走restful接口简化大量底层细节了。

Spring/Spring Cloud:服务领域的灵魂是Spring生态,spring通过把依赖变为注入IoC,面向切面AOP两大特性发家。逐步发展到Spring Cloud,微服务,即一个独立的功能成为一个服务,一个进程程序,并且从单程序到分布式,性能、高可用。spring cloud和各种组件mysql、redis、kafka等一网打尽适配兼容,成为大一统。学会spring cloud,服务领域基本就有了全貌了。

Mybatis:mybatis是一个ORM框架,提供sql配置化的写法,把sql从代码里抽离出来。其实,如果不是太复杂的sql,spring也足够用。

Web:最终是要做一个系统的,网站、小程序、APP,提供restful接口。最快是copy一个简单的网站改改,学会部署,修改js、css、html为自己想要的样子。

服务的日常工作,不停做系统,一个接着一个做,没有新系统就重构旧系统。高并发、高性能、高可用的三高系统,活是永远做不完的。

进入服务行业,会独立做网站、小程序、APP,是非常亮眼的。

4 大数据

大数据相比服务,就纯粹得多。服务是一条条数据处理,大数据是一批批数据处理。服务是0到1,大数据是1到N。

hdfs:大数据从hadoop发展而来,hadoop的存储是hdfs,是大数据生态一切的基础。以一大块一大块数据存储提高效率。

hbase:hbase也是hadoop的一块,服务的缓存是redis首选,大数据的kv以hbase首选,当然有一些组件也不错比如kudu。hbase是列式存储,支持“缓存”,在大数据领域使用redis则太昂贵太浪费了,hbase刚好。

yarn:大数据的计算和服务的计算最大的区别是计算资源的管控,服务的计算是在某一个进程完成,大数据的计算是在多个一样的进程中完成,“迭代”,多次分分合合完成。yarn负责管控大数据集群的CPU和内存,把这些资源划分为一个个小单元,按需使用。

spark:hadoop一开始的计算框架是Map-Reduce,其实就是拆分-合并。spark中其实有借鉴部分思想,不过spark更快,提出了一系列算子,spark SQL编程,把大数据的计算框架使用难度降低太多!spark也提出了流式计算spark streaming,其实是微批。hadoop MR是批处理,spark超越了它,但留下了“批”的本质。

flink:flink是实时流式处理,一统实时流计算,在此之前storm,jstorm,spark streaming逐渐退出。flink同时支持批处理,但在离线场景,spark依然不可替代。

hive:hive是最好用的大数据组件了,没有之一。因为hive基本不出问题,而且hive sql做离线数仓非常容易,集中了大量的数仓、分析人员。不需要多高的技术,会sql就行。是进入大数据领域最容易的门槛。因为其他的组件都要去懂大数据组件的代码!

presto:hive适合跑离线任务,但hive有一个缺点是慢,慢得难以忍受,一般会使用spark sql代替hive sql去加速离线任务。对于实时分析,spark启动有成本,依然很慢,presto就来代替spark做实时分析,而且查询数据非常快。

clickhouse:不管离线和实时的数据报表,最终要提供给上层管理者使用而且速度要够快。clickhouse是多维查询引擎,一张大宽表,任意group by快速出数。在大数据领域,除非数据量非常少mysql是可以替代,一般不会考虑mysql,数据量过千万mysql基本无用武之地。大数据的查询引擎偏写入和查询,对事务型修改不严格甚至不支持,自然不需要mysql的特性。

starrocks:starrocks是多维查询引擎号称完胜clickhouse,starrocks在多表join,并发QPS、分布式扩展性都全面超越。

5 跨行

从服务转大数据,或者从大数据转服务是否能转?

做服务,要求编码能力,而且要有相应的业务系统实战开发经验,刚毕业入行容易,但是久而久之反而不易,做服务比较烧脑,年轻时首选。大数据本来要求的编码能力要比服务低,而且数据处理和写业务逻辑差别还是很大,从大数据转服务是不易的。

从服务转大数据呢?大数据有数据平台,其实要求有阅读大数据组件源码的能力,spark、flink、kafka这些都少不了。比单纯做业务系统更多的是要求对大数据组件原理的理解、使用、调优。

在所有的开发相关工作中最轻松的是哪方面呢?自然是数仓开发,整天写SQL。如果是从软件架构的人看数据仓库的设计会感觉很乱,少了一点“架构”的的感觉。也有可能是工作内容使然。

数据仓库从离线转为部分需要实时,增加了编码能力的要求,也是数仓人员的转变之路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1362644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【一】达梦数据库安装和使用-Windows

达梦数据库安装和使用-Windows 简介: 新能源行业关系到国计民生,保障能源安全的意识不容懈怠,近些年各行各业都在推进数字化进程,能源行业在国家3060双碳目标提出之后更是进行的如火如荼,能源互联网方面在数字化的同时…

软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用

在Python中,函数参数是定义在函数头部的变量,用于接收传递给函数的数据。Python函数参数有四种类型:必传参数、默认参数、可变参数和关键字参数。每种类型都有不同的使用方式和适用场景。本文将详细介绍这四种函数参数的使用方法。 Python函…

如何做一个炫酷的Github个人简介(3DContribution)

文章目录 前言3D-Contrib第一步第二步第三步第四步第五步第六步 前言 最近放假了,毕设目前也不太想做,先搞一点小玩意玩玩,让自己的github看起来好看点。也顺便学学这个action是怎么个事。 3D-Contrib 先给大家看一下效果 我的个人主页&am…

RH850P1X芯片学习笔记-A/D Converter (ADCF)

文章目录 Features of RH850/P1x-C ADCFNumber of UnitsRegister Base AddressClock SupplyInterrupts and DMAHardware ResetExternal Input/Output SignalsVirtual Channel OverviewFunctional OverviewBlock DiagramPhysical Channels, Virtual Channels and Scan Groups Re…

【airsim】python控制airsim

使用airsim 1.8.1编译完成,进过block项目在cpp测试后,开始踩坑使用python。 使用AirSim\PythonClient\setup.py或者pip安装airsim。 python setup.py install或者 pip install airsim此时,windows电脑的环境信息 (air_py38) D:\code\Gith…

UV胶水与聚氯乙烯PVC材料的塑料粘接,效果如何?

UV胶水可以与聚氯乙烯PVC很好地粘接。 PVC是一种常见的塑料材料,UV胶水通常对PVC具有良好的粘接性能。UV胶水可以在紫外线照射下迅速固化,形成坚固的粘接,因此通常被用于PVC制品的粘接和修复。 UV胶水与PVC粘接的优点: 1. 快速固…

Java并发集合详解

第1章:引言 大家好,我是小黑,在这篇博客中,咱们将一起深入探索Java中的并发集合。多线程编程是一个不可或缺的部分,它能让程序运行得更快,处理更多的任务。但同时,多线程也带来了一些挑战&…

Linux 编译安装 Nginx

目录 一、前言二、四种安装方式介绍三、本文安装方式:源码安装3.1、安装依赖库3.2、开始安装 Nginx3.3、Nginx 相关操作3.4、把 Nginx 注册成系统服务 四、结尾 一、前言 Nginx 是一款轻量级的 Web 服务器、[反向代理]服务器,由于它的内存占用少&#xf…

独立式键盘控制步进电机实验

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit S1P1^4; //将S1位定义为P1.4引脚 sbit S2P1^5; //将S2位定义为P1.5引脚 sbit S3P1^6; //将S3位定义为P1.6引脚 unsigned char keyval; //储存按键值 unsigned char ID; …

etcd基本介绍

etcd基本介绍 ETCD是SoreOs公司发布的一个分布式的、高可用的、key-value存储的数据库。基于Go语言实现&#xff0c;k8s中也使用了ETCD作为数据库。主要用于共享配置和服务发现。相对于zookeeper采用的Paxos&#xff0c;ETCD采用的是Raft算法&#xff0c;该算法具备的性能更佳…

Hadoop集群三节点搭建(二)

一、克隆三台主机&#xff08;hadoop102 hadoop103 hadoop104&#xff09; 以master为样板机克隆三台出来&#xff0c;克隆前先把master关机 按照上面的步骤克隆其他两个就可以了&#xff0c;记得修改ip和hostname 二、编写集群同步脚本 在/home/attest/ 创建bin目录&…

基于SSM的《数据库系统原理》课程平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Matlab:遗传算法,模拟退火算法练习题

1、遗传算法 &#xff08;1&#xff09;遗传算法是一种基于自然选择原理和自然遗传机 制的搜索&#xff08;寻优&#xff09;算法&#xff0c;它是模拟自然界中的生命进化机制&#xff0c;在人工系统中实现特定目 标的优化。遗传算法的实质是通过群体搜索技术&#xff0c;根据…

西电期末1024.数值信息报表

一.题目 二.分析与思路 考点重复&#xff0c;这里介绍一种新的处理方法&#xff0c;以前用找最值时用排序加结构体记录数据位置&#xff0c;用数组记录一串数据使用&#xff0c;西卡西&#xff0c;我们只是找最值&#xff0c;就可以打擂台处理&#xff0c;加上位置就行&#x…

Linux 的引导与服务控制

一 开机启动过程 bios加电自检-->mbr-->grub-->加载内核文件-->启动第一个进程 1 bios加电自检 检测硬件是否正常&#xff0c;然后根据bios中的启动项设置&#xff0c;去找内核文件 2 mbr 因为grup太大,第一个扇区存不下所有的grub程序&#xff0c;所以分为…

【C/C++】开源串口库 CSerialPort 应用

文章目录 1、简述2、效果图2.1、命令行&#xff08;不带GUI&#xff09;2.2、GUI&#xff08;这里用的Qt&#xff09; 3、串口硬件知识普及4、核心实现4.1、Qt的pro文件4.2、main文件4.3、SSerialPort类4.3.1、头文件4.3.2、源文件 4.4、Linux下的CMakeLists.txt 1、简述 本文…

ruoyi若依 @DataScope(deptAlias = “d“, userAlias = “u“)不生效问题

DataScope注解不生效问题记录 问题&#xff1a;DataScope(deptAlias "d", userAlias "u")不生效问题原因排查&#xff1a;解决方案&#xff1a;结果&#xff1a;完美解决 问题&#xff1a;DataScope(deptAlias “d”, userAlias “u”)不生效问题 原因…

MDPI期刊word模版下载

先打开该网站 找到Manuscript 就能下载到word文件了

吴恩达深度学习l2week2编程作业—Optimization Methods(最新中文跑通版)

到目前为止&#xff0c;您一直使用渐变下降来更新参数并将成本降至最低。在本笔记本中&#xff0c;您将获得一些更先进的优化方法的技能&#xff0c;这些方法可以加快学习速度&#xff0c;甚至可能使您获得更好的成本函数最终值。拥有一个好的优化算法可能是等待几天与只需几个…

解决使用localhost或127.0.01模拟CORS失效

解决使用localhost或127.0.01模拟CORS失效 前言问题发现问题解决 前言 CORS (Cross-Origin Resource Sharing) 指的是一种机制&#xff0c;它允许不同源的网页请求访问另一个源服务器上的某些资源。通常情况下&#xff0c;如果 JavaScript 代码在一个源中发起了 AJAX 请求&…