精华内容
下载资源
问答
  • 关系型数据库有多少种Working on your next project but not sure which back-end technology to use? For starters, databases come in two flavors: relational and non-relational. Both have their own set of...

    非关系型数据库有多少种

    Working on your next project but not sure which back-end technology to use? For starters, databases come in two flavors: relational and non-relational. Both have their own set of rules, pros and cons which help in determining which type of application they should be used in. Let us delve into these differences so that we would be able to decide which one is better suited for us.

    正在进行下一个项目,但不确定要使用哪种后端技术? 首先,数据库有两种形式:关系型和非关系型。 两者都有自己的一套规则,优缺点有助于确定应使用哪种类型的应用程序。让我们深入研究这些差异,以便我们能够确定哪个更适合我们。

    关系数据库: (Relational Databases:)

    Relational databases store data in the form of tables containing rows (representing entries) and columns (containing a set of information) having a unique key for each row. These keys can either be primary or foreign. It is based on a form of algebraic set theory known as relational algebra, which is used in the relational modeling of data. They are better suited for applications where many transactions are involved, also known as transactions-oriented applications (OLTP).

    关系数据库以表的形式存储数据,该表包含对每一行具有唯一键的行(代表条目)和列(包含一组信息)。 这些键可以是主键,也可以是外键。 它基于一种称为关系代数的代数集理论形式,用于数据的关系建模。 它们更适合涉及许多事务的应用程序,也称为面向事务的应用程序(OLTP)。

    They use SQL (Structured Query Language) as a language for the maintenance and querying of databases. We can use MySQL, SQL Server, SQLite, MS Access, Oracle, Sybase, PostGreSQL, or Informix.

    他们使用SQL(结构化查询语言)作为维护和查询数据库的语言。 我们可以使用MySQL,SQL Server,SQLite,MS Access,Oracle,Sybase,PostGreSQL或Informix。

    They are normalized databases i.e they are in accordance with a series of so-called “normal forms” in order to reduce data redundancy and improve data integrity.

    它们是规范化的数据库,即它们遵循一系列所谓的“规范形式”,以减少数据冗余并提高数据完整性。

    优点: (Advantages:)

    1) They are useful for applications requiring a lot of transactions, complex queries and routine analysis of data

    1)对于需要大量事务,复杂查询和数据常规分析的应用程序很有用

    2) They are robust, simple, structured and flexible.

    2)它们健壮,简单,结构化且灵活。

    3) They ensure reliable data transactions through ACID (Atomity, Consistency, Isolation, Durability).

    3)它们通过ACID(原子性,一致性,隔离性,耐久性)确保可靠的数据交易

    4) Easier to use because of GUI (Graphical User Interface)

    4)由于GUI(图形用户界面)而更易于使用

    缺点: (Disadvantages:)

    1) Their main disadvantage is that it is impossible to horizontally scale them. If our business requirements increase, then we need to move on to bigger systems, making them more costly in the long run.

    1)它们的主要缺点是无法水平缩放它们。 如果我们的业务需求增加,那么我们需要转向更大的系统,从长远来看,使它们的成本更高。

    2) Images and other multimedia files cannot be stored.

    2)无法存储图像和其他多媒体文件。

    3) We cannot use them for geospatial data

    3)我们不能将它们用于地理空间数据

    4) They can cause ORM Impedance Mismatch

    4)它们可能导致ORM阻抗不匹配

    Here is a basic CRUD demo of MySQL using Node.js. You need to install the relevant software before running the examples in the repository.

    使用 Node.js MySQL 的基本CRUD演示 存储库中 运行示例之前,需要安装相关软件

    非关系数据库: (Non-Relational Databases:)

    Non-relational databases, more commonly known as NoSQL, are a form of databases which were created for the purpose of overcoming the shortcomings of SQL based DBMS. They are for data that cannot be modeled on tables of rows and columns.

    非关系数据库(通常称为NoSQL)是一种数据库形式,旨在克服基于SQL的DBMS的缺点。 它们用于无法在行和列的表上建模的数据。

    In a NoSQL database, there are no rules of normalization to follow since the data stored is already denormalized.

    在NoSQL数据库中,没有遵循规范化的规则,因为存储的数据已经被规范化了。

    Using No-SQL, data can be structured using the following:

    使用No-SQL,可以使用以下结构化数据:

    · Graphs — they use graphical structures for organizing data, this makes it easier to traverse between the connected values and relationships.

    ·图形-它们使用图形结构来组织数据,这使得在连接的值和关系之间更容易遍历。

    Examples: Titan, neo4J, OrientDB

    示例:Titan,neo4J,OrientDB

    · Columns — they use keyspaces to contain all the column families

    ·列-它们使用键空间包含所有列族

    Examples: Cassandra, ApacheHBase

    示例:Cassandra,ApacheHBase

    · Key-Value — they use associative arrays as the main data model. The data is in the form of key-value pairs and the key will appear at least once in the collection. We can store any value like strings, integers, JSON structures, or arrays along with a key to reference them.

    ·键值-它们使用关联数组作为主要数据模型。 数据采用键值对的形式,并且键在集合中至少出现一次。 我们可以存储任何值,例如字符串,整数,JSON结构或数组以及引用它们的键。

    Examples: Amazon DynamoDB, Redis

    示例:Amazon DynamoDB,Redis

    · Documents — they are semi-structured data used in document-based DBMS.

    ·文档-它们是基于文档的DBMS中使用的半结构化数据。

    Examples: Couchbase, MongoDB

    示例:Couchbase,MongoDB

    优点: (Advantages:)

    · NoSQL can handle all forms of data; either structured, semi-structured or unstructured

    ·NoSQL可以处理所有形式的数据; 结构化,半结构化或非结构化

    · It is easier to implement horizontal scaling on them

    ·在它们上实现水平缩放更容易

    · Better suited for Big Data and real-time web applications

    ·更适合大数据和实时Web应用程序

    · Faster and more cost-effective

    ·更快,更具成本效益

    缺点: (Disadvantages:)

    · They use a CLI (Command Line Interface) thus are more daunting to use and require greater technical skills

    ·他们使用CLI(命令行界面),因此使用起来更加艰巨,需要更高的技术技能

    · Less support due to their open source nature

    ·由于其开源特性,支持较少

    · Less mature, they are still growing, and many features are still being implemented

    ·不成熟,它们仍在增长,许多功能仍在实施中

    · Lack of consistency with respect to CAP Theorem

    · CAP定理缺乏一致性

    · ACID transactions can only be supported through document-based DBMS but that too is not encouraged

    ·ACID事务只能通过基于文档的DBMS支持,但也不鼓励

    I’ve written some basic CRUD code for MongoDB using Node.js which can be found here.

    我已经 使用Node.js MongoDB 编写了一些基本的CRUD代码 ,可以在 这里 找到

    结论: (Conclusion:)

    Both relational and non-relational databases have their own usages which would be unique to the context in which they are used for. If your application requires data on runtime then non-relational DBMS would be your friend, however if your requirement is more towards the security and robustness side then you better pair up with relational DBMS.

    关系数据库和非关系数据库都有自己的用法,这对于使用它们的上下文来说是唯一的。 如果您的应用程序在运行时需要数据,那么非关系型DBMS会是您的朋友,但是,如果您的需求更侧重于安全性和健壮性,那么最好与关系型DBMS配对。

    翻译自: https://medium.com/swlh/to-relational-or-not-to-relational-ebc9ddbc43a6

    非关系型数据库有多少种

    展开全文
  • MySQL有多少种查询和检索方法?发布时间:2020-05-26 14:20:15来源:亿速云阅读:185作者:鸽子查询背景有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outline,存了一对多关系(保存了多个编码,例如...

    MySQL有多少种查询和检索方法?

    发布时间:2020-05-26 14:20:15

    来源:亿速云

    阅读:185

    作者:鸽子

    查询背景

    有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outline,存了一对多关系(保存了多个编码,例如jy1577683381775)

    我们需要在这10万条数据中检索特定类型的数据,目标总数据量:2931条SELECT COUNT(*) FROM tmp_test_course WHERE `type`=5 AND del=2 AND is_leaf=1

    8f72d99349ad1c98376bf2b6c3d7ba35.png

    我们在限定为上面类型的同时,还得包含下面任意一个编码(也就是OR查询)jy1577683381775

    jy1577683380808

    jy1577683379178

    jy1577683378676

    jy1577683377617

    jy1577683376672

    jy1577683375903

    jy1578385720787

    jy1499916986208

    jy1499917112460

    jy1499917093400

    jy1499917335579

    jy1499917334770

    jy1499917333339

    jy1499917331557

    jy1499917330833

    jy1499917329615

    jy1499917328496

    jy1576922006950

    jy1499916993558

    jy1499916992308

    jy1499917003454

    jy1499917002952

    下面分别列出4种方式查询outline字段,给出相应的查询时间和扫描行数

    一、like查询

    耗时248毫秒SELECT * FROM tmp_test_course

    WHERE `type`=5 AND del=2 AND is_leaf=1

    AND (

    outline like '%jy1577683381775%'

    OR outline like '%jy1577683380808%'

    OR outline like '%jy1577683379178%'

    OR outline like '%jy1577683378676%'

    OR outline like '%jy1577683377617%'

    OR outline like '%jy1577683376672%'

    OR outline like '%jy1577683375903%'

    OR outline like '%jy1578385720787%'

    OR outline like '%jy1499916986208%'

    OR outline like '%jy1499917112460%'

    OR outline like '%jy1499917093400%'

    OR outline like '%jy1499917335579%'

    OR outline like '%jy1499917334770%'

    OR outline like '%jy1499917333339%'

    OR outline like '%jy1499917331557%'

    OR outline like '%jy1499917330833%'

    OR outline like '%jy1499917329615%'

    OR outline like '%jy1499917328496%'

    OR outline like '%jy1576922006950%'

    OR outline like '%jy1499916993558%'

    OR outline like '%jy1499916992308%'

    OR outline like '%jy1499917003454%'

    OR outline like '%jy1499917002952%'

    )

    f9db8de571442df80a7deac49ccd0dd0.png

    EXPLAIN分析结果如下,全表扫描

    ff5ef183675f3790346b3c471f0fc3aa.png

    二、json函数查询

    使用函数JSON_SEARCH,更多函数请查看MySQL官方文档

    可以看到,查询耗时196毫秒,速度稍微快了一点SELECT * FROM tmp_test_course

    WHERE `type`=5 AND del=2 AND is_leaf=1

    AND

    (

    JSON_SEARCH(outline, 'one', 'jy1577683381775') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1577683380808') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1577683379178') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1577683378676') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1577683377617') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1577683376672') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1577683375903') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1578385720787') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499916986208') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917112460') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917093400') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917335579') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917334770') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917333339') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917331557') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917330833') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917329615') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917328496') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1576922006950') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499916993558') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499916992308') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917003454') IS NOT NULL OR

    JSON_SEARCH(outline, 'one', 'jy1499917002952') IS NOT NULL

    )

    1c8affb4aad2bac356f375cf328ba781.png

    EXPLAIN分析结果如下,还是全表扫描

    9ffc3078009e768573686f26d8f5b463.png

    三、联合索引查询

    下面为该表建立一个联合索引(本来想建一个type-del-is_leaf-outline的索引,但是outline字段太长限制,所以只加type-del-is_leaf的联合索引ALTER TABLE tmp_test_course ADD KEY `type-del-is_leaf` (`type`,`del`,`is_leaf`)

    加入索引后再执行like和json查询,明显提速。

    like执行用了136毫秒,json查询用了82.6毫秒,由此可见针对json类型使用json函数查询比like快

    e14995cf1c28b35726a20a226102d119.png

    5ece3fc7ab7e4a7e26a44872ba185a12.png

    EXPLAIN分析结果如下,两者查询扫描的行数都限定在了2931行

    b290c0fbaf5795a76469970b2826b9af.png

    0290eb3fc13705764233e636ce65812d.png

    四、全文索引查询

    因为全文索引只支持CHAR、VARCHAR和TEXT,我们需要把JSON字段定义改一下ALTER TABLE tmp_test_course MODIFY `outline` VARCHAR(1024) NOT NULL DEFAULT '[]'

    添加全文索引ALTER TABLE tmp_test_course ADD FULLTEXT INDEX outline (outline);

    现在再来用全文索引进行检索SELECT * FROM tmp_test_course

    WHERE `type`=5 AND del=2 AND is_leaf=1

    AND

    MATCH(outline) AGAINST ('jy1577683381775 jy1577683380808 jy1577683379178 jy1577683378676 jy1577683377617 jy1577683376672 jy1577683375903 jy1578385720787 jy1499916986208 jy1499917112460 jy1499917093400 jy1499917335579 jy1499917334770 jy1499917333339 jy1499917331557 jy1499917330833 jy1499917329615 jy1499917328496 jy1576922006950 jy1499916993558 jy1499916992308 jy1499917003454 jy1499917002952')

    耗时11.6毫秒,速度提升极其明显,可见全文索引的牛逼。

    becad0cdda394028b262d0d028bf326e.png

    EXPLAIN分析结果如下,显示只扫描了一行

    794fe88054f93c4944dd5ab0ccbe2363.png

    展开全文
  • 在一个集合定义一个等价关系...Bell数没有通项公式,但我们一个递推公式: B(n+1)=C(0,n)B(0)+C(1,n)B(1)+...+C(n,n)B(n),C(k,n)就是在n个数里选k的数的选法个数. 这个很好证明:取第n+1个数,并考虑除了含有它的那...

    在一个集合定义一个等价关系相当于把这个集合划分成许多子集的集.(这里假如不懂请追问)
    于是求等价关系的数目,就是求划分的数目.
    这其实是个定理,这个数叫Bell数.
    Bell数没有通项公式,但我们有一个递推公式:
    B(n+1)=C(0,n)B(0)+C(1,n)B(1)+...+C(n,n)B(n),C(k,n)就是在n个数里选k的数的选法个数.
    这个很好证明:取第n+1个数,并考虑除了含有它的那个部分以外所有其他的部分.含有它的部分的元素个数从1到n+1都有可能,而剩下的数就是从n到0.而每次我们可以挑选剩下来的数,所以就有C(k,n).
    Bell数的前几项是:
    B(0)=1,B(1)=1,B(2)=2,B(3)=5,B(4)=15,B(5)=52,B(6)=203.
    从上面的递推公式我们还可以得到下面的表达式:(Dobinski公式)
    B(n)=(1/e)(1^n/n!+2^n/n!+3^n/n!...)(一直加到正无穷)
    这个其实就是泊松分布的第n个矩.
    这个问题太大了,很难短时间说清楚.

    展开全文
  • MySQL中日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、...其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作必定的关系日志分类学生,这三日志,对理解MySQL中的事务操作...

    50fb75c2a40a99c0af0c17552f6b01aa.png

    MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。

    其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有必定的关系日志分类学生,这三种日志,对理解MySQL中的事务操作有着重要的意义。

    这里简单小结一下这两者具有必定相关性的日志。

    1c562fecfe57b9939d4abfa713bbbd8d.png

    一、重做日志(redo log)

    1、作用

    确保事务的持久性。

    防止在出现故障的时间点,尚有脏页未读入磁盘,在重启mysql服务的之后,根据redo log进行重做,从而超过事务的持久性这一特点。

    2、内容

    物理格式的日志,记录的是物理数据页面的更改的信息,其redo log是排序写入redo log file的物理文件中去的。

    3、什么时候产生

    事务开始以后就产生redo log,redo log的落盘并不是随着事务的提交才写入的,而是在事务的执行过程中,便开始读取redo log文件中。

    4、什么时候释放

    当对应事务的脏页写入到磁盘然后,redo log的使命也就完成了,重做日志占用的空间就可以重用(被覆盖)。

    5、对应的物理文件

    默认状况下,对应的物理文件位于的data目录下的ib_logfile1&ib_logfile2

    innodb_log_group_home_dir 指定日志文件组所在的模式,默认./ ,表示在的数据目录下。

    1-1009-jpg_6_0_______-709-0-0-709.jpg

    innodb_log_files_in_group 指定重做日志文件组中文件的数量,默认2

    关于文件的大小和次数,由一下两个参数配置

    innodb_log_file_size 重做日志文件的大小。

    innodb_mirrored_log_groups 指定了日志镜像文件组的数量,默认1

    6、其他

    很重要一点,redo log是哪个之后写盘的?前面说了是在事物开始以后逐渐写盘的。

    之所以说重做日志是在事务开始以后逐渐写入重做日志文件,而不一定是事务提交才读取重做日志缓存,

    原因就是,重做日志有一个缓存区Innodb_log_buffer,Innodb_log_buffer的默认大小为8M(这里设置的16M),Innodb存储引擎先将重做日志写入innodb_log_buffer中。

    d934f8414b6161b3cbe6e359bdcd487b.png

    然后会借助以上三种方法将innodb日志缓冲区的日志刷新到磁盘

    1,Master Thread 每秒一次执行刷新Innodb_log_buffer到重做日志文件。

    2,每个事务提交时会将重做日志刷新到重做日志文件。

    3,当重做日志缓存可用空间 少于一半时,重做日志缓存被刷新到重做日志文件

    由此可以看出,重做日志通过不止一种方式读取到磁盘,尤其是针对第一种方式,Innodb_log_buffer到重做日志文件是Master Thread线程的定时任务。

    因此重做日志的写盘,并不必定是随着事务的递交才读取重做日志文件的,而是随着事务的起初,逐步开始的。

    另外引用《MySQL技术内幕 Innodb 存储引擎》(page37)上的原话:

    即使某个事务还没有提交,Innodb存储引擎依然每秒会将重做日志缓存刷新到重做日志文件。

    22bd09ad614e1681cf71839e7ee9c84a.png

    这一点是需要要知道的,因为这可以较好地解释再大的事务的提交(commit)的时间也有很短暂的。

    二、回滚日志(undo log)

    1、作用

    保存了事务出现之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

    2、内容

    逻辑格式的日志,在执行undo的之后,仅仅是将数据从逻辑上恢复至事务之前的状况,而不是从物理页面上操作推动的,这一点是不同于redo log的。

    3、什么时候产生

    事务开始之前,将当前是的版本生成undo log,undo 也会产生 redo 来确保undo log的可靠性

    4、什么时候释放

    当事务提交以后,undo log并不能立马被删除,

    而是放在待清理的数组,由purge线程判断能否由其它事务在使用undo段中表的上一个事务之前的版本信息,决定能否可以清理undo log的日志空间。

    5、对应的物理文件

    MySQL5.6之前,undo表空间位于共享表空间的回滚段中,共享表空间的默认的名称是ibdata,位于数据文件目录中。

    MySQL5.6以后,undo表空间可以配置成独立的文件,但是提前必须在配置文件中配置,完成初始化后生效且不可改变undo log文件的个数

    如果初始化之前没有进行相关配置,那么就能够配置成独立的表空间了。

    关于MySQL5.7之后的独立undo 表空间配置参数如下

    innodb_undo_directory = /data/undospace/ –undo独立表空间的存放目录

    e68d9abc0059d0aa74d4f3c609e079e5.png

    innodb_undo_logs = 128 –回滚段为128KB

    innodb_undo_tablespaces = 4 –指定有4个undo log文件

    如果undo使用的共享表空间,这个共享表空间中又不仅仅是内存了undo的信息,共享表空间的默认为与MySQL的数据目录以下,其属性由参数innodb_data_file_path配置。

    791fd7792affc139fdd040a6ce26bc43.png

    6、其他

    undo是在事务开始之前保存的被设置数据的一个版本,产生undo日志的之后,同样会伴随类似于保护事务持久化机制的redolog的产生。

    默认状况下undo文件是维持在共享表空间的,也即ibdatafile文件中,当中出现一些大的事务性操作的之后,要生成少量的undo信息,全部储存在共享表空间中的。

    因此共享表空间可能会变的很大,默认状况下,也就是undo 日志使用共享表空间的之后,被“撑大”的共享表空间是不会也不能自动收缩的。

    因此,mysql5.7之后的“独立undo 表空间”的配置就变得很有必要了。

    三、二进制日志(binlog)

    1、作用

    用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步;

    用于的基于时间点的还原;

    2、内容

    逻辑格式的日志,可以简洁认为就是执行过的事务中的sql语句。

    但又不完全是sql语句那么简洁,而是包含了执行的sql子句(增删改)反向的信息,

    也就意味着delete对应着delete本身和其反向的insert;update对应着update执行前后的版本的信息;insert对应着delete和insert本身的信息。

    ecdf9b56b3ad0072b13ef33da7d1b26a.png

    在使用mysqlbinlog解析binlog之后一些就会真相大白。

    因此可以基于binlog做到类似于oracle的闪回功能,其实都是依赖于binlog中的日志记录。

    3、什么时候产生

    事务提交的之后,一次性将事务中的sql子句(一个事物也许对应多个sql子句)按照一定的格式记录到binlog中。

    这里与redo log很明显的差别就是redo log并不必定是在事务提交的之后刷新到磁盘,redo log是在事务开始以后就起初逐步写入磁盘。

    因此针对事务的提交,即便是较大的事务,提交(commit)都是很快的,但是在进入了bin_log的状况下,对于较大事务的提交,可能会变得非常慢一些。

    这是因为binlog是在事务提交的之后一次性写入的导致的,这些可以借助测试验证。

    4、什么时候释放

    binlog的默认是保持时间由参数expire_logs_days配置,也就是说对于非活动的日志文件,在生成时间超过expire_logs_days配置的天数以后,会被自动删除。

    229adf92a795f9f184b896330294b23b.png

    5、对应的物理文件

    配置文件的模式为log_bin_basename,binlog日志文件根据选定大小,当日志文件超过指定的最大的大小然后,进行滚动升级,生成新的日志文件。

    对于每个binlog日志文件日志分类学生,通过一个统一的index文件来组织。

    6b624a428325918072b299a7fffcd965.png

    6、其他

    二进制日志的作用之一是还原的,这与redo log很类似,很混淆过,但是它们有本质的不同:

    关于事务提交时,redo log和binlog的读取顺序,为了确保主从复制之后的主从一致(当然也包含使用binlog进行基于时间点还原的状况),是要严格一致的,

    MySQL通过两阶段提交过程来完成事务的一致性的,也即redo log和binlog的一致性的,理论上是先写redo log,再写binlog,两个日志都提交失败(刷入磁盘),事务才算真正的完成。

    四、总结

    MySQL中,对于以下三种日志,每一种细化出来都可以够写一个章节的,这里简要地总结了一下三种日志的一些缺点和作用,以帮助理解MySQL中的事物或者事物背后的原理。

    原文:

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/jisuanjixue/article-121726-1.html

    展开全文
  • 【n个节点的二叉树有多少种形态(Catalan数)】 分析过程: (1)先考虑只有一个节点的情形,设此时的形态有f(1)种,那么很明显f(1)=1 (2)如果有两个节点呢?我们很自然想到,应该在f(1)的基础上考虑递推关系。...
  • 矩阵链乘法 有多少种加括号方案

    千次阅读 2015-09-19 14:42:25
    矩阵链乘法 有多少种加括号方案flyfish 2015-9-19答案与Catalan数列有关递归式的解释 更改下字母就是《算法导论》上的式子 **答案就是C(n−1)C_(n-1) 例如4个矩阵相乘有5种加括号方案 5个矩阵相乘有14种加括号...
  • 具有n个节点的二叉树有多少种形态

    千次阅读 2018-11-02 21:05:37
    【n个节点的二叉树有多少种形态(Catalan数)】 分析过程: (1)先考虑只有一个节点的情形,设此时的形态有f(1)种,那么很明显f(1)=1 (2)如果有两个节点呢?我们很自然想到,应该在f(1)的基础上考虑递推关系。...
  • 题意:n*n的格子,涂色,k种颜料,必须满足旋转任意个90度和翻转之后图片的样子不变,现在已经m个格子涂过色了,问还有多少种涂法满足上述条件。 分析: 满足上述对称条件,那么涂色的种类问题我们可以放在...
  • 我们知道,图片格式很多,比如:JPG、JPEG、PNG、GIF、BMP、SVG等等 哪一格式的占内存最小,时候也是网站优化需要考虑的。因为这直接关系到网站加载性能的快慢,以及用户体验的满意度。 当然,凡事并不一定...
  • 展开全部1、关系视图:Oracle视图是作为...2、内嵌视图:在from语句中的可以把表改成一个子查询,内嵌视图为子查询的一,可以与数据表、视图一样作为查询语句的数据源存在,但在形式上较大的区别,内嵌视图不...
  • 这个keyEvent属于什么变量啊,引用变量吗,都可以怎么用啊?和keycode什么关系呢?
  • 有面额为1元,5元,10元,20元,50元、100元的人民币,组合给定n元的问题,有多少种不同的组合方式 二.思路: 有两种方式,动态规划和回溯法,先看动态规划: 2.1 动态规划 对于动态规划,找到前后项的关系很重要...
  • N个节点的二叉树有多少种形态

    千次阅读 2017-10-13 14:36:15
    先考虑只有一个节点的情形,设此时的形态f(1),那么很明显f(1)=1 如果两个节点呢?我们很自然想到,应该在f(1)的基础上考虑递推关系。那么,如果固定一个节点后,情况,一是左子树还剩一个节点,此刻...
  • 【n个节点的二叉树有多少种形态(Catalan数)】 分析过程:  (1)先考虑只有一个节点的情形,设此时的形态有f(1)种,那么很明显f(1)=1 (2)如果有两个节点呢?我们很自然想到,应该在f(1)的基础上考虑递推关系...
  • 高,问排列方式有多少种? 这个笔试题,很 YD,因为把某个递归关系隐藏得很深。 /* 80.阿里巴巴一道笔试题 问题描述: 12 个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人 高,问排列...
  • 很多人觉得DP难(下文统称动态规划为DP),根本原因是因为DP跟一些固定形式的算法不同(比如DFS、二分法、KMP),它没有实际的步骤规定第一步、第二步来做什么,所以准确来说,DP其实是一解决问题的思想。...
  • 如何在有限的空间中让文字、图片、图形、符号等大量设计元素出现在合适的位置,并能产生合理的层级关系,是设计师需要解决的一大难题。 常见的几表现手法: 1、字体放大 2、多字组合 3、留白 4、立体空间 5...
  • 微信公众号:javafirstMySQL中日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二...其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作一定的关系,这三日志,对理解My...
  • a,b两个数之间,用>号和=号表示关系,共有三可能:a>b a=b b>a。 a,b,c三个数之间,用>号和=号表示关系,共有13可能: a=b=c a=b>c c>a=b a=c>b b>a=c a>...
  • 在python中,我们7运算符:算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符 我们7个算术运算符,能让我们对数值进行算术计算 1、加号(+),将两个值相加 2、减号(-),将...
  • “管道(Pipe):管道是一半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系进程间的通信,允许一个进程和另一个与它共同祖先的进程之间进行通信。(半双工:数据传输指数据可以在一个信号载体的两个...
  • 问题:10阶层楼梯,每次只能走一阶或两阶,问有多少种走法?拿到这个题目的第一想法是暴力穷举法,多个For循环,每一步都有两种走法,这种方法的时间复杂度为O(2^n),显然不合理。然后,思考看是否有更合理的解法。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,539
精华内容 1,015
关键字:

关系有多少种