021-从零搭建微服务-短信服务(一)
写在最前
如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。
源码地址(后端):https://gitee.com/csps/mingyue
源码地址(前端):https://gitee.com/csps/mingyue-ui
文档地址:https://gitee.com/csps/mingyue/wikis
短信服务
短信服务(Short Message Service,简称SMS)是一种基于移动电话网络的通信方式,用于在移动设备之间传递短文本消息。这些消息通常被限制在一定的字符数内,通常为160个字符,尽管一些系统支持连接多条短信以形成较长的消息。短信服务是一种简便、广泛应用的通信手段,可用于个人、商业和技术领域。
以下是关于短信服务的一些关键特点:
- 文本消息: 短信是以纯文本形式发送的消息,通常不包含图像、音频或视频。它们主要用于传递简短的信息。
- 字符限制: 传统的SMS消息限制为160个字符,这是因为短信协议最初是为了适应电话信令系统而设计的。但是,通过技术手段,可以连接多条消息来传递更长的文本。
- 全球覆盖: 短信服务在全球范围内可用,只要设备连接到移动电话网络,就可以发送和接收短信。
- 可靠性: 短信通常被认为是一种相对可靠的通信方式,因为它们不依赖于互联网连接,而是使用移动电话网络基础设施。
- 用途广泛: 短信服务的用途多种多样,包括个人通信、商业用途、应用程序通知、验证码发送、紧急通知等。
- 商业应用: 许多企业使用短信服务向客户发送营销信息、交易通知和提醒。
- 技术整合: 开发人员可以使用短信服务的API将短信功能集成到他们的应用程序中,以便发送自动化消息。
国内常用短信服务商
有许多短信服务商为个人、企业和开发者提供短信发送和接收的服务。以下是一些在国内常用的短信服务商:
- 阿里云(Aliyun): 阿里云是阿里巴巴集团的云计算分支,提供各种云服务,包括短信服务。阿里云短信服务被广泛用于企业的营销、通知、验证等方面。
- 腾讯云(Tencent Cloud): 腾讯云是腾讯公司的云服务平台,也提供短信服务。腾讯云的短信服务适用于各种场景,包括用户验证、营销推广等。
- 容联云通讯(云片网): 容联云通讯(现在更多被称为云片网)是一家专注于短信服务的公司,提供丰富的短信发送和接收解决方案。
- 华信智原(253云通讯): 华信智原(现在更多被称为253云通讯)是国内领先的互联网通信服务提供商,为企业和开发者提供短信、语音、验证码等服务。
- 漫道云通讯: 漫道云通讯是一家提供全球范围内短信服务的公司,为企业和开发者提供可靠的通信解决方案。
- 百度云: 百度云也提供短信服务,供企业使用,帮助他们与用户保持联系、发送通知等。
短信服务
MingYue 短信服务将接入 阿里云(Aliyun)、腾讯云(Tencent Cloud)作为短信服务商!!!
新建短信服务
mingyue ->
new module
-> mingyue-sms
mingyue
└── mingyue-sms├── mingyue-sms-api└── mingyue-sms-biz└── MingYueSmsApplication (短信服务启动类)
mingyue-sms-biz 添加依赖
<dependencies><!-- SpringCloud Alibaba Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringCloud Alibaba Nacos Config --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- web容器 --><dependency><groupId>com.csp.mingyue</groupId><artifactId>mingyue-common-web</artifactId></dependency><!-- 接口文档 --><dependency><groupId>com.csp.mingyue</groupId><artifactId>mingyue-common-doc</artifactId></dependency><!-- 认证工具类 --><dependency><groupId>com.csp.mingyue</groupId><artifactId>mingyue-common-security</artifactId></dependency></dependencies>
添加发送短信接口
添加一个测试接口
com.csp.mingyue.sms.controller.SmsController
/*** 短信服务模块* @author Strive* @date 2023/8/24 14:59*/
@Slf4j
@Tag(name = "短信服务模块")
@Validated
@RestController
@RequestMapping("/sms")
@RequiredArgsConstructor
public class SmsController {/*** 短信验证码** @param phone 用户手机号*/@GetMapping("/code")@Operation(summary = "短信验证码",parameters = { @Parameter(name = "phone", description = "手机号", required = true) })public R<Void> smsCaptcha(@NotBlank(message = "手机号不能为空") String phone) {String code = "4321";log.info("手机[{}] 验证码短信发送 => {}", phone, code);return R.ok();}}
Nacos 添加 mingyue-sms-biz.yml 配置文件
# 短信服务配置
Nacos 添加接口文档配置
# swagger配置
swagger:services:## 配置开启的接口服务mingyue-sms-biz: sms
Nacos 添加网关转发配置
# 短信服务
- id: mingyue-sms-bizuri: lb://mingyue-sms-bizpredicates:- Path=/sms/**filters:- StripPrefix=1
启动测试
http://mingyue-gateway:9100/v3/api-docs/sms 接口文档数据展示如下即可:
{"openapi": "3.0.1","info": {"title": "MingYue 基础服务中心_接口文档","description": "基础服务中心","contact": {"name": "Strive","url": "https://gitee.com/csps/mingyue","email": "732171109@qq.com"},"version": "1.0.0"},"servers": [{"url": "http://mingyue-gateway:9100/sms"}],"paths": {"/sms/code": {"get": {"tags": ["短信服务模块"],"summary": "短信验证码","operationId": "smsCaptcha","parameters": [{"name": "phone","in": "query","description": "手机号","required": true,"schema": {"type": "string"}}],"responses": {"200": {"description": "OK","content": {"*/*": {"schema": {"$ref": "#/components/schemas/RVoid"}}}}}}}},"components": {"schemas": {"RVoid": {"type": "object","properties": {"code": {"type": "integer","format": "int32"},"msg": {"type": "string"},"data": {"type": "object"}},"description": "响应信息主体"}},"securitySchemes": {"apiKey": {"type": "apiKey","name": "Authorization","in": "header"}}}
}
小结
短信服务模块已经添加完成,后续将依次接入阿里云与腾讯云的短信服务,等接入短信服务后实现发送短信验证码登录!具体流程如下图:
相关文章:

021-从零搭建微服务-短信服务(一)
写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…...

基于jenkins自动化部署PHP环境
实验环境 操作系统 IP地址 主机名 角色 CentOS7.5 192.168.147.141 git git服务器 CentOS7.5 192.168.147.142 Jenkins git客户端 jenkins服务器 CentOS7.5 192.168.147.143 web web服务器 具体环境配置见上一篇! 准备git仓库 [rootgit ~]# su -…...

数据库表结构导出为word、html、markdown【转载,已解决,已验证,开源】
注:本文为gitcode代码验证,转载gitcode gitcode:https://gitcode.net/mirrors/pingfangushi/screw?utm_sourcecsdn_github_accelerator 整理数据库文档:https://mp.weixin.qq.com/s/Bo_U5_cl82hfQ6GmRs2vtA <!--数据库文档核…...

【计算机视觉|生成对抗】用于高保真自然图像合成的大规模GAN训练用于高保真自然图像合成的大规模GAN训练(BigGAN)
本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Large Scale GAN Training for High Fidelity Natural Image Synthesis 链接:[1809.11096] Large Scale GAN Training for High Fidelity Natural Image Synthesis (arxiv.org…...

三维重建_体素重建_空间雕刻法/体素着色法
目录 1. 三角化和体素重建的区别 2. 空间雕刻法 空间雕刻法的一致性定义 空间雕刻法具体实现 基于八叉树的空间雕刻法具体实现编辑 空间雕刻法效果展示 3. 体素着色法 体素着色法的缺点:不唯一性编辑 体素着色法不唯一性解决措施编辑 体素着色发实验环境与…...
4-redis哨兵搭建安装
1.先决条件 1.1.OS基础配置 CentOS为了能够正常安装redis,需要对CentOS进行常规的一些基础配置,主要有:关闭防火墙与selinux,设置主机名,配置虚拟机IP地址使其能够与外网ping通,配置IP地址与主机名映射,配置yum源。具体配置参见: Linux常规基础配置_小黑要上天的博客…...

架构评估-架构师之路(十二)
软件系统质量属性 软件系统质量熟悉分为 开发期质量属性 和 运行期质量属性。 质量属性 性能:指 系统的响应能力,如 响应时间,吞吐率。 设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度。 可靠…...

手写模拟SpringBoot核心流程(二):实现Tomcat和Jetty的切换
实现Tomcat和Jetty的切换 前言 上一篇文章我们聊到,SpringBoot中内置了web服务器,包括Tomcat、Jetty,并且实现了SpringBoot启动Tomcat的流程。 那么SpringBoot怎样自动切换成Jetty服务器呢? 接下来我们继续学习如何实现Tomcat…...

Python土力学与基础工程计算.PDF-土的三项组成
5.3 Python求解 Python 求解代码如下: 1. # 定义已知参数 2. G_s 2.7 # 比重 3. w 0.2 # 含水量 4. e 0.6 # 孔隙比 5. gamma_w 9.81 # 水的重度 6. 7. # 根据公式计算饱和度 8. S_r G_s * w / e 9. print("饱和度为", S_r) 10. 11.…...
危化安全生产信息化平台在煤化领域的应用
一、背景介绍 煤化工行业是一个集煤炭、石油、化工等多种产业于一体的综合性行业,其特点是工艺流程复杂、设备繁多、安全隐患大。近年来,随着煤化工行业的快速发展,安全生产问题日益凸显。为了有效提高危化安全生产水平,某煤化工…...
Linux(CentOS)运维脚本工具集合
使用说明 备份指定目录 # 备份指定目录文件到指定目录,备份文件名称为:备份目录最后一层目录"_"日期.tar.gz # 第一个参数:backdir 第二参数:备份文件保存目录 第三个参数:备份目录/文件 sh script.sh backdir /root/…...

【Java alibabahutool】JSON、Map、实体对象间的相互转换
首先要知道三者的互转关系,可以先将JSON理解成是String类型。这篇博文主要是记录阿里巴巴的JSONObject的两个方法。toJSONString()以及parseObject()方法。顺便巩固Map与实体对象的转换技巧。 引入依赖 <!-- 阿里巴巴 JSON转换 以下二选一即可 没有去细研究两者…...

按软件开发阶段的角度划分:单元测试、集成测试、系统测试、验收测试
1.单元测试(Unit Testing) 单元测试,又称模块测试。对软件的组成单位进行测试,其目的是检验软件基本组成单位的正确性。测试的对象是软件里测试的最小单位:模块。 测试阶段:编码后或者编码前(…...

【python】Leetcode(primer-dict-list)
文章目录 260. 只出现一次的数字 III(字典 / 位运算)136. 只出现一次的数字(字典)137. 只出现一次的数字 II(字典)169. 求众数(字典)229. 求众数 II(字典)200…...

网络安全(黑客)入门
想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全…...

在CSS中,盒模型中的padding、border、margin是什么意思?
在CSS中,盒模型(Box Model)是用来描述和布局HTML元素的基本概念。它将每个HTML元素看作是一个矩形的盒子,这个盒子包括了内容(content)、内边距(padding)、边框(border&a…...

有线耳机插入电脑没声音
有线耳机插入电脑没声音 首先确保耳机和电脑都没问题,那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。...

【面试 反思】Retrofit源码与设计 7 连问
前言 在实际项目中往往是使用Retrofit来做网络请求工作。Retrofit采用RESTful风格,本质上只是对OkHttp进行封装,今天我们根据几个问题来进一步学习一下Retrofit的源码与设计思想。 1. 使用方法 直接看一下官方介绍的使用方法。 public final class S…...

flutter 雷达图
通过CustomPainter自定义雷达图 效果如下 主要代码 import package:flutter/material.dart; import dart:math; import dash_painter.dart; import model/charts_model.dart;class RadarChart extends StatelessWidget {final List<ChartModel> list;final double maxV…...
机器学习之损失函数(Loss Function)
损失函数(Loss Function)是机器学习和深度学习中的关键概念,它用于衡量模型的预测与实际目标之间的差异或误差。损失函数的选择对于模型的训练和性能评估至关重要,不同的任务和问题通常需要不同的损失函数。 以下是一些常见的损失…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...

npm安装electron下载太慢,导致报错
npm安装electron下载太慢,导致报错 背景 想学习electron框架做个桌面应用,卡在了安装依赖(无语了)。。。一开始以为node版本或者npm版本太低问题,调整版本后还是报错。偶尔执行install命令后,可以开始下载…...