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)

  • /* 注释 */
    <!-- 注释 -->
    -- 注释


五、常用快捷键使用

功能快捷键冲突情况特殊使用环境
注释代码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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peter123123123123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值