范式

转并修改:编程范式(Programming Paradigm)

荒凉一梦 提交于 2019-11-26 16:32:49
编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式。随着编程方法学和软件工程研究的深入,特别是OO思想的普及,范式(Paradigm)以及编程范式等术语渐渐出现在人们面前。面向对象编程(OOP)常常被誉为是一种革命性的思想,正因为它不同于其他的各种编程范式。编程范式也许是学习任何一门编程语言时要理解的最重要的术语。 托马斯.库恩提出“科学的革命”的范式论之后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词。编程范式一般包括三个方面,以OOP为例: 1.学科的逻辑体系——规则范式:如类/对象、继承、动态绑定、方法改写、对象替换等等机制。 2.心理认知因素——心理范式:按照面向对象编程之父Alan Kay的观点,“计算就是模拟”。OO范式极其重视隐喻(metaphor)的价值,通过拟人化,按照自然的方式模拟自然。 3.自然观/世界观——观念范式:强调程序的组织技术,视程序为松散耦合的对象/类的集合,以继承机制将类组织成一个层次结构,把程序运行视为相互服务的对象们之间的对话。 简单的说,编程范式是程序员看待程序应该具有的观点。 为了进一步加深对编程范式的认识,这里介绍几种最常见的编程范式。 需要再次提醒注意的是:编程范式是编程语言的一种分类方式,它并不针对某种编程语言。就编程语言而言

mysql常见面试题

白昼怎懂夜的黑 提交于 2019-11-26 11:51:29
[SELECT *] 和[SELECT 全部字段]的 2 种写法有何优缺点? 1. 前者要解析数据字典,后者不需要 2. 结果输出顺序,前者与建表列顺序相同,后者按指定字段顺序。 3. 表字段改名,前者不需要修改,后者需要改 4. 后者可以建立索引进行优化,前者无法优化 5. 后者的可读性比前者要高所以, 尽量使用后者来查询 若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值为多少? 由于 utf8 的每个字符最多占用 3 个字节。而 MySQL 定义行的长度不能超过65535(text和blob不计算在内), 因此 N 的最大值计算方法为:(65535-1-2)/3。 减去 1 的原因是实际存储从第二个字节开始,减去 2 的原因是因为要在列表长度存储实际的字符长度(长度大于256用两个字节存储),除以 3 是因为 utf8 限制:每个字符最多占用 3 个字节。 MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的? InnoDB 行锁是通过给索引上的索引项加锁来实现的,这一点 MySQL 与Oracle 不同,后者是通过在数据块中对相应数据行加锁来实现的。 InnoDB 这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB 才使用行级锁,否则,InnoDB 将使用表锁 mysql 中 myisam 与 innodb

三、Mysql范式与反范式

為{幸葍}努か 提交于 2019-11-25 22:57:31
Mysql范式与反范式 一、三大范式 第一范式 1NF是对属性的 原子性 ,要求属性具有原子性,不可再分解; 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。简而言之,第一范式就是无重复的域。 第二范式 2NF是对记录的 惟一性 ,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖; 满足第二范式必须先满足第一范式。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。 第三范式 3NF是对字段的 冗余性 ,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖; 首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。 范式的利弊