目录
推送模块
1.表
1.1 表字段
服务配置表:三方服务名称,api接口认证信息,域名等
推送记录表:有效期,接收方id,发送方id,模板id,消息,发送类型,时间等
消息模板表:用户id,模板内容,待填充字段。
1.2 字段类型
varchar
datetime
int
1.3 索引
1.4 关联查询
陈小吨的博客_CSDN博客-Java八股文专栏,Java知识,Linux命令领域博主
2.参数的含义
{
"expirationDate": 有效期-时间戳,
"sendId":"发送方id",
}
有效期,接收方id,发送方id,模板id,消息,发送类型,时间
3.以技术流的维度讲业务逻辑
4.redis
4.1基础知识
5.设计模式
5.1策略模式
5.2工厂模式
6.遇到的问题
6.1稳定性
7.锁
即时通讯模块
1.表
1.1 表字段
会话连接表:用户id,服务器id ,创建时间,更新时间
会话表:发送方id,接收方id ,创建时间,更新时间
会话记录表:通讯内容,发送方id,接收方id,发送时间,删除者id
1.2 字段类型
varchar
datetime
1.3 索引
1.4 关联查询
2.参数的含义
{
"receiverId":"" //接收方id
"msg":"内容" //发送的消息
}
3.以技术流的维度讲业务逻辑
4.WebSocket
5.http
http与https 的区别
HTTP协议以明文方式发送内容,不提供任何方式的数据加密。HTTP协议不适合传输一些敏感信息
https则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
https协议需要到ca申请证书。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
6.map数据结构
7.核载(消息格式)
{
"receiverId":"" //接收方id
"msg":"内容" //发送的消息
}
8.如何支持的分布式
9.用户的状态管理
用户状态 true 是在线 false是离线
10.session与cookie
cookie / session的区别
存储位置不同:session 存储在服务器端;cookie 存储在浏览器端。
安全性不同:cookie 安全性一般,在浏览器存储,可以被伪造和修改。
容量和个数限制:cookie 有容量限制,每个站点下的 cookie 也有个数限制。
存储的多样性:session 可以存储在 Redis 中、数据库中、应用程序中;而 cookie 只能存储在浏览器中。
11.request与response
12.遇到的问题
Java实现短信推送可以调用以下一些常用的第三方短信接口:
1. Twilio:Twilio是一个流行的短信服务提供商,它提供了简单易用的REST API,可以通过Java代码发送短信。
2. Alibaba Cloud SMS:阿里云短信服务是一个全球领先的短信推送服务提供商,它提供了Java SDK,可以通过阿里云的API发送短信。
3. Tencent Cloud SMS:腾讯云短信服务是腾讯云提供的一项短信发送服务,也提供了Java SDK,可以通过腾讯云的API发送短信。
4. SendGrid:SendGrid是一个综合性的电子邮件和短信服务提供商,它提供了Java库和API,可用于发送短信。
5. Nexmo:Nexmo是一个全球性的通讯服务提供商,它提供了简单的REST API,可用于通过Java发送短信。
13.kafka
文件材料管理
1.表
1.1 表字段
文件表:文件名,文件大小,存储路径,上传时间,上传人
模板文件表:文件名,文件大小,待填充的字段,存储路径,上传时间,上传人
1.2 字段类型
varchar
datetime
1.3 索引
1.4 关联查询
2.参数的含义
上传接口
file 文件
name 文件名
下载接口
id 文件id
name 文件名
生成接口
id 模板文件id
fillMap 需要填充的文件内容
3.以技术流的维度讲业务逻辑
4.流的知识点
5.minio
MinIO是一个开源的云存储服务器,它提供了高性能和可扩展的对象存储服务。与传统的文件系统不同,MinIO以对象的形式存储数据,并通过HTTP协议提供访问接口。它被设计用于构建私有云存储、分布式存储和大规模数据存储等场景。
以下是MinIO的一些关键特点和功能:
1. 高性能:MinIO具有出色的性能表现,可以轻松处理大规模数据的存储和检索。它采用了多线程、异步I/O和高速缓存等技术,实现了快速的数据传输和低延迟的访问。
2. 可扩展性:MinIO可以在多个节点上进行分布式部署,通过水平扩展来提供更高的存储容量和吞吐量。它支持容器化部署,并与Kubernetes等容器编排平台紧密集成。
3. 安全性:MinIO提供了多种安全性功能,包括数据加密、访问控制和身份验证。它支持SSL/TLS加密传输,并可与LDAP、Active Directory等身份验证系统集成。
4. 对象存储:MinIO以对象的方式存储数据,每个对象都有一个唯一的键(key)和元数据。它支持常见的对象操作,如上传、下载、复制、删除和查询。
5. 高可用性:MinIO采用分布式架构,支持数据的冗余备份和故障转移。它可以自动地将数据复制到多个节点上,以提供高可用性和数据的持久性。
6. 兼容性:MinIO兼容Amazon S3 API,可以与现有的S3客户端和应用程序进行无缝集成。这使得迁移和集成现有的S3应用变得简单和方便。
7. 简单易用:MinIO的部署和配置非常简单,它提供了用户友好的管理界面和命令行工具,使用户可以轻松管理和监控存储集群。
6.@Validated校验
7.断点上传,分片上传
MinIO实现断点上传的逻辑可以通过以下步骤来实现:
1. 初始化分片上传:
首先,使用MinIO的`initiateMultipartUpload`方法初始化一个分片上传操作。这将返回一个唯一的`uploadId`,用于标识当前的分片上传任务。
2. 上传分片:
将要上传的文件切割成多个固定大小的分片,然后使用`uploadPart`方法将每个分片上传到MinIO服务器。每个分片都有一个分片编号(partNumber),并且需要指定分片的大小。
3. 记录已上传的分片信息:
在每次成功上传一个分片后,应该记录已上传的分片编号和对应的ETag(分片的校验码)。可以将这些信息存储在数据库或其他持久化存储中,以便在断点续传时使用。
4. 完成分片上传:
当所有分片都上传完成后,使用`completeMultipartUpload`方法来通知MinIO服务器合并这些分片,并将它们合并为最终的完整对象。在此方法中,需要提供之前获取的`uploadId`和每个分片的编号和ETag。
5. 中断和续传处理:
如果上传过程中发生中断,可以记录已上传的分片信息。下次继续上传时,需要首先获取之前上传的分片信息,并根据这些信息进行断点续传。可以使用`listParts`方法来获取已上传的分片信息,然后根据记录的分片编号,继续上传未完成的分片。