美文网首页Springboot核心技术
Springboot中文乱码问题(还有一个未解决)

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

作者: 老胡聊聊天 | 来源:发表于2017-10-21 08:37 被阅读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

    • 第一个sql中的ignore,表示如果插入了重复主键,sql不抛出异常,而是返回0,方便业务处理。
    • 第二个sql中的别名,是为了把对象设置为SuccessKilled.seckill属性


      image.png

    高并发的点:

    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";  
        } 
    

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/wdabuxtx.html