• Java——后端开发经验总结(持续更新中)


    目录

    一、判断实体类

    二、图片无法正常显示

    三、图片路径存储问题

    四、xml注释

    五、常用快捷键使用

    每日三问

    重要配置


    一、判断实体类

    Assert.notNull: 断言某个值是否为空

    1. 优点:告别了if判断为空。
    2. 缺点:场景比较单一,基本使用在查询数据库后的实体类判断。

    二、图片无法正常显示

    情境导入:

    部署前后端之后,网页中的图片无法正常显示,其他数据都是获取到了的

    原因分析:

    在排除前端路径没有写错之后,应该是后端的问题

    随即发现后端开放的图片地址写错了!

    总结:

    • 在部署上线前,记得把这里的文件路径修改好
    • Windows与Linux路径不一样!!!

    三、图片路径存储问题

    情境导入:

    存储图片路径到数据库的时候,mysql报错:data too long for colum....

    问题分析:

    MySQL数据库中的路径存储类型,我写的是varchar(100)

    通过搜索得知:图片路径存储至少要varchar(255)以上

    原因分析:

    为了节省空间,所以当时给MySQL中的路径存储属性写了varchar(100)

    总结:

    以后的图片路径存储都设置为varchar(255)以上


    四、xml注释

    情境导入:

    今天一个网友说:要准备删库跑路了!

    询问之后,发现就是因为xml注释引发的灾难!

    问题分析:

    为了方便自己和公司的同事,网友好心在xml写上了如下注释:

    原因分析:

    • 注释后面的条件没有换行,把其他条件也给注释了

    • 注释直接把分页的条件给注释掉了,相当于查全表

    • 100多w条数据放在内存里,就直接爆了

    总结

    • 使用自动注释:Alt + /

    • xml注释有很多种,编译不会报错(Maven打包也不会报错)!

    • xml开放的注释(专门写SQL的xml)

      1. /* 注释 */
      2. -- 注释


    五、常用快捷键使用

    功能快捷键冲突情况特殊使用环境
    注释代码Ctrl+ /当前页面
    格式化代码Ctrl+Alt+L与QQ锁屏快捷键冲突当前页面
    大小写统一Ctrl+ Shift + U常量的命名
    快速查找Ctrl + F当前页面
    快速查看类的结构信息Alt+7当前页面

    快捷键大全:http://t.csdn.cn/k3Eb3


    六、MySQL设置utf8mb4后仍然无法保存emoji表情

    情境导入:

    今天有用户通过输入框,存储了emoji表情,导致SQL数据库报错:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94'

    原因分析:

    • UTF-8编码有可能是两个、三个、四个字节

    • Emoji表情或者某些特殊字符是4个字节

    • 但MySQL的utf8编码最多3个字节,所以数据插不进去

    emoji表情:

    😀😃😄😁😆😅🤣😂🙂🙃😉😊😇🥰😍🤩😘😗

    解决方案:

    1、修改数据库的字段(column)字符集为utf8mb4【使用后,还是无法存储,仍然报错!】

    1.1、修改方案(2022.11.22)

    ⭐️  ​​​可以正常存储emoji表情

    ⚒️ 无法存储emoji表情

     

    2、使用hutool工具类 ⚒️ 进行转换

    • 亲测有效,但是有点麻烦

    • 存储的时候,需要转换为字符型

    • 从数据库中取出的时候,又需要转换为emoji表情

    🚀 hutool工具类网址:Hutool参考文档Hutool,Java工具集https://hutool.cn/docs/#/extra/emoji/Emoji%E5%B7%A5%E5%85%B7-EmojiUtil


    七、图片压缩功能

    情境导入:

    用户每次上传的图片都是3-5M,比较大

    • 当用户查看上传图片的时候,页面加载图片很慢,用户体验不好 🤔

    • 图片过大,也会占用服务器的存储空间,而且查看大图片,还会占用服务器带宽

    解决方案:

    1、前端处理 (简单快捷 ✌️

    • 用户上传图片后,前端直接压缩图片即可

    • 压缩图片可直接利用组件完成

    2、后端处理(不推荐)

    • Thumbnailator工具类实现

    • 优点:可指定压缩大小

    • 缺点:费时,需要异步操作,占用带宽

    总结:

    • 本人主要学后端,就首选了后端处理
    • 结果发现前端处理更简单,白折腾了大半天💦
    • 在此进行记录!ℹ️ℹ️ℹ️

    全栈的理解

    🏵️ 全栈是个很难界定的概念 :

    Java全栈?还是应用开发全栈?

    • 所以全栈作为方向和学习路线是很难确定学习路线的
    • 大厂招聘也不会写要招全栈,都是合作完成

    所以全栈是一种能力,对于一个合格工程师最重要的能力就是:

    • 快速学习新知识并且运用的能力
    • 除此之外所有的经验和积累,都是为了能让我们在拿到需求,遇到问题的时候,知道该用什么技术去实现,或者该学习什么技术才能实现。

    每日三问

    1. 学后有思考吗?

    2. 有不看文档写一遍的习惯吗?

    3. 有每天写日报总结吗?

    重要配置

    序号配置信息变量名称
    1图片加载路径imgUrl
    2请求路径baseUrl
    3文件上传路径uploadUrl
    4AppIDappid
    5秘钥pwd
  • 相关阅读:
    基于Python的Django出租车大数据分析系统实现
    mysql分区表的增删改查操作
    log4j2的简单使用
    jsbridge实战1:xcode swift 构建iOS app
    html table转excel单元格带背景颜色
    JVM详解(InsCode AI 创作助手)
    node知识点(1)
    2022-10-27-梯度下降法结合线性回归预测公交车数量和GDP关系
    小学期-中期总结报告
    数说故事携手香港城市大学发表顶级国际论文,并获权威「IEEE TCSS期刊」收录
  • 原文地址:https://blog.csdn.net/Pan_peter/article/details/127799835