首页 > 编程知识 正文

java吧,java程序员推荐笔记本

时间:2023-05-04 03:31:17 阅读:53515 作者:3813

在写正文之前,我花了一点时间,自己推测了电子商务系统。 我觉得麻雀的五脏俱全,今天用它开刀,一步一步分析。 我们可能接触的技术堆栈可能不完整,但足够了。 最后给你学习途径。

Tip:祝你玩得更开心。 看看每一点,看看哪里是你碰的,什么样的技术堆栈对你不太熟悉。 我觉得还很完整。 如果你有什么建议,也请留言。

不知道大家有没有见过,现在就拆牛。 从上到下依次分析。

前端可能很好奇,你不是在说后端的学习途径吗? 我只能告诉你为什么有前端的部分。傻瓜

我们有不能闭门造车

前端现在很多人还知道后端的技术堆栈。 你觉得我们去网站,第一个接触的是什么?

没错,就是前端。 如果在大学找不到专业的前端同学,做系统也需要自己顶前端。 那样的话,我认为最基本的技术堆栈必须熟悉理解。 丙方至今仍不时开发我们的管理系统,主要是VUEReact

这里列举了我现在认为很简单的事情,以及我们后端可以理解的技术堆栈。 这两者都是基础的。

作为后端,您需要了解前端的部分知识。 以后开发的时候,公司有前端。 那有助于让你前后的调整更加顺畅。 没有前端,你自己也能戳到简单的页面。

HTMLCSSJS,我认为这是必须掌握的一点

这一层不仅有这些,还有Ajax和servlet,Http协议requestresponse

cookie:我这里最后删除了3358www.Sina.com/相关技术。 我个人认为没有必要学习。 我认为很多公司除了旧项目以外,在新项目中不会使用那些技术。

前端在我看来比后端更难,技术迭代更快,知识也没有特定的体系。 因此,很多面试大制造商前端的朋友都说很难。 不是技术难,而是知识多复杂,找不到完整的体系。 与此相比,后端是明显的。 我稍后开始谈后端。

网关层:互联网发展到现在,出现了很多互联网公司,技术更新叠加了很多版本。 从最初的独立时代,到现在超大规模的互联网时代,几亿人参与的春运,几千亿成交规模的双十一、无数互联网前辈,创造了现在互联网的辉煌。

我们经常提到的这些名词,比如3358www.Sina.com/,session,这些技术都有场景背后的支撑。

因为单个服务器无法承受,所以要寻找更多的服务器,但是如何将流量均匀地分配给这些服务器呢?

Tip

我们的机器都通过IP访问,你怎么用我们申请的域名请求服务器?

JSP

你们打磨的嘀嗒、Web站、快手等视频服务商,如何同时保证为全国用户提供快捷的体验?

微服务

我们有这么多系统和服务。 另外,这么多中间件的日程怎么管理日程等?

分布式

您可能需要知道如何对外统一访问这么多服务器,反向代理服务器。

负载均衡

这个层是负载均衡,LVS等制成的。 大家公司的DNS也是这个层做的。

我以前接触过几个有趣的项目。 所有对外接口都是加密的,几十项服务都在网关上解密,找到真正的路由后再请求。

这一层的知识点其实也不少。 请稍后发现3358www.Sina.com/。 另外,还有很多中间件无法离开CDN这一层。 从下面看吧。

服务层:这一层有点东西,是整个框架的核心。 如果你和我帅丙一样以后从事后端开发的话,我们基本上通过技术生涯,大部分时间都在和这一层的技术堆栈打交道。 多种中间件、计算机基础知识、Linux操作、算法数据结构、体系结构框架、研发工具等。

我想读这篇文章的各位一定都学过电脑的基础,但是如果大学时代没有好好学习的话,我想还有必要再看一遍。

为什么我们的页面能保证安全可靠的传输,你呢?zk

TP,TCP协议,什么三次握手,四次挥手。

还有进程、线程、协程,什么内存屏障,指令乱序,分支预测,CPU亲和性等等,在之后的编程生涯,如果你能掌握这些东西,会让你在遇到很多问题的时候瞬间get到点,而不是像个无头苍蝇一样乱撞(然而丙丙还做得不够)。

了解这些计算机知识后,你就需要接触编程语言了,大学的C语言基础会让你学什么语言入门都会快点,我选择了面向对象的JAVA,但是也不知道为啥现在还没对象。

JAVA的基础也一样重要,面向对象(包括类、对象、方法、继承、封装、抽象、 多态、消息解析等),常见API,数据结构,集合框架设计模式(包括创建型、结构型、行为型),多线程和并发I/O流,Stream,网络编程你都需要了解。

代码会写了,你就要开始学习一些能帮助你把系统变得更加规范的框架,SSM可以会让你的开发更加便捷,结构层次更加分明。

写代码的时候你会发现你大学用的Eclipse在公司看不到了,你跟大家一样去用了IDEA,第一天这是什么玩意,一周后,真香,但是这玩意收费有点贵,那免费的VSCode真的就是不错的选择了。

代码写的时候你会接触代码的仓库管理工具mavenGradle,提交代码的时候会去写项目版本管理工具Git

代码提交之后,发布之后你会发现很多东西需要自己去服务器亲自排查,那Linux的知识点就可以kkdll灵活运用了,查看进程,查看文件,各种Vim操作等等。

系统的优化很多地方没优化的空间了,你可能会尝试从算法,或者优化数据结构去优化,你看到了HashMap的源码,想去了解红黑树,然后在算法网上看到了二叉树搜索树和各种常见的算法问题,刷多了,你也能总结出精华所在,什么贪心,分治,动态规划等。

这么多个服务,你发现HTTP请求已经开始有点不满足你的需求了,你想开发更便捷,像访问本地服务一样访问远程服务,所以我们去了解了Dubbo,Spring cloud

了解Dubbo的过程中,你发现了RPC的精华所在,所以你去接触到了高性能的NIO框架,Netty

代码写好了,服务也能通信了,但是你发现你的代码链路好长,都耦合在一起了,所以你接触了消息队列,这种异步的处理方式,真香。

他还可以帮你在突发流量的时候用队列做缓冲,但是你发现分布式的情况,事务就不好管理了,你就了解到了分布式事务,什么两段式,三段式,TCC,XA,阿里云的全局事务服务GTS等等。

分布式事务的时候你会想去了解RocketMQ,因为他自带了分布式事务的解决方案,大数据的场景你又看到了Kafka

我上面提到过zk,像DubboKafka等中间件都是用它做注册中心的,所以很多技术栈最后都组成了一个知识体系,你先了解了体系中的每一员,你才能把它们联系起来。

服务的交互都从进程内通信变成了远程通信,所以性能必然会受到一些影响。

此外由于很多不确定性的因素,例如网络拥塞、Server 端服务器宕机、挖掘机铲断机房光纤等等,需要许多额外的功能和措施才能保证微服务流畅稳定的工作。

Spring Cloud 中就有 Hystrix 熔断器、Ribbon客户端负载均衡器、Eureka注册中心等等都是用来解决这些问题的微服务组件。

你感觉学习得差不多了,你发现各大论坛博客出现了一些前沿技术,比如容器化,你可能就会去了解容器化的知识,像**Docker,Kubernetes(K8s)**等。

微服务之所以能够快速发展,很重要的一个原因就是:容器化技术的发展和容器管理系统的成熟。

这一层的东西呢其实远远不止这些的,我不过多赘述,写多了像个劝退师一样,但是大家也不用慌,大部分的技术都是慢慢接触了,工作中慢慢去了解,去深入的。

好啦我们继续沿着图往下看,那再往下是啥呢?

数据层:

数据库可能是整个系统中最值钱的部分了,在我码文字的前一天,刚好发生了微盟程序员删库跑路的操作,删库跑路其实是我们在网上最常用的笑话,没想到还是照进了现实。

这里也提一点点吧,36小时的故障,其实在互联网公司应该是个笑话了吧,权限控制没做好类似rm -rf 、fdisk、drop等等这样的高危命令是可以实时拦截掉的,备份,全量备份,增量备份,延迟备份,异地容灾全部都考虑一下应该也不至于这样,一家上市公司还是有点点不应该。

数据库基本的事务隔离级别索引,SQL,主被同步,读写分离等都可能是你学的时候要了解到的。

上面我们提到了安全,不要把鸡蛋放一个篮子的道理大家应该都知道,那分库的意义就很明显了,然后你会发现时间久了表的数据大了,就会想到去接触分表,什么TDDLSharding-JDBCDRDS这些插件都会接触到。

你发现流量大的时候,或者热点数据打到数据库还是有点顶不住,压力太大了,那非关系型数据库就进场了,Redis当然是首选,但是MongoDB、memcache也有各自的应用场景。

Redis使用后,真香,真快,但是你会开始担心最开始提到的安全问题,这玩意快是因为在内存中操作,那断点了数据丢了怎么办?你就开始阅读官方文档,了解RDB,AOF这些持久化机制,线上用的时候还会遇到缓存雪崩击穿、穿透等等问题。

单机不满足你就用了,他的集群模式,用了集群可能也担心集群的健康状态,所以就得去了解哨兵,他的主从同步,时间久了Key多了,就得了解内存淘汰机制……

他的大容量存储有问题,你可能需要去了解Pika….

其实远远没完,每个的点我都点到为止,但是其实要深究每个点都要学很久,我们接着往下看。

实时/离线/大数据

等你把几种关系型非关系型数据库的知识点,整理清楚后,你会发现数据还是大啊,而且数据的场景越来越多多样化了,那大数据的各种中间件你就得了解了。

你会发现很多场景,不需要实时的数据,比如你查你的支付宝去年的,上个月的账单,这些都是不会变化的数据,没必要实时,那你可能会接触像ODPS这样的中间件去做数据的离线分析。

然后你可能会接触Hadoop系列相关的东西,比如于Hadoop(HDFS)的一个数据仓库工具Hive,是建立在 Hadoop 文件系统之上的分布式面向列的数据库HBase 。

写多的场景,适合做一些简单查询,用他们又有点大材小用,那Cassandra就再合适不过了。

离线的数据分析没办法满足一些实时的常见,类似风控,那Flink你也得略知一二,他的窗口思想还是很有意思。

数据接触完了,计算引擎Spark你是不是也不能放过……

搜索引擎:

传统关系型数据库和NoSQL非关系型数据都没办法解决一些问题,比如我们在百度,淘宝搜索东西的时候,往往都是几个关键字在一起一起搜索东西的,在数据库除非把几次的结果做交集,不然很难去实现。

那全文检索引擎就诞生了,解决了搜索的问题,你得思考怎么把数据库的东西实时同步到ES中去,那你可能会思考到logstash去定时跑脚本同步,又或者去接触伪装成一台MySQL从服务的Canal,他会去订阅MySQL主服务的binlog,然后自己解析了去操作Es中的数据。

这些都搞定了,那可视化的后台查询又怎么解决呢?Kibana,他他是一个可视化的平台,甚至对Es集群的健康管理都做了可视化,很多公司的日志查询系统都是用它做的。

给大家分享下我的复习的面试资料

这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)

资料获取方式:戳这里前往我的腾讯文档免费下载

第一部分:Java基础-中级-高级

第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)

第三部分:性能调优(JVM+MySQL+Tomcat)

第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)

第五部分:微服务(SpringBoot+SpringCloud+Dubbo)

第六部分:其他:并发编程+设计模式+数据结构与算法+网络

进阶学习笔记pdf

都已整理好,需免费下载点击这里即可

Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法

Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis

Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka)

Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)

[外链图片转存中…(img-C0x63evW-1626169171699)]

[外链图片转存中…(img-jGzNDtQs-1626169171700)]

Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)

[外链图片转存中…(img-7DvitzkW-1626169171700)]

[外链图片转存中…(img-IcGRwYLE-1626169171701)]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。