精华内容
下载资源
问答
  • 三丰千分表-543-491B使用方法 三丰千分表-543-491B使用方法
  • 千分表通讯

    2013-04-11 18:51:31
    千分表通讯程序,使用与通用工业测量。可以嵌入程序代码中,仅供参考,需根据不同情况作相应修改
  • 数字千分表VB例程.rar

    2019-08-02 18:57:58
    数字千分表VB例程.rar,经本人在多个项目中使用和检验,串口通讯例程,未经本人允许,不个用于商业牟利
  • 为什么要库分表 ... 淘宝的历史订单总量应该百亿,甚至亿级别,这些海量数据远不是一张能Hold住的。 事实上MySQL单可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单容量在1KW以下是最佳...

    为什么要分库分表

    移动互联网时代,海量的用户每天产生海量的数量,比如:用户表、订单表、交易流水表。

    • 以支付宝用户为例,8亿;微信用户更是10亿。
    • 订单表更夸张,比如美团外卖,每天都是几千万的订单。
    • 淘宝的历史订单总量应该百亿,甚至千亿级别,这些海量数据远不是一张表能Hold住的。
    • 事实上MySQL单表可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW以下是最佳状态,因为这时它的BTREE索引树高在3~5之间

    既然一张表无法搞定,那么就想办法将数据放到多个地方,目前比较普遍的方案有3个:

    1. 分区;
    2. 分库分表;
    3. NoSQL/NewSQL;

    说明:

    只分库,或者只分表,或者分库分表融合方案都统一认为是分库分表方案,因为分库,或者分表只是一种特殊的分库分表而已。

    NoSQL比较具有代表性的是MongoDB,es。

    NewSQL比较具有代表性的是TiDB。

    数据库架构演变

    刚开始我们只用单机数据库就够了,随后面对越来越多的请求,我们将数据库的写操作读操作进行分离, 使用多个从库副本(Slaver Replication)负责读,使用主库(Master)负责写, 从库从主库同步更新数据,保持数据一致。架构上就是数据库主从同步。 从库可以水平扩展,所以更多的读请求不成问题。

    但是当用户量级上来后,写请求越来越多,该怎么办?加一个Master是不能解决问题的, 因为数据要保存一致性,写操作需要2个master之间同步,相当于是重复了,而且更加复杂。

    这时就需要用到分库分表(sharding),对写操作进行切分

    为什么不 NoSQL/NewSQL?

    首先,为什么不选择第三种方案NoSQL/NewSQL,我认为主要是RDBMS有以下几个优点:

    RDBMS:关系型数据库管理系统(Relational Database Management System)
       - RDBMS生态完善;
       - RDBMS绝对稳定;
       - RDBMS的事务特性;

    NoSQL/NewSQL作为新生儿,在我们把可靠性当做首要考察对象时,它是无法与RDBMS相提并论的。RDBMS发展几十年,只要有软件的地方,它都是核心存储的首选。

    目前绝大部分公司的核心数据都是:以RDBMS存储为主,NoSQL/NewSQL存储为辅!互联网公司又以MySQL为主,国企&银行等不差钱的企业以Oracle/DB2为主!NoSQL/NewSQL宣传的无论多牛逼,就现在各大公司对它的定位,都是RDBMS的补充,而不是取而代之!

    为什么不 分区?

    我们再看分区表方案。了解这个方案之前,先了解它的原理:

    分区:就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的,分区实现比较简单,数据库mysql、oracle等很容易就可支持。

    分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表的索引只是在各个底层表上各自加上一个相同的索引,从存储引擎的角度来看,底层表和一个普通表没有任何不同,存储引擎也无须知道这是一个普通表还是一个分区表的一部分。

    一旦分表,一个库中的表会越来越多

    将整个数据库比作图书馆,一张表就是一本书。当要在一本书中查找某项内容时,如果不分章节,查找的效率将会下降。而同理,在数据库中就是分区。

    • 什么时候考虑使用分区?

    一张表的查询速度已经慢到影响使用的时候。

    1.  sql经过优化
    2.  数据量大
    3.  表中的数据是分段的
    4.  对数据的操作往往只涉及一部分数据,而不是所有的数据
    • 分区解决的问题

    主要可以提升查询效率

    • 分区的实现方式(简单):

    mysql5 开始支持分区功能

    CREATE TABLE sales (

    id INT AUTO_INCREMENT,

    amount DOUBLE NOT NULL,

    order_day DATETIME NOT NULL,

    PRIMARY KEY(id, order_day)

    ) ENGINE=Innodb

    PARTITION BY RANGE(YEAR(order_day)) (

    PARTITION p_2010 VALUES LESS THAN (2010),

    PARTITION p_2011 VALUES LESS THAN (2011),

    PARTITION p_2012 VALUES LESS THAN (2012),

    PARTITION p_catchall VALUES LESS THAN MAXVALUE);

    • 事实上,这个方案也不错,它对用户屏蔽了sharding的细节,即使查询条件没有sharding column它也能正常工作(只是这时候性能一般)
    • 不过它的缺点很明显:很多的资源都受到单机的限制,例如连接数,网络吞吐等!虽然每个分区可以独立存储,但是分区表的总入口还是一个MySQL示例。从而导致它的并发能力非常一般,远远达不到互联网高并发的要求!
    • 至于网上提到的一些其他缺点比如:无法使用外键,不支持全文索引。我认为这都不算缺点,21世纪的项目如果还是使用外键和数据库的全文索引,我都懒得吐槽了!

    所以,如果使用分区表,你的业应该具备如下两个特点:

    数据不是海量(分区数有限,存储能力就有限);

    并发能力要求不高;

    分库分表概述

     

    读写分离:分散数据库读写操作压力

    分库分表:分散存储压力

    适用场景

     

    • 类似读写分离,分库分表也是确定没有其他优化空间之后才采取的优化方案。
    • 那如果业务真的发展很快岂不是很快要进行分库分表了?那为何不一开始就设计好呢?

    按照架构设计的“三原则”(简单原则,合适原则,演化原则),简单分析一下:

    首先,这里的“如果”事实上发生的概率比较低,做10个业务有一个业务能活下去就很不错了,更何况快速发展,和中彩票的概率差不多。如果我们每个业务上来就按照淘宝、微信的规模去做架构设计,不但会累死自己,还会害死业务。

    其次,如果业务真的发展很快,后面进行分库分表也不迟。因为业务发展好,相应的资源投入就会加大,可以投入更多的人和更多的钱,那业务分库带来的代码和业务复杂问题就可以通过加人来解决,成本问题也可以通过增加资金来解决。

    分库分表的方式方法

    一般就是垂直切分水平切分,这是一种结果集描述的切分方式,是物理空间上的切分。

    我们从面临的问题,开始解决,阐述: 首先是用户请求量太大,我们就堆机器搞定(这不是本文重点)。

    然后是单个库太大,这时我们要看是因为表多而导致数据多,还是因为单张表里面的数据多

    如果是因为表多而数据多,使用垂直切分,根据业务切分成不同的库。

    如果是因为单张表的数据量太大,这时要用水平切分,即把表的数据按某种规则切分成多张表,甚至多个库上的多张表。 

    分库分表的顺序应该是先垂直分,后水平分。 因为垂直分更简单,更符合我们处理现实世界问题的方式。

    垂直拆分

     

    垂直分表

    也就是“大表拆小表”,基于列字段进行的。

    一般是表中的字段较多,将不常用的, 数据较大,长度较长(比如text类型字段)的拆分到“扩展表“。

    一般是针对那种几百列的大表,也避免查询时,数据量太大造成的“跨页”问题。

    垂直分库

    垂直分库针对的是一个系统中的不同业务进行拆分,比如用户User一个库,商品Producet一个库,订单Order一个库。

    切分后,要放在多个服务器上,而不是一个服务器上。

    为什么? 我们想象一下,一个购物网站对外提供服务,会有用户,商品,订单等的CRUD。没拆分之前, 全部都是落到单一的库上的,这会让数据库的单库处理能力成为瓶颈

    按垂直分库后,如果还是放在一个数据库服务器上, 随着用户量增大,这会让单个数据库的处理能力成为瓶颈,还有单个服务器的磁盘空间,内存,tps等非常吃紧。 所以我们要拆分到多个服务器上,这样上面的问题都解决了,以后也不会面对单机资源问题。

    数据库业务层面的拆分,和服务的“治理”,“降级”机制类似,也能对不同业务的数据分别的进行管理,维护,监控,扩展等。

    数据库往往最容易成为应用系统的瓶颈,而数据库本身属于“有状态”的,相对于Web和应用服务器来讲,是比较难实现“横向扩展”的。

    数据库的连接资源比较宝贵且单机处理能力也有限,在高并发场景下,垂直分库一定程度上能够突破IO、连接数及单机硬件资源的瓶颈。

     

    水平拆分

    水平分表

    针对数据量巨大的单张表(比如订单表),按照某种规则(RANGE,HASH取模等),切分到多张表里面去。 但是这些表还是在同一个库中,所以库级别的数据库操作还是有IO瓶颈。不建议采用。

    水平分库分表

    将单张表的数据切分到多个服务器上去,每个服务器具有相应的库与表,只是表中数据集合不同。 水平分库分表能够有效的缓解单机和单库的性能瓶颈和压力,突破IO、连接数、硬件资源等的瓶颈。

    水平分库分表切分规则

    RANGE

    从0到10000一个表,10001到20000一个表;

    HASH取模

    一个商场系统,一般都是将用户,订单作为主表,然后将和它们相关的作为附表,这样不会造成跨库事务之类的问题。 取用户id,然后hash取模,分配到不同的数据库上。

    地理区域

    比如按照华东,华南,华北这样来区分业务,七牛云应该就是如此。

    时间

    按照时间切分,就是将6个月前,甚至一年前的数据切出去放到另外的一张表,因为随着时间流逝,这些表的数据 被查询的概率变小,所以没必要和“热数据”放在一起,这个也是“冷热数据分离”。

    业务分表

     

    分库分表后面临的问题

    事务支持

    分库分表后,就成了分布式事务了。

    如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价; 如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。

    路由问题

    垂直分表:增加表操作的次数

    水平分表:路由问题

     

    数据库操作问题

    多库结果集合并(group by,order by)

    跨库join

    分库分表后表之间的关联操作将受到限制,我们无法join位于不同分库的表,也无法join分表粒度不同的表, 结果原本一次查询能够完成的业务,可能需要多次查询才能完成。

    粗略的解决方法: 全局表:基础数据,所有库都拷贝一份。 字段冗余:这样有些字段就不用join去查询了。 系统层组装:分别查询出所有,然后组装起来,较复杂。

     

    • 解决方法

     

    类似读写分离,具体实现也是“程序代码封装”和“中间件封装”,但具体实现复杂一些,因为还有要判断SQL中具体操作的表,具体操作(例如count、order by、group by等),根据具体操作做不同的处理。

     

    多分片(水平切分)返回结果合并(排序)

    ①Select + None Aggregate Function的有序记录合并排序 

    解决思路:对各分片返回的有序记录,进行排序去重合并。此处主要是编写排序去重合并算法。

    ②Select + None Aggregate Function的无序记录合并

    解决思路:对各分片返回的无序记录,进行去重合并。

    • 优点:实现比较简单。
    •  缺点:数据量越大,字段越多,去重处理就会越耗时。

    ③Select + Aggregate Function的记录合并(排序)Oracle常用聚合函数:Count、Max、Min、Avg、Sum。

    • AF:Max、Min
      • 思路:通过算法对各分片返回结果再求max、min值。
    • AF:Avg、Sum、Count
      • 思路:分片间无重复记录或字段时,通过算法对各分片返回结果再求avg、sum、count值。分片间有重复记录或字段时,先对各分片记录去重合并,再通过算法求avg、sum、count值。

    比如:

    select count(*) from user
    
    select count(deptno) from user;
    
    select count(distinct deptno) from user;

    2.多分片(水平切分)返回结果分页

    解决思路:合并各分片返回结果,逻辑分页。

            优点:  实现简单。

            缺点:  数据量越大,缓存压力就越大。

                         分片数据量越大,查询也会越慢。

    3.多分片(水平切分)查询有分组语法的合并

    ①Group By Having + None Aggregate Function时

    • Select + None Aggregate Function
      • 比如:select job user group by job;
      • 思路:直接去重(排序)合并。
    • Select + Aggregate Function
      • 比如:select max(sal),job user group by job;
      • 思路:同Select + Aggregate Function的记录合并(排序)。

    ②Group By Having + Aggregate Function时

    解决思路:去掉having AF条件查询各分片,然后把数据放到一张表里。再用group by having 聚合函数查询。

    4.分布式数据库架构--排序分组分页参考解决方案

    • 解决方案1:Hadoop + Hive。
      • 思路:使用Hadoop HDFS来存储数据,通过Hdoop MapReduce完成数据计算,通过Hive HQL语言使用部分与RDBBS一样的表格查询特性和分布式存储计算特性。
      • 优点:
      1. 可以解决问题
      2. 具有并发处理能力
      3. 可以离线处理
      • 缺点: 
      1. 实时性不能保证
      2. 网络延迟会增加
      3. 异常捕获难度增加
      4. Web应用起来比较复杂
    • 解决方案2:总库集中查询。
      • 优点:
      1. 可以解决问题
      2. 实现简单
      • 缺点:
      1. 总库数据不能太大
      2. 并发压力大

    5.小结

    对 于分布式数据库架构来说,排序、分页、分组一直就是一个比较复杂的问题。避免此问题需要好好地设计分库、分表策略。同时根据特定的场景来解决问题。也可以 充分利用海量数据存储(Hadoop-HDFS|Hive|HBse)、搜索引擎(Lucene|Solr)及分布式计算(MapReduce)等技术来 解决问题。
    别外,也可以用NoSQL技术替代关系性数据库来解决问题,比如MogonDB\redis。

     

    参考来源:
    https://www.jianshu.com/p/2b75742e9941

    http://www.cnblogs.com/davidwang456/articles/10008544.html

    https://www.cnblogs.com/sunny3096/p/8595058.html

     

    展开全文
  • 在实际开发中我们经常涉及到库分表场景,那么怎样才能继续配合 Eloquent 优雅的使用 Model 模型呢,接下来给大家分享下我在实际开发中所遇到的问题。(备注:此方法来源 Stack OverFlow 原文地址找不到了,配合...
  • 数据库结构设计方法及原则

    千次阅读 2020-12-01 22:30:43
    在目前的企业信息系统中,数据库还是最佳的数据存储方式,虽然已经有很多的书籍在指导我们进行数据库设计,但应该那种方式是设计数据库的结构的最好方法、设计时应遵从什么样的原则、四个范式如何能够用一种方式...

    在目前的企业信息系统中,数据库还是最佳的数据存储方式,虽然已经有很多的书籍在指导我们进行数据库设计,但应该那种方式是设计数据库的表结构的最好方法、设计时应遵从什么样的原则、四个范式如何能够用一种方式达到顺畅的应用等是我一直在思考和总结的问题,下文是我针对这几个问题根据自己的设计经历准备总结的一篇文章的提纲,欢迎大家一块进行探讨,集思广益。其中提到了领域建模的概念,但未作详细解释,希望以后能够有时间我们针对这个命题进行深入探讨。

    1)不应该针对整个系统进行数据库设计,而应该根据系统架构中的组件划分,针对每个组件所处理的业务进行组件单元的数据库设计;不同组件间所对应的数据库表之间的关联应尽可能减少,如果不同组件间的表需要外键关联也尽量不要创建外键关联,而只是记录关联表的一个主键,确保组件对应的表之间的独立性,为系统或表结构的重构提供可能性。

    2)采用领域模型驱动的方式和自顶向下的思路进行数据库设计,首先分析系统业务,根据职责定义对象。对象要符合封装的特性,确保与职责相关的数据项被定义在一个对象之内,这些数据项能够完整描述该职责,不会出现职责描述缺失。并且一个对象有且只有一项职责,如果一个对象要负责两个或两个以上的职责,应进行分拆。

    3)根据建立的领域模型进行数据库表的映射,此时应参考数据库设计第二范式:一个表中的所有非关键字属性都依赖于整个关键字。关键字可以是一个属性,也可以是多个属性的集合,不论那种方式,都应确保关键字能够保证唯一性。在确定关键字时,应保证关键字不会参与业务且不会出现更新异常,这时,最优解决方案为采用一个自增数值型属性或一个随机字符串作为表的关键字。

    4)由于第一点所述的领域模型驱动的方式设计数据库表结构,领域模型中的每一个对象只有一项职责,所以对象中的数据项不存在传递依赖,所以,这种思路的数据库表结构设计从一开始即满足第三范式:一个表应满足第二范式,且属性间不存在传递依赖。

    5)同样,由于对象职责的单一性以及对象之间的关系反映的是业务逻辑之间的关系,所以在领域模型中的对象存在主对象和从对象之分,从对象是从1-N或N-N的角度进一步分析主对象的业务逻辑,所以从对象及对象关系映射的表及表关联关系不存在删除和插入异常。

    6)在映射后得出的数据库表结构中,应再根据第四范式进行进一步修改,确保不存在多值依赖。这时,应根据反向工程的思路反馈给领域模型。如果表结构中存在多值依赖,则证明领域模型中的对象具有至少两个以上的职责,应根据第一条进行设计修正。第四范式:一个表如果满足BCNF,不应存在多值依赖。

    7)在经过分析后确认所有的表都满足二、三、四范式的情况下,表和表之间的关联尽量采用弱关联以便于对表字段和表结构的调整和重构。并且,我认为数据库中的表是用来持久化一个对象实例在特定时间及特定条件下的状态的,只是一个存储介质,所以,表和表之间也不应用强关联来表述业务(数据间的一致性),这一职责应由系统的逻辑层来保证,这种方式也确保了系统对于不正确数据(脏数据)的兼容性。当然,从整个系统的角度来说我们还是要尽最大努力确保系统不会产生脏数据,单从另一个角度来说,脏数据的产生在一定程度上也是不可避免的,我们也要保证系统对这种情况的容错性。这是一个折中的方案。

    8)应针对所有表的主键和外键建立索引,有针对性的(针对一些大数据量和常用检索方式)建立组合属性的索引,提高检索效率。虽然建立索引会消耗部分系统资源,但比较起在检索时搜索整张表中的数据尤其时表中的数据量较大时所带来的性能影响,以及无索引时的排序操作所带来的性能影响,这种方式仍然是值得提倡的。

    9)尽量少采用存储过程,目前已经有很多技术可以替代存储过程的功能如“对象/关系映射”等,将数据一致性的保证放在数据库中,无论对于版本控制、开发和部署、以及数据库的迁移都会带来很大的影响。但不可否认,存储过程具有性能上的优势,所以,当系统可使用的硬件不会得到提升而性能又是非常重要的质量属性时,可经过平衡考虑选用存储过程。

    10)当处理表间的关联约束所付出的代价(常常是使用性上的代价)超过了保证不会出现修改、删除、更改异常所付出的代价,并且数据冗余也不是主要的问题时,表设计可以不符合四个范式。四个范式确保了不会出现异常,但也可能由此导致过于纯洁的设计,使得表结构难于使用,所以在设计时需要进行综合判断,但首先确保符合四个范式,然后再进行精化修正是刚刚进入数据库设计领域时可以采用的最好办法。

    11)设计出的表要具有较好的使用性,主要体现在查询时是否需要关联多张表且还需使用复杂的SQL技巧。

    12)设计出的表要尽可能减少数据冗余,确保数据的准确性,有效的控制冗余有助于提高数据库的性能。

    数据库设计原则

    1. 原始单据与实体之间的关系 
      可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。 
    在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。 
    这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。

      〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。 
            这就是“一张原始单证对应多个实体”的典型例子。

    2. 主键与外键 
      一般而言,一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实体, 可以定义主键,也可以不定义主键 
      (因为它无子孙), 但必须要有外键(因为它有父亲)。

      主键与外键的设计,在全局数据库的设计中,占有重要地位。当全局数据库的设计完成以后,有个美国数据库设计专 
      家说:“键,到处都是键,除了键之外,什么也没有”,这就是他的数据库设计经验之谈,也反映了他对信息系统核 
      心(数据模型)的高度抽象思想。因为:主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。

    3. 基本表的性质 
      基本表与中间表、临时表不同,因为它具有如下四个特性: 
       (1) 原子性。基本表中的字段是不可再分解的。 
       (2) 原始性。基本表中的记录是原始数据(基础数据)的记录。 
       (3) 演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。 
       (4) 稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。 
      理解基本表的性质后,在设计数据库时,就能将基本表与中间表、临时表区分开来。

    4. 范式标准 
      基本表及其字段之间的关系, 应尽量满足第三范式。但是,满足第三范式的数据库设计,往往不是最好的设计。 
      为了提高数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间换时间的目的。

      〖例2〗:有一张存放商品的基本表,如表1所示。“金额”这个字段的存在,表明该表的设计不满足第三范式, 
      因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段, 
      可以提高查询统计的速度,这就是以空间换时间的作法。 
      在Rose 2002中,规定列有两种类型:数据列和计算列。“金额”这样的列被称为“计算列”,而“单价”和 
      “数量”这样的列被称为“数据列”。

      表1 商品表的表结构 
      商品名称 商品型号 单价 数量 金额 
      电视机 29吋 2,500 40 100,000 
       
    5. 通俗地理解三个范式 
      通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解 
      三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解): 
      第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解; 
      第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性; 
      第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。

      没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降 
      低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理 
      数据模型设计时考虑。降低范式就是增加字段,允许冗余。

    6. 要善于识别与正确处理多对多的关系 
      若两个实体之间存在多对多的关系,则应消除这种关系。消除的办法是,在两者之间增加第三个实体。这样,原来一 
      个多对多的关系,现在变为两个一对多的关系。要将原来两个实体的属性合理地分配到三个实体中去。这里的第三个 
      实体,实质上是一个较复杂的关系,它对应一张基本表。一般来讲,数据库设计工具不能识别多对多的关系,但能处 
      理多对多的关系。

      〖例3〗:在“图书馆信息系统”中,“图书”是一个实体,“读者”也是一个实体。这两个实体之间的关系,是一 
      个典型的多对多关系:一本图书在不同时间可以被多个读者借阅,一个读者又可以借多本图书。为此,要在二者之 
      间增加第三个实体,该实体取名为“借还书”,它的属性为:借还时间、借还标志(0表示借书,1表示还书),另外, 
      它还应该有两个外键(“图书”的主键,“读者”的主键),使它能与“图书”和“读者”连接。

    7. 主键PK的取值方法 
       PK是供程序员使用的表间连接工具,可以是一无物理意义的数字串, 由程序自动加1来实现。也可以是有物理意义 
      的字段名或字段名的组合。不过前者比后者好。当PK是字段名的组合时,建议字段的个数不要太多,多了不但索引 
      占用空间大,而且速度也慢。

    8. 正确认识数据冗余 
      主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚。非键字段的重 
      复出现, 才是数据冗余!而且是一种低级冗余,即重复性的冗余。高级冗余不是字段的重复出现,而是字段的派生出现。

      〖例4〗:商品中的“单价、数量、金额”三个字段,“金额”就是由“单价”乘以“数量”派生出来的,它就是冗余,
      而且是一种高级冗余。冗余的目的是为了提高处理速度。只有低级冗余才会增加数据的不一致性,因为同一数据,可 
      能从不同时间、地点、角色上多次录入。因此,我们提倡高级冗余(派生性冗余),反对低级冗余(重复性冗余)。

    9. E--R图没有标准答案 
      信息系统的E--R图没有标准答案,因为它的设计与画法不是惟一的,只要它覆盖了系统需求的业务范围和功能内容, 
      就是可行的。反之要修改E--R图。尽管它没有惟一的标准答案,并不意味着可以随意设计。好的E—R图的标准是: 
      结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。

    10 . 视图技术在数据库设计中很有用 
      与基本表、代码表、中间表不同,视图是一种虚表,它依赖数据源的实表而存在。视图是供程序员使用数据库的 
      一个窗口,是基表数据综合的一种形式, 是数据处理的一种方法,是用户数据保密的一种手段。为了进行复杂处理、 
      提高运算速度和节省存储空间, 视图的定义深度一般不得超过三层。 若三层视图仍不够用, 则应在视图上定义临时表, 
       在临时表上再定义视图。这样反复交迭定义, 视图的深度就不受限制了。

      对于某些与国家政治、经济、技术、军事和安全利益有关的信息系统,视图的作用更加重要。这些系统的基本表完 
      成物理设计之后,立即在基本表上建立第一层视图,这层视图的个数和结构,与基本表的个数和结构是完全相同。 
      并且规定,所有的程序员,一律只准在视图上操作。只有数据库管理员,带着多个人员共同掌握的“安全钥匙”, 
      才能直接在基本表上操作。请读者想想:这是为什么?

    11. 中间表、报表和临时表 
      中间表是存放统计数据的表,它是为数据仓库、输出报表或查询结果而设计的,有时它没有主键与外键(数据仓 
      库除外)。临时表是程序员个人设计的,存放临时记录,为个人所用。基表和中间表由DBA维护,临时表由程序员 
      自己用程序自动维护。

    12. 完整性约束表现在三个方面 
      域的完整性:用Check来实现约束,在数据库设计工具中,对字段的取值范围进行定义时,有一个Check按钮,通 
      过它定义字段的值城。 
      参照完整性:用PK、FK、表级触发器来实现。 
      用户定义完整性:它是一些业务规则,用存储过程和触发器来实现。

    13. 防止数据库设计打补丁的方法是“三少原则” 
       (1) 一个数据库中表的个数越少越好。只有表的个数少了,才能说明系统的E--R图少而精,去掉了重复的多余的 
        实体,形成了对客观世界的高度抽象,进行了系统的数据集成,防止了打补丁式的设计;

       (2) 一个表中组合主键的字段个数越少越好。因为主键的作用,一是建主键索引,二是做为子表的外键,所以组 
        合主键的字段个数少了,不仅节省了运行时间,而且节省了索引存储空间;

       (3) 一个表中的字段个数越少越好。只有字段的个数少了,才能说明在系统中不存在数据重复,且很少有数据冗 
        余,更重要的是督促读者学会“列变行”,这样就防止了将子表中的字段拉入到主表中去,在主表中留下许 
        多空余的字段。所谓“列变行”,就是将主表中的一部分内容拉出去,另外单独建一个子表。这个方法很简 
        单,有的人就是不习惯、不采纳、不执行。

      数据库设计的实用原则是:在数据冗余和处理速度之间找到合适的平衡点。“三少”是一个整体概念,综合观点, 
      不能孤立某一个原则。该原则是相对的,不是绝对的。“三多”原则肯定是错误的。试想:若覆盖系统同样的功 
      能,一百个实体(共一千个属性) 的E--R图,肯定比二百个实体(共二千个属性) 的E--R图,要好得多。

      提倡“三少”原则,是叫读者学会利用数据库设计技术进行系统的数据集成。数据集成的步骤是将文件系统集成 
      为应用数据库,将应用数据库集成为主题数据库,将主题数据库集成为全局综合数据库。集成的程度越高,数据 
      共享性就越强,信息孤岛现象就越少,整个企业信息系统的全局E—R图中实体的个数、主键的个数、属性的个数 
      就会越少。

      提倡“三少”原则的目的,是防止读者利用打补丁技术,不断地对数据库进行增删改,使企业数据库变成了随意 
      设计数据库表的“垃圾堆”,或数据库表的“大杂院”,最后造成数据库中的基本表、代码表、中间表、临时表 
      杂乱无章,不计其数,导致企事业单位的信息系统无法维护而瘫痪。

       “三多”原则任何人都可以做到,该原则是“打补丁方法”设计数据库的歪理学说。“三少”原则是少而精的 
      原则,它要求有较高的数据库设计技巧与艺术,不是任何人都能做到的,因为该原则是杜绝用“打补丁方法” 
      设计数据库的理论依据。

    14. 提高数据库运行效率的办法 
      在给定的系统硬件和系统软件条件下,提高数据库系统的运行效率的办法是: 
       (1) 在数据库物理设计时,降低范式,增加冗余, 少用触发器, 多用存储过程。 
       (2) 当计算非常复杂、而且记录条数非常巨大时(例如一千万条),复杂计算要先在数据库外面,以文件系统方
        式用C++语言计算处理完成之后,最后才入库追加到表中去。这是电信计费系统设计的经验。 
       (3) 发现某个表的记录太多,例如超过一千万条,则要对该表进行水平分割。水平分割的做法是,以该表主键 
        PK的某个值为界线,将该表的记录水平分割为两个表。若发现某个表的字段太多,例如超过八十个,则 
        垂直分割该表,将原来的一个表分解为两个表。 
       (4) 对数据库管理系统DBMS进行系统优化,即优化各种系统参数,如缓冲区个数。 
       (5) 在使用面向数据的SQL语言进行程序设计时,尽量采取优化算法。 
        总之,要提高数据库的运行效率,必须从数据库系统级优化、数据库设计级优化、程序实现级优化,这三 
        个层次上同时下功夫。

      上述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的。对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握。并逐步做到:在应用中发展,在发展中应用。

    上一篇:Oracle数据库访问性能优化

    下一篇:Oracle行链接(Row chaining) 与行迁移(Row Migration)

    展开全文
  • 量具的使用方法

    2013-04-28 08:55:25
    四 杠杆百分表和千分表使用方法 35 五 内径百分表 38 六 内径百分表的使用方法 39 第六章 角度量具 40 一 万能角度尺 40 二 游标量角器 41 三 万能角尺 42 四 带表角度尺 42 五 中心规 43 六 正弦规 43 七 车刀量...
  • 常用量具的使用方法

    2015-11-25 17:22:48
    游标卡尺、千分表、百分万能角度尺,有图有真相
  • 电容读数

    千次阅读 2018-08-02 10:26:46
    瓷片电容的读数方法和电阻的读数方法基本相同,色标法、数标法和直标法3种。瓷片电容的基本单位用法拉(F)表示,其它单位还有:毫法(mF)、微法(μF)、纳法(nF)、皮法(pF)。其中:1法拉=1000毫法(mF),1毫法=1000...

    前两位,是有效数字,10就是10,,68就是68.

    后面一位代表倍率,后面的0的个数

    单位为P法,

    如103

    就是10,000PF

    0.01微法

    104就是100,000PF

    0.1微法

    105就是1微法

    1F(法拉)=1000mF(毫法) ,1(毫法) =1000uF(微法) ,1(微法) =1000nF(纳法) ,1(纳法)=1000pF(皮法)。
    规则:单位省略表示为pF,例如
    101(pF)=10 * 10^1 = 100pF = 0.1nF
    104(pF)=10 * 10^4 = 100000pF = 0.1uF
    105(pF)=10 * 10^5 = 1000000pF = 1uF

     

     

     

     

     

    篇一 : 瓷片电容读数法

    瓷片电容读数法

    224j是容量和误差,224是220000pF,即0.22μF;j代表容量误差为5%。[) 容量误差有:F级±1%,G级±2%,J级±5%,K级±10%,M级±20%。

    0.022j 250v瓷片电容怎么读数 0.022uF,5%,250v

    瓷片电容器有高压瓷片和普通瓷片电容器,普通瓷片电容器耐压过去标准是50V,高压瓷片电容器有几百伏的,有几千伏的,一般在容值下面标出XXKV 一种国外电容耐压系列表示法

    电容耐压值有一种是用1位数字和1个字母表示的,如2G472J,头两位2G是表示耐压,后面的大家知道是表示容量与误差,这种耐压表示法较少资料介绍,且不太好记,现整理献给大家,碰到时可查阅对照:

    A B C D E F G H J K Z 0 1.0 1.25 1.6 2.0 2.5 3.15 4.0 5.0 6.3 8.0 9.0 1 10 12.5 16 20 25 31.5 40 50 63 80 90 2 100 125 160 200 250 315 400 500 630 800 900 3 1000 1250 1600 2000 2500 3150 4000 5000 6300 8000 9000 4 10000 12500 16000 20000 25000 31500 40000 50000 63000 80000 90000

    电容器耐压的标注也有两种常见方法,一种是把耐压值直接印在电容器上,另一种是采用一个数字和一个字母组合而成.数字表示10的幂指数,字母表示数值,单位是V(伏). 1J代表 6.3×10=63V

    2F代表 3.15×100=315V

    3A代表 1.0×1000=1000V

    1K代表 8.0×10=80V

    数字最大为4,如4Z代90000V

    .

    瓷片电容读数 瓷片电容读数法

    只表有容量未标出耐压的默认耐压63V,举列如104k 就是100000PF/63V 在如274K 200就是270000PF/200V 再如MPPS392J2000V 这是在电容上直接标出那么我们只看392J就是3900PF/2000V前面的MPP是电容的规格说明他的种类 再如CBB12点200 180nJ 我们只看180n就是18nf 耐压200V CBB12是型号

    篇二 : 瓷片电容参数识别的方法 瓷片电容规格有哪些

    瓷片电容又称圆片瓷介电容,分为高压瓷片电容和低压瓷片电容等,那瓷片电容参数如何识别呢?瓷片电容规格有哪些?别急,下面我们就一起来看看瓷片电容参数识别的方法以及瓷片电容规格表吧。()

    瓷片电容参数识别的方法

    电容的标称及识别方法:

    1.直标法:如果数字是0.001,那它代表的是0.001uF=1nF,如果是10n,那么就是10nF,同样100p就是100pF。

    2.不标单位的直接表示法:用1~4位数字表示,容量单位为pF,如350为350pF,3为3pF,0.5为0.5pF。

    3.色码表示法:沿电容引线方向,用不同的颜色表示不同的数字,第一,二种环表示电容量,第三种颜色表示有效数字后零的个数(单位为pF)颜色意义:黑=0、棕=1、红=2、橙=3、黄=4、绿=5、蓝=6、紫=7、灰=8、白=9。瓷片电容器有高压瓷片和普通瓷片电容器,普通瓷片电容器耐压过去标准是50V,高压瓷片电容器有几百伏的,有几千伏的,一般在容值下面标出XXKV。

    电容的容量标识的几种方法:

    一、直接标识:如其电解电容,容量47uf,电容耐压25v。

    二、使用单位nf:如上图的涤纶电容,标称4n7,即4.7nf,转换为pf即为4700pf。还有的例如:10n,即0.01uf;33n,即0.033uf。后面的63是指电容耐压63v。

    三、数学计数法:如瓷介电容,标值104,容量就是:10X10000pf=0.1uf.如果标值473,即为47X1000pf=0.047uf。(后面的4、3,都表示10的多少次方)。又如:332=33X100pf=3300pf。电容的使用,都应该在指定的耐压下工作。现在的好多质量不高的产品,就因为使用了耐压不足的电容而引起故障(常见电容爆裂)。

    电容识别:

    1、电容在电路中一般用“C”加数字表示(如C13表示编号为13的电容)。电容是由两片金属膜紧靠,中间用绝缘材料隔开而组成的元件。电容的特性主要是隔直流通交流。电容容量的大小就是表示能贮存电能的大小,电容对交流信号的阻碍作用称为容抗,它与交流信号的频率和电容量有关。容抗XC=1/2πfc(f表示交流信号的频率,C表示电容容量)电话机中常用电容的种类有电解电容、瓷片电容、贴片电容、独石电容、钽电容和涤纶电容等。

    2、电容识别方法:电容的识别方法与电阻的识别方法基本相同,分直标法、色标法和数标法3种。电容的基本单位用法拉(F)表示,其它单位还有:毫法(mF)、微法(uF)、纳法(nF)、皮法(pF)。其中:1法拉=10,3毫法=10,6微法=10,9纳法=10,12皮法容量大的电容其容量值在电容上直接标明,如10uF/16V容量小的电容其容量值在电容上用字母表示或数字表示字母表示法:1m=1000uF,1P2=1.2PF,1n=1000PF,数字表示法:一般用三位数字表示容量大小,前两位表示有效数字,第三位数字是倍率。如:102表示10×102PF=1000PF224表示22×104PF=0.22uF。

    3、电容容量误差表:符号FGJKLM允许误差±1%±2%±5%±10%±15%±20%;如:一瓷片电容为104J表示容量为0.1uF、误差为±5%。

    瓷片电容规格有哪些

    瓷片电容规格是多少呢?小编总结了一个表格,大家了解下。

    瓷片电容规格表一:

    瓷片电容规格表二:

    以上关于瓷片电容参数识别的方法以及瓷片电容规格有哪些就简单介绍到这里了,希望对您有所帮助。更多资讯,尽在齐家网,敬请期待。

    篇三 : 瓷片电容的参数如何识别 瓷片电容的读数方法

    电容器(Capacitor)电路缩写为C,电容单位法拉,用字母“F”表示。(]电容是用来储存电荷的容器,简称电容器。电容器是一种储能元件,在电路中用于调谐、滤波、耦合、旁路、能量转换和延时。那么,瓷片电容的参数如何识别呢?别急,下面我们就一起来看看瓷片电容的读数方法吧。

    电容器容量的表示方法

    电容器容量的基本单位是“法拉”(F),1法拉的 1/1000000 (百万分之一)是1微法(μF),1微法的 1/1000000是1pF (1微微法或1皮法)。它们之间的关系是百万(或称10的6次方)进位关系。

    我们常用的电容有:

    1、电解电容:多数在1μF以上,直接用数字表示。如:4.7μF、100μF、220μF等等。这种电容的两极有正负之分,长脚是正极。

    2、瓷片电容:多数在1μF以下,直接用数字表示。如:10、22、0.047、0.1等等,这里要注意的是单位。凡用整数表示的,单位默认pF;凡用小数表示的,单位默认μF。如以上例子中,分别是10P、22P、0.047μF、220μF等。

    现在国际上流行另一种类似色环电阻的表示方法(单位默认pF):

    如:“473”即47000pF=0.047μF,“103”即10000pF=0.01μF等等,“ XXX”第一、二个数字是有效数字,第三个数字代表后面添加0的个数。这种表示法已经相当普遍。

    瓷片电容的读数方法

    瓷片电容的读数方法和电阻的读数方法基本相同,分色标法、数标法和直标法3种。瓷片电容的基本单位用法拉(F)表示,其它单位还有:毫法(mF)、微法(μF)、纳法(nF)、皮法(pF)。其中:1法拉=1000毫法(mF),1毫法=1000微法(μF),1微法=1000纳法 (nF),1纳法=1000皮法(pF)。

    容量大的瓷片电容其容量值在电容上直接标明,如10μF/16V;

    容量小的瓷片电容其容量值在电容上用字母表示或数字表示;

    字母表示法:2m=2000μF,1P2=1.2PF,2n=2000PF;

    数字表示法:三位数字的表示法也称电容量的数码表示法。三位数字的前两位数字为标称容量的有效数字,第三位数字表示有效数字后面零的个数,它们的单位都是pF。

    例如:102表示标称容量为1000pF。

    211表示标称容量为210pF。

    214表示标称容量为21x10(4)pF。

    在这种表示法中有一个特殊情况,就是当第三位数字用"9"表示时,是用有效数字乘上10的-1次方来表示容量大小。例如:219表示标称容量为21x(10-1)pF=2.2pF。

     

     

    电阻的读数

    展开全文
  • 为什么阿里不推荐使用MySQL分区

    千次阅读 2021-06-03 20:25:27
    分区有什么问题,为什么公司规范不让使用分区呢? 什么是分区 在示例插入两条记录,按分区规则,记录分别落在p_2018和p_2019分区。 可见,该包含了一个.frm文件和4个.ibd文件,每个分区对应一个.ibd文件...

    分区表有什么问题,为什么公司规范不让使用分区表呢?

    什么是分区表


    在示例表插入两条记录,按分区规则,记录分别落在p_2018p_2019分区。
    可见,该表包含了一个.frm文件和4个.ibd文件,每个分区对应一个.ibd文件:

    • 对于引擎层,这是4个表
    • 对于Server层,这是1个表

    分区表的引擎层行为

    举个在分区表加间隙锁的例子,目的是说明对于InnoDB来说,这是4个表。

    • 分区表间隙锁
    session_1session_2
    T1begin;
    select * from tt
    where ftime=‘2017-5-1’
    for update;
    T2insert into tt values (‘2018-2-1’, 1); (Query OK)
    insert into tt values (‘2017-12-1’, 1); (阻塞)

    初始化表tt时,只插入两行数据。session1的select语句对索引ftime上这两个记录之间的间隙加了锁。如果是一个普通表的话,T1时刻,在表t的ftime索引上,间隙和加锁状态应该如下

    • 普通表的加锁范围

    即‘2017-4-1’ 和’2018-4-1’ 这两个记录之间的间隙会被锁住。
    那sesion2的两条插入语句应该都要进入锁等待状态。

    但session2的第一个insert成功。因为对于引擎,p_2018和p_2019是两个不同表,即2017-4-1的下一个记录并不是2018-4-1,而是p_2018分区的supremum。
    所以T1,在表t的ftime索引上,间隙和加锁的状态其实:

    • 分区表tt的加锁范围

    由于分区表规则,session1的select只操作了分区p_2018,因此加锁范围就是上图绿色。

    所以,session2写2018-2-1成功,而要写2017-12-1,就要等session1的间隙锁。

    这时show engine innodb status的部分结果:

    • session2被锁住信息

    MyISAM分区表

    # 把表tt改成MyISAM表
    alter table t engine=myisam
    

    对于MyISAM引擎来说,这是4个表。

    • 用MyISAM表锁验证
    session_1session_2
    alter table t engine=myisam;
    update tt set c=sleep(100)
    where ftime=‘2017-4-1’;
    select * from tt where ftime=‘2018-4-1’;
    (Query OK)
    select * from tt where ftime=‘2017-5-1’;
    (阻塞)

    在session1,sleep(100)将该语句的执行时间设为100s。由于MyISAM引擎只支持表锁,所以这条update语句会锁住整个表tt上的读。

    但session2的第一条查询语句可以正常执行,第二条语句才进入锁等待。

    因为MyISAM的表锁实现在引擎层,session1加的表锁,其实是锁在分区p_2018。因此,只会堵住在这个分区上执行的查询,其他分区查询不受影响。

    分区表使用起来看来挺好使的呀,为啥禁用?
    使用分区表的一个重要原因就是单表过大。那若不使用分区表,就要手动分表。

    手动分表 V.S 分区表

    比如,按年份划分,分别创建普通表t_2017t_2018t_2019等。手工分表也要找到需要更新的所有分表,然后依次执行更新。
    性能上和分区表没有差别。

    • 分区表由server层决定使用哪个分区
    • 手动分表由应用层代码决定使用哪个分表

    所以从引擎层看,也没啥区别。

    两种方式的区别,主要在server层。server层的分区表一个严重问题就是打开表的行为。

    分区策略

    第一次访问一个分区表时,MySQL需要把所有分区都访问一遍。
    一个典型的报错场景:若一个分区表的分区很多,比如超过1000,而MySQL启动时,open_files_limit参数默认值1024,则在访问该表时,由于需要打开所有文件,导致打开表文件的个数超过了上限而报错。

    比如对一个包含很多分区的表,执行insert直接报错:

    这条insert其实只需要访问一个分区,但语句报错了。这个表是MyISAM,如果使用InnoDB,不会出现该问题。

    MyISAM分区表使用通用分区策略(generic partitioning),每次访问分区都由server层控制。通用分区策略,是MySQL一开始支持分区表的时候就存在的代码,在文件管理、表管理的实现上很粗糙,性能问题很严重。

    MySQL 5.7.9开始,InnoDB引入本地分区策略(native partitioning),在InnoDB内部自己管理打开分区的行为。

    MySQL 5.7.17开始,将MyISAM分区表标记为deprecated。
    MySQL 8.0开始,已经禁止创建MyISAM分区表,只允许创建已经实现了本地分区策略的引擎。

    目前只有InnoDB和NDB引擎支持本地分区策略。

    分区表的server层行为

    对于server层,一个分区表就只是一个表。

    如图,分别是该例的操作序列和执行结果图。

    • 分区表的MDL锁
    session_1session_2
    begin;
    select * from tt
    where ftime=‘2018-4-1’;
    alter table tt truncate partition p_2017
    (阻塞)


    • show processlist

      虽然session2只需操作p_2107分区,但因为session1持有整个表tt的MDL锁,导致session2的alter语句被阻塞。

    所以分区表在做DDL时,影响会更大。若使用的普通分表,则当你在truncate一个分表时,肯定不会跟另外一个分表上的查询语句,出现MDL锁冲突。

    小结

    在server层,认为这是同一张表,因此所有分区共用同一MDL锁
    在引擎层,认为这是不同表,因此MDL锁之后的执行过程,会根据分区表规则,只访问必要的分区。

    什么是必要的分区
    根据SQL语句中的where条件,结合分区规则。比如上面的where ftime=‘2018-4-1’,根据分区规则year函数算出来的值是2018,那么就会落在p_2019分区。

    但若这个where 条件改成 where ftime>='2018-4-1',虽然查询结果相同,但这时根据where条件,就要访问p_2019p_others俩分区。

    若查询语句的where条件没有分区key,就只能访问所有分区了。当然,这并非分区表的问题。即使是使用业务分表,where条件中没有使用分表的key,也必须访问所有的分表。

    分区表的应用场景

    一大优势是对业务透明,相对于用户分表来说,使用分区表的业务代码更简洁。还有,分区表可以很方便的清理历史数据。

    如果一项业务跑的时间足够长,往往就会有根据时间删除历史数据的需求。这时按时间分区的分区表,就可直接通过alter table t drop partition …这个语法删掉分区,从而删掉过期的历史数据。

    alter table t drop partition …是直接删除分区文件,跟drop普通表类似。与delete相比,优势是速度快、对系统影响小。

    需要注意的是,我是以范围分区(range)为例和你介绍的。实际上,MySQL还支持hash分区、list分区等分区方法。
    实际使用时,分区表跟用户分表,有两个问题:

    • 第一次访问时,需要访问所有分区
    • 共用MDL锁

    因此,如果要使用分区表,就不要创建太多分区。我见过一个用户做了按天分区策略,然后预先创建了10年的分区。这种情况下,访问分区表的性能自然是不好的。这里有两个问题:

    • 分区并不是越细越好
      单表或单分区的数据一千万行,只要没有特别大的索引,对于现在的硬件能力来说都已是小表
    • 分区不要提前预留太多,在使用之前预先创建即可
      比如,如果是按月分区,每年年底时再把下一年度的12个新分区创建上即可。对于没有数据的历史分区,及时drop

    分区表的其他问题,比如查询需要跨多个分区取数据,查询性能就会比较慢,基本上就不是分区表本身的问题,而是数据量或说使用方式问题。
    如果你的团队已经维护了成熟的分库分表中间件,用业务分表,对业务开发同学没有额外的复杂性,对DBA也更直观,自然更好。

    展开全文
  • 路径规划基本介绍(一)

    万次阅读 多人点赞 2019-04-24 21:30:03
    这里仅针对静态路径规划方法进行简单的介绍,以下路径规划仅指在静态环境下的路径规划。 在进行路径规划的时候,我们首先需要考虑的有以下几个方面: a.起点与终点的位置获取 b.障碍物的环境表示 c.规划方法 d.搜索...
  • 日语数字表达方法

    千次阅读 2014-09-26 14:17:03
    日语数字表达方法默认分类  个和基数词 日语中的数量词是非常复杂的,对人和不同的物体的法是不同的。 个法: 一个:一つ ひとつ 六个:六つ むっつ 两个:二つ ふたつ 七个:...
  • matlab人脸识别论文

    万次阅读 多人点赞 2019-10-11 17:41:51
    摘 要 本文设计了一种基于BP神经网络的人脸识别...最后使用经过训练后的BP神经网络对待测人脸进行分类识别。详细介绍了离散小波变换PCA特征提取以及BP神经网络分类设计。通过系统仿真实验与分析发现:人脸特征的提...
  • 2019年常见Elasticsearch 面试题答案详细解析(下)

    千次阅读 多人点赞 2019-12-26 15:51:03
    无论数千还是十亿的唯一值,内存使用量只与你配置的精确度相关。   7、在并发情况下,Elasticsearch 如果保证读写一致? (1)可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用层...
  • 计算机复试面试题总结

    万次阅读 多人点赞 2019-03-07 20:06:56
    直接查找和有序的二查找。 10.排序算法的介绍? 插入排序有直接插入和折半插入。都是在有序表里插入进去的。 交换排序:冒泡,快速:以一个数字划分两个区域,然后分别对两个区域继续划分,直到区间为一。注意...
  • var a = 222122122.6754; var b = a.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');//使用正则替换,每隔三个数加一个','
  • 二极管的分类及常用方法

    万次阅读 多人点赞 2017-09-13 16:23:26
    前面调试一个板子,半天没搞清楚啥问题,直接USB...所以借此总结一下二极管的常见使用方法。1.肖特基二极管1.1概念一般的PN结二极管是利用N型半导体与P型半导体形成的PN结制作而成。肖特基二极管(SBD)不是利用P型半导
  • 2.搭建完成后使用命令查看 git –version 3. 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码 请依次执行一下命令 4.服务器端创建 Git 仓库 设置 /home/data/git/gittest.git 为 G...
  • 关于哈希使用和特点

    千次阅读 2017-08-23 15:08:10
    原文出处: 研究者July  说明:本文分为三部分内容,第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash算法的详细阐述;第三部分为打造一个最快的Hash算法。...假设目前有一万个记录
  • 万用表测量二极管方法

    千次阅读 2012-08-20 17:42:37
    万用表测量二极管方法  2009-02-24 18:46:05| 分类: 工作资料 | 标签: |字号大中小 订阅 怎么用万用表测二极管、发光二极管和三极管的好坏 普通二极管的检测(包括检波二极管、整流二极管、...
  • MySQL优化

    千次阅读 多人点赞 2015-10-30 17:53:20
    当你查询的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录。 在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MySQL数据库引擎会在找到一条...
  • 大数据挖掘DT数据分析 公众号: datadw 情感分析是一种常见的自然语言处理(NLP)方法的应用,特别是在以提取文本的情感内容为目标的分类方法中。通过这种方式,情感分析可以被视为利用一些情感得分指标来量化定性...
  • 电商中如何设计商品结构?

    千次阅读 2019-02-19 10:35:52
    最近在公司启动新项目,我记录了组内讨论设计数据库结构的时候一些思考,如果大佬觉得不对,恳请指出。 以京东为例,手机和空调的规格不一样,手机和手机的规格是一样的,所以不同的种类(分类)的商品,其规格...
  • 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死。严重影响业务。 问题前提:老系统,当时设计系统的人...
  • 读数精度与满量程精度

    千次阅读 2015-06-21 16:17:07
    不确定度从满量程时的万分之一的变成了千分之一。  有一点要说明的是,没有一个压力传感器在全部量程范围永远保持同样的准确。因此读数精度的表示都有一定的范围所限制。还以10MPa 的压力测试仪为例,其指标为...
  • 在开发过程中,我感觉最难受的不是让你去开发一个新的功能,而是去优化一个现有的功能,好多时候都是在优化查询速度,在这里整理总结了一些方法,可供借鉴: 一.因为sql的不规范而引起的引擎放弃使用索引从而进行...
  • 近日,Shiyu Mou 在 Medium 上发表了一篇文章,对五种用于图像分类的方法(KNN、SVM、BP 神经网络、CNN 和迁移学习)进行了实验比较,该研究的相关数据集和代码也已经被发布在了 GitHub 上。项目地址:...
  • Top K 算法详解(哈希Hash的使用)

    千次阅读 2016-06-03 16:26:32
    Top K 算法详解(哈希Hash的使用)
  • 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死。严重影响业务。 问题前提:老系统,当时设计系统的人...
  • 前面讲了SQL优化以及索引的使用、设计优化了,那么接下来就到的设计与优化啦!!!真实地去设计优化单结构以及讲述多设计基本原则(结合真实的生产环境的取舍来讲述)。 文章结构:(1)单设计与优化;(2)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,808
精华内容 45,923
热门标签
关键字:

千分表的读数方法