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

news2025/7/9 0:24:43

目录

一、判断实体类

二、图片无法正常显示

三、图片路径存储问题

四、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【使用后,还是无法存储,仍然报错!】

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/6828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaSE】继承那些事儿

目录 1. 继承 1.1 为什么要有继承 1.2 何为继承 1.3 继承的语法 1.4 父类成员的访问 1.4.1 子类中访问父类的成员变量 1.4.2 子类中访问父类的成员方法 1.5 super 关键字 1.5.1 super 关键字能让子类访问父类同名成员变量及方法 1.5.2 super 关键字在子类构造方法所起的作用 1…

STC51单片机21——EEPROM测试

STC89C51RC系列单片机内部EEPROM详细地址表&#xff1a; 第一扇区 第二扇区 第三扇区 第四扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 2000h 21FFh 22…

node.js的pat/fs/events模块以及磁盘遍历的实现

path模块: 概述: path模块是一个内置模块,他里面内置的相关方法来造作的路径地址 导入path模块: const path require(path) 使用方法: //导入对应的path模块 const pathrequire(path) //相关方法 //1.join方法是将多个相关的地址连接成一个地址 (做路径拼接) let pathStrpath…

2022年下半年系统架构设计师下午真题及答案解析

试题一(25分) 某电子商务公司拟升级其会员与促销管理系统&#xff0c;向用户提供个性化服务&#xff0c;提高用户的粘性。在项目立项之初&#xff0c;公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性&#xff0c;由于当前用户规模不大&#xff0c;业务也相对…

2022年数维杯国际大学生数学建模挑战赛开赛公告

各参赛队伍&#xff1a; 为了保证2022年数维杯国际大学生数学建模挑战赛参赛队伍顺利参赛&#xff0c;现将竞赛开赛的相关事项通知如下&#xff1a; 一、时间节点 报名截止时间&#xff1a;北京时间2022年11月17日06:00&#xff08;周四&#xff09; 竞赛开始时间&#xff…

大半夜排查bug:竟然是同事把Redis用成这鬼样子,坑了我

首先说下问题现象&#xff1a;内网sandbox环境API持续1周出现应用卡死&#xff0c;所有api无响应现象。 刚开始当测试抱怨环境响应慢的时候 &#xff0c;我们重启一下应用&#xff0c;应用恢复正常&#xff0c;于是没做处理。但是后来问题出现频率越来越频繁&#xff0c;越来越…

VSCode常用插件

目录1. 简体中文2. git3. 项目文件夹管理4. 文件图标主题5. markdown6. 主题7. Rest API 客户端1. 简体中文 Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 2. git GitLens — Git supercharged 3. 项目文件夹管理 Project Manager&#xff0c;帮助…

MySQL增删改查语句练习(grade表,student表,subjects表,result表)

目录 问题描述 问题分析 1. 添加操作 2. 修改操作 3. 删除操作 问题实现 1. 添加测试数据 2. 根据题目要求完成crud操作 1. 将地址是西安市的更新为西安科技二路 2. 将S1001的email修改为空的字符串 3. 将第二门课的名字更新为 java基础&#xff0c;课时为60 &#…

基于ssm的固定收益营销系统设计与实现(ERP系统)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

5进程创建FORK

文章目录1. fork函数初识2. fork函数返回值1. fork函数初识 fork函数的作用从已存在的进程中创建一个新的进程,而新进程被称为子进程,原进程称为父进程,我们先看一下当执行fork后会发生什么. 分配新的内存块和内核数据结构给子进程将父进程部分数据结构内容拷贝至子进程添加子…

数据库管理系统

简介 数据库管理系统是一种操纵和管理数据库的大型软件&#xff0c;用于建立、使用和维护数据库&#xff0c;简称 DBMS。它对数据库进行统一的管理和控制&#xff0c;以保证数据库的安全性和完整性。[2] 数据库管理系统是一个能够提供数据录入、修改、查询的数据操作软件&…

MySQL约束和表的复杂查询操作

✨博客主页: 心荣~ ✨系列专栏:【MySQL】 ✨一句短话: 难在坚持,贵在坚持,成在坚持! 文章目录一. 数据库约束1. 数据库常用约束2. not null 约束3. unique约束4. default设置默认值5. primary key约束6. 分库分表下的自增主键7. foreign key约束8. 主键,外键,uniqe运用原理二. …

Android App开发中使用Glide加载网络图片讲解及实战(附源码 简单易懂)

运行有问题或需要源码请点赞关注收藏~~~ 一、使用Glide加载网络图片 对于如何方便快速的显示网络图片&#xff0c;谷歌开发了自己的Glide开源库&#xff0c;同样我们需要在bulid.gradle中引入如下依赖 implementationcom.github.bumptech.glide:glide:4.11.0 Glide用法如下 G…

攻防世界-misc-流量分析1

下载附件&#xff0c;获得一个流量包 wireshark打开 随便选择一个&#xff0c;追踪tcp流 把请求包url解码看看是什么操作 还存在url编码&#xff0c;继续解码 GET /index.php?urlgopher://127.0.0.1:80/_POST /admin.php HTTP/1.1 Host: localhost:80 Connection: close Conte…

SpringBoot+@Validated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例

场景 若依管理系统前后端分离版基于ElementUI和SpringBoot怎样实现Excel导入和导出&#xff1a; 若依管理系统前后端分离版基于ElementUI和SpringBoot怎样实现Excel导入和导出_霸道流氓气质的博客-CSDN博客 SpringBootVue实现excel导入带格式化的时间参数(moment格式化明天日…

使用image-map编写校区平面示意图

一、效果图 先上一波效果图&#xff0c;手机录制 二、项目中用到的图片 呐&#xff0c;最近领导让俺帮某学校做一个校区平面示意图的移动端项目&#xff0c;用到的图片就是这样的&#xff0c;不过这是截的图片&#xff0c;放大后会模糊&#xff0c;项目中真正使用的图片有6…

HazelEngine 学习记录 - Profiling

Profiling Intro To Profiling 为了能够清晰的观察整个引擎的性能消耗情况&#xff0c;我们需要一个可视化的工具来进行性能分析&#xff0c;例如 Unity 的内置 Profiler&#xff1a; 其实本质就是将每个函数运行的时间进行可视化&#xff0c;这里我们借用标准库 chrono 来进…

笔记本电脑没有声音如何解决

​笔记本电脑没有声音的现象&#xff0c;也是笔记本电脑的常见运用病况之一,遇到这种情况的话,大家是否知道如何处理呢?下面小编来跟大家说说笔记本电脑没有声音解决方法&#xff0c;希望可以帮助到大家。 工具/原料&#xff1a; 系统版本&#xff1a;windows10系统 品牌型…

python--谷歌恐龙快跑小项目

用300行代码左右实现谷歌休闲的恐龙快跑游戏&#xff01; 主函数&#xff1a; import sys import math import time import random import pygame from pygame.locals import * from Scene import Scene from Obstacle import Plant, Ptera from Dinosaur import Dinosaur #…

嵌入式开发:当用微控制器构建嵌入式GUI时,有哪些注意事项

在嵌入式开发中&#xff0c;借助基于MCU的设计&#xff0c;你可以消除额外的RAM和闪存芯片&#xff0c;并使用板载外设而不是板外逻辑&#xff0c;所有这些都将随着当今功能强大的芯片而变得更加简单。当然&#xff0c;与成熟的微处理器相比&#xff0c;MCU本身也提供了额外的成…