软件工程师基础能力
2022-06-04 19:20:03 0 举报
AI智能生成
软件工程师的技能,5-10年成长方向积累感悟
作者其他创作
大纲/内容
性能优化能力
压测
jvm调优
数据库参数调优
慢sql
衡量系统性能
在线运维能力
Jvm在线调试
工具
自带命令工具
如何实现热部署,回退,线上版本控制
业务架构能力
软件工程
敏捷开发
DDD领域驱动模型
博客资料
《领域驱动模型》
公共二方包设计
工程技能
技术方案
与其他组确认
关于业务的承诺
关于技术的承诺
接口定义
不要过度设计,不要定义不用的方法
最小暴露
流程编排引擎
设计图
流程图
时序图
UML
【书】UML用户指南
原型图
bpm流程编排
架构图
迅速入手项目
idea analyze
idea Diagrams
文档+架构图
问题单与bug修复
工具
Visual Paradigm 15.2
processOn online
项目经验
逆向工具
服务化
架构理解
限流
滑动窗口的最大值
漏桶子
桶令牌
Redis分布式限流
常见指标
安全
代码开发安全意识
修改线上代码
开发自测
漏洞
项目管理能力
进度控制
产品
规范需求出入口
需求
需求拆分
需求梳理
开会
会前通知
项目文档能力
PPT
甘特图
团队管理能力
团队定位及业务目标
定位
目标
对内
对外
招人
mvc最小试错
带人能力
沟通能力
【书】成为技术领导者:掌握全面解决问题的方法
开会
【书】系统化思维导论
参考别人的思考
工程师的本质
高效管理时间
编程能力
语言
Java底层
juc
【书】java并发编程
线程等待
线程等待的意义
JVM
【书】深入理解Java虚拟机
字节码文件
编译优化
类加载
双亲委派加载
类隔离问题
OSGI
自定义类加载器
在做Java类型转换时,只有两个类型都是由同一个加载器所加载,才能进行类型转换,否则转换时会发生异常
JIT
内存布局
堆
OOM
元数据
本地方法栈
例如System.currentTimeMillis()
程序计数器
虚拟机栈JVM Stack
局部变量
操作栈
动态链接
返回方法地址
并发
对象实例化
1、.
垃圾回收
标记清除算法
垃圾回收器
Serial
GMS
G1
内存与锁
自带工具
java编程设计和思想
【书】effective java
java8新特性
Lambda 表达式掌握
Stream 掌握
collect(toList())
子主题
optional类 掌握
方法引用
函数式接口
回调函数
创建对象的几种方法
重试接口设计
子主题
SPI机制
SPI与OGNI的区别
SPI的实现例子,dubbo-spi,sl4j,jdbc驱动,idea插件,spring的ioc容器在fatory.properties中扫描加载其他框架实例https://juejin.cn/post/6950266942875779108看dubbo,jkd,sping三总实现的优劣
源码导读—ServiceLoader类的静态方法load
dubbo-spi重新实现了一套功能更强的 SPI 机制, 支持了AOP与依赖注入,并且 利用缓存提高加载实现类的性能,同时 支持实现类的灵活获取
JavaEE
JNDI
RPC(抽象)
JMI(实现)
子主题
netty技术
重构
【书】重构既有代码第二版
Spring
SpringBoot
控制反转
依赖注入
注入问题,尤其注意抽象类中使用bean
使用注入对象的时候一定注意当前类也必须被spring托管
使用注入对象的时候一定注意当前类也必须被spring托管
抽象类中如何使用bean对象
xml注入组合对象
分清楚注册注入和hsf服务版本
常用case基础
静态类需要使用bean方法
常用case进阶
数据库
工具
idea
notebook插件记录笔记
ctrl+h查看类的继承
代码折叠region endregion
查看实现类
mac cmd+option+方向键
win Ctrl + Alt + B
git
基本用法
笔记
apipost
swagger
乱码工具
http://www.mytju.com/classcode/tools/messycoderecover.asp
sublime——调试,捞单
Mac
查看隐藏文件夹
效率工具
Alfred
win
wox
编码开发习惯
业务场景定制代码最好通过。业务 场景code做区分比较好,不然只能写一大段if else
和约定状况不一样的报错,不要走默认链路
避免代码重复率实际上是因为改的时候容易改了上段忘了下段。
优雅只是其次
谨小慎微,越是微小的改动,在push的时候越要review避免浪费部署调试时间
精准定位
计算机任何你觉得奇怪的地方一定有原因。数据不会无缘无故的出现。
确认值的影响范围,如果是个静态一开始为空后面赋值,别人拿去用很容易踩坑
用大Boolean一定要谨慎,考虑为空的情况
包装类型与基础类型
包装类型有可能返回null,要对每一种情况说明,调用方才不会有疑惑
子主题
业务设计
端面查询
依赖实体而不是接口
wrapper层
防腐设计
查询参数DO
service层
防腐设计
命名
方法命名
返回值
工具类
查询要考虑到业务场景全覆盖,还要考虑如果模型改变的情景
日志
错误码和日志不要有误导性,不要篡改别人的结果,吃异常
定义
Map
不面向异常编程
业务场景定制代码最好通过。业务 场景code做区分比较好,不然只能写一大段if else
和约定状况不一样的报错,不要走默认链路
避免代码重复率实际上是因为改的时候容易改了上段忘了下段。
优雅只是其次
每次发布和修复,都写清楚要增加修改的代码 具体的方案 以及涉及到的业务影响
改动哪个接口的服务啥的
改动哪个接口的服务啥的
明确作用范围,切勿过度承诺
对于默认兜底逻辑一定心中有数,有时候-1 0会有下游业务场景用,及时抛出场景异常
迅速定位问题的能力,根据
缓存设计
数据库
MySQL
深入浅出+sql练习
Innodb
maxwell
mycat
锁
行锁
列锁
MySQL间隙锁
logBin
redis
【书】redis设计与实现
集群搭建
分库分表
Sharding-Sphere
tddl
dataX离线数据库同步工具
【附加项】深度学习
测试
自动化测试
测试用例
DDD模式的测试用例
JDK9自带JHM
分布式
【未完成】幂等接口的设计
需求开发
测试先行
RPC框架
dubbo
dubbo SPI
dubbo etcd
调试能力
单机容器部署
远程debug
集群部署
远程debug
dump文件分析
处理线上问题
异常单据处理
捞单
自测
日志查询
鹰眼+关键字查询
提测文档
编译部署能力
DevOps
日志
2.集成部署一定要检查文件编码约束
云原生
prometheues
grafana
容器技术
docker
dockerfile
网络编排
基本命令
k8s
网络
pod
编译
maven
nexus搭建
编译顺序与冲突解决
使用自定义类加载器
启动依赖第三方接口
build
启动依赖外部接口
更新jar包
中间件的jar包引入不安全的jar包
只依赖自己引用的包
使用更高版本的jar
更新依赖版本
更新无效
《maven实战第二版》
团队协同开发常用技巧
使用快照包
bom设计
拉取不到文件unknow
查看依赖树 mvn dependency:tree >> ./mvnTree2.log
gradle
编译文件编写
Linux
基本命令
打包规范
二方包一定要带源码编译
发布依赖包都需要是正式版本
子主题
应用部署
同JVM
容器内部隔离
各自独立线程池
双亲委派加载
set时深拷贝
应用发布
多分支同时发布
技术影响力
博客
公众号
简书
视频教程
开源项目贡献者
视觉笔记
看《涂鸦笔记》并做笔记输出简书+微信+博客
辅助视频教程
软实力
1.积极主动 高效能的一个小总结吧
克服自己缺陷
破除技术迷信
接受新事物能力
厚脸皮
砍价
吵架
送礼
演讲
新认识朋友
方法论
收藏
0 条评论
下一页