软件技术雷达Java
https://www.pdai.tech/
0. 前言
0.1 维度与层次
Java技术雷达图从能力角度分为以下三个维度:
- 架构设计与重构
- 编码相关
- IT基础
针对这三个维度中众多的技术点,有偏重地推荐为两个层次:
- 关键知识技能:表格中标蓝加粗字体为关键的知识技能与技术点;
- 扩展知识技能:未标蓝加粗的内容为推荐的扩展内容,在掌握了关键知识技能的基础上,根据业务的不同可以有选择性地挑选学习。
0.2 雷达图的应用建议
专家团针对每个知识技能给出了掌握程度的评分标准:
- 知道(1分):能说清楚是什么,解决什么问题,了解技术对应的社区的使用情况和学习路径。
- 会用(2分):实现过对应技术的"QuickStart",知道技术的适用场景,能照猫画虎实现需求。
- 熟练(3分):能够在业务场景中用最佳实践解决问题,形成自己的方法论和套路。
- 精通(4分):熟悉技术背后原理,研究过源码,能够解决疑难问题(故障、性能优化以及扩展)。
- 贯通(5分):对该技术的不足比较深入的洞见,能够提出创新性的解决方案,拓展该技术。
使用雷达图的个人或团队可以在初期对自身能力做一次评估,并选择合适的技术方向学习。之后在合适的时间点再次评估,审视是否有进步。
辅助评分的参考工具:excel工具
知识技能雷达excel工具示意图:
1. 架构设计与重构
知识技能 | 技术点 | 学习参考 |
---|---|---|
# 架构设计 | ||
- 领域驱动设计 | IBM Reactive in practice | |
martinfowler domain_driven_design | ||
- 面向对象设计 | Introduction to Object-Oriented Programming | |
- 演进式架构 | 《Building Evolutionary Architectures》 | |
martinfowler evo_arch_forward | ||
evolutionaryarchitecture.com | ||
Evolutionary_Architecture_Keynote_by_Neal_Ford | ||
《软件演进式设计与领域建模》(公司优秀MOOC课程) | ||
- 4+1视图 | 运用RUP 4+1视图方法进行软件架构设计 | |
- 扩展内容 | 扩展性设计、可用性设计、可靠性设计、一致性设计、过载保护、容灾备份、反向代理、连接池、配置中心、缓存、定时调度 | |
# 数据建模 | ||
- 事件风暴 | DDD事件风暴建模 | |
- 四色建模 | 四色建模 | |
# 安全设计 | ||
- 威胁建模 | Threat_Modeling_Cheat_Sheet | |
# 重构 | ||
- 重构&坏味道 | 《refactoring》 | |
- 重构工具&快捷键 | jetbrains_refactoring_settings | |
- 设计模式 | java-design-patterns | |
- 扩展内容 | 重构的原则,代码坏味道,构筑测试体系 | |
分布式系统 | - Spring-cache | baeldung_spring-cache-tutorial |
- 分布式事务 | distributed-transaction | |
- gRPC | grpc_docs | |
- 分布式锁 | distributed-locks-with-redis | |
- 云化/服务化/微服务 | spring-cloud | |
- 扩展内容 |
分布式Session: Session复制、Session绑定、Session服务器 分布式缓存:Redis、一致性Hash算法 数据库:读写分离、主从热备、分库分表、一致性 分布式事务、CAP、BASE、2PC/3PC、分布式锁、负载均衡 消息队列:RabbitMQ、ZeroMQ、ActiveMQ、Kafka 服务化:服务注册与发现、Zookeeper 微服务 RPC 云化相关技术 |
|
技术前瞻 | - new sql | tidb |
- 嵌入式kv存储 | rocksdb | |
- AI相关工具及学习资料 |
tensorflow pytorch |
|
- 扩展内容 | 云计算、大数据、AI、分布式 |
2. 编码相关
知识技能 | 技术点 | 学习参考 |
---|---|---|
# Java 语言 |
- 集合框架与操: List Set Map Collections |
Oracle Java官方文档 |
- Java 常用特性: Lambdas Streams API Interface default & static methods Java Time API Functional Interfaces Collections Framework Enhancements Concurrency API Improvements |
Java Lambda 《JAVA并发编程实践》 |
|
- JVM相关: Java虚拟机(Hotspot实现) 类加载机制 内存模型 GC 调优 jstack jmap jconsole |
《深入理解Java虚拟机:JVM高级特性与最佳实践》 The Java Virtual Machine Specification Java SE 8 Edition |
|
- 通用及编码规范 | 《华为Java语言通用编程规范》 | |
# 算法与数据结构 |
- 基本数据结构: 数组、链表、栈、队列、二叉树、图 |
慕课网课程 |
- 基本算法: 查找、排序、分治递归、动态规划、贪婪、一致性哈希 |
慕课网课程 | |
# Java 框架/工具 |
- Spring: IOC/AOP Spring annotation Spring security XML/YML configuration Spring boot Spring data Spring cloud Spring integration |
《spring揭秘》 《spring in action》(第4,5版) |
- 常用工具类: Guava Apache common lang Bean Utils Collections/IO jackson gson |
guava commons-lang jackson |
|
- ORM: JPA Mybatis Hibernate |
spring-data-jpa | |
- Apache Netty | netty官网 | |
# 数据持久/缓存 | - GaussDB 100 | 《数据库事务处理的艺术:事务管理与并发控制》 |
- 数据库锁机制: 表锁、行锁、MVCC |
《MySQL技术内幕:InnoDB存储引擎》 | |
- NoSQL | ||
- Redis | 《Redis设计与实现》 | |
- 分库分表/Sharding |
《PostgreSQL技术内幕:查询优化深度探索》 《高性能MySQL》 |
|
# 开发者测试 |
- 测试分层: Unit testing Integration testing System testing Operational acceptance testing |
|
- 开发者测试框架: JUint + PowerMock + JAssert + jsonassert |
junit5 junit4 |
|
# Debuging |
- 单步调试: debuger breakpoints threading condition breakpoint watch |
|
- 远程调试 | ||
# IDE/TOOLS |
- IDE: IDEA Pycharm |
jetbrains官网 |
- Maven | ||
- Gradle | ||
脚本语言(Python/lua/shell) | python | python官网 |
lua | lua官网 |
3. IT基础
知识技能 | 技术点 | 学习参考 |
---|---|---|
# Linux工具链 | - Shell编程 | 《unix power tools》 |
- perf 工具 | ||
- IO、网络工具 | ||
- 基础命令、SSH、SNMP、SFTP等 | ||
# 版本管理(VCS) | - Git、Gitlab、Github |
Git官网 Git实践练习 |
- svn | ||
# 安全基础 | - SSL/TLS/HTTPS |
Transport_Layer_Security websecurity-what-is-ssl-tls-https |
- 加密算法、哈希、证书、秘钥、数字签名 | ||
# 数据库 | - SQL:索引、主键索引、组合索引、存储过程、Execution plan | |
- ACID | ||
- NoSQL、KV | ||
- 数据库性能调优 | ||
网络知识 | - ip/tcp/udp/http | 《TCP/IP详解》 |
- 网络工具 |
《wireshark网络分析就这么简单》 《wireshark网络分析的艺术》 tcpdump |
|
操作系统(API) | - Euler | 《Linux系统编程》(Robert Love) |
- Centos/Redhat | ||
- Windows | 《Windows核心编程》(Jeffrey Richter) | |
CI/构建 | Jenkins | jenkins官网 |
Maven | maven官网 | |
Gradle | gradle官网 | |
CloudDragon | ||
配置管理 | ansible | ansible官网 |
puppet | puppet官网 | |
chef | ||
容器化 | Docker | docker官网 |
Kubernetes | kubernetes官网 |
软件技术雷达Java相关推荐
- 软件技术雷达 c++
JAVA https://www.pdai.tech/ ThoughtWorks Tech Radar 网页地址是 https://www.thoughtworks.com/radar c++ 0. ...
- 业务、架构、技术,我们应该关注什么 Java和.Net的优势劣势简单看法 市场经济决定,商业之道即是软件之道,市场的需求决定着软件技术的发展 利益决定着选择应用新技术...
业务.架构.技术,我们应该关注什么 一个企业存在的必然和前提就是获取企业生成的利润,怎么样合法合理取得利润呢,企业怎么样生存下去呢,很简单,为客户提供等值的产品与服务,客户支付你相应的报酬. 我们是从 ...
- JAVA软件技术人力外派外包费用怎么算?
软件人力外包逐步成为趋势! 当越来越多的企业选择JAVA软件人才外派的形式解决灵活用工的诉求,紧接着要面对的就是成本费用问题,很多公司反映JAVA外派公司的报价很不透明,也不知道该如何去做公司驻场开发 ...
- 软考考c语言还是java,计算机程序设计工程师技术水平(java)证书就是计算机技术与软件专业技术资格考试的程序员证书么?...
满意答案 rfhenry 2013.09.04 采纳率:47% 等级:12 已帮助:9852人 计算机程序设计工程师技术水平(java)证书就是计算机技术与软件专业技术资格考试的程序员证书. 计 ...
- java计算机毕业设计软件技术课程学习系统设计与实现源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计软件技术课程学习系统设计与实现源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计软件技术课程学习系统设计与实现源码+系统+数据库+lw文档+mybat ...
- 如何成为资深软件工程师(JAVA方向)
这是一篇干货文. 为什么要成为一名资深软件工程师 让我们先考虑一个问题,我相信也是绝大多数程序员迷茫和思考过的问题: 我现在工作(一\二\三\四\五\六)年了,听说程序员写代码最多也就到(30\35) ...
- 什么是ThoughtWorks技术雷达?
今年3月,小灰有幸在深圳见到了一位IT行业的世界级大神,这位大神就是 Martin Fowler,<重构>的作者,敏捷开发的创始人之一. 那一次,正赶上ThoughtWorks技术雷达10 ...
- ThoughtWorks技术雷达(2012年10月)
推荐 1 收藏 我们看到,无论是在ThoughtWorks还是在更广泛的社区,采用微服务(micro-services)的越来越多.诸如Dropwizard的框架和声明性配置(declarative ...
- 软件技术基础_软件技术(游戏软件开发)专业介绍
软件技术(游戏软件开发)专业 核心课程 C++程序设计.Java程序设计.C#程序设计.Cocos2d-x游戏开发.Unity3D游戏开发.Android游戏开发.IOS游戏开发.游戏框架设计.游戏服 ...
- 相对于oracle数据库的作用 类似于,郑州大学软件技术学院Oracle试卷
郑州大学软件技术学院Oracle 2009-2010期末试题 (适用专业:08信管.Java..NET专业 考试时间:120分钟) 单选:1 Oracle 10g中的g表示( A ). A 网络 B ...
最新文章
- 动态环境下的SLAM:DynaSLAM 论文学习笔记
- 面试必备|带你彻底搞懂Python生成器
- android 设置布局横屏竖屏
- codeforces水题100道 第五题 Codeforces Round #304 (Div. 2) A. Soldier and Bananas (math)
- monty python dead parrot-BBC十大英剧神作出炉!
- application.properties中自定义属性的使用
- r2游戏服务器网站,云服务器win2008r2玩游戏
- 聊一聊CSS中的死循环
- openwrt 音频开发
- linux安装selenium、chromedriver、Chrome浏览器、BrowserMob Proxy(代理)爬虫爬站环境安装及测试实例
- 简单谈谈haskell
- POJ 3683 Priest John's Busiest Day
- windows 10下hosts文件写入权限
- Nginx实战|Nginx健康检查
- 【离散数学】p^q^r为什么既是合取范式又是析取范式
- Windows 10文件/文件夹正在使用无法删除的6个解决方法
- qcow2和vmdk互相转
- linux编辑框软键盘自动弹出,带输入框的Dialog自动弹出软键盘
- 从字符串中提取IP子串(C语言)
- 搜狗输入法如何输入直角引号(「『』」 )
热门文章
- java json 打印出来_如何使用Java漂亮地打印现有的JSON数据?
- mysql分日汇总填充0_将记录按小时或按日分组,并在mysql中填充零或空的空白
- oracle下拉菜单多选,多选下拉控件的使用(select-option)multiple-select
- redis打开外网访问端口
- Leetcode561.Array Partition I数组拆分1
- 032-IDUtils 工具类模板
- 制作python模块安装包[转载自刘天斯]
- PHP学习九--会话控制session和cookie
- xtu DP Training C.炮兵阵地
- 取一行多列数据中的最大值