1.先别学SSM,也别学Mybatis ,直接百度SpringBoot
为什么学它呢,简单,还有你要用到的几乎所有框架都可以以最简单的模式去学习,比如mybatis。
springboot天然集成了你在校学习的ssm以及任何你需要用到的东西,真正意义上实现0配置,开箱即用。
任何行业有价值的东西都会有行业门槛或者行业堡垒,疯狂的提高门槛为了不让其他人来瓜分蛋糕。
而互联网程序员现在蛋糕越来越大,一些既得利益者会想办法提高门槛,直接springboot让你以最简单最捷径的模式开启后端之路。
2.接口
@Autowired
@Autowired是用在JavaBean中的注解,通过byType形式,用来给指定的字段或方法注入所需的外部资源。
例如Controller层加注解 @Autowired private XxxService xxxService;注入业务层
@Component
(把普通pojo实例化到spring容器中,相当于配置文件中的)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
@Repository
@Repository注解修饰哪个类,则表明这个类具有对对象进行CRUD(增删改查)的功能,而且@Repository是@Component注解的一个派生品,所以被@Repository注解的类可以自动的被@ComponentScan 通过路径扫描给找到。(这也在一定程度上解释了,为什么被@Repository注解的类也能@Autowired)
实际开发过程中通常在Mapper接口中添加,否则ServiceImpl中注入mapper会报红波浪线。
@Service@Controller/@RestController
在applicationContext.xml配置文件中加上这一行以后,将自动扫描指定路径下的包,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml配置文件中定义bean了,类似的还包括@Component、@Repository、@Controller。
@Service@Controller我归为一类,我理解的可以简单理解为是用来标记其对应的层但是实际开发中标记controller层都用@RestController 自行百度区别
写好接口壳子,
入参是一个,多个,集合,文件?
出参是一个,多个,集合,文件?
3.异常怎么处理?如何全局统一处理一些问题?
@ControllerAdvice
@RestControllerAdvice
@Aspect
(以上内容都是高收益的,基本百度一查一看就能懂,且非常非常实用)
4.百度SpringBoot mybatis
这个必须会,且会熟练使用
·百度原理,搭建,主要配置 (pom文件)
·百度@Select,@Update.....
这是mybatis的主要内容,干活就写这些
·百度mybatis动态参数 注解
别学驱动方式或其他方式,直接注解版本或者 xml文件
·百度springboot事务,过一遍有些忘记了也没关系
·重点(很实用)百度mybatisplus ,dao(数据层)代码全都是写好的
·百度mybatis-plus-generator 或者 mybatis Generator
从业务层到实体类全部生成 别人给你写好的改一改
5.百度pagehelper 分页(必须会)
到这一步几乎涵盖所有内容也就是所谓的能干活了,你靠着这一套就能保住工作。
如果时间充裕强烈建议手必须编码进行增删改查列表分页一波,知道熟练。因为后面还有新的技术都需要以此作为起点。
如果你号称自己在学校学习熟悉掌握并精通ssm
那会问你:
1.aop,ioc 默写全文
2.声明事务以及事物传播的方式 默写全文
3.spring事务不生效的原因 默写全文
4.什么是数据库连接池,你怎么用(hikari,druid)
5.背诵并默写全文
6.spring多数据源配置 请简述主要步骤.
7.mybatis #{}和${}啥区别(其实这是ognl表达式..)
8.Mybatis都有哪些Executor执行器
9.Mybatis的一级、二级缓存
10.sqlsession生命周期
..
经过长时间的朗诵阅读背诵并默写你能拿到10人公司offer..
毫不客气的说,2021年年底了只会这点玩意..好点的外包公司外包项目你都进不去..
如果你放弃了,不想学了,饿不死你了你可以止步于我上面阐述的这些。
———————————————————————————————————————————
如果你不甘于如此那么请继续下面的内容
一个初级工程师是否牛逼,首先是sql,sql牛逼成功了一大半了。
不停的百度sql更多内容
1mysql
1.1mysql innodb原理
1.2mysql事务隔离级别 必问
1.3mysql索引原理(就是背诵b树,b+树)
1.4sql优化 必问,而且是装逼的好时节(图2)
这玩意给你一个捷径:mysql参考手册
苹果翻译,然后第八章开始阅读,然后默写全文..
以上内容可以入职后再用,仅仅只是救命稻草
———————————————————————————————————————————
以下内容我自己也在学,部分参考知乎问答中级java工程师,有些我也不会但是学习路线是正确的
一、
百度sql优化
会得到 like% null,大小表等..先记住..
1.5百度执行计划
就知道有哪几个type 谁快就好了
system:系统表,少量数据,往往不需要进行磁盘IO
const:常量连接
eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描
ref:非主键非唯一索引等值扫描
range:范围扫描
index:索引树扫描
ALL:全表扫描(full table scan)
然后百度 msql不走索引的原因..
比如like百分号,is null …
6再加一个乐观锁mvvc
差不多 普通难度最后生还者可以玩了..
哦不 crud boy的工作没问题了
百度sql优化
会得到 like% null,大小表等..先记住..
1.6然后百度inner join,left join,right join区别
1.7百度mysql左原则,大小表查询怎么优化(装逼技巧:先说如何如何,然后话题一转..现在没用了,编译器早就帮你优化了,不管前后都无所谓)
1.8mysql数据超过4-5千万会很慢.解决办法…
(1.6-1.8我比较熟悉因为项目很少有单表或者单对多,一般面试涉及你以往项目或者问你数据库上来直接会问你多对多的相关问题 :中间表了,怎么设计多对多了,crud一些功能相比较于单表或者单对多有什么注意的了,一定会涉及联合查询与表与表的连接 就会问到inner join,left join,right join 区别,因为给你个模块你是要自己涉及数据库的。)
———————————————————————————————————————————
分库分布以及中间件..
更快的数据库引擎..
这是一个大的话题了,现在跳过。
!!!还有一个大块就是Redis,强烈建议学习这是啥,以及怎么用。
二、如何才算sql牛逼,可以解决复杂的问题
一:请百度如下内容,基本上工作时间不久的人不会知道的。
1列转行
2开窗函数
3 id between分页(结合大数据分页很慢怎么解决一起装逼)
limit 分页 后面几万页会很慢。
二 自己百度或者意淫一些统计sql题
比如1求出每个班三科成绩都是90分的数量
2求出全年级每个班数学95分以上的人
3.90份以上的优秀,80以上良,70以上中 60以下 差,求出差生最多的三个班级。
..
三 批量
INSERT INTO tablename ('username','password') values
('xxx','xxx'),('xxx','xxx'),('xxx','xxx'),('xxx','xxx'),('xxx','xxx'),('xxx','xxx')
.......
insert into dh_dead_letter(id,topic_code,content) values('2','topic_code','topic_code') on duplicate key update topic_code = values(topic_code), content = values(content);
insert ignore into table(name) …
当然这不够,还得结合mybatis
三、jvm
四、jdk的新特性
(三四,我个人觉得仅仅只是面试时候装逼用)
———————————————————————————————————————————
五、(非实习生,做了很久的初级java工程师,或者中级工程师进阶)也是跟深圳在职朋友(接触过的或认识的最牛逼的后端)交流取经得到的学习路线,学这些的前提是以上内容全部学完看懂,除了装逼用的以外都会使用。
1.springBoot 2.springCloudnetflix 3.springcloudalibaba 4.dubbo 5.redis 6.elasticSearch 7.rabbitMQ
我只能说粗略掌握123,再进阶的还没学,计划明年年中全部学完掌握
——————————————————————————————————————————
找工作tips
1 一份工作所需技术方向太多(多工种),你又不是管理人员
比如测试只有开发自测
前后端一个人写
需求文档由领导口头说开发写
别去。
玩游戏应该都知道 别乱点技能树吧。
2 后端会前端比如jquery,vue,会selenium,只要你提出来,就会认为你很垃圾,(重中之重如果你面试的是后端不要提任何你会的前段技术,如果需要你会前端技术就是前后端不分离的垃圾公司,如果你想去那么跟人事谈的时候就要给到你 全栈开发的工资否则不要去)但前端懂一点后端,会写写ssm会认为很牛逼
3 面试落差是必然的,
你以为公司不会吹逼?
公司吹他们用ssm入职会写jsp
公司吹他们用springcloud,大概率就是挂了一个eureka的分布式单体,入职crudboy
如果干吹他们有上亿数据量,入职sql boy
4 如果真的聊一下中间件的细节,比如kafka如何保证数据的顺序,大概率是准备用。
入职就是@KafkaListener