关于Java 软件工程师应该知道或掌握的技术栈
鄙人星云,今天突然想写这么一篇需要持续更新的文章,主要目的用于总结当前最流行的技术和工具,方便自己也方便他人。
更新时间:2018-10-23 09:26:19
码农职业路径图
Java后端开发优势图
Java 软件工程师技术栈
JDK: 1.8+
Java 基础:I/O(NIO), 集合,多线程,网络编程,并发,JVM内存模型, 设计模式
Java Web 基础:Spring
Java Web框架: Spring Boot 2.0, Spring MVC ,Spring WebFlux, Hibernate ,MyBatis3
SQL: MySQL, SQL Server , Oracle
NoSQL: Redis
嵌入式数据库: Oracle Berkeley DataBase Java Editor
数据库连接池:HikariCP
其他框架: 高效敏捷开发 Ruby on Rails
微服务和分布式: Spring Boot + Spring Cloud
消息中间件:RabbitMQ, Kafka
部署容器:Apache HTTP Server , Tomcat, Jetty, Docker, WebPhere (IBM 的Java应用服务器软件,用来部署运行Web应用,号称WAS)
反向代理服务器+ 负载均衡: Nginx
JSON处理: Gson
HTML处理:jsoup解析HTML(将HTML解析成对象的API)
Java Android 工程师技术栈
作为Java 安卓开发工程师,面对各种不同的开发需求,我们要用各种不同的框架类库来帮助我们快速实现,因此鄙人持续更新项目地址如下:
https://github.com/geekxingyun/Android-Open-Source-Project
前端工程师技术栈
HTML5 + CSS3+ jQuery + Bootstrap 4+React JS + ajax +Pjax
Angular 6.x + Vue2 + React Native+ Nodejs
CSS预编译语言(Less+Sass)+Webpack(模块化打包工具) + Grunt/Gulp(自动化构建工具 )
TypeScript(游戏开发) +Cocos2d-JS
Google V8 浏览器引擎
在前后端分离的概念中,前端脱离与后端工作,在对好接口之后,以及后端没有假数据的情况下,可以先采用折衷的办法来请求假数据,这就有了Mock.js,可以随机生成数据,拦截ajax请求。
Easy Mock 是一个可视化,并且能快速生成 模拟数据 的持久化服务
学习资源与开发工具
关于IDE的选择:
学习研究推荐 Spring Tool Suite
快速开发单个应用推荐 Intellij Idea 旗舰版
对比 | Intellij Idea 旗舰版 | Spring Tool Suite |
成本 | 付费(个人可用破解版) | 免费 |
群体 | 个人 | 企业 |
优点 | 插件丰富,功能强大 | 稳定,适合维护 |
缺点 | 不支持多项目同窗口预览和管理 | 很好地支持多项目同窗口预览和管理 |
场景 | 高效快速开发单个应用 | 学习研究和项目维护管理 |
推荐阅读书籍:
Java 基础提高 《Java编程思想》(Think in java 第四版)
Android 必看书籍——《第一行代码 第二版》
Web 安全常识: 《白帽子谈网络安全》
Spring 学习:《Spring 揭秘》
Java 基础揭秘篇 《码农翻身》刘欣
其他:
浏览器导航:极客导航
Bug异常处理:stackoverflow Issue JIRA
代码质量检测分析:
findbugs是sonar的子集,在sonar平台中可以直接导入findbugs的规则集。sonar比findbugs高了一个层级,多出了sonar不仅关注了常规静态bug,还关注到了如代码质量、包与包,类与类之间的依赖情况、代码耦合情况、类,方法。文件的复杂度、代码中是否包含大量复制粘贴的代码是质量低下的,关注到了项目代码整体的健康情况。不过个人在使用过程中findbugs本身的规则比sonar的官方规则更加实用,high级别的bug都是较为实用的bug,且能覆盖到一些性能方面的问题,sonar的规则,50%bug都是主要级别,其实危害不大。前期轻量级的静态bugs扫描可以选用findbugs,当项目持续稳定后可以选用sonar进行更深层次的代码质量控制
findbugs+jenkins CI 集成
代码质量检测工具:SonarQube (包含Findbugs)
代码托管:
国外平台 : Github , Gitlab(支持无限的公有项目和私有项目,页面样式不喜欢) Bitbucket (免费支持5个开发成员的团队创建无限私有代码托管库)
国内平台:
阿里云Code 阿里出品的代码托管平台
码云(Gitee) (开源中国和CSDN合作平台,总容量是5G,单项目最大1G,可创建 1000 个项目,不限私有或公有。最大问题是只能有5个成员)
Coding 全中文支持,腾讯云合作 能创建5个项目,最多可以有20个成员;当绑定腾讯云账号可升级为 512M 10个项目)
码市是 Coding 推出的互联网软件外包服务平台
技术社区:博客园,CSDN, 开源中国 ,掘金 ,InfoQ , Segmentfault ,Spring For ALL 优知学院
外包:码市
后台管理UI框架: H-ui.admin , H+ , Admui ( 据说用了最先进的技术【HTML5 + CSS3+Less+ jQuery + Bootstrap + Pjax+ Nodejs + Gulp】)
编程在线培训学习:慕课网 极客学院 咕泡学院 优达学城 潭州学院
Office 处理:Apache POI, 永中软件(QQ邮箱据说用的这个)
文字识别: 百度文字识别(OCR)服务 科大讯飞文字识别服务 腾讯云文字识别OCR QR Code SDK PC端 .net 北京中安未来科技有限公司OCR服务
语音处理:科大讯飞
人脸识别:Face++
地图导航:高德地图
手册查询:手册网
截图软件: Snipaste
GiF录制:LiceCAP
招聘求职
牛人
Android 界
stormzhang 人人都喊他张哥,安卓开发入门指南文字的第一人,从开发转了产品
郭霖 《第一个行代码》 Android界最权威的入门书籍的作者
张鸿洋 开源了很多优秀安卓项目
Java 界
程序员小灰 风趣幽默的图片对话故事讲解知识点
码农翻身--刘欣 用故事的方式讲解软件编程的若干重要领域
纯洁的微笑 张强,各大技术社区的博客专家,同时运营着一个公众号:纯洁的微笑。目前一家第三方支付公司担任技术总监,负责微服务架构实践和大数据治理。
程序员DD 翟永超 Spring 中文社区创始人之一
阮一峰 经济学博士,技术文章写得最好的人
廖雪峰 著名讲师,JS, Git,Python 教程很出名
Linux 界
鸟哥 著名作品,鸟哥的Linux私房菜
羽翼 SQLMAP等渗透网络安全教程,渗透领域大亨
关于我
星云个人主页: http://www.520geek.cn/about/
星云CSDN博客:https://blog.csdn.net/hadues
星云博客园:http://www.cnblogs.com/xingyunblog
星云阿里云栖博客:https://yq.aliyun.com/u/xingyunsky
星云GitHub: https://github.com/geekxingyun
星云微博:https://weibo.com/xingyunsky
联系方式:fairy_xingyun@hotmail.com
有其他需要更新的或者分类有不对之处欢迎在评论区留言~
我的知识星球
公告:我的知识星球开通了
付费星球
星云视频教学
免费星球:
技术交流分享讨论~
交流即分享,分享才能进步~
低调,自由,共享,免费是我们的宗旨~
如果你是一位爱代码如生命的的程序员,
如果你是一位网络安全渗透工程师,
如果你对计算机技术深感兴趣,
那么欢迎入圈交流学习~
极客技术宅因为有你更精彩~
关于Java 软件工程师应该知道或掌握的技术栈的更多相关文章
- JAVA软件工程师应该具备的技能有哪些?
前言:有朋友问我:学历和能力哪个重要?我个人觉得能力大于学历,没有能力哪来的学历,学历只是证明能力的一方面.为此在能力方面畅谈java软件工程师必备的能力.作为一名合格的java工程师,不仅需要学历, ...
- Java软件工程师技能图谱
原文链接:Java软件工程师技能图谱 最近在考虑"拥有怎样的技能才能算一名合格的java软件工程师呢?"这个问题.碰巧在github发现一个很棒的开源项目--程序员技能图谱.@Zh ...
- 软件工程师所需掌握的“终极技术”是什么?
软件工程师所需掌握的"终极技术"是什么? http://yunli.blog.51cto.com/831344/1019990 最近,我在微博上看到@程序员邹欣老师发的一条微博 - ...
- JAVA软件工程师应该具备哪些基本素质?
必知:软件企业要求基础软件工程师具备六大基本素质,即良好的编码能力.自觉的规范意识和团队精神.认识和运用数据库的能力.较强的英语阅读和写作能力.具有软件工程的概念和求知欲和进取心. 1.良好的编码能力 ...
- 没找到工作的Java软件工程师是屌丝中的屌丝啊
Java软件开发的工作咋就那么难找呢?
- 都卷Java,你看看你得学多少技术栈才能工作!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言:授业解惑 我知道,你不知道的还有很多! 你了解计算机要从哪里开始学习吗?你清楚为了能 ...
- Java开发之javaEE(java2EE)的介绍,java软件工程师初步阶段知识
1. 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担. 为了程序 ...
- Java软件工程师全栈技能
1.前端基础技能,掌握html.js.css,会用jquery.bootstrap. 2.前端技能升级,会用echart.BMap等等. 3.前端高级技能,熟练使用angularjs等等. 4.服务端 ...
- [简历] JAVA 软件工程师
首先,一份好的简历不光说明事实,更通过FAB模式来增强其说服力. Feature:是什么 Advantage:比别人好在哪些地方 Benefit:如果雇佣你,招聘方会得到什么好处 其次,写简历和写议论 ...
随机推荐
- Python实现的各种机器学习算法
七种算法包括: 线性回归算法 Logistic 回归算法 感知器 K 最近邻算法 K 均值聚类算法 含单隐层的神经网络 多项式的 Logistic 回归算法 01 线性回归算法 在线性回归中,我们想要 ...
- 理解JSON对象:JSON.parse、 JSON.stringify
何时是JSON,何时不是JSON? JSON就是一个有特殊规则的字符串,按照这个规则我们就可以把这个字符串解析成JS对象. JSON是设计成描述数据交换格式的,他也有自己的语法,这个语法是JavaSc ...
- BZOJ.4513.[SDOI2016]储能表(数位DP)
BZOJ 洛谷 切了一道简单的数位DP,终于有些没白做题的感觉了...(然而mjt更强没做过这类的题也切了orz) 看部分分,如果\(k=0\),就是求\(\sum_{i=0}^n\sum_{j=0} ...
- php 将16进制数串转换为二进制数据的函数
/** * 将16进制数串转换为二进制数据的函数 * @param $hexdata * @return string bindata */ function ...
- Python-copy()与deepcopy()区别
http://blog.csdn.net/qq_32907349/article/details/52190796 学习过程中发现copy()和deepcopy()这对好基友实在是有点过分,搞的博主就 ...
- UDP与TCP
网络模型分为OSI参考模型和TCP/IP参考模型 两台主机之间传输联系 TCP和UDP就是传输层的东西.叫做传输控制协议和用户数据报协议两者的区别是 网络通信底层通过Socket实现. UDP:Soc ...
- 在npm上发布一个自己的包
1.首先你要在npm上创建一个账号,这里需要输入邮箱的,注意激活邮箱否则无法publish自己的包 2.在本地创建一个文件夹,输入npm init初始化项目,这里是我使用npm init创建的pack ...
- Html链接标签:
<a>标签可以在网页上定义一个链接地址,它的常用属性有: (1)href属性 定义跳转的地址 (2)title属性 定义鼠标悬停时弹出的提示文字框 (定义鼠标悬停时,弹出的提示框中的文字) ...
- python:什么是单例?一个简单的单例
单例:即一个类只能生成唯一的一个实例,python中的类如果没有被实例化,则cls._instance为None 如下: class Singleton(object): def __new__(cl ...
- PAT基础6-12
6-12 判断奇偶性 (10 分) 本题要求实现判断给定整数奇偶性的函数. 函数接口定义: int even( int n ); 其中n是用户传入的整型参数.当n为偶数时,函数返回1:n为奇数时返回0 ...