Springboot核心技术

Springboot中文乱码问题(还有一个未解决)

2017-10-21  本文已影响155人  老胡聊聊天

视频地址:http://www.imooc.com/learn/587

这个视频感觉废话有点多,看的有点困。

一、创建项目

1、创建maven项目


创建mvn项目

2、默认创建的项目,用的servlet的版本是2.3,太老,换成3.1

image.png

3、junit默认是3.8,改为4.11,因为4.x才支持注解


image.png

二、添加依赖

1、日志依赖

image.png image.png

2、db依赖

image.png

3、dao依赖

image.png

4、servlet web依赖

image.png

5、Spring依赖

image.png image.png image.png image.png

三、秒杀业务

image.png image.png

用户角度:

image.png image.png

为什么需要事务:

image.png image.png

数据落地:
NoSQL(如Redis、HBase、ES等)的优势是高性能、高可用、分布式,对事务的支持还是不如MySQL。


image.png

四、秒杀系统的难点

image.png

事务

竞争出现在Update

行级锁

image.png image.png

五、实现哪些秒杀功能

image.png

本课程实现的功能


image.png

代码开发阶段

image.png

六、数据库设计

image.png image.png

七、dao

image.png image.png

Mybatis的特点


image.png

mybatis-config.xml

image.png

SeckillDao.xml


image.png image.png

SuccessKilledDao.xml

高并发的点:

image.png

优化总结

image.png

最后一点有两种方式:
1、修改mysql源码,在后面增加一个注释,如果达到某个条件(比如发现库存为0),就直接回滚,这样就可以减少java和mysql的交互次数

image.png

2、采用存储过程,效果跟上面类似。

redis
更好的序列化对象
protostuff来做序列化,可以提供比java自带序列化更快、更强。体积大概是原来的0.2甚至0.1,时间也是数量级的提升。

image.png image.png image.png

锁优化


image.png

把insert提前,缩短update和commit/rollback之间的时间

image.png image.png

部署架构

![Uploading image_335182.png . . .]

image.png image.png

1、编码统一:
所有编码都采用utf-8,包括文件编码、数据库链接编码

2、修改application.properties文件,增加如下配置:

spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

3、PathVariable含有中文(未解决)

以上方式可以解决http://xxx.com/test?name=中文这种

但是对于http://xxx.com/test/中文这种还是乱码,网上找了几种解决方式,测试了一下都没奏效,找问题ing。

1)设置mapping的produces

@RequestMapping(value = "/query/{keyword}", method = RequestMethod.GET, produces = "text/html;charset=UTF-8")
public String query(@PathVariable String keyword) {
}

2)自己做编码转换

@RequestMapping(value="/search/{key}", method = {RequestMethod.GET})  
    public String searchFaceListIndex(@PathVariable(value="key") String key,Map<String, Object> result) throws UnsupportedEncodingException {  
        key = new String(key.getBytes("ISO-8859-1"), "utf8");  
        return "searchFaceList";  
    } 

目前尚未解决,欢迎评论指导。

上一篇下一篇

猜你喜欢

热点阅读