前言
最近没有文章输出,请各位见谅,确实感觉没有什么可以拿出来分享的,不是笔者没有学习,其实一直在学习,只是最近工作稍微比原来紧凑一些,没有深入去挖掘某种东西,学的东西比较零散,碎片化,也比较杂,所以一直没有可以真正作为干货的文章出现,下面截图就是我最近的笔记。
最近学的确实比较杂,有点浮躁了,为了丰富自己的技术栈,什么东西都想学一下,但是呢,什么都是浅尝辄止,但是后期肯定会慢慢深入的。现在Java依然是招聘的主流,但是每年涌入Java的开发人员也是非常多,所以现在的就业市场对于初级的开发人员来说其实已经不那么乐观了,而且如今的招聘对于Java应聘者提出了更高的要求,技术更新迭代相当快,笔者越学越感觉自己的渺小,越学越感觉要学的实在是太多了。但是不管怎样,还是得坚持,因为我知道,每个人都不容易,很多人也依然在坚持,这就是动力。
说说我现在的工作情况:
- 完成新需求的功能模块的开发,主要是前端页面和sql脚本
- 网站,移动端接口实现
- 测试通过的功能模块以及接口更新部署到生产机 今天我们不谈业务,就谈技术,就来说说现在的比较主流的技术以及这些技术需要解决的问题。
Java技术栈
仅供分享,没有作为参照的意思,当然了,如果你觉得有值得借鉴的地方,也是我的荣幸。 如果你的目标是进入大厂,那么可能需要你有非常好的计算机基础,算法,数据结构,操作系统,计算机网络的七层模型,TCP/IP,HTTP,HTTPS等协议的原理。说实话,看了那么多大厂的面经,发现差距确实是很大的。工作前两年,需要好好沉淀自己,不断缩小差距。 我对于自己的定位是Java后端程序员,现在也会写点前端,仅仅停留在使用,完成功能的阶段,工作之余也不会花过多时间去学。Java后端绝不仅仅局限于Java语言本身,如果你是三年以上程序员,对于整个知识体系一定要有知识的深度与广度。
Java
- 多线程,并发类,集合,异常,IO流,网络编程等等
- JVM运行时数据区,GC算法与收集器,JVM调优
版本控制工具
- Git(分布式版本控制工具,目前主流,推荐学习)
- SVN(一般老项目,传统IT公司还在用)
关系型数据库
- 索引,索引底层实现,主键索引,唯一索引,联合索引,不同数据库引擎索引的差异(比如Mysql的InnoDB与MySIAM),如何优化查询数据库,explain与慢查询是否用过,什么时候索引会失效
- 存储过程,函数,视图,触发器
Liunx
- 常用命令
- shell脚本
- 网络配置
Nosql非关系型数据库
- Redis(如何实现分布式锁,分布式session;缓存穿透,缓存击穿,缓存雪崩产生的原因以及解决方案;主从,哨兵模式,集群搭建)
- MongoDB(分布式集群搭建)
分布式搜索
- 深刻理解Lucene原理
- ElasticSearch和Solr的区别(ELK是什么,使用场景)
分布式消息队列
- ActiveMQ
- RabbitMQ
- Kafka 如何保证消息的可靠性?www.cnblogs.com/daiwei1981/…
SpringBoot与SpringCloud
- SpringBoot底层原理与自动配置,各个注解的作用 SpringBoot官方代码模板(github.com/spring-proj…
- SpringCloud作为微服务的一站式解决方案,Eureka,Ribbon,Feign,Zuul,Config等等 SpringCloud中文网https://springcloud.cc/
Dubbo与Zookeeper
- Dubbo的底层原理
- Zookeeper(如何使用zk实现分布式锁,分布式事务) zk相关面试:www.cnblogs.com/lanqiu5ge/p…
容器虚拟化
- Docker(Docker的基本命令,DockerFile如何构建容器)
- K8s(容器编排工具)
自动化部署工具
- Jenkins(持续集成,持续部署,持续交付) 当然了,市面上自动部署工具还有很多。
我平时学习的渠道和来源
之前的文章好像也提到了这点,今天就再写多一些。
- 加了二十多个java学习交流群,微信群(偶尔看一看群里的讨论)
- 关注了三十多个的技术公众号(这些公众号是我经常看的,因为里面确实有许多非常有价值的东西,非常推荐,也加了好几个作者的微信,方便转载文章)
- 知乎,掘金,博客园,慕课网,Github,码云,B站(B站非常多的技术视频资源,不用下载直接看,可倍速播放)
- 我的百度云保存了非常多某培训机构视频,腾讯课堂某些学院的Java架构师课程(想要资源的可私聊免费提供),公开课讲的非常不错,想深入就得花钱学习他们的VIP课程,课程内容确实非常有吸引力,我很多时候都是按照他们的课程大纲学习的(方向很重要,不然会走很多弯路)
我的笔记软件
为什么要做笔记,有人说做笔记花时间,当初我也是这么想的,但是如果你现在不做笔记,以后会更花时间? 有人就会问了,何处此言?因为笔记记录的一般都是自己遇到的坑,容易遗忘的知识点,步骤流程较多的操作过程,或者是好的代码案例等等。试想一下,如果你需要在Linux安装Mysql,或者Docker创建Mysql服务,里面的步骤都是比较多的,如果你装了一次,不记录下来,下次装你还得去百度,在万千的博客中查找,而且有些博客写的并不好,本来你第二次装只需要按着笔记步骤花十分钟就搞定,你却花了半个钟甚至更长时间做这件事,你说是不是更费时间。写笔记就是一个积累的过程,写的时间长了,笔记就非常多了。说起做笔记,真的要感谢一位大学的师兄,是他提醒我要尽快开始做笔记。所以我刚实习不久就开始做笔记了,哈哈,现在积累的笔记确实不少了。
做笔记的软件,目前比较主流的有:
- 有道笔记(基本都是免费的)
- 印象笔记
- 为知笔记(我目前用的)
印象笔记和为知笔记有些服务都是付费的,为知笔记好像一年60,其实也不贵,我现在也没有开通会员,所以笔记不能上传云端,只能本地存储,也不能以链接的形式分享笔记,但是这款软件我目前用着比较舒服,支持markdown语法,非常良心的笔记工具。
画图工具
- ProcessOn目前是比较好的在线画图工具,百度就有。
最后
对于Java的学习,笔者基本上倾囊相送,如果你是一个初学者,我想还是有对你有帮助的。从大学自学走过来,一路跌跌撞撞,走了很多弯路,但是总算挺过来了。如今整个大环境比较浮躁,但是做技术研发的人还得沉下心来好好打磨自己,还有就是无论什么时候,都要保持谦卑的态度,恃才傲物者格局有限。最近996.icu闹得沸沸扬扬,我觉得每个人有不同的追求,我可能更愿意选择规律的作息时间,毕竟因为工作而失去了生活和健康的身体,那么工作的意义是什么呢?但是如果你在大厂996,平台会更高,眼界会更广,物质上会更充裕,所以这些东西自己去斟酌吧,去权衡吧。 一直在谈技术,但是有时候想说的绝不仅仅是技术,写博客是自己与自己的对话,也是自己与读者的对话,程序员也不是如外界所说的那样,思想木讷,不修边幅,不善言谈,但是也不排除确实有这种情况,大多都是程序员的自黑调侃,哈哈,为程序员正名一下。我是广州程序员小彬,一直致力于Java后端的学习,感谢你的支持!!!