答辩问题记录(一)
Mybatils
- Mybatils是一个持久层的框架,是用java编写的。
- 封装了jdbc操作的很多细节
- 用XML或者注解方式
- 使用了ORM思想实现了结果集的封装
ORM: Object Relational Mapping (对象关系映射)
就是把数据库表和实体类以及实体属性对应起来,做到实体类中的属性和数据库表的字段名称保持一致。
Hibernate:Hibernate是当前最流行的ORM框架之一,对JDBC提供了较为完整的封装。Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL的自动生成和执行。
Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力点在于 POJO 与 SQL 之间的映射关系。然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO 。相对Hibernate“O/R”而言,Mybatis 是一种“Sql Mapping”的ORM实现。
例如:
配置MySQL的环境 | 在resources资源文件下 |
---|---|
user | user |
id | id |
user_name | user_name |
总之:使用Mybatils后,只需要关注SQL语句即可 |
代理的方式管理资源
Mybatils处理调用javabean过程:
- 读取配置文件
- 创建SQLSessionFactory工厂
- 使用工厂生产SQLSession对象
- 使用SQLSession常见Dao接口的代理对象
- 使用代理对象执行方法
- 释放资源
在实际开发中,越简便越好。所以都采用不实现Dao接口的方法。
Spring 5
- Mybatils是一个持久层的框架,是用java编写的。
工厂:
工厂:负责给我们从容器中获取指定对象的类。这个时候我们获取对象的方式发生改变。原:new 方式,主动获取。
现在:工厂为我们查找或创建,是被动的。
——被动接收的思想就是控制反转,它是Spring框架的重要特征之一。Object Relational Mapping (对象关系映射)
就是把数据库表和实体类以及实体属性对应起来,做到实体类中的属性和数据库表的字段名称保持一致。
-
控制反转(IOC)——解耦作用
- 依赖注入
- 依赖查找
- 可以使用XML方式或者注解方式实现。
- 依赖注入
- 构造函数注入
- set方法注入(常用)
- 注解方式注入
- @AutoWired
-
面向切面编程(AOP)——降低业务间的耦合度
-
Aspect Oriented Programming
- 通过预编译和运行期间的动态代理
- 函数式编程(业务隔离)的一种衍生泛型
- 对业务逻辑进行隔离。降低业务间的耦合度。
简而言之:把程序重复代码抽取出来,在需要执行的时候,使用动态代理技术,在不修改源码的基础上,对我们的已有方法进行增强。
动态代理技术:
- 特点:字节码随用随常见,随用随加载
- 动态代理常用的两种方式
- 基于接口的动态代理
- 基于子类的动态代理
SpringMVC
- SpringMVC是一个基于组件方式执行流程的框架。
- 前端控制器(Servlet)
- 处理器映射器
- 处理器适配器
- Handler处理器
- 视图解析器
- SpringMVC的入口是Servlet,基于方法设计的,处理Ajax的请求比较方便。
Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
SpringBoot
- SpringBoot不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven整合了所有的jar包,SpringBoot整合了所有的框架。
- SpringBoot不是Spring官方的框架模式,而是一个团队在Spring 4.0 版本上二次开发并开源公布出来的。简而言之,SpringBoot就是一个轻量级,简化配置和开发流程的web整合框架。
SpringBoot和Spring的区别:
- SpringBoot可以建立独立的Spring应用程序。
- 约定大于配置
- Spring Boot可以建立独立的Spring应用程序;
- 内嵌了如Tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再做部署工作了;
- 无需再像Spring那样搞一堆繁琐的xml文件的配置;
- 可以自动配置(核心)Spring。SpringBoot将原有的XML配置改为Java配置,将bean注入改为使用注解注入的方式(@Autowire),并将多个xml、properties配置浓缩在一个appliaction.yml配置文件中。
- 提供了一些现有的功能,如量度工具,表单数据验证以及一些外部配置这样的一些第三方功能;
- 整合常用依赖(开发库,例如spring-webmvc、jackson-json、validation-api和tomcat等),提供的POM可以简化Maven的配置。当我们引入核心依赖时,SpringBoot会自引入其他依赖。
MySQL和SQLServer
- 性能:
MySQL的读写性能确实一流,即使针对大数据量也没问题,但前提是必须使用简单查询,就是最好不要使用函数/join/group等方式查询。而SQLServer的简单查询速度不如MySQL,但复杂查询时,性能降低的不多,可见,SQLServer的查询优化做的可能更好。
但你可以通过针对性的表结构设计来避免MySQL进行复杂查询(多冗余,少关联)
插入速度也很快。为了提高性能,我甚至使用了不用日志的方式,确实快,哪怕大量并发也没问题
2. 安全性:
MySQL的安全配置比较透明简单,权限明确,不易出漏洞。而SQLServer的用户配置是和ϖ作系统绑定的,很容易出问题。此外由于不是开源系统,1433端口暴露的安全问题谁也说不清,
可以提问
- 还可以问岗位晋升空间及渠道!岗位职责与工作!谁带等!这些都是表现你积极性的东西,不要觉得不该问!
刚入这个行业,我想问问岗位晋升的空间以及渠道,有没有前辈带领,平时遇到问题可以问那些前辈?薪资方面也可以问,还有五险什么时候交
- 薪资(五险啥时候交,一年几次调薪,有没有加班费)
- 公司的发展历程及企业文化。
- 对新人是如果培养的
空闲时间 使用云服务器作些项目练练手,白嫖 小型服务器的地方:
三丰云,用着用还可以 附上连接:三丰云