新手程序员一般会走入一个误区,就是认为学习了一门语言,就能够称为是某某语言工程师了。但事实上真的是这样吗?其实并不是如此。程序员
今天咱们就来聊一聊,Java 开发工程师到底开发的是什么东西。准确点来讲,Java后端到底在作什么?数据库
你们都知道 Java 是一门后端语言,后端指的就是服务端,服务端代码通常运行在服务器上,一般咱们运行Java 程序的服务器都是 Linux 服务器。编程
这些服务器在互联网公司中通常放在一个叫作机房的地方里,因而像咱们这类 Java 程序员的代码通常也运行在这些机房里的服务器中。后端
<section>数组
</section>缓存
Java 里有一个概念叫作虚拟机,你能够把它理解为一个安卓的模拟器,好比你在电脑上装了一个安卓模拟器,就能够经过它来运行安卓应用程序,好比装个 APP,手机游戏什么的。服务器
因此当你在电脑上安装了一个叫作 JDK 的东西时,电脑里就有了 JRE 也就是 Java 运行环境,有了这个运行环境,你就能够运行 Java 应用程序了。微信
知道 Java 程序如何运行在计算机上以后,咱们再来说一讲平时学的一些 Java 基础知识,它们到底有什么用?网络
其实平时这一些 Java 基础语法都仅仅是你写代码的一些基础知识,就至关于英语中的 26 个字母,常见的有基本类型变量、for 循环、if else 等等基本语法,掌握了这些基础知识以后,你就能够上手写一些很简单的代码了。数据结构
除此以外,Java 还有一些比较特别的概念,好比面向对象的特性,其中有类、接口等概念。为何 Java 要引入这些东西呢,其实就是想让使用者更好地进行设计、抽象和编程。
对于新手来讲,你不须要理解得特别的深入,由于这些东西只有你在你真正写代码以后才能逐步去理解。
说完基本知识以后,我想你也会好奇,Java里常常提到的一些集合类是干吗的呢,由于在现实生活中有不少场景,须要用到集合类,好比说一个用户名列表,你要怎么存呢?
你会用一个 List 来作对不对,因此集合类的做用就是让你在编程中更好的存储数据。
事实上,集合类的概念最先是来源于数据结构的,由于计算机里有不少特殊的数据存储结构,好比文件树,好比链表和数组等结构,所以计算机理论把这些存储数据的模型抽象成一些常见的结构,统称为数据结构。
那么,Java 中的并发编程又是作什么的呢,Java 中的多线程是为了更好地利用电脑中的CPU核心,经过并发编程,就能够提升程序并发的效率。
可是并发编程的背后须要操做系统的支持,以及计算机硬件的支持,因此,若是你要彻底地理解多线程,毫不仅仅是理解 Java 里的 Thread 或者是线程池就足够了,你还须要去理解操做系统,以及计算机组成原理。
<section>
</section>
和并发编程相似,Java 里也有网络编程的概念,Java 里的网络编程和其余语言大同小异,其实也是基于 TCP/IP 协议实现的一套 API,经过网络编程,你就能够在程序中把你想传输的数据传输到网络的另外一端,有了网络编程和并发编程以后,Java 程序员的能量已经很大了
讲完这几点以后接下来再谈谈,咱们一般说的 Java 后端技术究竟是什么,就拿支付宝来举例吧,曾经的支付宝用户数并很少,一台服务器,一个数据库就能够支持全部的业务了。
当支付宝的用户愈来愈多的时候,一台服务器没法同时知足海量用户的需求,因而开始出现了多台服务器,多台服务器组成了一个集群,用户能够经过负载均衡的方式访问这些服务器,每一个用户可能会访问到不一样的机器上,这样子就达到了分流的效果,服务器的压力就会减少。
因为数据库须要保证数据的可靠性,万一某一台数据库挂了,而且没有备份的话,那么这个数据就没法访问了,这在大型系统中是不容许出现的,因而乎,就有了数据库的主从部署。
但事实上,随着业务发展,数据库的压力也愈来愈大,主备部署并不能解决数据库访问性能的问题,因而乎咱们须要进行分库分表,在数据库主备的基础上,咱们会把一个数据量很大的表拆成多个表,而且把数据库请求分流到不一样的数据上,好比说100个分库,100个分表,就至关于把一个数据表划分红10000个数据表。
此时又出现一个问题,若是一个数据库有多个备库,而且当主库挂掉的时候须要进行主从切换时,主备数据库之间的数据就可能发生不一致,而这也是分布式理论研究的问题之一,由于比较复杂,咱们这里就略过不讲。
<section>
</section>
刚才说到了分布式技术,其实负载均衡、分库分表都是分布式技术的一种实现,若是你不想作分库分表,那还有什么办法可以减轻数据库访问的压力呢?因而缓存就出现了,缓存可让服务器先把请求打到缓存上,因为缓存的数据通常在内存中,因此访问速度会很是快,这些请求无需通过数据库。
随着业务发展,缓存的单点压力也会比较大,因而乎分布式缓存就出现了,一般来讲,缓存难以保证数据的可靠性,由于它们的数据可能会丢失,同时缓存只能存储一部分的数据,并不能解决全部问题。
因此当某些业务的请求量很是大的时候,光靠缓存也解决不了问题,此时咱们还能够经过消息队列来帮咱们解决大流量并发请求的问题。
咱们能够经过消息队列来存储一部分的请求消息,而后根据咱们服务器处理请求的能力,把消息再逐步取出来,接着去把这些消息逐渐地进行处理,这样就能够很好的解决高并发的问题。固然,前提是消息队列要保证消息存储的可靠性,这也是大部分消息队列都会保证的能力。
<section>
<section>
</section>
</section>
一口气讲了这么多,算是把 Java 后端的大概面貌介绍清楚了,除此以外还有不少东西没讲到,真要讲完的话一夜也说不完。
整体来讲,Java 后端技术,说难不难说简单也不简单,我尽可能把这些内容都讲的比较通俗易懂,事实上每项技术的背后都有特别多复杂的实现原理,固然,在你理解了 Java 后端技术的总体概念之后,相信对于你以后的学习会更有帮助。
黄小斜是跨考软件工程的 985 硕士,自学 Java 两年,拿到了 BAT 等近十家大厂 offer,从技术小白成长为阿里工程师。
做者专一于 JAVA 后端技术栈,热衷于分享程序员干货、学习经验、求职心得和程序人生,目前黄小斜的CSDN博客有百万+访问量,知乎粉丝2W+,全网已有10W+读者。
黄小斜是一个斜杠青年,坚持学习和写做,相信终身学习的力量,但愿和更多的程序员交朋友,一块儿进步和成长!
原创电子书: 关注公众号【黄小斜】后回复【原创电子书】便可领取我原创的电子书《菜鸟程序员修炼手册:从技术小白到阿里巴巴Java工程师》
程序员3T技术学习资源: 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 “资料” 便可免费无套路获取。
考研复习资料: 计算机考研大礼包,都是我本身考研复习时用的一些复习资料,包括公共课和专业的复习视频,这里也推荐给你们,关注公众号后,后台回复关键字 “考研” 便可免费获取。
若是你们想要实时关注我更新的文章以及分享的干货的话,能够关注个人公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,做者黄小斜,专一 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
Java工程师必备学习资源: 一些Java工程师经常使用学习资源,关注公众号后,后台回复关键字 “Java” 便可免费无套路获取。
本文由博客一文多发平台 OpenWrite 发布!