先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
1、微服务架构
将项目拆分为独立的模块,每个模块都有其端口号,模块与模块之间没有关系,是通过远程调用实现
2、SpringBoot
*SpringBoot是什么东西?
SpringBoot本质就是spring,只是快速构建Spring工程的脚手架
-
细节:
-
启动类包扫描机制
从外往里扫,也可以设置扫描机制,通过@ComponentScan(包路径)
-
配置类
-
SpringBoot配置文件类型
-
properties
-
yaml
-
配置文件加载机制
-
先bootstrap
-
再properties或yaml
-
再对应的环境如:dev、test、prod
3、SpringCloud
-
是很多框架的总称,基于springboot实现
-
组成的框架由:
-
eureka服务注册,nacos
-
OpenFeign服务调用
-
Hystrix熔断器
-
Gateway网关
-
Config配置中心,nacos
-
Bus消息总线,nacos
-
项目中,使用阿里巴巴nacos,代替springcloud一些组件
-
Nacos
-
注册中心
-
配置中心
-
Feign
-
服务调用,一个微服务调用另外一个微服务,实现远程调用
-
熔断器
-
Gateway网关,之前是zuul
-
版本
4、MyBatisPlus
-
MyBatisPlus就是对MyBatis的增强,本身并没改变
-
自动填充
-
乐观锁
-
逻辑删除
-
代码生成器
5、EasyExcel
- 阿里巴巴提供操作Excel工具,效率高,代码简洁
*为什么他效率高,代码简洁?
因为他封装了poi进行封装,采用SAX方法(一行一行操作)进行解析
Dom:一次将所有数据放进内存中来
- 项目应用在添加课程分类,读取excel数据
1、SpringSecurity
-
项目整合框架实现权限管理功能
-
框架组成:
-
认证(登录)
-
授权(对用户授予权限)
-
登录认证过程
*说一说SpringSecurity的登录认证过程?
- 代码执行过程
2、Redis
-
首页数据通过Redis做缓存
-
Redis数据类型:
-
Set
-
List
-
Hash
-
String
-
zset
*Redis做缓存,什么样的数据适合使用Redis做缓存?
经常访问,但不经常修改的数据;如主页
3、Nginx
-
方向代理服务器
-
请求转发、负载均衡、动静分离
4、OAuth2+JWT
-
针对特定问题的解决方案
-
Jwt制定一种规则生成字符串,包括:三部分
-
JWT头
-
有效载荷(用户信息)
-
防伪标志
5、HttpClient
-
模拟浏览器,请发请求响应的工具
-
项目中应用场景:微信登录获取扫描人信息,微信支付查询支付状态
6、Cookie
-
特点:
-
客户端技术,存储在浏览器、客户端中
-
每次发送请求,都会带着cookie
-
cookie有默认有效时长,默认关闭浏览器就不存在了,也可以设置时长,会话级别
7、微信登录
上面有讲了
8、微信支付
上面有讲了
9、阿里云OSS
-
文件存储
-
添加讲师,上次讲师头像
10、阿里云视频点播
-
视频上传、视频删除、视频播放
-
整合阿里云视频播放器播放
-
使用视频播放凭证播放
11、阿里云短信服务
- 注册时,发送手机验证码,存储到redis中校验
12、Git
- 代码提交到远程的Git仓库中
13、Docker+Jenkins
-
手动打包
-
idea工具打包
-
自动化部署过程
=================================================================
-
多次路由跳转到同一个页面,created()只执行一次
-
解决方案:通过vue监听机制解决
- 使用Babel把ES6代码转换为ES5的代码运行
-
mp生成的ip值为19位,js处理数据类型值时,只处理16位
-
解决方案:将Long改为String类型
-
访问协议+ip地址+端口号,三者有任何一个不一样,就会产生跨域问题
-
解决方案:
-
在controller添加注解@CrossOrigin
-
通过Gateway网关解决,写一个配置类
-
上面只能使用一个,不然会失效
-
上传视频时,nginx有上传视频大小限制,如果超过,就会出现413错误
-
413描述:请求体过大
-
解决方案:在Nginx里配置客户端提交文件大小
-
响应状态码:413、跨域403、重定向302
-
Maven加载项目时,不会加载src-java文件夹里面的xml类型文件
-
解决方案:
-
1、复制xml文件到target目录
-
2、在maven中配置,与properties配置文件中指定xml文件夹
================================================================
是一个产品;项目是从0开始搭建的
首页和视频详情页qps单机qps要求 2000+
经常用每秒查询率来衡量域名系统服务器的机器的性能,其即为QPS
QPS = 并发量 / 平均响应时间
前台:会员(学员)
后台:系统管理员、运营人员
后台分库,每个微服务一个独立的数据库,使用了分布式id生成器
我们直接接入了阿里云的云视频点播。云平台上的功能包括视频上传、转码、加密、智能审核、监控统计等。
还包括视频播放功能,阿里云还提供了一个视频播放器。
1、请求方式post、get
2、json、x-wwww-form-urlencoded混乱的错误
3、后台必要的参数,前端省略了
4、数据类型不匹配
5、空指针异常
6、分布式系统中分布式id生成器生成的id 长度过大(19个字符长度的整数),js无法解析(js智能解析16个长度:2的53次幂)id策略改成 ID_WORKER_STR
后端服务器配置:我们的项目中是通过Spring注解解决跨域的 @CrossOrigin
也可以使用nginx反向代理、httpClient、网关
问题1:
分布式id生成器在前端无法处理,总是在后三位进行四舍五入。
分布式id生成器生成的id是19个字符的长度,前端javascript脚本对整数的处理能力只有2的53次方,也就是最多只能处理16个字符解决的方案是把id在程序中设置成了字符串的性质
问题2:
项目迁移到Spring-Cloud的时候,经过网关时,前端传递的cookie后端一只获取不了,看了cloud中zuul的源码,发现向下游传递数据的时候,zull默认过滤了敏感信息,将cookie过滤掉了解决的方案是在配置文件中将请求头的过滤清除掉,使cookie可以向下游传递
问题3…
https://www.cnblogs.com/haoxinyue/p/5208136.html
不要太教条,说说人一任职务
CAP定理:
指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可同时获得。
一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(所有节点在同一时间的数据完全一致,越多节点,数据同步越耗时)
可用性(A):负载过大后,集群整体是否还能响应客户端的读写请求。(服务一直可用,而且是正常响应时间)
分区容错性(P):分区容错性,就是高可用性,一个节点崩了,并不影响其它的节点(100个节点,挂了几个,不影响服务,越多机器越好)
CA 满足的情况下,P不能满足的原因:
数据同步©需要时间,也要正常的时间内响应(A),那么机器数量就要少,所以P就不满足
CP 满足的情况下,A不能满足的原因:
数据同步©需要时间, 机器数量也多§,但是同步数据需要时间,所以不能再正常时间内响应,所以A就不满足AP 满足的情况下,C不能满足的原因:
机器数量也多§,正常的时间内响应(A),那么数据就不能及时同步到其他节点,所以C不满足注册中心选择的原则:
Zookeeper:CP设计,保证了一致性,集群搭建的时候,某个节点失效,则会进行选举行的leader,或者半数以上节点不可用,则无法提供服务,因此可用性没法满足Eureka:AP原则,无主从节点,一个节点挂了,自动切换其他节点可以使用,去中心化
结论:
分布式系统中P,肯定要满足,所以我们只能在一致性和可用性之间进行权衡
如果要求一致性,则选择zookeeper,如金融行业
如果要求可用性,则Eureka,如教育、电商系统
没有最好的选择,最好的选择是根据业务场景来进行架构设计
前端渲染是返回 json 给前端,通过 javascript 将数据绑定到页面上
总结
就写到这了,也算是给这段时间的面试做一个总结,查漏补缺,祝自己好运吧,也希望正在求职或者打算跳槽的 程序员看到这个文章能有一点点帮助或收获,我就心满意足了。多思考,多问为什么。希望小伙伴们早点收到满意的offer! 越努力越幸运!
金九银十已经过了,就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。我偶然得到一份整理的资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
别
前端渲染是返回 json 给前端,通过 javascript 将数据绑定到页面上
总结
就写到这了,也算是给这段时间的面试做一个总结,查漏补缺,祝自己好运吧,也希望正在求职或者打算跳槽的 程序员看到这个文章能有一点点帮助或收获,我就心满意足了。多思考,多问为什么。希望小伙伴们早点收到满意的offer! 越努力越幸运!
金九银十已经过了,就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。我偶然得到一份整理的资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料。
[外链图片转存中…(img-hAONkmIJ-1713383358263)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-zbHTPbcC-1713383358264)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!