详解java体系实用知识总结

0.java技术能力框架

基础模块应用模块综合模块
技术岗位与面试流程常用工具集系统架构设计
计算机基础常用框架微服务架构
jvm原理缓存容器化
多线程队列云计算(阿里云/aws)
设计模式数据库
数据结构与算法

1.常用设计模式与应用场景

  • 工厂模式:spring 创建bean
  • 代理模式:spring AOP
  • 责任链模式:netty消息处理方式或.审批流程采用责任链模式
  • 适配器模式:SLF4j对log4j的支持
  • 观察者模式:webflux对流式请求的支持
  • 构造者模式:PB序列化中的Builder
  • 策略模式实现各种业务的指标监控逻辑或利用反射结合策略模式实现虚拟商品购买下发放不同权益;

2. JVM

  • 性能分析工具(MAT/JMC/JStack/Jstat/arthas )
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.并发与多线程

在这里插入图片描述
线程状态的转换:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.spring&web

1.spring

spring context初始化流程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
spring如何解决bean的循环依赖调用:
Spring通过三级缓存解决了循环依赖,其中一级缓存为单例池(singletonObjects),二级缓存为早期曝光对象earlySingletonObjects,三级缓存为早期曝光对象工厂(singletonFactories)。当A、B两个类发生循环引用时,在A完成实例化后,就使用实例化后的对象去创建一个对象工厂,并添加到三级缓存中,如果A被AOP代理,那么通过这个工厂获取到的就是A代理后的对象,如果A没有被AOP代理,那么这个工厂获取到的就是A实例化的对象。当A进行属性注入时,会去创建B,同时B又依赖了A,所以创建B的同时又会去调用getBean(a)来获取需要的依赖,此时的getBean(a)会从缓存中获取,第一步,先获取到三级缓存中的工厂;第二步,调用对象工工厂的getObject方法来获取到对应的对象,得到这个对象后将其注入到B中。紧接着B会走完它的生命周期流程,包括初始化、后置处理器等。当B创建完后,会将B再注入到A中,此时A再完成它的整个生命周期。至此,循环依赖结束!

2.RPC框架实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.mybatis

在这里插入图片描述
在这里插入图片描述

4.缓存

在这里插入图片描述
Memcache:
在这里插入图片描述
Redis:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.Mysql调优在这里插入图片描述

mysql索引:
在这里插入图片描述
Mysql调优:
在这里插入图片描述
在这里插入图片描述

5.软件开发

1.软件工程的阶段

在这里插入图片描述

2.测试分类

在这里插入图片描述

3. http请求返回状态码

在这里插入图片描述

4.软件设计原则:

solid原则:

  • 开闭原则:对扩展开放,对修改关闭,多使用抽象类和接口。
  • 里氏替换原则:基类可以被子类替换,使用抽象类继承,不使用具体类继承。
  • 依赖倒转原则:要依赖于抽象,不要依赖于具体,针对接口编程,不针对实现编程。
  • 接口隔离原则:使用多个隔离的接口,比使用单个接口好,建立最小的接口。接口职责明确
  • 迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互作用,通过中间类建立联系。
  • 合成复用原则:尽量使用合成/聚合,而不是使用继承。

5.TOGAF架构领域(BDAT):

  • Business(Strategy/Governance/key processes)
  • Data(Logical and physical data assets/Data management)
  • Application(Interactions and relationships to core business processes/ how they support the strategy)
  • Technology(software and hareware capabilities/Infrastructure、middleware、networks 、communications、processing、and standards)

6.常用开发工具

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MAT 查看dump信息,jmap导出dump文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.常用数据结构与算法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主导世界的10种算法
在这里插入图片描述

8.开源项目学习

1.ftgo源码学习在这里插入图片描述

常用依赖库汇总:

io.micrometer:micrometer-registry-prometheusorg.springframework.boot:spring-boot-starter-actuatorio.eventuate.tram.core:eventuate-tram-spring-jdbc-kafka
io.eventuate.tram.core:eventuate-tram-spring-events
io.eventuate.tram.core:eventuate-tram-spring-messaging
io.eventuate.common:eventuate-common-json-mapper
io.eventuate.tram.sagas:eventuate-tram-sagas-spring-orchestration-simple-dsl
io.eventuate.tram.core:eventuate-tram-aggregate-domain-events
io.eventuate.tram.core:eventuate-tram-spring-consumer-kafka
io.eventuate.tram.core:eventuate-tram-spring-commands
eventuate-tram-sagas-spring-participant
io.eventuate.tram.sagas:eventuate-tram-sagas-spring-orchestrationorg.apache.commons.lang3.builder.HashCodeBuilderlibphonenumber :手机号码库edu.princeton.cup:java-cup-10k:解决c10k库 spring-boot-admin-starter-client
pagehelper-spring-boot-starter:分页
mybatis-generator-core:mybatis 生成器
sa-token-reactor-spring-boot3-starter:集成sa-token到响应式springboot
sa-token-redis-jackson:Sa-Token 集成redis并使用jackson序列化 
sa-token-jwt:sa-token集成jwt

涉及的技术点:

  1. 分布式事务saga实现采用io.eventuate.tram库
  2. kafka-gui:kafka ui界面工具
  3. @EnableAdminServer 开启adminserver

2. PassJava-Platform源码学习

常用依赖库汇总

mybatis-plus-boot-starterspring-cloud-starter-alicloud-ossspring-cloud-starter-alibaba-nacos-discoveryspring-cloud-starter-alibaba-nacos-configspring-cloud-starter-openfeignmybatis-plus-core
mybatis-plus-extensiontransmittable-thread-local  :阿里开源的,提供threadlocal值传递功能,解决异步执行时上下文传递问题。适合jdk6~21io.jsonwebtoken : jjwtspring-security-crypto:加解密spring-retrycom.github.penggle:kaptcha :图片验证码生成工具springfox-swagger2
springfox-swagger-ui  hutool-allelasticsearch-rest-high-level-client :es客户端库org.redisson:redisson :分布式锁、分布式对象等功能框架

涉及的技术点

  1. jwt/springsecurity->token->JwtAuthController
  2. 解决:时间格式问题–> @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”)
  3. redisson实现分布式锁方案代码如下:
 public List<TypeEntity> getTypeEntityListByRedissonDistributedLock() {// 1.设置分布式锁RLock lock = redisson.getLock("lock");// 2.占用锁lock.lock();System.out.println("加锁成功,执行后续代码。线程 ID:" + Thread.currentThread().getId());List<TypeEntity> typeEntityListFromDb = null;try {// 3.获取数据typeEntityListFromDb = getDataFromDB();Thread.sleep(10000); // 模拟长时间执行任务} catch (Exception e) {System.out.println("异常");// TODO} finally {// 4.释放锁System.out.println("释放成功,执行后续代码。线程 ID:" + Thread.currentThread().getId());lock.unlock();}return typeEntityListFromDb;}

9. 工程师求职流程

工程师发展路径

  • 技术序列:技术攻坚、架构设计、专业知识
  • 管理序列:团队管理、项目管理、沟通协作

1.编写简历

工作内容、专业技能和项目经验写的有问题。简历内容废话太多;高级工程师,考虑综合能力;采用star原则写简历,尽量数据量化成果。
在这里插入图片描述
在这里插入图片描述

2.面试流程

在这里插入图片描述

3.面试前准备工作

  1. 了解应试公司以及岗位信息
  2. 系统化复习基础知识
  3. 对原公司负责的项目进行梳理总结
  4. 学习典型架构案例
  5. 阅读常考考点源码
  6. 针对性准备加分项

面试是:沟通、心态、能力的综合体现;自信、良好顺畅的沟通特别重要

4.面试考察点

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

5.加分项

  1. 知识点与典型的业务场景关联
  2. 以反例描述实际场景中误用的危害
  3. 与知识点相关的优化点
  4. 与知识点相关的最新技术趋势
  5. 在了解的前提下,尽量增加回答内容的深度

6.硬技能

在这里插入图片描述

7.面试技巧

在这里插入图片描述
star :stituation,task,action,result.
在这里插入图片描述

面试结束要做的事:

  • 准备1~2个小问题
  • 不要询问面试结果
  • 复盘与总结

参考资料

  • 分布式事务saga: https://blog.csdn.net/2301_77835649/article/details/131529270
  • saga实现框架:eventuate-tram https://github.com/eventuate-tram/eventuate-tram-core
  • 分布式事务seata
  • TransmittableThreadLocal : https://github.com/alibaba/transmittable-thread-local
  • arthas https://github.com/alibaba/arthas/blob/master/README_CN.md
    https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn
    https://arthas.aliyun.com/doc/spring-boot-starter.html
  • Sa-Token:java权限认证框架 https://github.com/dromara/Sa-Token https://sa-token.cc/
  • JeecgBoot 低代码开发平台: https://github.com/jeecgboot/JeecgBoot
  • mall https://github.com/macrozheng/mall https://github.com/macrozheng/mall-swarm
  • springboot+k8s https://gitee.com/geektime-geekbang/staffjoy git clone https://gitee.com/geektime-geekbang/staffjoy.git
  • ftgo: https://github.com/microservices-patterns/ftgo-application.git
  • 程序员进击之路 https://www.didispace.com/home.html
  • mybatis一键生成DAO: https://mybatis.org/generator/
  • mybatis通用mapper4 一键生成: https://github.com/abel533/Mapper
  • 参考资料:https://github.com/WongSilver/spring-cloud-study

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

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

相关文章

设计模式之创建型5种

设计模式 为什么设计模式是23种创建型 对象创建为什么设计模式是23种 设计模式之所以被归纳为23种,而非其他数量,源于GoF(Gang of Four)在1994年的系统性总结和分类。这一数量的确定并非偶然,而是基于以下核心原因: 他们遵循“大三律”(Rule of Three),即只有经过三个…

Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)

文章目录 Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange)ONNX基本概念ONNX(Open Neural Network Exchange)ONNX Runtime ONNX Runtime 在Oracle数据库中的集成参考 Oracle 23ai Vector Search 系列之2 ONNX(Open Neural Network Exchange) 我们在看【…

统一语言学习范式

摘要 现有的预训练模型通常针对特定类别的问题。迄今为止&#xff0c;关于何种架构和预训练设置应为最佳似乎仍未达成共识。本文提出了一个统一的框架&#xff0c;用于预训练在多种数据集和设置中普遍有效的模型。我们首先将架构原型与预训练目标这两个常被混为一谈的概念进行…

Flutter项目升级到指定版本的详细步骤指南

一、升级前的准备工作 备份项目 使用Git提交当前所有修改&#xff1a;git commit -am "Pre-upgrade backup"或直接复制项目文件夹 查看当前环境信息 flutter --version flutter doctor二、升级Flutter SDK到指定版本 方法1&#xff1a;通过版本管理工具升级&#x…

22、web前端开发之html5(三)

六. 离线存储与缓存 在网络环境不稳定或需要优化资源加载速度的场景下&#xff0c;离线存储与缓存技术显得尤为重要。HTML5引入了多种离线存储和缓存机制&#xff0c;帮助开发者提升用户体验。本节将详细介绍Application Cache、localStorage、sessionStorage以及IndexedDB等技…

用HTML和CSS生成炫光动画卡片

这个效果结合了渐变、旋转和悬浮效果的炫酷动画示例&#xff0c;使用HTML和CSS实现。 一、效果 二、实现 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&quo…

【嵌入式学习2】数组

目录 ## 数组概念 ## 数组使用 ## 数组初始化 ## 数组名 ## 数组长度 ## 数组相关题目 1、找最大值 2、逆置 ## 数组和指针 指针加整数的含义 ## 指针数组 ## 数组名做函数参数 ## 函数参数传递数组 1、在函数内部 2. 在函数外部 ## 多维数组 使用下标访问 #…

C++中的判断与循环

一.if判断语句 1.程序中的判断&#xff1a; if (要执行的判断&#xff0c;最后的返回值要是bool型的数据) {如果为真&#xff0c;要执行的代码段; } #include"iostream" using namespace std;int main() {int ans;cin >> ans;if (ans > 1000) {cout <…

前端开发中生成网站的favicon.ico文件的软件推荐及使用方法

日常网站开发中&#xff0c;我们经常需要生成网站的favicon.ico文件&#xff0c;今天我在这里来推荐几个编辑.ico(也可将图片格式转化为.ico)图片&#xff0c;而且免费的那软件&#xff1a; GIMP&#xff1a;一个功能强大的开源图像编辑软件&#xff0c;支持多种文件格式&#…

浅谈WebSocket-FLV

FLV是一种视频数据封装格式&#xff0c;这种封装被标准通信协议HTTP-FLV和RTMP协议应用。 而WebSocket-FLV是一种非标的FLV封装数据从后端发送到前端的一种方式。 在WebSocket的url请求中&#xff0c;包含了需要请求设备的视频相关信息&#xff0c;在视频数据到达时&#xff0c…

基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 ADMM算法 4.2 最大似然ML检测算法 4.3 最小均方误差&#xff08;MMSE&#xff09;检测算法 4.4 迫零&#xff08;ZF&#xff09;检测算法 4.5 OCD_MMSE 检测算法 4.6 LAMA检测算法 …

cocos creator 笔记-路边花草

版本&#xff1a;3.8.5 实现目标&#xff1a;给3d道路生成路边景观花草 在场景下创建一个节点&#xff0c;我这里种植两种花草模型&#xff0c;兰花和菊花&#xff0c;所以分别在节点下另创建两个节点&#xff0c;为了静态合批。 1.将花草模型分别拖入场景中&#xff0c;制作…

R语言——循环

参考资料&#xff1a;学习R 在R中有三种循环&#xff1a;repeat、while和for。虽然向量化意味着我们可能并不需要大量使用它们&#xff0c;但在需要重复执行代码时&#xff0c;它们是非常有用的。 1、重复循环 R中最容易掌握的循环是repeat。它所做的事情就是反复地执行代码&a…

springboot使用阿里限流框架-sentinel

当前项目源码 控制台下载 启动bin中的看板服务&#xff1a;账号密码:sentinel/sentinel 官方文档地址 项目引入依赖 <!-- sentinel注解支持 --> <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-annotation-aspectj<…

CSS3学习教程,从入门到精通,CSS3 元素的浮动与定位语法知识点及案例代码(17)

CSS3 元素的浮动与定位语法知识点及案例代码 一、CSS3 浮动&#xff08;float&#xff09; 知识点 1. **定义** &#xff1a;浮动使元素向左或向右移动&#xff0c;直到它的外边缘碰到包含框或另一个浮动元素的边框为止。浮动主要用于布局&#xff0c;如实现图文绕排等效果。…

数据结构:汉诺塔问题的递归求解和分析

递归方法求解该类问题&#xff0c;是一种简单的思维方法&#xff0c;通常比使用迭代方法更简单。但是&#xff0c;递归方法也有劣势。此处以典型的汉诺塔问题&#xff08;Tower of Hanoi&#xff09;为例给予说明。 汉诺塔是根据一个传说形成的数学问题&#xff0c;最早是由法国…

3.27学习总结 算法题

自己用c语言做的&#xff0c;不尽如意 后面看了题解&#xff0c;用的是c&#xff0c;其中string 变量和字符串拼接感觉比c方便好多&#xff0c;可以用更少的代码实现更好的效果&#xff0c;打算之后去学习c&#xff0c;用c写算法。 递归&#xff0c;不断输入字符&#xff0c;…

vue 图片放大到全局

背景&#xff1a; 在vue项目中&#xff0c;el-image组件图片组件用于展示图片&#xff0c;组件自带的属性preview-teleported&#xff0c;设置为true可以控制图片放大到全局 实现效果&#xff1a; 核心代码&#xff1a; //图片地址&#xff1a;BASEUrl /file/ item.file //这…

【商城实战(75)】数据分析指标体系搭建:从0到1的技术指南

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…

seatunnel配置mysql2hive

SeaTunnel安装教程 # 执行流程 # 下载&#xff0c;解压 # https://mirrors.aliyun.com/apache/seatunnel/2.3.8/?spma2c6h.25603864.0.0.2e2d3f665eBj1E # https://blog.csdn.net/taogumo/article/details/143608532 tar -zxvf apache-seatunnel-2.3.8-bin.tar.gz -C /opt/mo…