1.记忆spring的常用注解

Spring部分:

1、声明bean的注解:

@Component:组件,没有明确的角色
@Service:在业务逻辑层使用(service层)
@Repository:在数据访问层使用(dao层)
@Controller:在展现层使用,控制器的声明(Controller)

2、注入bean的注解:

@Autowired:由Spring提供,按类型注入,如果一个接口有多个实现,需要和@Qualifier配合使用
@Inject:由JSR-330提供
@Resource:由JSR-250提供,按名称注入
都可以注解在set方法和属性上,推荐注解在属性上。

3、java配置类相关注解:

@Bean 注解在方法上,声明当前方法的返回值为一个bean,如果使用第三方工具,就需要使用@Bean进行装配,否则使用xml形式
@Configuration 声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean
@ComponentScan 用于对Component进行扫描
@WishlyConfiguration 为@Configuration与@ComponentScan的组合注解,可以替代这两个注解

4、切面(AOP)相关注解:

Spring支持AspectJ的注解式切面编程。
@Aspect 声明一个切面
使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。
@After 在方法执行之后执行(方法上)
@Before 在方法执行之前执行(方法上)
@Around 在方法执行之前与之后执行(方法上)
@PointCut 声明切点
在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)

5、@Bean的属性支持:

@Scope 设置Spring容器如何新建Bean实例(方法上,得有@Bean)
其设置类型包括:
Singleton (单例,一个Spring容器中只有一个bean实例,默认模式),
Protetype (每次调用新建一个bean),
Request (web项目中,给每个http request新建一个bean),
Session (web项目中,给每个http session新建一个bean),
GlobalSession(给每一个 global http session新建一个Bean实例)
@StepScope 在Spring Batch中还有涉及
@PostConstruct 由JSR-250提供,在构造函数执行完之后执行,等价于xml配置文件中bean的initMethod
@PreDestory 由JSR-250提供,在Bean销毁之前执行,等价于xml配置文件中bean的destroyMethod

6、@Value注解:为属性注入值

支持如下方式的注入:
1).注入普通字符
Bash
@Value(“Michael”) String name;
2).注入操作系统属性
CSS
@Value(“#{systemProperties[‘os.name’]}”) String osName;
3).注入表达式结果
Bash
@Value(“#{ T(java.lang.Math).random() 100}”) String randomNumber;
4).注入其它bean属性
Bash
@Value(“#{ domeClass.name}”) String name;
5).注入文件资源
Bash
@Value(“classpath:com/it/test.txt”) String Resource file;
6).注入网站资源
Bash
@Value(“http://www.baidu.com“) Resource url;
7).注入配置文件
Bash
@Value(“${book.name} “) String bookName;
*注入配置使用方法:

① 编写配置文件(test.properties)
book.name=《三体》
② @PropertySource 加载配置文件(类上)
Bash
@PropertySource(“classpath:com/it/test.properties”)
③ 还需配置一个PropertySourcesPlaceholderConfigurer的bean。

7、环境切换

@Profile 通过设定Environment的ActiveProfiles来设定当前context需要使用的配置环境。(类或方法上)
@Conditional Spring4中可以使用此注解定义条件话的bean,通过实现Condition接口,并重写matches方法,从而决定该bean是否被实例化。

8、异步相关

@EnableAsync 配置类中,通过此注解开启对异步任务的支持,叙事性AsyncConfigurer接口(类上)
@Async 在实际执行的bean方法使用该注解来申明其是一个异步任务(方法上或类上所有的方法都将异步,需要@EnableAsync开启异步任务)

9、定时任务相关

@EnableScheduling 在配置类上使用,开启计划任务的支持(类上)
@Scheduled 来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)

10、@Enable*注解说明

这些注解主要用来开启对xxx的支持。
@EnableAspectJAutoProxy 开启对AspectJ自动代理的支持
@EnableAsync 开启异步方法的支持
@EnableScheduling 开启计划任务的支持
@EnableWebMvc 开启Web MVC的配置支持
@EnableConfigurationProperties 开启对@ConfigurationProperties注解配置Bean的支持
@EnableJpaRepositories 开启对SpringData JPA Repository的支持
@EnableTransactionManagement 开启注解式事务的支持
@EnableTransactionManagement 开启注解式事务的支持
@EnableCaching 开启注解式的缓存支持

11、测试相关注解

@RunWith 运行器,Spring中通常用于对JUnit的支持
CSS
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration 用来加载配置ApplicationContext,其中classes属性用来加载配置类
CSS
@ContextConfiguration(classes={TestConfig.class})

Spring部分:

@EnableWebMvc 在配置类中开启Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若无此句,重写WebMvcConfigurerAdapter
方法(用于对SpringMVC的配置)。
@Controller 声明该类为SpringMVC中的Controller
@RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)
@ResponseBody 支持将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或方法上)
@RequestBody 允许request的参数在request体中,而不是在直接连接在地址后面。(放在参数前)
@PathVariable 用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,将注解放在参数中前,即可获取该值,通常作为
Restful的接口实现方法。
@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认
加上了@ResponseBody。
@ControllerAdvice 通过该注解,我们可以将对于控制器的全局配置放置在同一个位置,注解了@Controller的类的方法可使用@ExceptionHandler
、@InitBinder、@ModelAttribute注解到方法上,
这对所有注解了 @RequestMapping的控制器内的方法有效。
@ExceptionHandler 用于全局处理控制器里的异常
@InitBinder 用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。
@ModelAttribute 本来的作用是绑定键值对到Model里,在@ControllerAdvice中是让全局的@RequestMapping都能获得在此处设置的键值对。

总结:上面几乎都是常用的Spring相关注解,而且大部分内容,在前面Spring相关博客也都有讲过,这里转载别人的总结,方便记忆,只不过具体的
解释不够详细,可以查看我之前的内容,或者自行百度
原文链接:https://blog.csdn.net/yelvgou9995/article/details/83345267

2.SpringMVC的作用

1.sql语句的分类和对应的关键字

1)DDL:数据定义语言 关键字有:create(创建),drop(删除) ,truncate(删除表结构,再创一张表),alter(修改)
2)DQL:数据查询语言 关键字有:select
3)DML:数据操作语言 关键字有:insert(插入),update(更改),delete(删除)
4)TCL:事务控制语言 关键字有:begin,savepoint,rollback,commit
5)DCL:数据控制语言 关键字有 :grant,revoke,deny

2.谈谈数据库事务的理解

1.什么事务?
是指作为单个逻辑工作单元执行的一系列操纵,要么完全地执行,要么完全地不执行。通俗来讲,比如完成一件事分为4个步骤 A,B,C,D; 每个步骤都是一个逻辑单元,完成一件事就是一个事务,这件事要么按顺序一起完成,要么完全的不执行。因此保持操纵的完整性。

2. 事务的四个特性
(1)原子性Atomic)(Atomicity)
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。

  1. (2) 一致性(Consistent)(Consistency)<br /> 事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规 则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转 帐的应用程序时,应避免在转帐过程中任意移动小数点。
  2. (3) 隔离性(Insulation)(Isolation)<br /> 由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数 据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为隔离性,因为它能够重新 装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的[隔离级别](http://baike.baidu.com/view/687862.htm)。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。
  3. (4) 持久性(Duration)(Durability)<br /> 事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

3.事务并发控制。
事务是并发控制的基本单位,保证事务ACID的特性是事务处理的重要任务,而并发操作有可能会破坏其ACID特性。
事务并发可能会引发的问题,多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。由于并发操作带来的数据不一致性包括:丢失数据修改、读”脏”数据(脏读)、不可重复读、产生幽灵数据。
(1)丢失数据修改
当两个或多个事务选择同一行,然 后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。如上例。
再例如,两个编辑人员制作了同一文档的电子复本。每个编辑人员独立地更改其复本,然后保存更改后的复本,这样就覆盖了原始文档。最后保存其更改复本的编辑人员覆盖了第一个编辑人员所做的更改。如果在第一个编辑人员完成之后第二个编辑人员才能进行更改,则可以避免该问题。

(2)读“脏”数据(脏读)
读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被除撤消,而此时T1把已修改过的数据又恢复原值,T2读到的数据与数据库的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
例如:一个编辑人员正在更改电子文档。在更改过程中,另一个编辑人员复制 了该文档(该复本包含到目前为止所做的全部更改)并将其分发给预期的用户。此后,第一个编辑人员认为所做的更改是错误的,于是删除了所做的编辑并保存了文 档。分发给用户的文档包含不再存在的编辑内容,并且这些编辑内容应认为从未存在过。如果在第一个编辑人员确定最终更改前任何人都不能读取更改的文档,则可 以避免该问题。

(3)不可重复读
指事务T1读取数据后,事务T2执行更新操作,使T1无法读取前一次结果。不可重复读包括三种情况:
事务T1读取某一数据后,T2对其做了修改,当T1再次读该数据后,得到与前一不同的值。

(4)产生幽灵数据
按一定条件从数据库中读取了某些记录后,T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失
T1按一定条件从数据库中读取某些数据记录后,T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。

3.聊聊涨读,幻读,不可重复读

spring(数据库)事务隔离级别分为四种(级别递减):
1、Serializable (串行化):最严格的级别,事务串行执行,资源消耗最大;
2、REPEATABLE READ(重复读) :保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但不能避免“幻读”,但是带来了更多的性能损失。
3、READ COMMITTED (提交读):大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”,但不能避免“幻读”和“不可重复读取”。该级别适用于大多数系统。
4、Read Uncommitted(未提交读) :事务中的修改,即使没有提交,其他事务也可以看得到,会导致“脏读”、“幻读”和“不可重复读取”。
脏读、不可重复读、幻读:
也许有很多读者会对上述隔离级别中提及到的 脏读、不可重复读、幻读 的理解有点吃力,我在这里尝试使用通俗的方式来解释这三种语义:
脏读:所谓的脏读,其实就是读到了别的事务回滚前的脏数据。比如事务B执行过程中修改了数据X,在未提交前,事务A读取了X,而事务B却回滚了,这样事务A就形成了脏读。
也就是说,当前事务读到的数据是别的事务想要修改成为的但是没有修改成功的数据。
不可重复读:事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。
也就是说,当前事务先进行了一次数据读取,然后再次读取到的数据是别的事务修改成功的数据,导致两次读取到的数据不匹配,也就照应了不可重复读的语义。
幻读:事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读。
也就是说,当前事务读第一次取到的数据比后来读取到数据条目少。
不可重复读和幻读比较:
两者有些相似,但是前者针对的是update或delete,后者针对的insert。

4.spring创建Bean的几种方式

方式1:
使用Spring XML方式配置,该方式用于在纯Spring 应用中,适用于简单的小应用,当应用变得复杂,将会导致XMl配置文件膨胀 ,不利于对象管理。

方式2:

使用@Component,@Service,@Controler,@Repository注解
这几个注解都是同样的功能,被注解的类将会被Spring 容器创建单例对象。

  • @Component : 侧重于通用的Bean类
  • @Service:标识该类用于业务逻辑
  • @Controler:标识该类为Spring MVC的控制器类
  • @Repository: 标识该类是一个实体类,只有属性和Setter,Getter

publicclassUser{
}
当用于Spring Boot应用时,被注解的类必须在启动类的根路径或者子路径下,否则不会生效。
如果不在,可以使用@ComponentScan标注扫描的路径。
spring xml 也有相关的标签
publicclassMicroblogBlogApplication {
publicstaticvoidmain(String args[]){
SpringApplication.run(MicroblogBlogApplication.class,args);
}
}
方式3:

使用@Bean注解,这种方式用在Spring Boot 应用中。
@Configuration 标识这是一个Spring Boot 配置类,其将会扫描该类中是否存在@Bean 注解的方法,比如如下代码,将会创建User对象并放入容器中。
@ConditionalOnBean 用于判断存在某个Bean时才会创建User Bean.
这里创建的Bean名称默认为方法的名称user。也可以@Bean(“xxxx”)定义。
publicclassUserConfiguration{
@Bean
@ConditionalOnBean(Location.class)
publicUser user(){
returnnewUser();
}
}
Spring boot 还为我们提供了更多类似的注解。
面试考点 - 图1
也和方式2一样,也会存在扫描路径的问题,除了以上的解决方式,还有使用Spring boot starter 的解决方式
在resources下创建如下文件。META-INF/spring.factories.
Spring Boot 在启动的时候将会扫描该文件,从何获取到配置类UserConfiguration。
面试考点 - 图2
spring.factories.
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.log.config.UserConfiguration

如果不成功,请引入该依赖
org.springframework.boot
spring-boot-configuration-processor
true

这个方式也是创建SpringBoot-starter的方式。
方式4:

使用注解@Import,也会创建对象并注入容器中
publicclassMicroblogUserWebApplication {
publicstaticvoidmain(String args[]) {
SpringApplication.run(MicroblogUserWebApplication.class, args);
}
}
**方式5:


使用ImportSelector或者ImportBeanDefinitionRegistrar接口,配合@Import实现。
在使用一些Spring Boot第三方组件时,经常会看到@EnableXXX来使能相关的服务,这里以一个例子来实现。
创建测试类
publicclassHouse {
publicvoidrun(){
log.info(“House run ….”);
}
}
@Slf4j
publicclassUser {
publicvoidrun(){
log.info(“User run ….”);
}
}
@Slf4j
publicclassStudent {
publicvoidrun(){
log.info(“Student run ….”);
}
}
实现ImportSelector接口**

selectImports方法的返回值为需要创建Bean的类名称。这里创建User类。
publicclassMyImportSelector implementsImportSelector {
@Override
publicString[] selectImports(AnnotationMetadata annotationMetadata) {
log.info(“MyImportSelector selectImports …”);
returnnewString[]{
User.class.getName()};
}
}
实现ImportBeanDefinitionRegistrar接口

beanDefinitionRegistry.registerBeanDefinition用于设置需要创建Bean的类名称。这里创建House类。
publicclassMyImportBeanDefinitionRegistrar implementsImportBeanDefinitionRegistrar {
@Override
publicvoidregisterBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {
log.info(“MyImportBeanDefinitionRegistrar registerBeanDefinitions …..”);
BeanDefinition beanDefinition = newRootBeanDefinition(House.class.getName());
beanDefinitionRegistry.registerBeanDefinition(House.class.getName(),beanDefinition);
}
}
创建一个配置类

这里创建Student类。

publicclassImportAutoconfiguration {
@Bean
publicStudent student(){
returnnewStudent();
}
}
创建EnableImportSelector注解

EnableImportSelector注解上使用@Import,引入以上的三个类。
@Documented
@Target(ElementType.TYPE)
@Import({MyImportSelector.class,ImportAutoconfiguration.class,MyImportBeanDefinitionRegistrar.class})
public@interfaceEnableImportSelector {
String value();
}
测试
@SpringBootApplication
publicclassImportDemoApplication {
publicstaticvoidmain(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(ImportDemoApplication.class, args);
User user = context.getBean(User.class);
user.run();
Student student = context.getBean(Student.class);
student.run();
House house = context.getBean(House.class);
house.run();
}
}
输出,可以看到,三个类User Student House都创建成功,都可从Spring 容器中获取到。
2019-06-2017:53:39.530INFO 27255—- [ main] c.s.importselector.pojo.Student : Student run ….
2019-06-2017:53:39.531INFO 27255—- [ main] c.springboot.importselector.pojo.House : House run ….
方式6

手动注入Bean容器,有些场景下需要代码动态注入,以上方式都不适用。这时就需要创建 对象手动注入。
通过DefaultListableBeanFactory注入。
registerSingleton(String beanName,Object object);
这里手动使用new创建了一个Location对象。并注入容器中。

publicclassLocationRegister implementsBeanFactoryAware {
@Override
publicvoidsetBeanFactory(BeanFactory beanFactory) throwsBeansException {
DefaultListableBeanFactory listableBeanFactory = (DefaultListableBeanFactory)beanFactory;
Location location = newLocation();
listableBeanFactory.registerSingleton(“location1”,location);
}
}
这种方式的应用场景是为接口创建动态代理对象,并向SPRING容器注册。
比如MyBatis中的Mapper接口,Mapper没有实现类,启动时创建动态代理对象,将该对象注册到容器中,使用时只要@Autowired注入即可使用,调用接口方法将会被代理拦截,进而调用相关的SqlSession执行相关的SQL业务逻辑。
可以看以下它的继承体系
DefaultListableBeanFactory 是ConfigurableListableBeanFactory的实现类。是对BeanFactory功能的扩展。

5.restful接口规范

1.Restful
REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征性状态转移)
  RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中。   这种风格的理念认为后端开发任务就是提供数据的,对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的URL路径就表示这种要操作的数据资源。   事实上,我们可以使用任何一个框架都可以实现符合restful规范的API接口.   RESTful作为目前最流行的 API 设计规范,一定有着它独有的魅力:强大、简介、易上手.
2.Restful的十条接口规范
1.数据的安全保障: url链接一般都采用https协议进行传输 注:采用https协议,可以提高数据交互过程中的安全性
2.接口特征表现,一看就知道是个api接口 - 用api关键字标识接口url: - https://api.baidu.com - https://www.baidu.com/api 注:看到api字眼,就代表该请求url链接是完成前后台数据交互的 -路飞的接口:https://api.luffycity.com/api/v1/course/free/
3.多数据版本共存 - 在url链接中标识数据版本 - https://api.baidu.com/v1 - https://api.baidu.com/v2 注:url链接中的v1、v2就是不同数据版本的体现(只有在一种数据资源有多版本情况下:例如在原有版本上增加接口,类似改版,也需要保证老版本可以使用)
4.数据即资源(均使用名词) 接口一般都是完成前后台数据的交互,交互的数据我们称之为资源 https://api.baidu.com/users https://api.baidu.com/books https://api.baidu.com/book 注:一般提倡用资源的复数形式,在url链接中奖励不要出现操作资源的动词,错误示范:https://api.baidu.com/delete-user 特殊的接口可以出现动词,因为这些接口一般没有一个明确的资源,或是动词就是接口的核心含义 https://api.baidu.com/place/search https://api.baidu.com/login
5.资源操作由请求方式决定(method) - 操作资源一般都会涉及到增删改查,我们提供请求方式来标识增删改查动作 - https://api.baidu.com/books - get请求:获取所有书 - https://api.baidu.com/books/1 - get请求:获取主键为1的书 - https://api.baidu.com/books - post请求:新增一本书书 - https://api.baidu.com/books/1 - put请求:整体修改主键为1的书 - https://api.baidu.com/books/1 - patch请求:局部修改主键为1的书 - https://api.baidu.com/books/1 - delete请求:删除主键为1的书
6.过滤,通过在url上传参的形式传递搜索条件 - https://api.example.com/v1/zoos?limit=10:指定返回记录的数量 - https://api.example.com/v1/zoos?offset=10:指定返回记录的开始位置 - https://api.example.com/v1/zoos?page=2&per_page=100:指定第几页,以及每页的记录数 - https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序 - https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件
7.响应状态码 7.1 正常响应 - 响应状态码2xx - 200:常规请求 - 201:创建成功 7.2 重定向响应 - 响应状态码3xx - 301:永久重定向 - 302:暂时重定向 7.3 客户端异常 - 响应状态码4xx - 403:请求无权限 - 404:请求路径不存在 - 405:请求方法不存在 7.4 服务器异常 - 响应状态码5xx - 500:服务器异常
8.错误处理,应返回错误信息,error当做key { error: “无权限操作” }
9.返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范 GET /collection:返回资源对象的列表(数组) GET /collection/resource:返回单个资源对象 POST /collection:返回新生成的资源对象 PUT /collection/resource:返回完整的资源对象 PATCH /collection/resource:返回完整的资源对象 DELETE /collection/resource:返回一个空文档
10.需要url请求的资源:需要访问资源的请求链接 # Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么 { “status”: 0, “msg”: “ok”, “results”:[ { “name”:”肯德基(罗餐厅)”, “img”: “https://image.baidu.com/kfc/001.png“ } … ] }

6.聊聊面向对象的特征的理解

面向对象的三大特征:
1、封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
2、继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。
3、多态性:多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

面向对象,是软件开发方法。面向 对象的概念和应用已超越了 程序设计和软件开发,扩展到如 数据库系统、交互式界面、应用结构、应用平台、 分布式系统、 网络管理结构、CAD技术、 人工智能等领域。
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。面向 对象的分析根据 抽象关键的问题域来分解系统。
面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想

1.面向对象中的各种关键字

This:
1、代表当前对象本身
2、在构造器中可以使用this([参数])调用本类的其他构造器
3、有时候需要把当前调用对象进行传递,那么就可以使用this替代当前调用对象
Super:
1、指代父类
2、super() 调用父类的构造器
3、super()如果放在子类构造器中调用,只能放在子类构造器代码的第一行
4、使用super.xxx()可以在子类中调用父类中的方法
Static:
1.静态的属性和静态的方法属于整个类,不是属于某个对象的
2.静态的值只有一个(基本数据类型可以看出此特点)
3.静态的值只会初始化一次(引用数据类型)
4.静态属性,方法或者静态块会在jvm加载的时候就加载
5.一般情况下,静态的常量属性,我们一般写为 public static final 数据类型 大写常量名 = 值
6、静态方法下不能用this
执行顺序:static(静态的)—静态块{}—构造器
Javabean:
1、所有的属性都是private(私有的)
2、为每个属性建立setter和getter方法
3、为了以后装数据用的一个类
New:
1、注意:一个问题.不要觉得有时候参数需要一个对象,就直接new 一个对象传过去
2、只要使用new关键字,就是创建一个新的对象
Instanceof(目的:转型):
判断某个对象是不是某一个类型(子类是父类的对象,但父类不一定是子类的)
Object:
所有类的父类
final
1.可以用来修饰变量,如果修饰变量,这个变量我们就称之为常量,值不能被修改,而且常量必须赋初始值,一般情况下,常量我们会定义为 public static final 数据类型 大写常量名 = 值
2.如果final修饰方法,表示这个方法不能被重写(实现)
3.如果final修饰类,表示这个类不能被继承

2.抽象类和接口的区别?

相同点:
1、都不能被实例化。
2、接口的实现类和抽象类的子类只有全部实现了接口或者抽象类中的方法后才可以被实例化。
不同点:
1、接口只能定义抽象方法不能实现方法,抽象类既可以定义抽象方法,也可以实现方法。
2、单继承,多实现。接口可以实现多个,只能继承一个抽象类。
3、接口强调的是功能,抽象类强调的是所属关系。
4、接口中的所有成员变量 为public static final, 静态不可修改,当然必须初始化。接口中的所有方法都是public abstract 公开抽象的。而且不能有构造方法。抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有。

3.mybatis的动态sql

if标签语句

if标签用来实现根据条件拼接sql语句,下面示例用来判断参数如果不为null,则拼接sql

where标签语句

当 where 中的条件使用的 if 标签较多时,这样的组合可能会导致错误, “where”标签会自动判断如果它包含的标签中有返回值的话,就在sql中插入一个‘where’,如果where标签最后返回的内容是以 and 或者or 开头的,也会被自动移除掉。

set标签语句

set 标签是用在更新操作的时候,功能和 where 标签元素差不多,主要是在包含的语句前输出一个 set,然后如果包含的语句是以逗号结束的话将会把该逗号忽略,如果 set 标签最终返回的内容为空的话则可能会出错(update table where id=1)

trim标签语句

trim 元素的主要功能是可以在自己包含的内容前加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是 prefix 和 suffix;可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是 prefixOverrides 和 suffixOverrides;正因为 trim 有这样的功能,它可以用来实现 where 和 set 的效果。

choose (when, otherwise)标签

choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql,类似于sql server语句(case when then)

foreach标签语句

mybatis提供foreach标签,用来对一个集合进行遍历,通常是用来构建 IN 条件语句,也可用于其他情况下动态拼接sql语句。
foreach标签有以下几个属性collection, item,index,open,separator,close。
1. collection表示需要遍历的集合
2. item 表示每次遍历时生成的对象名
3. index表示在迭代过程中,每次迭代到的位置)
4. open表示开始遍历时要拼接的字符串
5. separator表示在每次遍历时两个对象直接的连接字符串
6. close表示结束遍历时要拼接的字符串
当使用 Map 对象(或者 Map.Entry 对象的集合)时,index 是键,item 是值。
在使用foreach的时候针对不同的参数类型, collection属性值要分为以下3种情况:
1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3.如果传入的参数是多个的时候,我们就需要把它们封装成一个Map或者Object。

4.spring框架常用的注解?

@Controller
@Controller 用来响应页面,表示当前的类为控制器。
在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。
@RestController
Spring4之后新加入的注解,原来返回json需要@ResponseBody和@Controller配合,表明当前类是控制器且返回的是一组数据,不是页面。@RestController是@ResponseBody和@Controller的组合注解,推荐直接使用@RestController注解来处理http请求。
@Autowired
@Autowired的作用是将其他的类,接口引入,类似于之前的类的初始化等,用这个注解,类中或接口的方法就可以直接调用了。
@Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。
@Resource的作用相当于@Autowired

@ResponseBody
作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。当返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)时使用。

@RequestMapping (配置url映射)
@RequestMapping如果没有指定请求方式,将接收Get,Post,Head,Options等所有的请求方式。
@RequestMapping此注解即可以作用在控制器的某个方法上,也可以作用在此控制器类上。当前台界面调用Controller处理数据时候告诉控制器怎么操作有3种情形:
1.当控制器在类级别上添加@RequestMapping注解时,这个注解会应用到控制器的所有处理器方法上。处理器方法上的@RequestMapping注解会对类级别上的@RequestMapping的声明进行补充。
2.@RequestMapping作用在处理器方法上。
3.@RequestMapping同时作用在类级别和处理器方法上。

@RequestMapping注解属性
作用:简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。
RequestMapping注解有六个属性:
1、 value, method;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method: 指定请求的method类型, GET、POST、PUT、DELETE等;常用: GET、POST
组合注解:
@GetMapping @RequestMapping(method = RequestMethod.GET)的简写
作用:对应查询,表明是一个查询URL映射
@PostMapping @RequestMapping(method =RequestMethod.POST)的简写
作用:对应增加,表明是一个增加URL映射
@PutMapping@RequestMapping(method = RequestMethod.PUT)的简写
作用:对应更新,表明是一个更新URL映射
@DeleteMapping @RequestMapping(method = RequestMethod.DELETE)的简写
作用:对应删除,表明是一个删除URL映射

2、consumes,produces
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3、params,headers
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
@PathVaribale
通过@PathVariable注解来获取URL中的参数时的前提条件是我们知道url的格式时怎么样的。只有知道url的格式,我们才能在指定的方法上通过相同的格式获取相应位置的参数值。
@RequestParam
作用:获取请求参数的值
@RequestParam注解给允许用户不输入参数时,使用默认值;
@RequestBody
如果传输的是单层json对象,我们后台可以直接用 @RequestParam接收。如果传输的是多层嵌套json对象,这个时候会就会出现数据丢失问题,@ResponseBody很好的解决了这个问题,它会把前台传输过来的json转化为后台对应的对象;
@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。(易出错)然而在ajax请求往往传的都是Json对象,用JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: “json”,contentType:“application/json” 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List。
@Service
用于标注业务层组件,位于service实现层:
形如:@Service(“xxxService”)
@Override
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
1、可以当注释用,方便阅读。
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以编译通过的(它以为这个方法是你的子类中自己增加的方法)。
@Repository
@Repository用于标注数据访问组件,即dao层
如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用上述注解对分层中的类进行注释。@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

5.springmvc如何实现json数据交互?

一、@RequestBody

作用:
@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容(json数据)转换为java对象并绑定到Controller方法的参数上。
现在的请求参数:使用POST请求,在请求体里面加入json数据
“id”: 1,
“name”: “测试商品”,
“price”: 99.9,
“detail”: “测试商品描述”,
“pic”: “123456.jpg”
}
本例子应用:
@RequestBody注解实现接收http请求的json数据,将json数据转换为java对象进行绑定。

二、@ResponseBody

作用:
@ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。
本例子应用:
@ResponseBody注解实现将Controller方法返回java对象转换为json响应给客户端。

三、请求json,响应json实现

1. 加入jar包
如果需要springMVC支持json,必须加入json的处理jar
我们使用Jackson这个jar,如下图:
面试考点 - 图3

1.mybatis的多参数处理

第一种方案
DAO层的函数方法
Public User selectUser(String name,String area);
对应的Mapper.xml

其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。
*第二种方案
此方法采用Map传多参数.
Dao层的函数方法
Public User selectUser(Map paramMap);
对应的Mapper.xml


Service层调用
Private User xxxSelectUser(){
Map paramMap=newhashMap();
paramMap.put(“userName”,”对应具体的参数值”);
paramMap.put(“userArea”,”对应具体的参数值”);
User user=xxx. selectUser(paramMap);}
个人认为此方法不够直观,见到接口方法不能直接的知道要传的参数是什么。
第三种方案
Dao层的函数方法
Public User selectUser(@param(“userName”)Stringname,@param(“userArea”)String area);
对应的Mapper.xml

2.mybatis的一级和二级缓存

一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,它的声明周期是和 SQLSession 一致的,有多个 SQLSession 或者分布式的环境中数据库操作,可能会出现脏数据。当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认一级缓存是开启的。
二级缓存:也是基于 PerpetualCache 的 HashMap 本地缓存,不同在于其存储作用域为 Mapper 级别的,如果多个SQLSession之间需要共享缓存,则需要使用到二级缓存,并且二级缓存可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态)。 开启二级缓存数据查询流程:二级缓存 -> 一级缓存 -> 数据库。 缓存更新机制:当某一个作用域(一级缓存 Session/二级缓存 Mapper)进行了C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。

1.谈谈Hashmap的扩容原理

2.聊聊Hashmap的底层结构区分1.7和1.8

3.聊聊concurrenthashmap怎么实现线程安全

4.聊聊arraylist的初始容量和扩容机制


12.22晨读必回内容

1.servlet的生命周期

2.jvm的五大内存模型

3.GC的常用回收算法

4.类的加载过程

5.双亲委派模型


12.23晨读必回内容

1.线程的创建方式

2.谈谈CAS和ABA

3.聊聊对象的锁升级过程

https://www.jianshu.com/p/9a3066b2335a

Java-邢朋辉 2022/1/15 8:03:17

1.14 任务清单

1.完成动态模块的相关业务+代码实践+页面

2.选择项目模块,开工

3.记得写日报


1.15 晨读内容

1.排序算法(冒泡、快排)

2.查找算法(二分)

3.数组元素去重算法

4.ArrayList底层,初始容量,扩容


1.15 课前分享

周迎

史冰杰

韩松啸

刘柏亨

今日在线文档链接:https://www.yuque.com/docs/share/cdf80716-7f9f-481d-882b-a0b97455a4a1?# 《发表动态+点赞、转发+评论》


朱佳辉 2022/1/14 19:33:35

1.14 晨读内容

1.面向对象的认知?

2.面向对象的特征以及理解?

3.this和super?

4.抽象类和接口(1.7和1.8)的区别?

5.各种关键字:static final instanceof?

6.装箱和拆箱?



赵晨阳01 2022/1/14 19:33:19

明天的晨读内容吗


朱佳辉 2022/1/14 19:32:01

@全体成员 记得去老师助手里边进行语音打卡,打卡内容:晨读问题选一个回答


Java-邢朋辉 2022/1/14 16:12:17

1.14 任务清单

1.完成动态模块的相关业务+代码实践+页面

2.选择项目模块,开工

3.记得写日报


1.15 晨读内容

1.排序算法(冒泡、快排)

2.查找算法(二分)

3.数组元素去重算法

4.ArrayList底层,初始容量,扩容


1.15 课前分享

周迎

史冰杰

韩松啸

刘柏亨

@全体成员


Java-邢朋辉 2022/1/14 7:38:36

1.14 晨读内容

1.面向对象的认知?

2.面向对象的特征以及理解?

3.this和super?

4.抽象类和接口(1.7和1.8)的区别?

5.各种关键字:static final instanceof?

6.装箱和拆箱?



Java-邢朋辉 2022/1/14 7:38:33

1.14 晨读内容

1.面向对象的认知?

2.面向对象的特征以及理解?

3.this和super?

4.抽象类和接口(1.7和1.8)的区别?

5.各种关键字:static final instanceof?

6.装箱和拆箱?


王新朋 2022/1/14 7:00:46

1.14 晨读内容

1.面向对象的认知?

2.面向对象的特征以及理解?

3.this和super?

4.抽象类和接口(1.7和1.8)的区别?

5.各种关键字:static final instanceof?

6.装箱和拆箱?



Java-邢朋辉 2022/1/13 21:05:50

1.13 任务清单

1.选择项目模块,登记在册

2.完成今日代码,运行截图,发群里

3.自选模块,开工,创建项目

4.加入老师助手,开始过年打卡大作战,班级号:90663227


1.14 晨读内容

1.面向对象的认知?

2.面向对象的特征以及理解?

3.this和super?

4.抽象类和接口(1.7和1.8)的区别?

5.各种关键字:static final instanceof?

6.装箱和拆箱?


1.14 课前分享

肖兴邦

罗彬

姚鹏程

詹建星@全体成员


Java-邢朋辉 2022/1/13 19:50:41

1.13 任务清单

1.选择项目模块,登记在册

2.完成今日代码,运行截图,发群里

3.自选模块,开工,创建项目

4.加入老师助手,开始过年打卡大作战,班级号:90663227


1.14 晨读内容

1.面向对象的认知?

2.面向对象的特征以及理解?

3.this和super?

4.抽象类和接口(1.7和1.8)的区别?

5.各种关键字:static final instanceof?

6.装箱和拆箱?


1.14 课前分享

肖兴邦

罗彬

姚鹏程

詹建星@全体成员


朱佳辉 2022/1/13 19:36:38

@全体成员 四选一1.13 晨读内容:

1.GC的回收器(CMS和G1)?

2.Java中4种引用及区别?

3.final、finally与finalize的区别?

4.哪些可以作为GC ROOTS?


朱佳辉 2022/1/13 19:36:05

1.13 晨读内容:

1.GC的回收器(CMS和G1)?

2.Java中4种引用及区别?

3.final、finally与finalize的区别?

4.哪些可以作为GC ROOTS?


Java-邢朋辉 2022/1/13 16:37:06

1.13 任务清单

1.选择项目模块,登记在册

2.完成今日代码,运行截图,发群里

3.自选模块,开工,创建项目

4.加入老师助手,开始过年打卡大作战


1.14 晨读内容

1.面向对象的认知?

2.面向对象的特征以及理解?

3.this和super?

4.抽象类和接口(1.7和1.8)的区别?

5.各种关键字:static final instanceof?

6.装箱和拆箱?


1.14 课前分享

肖兴邦

罗彬

姚鹏程

詹建星

@全体成员


赵晨阳01 2022/1/13 8:14:01

1.13 晨读内容:

1.GC的回收器(CMS和G1)?

2.Java中4种引用及区别?

3.final、finally与finalize的区别?

4.哪些可以作为GC ROOTS?


Java-邢朋辉 2022/1/13 8:10:02

1.13 晨读内容:

1.GC的回收器(CMS和G1)?

2.Java中4种引用及区别?

3.final、finally与finalize的区别?

4.哪些可以作为GC ROOTS?


朱子豪 2022/1/13 8:01:12

1.13 晨读内容:

1.GC的回收器(CMS和G1)?

2.Java中4种引用及区别?

3.final、finally与finalize的区别?

4.哪些可以作为GC ROOTS?


王新朋 2022/1/13 7:48:45

1.13 晨读内容:

1.GC的回收器(CMS和G1)?

2.Java中4种引用及区别?

3.final、finally与finalize的区别?

4.哪些可以作为GC ROOTS?


Java-邢朋辉 2022/1/12 20:24:23

1.12 任务清单

1.完成今日代码

图片上传、签到、会员等级


1.13 晨读内容:

1.GC的回收器(CMS和G1)?

2.Java中4种引用及区别?

3.final、finally与finalize的区别?

4.哪些可以作为GC ROOTS?


1.13 课前分享:

王易洋

王中楷

陶靖朋 @全体成员 奥利给!


Java-邢朋辉 2022/1/12 8:11:57

1.12 晨读内容:

1.GC怎么判断对象是否可回收

2.GC常用算法

3.GC在堆内存的工作过程


Java-邢朋辉 2022/1/12 8:11:56

1.12 晨读内容:

1.GC怎么判断对象是否可回收

2.GC常用算法

3.GC在堆内存的工作过程


Java-邢朋辉 2022/1/12 8:11:51

1.12 晨读内容:

1.GC怎么判断对象是否可回收

2.GC常用算法

3.GC在堆内存的工作过程


Java-邢朋辉 2022/1/11 21:02:48

1.11 每日任务清单:

1.全力以赴赶工-团队项目

截止到明天,需要每个人完成一个小模块(2-6个接口)

包含:数据库、接口、页面、最终效果

从头到尾全部走通,哪怕就一个页面的全套操作

正常的进度:今天完成代码,明天开始整合


1.12 晨读内容:

1.GC怎么判断对象是否可回收

2.GC常用算法

3.GC在堆内存的工作过程


1.12 课前分享:

王新朋

罗广亮

陈泽璇

岳耀库@全体成员


Java-邢朋辉 2022/1/11 8:14:16


2022.1.11的晨读清单:

1.类加载器有哪些?

2.双亲委派模型?如何打破?

3.内存溢出和内存泄漏?


Java-邢朋辉 2022/1/11 8:14:12

2022.1.11的晨读清单:

1.类加载器有哪些?

2.双亲委派模型?如何打破?

3.内存溢出和内存泄漏?


刘川-00 2022/1/11 8:11:20


2022.1.11的晨读清单:

1.类加载器有哪些?

2.双亲委派模型?如何打破?

3.内存溢出和内存泄漏?


Java-邢朋辉 2022/1/10 20:43:04

今日任务:

1.消化和吸收今日所学

后端的业务逻辑代码实现

2-4小时

2.继续推进团队项目


2022.1.11的晨读清单:

1.类加载器有哪些?

2.双亲委派模型?如何打破?

3.内存溢出和内存泄漏?

还有明天开始课前分享,明天需要分享的小伙伴:

王东东

马辉远

何槟豪

参与课前分享的小伙伴,请把分享的知识录成小视频,明天下午13点之前发给我哈

收到,请回复!3Q

@全体成员


Java-邢朋辉 2022/1/10 8:00:29

今个腊八节

2022.1.10的晨读清单:

1.内存模型(1.7 和1.8),每个模型做什么?

2.堆内存组成(新生代和老年代)怎么?

3.Java中类的加载过程?


Java-邢朋辉 2022/1/9 23:04:45

2022.1.10的晨读清单:

1.内存模型(1.7 和1.8),每个模型做什么?

2.堆内存组成(新生代和老年代)怎么?

3.Java中类的加载过程?@全体成员 加油哈


Java-邢朋辉 2022/1/9 20:54:22

每日晨读清单,需要每个人自己去寻找答案,然后整理成自己的在线文档。


Java-邢朋辉 2022/1/9 20:47:09

2022.1.10的晨读清单:

1.内存模型(1.7 和1.8),每个模型做什么?

2.堆内存组成(新生代和老年代)怎么?

3.Java中类的加载过程?@全体成员 加油哈


Java-邢朋辉 2022/1/9 20:21:06

如果条件允许,早上,还是需要晨读哈,每天给大家任务列表,到时QQ群语音打卡,从其中选择一道


Java-邢朋辉 2021/12/30 7:31:12

12.30晨读必会内容

面试宝典1-6页内容

加油,奥利给!!


Java-邢朋辉 2021/12/22 23:20:01

12.23晨读必回内容

1.线程的创建方式

2.谈谈CAS和ABA

3.聊聊对象的锁升级过程

8点前进班,请勿迟到,违者5元梦想基金@全体成员


朱佳辉 2021/12/22 8:03:10

12.22晨读必回内容

1.servlet的生命周期

2.jvm的五大内存模型

3.GC的常用回收算法

4.类的加载过程

5.双亲委派模型

8点前进班哈@全体成员


Java-邢朋辉 2021/12/21 23:22:01

12.22晨读必回内容

1.servlet的生命周期

2.jvm的五大内存模型

3.GC的常用回收算法

4.类的加载过程

5.双亲委派模型

8点前进班哈@全体成员


Java-邢朋辉 2021/12/21 23:21:53

12.22晨读必回内容

1.servlet的生命周期

2.jvm的五大内存模型

3.GC的常用回收算法

4.类的加载过程

5.双亲委派模型

8点前进班哈


Java-邢朋辉 2021/12/20 22:28:27

12.21晨读任务

1.赶项目进度

明天冬至,记得吃饺子,实在不行,今晚吃了也中


朱佳辉 2021/12/20 8:07:50

12.20晨读任务@全体成员

1.谈谈Hashmap的扩容原理

2.聊聊Hashmap的底层结构区分1.7和1.8

3.聊聊concurrenthashmap怎么实现线程安全

4.聊聊arraylist的初始容量和扩容机制


Java-邢朋辉 2021/12/19 23:30:48

12.20晨读任务

1.谈谈Hashmap的扩容原理

2.聊聊Hashmap的底层结构区分1.7和1.8

3.聊聊concurrenthashmap怎么实现线程安全

4.聊聊arraylist的初始容量和扩容机制

8点前到班,请勿迟到。晚安,好梦,各位!@全体成员


Java-邢朋辉 2021/12/16 21:40:14

12.17晨读必回内容

1.写代码,完成团队项目开发


朱佳辉 2021/12/16 8:13:18

@全体成员 12.16晨读必回内容

1.mybatis的多参数处理

2.mybatis的一级和二级缓存

3.温故知新

还有昨天的日报,交给leader,leader收齐之后交给我


Java-邢朋辉 2021/12/15 22:54:15

12.16晨读必回内容

1.mybatis的多参数处理

2.mybatis的一级和二级缓存

3.温故知新


朱佳辉 2021/12/15 7:59:03

@全体成员

12.15晨读必会内容

1.面向对象中的各种关键字

比如final static 等等

2.抽象类和接口的区别?

3.mybatis的动态sql

4.spring框架常用的注解?

5.springmvc如何实现json数据交互?


邹美华 2021/12/15 7:50:49

12.15晨读必回内容

1.面向对象中的各种关键字

比如final static 等等

2.抽象类和接口的区别?

3.mybatis的动态sql

4.spring框架常用的注解?

5.springmvc如何实现json数据交互?


Java-邢朋辉 2021/12/14 23:45:17

12.15晨读必回内容

1.面向对象中的各种关键字

比如final static 等等

2.抽象类和接口的区别?

3.mybatis的动态sql

4.spring框架常用的注解?

5.springmvc如何实现json数据交互?


Java-邢朋辉 2021/12/14 23:45:16

12.15晨读必回内容

1.面向对象中的各种关键字

比如final static 等等

2.抽象类和接口的区别?

3.mybatis的动态sql

4.spring框架常用的注解?

5.springmvc如何实现json数据交互?


Java-邢朋辉 2021/12/14 23:45:12

12.15晨读必回内容

1.面向对象中的各种关键字

比如final static 等等

2.抽象类和接口的区别?

3.mybatis的动态sql

4.spring框架常用的注解?

5.springmvc如何实现json数据交互?


Java-邢朋辉 2021/12/13 22:09:15

12.14晨读必回内容

1.sql语句的分类和对应的关键字

2.谈谈数据库事务的理解

3.聊聊涨读,幻读,不可重复读

4.spring创建Bean的几种方式

5.restful接口规范

6.聊聊面向对象的特征的理解

温馨提示:8点前进班,违者乐捐5元梦想基金!


Java-邢朋辉 2021/12/13 22:09:11

12.14晨读必回内容

1.sql语句的分类和对应的关键字

2.谈谈数据库事务的理解

3.聊聊涨读,幻读,不可重复读

4.spring创建Bean的几种方式

5.restful接口规范

6.聊聊面向对象的特征的理解

温馨提示:8点前进班,违者乐捐5元梦想基金!


Java-邢朋辉 2021/12/13 22:08:25

12.14晨读必回内容

1.sql语句的分类和对应的关键字

2.谈谈数据库事务的理解

3.聊聊涨读,幻读,不可重复读

4.spring创建Bean的几种方式

5.restful接口规范

6.聊聊面向对象的特征的理解


朱佳辉 2021/12/13 8:02:58

@全体成员 今日晨读任务!

1.记忆spring的常用注解

2.springmvc的作用

3.mybatis的作用和特点

4.mybatis的$和#区别和用法


Java-邢朋辉 2021/12/13 7:11:08

各位小伙伴,咱们早上8点前到达战场。今日晨读任务!

1.记忆spring的常用注解

2.springmvc的作用

3.mybatis的作用和特点

4.mybatis的$和#区别和用法

以此类推,背诵框架的知识点!


Java-邢朋辉 2021/12/13 7:11:04

各位小伙伴,咱们早上8点前到达战场。今日晨读任务!

1.记忆spring的常用注解

2.springmvc的作用

3.mybatis的作用和特点

4.mybatis的$和#区别和用法

以此类推,背诵框架的知识点!