1.OSI 7层网络模型
物理层(Physical Layer): 负责在物理媒介上传输比特流。关键协议:Ethernet、WiFi、Bluetooth等。
数据链路层(Data Link Layer): 提供有点对点的数据传输,通过校验和错误纠正来检测和纠正传输中的错误。关键协议:Ethernet、PPP(Point-to-Point Protocol)等。
网络层(Network Layer): 处理网络层地址和路由选择,以便数据能够从源点传输到目标点。关键协议:IP(Internet Protocol)、ICMP(Internet Control Message Protocol)、OSPF(Open Shortest Path First)等。
传输层(Transport Layer): 负责可靠地传输数据,提供端到端的数据传输服务。关键协议:TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等。
会话层(Session Layer): 建立、管理和终止会话连接,允许通信双方在数据传输中建立对话。关键协议:NetBIOS(Network Basic Input/Output System)等。
表示层(Presentation Layer): 处理数据的表示方式,包括数据加密、数据压缩和数据格式转换等。关键协议:ASCII码、JPEG(Joint Photographic Experts Group)等。
应用层(Application Layer): 提供基于网络的服务,如电子邮件、远程登录和文件传输等。关键协议:HTTP(Hypertext Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)、FTP(File Transfer Protocol)等。
2.Redis 支持的存储数据类型
字符串(String):存储一个字符串值。可以对整个字符串或字符串的一部分执行操作,例如获取、设置、追加等。
列表(List):按照插入顺序存储一个有序的字符串元素集合。可以在列表的两端进行插入、删除和访问操作。
集合(Set):存储一组唯一的、无序的字符串元素。可以执行集合的交集、并集、差集等计算操作。
有序集合(Sorted Set):与集合类似,但每个元素都关联了一个分数(score),根据分数的大小进行排序。可用于存储排行榜、优先级队列等场景。
哈希表(Hash):存储键值对的无序散列表。可以对单个字段或整个哈希表执行操作,例如获取、设置、删除等。
位图(Bitmap):使用二进制位来存储和操作数据。可以进行按位的逻辑操作,如与、或、非等。
地理空间索引(Geospatial Index):存储地理位置坐标的数据类型。可以进行地理位置的查询和计算。
3.restful api 设计中的幂等性操作
幂等操作指的是对同一资源的多次请求产生的最终结果是一致的。简单来说,无论对一个资源进行多少次相同的操作,所产生的影响都应该是相同的。
使用恰当的HTTP方法:使用符合语义的HTTP方法来表示操作的类型。
GET方法通常用于获取资源,且应该是幂等的。
POST方法通常用于创建新资源,不是幂等的。
PUT方法通常用于更新或替换资源,应该是幂等的。
DELETE方法用于删除资源,通常也应该是幂等的。
提供带有唯一标识的资源路径:为每个资源提供唯一的标识URI,并使用一致的URL结构,以便客户端进行操作。
避免使用动词作为资源路径:资源路径应该是名词,而不是动词。使用HTTP方法来表示操作类型,而不是依赖URL来区分操作。
提供适当的状态码和响应:使用适当的HTTP状态码来表示操作的结果。例如,成功的GET请求可以返回状态码200,成功的DELETE请求可以返回状态码204,等等。
忽略重复操作:服务器应该能够忽略重复的操作请求,对于已经执行过的操作,不应该对其产生副作用。
使用乐观锁定或版本控制:在更新资源时,使用乐观锁定或版本控制机制来确保没有竞态条件发生。
记录操作日志:对于每个幂等操作,记录操作日志,以便在发生错误或冲突时进行追踪和故障排查
4.python 中的序列化和反序列化
4.在Python中,序列化(Serialization)是将对象转换为可存储或传输的格式,而反序列化(Deserialization)则是将序列化后的数据重新转换为对象。Python提供了几种常用的序列化和反序列化的方法:
JSON:使用json模块进行序列化和反序列化。它提供了json.dumps()函数用于将对象转换为JSON字符串,以及json.loads()函数用于将JSON字符串转换为对象。
pickle:使用pickle模块进行序列化和反序列化。它可以将对象序列化为字节流,以及从字节流反序列化为对象。