首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

彻底搞懂数据库设计三范式

数据库设计三范式 20.1、第一范式 数据库表不能出现重复记录,每个字段是原子性不能再分 不符合第一范式示例 学生编号 学生姓名 联系方式 1001 张三 zs@gmail.com,1359999999...联系方式字段可以再分,不是原子性 学生编号(pk) 学生姓名 email 联系电话 1001 张三 zs@gmail.com 1359999999 1002 李四 ls@gmail.com...,学生姓名部分依赖了主键一个字段学生编号,而没有依赖教师编号,而教师姓名部门依赖了主键一个字段教师编号,这就是第二范式部分依赖。...,部分依赖和主键有关系 以上是一种典型设计 20.3、第三范式 建立在第二范式基础上,非主键字段不能传递依赖于主键字段。...01 一年一班 02 一年二班 03 一年三班 以上设计是一种典型一对设计,一存储在一张表存储在一张表,在那张表添加外键指向一一方主键 20.4、三范式总结 第一范式

68730

Python 自动化指南(繁琐工作自动化)第二版:十八、发送电子邮件和短信

模块 IMAP 服务器下载格式相当复杂电子邮件。最有可能是,您希望将它们从这种格式转换成简单字符串值。pyzmail模块您完成解析这些电子邮件消息艰巨工作。...获取邮件并标记为已读 一旦有了 UID 列表,就可以调用IMAPClient对象fetch()方法来获取实际电子邮件内容。 uid 列表将是fetch()第一个参数。...如你所见,'BODY[]'键信息内容非常难以理解。它是一种叫做 RFC 822 格式,是 IMAP 服务器设计。...原始消息获取正文 电子邮件可以以纯文本、HTML 或两者兼有的形式发送。纯文本电子邮件只包含文本,而 HTML 电子邮件可以有颜色、字体、图像和其他功能,使电子邮件看起来像一个小网页。...用 Twilio 发送短信 在本节,您将了解如何注册免费 Twilio 服务,并使用其 Python 模块发送文本消息。Twilio 是短信网关服务,这意味着它允许你通过互联网程序发送短信。

11.1K40
您找到你想要的搜索结果了吗?
是的
没有找到

runtime官方文档翻译版本通过OC源代码通过NSObject定义方法直接调用运行时函数消息传递机制使用隐藏参数获取方法地址动态方法解析动态加载消息转发转发和继承代理对象转发和继承类型编码声

其中包括在OC讨论类和协议对象定义,以及源代码中提取出来方法选择器,实例模板和其他信息。运行时主要功能就是传递消息,正如消息传递中所描述那样。它通过源代码消息表达式来来调用。...所有的功能都记录在Objective-C Runtime Reference.消息传递机制 这一部分描述了如何消息表达式转换成objc_msgSend函数调用,怎样通过名字找到方法。...可以在Foudation框架引用查找NSBulde详细说明和它如何让使用。...所有类型返回值都可以传递给发送者,包括id类型,结构体,单精度和双精度浮点数。 forwardInvocation:像一个无法识别消息工作分配中心,把他们打包到不同接收器。...其他类型代理对象也可能。例如,假设你有一个对象,操纵大量数据,也许它创建了一个复杂图像或读取磁盘上文件内容

1.5K70

分布式系统一致性和共识基础(一)

简单可以理解逻辑时钟,所有处理器视角,和自身处理器视角看写操作执行顺序是应当一致。 这个逻辑时钟论文Leslie Lamport发表于1978年, 不得不感慨美国学术基础。...分区容忍性: 系统在消息网络或某些节点出错时候仍能提供服务。 现实不同系统对于CAP都有不同需要。...Paxon文明被外部入侵摧毁,考古学家只是恢复了Paxon议会协议部分内容。...可以保证信使不篡改消息,但是他们可能会忘记曾经传递过消息,可能会重传。和议员一样,信使只在部分时间完成他们工作。...(2) 如果一个acceptor收到提案编号为naccept请求,它将接受这个请求,如果它已经响应过编号大于nprepare请求则不接受。 Learner学习者如何得知通过决议呢?

67110

Self Host模式下ASP. NET Web API是如何进行请求监听与处理

是一个定义在程序集“System.Web.Http.SelfHost.dll”内部类型),它最终会创建一个MessageEncoder对象完成针对消息编码/解码工作。...如果指定参数值True,方法执行之后被封装HttpRequestMessage/HttpResponseMessage对象会HttpMessage对象抽取出来,所以再次调用它们会返回Null。...通过上面的介绍我们知道这个接收到消息实际上是一个HttpMessage对象,由于这是一个内部类型,所以我们只能以反射方式调用其GetHttpRequestMessage方法获取被封装HttpRequestMessage...现在我们通过浏览器对这个监听器发起请求,为了使请求更像一个针对Web API调用,我们将请求地址设置“http://127.0.0.1:3721/employees/001”(看起来好像是获取某个编号为...该属性类型System.ServiceModel.TransferMode枚举,用以控制针对请求消息和响应消息传输模式。在默认情况下,请求消息和响应消息均以Buffered模式进行传输。

1.7K60

如何设计出优美的Web API?

在分批次获取数据过程,数据集合记录可能发生增删改变,我们需要注意采用相对位置或绝对位置所带来不同效果。 风格1:http://api.example.com/friends?...如果我们期望查询结果特定属性取值跟过滤参数取值完全相同,那过滤参数名称通常属性名;如果我们期望查询结果任意属性部分包含过滤参数取值,那过滤参数名称通常“q”。...GET /v1/users/123 HTTP/1.1 Host: api.example.com GET,获取资源 POST,新增资源 PUT,更新已有资源 DELETE,删除资源 PATCH,更新部分资源...HTTP协议定了了五种类型状态码: 1XX:消息 2XX:成功 3XX:重定向 4XX:客户端原因引起错误 5XX:服务器端原因引起错误 我们需要每种状态码使用场景,确保正确使用状态码。...,增加次版本编号; 如果软件API没有发生变更,只是修正了部分bug,则增加补丁版本编号

61571

IO 2024大会上我们宣布100件事情

无论你对最新 Gemini 应用更新感兴趣,对开发者即将推出内容感到特别兴奋,还是迫不及待想尝试最新生成式 AI 工具,这里几乎每个人都提供了一些内容。不信?...您将能够使用 Gmail 侧边栏对电子邮件进行摘要,以获取最重要详细信息和行动项目。...除了摘要之外,Gmail 移动应用程序很快将使用 Gemini 提供另外两个新功能:上下文智能回复和 Gmail 问答。在未来几周内,Gmail 和文档“帮助我写”将支持西班牙语和葡萄牙语。...如果您拥有 Gemini 高级订阅,您还可以选择 “询问此 PDF” 以快速获取答案,而无需滚动页。...我们将在 Google Messages 日本用户带来更新消息体验,支持 RCS。不久之后,在美国,您将能够创建仅包含文本数字通行证。

14810

Web 数据传输方式

部分浏览器会 URL 超长截断。 同时他支持也非常友好,几乎各大浏览器厂商支持率都非常高。是异步获取数据不二之选。...': 'text/plain', }); console.log('data', data); 复制代码 fetch 第一个参数代表请求url; 第二个参数代表配置项,可配置请求方法、响应内容类型等...包括修改网页内容,重定向到其他网站等。因此引入外部来源代码时要多加小心。 Multipart XHR Multipart XHR 允许客户端用一个 HTTP 请求,就可以服务器传输多个资源。...这是给服务器传消息最有效方式,因为性能消耗很小,而且服务端出错完全不会影响客户端。 不过因为这种方式很简单,意味着做事情也是有限。...形态上很容易判断出,他们传输速度排序如下: 自定义格式 > JSON > XML > HTML 复制代码 通用性如下: JSON > XML > HTML > 自定义格式 复制代码 JSON 类型在通用和传输速度上都有着不错表现

1.1K00

MySQL入门学习笔记(下)

第六:存储过程可以在单个存储过程执行一系列SQL语句。 第七:存储过程可以自己存储过程内引用其它存储过程,这可以简化一系列复杂语句。...十三、数据库漏洞 (一)SQL注入以及如何防范 SQL 注入(SQL Injection)是发生在 Web 程序数据库层安全漏洞,是网站存在最多也是最简单漏洞。...过滤输入内容,校验字符串 过滤输入内容就是在数据提交到数据库之前,就把用户输入不合法字符剔除掉。可以使用编程语言提供处理函数或自己处理函数来进行过滤,还可以使用正则表达式匹配安全字符串。...c4 在使用参数化查询情况下,数据库服务器不会将参数内容视为 SQL 语句部分来进行处理,而是在数据库完成 SQL 语句编译之后,才套用参数运行。...限制数据库权限和特权 将数据库用户功能设置最低要求;这将限制攻击者在设法获取访问权限时可以执行操作。 4. 避免直接向用户显示数据库错误 攻击者可以使用这些错误消息获取有关数据库信息。

1.1K20

《基于实践,设计一个百万级别的高可用 & 高可靠 IM 消息系统》

项目背景 我们仔细观察就能发现,生活任何类型互联网服务都有 IM 系统存在,比如: 基础性服务类-腾讯新闻(评论消息) 商务应用类-钉钉(审批工作流通知) 交流娱乐类-QQ/微信(私聊群聊 &讨论组...实现方案 工作日常 在前公司工作,有两年时间都在维护迭代公司 IM 消息系统: 业务闭环(消息如何写入存储,消息如何消费掉,在线消息如何实现,离线消息如何实现,群聊/私聊有何不一样,...由于篇幅所限,这部分内容可以参考原文第七节:https://xie.infoq.cn/article/4061081a5ce66137a8c021994。...成果展示 由于篇幅所限,这部分内容可以参考原文第八节:https://xie.infoq.cn/article/4061081a5ce66137a8c021994。...《IM群聊消息究竟是存1份(即扩散读)还是存份(即扩散写)?》 总结 两年前架构师手上接过来 IM 消息系统模块,让我逐步培养了架构思维,见贤思齐,感谢恩师。

1.6K42

业界 | 谷歌版“剑桥分析事件”上演,华尔街日报发文谴责,谷歌长文回应

具体原因,我们可以谷歌一份内部备忘录窥得:“这将导致我们和Facebook一样成为聚光灯,甚至取代Facebook,尽管在整个剑桥分析丑闻,我们一直没有受到关注”。...谷歌担心是对,在接下来日子,我们可以想象到,谷歌会淹没在翻天覆地审查,会有越来越多呼声针对它,以及会不断在国会作证。 华尔街日报披露消息之后,谷歌回应。...这不包括你发布或连接在Google+或任何其他服务任何其他数据,例如Google+信息,消息,Google帐户数据,电话号码或G Suite内容。 我们在2018年3月发现并立即修补了此错误。...行动3:我们开始限制允许用例类型。 我们正在更新针对消费者版本Gmail API用户数据政策,以限制可能获得访问消费者版Gmail数据权限应用。...未来几个月内,我们将会 Android Contacts API 移除这个对通话记录数据访问权限。

1.1K50

第三方开发者可以访问Gmail邮件?Google回应

Google电子邮件平台Gmail访问设置允许用户选择与第三方开发者共享数据,其中包括用户个人内容和详细信息。...此外,第三方应用也可以通过插件访问Gmail以及几乎其他任何电子邮件平台,以非常宽泛范围(消息内容和位置到相机和麦克风访问)请求用户个人信息。...正如去年报道所指出那样:“谷歌不会停止推广有针对性广告,它只是搜索记录,YouTube观看习惯,Android手机以及每次使用任何其他Google服务时获取信息。...值得注意是,Return Path和Edison这两家公司都告诉华尔街日报他们做法已经在用户协议涵盖;同样,如果未获得同意,则会违反Google自己开发者协议,该协议要求用户在通过API获取“非公开内容...如何检查第三方Gmail收件箱或删除第三方应用访问权限 如果你觉得是时候审核所有可以访问Gmail收件箱第三方应用,或者发现其中任何一个不值得信任或不必要,则可以撤销访问权限,因为你电子邮件数据比任何其他社交媒体平台上数据更敏感

1.8K20

【基本功】 前端安全系列之二:如何防止CSRF攻击?

因此我们使用Referer链接Origin部分可以得知请求来源域名。...这种方法要比之前检查Referer或者Origin要安全一些,Token可以在产生并放于Session之中,然后在每次请求时把TokenSession拿出,与请求Token进行比对,但这种方法比较麻烦在于如何把...由于任何跨域都会导致前端无法获取Cookie字段(包括子域名之间),于是发生了如下情况: 如果用户访问网站www.a.com,而后端api域名为api.a.com。...但对其他情况,那么如何防止自己网站被利用成为攻击源头呢? 严格管理所有的上传接口,防止任何预期之外上传内容(例如HTML)。...GET类型请求HeaderMIME类型大概率图片,而实际返回HeaderMIME类型Text、JSON、HTML。

1.6K20

SAE J1939 协议简介(二)

这样可以很容易地添加新参数,并确保与只定义了部分数据域旧版本兼容。...长度 9 字节到 1785 字节数据 如果一个给定参数组数据长度 9 至 1785 字节时,数据通信是通过多个 CAN 数据帧实现。因此,用“包“来描述这种类型参数组编号。...如果参数组定义包,在少数特定场合只传输少于 9 字节数据时,参数组以单帧 CAN 数据帧发送,其中 DLC 置 8。如果某特定参数组传输 9 字节或者更多字节,将使用“传输协议功能”。...另外,传输协议功能还提供了对于目标地址特定传输流控制和握手功能。所有与特定包应答相关 CAN 数据帧必须置 DLC 8。...SAE J1939 消息类型: J1939 消息类型总共有 命令,请求,确认/响应,组功能 了解了数据链路层结构后,那么在应用,是如何解析一个参数呢?

3.7K90

Android Binder实现浅析-Binder驱动

驱动读取消息(无消息被阻塞) 读取到消息之后处理消息 不断循环,永不退出 SM处理消息类型有: 注册Binder实体对象 查询Binder实体对象,以引用编号形式放回给查询进程 注册Binder...实体信息到SM时候,请求数据需要写到Binder实体描述信息,之后进行查询时候就是根据描述信息来获取到对应Binder应用编号。...Binder在驱动表述 驱动,是Binder架构在最核心部分,驱动需要做事情很多 所有Server端Binder实体,需要在驱动中注册 Client端获取Binder时,需要为Client创建...改结构体存储主要数据: Binder实体在驱动结构体引用 Binder实体在驱动引用号(编号) Binder引用在进程链表节点(以编号以及实体地址索引两个链表节点) 说明:每个Client...既然使用是同一个结构体,那么这个结构体应该有的内容: Binder类型(实体,引用) Binder实体内存地址(类型实体时用) Binder应用编号类型引用时用) 其中Binder类型有以下几种

87810

谨防新型跟踪恶意软件:Monitor Minor

该跟踪软件作者利用了SuperUser类型应用程序(SU实用程序)具备对系统root访问权限,社交网络和即时消息程序中提取消息历史记录。...在“干净”Android操作系统,沙箱阻止了应用程序之间直接通信,因此跟踪软件无法简单地打开并获取WhatsApp访问权限。这种访问模型称为DAC(自由访问控制)。...通过运行SU实用程序提权后,该恶意软件就可以完全访问这些应用程序数据: LINE:免费电话和短信 Gmail邮箱 Zalo:视频通话 Instagram Facebook Kik Hangouts...恶意软件实施持久性机制非常有效,并利用了root访问权限。跟踪软件将系统分区只读重新安装到读/写模式,然后将自身复制到该分区,用户分区删除自己,然后将其重新安装回只读模式。...此外,还有使用SMS命令控制设备、查看设备摄像头中实时视频、记录设备麦克风声音、在Chrome查看浏览历史记录、查看某些应用使用情况统计信息、查看设备内部存储内容、查看联系人列表、查看系统日志等诸多功能

86220

Linux进程间通信【消息队列、信号量】

,同时也会消息队列捕获其他进程数据块,解析后进行读取,这样就完成了通信 遍历消息队列时,存数据块 还是 取数据块 取决于 数据块类型 type 注意: 消息队列跟共享内存一样,是由操作系统创建...*buf 用于获取或设置所控制消息队列数据结构 简单回顾下参数2部分可传递参数: IPC_RMID 表示删除共享内存 IPC_STAT 用于获取或设置所控制共享内存数据结构 IPC_SET 在进程有足够权限前提下...,既然发送是往队尾添加数据块,那么接收就是 队头中取数据块,假设所取数据块自己发送,那么就不进行操作,其他情况则取出数据块,使用 msgrcv 函数接收信息 #include <sys/types.h...可变参数列表,不止可以获取信号量数据结构,还可以获取其他信息 注意: 参数2 表示信号量集中某个信号量编号 1 开始编号 参数3 可传递动作与共享内存、消息队列一致 参数4 就像 printf...操作系统在进行比较判断时,如何判断类型呢?

32330

在 Swift 编写脚本:Git Hooks

前言 这周,我决定完成因为工作而推迟了一周TODO事项来改进我Git工作流程。 为了在提交时候尽可能携带上下文信息,我们让提交信息包含了正在处理JIRA编号。...我想法是能够git分支获取JIRA编号(我们有一个分支命名约定,形如:story/ISSUE-1234_branch-name),然后将提交消息更改为以JIRA编号为前缀,从而生成最终结果消息:ISSUE...这意味着,为了改变提交消息,我们只需要从文件读取、修改其内容,然后写回调用挂钩文件。 要创建git钩子,我们需要在 .git/hooks 路经下提供一个可执行脚本。...检索提交消息 要做第一件事就是脚本传进来参数检索临时提交文件路径然后读取文件内容。...这是为了不破坏诸如main或其他测试/调查分支工作流。 修改提交信息 为了更改提交消息,必须将脚本开头读取文件内容(包含提交消息)写回同一路径。

1.5K10

云组态笔记--MQTT配置

 终端编号 这里终端你可以简单理解成物联终端, 一个组态工程可能需要 下载到多台物联终端上, 这个编号就是用来区分物联终端, 从而实现精准 定位。...下面就如何实现 数据上报及数据库存储 、 远程写入作详细阐述, 而第三方软件数据对接, 在介绍过程也有做了说明 2.数据上报 物联终端(HMI/CBOX/IPC/SCADA) 工程“...只要数据组被触发上报, 物联终端就会把数据发送到 MQTT 服务器, 互联工具同时会 MQTT 服务器取得这份数据, 并写入数据库, 如果有第三方软件需要通过QTT 获取数据, 则可以模拟互联工具,...3.远程写入 绿色部分, 普通工程发布数据内容和格式已在上面阐述过, MQTT 工程订阅拿到数据后, 会进行解析, 并显示在对应变量图元上。 橙色部分, 即远程写入部分。...“type” 表示 cmd 命令类型, “set_var” 表示修改变量, “payload” 是要修改变量通道标识和要修改值。

1.6K10
领券