当前位置: 首页 > news >正文

详解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请求返回状态码

在这里插入图片描述

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.mrgr.cn/news/96025.html

相关文章:

  • K8S学习之基础五十二:k8s配置jenkins
  • 我的世界1.20.1forge模组进阶开发教程——结构(3)
  • 我的世界进阶教程——结构(2)
  • 【C++网络编程】番外篇(实战):基于Boost.Asio协程的HTTP服务器实现与静态文件服务开发指南
  • macOS 制作dmg磁盘映像安装包
  • 2.0 项目管理前言
  • 车载以太网网络测试 -24【SOME/IP概述】
  • 科普:特征、规则、模型,及Lift(提升度)
  • PyTorch图像预处理--Compose
  • Linux面试题
  • 优选算法系列(4.前缀和 _下) k
  • CAS(Compare And Swap)
  • 23种设计模式-观察者(Observer)设计模式
  • ElasticSearch -- 部署完整步骤
  • 黑盒测试与白盒测试详解
  • dynamic_cast的理解
  • LangChain4j(1):初识LangChain4j
  • Matlab Hessian矩阵计算(LoG算子)
  • kafka零拷贝技术的底层实现
  • 《Operating System Concepts》阅读笔记:p483-p488