详解java体系实用知识总结

news2025/3/30 23:57:25

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-prometheus

org.springframework.boot:spring-boot-starter-actuator

io.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-orchestration

org.apache.commons.lang3.builder.HashCodeBuilder

libphonenumber :手机号码库

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-starter

spring-cloud-starter-alicloud-oss

spring-cloud-starter-alibaba-nacos-discovery

spring-cloud-starter-alibaba-nacos-config

spring-cloud-starter-openfeign

mybatis-plus-core
mybatis-plus-extension

transmittable-thread-local  :阿里开源的,提供threadlocal值传递功能,解决异步执行时上下文传递问题。适合jdk6~21

io.jsonwebtoken : jjwt

spring-security-crypto:加解密

spring-retry

com.github.penggle:kaptcha :图片验证码生成工具

springfox-swagger2
springfox-swagger-ui  

hutool-all

elasticsearch-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.coloradmin.cn/o/2322867.html

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

相关文章

【区块链安全 | 第二篇】区块链概念详解

文章目录 概述1. 区块链类型2 区块链五层架构3 账本模型4. 节点&#xff08;Node&#xff09;5. 区块&#xff08;Block&#xff09;6. 区块链&#xff08;Blockchain&#xff09;7. 区块链工作流程 核心技术1. 共识机制2. 智能合约 主要组件1. 交易&#xff08;Transaction&am…

【开源宝藏】30天学会CSS - DAY6 第六课 流光文字动画

第 0 步&#xff1a;项目结构 lighting-text/├─ index.html└─ style.cssindex.html&#xff1a;包含列表 <ul>&#xff0c;其中每个 <li> 放一个字母或符号。style.css&#xff1a;设置背景、文字样式&#xff0c;以及关键帧动画&#xff08;lighting&#xf…

Swift实现嵌套json字典重排序并输出string

在网络请求或接口签名中&#xff0c;通常要求将参数按照一定规则拼接成字符串。一个常见的做法是对字典的 key 进行排序&#xff0c;然后按照 “keyvalue” 的格式拼接&#xff0c;多个参数之间以特定符号&#xff08;例如 &&#xff09;连接。 如果参数中包含嵌套的字典或…

【Ai】--- 可视化 DeepSeek-r1 接入 Open WebUI(超详细)

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【Ai】--- 可视化 DeepSeek-r1 接入 Open WebUI(超详细) 开发环境一、前情提要:你…

Flink基础简介和安装部署

文章目录 一、Flink基础简介1、什么是Flink2、Flink流处理特性3、Flink四大基石4、Flink中的角色 二、Flink集群搭建1、Local模式①上传Flink安装包②启动交互窗口③提交任务测试④访问WebUI页面查看⑤退出停止集群 2、Standalone模式①修改配置⽂件 conf/flink-conf.yaml②修改…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.2文本生成逻辑:Top-k采样与温度控制

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.2.2 文本生成逻辑:Top-k采样与温度控制1. 文本生成的核心挑战与数学框架1.1 自回归生成的基本流程2. `Top-k`采样原理与工程实现2.1 数学定义与算法流程2.2 PyTorch实现优化3. 温度控制的数学本质与参…

LeetCode算法题(Go语言实现)_11

题目 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一个子序列&a…

Python----数据分析(足球运动员数据分析)

一、数据展示 1.1、数据 1.2、列名 字段名备注Name姓名Nationality国籍National_Position国家队位置National_Kit国家队号码Club所在俱乐部Club_Position所在俱乐部位置Club_Kit俱乐部号码Club_Joining加入俱乐部时间Contract_Expiry合同到期时间Rating评分Height身高Weight体…

matplotlib——南丁格尔玫瑰

南丁格尔玫瑰图&#xff08;Nightingale Rose Chart&#xff09;&#xff0c;是一种特殊形式的柱状图&#xff0c;它以南丁格尔&#xff08;Florence Nightingale&#xff09;命名&#xff0c;她在1858年首次使用这种图表来展示战争期间士兵死亡原因的数据。 它将数据绘制在极坐…

Django与网页表单

我叫补三补四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲网页表单 网页表单又叫做HTML表单&#xff0c;用来处理用户从页面输入发送到服务器的数据&#xff0c;页面表单通常会提供复选框、单选按钮和文本字段&#xff0c;方便用户填写各种形式…

ChatDBA VS DeepSeek:快速诊断 OceanBase 集群新租户数据同步异常

社区王牌专栏《一问一实验&#xff1a;AI 版》改版以来已发布多期&#xff08;51-60&#xff09;&#xff0c;展现了 ChatDBA 在多种场景下解决问题的效果。 下面让我们正式进入《一问一实验&#xff1a;AI 版》第 62 期&#xff0c;看看 ChatDBA 最新效果以及与热门大模型 De…

Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)

一、 高斯滤波 边缘检测本身属于锐化操作&#xff0c;对噪点比较敏感&#xff0c;所以需要进行平滑处理。这里使用的是一个5*5的高斯 核对图像进行消除噪声。 二、计算图像的梯度和方向 三、非极大值抑制 在得到每个边缘的方向之后&#xff0c;其实把它们连起来边缘检测就算完了…

基于Kubernetes部署Prometheus监控平台

#作者&#xff1a;stackofumbrella 文章目录 prometheus和k8s集群版本对照表架构Prometheus Operator简介kube-prometheus下载地址 安装修改镜像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service数据持久化执行安装 Prometheus验证Grafana验证解决C…

往期项目shader着色器实践效果应用合集

1、管路混色 2、水管水流效果 3、水管流入到流完效果 4、加热冷却 两 色混色 示意 XX、毒蘑菇测试效果

绿色暴政:Relax Max如何用军工科技定义环保新标准

《绿色暴政&#xff1a;Relax Max如何用军工科技定义环保新标准》 ——从隐形战斗机涂层到零碳卫浴的降维打击 &#xff08;洛克希德马丁实验室&#xff0c;2023年&#xff09;当F-35战斗机的隐形涂料配方被改写为卫浴釉料时&#xff0c;环保产业迎来了最硬核的颠覆者。Relax…

第十三届蓝桥杯单片机省赛程序设计试题

目录 试题 各程序块代码 init.c main.c other.h other.c key.c seg.c onewire.c部分 ds1302.c部分 试题 各程序块代码 init.c #include "other.h"void init74hc138(unsigned char n){P2(P2&0x1f)|(n<<5);P2&0x1f; } void init(){P00x00;in…

QOpenGLWidget动态加载功能实现教程(Qt+OpenGL)

QOpenGLWidget动态加载功能实现教程 我需要在Qt里面使用QOpenGLWidget显示OpenGL窗口&#xff0c;并且需要实现加载模型后重新渲染更新窗口的功能&#xff0c;但是一直无法更新被卡住了&#xff0c;现在把问题解决了总结一下整个实现过程。 创建一个自己的OpenGLWidget类 QOp…

ESP32驱动BMP280和MQ4传感器

文章目录 前言 一、硬件准备 所需组件 连接方式&#xff1a; 二、软件实现 1.所需库 2.代码实现 效果演示 三、上传Qt端 前言 在物联网和环境监测应用中&#xff0c;传感器是获取环境数据的关键组件。本文将详细介绍如何使用ESP32微控制器同时驱动BMP280大气压力传感器…

MQTT协议笔记

消息格式 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息协议&#xff0c;专为低带宽、高延迟或不可靠的网络设计&#xff0c;广泛应用于物联网&#xff08;IoT&#xff09;设备之间的通信。MQTT消息体的结构遵循MQTT协议规范&#xff0…

“征服HTML引号恶魔:“完全解析手册”!!!(quot;表示双引号)

&#x1f6a8;&#x1f4e2; "征服HTML引号恶魔&#xff1a;“完全解析手册” &#x1f4e2;&#x1f6a8; &#x1f3af; 博客引言&#xff1a;当引号变成"恶魔" &#x1f631; 是否遇到过这种情况&#xff1a; 写HTML时满心欢喜输入<div title"他…