感受:
其实我投简历的时候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。
特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。
也祝愿各位同学,都能找到自己心动的offer。
分享我在这次面试前所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档
保存并点击Gradle面板中的Reload按钮,重新加载依赖,最终可以看到flylolo-readcode项目的依赖中出现了。
3.3 添加MVC相关文件
添加mvc相关文件,文件结构如下:
①首先添加一个Controller:
package cn.flylolo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
-
@author FlyLolo
-
@date 2021/10/9 16:42
*/
@RestController
@RequestMapping(“user”)
public class UserController {
@GetMapping(“”)
public String helloWorld(){
return “Hello World!”;
}
}
②在resources目录下新建springmvc.xml文件:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:context=“http://www.springframework.org/schema/context”
xmlns:mvc=“http://www.springframework.org/schema/mvc”
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package=“cn.flylolo”/>
<mvc:annotation-driven />
<mvc:default-servlet-handler />
③webapp目录下新建WEB-INF文件夹,其中新建web.xml文件:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns=“http://java.sun.com/xml/ns/javaee”
xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd”
id=“WebApp_ID” version=“3.0”>
contextConfigLocation
classpath:springmvc.xml
org.springframework.web.context.ContextLoaderListener
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
springmvc
/
3.4 设置Artifacts
打开File->Project Struture设置,左侧切换到Artifacts,可以看到已经自动生成的两个Artifact,选择带"exploded"后缀的,做如下修改:
Name比较长,可以自行修改,不改也可以,本例改为flylolo-readcode
Output directory自动生成的路径有问题,去掉"exploded", 例如本例改为:F:\spring-framework\flylolo-readcode\build\libs\flylolo-readcode-6.0.0-SNAPSHOT.war。
最终结果如下图:
3.5 配置Tomcat服务
打开Run/Debug Configuration, 点击左上角的加号,选择Tomcat Server->Local。
HTTP prot默认为8080,若已被使用则改为其他的端口。
选择artifacts,点击右下角的Fix按钮,跳转到Deployment标签,选择刚刚配置的flylolo-readcode。
保存并启动项目,访问UserController,地址:http://localhost:8099/flylolo_readcode/user
3.6 添加json解析:
如果只是返回String类型是没问题了,但大多数需要返回的时候Json类型。
新建一个User类:
package cn.flylolo.model;
import lombok.Data;
/**
-
@author FlyLolo
-
@date 2021/10/11 11:18
*/
@Data
public class User {
private String userId;
private String userName;
}
这里用到了lombok,需要在build.gradle中添加引用。
implementation ‘org.projectlombok:lombok:1.18.20’
annotationProcessor ‘org.projectlombok:lombok:1.18.20’
注意需要添加第二行,否则在调用对应的get和set方法的时候会出现 “错误: 找不到符号”的错误。
在UserController中添加新的方法:
@GetMapping(“/{userId}”)
public User getName(@PathVariable String userId){
User user = new User();
user.setUserId(userId);
user.setUserName(userId + “的名字”);
return user;
}
将返回一个User对象。
访问http://localhost:8099/flylolo_readcode/user/testid,返回了406,不可接收错误。
因为返回Json类型,需要添加对应的message-converters
,本例采用FastJson。用下面代码替换springmvc.xml中的<mvc:annotation-driven />
mvc:annotation-driven
<mvc:message-converters register-defaults=“true”>
application/json
text/html;charset=UTF-8
</mvc:message-converters>
</mvc:annotation-driven>
这需要在build.gradle中添加FastJson的引用:
implementation ‘com.alibaba:fastjson:1.2.78’
再次访问http://localhost:8099/flylolo_readcode/user/testid,得到了期望的结果。
至此,源码阅读环境准备完毕。
4.1 gradle进行build的时候,中文出现乱码:
Help->Edit Custom VM Options, 添加如下代码:
-Dfile.encoding=UTF-8
4.2 gradle项目,用了lombok,调用setXXX提示“找不到符号"的错误,需在build.gradle中做如下方式引用
//添加annotationProcessor,否则会出现找不到符号的错误
annotationProcessor ‘org.projectlombok:lombok:1.18.20’
implementation ‘org.projectlombok:lombok:1.18.20’
4.3 服务启动报错问题
服务无法正常启动,报错“org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[manageApp]时发生异常 java.lang.IllegalStateException: 启动子级时出错”,详细错误如下:
Connected to server
[2021-10-11 03:30:50,531] Artifact flylolo-readcode: Artifact is being deployed, please wait…
11-Oct-2021 15:30:50.793 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[manageApp]时发生异常
java.lang.IllegalStateException: 启动子级时出错
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:696)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1783)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:293)
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:814)
Spring全套教学资料
Spring是Java程序员的《葵花宝典》,其中提供的各种大招,能简化我们的开发,大大提升开发效率!目前99%的公司使用了Spring,大家可以去各大招聘网站看一下,Spring算是必备技能,所以一定要掌握。
目录:
部分内容:
Spring源码
- 第一部分 Spring 概述
- 第二部分 核心思想
- 第三部分 手写实现 IoC 和 AOP(自定义Spring框架)
- 第四部分 Spring IOC 高级应用
基础特性
高级特性 - 第五部分 Spring IOC源码深度剖析
设计优雅
设计模式
注意:原则、方法和技巧 - 第六部分 Spring AOP 应用
声明事务控制 - 第七部分 Spring AOP源码深度剖析
必要的笔记、必要的图、通俗易懂的语言化解知识难点
脚手框架:SpringBoot技术
它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。
Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。
- SpringBoot入门
- 配置文件
- 日志
- Web开发
- Docker
- SpringBoot与数据访问
- 启动配置原理
- 自定义starter
微服务架构:Spring Cloud Alibaba
同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
- 微服务架构介绍
- Spring Cloud Alibaba介绍
- 微服务环境搭建
- 服务治理
- 服务容错
- 服务网关
- 链路追踪
- ZipKin集成及数据持久化
- 消息驱动
- 短信服务
- Nacos Confifig—服务配置
- Seata—分布式事务
- Dubbo—rpc通信
Spring MVC
目录:
部分内容:
Seata—分布式事务
- Dubbo—rpc通信
[外链图片转存中…(img-MZkp8o83-1715648874385)]
[外链图片转存中…(img-GBfkMbxS-1715648874386)]
Spring MVC
目录:
[外链图片转存中…(img-td5ft8XI-1715648874386)]
[外链图片转存中…(img-GlIq2RJa-1715648874386)]
[外链图片转存中…(img-Jgnm4NIv-1715648874387)]
部分内容:
[外链图片转存中…(img-ENvyxf6e-1715648874387)]
[外链图片转存中…(img-lG6My2JF-1715648874387)]