读书笔记 JavaEE 互联网轻量级框架整合开发 180513

5月13日是一个特殊的日子,母亲节也是这一天

SpringMVC高级应用

springMVC的数据转换和格式化

在http请求到达DispatherServlet之前寻找相应的HandlerMapping→对应的HandlerAdapter执行

配置<mvc:annotation-driven> 或者添加@EnableWebMvc的时候

spring会自动生成一个FormattingConversionServiceFactoryBean→DefaultFormattingConversionService

顶级接口:ConversionService 实现了ConverterRegistry 和 FormatterRegistry接口

SpringMVC为了对应HTTP请求,定义了HttpMessageConverter

两类:Converter GenericConverter 作用:Java内部各种类型转换

真正用到的:MappingJackson2HttpMessageConverter

@ResponseBody 会把相应的数据转换成JSON格式 但是不会出现在ModelAndView中

格式化器 Formatter

@DateTimeFormat

@NumberFormat

给Controller添加通知

@ControllerAdvice

@InitBinder

@ExceptionHandler

@ModelAttribute

处理异常

可以在HttpStatus的源码中查看枚举类

@responseStatus

国际化(i18n)

LocaleResolver 决定UserLocale

DispatherServlet只能注册一个LocaleResolver

拓展了LocaleContetResolver:可以处理语言和时区的问题

CookieLocalResolver使Cookie实现国际化

Redis应用

解决互联网高并发难题

引入了NoSQL技术 是一种简易的数据库

基于内存 提供一定的持久化

使用最广泛的NoSQL:Redis 和 MongoDB

支持集群、分布式、主从同步

支持事务

由ANSI C语言编写 接近汇编语言,基于内存读写,所以速度非常快

只有6种数据类型 结构简单 规则少

一般存储命中率高的数据 效率远超只使用数据库

应用

缓存常用数据,在需要高速读写的场合使用

高并发核心问题:数据一致性、访问控制

80%的访问量集中在20%的时间上——著名的82定则

读操作一般远高于写操作

使用Redis存储数据的时候需要考虑3个问题

1.业务数据常用吗?命中率高吗?

2.读操作多,还是写操作多? 写操作比较频繁的话就不需要使用Redis

3.数据大小如何?太大的话会给缓存带来压力

483

经验分享 程序员 微信小程序 职场和发展