Java主流的技术栈及工具
@
提一嘴我对学习一门新技术的心得
.一门新技术的诞生,必然会有它的作用,存在即合理,凡事都要问个为什么?(不是钻牛角尖的那种为什么?你要是问我为什么一加一等于二,我会觉得你二),新技术的诞生必然是解决某一类问题的,关于这个话题,又能扯到架构的发展是演化的还是设计出来的这个问题....
答案是演化而来的!新技术的诞生其实也很像,就是由于软件的不断发展,架构需要的技术旧的技术不能再完成时,这时候造轮子的人就要想着造新的轮子出来了,造的新轮子就是新的技术>>>>学习一门新的技术,最好的办法是看官网(我刚开始学编程时,听过我们老师说过这句话,可能因为当初菜如狗(现在勉强比之前好点),
内心很不屑,这tm谁看得懂?现在看官网真香!)看它解决了什么问题,再看官网的Demo,还有api,还有看看利用Java怎样操作,框架里面怎样集成等等..看不懂的地方查查博客,看看视频第三个就是关于学完新技术后,过两天就忘了...然后无限套娃操作,学完忘,忘了又学....至于为什么会出现这种情况,并不是我们没有学会这门技术,而是技术这玩意,得用,
1.第一个记笔记
2.要结合具体的应用场景(项目),把这门技术用到,可以称为场景式记忆!
3.这样也就差不多不会忘了,就算忘了简单看看也能很快用起来(概念性的东西能不能记得这个我也很无语,我就是属于那种并不是太喜欢及概念的人)除了基础要好,还有一个就是学习一门新技术的难度,自我认为哈!并不在这个新技术有多难,而是如何在项目里用好,用的如鱼得水!才是最难的,需要反复的使用,反复的练,(心中有剑,手里无剑 能达到这个境界其实很厉害了)
1.从基础开始
JAVASE必学,没啥好说的 --<-<-<@ 基础不牢地动山摇,另外强调一下,<<计算机组成原理>>和<<计算机操作系统>>,<<计算机网络>>,<<数据结构与算法>>真的特别重要!特别重要!特别重要!重要的事情说三遍 我为什么这么说,之前也是不理解,随着所学技术越来越多,发现了一个很有趣的事情,
你会发现其实学一门新的技术并不是很难,一门新的技术,其实只要看看官方,看看官方的demo,不理解的地方查查博客,看看视频,
其实学一会一门新的技术也就是十天半个月,简单的技术可能也就是两三天,(这里我指后端哈..前端我是真的只能看懂,可以cv别人的代码修改,但是自己真的一点都不会写!)
一个很有趣的点是什么?就是这些新技术的思想都用到了之前的基础和知识,把之前的技术再次封装起来变得更简单!如果基础不好,越往后学,
学会使用这门新技术并不是很困难,但是这个新技术的思想或者有的地方你理解起来很吃力(或者想不通为什么可以这么用! 就算你有"起夜级李姐"的脑子也没有用ヾ(≧へ≦)〃)
JDK(罪恶之路的开始,还有这玩意更新太快了!官方这些人不睡觉的吗??) 官方网址
顺带聊一嘴JDK,JRE,JVM的关系(看到JDK这家伙就想聊聊这三个哥们的关系)..忍下,后面重新来谝一谝这三个家伙什么关系,学过java的应该都知道(肯定是正当关系,别乱想啊.)
- java基础语法
- 流程控制与java方法
- 数组
- 面向对象
- 异常
- 常用类
- 集合
- IO(Input/Output)
- 多线程编程
- 网络编程
- 反射和注解
- JUC(进阶)
- JVM(进阶)
- 23种设计模式(进阶)
2.前端基础
- HTML5(网页的骨架)
- CSS3(网页的衣服)
- JavaScript(网页的灵魂)
- 至于前端框架,这里推荐几个(VUE_前后端分离很火,Bootstrap等等,这个玩意我只看的懂...不会用),如果CV还是会用一点点
3.数据库
MySQL(我没压岁钱了/玛涩扣),这个玩意就叫数据库,更新也挺快..你更任你更,我用5.7 官方网址
贴心小助手(msyql驱动jar包也放这里) 点击下载,密码:fn8rJDBC(java操作MySQL数据库的一套API而已)
还有个玩意叫作数据库连接池(想到的东西都会写这里,可以当作学习路线,也可以当作回顾来看,对于我自己来说,看作是温故知新回顾更好!新的技术的太多了,学的这些玩意有的用不上的,甚至名字都忘记了..记录下也好,免得白学一趟)
1.druid(这家伙有一个叫作数据源监控的功能,非常好用!) 官方网址
2.c3p0 官方网址
4.框架
Mybatis(持久层数据库框架) 官方网址
贴心小助手(mybatis包也放这里) 点击下载,密码:b9q3
Spring(目前Java最流行也是大腿的容器框架,Apache官方出品的大杂烩框架) 官方网址
SpringMVC(JavaWeb框架,目前主流框架) 官方网址
Shiro(蟹肉,安全框架,apache旗下基于用户-角色-权限模型的安全框架) 官方网址
SpringBoot(对spring的相关功能进行了封装,完美的避开复杂的配置,开箱即用,能更专注于业务开发) 官方网址
5.微服务
SpringCloud(治理boot开发的微服务,提供了一套微服务的生态链/解决方案) 官方网址
- eureka(服务注册中心和zookepper那个家伙一样,充当服务与服务之间的桥梁)
- gateway(网关)
- fegin(负载均衡)
- 等等...
Dubbo(这家伙也是服务微服务架构的,不过只专注于微服务的服务,其他微服务的事情不管) 官方网址
- zookepper(注册中心,注册生产者和消费者,这家伙长得像个管道工人) 官方网址
- dubbo这家伙也有自己的管理控制台和监控中心(可以管理微服务和监控微服务)
6.项目构建工具
7.版本控制工具
- Git(目前主流的版本控制工具吧!有对应的仓库的github,全球最大的同性交友网站) 官方网址
- SVN(没用过,也是版本控制工具)
8.中间件/容器
Swagger(丝袜哥,这位哥是接口文档,提高前后端沟通的效率) 官方网址
Nginx(web服务器,毛子用c语言写的,一般用来给那只tom猫做负载均衡/反向代理用,如有分布式文件存储需求,可和FastDFS这位兄弟联手) 官方网址中文文档
Redis(缓存数据库,有很多功能,一般就作为缓存来用,最常用的就是SSO单点登录,还有前后端开发中的数据缓存) 官方网址
3.1.单点登录,这里还有spring官方的一个家伙叫作SpringSession,也可实现(后面写一篇关于sso的文章吧..也是自己在项目中经常用到的)
RabbitMQ(消息中间件,有6种工作模型,一个系统发送消息给这位兄弟,这位兄弟接收到消息发送给其他系统,比如...用户注册功能,注册成功后,发送手机短信同时发送邮件提醒) 官方网址
4.1.还有一位哥叫作Kafka也是消息队列,本人没用过
还有个家伙叫作FastDFS(分布式文件系统,学过没用过..) 官方网址
Docker(大鲸鱼背上装集装箱,环境独立,互不影响,容器化技术 解决运维与开发环境不同) 官方网址
9.杂七杂八的技术
- 数据库层面的
- 身份校验层面的
10.Linux
服务器基本都是linux吧,安全开源轻量,当服务器最合适不过了!(记不住没关系,忘了百度查,知识大爆炸的时代..记不住会查会用就行)
1.1.最基本的防火墙操作要知道吧
1.2.把一个服务加到系统服务并且设置为开机自启要知道吧
1.3.SSH要会用吧(阿里云还有个安全组的东西也要会用,不要开了防火墙没更新安全组...这就很尴尬了)
1.4.基本的linux操作要知道吧(java主流的技术栈在Linux中怎样配置一定是要会的,)
1.5.最后是我对Linux这块的看法(在工作中经常用到的也就那么些,可以忘记,但是不能不会查,解决问题的能力和搜索能力是每个优秀的程序员必备的技能)
11.工具
开发工具
1.IntelliJ IDEA(推荐使用,这家伙是真的好用!) 官方网址
2.Eclipse(前几年还可,现在还有人再用) 官方网址
3.STS(Spring官方自研的开发工具,定制版的eclipse) 官方网址
可能还有其他的开发工具..但是不实用也不主流,这里不推荐
压测工具
1.jmeter(接口压力测试工具,也可以当作接口测试工具来用) 官方网址
JVM调优工具
1.jprofile(jvm分析调优工具) 官方网址
查看代码工具
1.SublimeText(这个软件针不戳 推荐) 官方网址
2.EditPlus(也还好,反之我装了没用过...) 官方网址远程连接工具
数据库连接工具
1.Navicat Premium 12(界面清爽,支持各种数据库连接,我用的挺爽,缺点:收费) 官方网址
2.sqlyog(界面一般,功能和上面差不多 优点:免费) 官方网址
3.redis desktop manager(redis官方连接工具,大方美观,稳定性好,用这也挺爽 缺点:收费) 官方网址
4.fastoredis(开源的redis管理工具) 官方网址
数据库设计工具:
1.workbench(orcale官方出品的mysql数据库设计工具) 官方网址
2.PowerDesigner(功能齐全,也还好 缺点:收费) 官方网址
3.PDMan(国产开源,功能齐全 优点:开源免费) 官方网址
接口测试工具
1.Postman(功能齐全,不收费 缺点:太重了 现在有很多插件可以代替) 官方网址
2.HTTP Client(idea中就自带的一个插件 挺好用)
JSON可视化工具
1.JsonView(一般作为插件使用,客户端只有windows版本) 官方网址
HOST工具
1.SwitchHosts(支持修改本地Host以及远程的) 官方网址
虚拟机工具
1.vmware workstation pro(这估计都没啥说的,主流虚拟机软件就是这家伙) 官方网址