技术选型

软件公司技术选型方案

JAVA技术栈

主要技术:

  1. 基础:计算机基础/JAVA基础/多线程/JVM(MAT)/IO
  2. WEB框架:Spring Cloud/Spring Boot/Spring MVC
  3. 数据库中间件:Mybatis/XXXTemplate
  4. 校验框架:hibernate-validator
  5. 权限控制:Shiro/JWT/OAuth2.0
  6. WEB容器:Tomcat
  7. 负载均衡:Nginx/LVS
  8. 脚本语言:Linux Shell
  9. 前端技术:JavaScript/Jquery/VUE/LayUI/Nodejs/ElementUI
  10. 缓存:Redis/MongoDB
  11. 数据库:MySQL/Oracle
  12. 大数据:ClickHouse/ELK/(后期规划Hadoop)
  13. 搜索引擎:ELK/Mongodb
  14. 消息服务:Kafka/rocketMQ
  15. 版本控制:SVN/Git/Gitflow/SourceTree
  16. 质量管理:禅道/redmine/(JIRA)
  17. 沟通管理:钉钉
  18. 数据库迁移:Kettle
  19. 构建工具:maven
  20. 注册中心:zookeeper
  21. 虚拟化容器:Docker/Kubernates
  22. 分布式存储:FastDF/Hadoop
  23. 主备机:OracleDataguard/Heartbeat/Keepalive
  24. 代码管理: 前端代码拆分、模块化,所有maven模块都可以单独运行
  25. 开发工具:Eclipse/Idea/VSCode
  26. 操作系统:CentOS/Ubuntu/Redhat

跨端技术:

  1. 桌面应用:Electron+Express+nedb (NW.js)
  2. 桌面应用方案二:PyQT
  3. 移动应用:Reactive+Native+Android

入门教程:

代码示例、命名规范、日志处理、异常统一捕获和处理、参数校验、缓存、持久化等,用Markdown来写

技术规范

  1. 编码规范
  2. 文档规范

运维技术

  1. HA
  2. 集群
  3. 系统、数据库、中间件安装使用
  4. 自动化部署、自动测试、自动运维

人才培养

  1. 技术积累
  2. 技术分解(不同人员专注不同领域核心技术)

技术小组划分

  • C/C++
  • Java
  • WEB
  • Android
  • IOS

平台架构

一般平台按流程划分可以分为5层

  1. 运行环境层 linux windows 虚拟主机
  2. 数据存储层 MySQL Oracle
  3. 基础中间件平台层 MQ 定时任务 缓存Redis 搜索引擎
  4. 核心业务平台层 Java业务模块
  5. 表现层 App(Android IOS) Web Pad 桌面应用(Electron) 微信公众号小程序

架构思路:

  1. SOA架构
  2. 微服务架构(通过RESTful交互,配置管理、服务治理、断路器、智能路由、分布式会话和集群管理)

代码文档

Github
Gitlab