精华内容
下载资源
问答
  • 冲压展开长度计算公式
  • 3.0mm材料展开长度不易准确计算,应先试轧,得出展开系数后再调整展开尺寸.e. 软料t≦1.6mm,K=0.5(主要有铝料,铜料). 注意:无内R是指客户对内R无要求,或要求不高时,为便于材料的折弯成形,我们的下模做成尖角的形式....

    d241148e716a90e822182aaa85bc15a9.png

    K值取值标准:a. t≦0.8mm,K=0.45b. 0.8mmc. 1.2mmd. t>3.0mm材料展开长度不易准确计算,应先试轧,得出展开系数后再调整展开尺寸.e. 软料t≦1.6mm,K=0.5(主要有铝料,铜料). 注意:无内R是指客户对内R无要求,或要求不高时,为便于材料的折弯成形,我们的下模做成尖角的形式.有时客户的部品图中有内R,一般客户没有特别指出的条件下我们均以尖角起模.

    2 非90˚无内R轧形展开

    5dbe125b9ca05fcbe149ef61074f346b.png

    K值取值标准:a. t≦0.8mm,K=0.45b. 0.8mmc. 1.2mmd. t>3.0mm材料展开长度不易准确计算,应先试轧,得出展开系数后再调整展开尺寸.e.软料t≦1.6mm,K=0.5(主要有铝料,铜料). 注意:无内R是指客户对内R无要求,或要求不高时,为便于材料的折弯成形,我们的下模做成尖角的形式.有时客户的部品图中有内R,一般客户没有特别指出的条件下我们均以尖角起模.

    3 有内R轧形展开

    fefb1e7b7ad341b5642caaf3af2c7f41.png

    备注:当客户部品图中没有特别要求做轧形内R时,我们尽量按尖角设计.有要求时按以上方式进行展开.

    中性层系数确定:

    弯曲处的中性层是假设的一个层面.首先将材料延厚度方向划分出无穷多个厚度趋于0的层面,那么在材料弯曲的过程中长度方向尺寸不变的层面即为材料弯曲处的中性层.由上述可知中性层的尺寸等于部品的展开尺寸.

    1) 铝料/ Al料中性层系数

    172fc0f8512a1cb9169e7bca3fc3e067.png

    2) SPCC,SECC,SUS301,SUS304,SUS430,SPTE,SK5,SK7,铜料中性层系数

    08c50680c2c780c9e83c7262bdf61d78.png

    3) 中性层经验值

    根据我们的实际设计经验,当产品的材料厚度t≦0.3时,产品弯曲处中性层系数K为0.5;当产品的材料厚度t>0.3时,产品弯曲处中性层系数为1/3.此时只需从弯曲的内侧向材料方向偏移kt即为弯曲处的中性层.

    4 Z轧展开

    4.1两次Z轧成形

    00fdbfcfe2dccf61c08c3d47ac8ab269.png

    图中t为材料厚度,H为Z轧折弯高度,在设计时材料厚度≦1.2mm,2.0mm≦轧形高度H≦3.5mm的时,我们通常采用两次Z轧的方式完成材料的Z轧成形.这时轧形展开公式为:

    c80f782434f3801a91dff82472742289.png

    备注:采用此类Z轧成形法,要求轧形高度为2mm以上3.5mm以下,材料厚度在1.2mm以下.

    4.2 一次成形"Z"轧

    1) 轧形高度在一倍料厚之内时,一般采用一次成形.轧形展开尺寸为:

    a2c772502f339374fcf9fe1312a86040.png

    2) 轧形高度在1倍料厚以上2mm以下时,采用一次成形,展开尺寸为:

    5 压平展开L=A+B+@=A''+B''+@''@=1.33t@''=0.42tC=0.7t(有压线)C=0.9t(无压线)t=材料厚度

    8122c38db6f2b9751fb2afe3cdbd6ba0.png

    在模具设计时推平展开按以下公式进行L=A+B+1.33t (t为材料厚度)6 CNC轧形展开 展开公式:L=A+B+@

    067e5d09ef38f7bec5279eabfde0a1e3.png

    df9130e63b77a3f361923f4d4610f0b4.png

    上表补偿值适用于折弯内R为0(包括图纸没有要求一般都当0做)的情况,如果客户图纸有内R要求,则展开方法另计.当材料规格不在此表时可以用@=0.35t(t为材料的厚度)做补偿进行初步展开,再根据实际情况进行调整.7 U形弯曲的展开 L=A+B+(R+0.43t) t:为材料厚度

    1da856c131a422841c92c23ece252968.png

    8 弯曲拉伸复合结构展开

    展开原则:先将直边部分按弯曲展开,圆角部分按拉伸展开,然后用三点切圆(PA-PC-PB)的方式作一段与两直边和直径为D圆心与圆角圆心重合的圆(圆形拉伸的展开形状)相切的圆弧. 当r≦1.5t时,求D值计算公式如下:

    5a9453fa3892d40a22da151bbbb1828d.png

    备注:拉伸处应按等体积法进行计算.9 展开尺寸调整9.1 标注公差不对称尺寸调整

    标注公差不对称尺寸展开时取尺寸公差的中间值.见下例:

    543c6ebf5d0d1f8098a665f85a14b0bc.png

    9.2 孔位加工尺寸的调整 为防止因冲头的磨损而造成孔尺寸因小而超差.我们在设计一般将孔尺寸(所有类型的孔)做到上公差的60%~80%.例:图纸标注Φ5±0.1,起模时将此孔做到Φ5.06; 图纸标注Φ5±0.2,起模时将此孔做到Φ5.15. 但对装钉底孔为保证装配质量,设计时只做大0.06mm(与装钉类型,材料厚度无关,但对需要进行特质特性要求的产品应根据实际情况而定,如装钉前需进行表面阳极氧化处处理的装钉底孔可以再做大0.02~0.03mm,但一般也为不表面处理进行再做大处理).9.3 有特质特性要求产品展开尺寸调整1)需要进行电镀类产品:原料为单光料(光泊)的产品一般需要电镀处理在设计时应根据客户对镀层厚度的要求适当的做小外形尺寸,做大孔尺寸(此时应根据公差的大小与镀层的厚度对尺寸进行相应调整,且仅进行一次调整),使产品电镀之后,能满足图纸的公差要求.关于需电镀产品镀前尺寸处理(对客户来图公差处理): 图纸圆孔(及方孔)Φ±0.1的,做大0.06mm; 图纸圆孔(及方孔)Φ±0.05的,做大0.04mm; 图纸圆孔(及方孔)Φ±0.1以上的,做大0.1mm; 特别是脚仔,图纸标注公差为±0.1的,做小0.06mm,角仔公差±0.1以上的,做小0.1mm.2)需要进行表面阳极氧化类产品,将产品上的孔做大0.02mm(在孔一般放大之后再做大),其余尺寸(如外形尺寸)不需要进行特别的调整.3)需要进行喷油喷粉的产品,在对产品展开图不进行一般调整,只需将孔做大2倍的最大喷层厚度,将其它有影响的外形尺寸用2倍的最大喷层厚度进行调整(喷后尺寸变大的做小,喷后尺寸变小的做大.

    展开全文
  • 一、MySQL 限制回顾之前在《MySQL Text 字段的限制》一文中讲过了关于 MySQL 在 Server 层和 InnoDB 层的限制,但是限制的算法没有详细展开,这里进行补充说明,先回顾一下 MySQL 的两个限制:1.MySQL Server 层的...

    一、MySQL 限制回顾

    之前在《MySQL Text 字段的限制》一文中讲过了关于 MySQL 在 Server 层和 InnoDB 层的限制,但是限制的算法没有详细展开,这里进行补充说明,先回顾一下 MySQL 的两个限制:1.MySQL Server 层的限制为单条记录的大小不超过 65535 字节;2.InnoDB 层不能超过 innodb_page_size 大小的一半(实际上还要小一点,因为要扣除一些页中元数据信息), 以默认的 16K 设置为例,其限制为 8126。另:以下计算方式均已 MySQL 5.7.27 进行说明。二、Server 层限制的计算方法2.1 计算过程一般说来,如果是MySQL Server层做了限制,则返回如下报错:Row size too large. The maximum row size for the used table type,not counting BLOBs, is 65535.This includes storage overhead, check the manual.You have to change some columns to TEXT or BLOBs

    所以可以根据这个报错来定位到计算方式,其关键函数路径如下:mysql_prepare_create_table    /* sql/sql_table.cc:3474 */  --> mysql_create_frm        /* sql/unireg.cc:107     */   --> pack_header           /* sql/unireg.cc:733     */

    在pack_header中存在这部分代码:if (reclength > (ulong) file->max_record_length()) /* 右值为 65535 */{  my_error(ER_TOO_BIG_ROWSIZE, /* 这个就是上面的报错信息对应的状态值 */            MYF(0),            static_cast(file->max_record_length()));  DBUG_RETURN(1);}

    重点在于reclength的值是否大于 65535。因此了解一下reclength 的计算过程:/* sql/unireg.cc:843 */

    if (field->offset + data_offset + length > reclength)

    reclength= field->offset + data_offset + length;

    /*

    field->offset 的计算方式

    sql/sql_table.cc:3816

    */

    while ((sql_field=it++)) {

    /* 省略部分 */

    sql_field->offset= record_offset;  /* 当前记录的数据偏移量 */

    if (MTYP_TYPENR(sql_field->unireg_check) == Field::NEXT_NUMBER)

    auto_increment++;

    if (sql_field->stored_in_db)

    record_offset+= sql_field->pack_length; /* 累加当前字段的pack_length */

    }

    /*

    data_offset 的计算方式

    sql/unireg.cc:139

    */

    data_offset= (create_info->null_bits + 7) / 8;

    /*

    length 的计算方式

    sql/unireg.cc:833

    */

    length=field->pack_length;

    /* 这个pack_length就是和字段类型相关,以varchar为例*/

    /* sql/sql_table.cc:3082 */

    sql_field->sql_type=    MYSQL_TYPE_VAR_STRING;

    sql_field->pack_length= calc_pack_length(sql_field->sql_type,

    (uint) sql_field->length);

    关于 `calc_pack_length` 的计算方式如下:

    size_t calc_pack_length(enum_field_types type, size_t length)

    {

    switch (type) {

    case MYSQL_TYPE_VAR_STRING:

    case MYSQL_TYPE_STRING:

    case MYSQL_TYPE_DECIMAL:     return (length);

    case MYSQL_TYPE_VARCHAR:     return (length + (length < 256 ? 1: 2));

    case MYSQL_TYPE_YEAR:

    case MYSQL_TYPE_TINY  : return 1;

    case MYSQL_TYPE_SHORT : return 2;

    case MYSQL_TYPE_INT24:

    case MYSQL_TYPE_NEWDATE: return 3;

    case MYSQL_TYPE_TIME: return 3;

    case MYSQL_TYPE_TIME2:

    return length > MAX_TIME_WIDTH ?

    my_time_binary_length(length - MAX_TIME_WIDTH - 1) : 3;

    case MYSQL_TYPE_TIMESTAMP: return 4;

    case MYSQL_TYPE_TIMESTAMP2:

    return length > MAX_DATETIME_WIDTH ?

    my_timestamp_binary_length(length - MAX_DATETIME_WIDTH - 1) : 4;

    case MYSQL_TYPE_DATE:

    case MYSQL_TYPE_LONG  : return 4;

    case MYSQL_TYPE_FLOAT : return sizeof(float);

    case MYSQL_TYPE_DOUBLE: return sizeof(double);

    case MYSQL_TYPE_DATETIME: return 8;

    case MYSQL_TYPE_DATETIME2:

    return length > MAX_DATETIME_WIDTH ?

    my_datetime_binary_length(length - MAX_DATETIME_WIDTH - 1) : 5;

    case MYSQL_TYPE_LONGLONG: return 8;   /* Don't crash if no longlong */

    case MYSQL_TYPE_NULL  : return 0;

    case MYSQL_TYPE_TINY_BLOB:    return 1+portable_sizeof_char_ptr;

    case MYSQL_TYPE_BLOB:     return 2+portable_sizeof_char_ptr;

    case MYSQL_TYPE_MEDIUM_BLOB:  return 3+portable_sizeof_char_ptr;

    case MYSQL_TYPE_LONG_BLOB:    return 4+portable_sizeof_char_ptr;

    case MYSQL_TYPE_GEOMETRY: return 4+portable_sizeof_char_ptr;

    case MYSQL_TYPE_JSON:         return 4+portable_sizeof_char_ptr;

    case MYSQL_TYPE_SET:

    case MYSQL_TYPE_ENUM:

    case MYSQL_TYPE_NEWDECIMAL:

    abort(); return 0;                          // This shouldn't happen

    case MYSQL_TYPE_BIT: return length / 8;

    default:

    return 0;

    }

    }

    2.2 小结

    根据上面计算方式的梳理,在MySQL Server层计算长度的公式,可以写成这样的伪代码:data_offset = (number_null_field + 7) / 8; /*number_null_field表示允许为null的字段数*/

    total_length = 0;

    for (int i = 0; i < n_fileds; i++) {

    total_length += calc_pack_length(field_type, length)

    }

    /*

    field_type:数据类型

    length:数据的字节数

    注意varchar(100) 的字节数,在utf8mb4环境下,字节数为400

    */

    total_length += data_offset;

    通过上述计算,需要满足total_length <= 65535,即可通过 MySQL Server 层的检查。

    三、InnoDB 层限制的计算方法3.1 计算过程InnooDB 层面如果出现长度超过限制,报错如下所示:ERROR 1118 (42000): Row size too large (> 8126).Changing some columns to TEXT or BLOB may help.In current row format, BLOB prefix of 0 bytes is stored inline.

    通过对报错信息的搜索,其判断方式如下:/* dict0dict.cc:2515 */

    /* Check the size limit on leaf pages. */

    if (rec_max_size >= page_rec_max) {

    ib::error_or_warn(strict)

    << "Cannot add field " << field->name

    << " in table " << table->name

    << " because after adding it, the row size is "

    << rec_max_size

    << " which is greater than maximum allowed"

    " size (" << page_rec_max

    << ") for a record on index leaf page.";

    return(TRUE);

    }

    其中page_rec_max的定义如下:/* dict0dict.cc:2431 */

    page_rec_max = srv_page_size == UNIV_PAGE_SIZE_MAX

    ? REC_MAX_DATA_SIZE - 1

    : page_get_free_space_of_empty(comp) / 2;

    /* srv0srv.cc:222 */

    ulong srv_page_size = UNIV_PAGE_SIZE_DEF;

    /* 这个是默认值(DEF),如果my.cnf中配置page_size为32K,那这个值就是32K */

    /* univ.i:343 */

    # define UNIV_PAGE_SIZE_DEF    (1 << UNIV_PAGE_SIZE_SHIFT_DEF)

    /* univ.i:332 */

    # define UNIV_PAGE_SIZE_SHIFT_DEF    14

    /* univ.i:341 */

    # define UNIV_PAGE_SIZE_MAX    (1 << UNIV_PAGE_SIZE_SHIFT_MAX)

    /* univ.i:330 */

    # define UNIV_PAGE_SIZE_SHIFT_MAX    16

    /* rem0rec.h:1092 */

    # define REC_MAX_DATA_SIZE    16384

    从上面的源码定义中可以看到:1. srv_page_size 的默认值为1<<14即 16384,而我们配置也是 16384;2. UNIV_PAGE_SIZE_MAX 的值为1<<16即 65536;因此srv_page_size==UNIV_PAGE_SIZE_MAX不成立,所以page_rec_max=page_get_free_space_of_empty(comp) / 2其中page_get_free_space_of_empty的定义如下:/*************************************************************//**

    Calculates free space if a page is emptied.

    @return free space */

    UNIV_INLINE

    ulint

    page_get_free_space_of_empty(

    /*=========================*/

    ulint   comp)       /*!< in: nonzero=compact page layout */

    {

    if (comp) { /* 现在发布版本的配置,会走这个逻辑 */

    return((ulint)(UNIV_PAGE_SIZE

    - PAGE_NEW_SUPREMUM_END

    - PAGE_DIR

    - 2 * PAGE_DIR_SLOT_SIZE));

    } /* 16384 - 120 - 8 - 4 = 16252 */

    return((ulint)(UNIV_PAGE_SIZE

    - PAGE_OLD_SUPREMUM_END

    - PAGE_DIR

    - 2 * PAGE_DIR_SLOT_SIZE));

    }

    /* univ.i:312 */

    # define UNIV_PAGE_SIZE        ((ulint) srv_page_size)

    /* 在我们的版本中为 16384 */

    /* page0page.h:122 */

    # define PAGE_NEW_SUPREMUM_END (PAGE_NEW_SUPREMUM + 8)

    /* 38 + 36 + 2*10 + 2*5 + 8 + 8 = 120 */

    /* page0page.h:119 */

    # define PAGE_NEW_SUPREMUM    (PAGE_DATA + 2 * REC_N_NEW_EXTRA_BYTES + 8)

    /* page0page.h:104 */

    # define PAGE_DATA    (PAGE_HEADER + 36 + 2 * FSEG_HEADER_SIZE)

    /* page0page.h:56 */

    # define    PAGE_HEADER FSEG_PAGE_DATA

    /* fsp0types.h:68 */

    # define FSEG_PAGE_DATA        FIL_PAGE_DATA

    /* fil0fil.h:517 */

    # define FIL_PAGE_DATA        38U

    /* fsp0types.h:81 */

    # define FSEG_HEADER_SIZE    10

    /* rem0rec.h:52 */

    # define REC_N_NEW_EXTRA_BYTES    5

    /* page0page.h:152 */

    # define    PAGE_DIR        FIL_PAGE_DATA_END

    /* fil0fil.h:525 */

    # define FIL_PAGE_DATA_END    8

    /* page0page.h:155 */

    # define    PAGE_DIR_SLOT_SIZE  2

    如上所示,page_get_free_space_of_empty(comp)返回的值为 16252,即page_rec_max=16252 / 2,刚好等于8126,其实从上面的报错结果(> 8126)也可以推测出来。接下来我们看一下一条记录实际长度(rec_max_size)的计算方式:我们把代码精简一下,其计算过程如下:/* 下面是函数 dict_index_too_big_for_tree 中关于  rec_max_size 计算部分的内容 */

    /* 涉及到的辅助函数,下面也有相关说明 */

    rec_max_size = comp /* comp 为 true */

    ? REC_N_NEW_EXTRA_BYTES  /* rem0rec.h:52:#define REC_N_NEW_EXTRA_BYTES    5 */

    : REC_N_OLD_EXTRA_BYTES; /* rem0rec.h:49:#define REC_N_OLD_EXTRA_BYTES    6 */

    rec_max_size += UT_BITS_IN_BYTES(new_index->n_nullable);

    /*

    这个宏的实现如下:

    ut0ut.h:222

    #define UT_BITS_IN_BYTES(b) (((b) + 7) / 8)

    即 (允许为空的字段个数 + 7) / 8

    */

    for (i = 0; i < new_index->n_fields; i++) {

    const dict_field_t* field

    = dict_index_get_nth_field(new_index, i);

    const dict_col_t*   col

    = dict_field_get_col(field);

    ulint           field_max_size;

    ulint           field_ext_max_size;

    /* In dtuple_convert_big_rec(), variable-length columns

    that are longer than BTR_EXTERN_LOCAL_STORED_MAX_SIZE

    may be chosen for external storage.

    Fixed-length columns, and all columns of secondary

    index records are always stored inline. */

    /* Determine the maximum length of the index field.

    The field_ext_max_size should be computed as the worst

    case in rec_get_converted_size_comp() for

    REC_STATUS_ORDINARY records. */

    field_max_size = dict_col_get_fixed_size(col, comp);

    /* 本质上是判断是否定长,并获得定长字段的字节数*/

    /*如果是定长,则直接 goto add_field_size 进行求值*/

    if (field_max_size && field->fixed_len != 0) {

    /* dict_index_add_col() should guarantee this */

    ut_ad(!field->prefix_len

    || field->fixed_len == field->prefix_len);

    /* Fixed lengths are not encoded

    in ROW_FORMAT=COMPACT. */

    field_ext_max_size = 0;

    goto add_field_size;

    }

    /*如果是变长,则计算最大值,然后求 field_ext_max_size的长度,

    这个是用户存储字段长度的变量

    这个只是默认初始值,后面会根据长度进行溢出页的设置

    */

    field_max_size = dict_col_get_max_size(col);

    field_ext_max_size = field_max_size < 256 ? 1 : 2;

    if (field->prefix_len) {

    /* 建表判断长度时,直接走else即可,这里会在建立二级索引时用到,但是和聚集索引不是一颗B_Tree,因此可以忽略 */

    if (field->prefix_len < field_max_size)  {

    field_max_size = field->prefix_len;

    }

    } else if (field_max_size > BTR_EXTERN_LOCAL_STORED_MAX_SIZE

    && dict_index_is_clust(new_index)) {

    /*

    btr0types.h:56

    #define BTR_EXTERN_LOCAL_STORED_MAX_SIZE    \

    (BTR_EXTERN_FIELD_REF_SIZE * 2)

    btr0types.h:53

    #define BTR_EXTERN_FIELD_REF_SIZE   FIELD_REF_SIZE

    page0size.h:32

    #define FIELD_REF_SIZE 20

    所以这段代码的意思为:

    如果变长字段的最大值大于40 (溢出页指针的2倍),则这个字段在页内

    只保留40个字节,且长度变量设置为1,即总共占用41个字节。*/

    /* In the worst case, we have a locally stored

    column of BTR_EXTERN_LOCAL_STORED_MAX_SIZE bytes.

    The length can be stored in one byte.  If the

    column were stored externally, the lengths in

    the clustered index page would be

    BTR_EXTERN_FIELD_REF_SIZE and 2. */

    field_max_size = BTR_EXTERN_LOCAL_STORED_MAX_SIZE;

    field_ext_max_size = 1;

    }

    if (comp) {

    /* Add the extra size for ROW_FORMAT=COMPACT.

    For ROW_FORMAT=REDUNDANT, these bytes were

    added to rec_max_size before this loop. */

    rec_max_size += field_ext_max_size;

    }

    add_field_size:

    rec_max_size += field_max_size;

    /* Check the size limit on leaf pages. */

    if (rec_max_size >= page_rec_max) {

    ib::error_or_warn(strict)

    << "Cannot add field " << field->name

    << " in table " << table->name

    << " because after adding it, the row size is "

    << rec_max_size

    << " which is greater than maximum allowed"

    " size (" << page_rec_max

    << ") for a record on index leaf page.";

    return(TRUE);

    }

    / * 省略后续代码,相关辅助函数:*/

    ulint

    dict_col_get_fixed_size(

    /*====================*/

    const dict_col_t*   col,    /*!< in: column */

    ulint           comp)   /*!< in: nonzero=ROW_FORMAT=COMPACT */

    {

    return(dtype_get_fixed_size_low(col->mtype, col->prtype, col->len,

    col->mbminmaxlen, comp));

    /*

    根据实现,可以简单的计算为:

    1. 定长的为显示指定的 字符数*字符宽度

    - 例如 char(10), 在 utf8mb4 里面,字节为 40

    2. 变长的直接返回0

    */

    }

    /***********************************************************************//**

    Returns the size of a fixed size data type, 0 if not a fixed size type.

    @return fixed size, or 0 */

    UNIV_INLINE

    ulint

    dtype_get_fixed_size_low(

    /*=====================*/

    ulint   mtype,      /*!< in: main type */

    ulint   prtype,     /*!< in: precise type */

    ulint   len,        /*!< in: length */

    ulint   mbminmaxlen,    /*!< in: minimum and maximum length of

    a multibyte character, in bytes */

    ulint   comp)       /*!< in: nonzero=ROW_FORMAT=COMPACT  */

    {

    switch (mtype) {

    case DATA_SYS:

    # ifdef UNIV_DEBUG

    switch (prtype & DATA_MYSQL_TYPE_MASK) {

    case DATA_ROW_ID:

    ut_ad(len == DATA_ROW_ID_LEN);

    break;

    case DATA_TRX_ID:

    ut_ad(len == DATA_TRX_ID_LEN);

    break;

    case DATA_ROLL_PTR:

    ut_ad(len == DATA_ROLL_PTR_LEN);

    break;

    default:

    ut_ad(0);

    return(0);

    }

    # endif /* UNIV_DEBUG */

    // Fall through.

    case DATA_CHAR:

    case DATA_FIXBINARY:

    case DATA_INT:

    case DATA_FLOAT:

    case DATA_DOUBLE:

    case DATA_POINT:

    return(len);

    case DATA_MYSQL:

    # ifndef UNIV_HOTBACKUP

    if (prtype & DATA_BINARY_TYPE) {

    return(len);

    } else if (!comp) {

    return(len);

    } else {

    #ifdef UNIV_DEBUG

    ulint   i_mbminlen, i_mbmaxlen;

    innobase_get_cset_width(

    dtype_get_charset_coll(prtype),

    &i_mbminlen, &i_mbmaxlen);

    ut_ad(DATA_MBMINMAXLEN(i_mbminlen, i_mbmaxlen)

    == mbminmaxlen);

    # endif /* UNIV_DEBUG */

    if (DATA_MBMINLEN(mbminmaxlen)

    == DATA_MBMAXLEN(mbminmaxlen)) {

    return(len);

    }

    }

    # else /* !UNIV_HOTBACKUP */

    return(len);

    # endif /* !UNIV_HOTBACKUP */

    /* fall through for variable-length charsets */

    case DATA_VARCHAR:

    case DATA_BINARY:

    case DATA_DECIMAL:

    case DATA_VARMYSQL:

    case DATA_VAR_POINT:

    case DATA_GEOMETRY:

    case DATA_BLOB:

    return(0);

    default:

    ut_error;

    }

    return(0);

    }

    ulint

    dict_col_get_max_size(

    /*==================*/

    const dict_col_t*   col)    /*!< in: column */

    {

    return(dtype_get_max_size_low(col->mtype, col->len));

    }

    ulint

    dtype_get_max_size_low(

    /*===================*/

    ulint   mtype,      /*!< in: main type */

    ulint   len)        /*!< in: length */

    {

    switch (mtype) {

    case DATA_SYS:

    case DATA_CHAR:

    case DATA_FIXBINARY:

    case DATA_INT:

    case DATA_FLOAT:

    case DATA_DOUBLE:

    case DATA_MYSQL:

    case DATA_VARCHAR:

    case DATA_BINARY:

    case DATA_DECIMAL:

    case DATA_VARMYSQL:

    case DATA_POINT:

    return(len);

    case DATA_VAR_POINT:

    case DATA_GEOMETRY:

    case DATA_BLOB:

    break;

    default:

    ut_error;

    }

    return(ULINT_MAX);

    }

    3.2 小结

    根据上面计算方式的梳理,在InnoDB Server层计算长度的公式,可以写成这样的伪代码:rec_max_size = 5;

    /*

    innodb header 中固定的两个值

    DB_TRX_ID: 6 Byte

    DB_ROLL_PTR: 7 Byte

    */

    rec_max_size += 6+7;

    /* rem0rec.h:70

    # define REC_NODE_PTR_SIZE    4

    dict0dict.cc:2536

    rec_max_size + REC_NODE_PTR_SIZE >= page_ptr_max

    */

    rec_max_size += 4;

    rec_max_size += (number_null_field + 7) / 8; /*number_null_field表示允许为null的字段数*/

    for (int i = 0; i < n_fileds; i++) {

    /* 定长字段 */

    if (field.type is fixed) {

    rec_max_size += filed.length;

    /*char需要 x4个字节的 utf8mb4类型*/

    continue;

    }

    /* 变长字段 */

    field_ext_max_size = 1;

    if (field.type is variable) {

    field_max_size = field.length > 40 ? 40 : field.length;

    }

    rec_max_size += field_max_size + field_ext_max_size;

    }

    通过上述计算,需要满足rec_max_size< 8126,即可通过 InnoDB 层的检查。

    四、总结1. 必须在 MySQL Server 层和 InnoDB 层同时满足上述条件,才能建表成功;

    2. 如果出现上述报错情况,大部分是因为 varchar 等设置过大,建议可以将一些字段逐步缩小,或者用 text 进行代替;

    e1283d1317acb69958d9c553766d873c.png

    展开全文
  • 展开全部截面模量的不同的计算公式如下:e68a8432313133353236313431303231363533313333656565381.矩形截面抵抗矩:(其中b为与弯矩垂直方向的长度)。2.圆形截面的抵抗矩:抗弯时(其中d为直径)抗扭时。3.圆环截面抵抗...

    展开全部

    截面模量的不同的计算公式如下:e68a843231313335323631343130323136353331333365656538

    1.矩形截面抵抗矩:

    278ad411c5082c7077102140c2b3a88f.png (其中b为与弯矩垂直方向的长度)。

    2.圆形截面的抵抗矩:

    抗弯时 e717eea2f35cb4c32b4b2c1fb67d1803.png (其中d为直径)

    抗扭时 be39fd66316ddce68337400b2559f4a7.png 。

    3.圆环截面抵抗矩:

    抗弯时2b101d7f3a8b6a2208a40b3b082a2902.png

    抗扭时 f66bf7d1114c90d4b509cec22e966d5e.png

    ccd7ba072a5e865cf868611eee63512e.png

    拓展资料

    截面模量又叫截面抵抗矩。被弯曲构件的横截面绕其中性轴的惯性矩除以由中性轴到截面最外边缘的距离。截面抵抗矩(W)就是截面对其形心轴惯性矩与截面上最远点至形心轴距离的比值。

    被弯曲构件的横截面绕其中性轴的惯性矩除以由中性轴到截面最外边缘的距离。(单轴对称时,有一个最大截面模量和一个最小截面模量。)可以用来计算截面受弯时的正应力大小。

    截面抵抗矩(W)就是截面对其形心轴惯性矩与截面上最远点至形心轴距离的比值。 工程实际中最常见的弯曲问题是横力弯曲,横截面上不仅有正应力,而且还有切应力。由于切应力的作用,横截面发生翘曲,平面假设不再成立。

    但进一步的理论分析证明,对于跨长与截面高度比 l/h>5 的长梁利用公式δ=My/I 来计算其横力弯曲的正应力,所得结果误差甚微,足够满足工程实际需要。其中W=I/y,W称为抗弯截面系数。 由于横力弯曲时,梁的弯矩随截面位置变化,Mmax所在截面称为危险截面,最大弯曲正应力发生在弯矩最大的截面上,且离中心轴最远处,该处为危险点。

    展开全文
  • 展开全部方钢重量(公斤)=0.00785×边宽×边宽×长度1、其基本公式为:e5a48de588b63231313335323631343130323136353331333431363633W(重量kg)=F(断面积mm2)×L(长度,m)×ρ(密度g/cm3)×1/10002、圆钢重量(公斤)=0...

    展开全部

    方钢重量(公斤)=0.00785×边宽×边宽×长度

    1、其基本公式为:e5a48de588b63231313335323631343130323136353331333431363633W(重量kg)=F(断面积mm2)×L(长度,m)×ρ(密度g/cm3)×1/1000

    2、圆钢重量(公斤)=0.00617×直径×直径×长度

    3、六角钢重量(公斤)=0.0068×对边宽×对边宽×长度

    4、钢材实际重量是指钢材以实际称量(过磅)所得的重量,称之为实际重量。实际重量要比理论重量准。

    扩展资料

    钢特点

    1、材料强度高,自身重量轻

    钢材强度较高,弹性模量也高。与混凝土和木材相比,其密度与屈服强度的比值相对较低,因而在同样受力条件下钢结构的构件截面小,自重轻,便于运输和安装,适于跨度大,高度高,承载重的结构。

    2、钢材韧性,塑性好,材质均匀,结构可靠性高

    适于承受冲击和动力荷载,具有良好的抗震性能。钢材内部组织结构均匀,近于各向同性匀质体。钢结构的实际工作性能比较符合计算理论。所以钢结构可靠性高。

    3、钢结构制造安装机械化程度高

    钢结构构件便于在工厂制造、工地拼装。工厂机械化制造钢结构构件成品精度高、生产效率高、工地拼装速度快、工期短。钢结构是工业化程度最高的一种结构。

    展开全文
  • 提醒:点上方↑↑↑“钣金学习网”免费关注90度折弯折弯系数最简单的计算方法就属90度折弯系数经验公式:1.7倍料厚计算方法了。这个公式是怎么使用的?...计算的就是展开长度了。这个1.7有人说是1.6或1.65倍,...
  • 钣金件折弯处大圆弧(即R角)很大时,展开长度需要用中性层计算方法。圆弧多大可以用中性层计算呢?这里介绍一个比例关系,当R/T大于等于6.5时,圆弧的展开就可以用中性层计算了... 列公式展开长度=L1+L2+1.57*(R+0...
  • 展开全部钢结构焊缝中焊脚尺寸:1、焊接焊脚高度有两种标注,K和a,K表示在角焊缝横32313133353236313431303231363533e4b893e5b19e31333431353961截面中画出的最大等腰直角三角形中直角边的长度,a只要在K的基础上X1...
  • 展开全部轮缘宽B=(Z-1)e+2f=(6-1)×e68a84e8a2ad323131333532363134313032313635333133343136353815+2×9=93 e和f值;轮毂孔径ds=d=轴的直径;轮毂长度l=(1.5—2)ds;V带轮是跟电机配合的,那直接用电机轴径,标准的...
  • 90度折弯折弯系数最简单的计算方法就属90度折弯系数经验公式:1.7倍料厚计算方法了。...计算的就是展开长度了。这个1.7有人说是1.6或1.65倍,对的,是可以轻微调整的。因为每家钣金厂用的折弯模具...
  • 中性层系数K值① 展开的基本公式展开长度=料内+料内+补偿量CAD五金冲压模具设计 - 知乎​www.zhihu.com② 中性层半径R=r+kt k为中性层系数。③ 中性层在折弯过程中长度不变。④ K1适用于有顶底的V形或U形弯曲,K2...
  • 钣金90度折弯折弯系数最简单的计算方法就属90度折弯系数经验公式:1.7倍料厚计算方法了。...计算的就是展开长度了。这个1.7有人说是1.6或1.65倍,对的,是可以轻微调整的。因为每家钣金厂用的折弯...
  • 展开全部相关计算:和计算内切球心一样算出圆心所在直线(即顶点与底面重心的连32313133353236313431303231363533e4b893e5b19e31333365666264线)的长度,即可算出顶点与球心的距离(即外接球半径)。其中R为外接球半径,...
  • 折弯系数计算公式用最简单最好。实际上,如果不要求精准的钣金误差,可以用简单的方法就可计算折弯系数了。 折弯系数最简单的计算方法就属90度折弯系数经验公式:1.7倍料厚计算方法了。这个公式是怎么使用的?用在90...
  • 【算法】康托展开

    2017-11-14 23:01:06
    康托展开公式 X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0!解释公式的实质是将一个数列转换为一个数字;而这个数字恰恰是此数列中元素从小到大全排列形成的所有数列中的顺序编号.列子 例如有一个数组S=...
  • 8·10 泰勒展开式·马克劳林展开式及其余项形式 8·11 幂级数的逐项微分法 8·12 偏导数 第十二章 积分学 1.不定积分 1·1 原函数和不定积分 1·2 不定积分的法则与公式 1·3 常用初等函数的不定积分公式 1·4 有理...
  • 8·10 泰勒展开式·马克劳林展开式及其余项形式 8·11 幂级数的逐项微分法 8·12 偏导数 第十二章 积分学 1.不定积分 1·1 原函数和不定积分 1·2 不定积分的法则与公式 1·3 常用初等函数的不定积分公式 1·4 有理...
  • 展开全部两种方法:一、最简单的,使用三32313133353236313431303231363533e4b893e5b19e31333431336161角函数的余弦定理。c²=a²+b²-2abcosC依据上述公式,直接求解,即得。二、勾股定理,以已知的一边为斜边,...
  • 钣金折弯系数

    2018-06-25 15:24:07
    L: 钣金展开长度(Developed length) R: 折弯处的内侧半径(Inner radius) T: 材料厚度 θ: 折弯角度 Y系数: 由折弯中线(Neurtal bend line)的位置决定的一个常数,其默认值为0.5(所谓的“折弯中线”)。可在...
  • 可以用来计算展开长度。SolidWorks钣金折弯参数也是整合了所有的计算方法,用于软件内部的计算。但是没有解决根本问题,找出最简单的折弯计算公式。K因子是SolidWorks钣金折弯参数中最好用的,90度折弯和非90度折...
  • 数据挖掘主要算法.doc

    2020-01-11 13:46:47
    . . word教育资料 朴素贝叶斯 有... 计算公式如下 ? 其中一项条件概率可以通过朴素贝叶斯条件独立展开要注意一点就是?的计算方法而由朴素贝叶斯的前提假设可知?=?因此一般有两种一种是在类别为ci的那些样本集中找到w
  • 计算公式如下 ? 其中一项条件概率可以通过朴素贝叶斯条件独立展开要注意一点就是?的计算方法而由朴素贝叶斯的前提假设可知?=?因此一般有两种一种是在类别为ci的那些样本集中找到wj出现次数的总
  • 数据挖掘主要算法.pdf

    2020-10-07 04:56:22
    .... 计算公式如下 其中一项条件概率可以通过朴素贝叶斯条件独立展开 要注意一点就是 的计 算方法而由朴素贝叶斯的前提假设可知 = 因此一般有两种 一种 是在类别为 ci 的那些样本集中 找到 wj 出现
  • 机器学习常见模型分析与比较

    万次阅读 2017-09-03 15:43:09
    朴素贝叶斯:  有以下几个地方需要注意: ... 计算公式如下:    其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是 的计算方法,而由朴素贝叶斯的前提假设可知, = ,因
  • 朴素贝叶斯 ...2. 计算公式如下: 其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是 的计算方法,而由朴素贝叶斯的前提假设可知, = ,因此一般有两种,一种
  • 机器学习算法总结

    2017-08-02 08:21:50
    朴素贝叶斯:  有以下几个地方需要注意:  1.... 计算公式如下:    其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是 的计算方法,而由朴素贝叶斯的前提假设可知, = ,
  • 机器学习面试

    2017-08-15 10:24:12
    朴素贝叶斯:  有以下几个地方需要注意: ... 计算公式如下:    其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是 的计算方法,而由朴素贝叶斯的前提假设可知, = ,因
  • 朴素贝叶斯:  有以下几个地方需要注意:  1.... 计算公式如下:    其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是的计算方法,而由朴素贝叶斯的前提假设可知...

空空如也

空空如也

1 2 3 4
收藏数 78
精华内容 31
关键字:

展开长度计算公式