开发中遇到的问题&解决方案(二)

简介: 一个软件系统最重要的是什么?毫无疑问是数据,那什么是数据的'运载体',什么作为后端与数据库的桥梁和沟通者呢,是SQL。我是Java开发出身,大学课程当时学习的是SQL Server,而且后面工作中实际用到过Oracle,DB2以及使用的最普遍的My SQL,至于No SQL 这一类下的常用的就是Redis和MongoDB了,这些后面再详细举例说明。今天讲的案列与表情相关,那么接下来进入今天的主题。


前言

一个软件系统最重要的是什么?毫无疑问是数据,那什么是数据的'运载体',什么作为后端与数据库的桥梁和沟通者呢,是SQL。我是Java开发出身,大学课程当时学习的是SQL Server,而且后面工作中实际用到过Oracle,DB2以及使用的最普遍的My SQL,至于No SQL 这一类下的常用的就是Redis和MongoDB了,这些后面再详细举例说明。今天讲的案列与表情相关,那么接下来进入今天的主题。

主题:

当发现Mysql不支持emoji表情时你是怎么办的?注:版本5.1.13及以上

问题阐释:

数据库接收到表情会是什么情况导致的?

案例:

在开发系统时,用户体系是重中之重,所以联合登录这种事情就很普遍了,一般是微信联合登录,当然还有支付宝或者第三方的联合登录比如一键登录这种的,而在微信联合登录中,最容易出现问题的就是微信的'用户名',如果是规规矩矩的中文或者中文+英文都无所谓,有的是稀奇古怪的在用户名上加了表情,这就让人很难受了,当有这种用户联合登录即微信授权登录进来以后,入库就报错,错误是什么呢?看看下面的这个报错是不是很熟悉。

微信截图_20220531133811.png意思就是当前数据库的编码(字符集)不是utf8mb4的,不支持表情,那遇到这种情况怎么办呢,

解决方案
1)修改数据库的字符集为utf8mb4,重启数据库后生效,这种最快,而且不涉及到修改代码再发版,产品同意的概率很大
2)在接口中添加过滤,把用户名中的表情替换掉,这种方法的话,需要修改代码和发版,如果用户很多而且现有环境不支持蓝绿发布或者负载均衡那产品肯定不同意这种方案

那有没有更好的方案呢,实际上目前就这两种方案,而最优的方案是在系统最初设计和规划时就应该想到会有这种情况,那有人会说了我怎么知道系统后面的事情,这个问题就是经验积累了,就是要有所谓的系统前瞻性,只有踩的坑多了我们才能在后面的开发中避开这些坑,架构师也是从坑里爬出来的,当然架构师踩的坑那就更多了,而我们这种普通开发呢,我们能做的就是记好每次踩的是什么坑,下次,下下次不踩进同一个坑里就行了。

重要提示:

上面说到了数据的重要性,那数据库的备份肯定不能少,所以也顺便提及一下数据库备份的知识点

1)开启binlog日志,防止误删除,就算删除了也能同binlog日志找回来,另外设计数据库时尽量做逻辑删除而不是物理删除,就加一个is_delete的字段删除时置为1,未删除为0
2)可以将整个数据库同步到另外一个服务器上,当然数据是增量同步,即使A服务器的数据库中病毒,B也能保全数据
小结

关于My SQL的要点和坑真的很多,这里只是找几个典型的来说明。今天的问题及解决方案就讲到这里,我们明天继续。fighting......

目录
相关文章
|
11天前
|
前端开发 安全 JavaScript
有哪些常见的前端问题和解决方案
【4月更文挑战第13天】前端开发常见问题及解决方案:页面渲染性能优化(减少重绘、回流,利用GPU加速,代码拆分)、响应式设计(媒体查询、弹性布局)、浏览器兼容性(使用前缀,兼容性库,浏览器嗅探)、事件处理(事件委托、防抖节流)、代码组织(模块化、构建工具)、安全性(输入验证、HTTPS、安全HTTP头)和资源加载(CDN、资源优化、错误处理)。
15 6
|
8月前
|
存储 编解码 监控
报告厅解决方案
大型单位、企业都建有报告厅,单位搭建报告厅的目的是为了召开各类会议、学术讨论、演讲、报告、新闻发布、多媒体教学培训、观看电影等活动提供卓越的音质效果、清晰的画面显示以及简单便捷的集中控制。报告厅通常会涉及举办活动时将现场画面的保存记录、活动画面以直播的形式在报告厅之外的其他屏幕上观看(因为报告厅容纳人数有限的原因)。针对这两个需求我们做了以下解决方案
|
数据安全/隐私保护
开发中遇到的问题&解决方案(五)
在开发过程中,图片是必不可少的,除了图片的上传下载以外,图片压缩也是很常见的。 下面我们来看看hutool工具类里图片压缩的方法。
267 0
开发中遇到的问题&解决方案(五)
|
网络协议 数据安全/隐私保护
开发中遇到的问题&解决方案(七)
邮件发送相信大家都不陌生吧,一般是用于电商平台比如京东下单后订单信息的邮件发送或者移动这种的月度账单的邮件发送,再有就是通过绑定的邮箱进行密码重置,由邮箱跳转到指定的密码重置页进行密码重置操作。那么下面我们来看看hutool里对于邮件发送的包装是怎么样的。
163 0
开发中遇到的问题&解决方案(七)
|
Java Linux 数据安全/隐私保护
开发中遇到的问题&解决方案(六)
之前的项目里有用到FTP,需要使用FTP把图片及一些必要文件上传到第三方的FTP服务器上,所以会涉及FTP连接,创建用户,创建文件夹,文件上传等,项目里选用的还是hutool包装的FTP工具类,下面来看看这些功能的在hutool里是怎么包装的。
462 0
开发中遇到的问题&解决方案(六)
|
Java
开发中遇到的问题&解决方案(八)
以前的一个老项目里使用过ZXing进行会员和门店二维码的生成操作,当时出现过Java版本升级后不兼容的问题,很是麻烦,于是替换成了hutool里的二维码生成,下面我们来看看具体的实现。
175 0
开发中遇到的问题&解决方案(八)
|
安全 机器人 数据安全/隐私保护
开发中遇到的问题&解决方案(九)
在我们的系统里验证码是必不可少的,比如注册登录时,忘记密码时,设置支付密码时或者支付下单时,那验证码的作用在哪里呢?其实就一条为了防止来着黑客和机器人恶意的攻击,那么下面我们来看看hutool里验证码工具类。
218 0
开发中遇到的问题&解决方案(九)
|
JSON 自然语言处理 Java
开发中遇到的问题&解决方案(十)
我们在开发中一般遇到会对于敏感词的过滤或者屏蔽,因为之前做过社区类的APP,在这方面也踩了不少的坑,算是也积累了一点点的经验,那么今天我们来看看hutool里对于敏感词的一些操作,工具类SensitiveUtil()
330 0
开发中遇到的问题&解决方案(十)
|
Java 数据库 微服务
开发中遇到的问题&解决方案(三)
我们在日常的开发中会使用到很多工具类,比如最常用的Http请求的,或者日期工具类,处理时间差或者对日期进行特殊处理的,还有就是图片上传类的,比如阿里云或者腾讯云得SSO图片上传,以及Excel文件的导入导出。那这些工具类基本上都是跟着项目的,就是每个项目都写各自的工具类,如果分工明确细化到小组那重复代码就多了,那把工具类集成成一个项目类呢,由一个人去维护这个工具类工程,如果是微服务项目就是一个工具类的微服务,这样做的好处就很明显了,至少公司的研发部在使用到常用的工具类时不必再去网上找到。
245 0
开发中遇到的问题&解决方案(三)
|
设计模式 前端开发 Java
开发中遇到的问题&解决方案(一)
在开发过程在我们往往会遇到很多的开发阻碍或者因为原生框架的不支持导致的一系列问题或者有的不是问题,是我们使用普通的大量的复制粘贴改改就能用的代码去实现功能,这样使得代码很冗余,我们能不能去尝试找一些好的方案比如采用设计模式这些去优化我们的代码,实现代码简洁明了,易扩展呢?答案是肯定的。这个系列文章会使用案列加解决方案的形式为大家讲解,那下面我们开始吧。
674 0
开发中遇到的问题&解决方案(一)