最后
总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习
还有更多学习笔记面试资料也分享如下:
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
– Dump completed on 2020-12-15 8:15:56
持久层框架使用 Mybatis
SpringBoot集成下的Mybatis 配置
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.3
application.yml配置
mybatis:
configuration:
mybatis的日志输出
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper文件
mapper-locations: classpath:mapper/*.xml
配置类型别名,避免每次冗余的全限定名
type-aliases-package: com.jsy.simsserver.pojo
#日志输出
logging:
level:
#这个指定你的dao层,也就是mapper文件的所在包
com/jsy/simsserver/mapper: DEBUG
持久层结构
- 在mapper层约定映射接口
StudentMapper.java
@Mapper
@Repository
public interface StudentMapper {
void insertStudent(Student student);
Student selectStudent(Long sid);
// ………………
}
- 在resources/mapper/StudentMapper.xml里编写SQL语句,实现ORM(对象关系映射)
INSERT INTO student(sid,pwd,sname,gender,birth,profession,faculty,s_class,grade,phone,politics_status,address,head_url)
VALUES (#{sid},#{pwd},#{sname},#{gender},#{birth},#{profession},#{faculty},#{s_class},#{grade},#{phone},#{politics_status},#{address},#{head_url});
====================================================================================
项目采用MVC设计思想。
下面简单介绍一下,是SpringBoot集成下的采用MVC架构的Web项目。
项目结构图:
├── java
│ └── com
│ └── jsy
│ └── simsserver
│ ├── SimsServerApplication.java
│ ├── controller
│ │ ├── CourseController.java
│ │ ├── LoginController.java
│ │ ├── OSSUploadController.java
│ │ ├── ScoreController.java
│ │ ├── StudentController.java
│ │ └── TestController.java
│ ├── mapper
│ │ ├── CourseMapper.java
│ │ ├── ScoreMapper.java
│ │ └── StudentMapper.java
│ ├── pojo
│ │ ├── Achievement.java
│ │ ├── Admin.java
│ │ ├── Course.java
│ │ ├── OssSign.java
│ │ ├── Score.java
│ │ └── Student.java
│ ├── reponse
│ │ ├── ErrorMessage.java
│ │ ├── Message.java
│ │ └── SuccessMessage.java
│ └── service
│ ├── CourseService.java
│ ├── ScoreService.java
│ ├── StudentService.java
│ └── serviceImpl
│ ├── CourseServiceImpl.java
│ ├── ScoreServiceImpl.java
│ └── StudentServiceImpl.java
└── resources
├── application.yml
├── banner.txt
└── mapper
├── CourseMapper.xml
├── ScoreMapper.xml
└── StudentMapper.xml
编写一些实体类。
使用了lombok插件,避免编写大量的模板代码(getter
、setter
等等)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private Long sid; // 学号
private String pwd; // 密码
private String sname; // 姓名
private String gender; // 数据库用枚举类型
private String birth; // 格式为:1999-09-05
private String profession; // 专业
private String faculty; // 院系
private String s_class; //班级
private String grade; // 年级
private String phone; // 电话
private String politics_status; // 政治面貌
private String address; //籍贯
private String head_url; //学生照片的URL
}
介绍几个最常用的注解:
- @RestController = @Controller + @ResponseBody
在IOC容器中注册一个controller对象,并且默认使用返回Json格式的数据。
- @Resource
来自javax,用途和spring下的@Autowire注解功能类似,实现自动装配。
- @PostMapping
仅在浏览器使用Post请求时触发该方法。
还有@GetMapping等等其他类似的注解。
@RestController
public class StudentController {
@Resource(name = “studentService”)
StudentService studentService;
/**
-
@param student 完整User对象
-
@return
*/
@PostMapping(“/student”)
public ResponseEntity addStudent(@RequestBody Student student){
int code = studentService.addStudent(student);
if(code==0){
return ResponseEntity.status(HttpStatus.CREATED).body(new SuccessMessage(“成功添加一个用户”));
}
if(code==1){
return ResponseEntity.accepted().body(new ErrorMessage(“用户已经存在”));
}
return ResponseEntity.badRequest().body(new ErrorMessage(“内部错误”));
}
}
采用面向接口的编程的思想。
service层约定出接口。
在serviceImpl包里面实现接口,项目的课拓展性更好。
例如:
public interface StudentService {
int addStudent(Student student);
int addStudent(Long sid);
int addStudents(List sidList);
List queryAllStudents();
Student queryStudentByID(Long uid);
List queryStudentByName(String name);
void removeStudent(Long sid);
void updateStudent(Student student);
}
// 在service有有多个实现的时候,要给@Service添加不同的Bean的名称
@Service(“studentService”)
public class StudentServiceImpl implements StudentService {
@Resource
StudentMapper studentMapper;
// 在这里编写实现接口的方法。
}
Mybatis部分已经介绍,见上。
最后
关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:
- Java基础部分
- 算法与编程
- 数据库部分
- 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)
这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
12)]
- 数据库部分
[外链图片转存中…(img-dZHsJJ25-1715601208812)]
- 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)
[外链图片转存中…(img-hqv822UY-1715601208812)]
这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。