Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用大白话告诉你 :Java 后端到底是在做什么?

用大白话告诉你 :Java 后端到底是在做什么?

原创
作者头像
程序员黄小斜
修改于 2019-08-05 03:07:11
修改于 2019-08-05 03:07:11
1.1K0
举报

阅读本文大概需要 6 分钟。

作者:黄小斜

新手程序员通常会走入一个误区,就是认为学习了一门语言,就可以称为是某某语言工程师了。但事实上真的是这样吗?其实并非如此。

今天我们就来聊一聊,Java 开发工程师到底开发的是什么东西。准确点来说,Java后端到底在做什么?

大家都知道 Java 是一门后端语言,后端指的就是服务端,服务端代码一般运行在服务器上,通常我们运行Java 程序的服务器都是 Linux 服务器。

这些服务器在互联网公司中一般放在一个叫做机房的地方里,于是像我们这类 Java 程序员的代码一般也运行在这些机房里的服务器中。

Java 里有一个概念叫做虚拟机,你可以把它理解为一个安卓的模拟器,比如你在电脑上装了一个安卓模拟器,就可以通过它来运行安卓应用程序,比如装个 APP,手机游戏什么的。

所以当你在电脑上安装了一个叫做 JDK 的东西时,电脑里就有了 JRE 也就是 Java 运行环境,有了这个运行环境,你就可以运行 Java 应用程序了。

知道 Java 程序如何运行在计算机上之后,我们再来讲一讲平时学的一些 Java 基础知识,它们到底有什么用?

其实平时这一些 Java 基础语法都仅仅是你写代码的一些基础知识,就相当于英语中的 26 个字母,常见的有基本类型变量、for 循环、if else 等等基本语法,掌握了这些基础知识之后,你就可以上手写一些很简单的代码了。

除此之外,Java 还有一些比较特别的概念,比如面向对象的特性,其中有类、接口等概念。为什么 Java 要引入这些东西呢,其实就是想让使用者更好地进行设计、抽象和编程。

对于新手来说,你不需要理解得特别的深刻,因为这些东西只有你在你真正写代码之后才能逐步去理解。

说完基本知识之后,我想你也会好奇,Java里经常提到的一些集合类是干嘛的呢,因为在现实生活中有很多场景,需要用到集合类,比如说一个用户名列表,你要怎么存呢?

你会用一个 List 来做对不对,所以集合类的作用就是让你在编程中更好的存储数据。

事实上,集合类的概念最早是来源于数据结构的,因为计算机里有很多特殊的数据存储结构,比如文件树,比如链表和数组等结构,因此计算机理论把这些存储数据的模型抽象成一些常见的结构,统称为数据结构。

那么,Java 中的并发编程又是做什么的呢,Java 中的多线程是为了更好地利用电脑中的CPU核心,通过并发编程,就可以提高程序并发的效率。

但是并发编程的背后需要操作系统的支持,以及计算机硬件的支持,所以,如果你要完全地理解多线程,绝不仅仅是理解 Java 里的 Thread 或者是线程池就足够了,你还需要去理解操作系统,以及计算机组成原理。

和并发编程类似,Java 里也有网络编程的概念,Java 里的网络编程和其他语言大同小异,其实也是基于 TCP/IP 协议实现的一套 API,通过网络编程,你就可以在程序中把你想传输的数据传输到网络的另一端,有了网络编程和并发编程之后,Java 程序员的能量已经很大了

讲完这几点之后接下来再谈谈,我们通常说的 Java 后端技术到底是什么,就拿支付宝来举例吧,曾经的支付宝用户数并不多,一台服务器,一个数据库就可以支持所有的业务了。

当支付宝的用户越来越多的时候,一台服务器无法同时满足海量用户的需求,于是开始出现了多台服务器,多台服务器组成了一个集群,用户可以通过负载均衡的方式访问这些服务器,每个用户可能会访问到不同的机器上,这样子就达到了分流的效果,服务器的压力就会减小。

由于数据库需要保证数据的可靠性,万一某一台数据库挂了,并且没有备份的话,那么这个数据就无法访问了,这在大型系统中是不允许出现的,于是乎,就有了数据库的主从部署。

但事实上,随着业务发展,数据库的压力也越来越大,主备部署并不能解决数据库访问性能的问题,于是乎我们需要进行分库分表,在数据库主备的基础上,我们会把一个数据量很大的表拆成多个表,并且把数据库请求分流到不同的数据上,比如说100个分库,100个分表,就相当于把一个数据表划分成10000个数据表。

此时又出现一个问题,如果一个数据库有多个备库,并且当主库挂掉的时候需要进行主从切换时,主备数据库之间的数据就可能发生不一致,而这也是分布式理论研究的问题之一,因为比较复杂,我们这里就略过不讲。

刚才说到了分布式技术,其实负载均衡、分库分表都是分布式技术的一种实现,如果你不想做分库分表,那还有什么办法能够减轻数据库访问的压力呢?于是缓存就出现了,缓存可以让服务器先把请求打到缓存上,由于缓存的数据一般在内存中,所以访问速度会非常快,这些请求无需经过数据库。

随着业务发展,缓存的单点压力也会比较大,于是乎分布式缓存就出现了,通常来说,缓存难以保证数据的可靠性,因为它们的数据可能会丢失,同时缓存只能存储一部分的数据,并不能解决所有问题。

所以当某些业务的请求量非常大的时候,光靠缓存也解决不了问题,此时我们还可以通过消息队列来帮我们解决大流量并发请求的问题。

我们可以通过消息队列来存储一部分的请求消息,然后根据我们服务器处理请求的能力,把消息再逐步取出来,接着去把这些消息逐渐地进行处理,这样就可以很好的解决高并发的问题。当然,前提是消息队列要保证消息存储的可靠性,这也是大部分消息队列都会保证的能力。

一口气讲了这么多,算是把 Java 后端的大概面貌介绍清楚了,除此之外还有很多东西没讲到,真要讲完的话一晚上也说不完。

总体来说,Java 后端技术,说难不难说简单也不简单,我尽量把这些内容都讲的比较通俗易懂,事实上每项技术的背后都有特别多复杂的实现原理,当然,在你理解了 Java 后端技术的整体概念以后,相信对于你之后的学习会更有帮助。

如果有哪里说错了,偷偷留言告诉我

文章作者【黄小斜】大厂程序员,互联网职场新知,终身学习践行者,懂技术,懂面试,懂职场,更想懂你。据说,每个上进又好看的互联网人都关注我了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
超硬核的Java工程师分享,什么是Java?为什么我要做Java,我是如何学习Java的?
新手程序员通常会走入一个误区,就是认为学习了一门语言,就可以称为是某某语言工程师了。但事实上真的是这样吗?其实并非如此。
程序员黄小斜
2020/07/26
1.1K0
2021 最新的Java 后端学习路线!凎!
断断续续写了大半个月,终于把 2021 最新版的 Java 后端学习路线给整完了!
Guide哥
2021/05/20
3.9K1
2021 最新的Java 后端学习路线!凎!
用大白话告诉你小白都能看懂的Hadoop架构原理
Hadoop 是目前大数据领域最主流的一套技术体系,包含了多种技术,例如 HDFS(分布式文件系统),YARN(分布式资源调度系统),MapReduce(分布式计算系统)等等。
良月柒
2019/03/20
7540
用大白话告诉你小白都能看懂的Hadoop架构原理
必看!java后端,亮剑诛仙(最全知识点)
你可能有所感悟。零散的资料读了很多,但是很难有提升。到处是干货,但是并没什么用,简单来说就是缺乏系统化。另外,噪音太多,雷同的框架一大把,我不至于全都要去学了吧。
xjjdog
2019/07/18
7200
必看!java后端,亮剑诛仙(最全知识点)
大型分布式网站架构实战项目分析
distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messages(分布式系统是指位于网络计算机的组件仅通过传递消息来通信和协调其行为的系统。)
烂猪皮
2018/08/03
8800
大型分布式网站架构实战项目分析
【Java每日面试题】大厂是如何设计秒杀系统的?
秒杀读多写少。无需每次实时校验库存。库存预热,放到Redis,信号量控制进来秒杀的请求。
JavaEdge
2021/10/18
7230
java 成神之路
感觉自己技术不错的小伙伴们,看看有没有自己欠缺知识点,赶快补起来吧。 java成神之路 一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 HotSpot 即时编译器、编译优化 类加载机制 classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(
java404
2018/06/08
1.9K0
高并发,我把握不住啊!
我承认我有赌的成分,点进去一看,果然是广告。说真的,内容看起来还是很有吸引力的,但是贫穷阻止了我消费的冲动。
三分恶
2021/05/13
7470
高并发,我把握不住啊!
阿里内部的互联网三高架构是真的牛批!腾讯百度根本模仿不来!
作为一名专业的 Java 开发者,如何在并发场景中写出优良的代码,是一道绕不开的坎,也是考量一个 Java 开发者功底的关键技术。因此,不难发现 Java 并发问题一直是各个大厂面试的重点之一,然而我发现很多候选人在面试时,常常表示对各种并发编程学习笔记一脸懵逼,好像知道一些却又讲不清楚,最终导致面试失败。于是发奋学习,啃大部头书又发现理论太多,头疼。其实 Java 的并发问题虽然内容繁杂,然而整个脉络还是很清晰的。
Java程序猿
2021/05/21
1.1K0
支撑千万级,大型电商分布式架构解析
以用户为中心,提供快速的网页访问体验。主要参数有较短的响应时间,较大的并发处理能力,较高的吞吐量,稳定的性能参数。
李红
2019/05/29
1.1K0
程序员进阶架构师路线
作者简介:曾任职于阿里巴巴,每日优鲜等互联网公司,任技术总监,15年电商互联网经历。
用户7927337
2020/11/04
9420
程序员进阶架构师路线
高并发系统设计的15个锦囊
记得很久之前,去面试过字节跳动。被三面的面试官问了一道场景设计题目:如何设计一个高并发系统。当时我回答得比较粗糙,最近回想起来,所以整理了设计高并发系统的15个锦囊,相信大家看完会有帮助的。
捡田螺的小男孩
2023/02/24
8900
高并发系统设计的15个锦囊
大型分布式电商系统架构是如何从0开始演进的?
本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考。文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好的参考价值。 1、大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 2、大型网站架构目标 高性能:提供快速的访问体验。 高可用:网站服务一直可以正常访问。 可伸缩:通过硬件增加/减少
Java高级架构
2018/07/20
1.4K0
《从零开始学架构》笔记——第二部分:高性能和高可用架构模式
事务问题:一致性。 【问题】 如何保证主机和从机的数据一致???主从复制的延迟性问题。
Noneplus
2019/09/24
6470
科普,想成为厉害的 Java 后端程序员,你需要懂这些
站在运筹帷幄的角度来看,一名厉害的 Java 后端程序员都需要懂得哪些知识呢?我想,这也是很多读者迫切想知道的一个问题,因为如果不站在一个宏观的角度的话,所有学过的知识点都是零散的,就感觉像一只迷路的小鹿,跌跌撞撞的,总感觉欠点火候,对吧?
沉默王二
2020/08/31
6490
科普,想成为厉害的 Java 后端程序员,你需要懂这些
不为人知的网络编程(十七):冰山之下,一次网络请求背后的技术秘密
当你在浏览器输入 qq.com 按下回车键,到页面呈现在你面前,整个过程发生了什么?我以前思考过这个问题,从最前面的浏览器到最后的 db 都梳理的一遍,触发了一次技术顿悟,将很多散落的知识点贯通起来了。
JackJiang
2024/10/24
1850
不为人知的网络编程(十七):冰山之下,一次网络请求背后的技术秘密
【面试题】2018年最全Java面试通关秘籍汇总集!
前几天在交流群里有些小伙伴问面试相关的试题,当时给出了一些问题,苦于打字太累就没写下去了,但觉得这是一个很不负责任的表现,于是下来整理了一下近几年的私藏,特分享给大家!
Java后端技术
2018/08/09
6650
『互联网架构』软件架构-分布式之大型网站的演变过程(28)
1.session集群问题 2.数据一致性问题 3.数据瓶颈(一旦流量上来了,虽然应用做了集群,但是数据库没有做集群,还是一个主库),这时候要考虑主从数据库。
IT架构圈
2019/03/19
5290
『互联网架构』软件架构-分布式之大型网站的演变过程(28)
高并发架构设计经验
高并发解决的核心问题是在同一时间上有大量的请求过来,然后我们的系统要怎么抗住这些请求带来的压力。比如在线直播服务,同时有上百万甚至上千万人观看。比如秒杀品,同时有大量用户涌入。
Allen.Wu
2022/11/14
1.3K2
想了解Java后端学习路线?你只需要这一张图!
学习路线图往往是学习一样技术的入门指南。网上搜到的Java学习路线图也是一抓一大把。
程序员黄小斜
2019/01/21
3700
推荐阅读
相关推荐
超硬核的Java工程师分享,什么是Java?为什么我要做Java,我是如何学习Java的?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档