# 个人JAVA 学习 **Repository Path**: ym_0101/ymStudy ## Basic Information - **Project Name**: 个人JAVA 学习 - **Description**: 个人JAVA 学习,仅供参考。 - **Primary Language**: Java - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-09-23 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一、工具 ## 1.1 编译器 **IDEA** 现在很多公司使用IDEA,作为JAVA 开发编译器,有一说一确实香,代码自动补齐、提示、插件安装以及环境配置都比较方便。 建议使用正版,可以使用教育邮箱免费使用,或者直接购买(几百块一年)、如果在GitHub上开源项目,通过JB审核后也能够免费使用。 **项目管理和编译项目** * maven 自动导包,项目管理,必须要会! * gradle 功能同上,也用的比较多 * ant 类似于Unix 的Make,用来编译生成,切跨平台(刷面试题问过,实际没用过) ## 1.2 测试工具 ​ **postman**:作接口测试、可以保存历史和团队协作 ​ **jmeter**: 压力测试,有代码可以魔改成自己需要的样子 ## 1.3 开发组件 只是列出我使用过的一些东西,毕竟东西有很多,学不完...当然mysql、orcal等就没说了,学校教过嘻嘻。 **数据库可视化工具** ​ Navicat: 使用需要购买,教育邮箱可免费使用。 **消息队列:** - activeMq: 消息订阅和发布组件(比较老了,现在大家都是用Rabbitmq) - Rabbitmq:消息队列 **Nosql:** * redis: 缓存数据库,英文:http://www.redis.cn/documentation.html 中文:http://www.redis.cn/documentation.html * mongodb:和redis 类似但有不同,用的也比较多 :https://www.mongodb.com/ **服务器:** * tomcat: 建议看源码Debug 学 * undertow:只用过一次,某些情况比tomcat高效 * netty(高级):netty 只是java的一个nio框架,需要自己实现去实现服务,它封装的实现高性能是真的厉害且好用。 * nginx: 负载均衡使用,应用很广。 **搜索方面** - elasticsearch: 用来构建搜索引擎,基于内存进行快速搜索。详细见:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html # 二、知识梳理 ​ 大概看下JAVA 需要学习文件的东西以及复习,可以作为大纲看(里面有很多) # 三、官网 * Spring 家族:https://spring.io/ * Spring : https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#spring-core * spring mvc:https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#spring-web * SpringBoot(自动继承了spring mvc,并且进行了升级,但是还是看下Spring Mvc): * Spring Security(安全框架):https://docs.spring.io/spring-security/site/docs/5.4.1-SNAPSHOT/reference/html5/ * Spring Cloud(微服务) * Mybatie:https://mybatis.org/mybatis-3/zh/configuration.html * http://www.mybatis.cn/(官网可能有问题看中文网也行,里面有分析源码) * mybatis-plus:https://baomidou.com/ (mybatis的增强插件,快速开发) * Mybatis-PageHelper:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md (轻量级分页插件) * 权限框架 * Spring Security:https://docs.spring.io/spring-security/site/docs/5.4.1-SNAPSHOT/reference/html5/ * shrio:http://shiro.apache.org/ * 权限控制和设计:https://www.cnblogs.com/iceblow/p/11121362.html * 权限认证方法:session、JWT、oauth2、SSO(就是学校更新 那个统一认证系统,单点等、登录)、秘钥加盐等等 * 学习博客 * 美团博客也能了解到他们业务的一些情况:https://tech.meituan.com/archives * 简单易懂快速上手博客:https://www.haoyizebo.com/archives/ * Gihub上整理的学习路线: https://github.com/h2pl/Java-Tutorial#%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86 博客地址:https://how2playlife.com/categories/ 总的来说数据库设计和系统整体才是最难的 # 四、学习别人的开源项目 ​ 推荐我看过的两个比较完善也比较好的系统。 ## 4.1 若依系统 ​ 暂时推荐前后端分离版本:https://doc.ruoyi.vip/ruoyi-vue/ ​ 能够直接下载代码然后观看。 ## 4.2 MALL电商平台 ​ 链接:https://gitee.com/macrozheng/mall # 五、拓展但是必须会 ## 5.1、linux拓展 学习linux 基本命令能够部署,你的项目以及下载、编译、调试项目,就是基本的东西要会。 ## 5.2 Docker 学习 Docker 应该也属于必须要学的东西,现在应用的很广,还有k8s,容器管理,emmm 听过还没学,但是至少能够学会Docker ,能够部署应用到docker。 ## 5.3 了解和知道基本的渗透 首先要了解别人怎么攻击的,自己才能防护,常见的SQL注入、XSS攻击、CSRF、越权访问、会话重放、越权访问、DDOS攻击、文件遍历等等,了解后才能写出更加安全的代码,不然随便被别人搞了也太没面子了。。。 ## 5.4 分布式 由于我所在的部门是CTC,所以用户量不是很大,用的比较少,但是必须要学,nginx 就是负载均衡,和分布式挂勾的,redis 集群也是、还有镜像服务等等。 当然你会发现少了微服务,后续补充,因为现在这个项目就是微服务项目,等搞完了再补充,hah.