分析全志Tina打包流程,并在buildroot上来实现打包生成tina镜像,支持PhoenixSuit烧写

news2025/2/25 21:10:47

本文转载自全志在线:https://bbs.aw-ol.com/topic/1532/

步骤简述

首先记录下官方 tina-sdk 打包的log输出。

book@virtual-machine:~/D1s-Core/tina-d1-h$ pack
--==========--
PACK_CHIP         sun20iw1p1
PACK_PLATFORM     tina
PACK_BOARD        d1-h-nezha
PACK_KERN
PACK_DEBUG        uart0
PACK_SIG          none
PACK_SECURE       none
PACK_MODE         normal
PACK_FUNC         android
PACK_PROGRAMMER   none
PACK_TAR_IMAGE    none
PACK_TOPDIR       /home/book/D1s-Core/tina-d1-h
--==========--
No kernel param, parse it from d1-h
copying tools file
copying configs file
storage_type value is 5
rm /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition_nor.fex
rm /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/image_nor.cfg
copying boot resource

LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03
copying boot file
make user resource for : /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.fex
handle partition user-res
no user resource partitions
APP_PART_DOWNLOAD_FILE = /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/app.fex
Need size of filesystem
no data resource partitions
don't build dtbo ...

create sys_partiton.fex +++++++++++++++++++++++++++++++++++++++++++++++++++++4
argc = 2
input name sys_partition.fex
Script 1 source file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.fex
Script 1 bin file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
update_fdt: num 1752 randto1k
parser 1 file ok
create sys_partiton.fex+++++++++++++++++++++++++++++++++++++++++++++++++++++5
update_chip
pack boot package
GetPrivateProfileSection read to end
content_count=3
LICHEE_REDUNDANT_ENV_SIZE config in BoardConfig.mk
--mkenvimage create redundant env data!--
---redundant env data size 0x20000---
packing for tina linux
normal
update mbr use 4++++++++++++++++++++++
mbr count = 4
partitation file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
mbr_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sunxi_mbr.fex
download_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/dlinfo.fex

mbr size = 252
mbr magic softw411
disk name=boot-resource
disk name=env
disk name=env-redund
disk name=boot
disk name=rootfs
disk name=dsp0
disk name=recovery
this is not a partition key
update_for_part_info 0
crc 0 = 4c7bc2df
crc 1 = d9c69382
crc 2 = bc706624
crc 3 = 29cd3779
gpt_head->header_crc32 = 0x892c53ba
GPT----part num 8---
gpt_entry: 128
gpt_header: 92
GPT:boot-resource: a1f8          c177
GPT:env         : c178          c36f
GPT:env-redund  : c370          c567
GPT:boot        : c568          1161f
GPT:rootfs      : 11620         1b597
GPT:dsp0        : 1b598         1b987
GPT:recovery    : 1b988         227c7
GPT:UDISK       : 227c8         ffffffde
update gpt file ok
update mbr file ok
temp = 20
mbr count = 4 total_sectors = 15269888 logic_offset = 40960

partitation file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
mbr_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sunxi_mbr.fex
download_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/dlinfo.fex

mbr size = 252
mbr magic softw411
disk name=boot-resource
disk name=env
disk name=env-redund
disk name=boot
disk name=rootfs
disk name=dsp0
disk name=recovery
this is not a partition key
update_for_part_info 0
crc 0 = 4c7bc2df
crc 1 = d9c69382
crc 2 = bc706624
crc 3 = 29cd3779
gpt_head->header_crc32 = 0x1328fa28
GPT----part num 8---
gpt_entry: 128
gpt_header: 92
GPT:boot-resource: a1f8          c177
GPT:env         : c178          c36f
GPT:env-redund  : c370          c567
GPT:boot        : c568          1161f
GPT:rootfs      : 11620         1b597
GPT:dsp0        : 1b598         1b987
GPT:recovery    : 1b988         227c7
GPT:UDISK       : 227c8         e8ffde
update gpt file ok
update mbr file ok
cp sys parttion.fex  for dragon.fex ++++++++++++++++++++++++++++
====================================
show "sys_partition_for_dragon.fex" message
------------------------------------
  [mbr]
  mbr_size  : 252 Kbyte
------------------------------------
  partition_name  : boot-resource
  partition_size  : 8064
  downloadfile  : boot-resource.fex
  boot-resource.fex size : 3.0M byte
------------------------------------
  partition_name  : env
  partition_size  : 504
  downloadfile  : env.fex
  env.fex size : 128K byte
------------------------------------
  partition_name  : env-redund
  partition_size  : 504
  downloadfile  : env.fex
  env.fex size : 128K byte
------------------------------------
  partition_name  : boot
  partition_size  : 20664
  downloadfile  : boot.fex
  boot.fex -> /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/boot.img
  boot.img size : 5.0M byte
------------------------------------
  partition_name  : rootfs
  partition_size  : 40824
  downloadfile  : rootfs.fex
  rootfs.fex -> /home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/rootfs.img
  rootfs.img size : 5.9M byte
------------------------------------
  partition_name  : dsp0
  partition_size  : 1008
  downloadfile  : dsp0.fex
  dsp0.fex size : 249K byte
------------------------------------
  partition_name  : recovery
  partition_size  : 28224
------------------------------------
/home/book/D1s-Core/tina-d1-h/out/host/bin/
/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image
Begin Parse sys_partion.fex
Add partion boot-resource.fex BOOT-RESOURCE_FEX
Add partion very boot-resource.fex BOOT-RESOURCE_FEX
FilePath: boot-resource.fex
FileLength=2f8c00Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion boot.fex BOOT_FEX00000000
Add partion very boot.fex BOOT_FEX00000000
FilePath: boot.fex
FileLength=4f4000Add partion rootfs.fex ROOTFS_FEX000000
Add partion very rootfs.fex ROOTFS_FEX000000
FilePath: rootfs.fex
FileLength=5e0000Add partion dsp0.fex DSP0_FEX00000000
Add partion very dsp0.fex DSP0_FEX00000000
FilePath: dsp0.fex
FileLength=3e38cBuildImg 0
Dragon execute image.cfg SUCCESS !
----------image is for nand/emmc----------
----------image is at----------

/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/tina_d1-h-nezha_uart0.img

pack finish

分析打包过程

从上述log可以看出整个打包过程大致分为这么几个步骤

  1. 指定一些比较环境变量,比如镜像输出目录 镜像的一些配置信息。
  2. 之后将镜像拷贝到需要打包的目录下,开始进行统一处理
  3. 根据文件系统分区信息,将其转换成 适合后续程序使用的格式。
  4. 转换分区信息为 专门的GPT/MBR分区头部。
  5. 使用dragon打包,将所有配置文件里指定的文件,进行汇总,打包输出。

使用命令操作 主要分为4步

busybox unix2dos sys_partition.fex
tina-d1-h/tools/pack-bintools/src/script  sys_partition.fex
tina-d1-h/tools/pack-bintools/src/update_mbr  sys_partition.bin 4
tina-d1-h/tools/pack-bintools/src/dragon  image.cfg sys_partition.fex

dragon分析

这里面 最关键的就是 sys_partition.fex 文件,它定义了分区的信息 以及大小等。
可以进入 编译后的 tina-d1-h/out/d1-h-nezha/image 目录下查看。

在这里插入图片描述

我们可以直接cat sys_partition.fex文件

book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ cat sys_partition_for_dragon.fex
;---------------------------------------------------------------------------------------------------
; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串
;---------------------------------------------------------------------------------------------------


;---------------------------------------------------------------------------------------------------
;                                   固件下载参数配置
;---------------------------------------------------------------------------------------------------
;***************************************************************************************************
;    mbr的大小, 以Kbyte为单位
;***************************************************************************************************
[mbr]
size = 252

;***************************************************************************************************
;                                              分区配置
;
;
;  partition 定义范例:
;    [partition]                ;  //表示是一个分区
;    name        = USERFS2      ; //分区名称
;    size        = 16384        ; //分区大小 单位: 扇区.分区表示个数最多2^31 * 512 = 2T
;    downloadfile = "123.fex"   ; //下载文件的路径和名称,可以使用相对路径,相对是指相对于image.cfg文件所在分区。也可以使用绝对路径
;    keydata     = 1            ; //私有数据分区,重新量产数据将不丢失
;    encrypt     = 1            ; //采用加密方式烧录,将提供数据加密,但损失烧录速度
;    user_type   = ?            ; //私有用法
;    verify      = 1            ; //要求量产完成后校验是否正确
;
; 注:1、name唯一, 不允许同名
;     2、name最大12个字符
;     3、size = 0, 将创建一个无大小的空分区
;     4、align to logical block size(504 sectors), leb size = 2*(1 nand phy block size - 1 phy page size)
;***************************************************************************************************
[partition_start]

[partition]
    name         = boot-resource
    size         = 8064
    downloadfile = "boot-resource.fex"
    user_type    = 0x8000


[partition]
    name         = env
    size         = 504
    downloadfile = "env.fex"
    user_type    = 0x8000

[partition]
    name         = env-redund
    size         = 504
    downloadfile = "env.fex"
    user_type    = 0x8000

[partition]
    name         = boot
    size         = 20664
    downloadfile = "boot.fex"
    user_type    = 0x8000

[partition]
    name         = rootfs
    size         = 40824
    downloadfile = "rootfs.fex"
    user_type    = 0x8000

[partition]
    name         = dsp0
    size         = 1008
    downloadfile = "dsp0.fex"
    user_type    = 0x8000

[partition]
    name         = recovery
    size         = 28224
    ;downloadfile = "recovery.fex"
    user_type    = 0x8000

这里面所有的 downloadfile文件 都是我们编译出来要烧写的文件。所以只需要把相应的文件放到这个目录下,就可以进行打包操作了。
如果你在不改变 文件大小的前提下,可以直接执行tina-d1-h/tools/pack-bintools/src/dragon image.cfg sys_partition.fex 命令,你会发现它生成了一个 tina_d1-h-nezha_uart0.img,镜像,这个镜像是和使用pack命令打包生成的一样。

那么这里面还有一个 img.cfg文件。这个文件里面包含了很多 fex二进制文件,目前我认为这些文件都是和全志官方的烧写工具绑定死的,所以不用管它,只要制作的时候 当前目录下有这些工具即可。

在这里插入图片描述

有了这两个文件以后,就可以直接使用 dragon打包生成可以用 凤凰烧写器 烧写的系统镜像啦。

sys_partiton分析

如果你的系统镜像格式 一直保持大小不变,那么上面这个命令 就可以一直用,但是这个时候 我想自己编译内核 增加 驱动模块,编译文件系统 增加组件 导致系统镜像变大了 这要怎么办?

简单点,直接修改 sys_partition.fex为 文件大小不就可以了吗?
但是你会发现 这样做不行,他会提示错误。
这个时候 我们就要继续分析 log日志输出了,会发现,我们执行 dragon打包 只有下面这些输出信息,没有上面的 GPT/MBR分区信息。

/home/book/D1s-Core/tina-d1-h/tools/pack-bintools/src/
/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image
Begin Parse sys_partion.fex
Add partion boot-resource.fex BOOT-RESOURCE_FEX
Add partion very boot-resource.fex BOOT-RESOURCE_FEX
FilePath: boot-resource.fex
FileLength=2f8c00Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion boot.fex BOOT_FEX00000000
Add partion very boot.fex BOOT_FEX00000000
FilePath: boot.fex
FileLength=4f4000Add partion rootfs.fex ROOTFS_FEX000000
Add partion very rootfs.fex ROOTFS_FEX000000
FilePath: rootfs.fex
FileLength=5e0000Add partion dsp0.fex DSP0_FEX00000000
Add partion very dsp0.fex DSP0_FEX00000000
FilePath: dsp0.fex
FileLength=3e38cBuildImg 0
Dragon execute image.cfg SUCCESS !

那么这个时候 就需要往回找,这个文件是哪里来的 怎么生成的?
通过 搜索 分析 发现是 来自于 sys_partiton.bin 文件,但是这个文件又是一个 二进制文件,而且也是后面打包生成的,那么还是要继续往回找 sys_partition.bin文件又是怎么生成的。

在这里插入图片描述

同样是结合log 加打印

在这里插入图片描述

找到了 如下这两个命令。
busybox unix2dos sys_partition.fex
script sys_partition.fex

一开始以为这个 script 是ubuntu的某一个包,后来发现也是一个全志自家提供的工具。
既然 工具都找全了 那我们可以修改试试看。

修改 sys_partition.fex 把它的大小 调整为 70824

在这里插入图片描述

之后保存退出,从头执行如下命令 来确认猜想是否正确。

book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ busybox unix2dos sys_partition.fex
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ ~/D1s-Core/tina-d1-h/tools/pack-bintools/src/script  sys_partition.fex
argc = 2
input name sys_partition.fex
Script 1 source file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.fex
Script 1 bin file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
update_fdt: num 1752 randto1k
parser 1 file ok
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ ~/D1s-Core/tina-d1-h/tools/pack-bintools/src/update_mbr  sys_partition.bin 4
mbr count = 4

partitation file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sys_partition.bin
mbr_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/sunxi_mbr.fex
download_name file Path=/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image/dlinfo.fex

mbr size = 252
mbr magic softw411
disk name=boot-resource
disk name=env
disk name=env-redund
disk name=boot
disk name=rootfs
disk name=dsp0
disk name=recovery
this is not a partition key
update_for_part_info 0
crc 0 = ea84dacc
crc 1 = 7f398b91
crc 2 = 1a8f7e37
crc 3 = 8f322f6a
gpt_head->header_crc32 = 0x53fc3a66
GPT----part num 8---
gpt_entry: 128
gpt_header: 92
GPT:boot-resource: a1f8          c177
GPT:env         : c178          c36f
GPT:env-redund  : c370          c567
GPT:boot        : c568          1161f
GPT:rootfs      : 11620         22ac7
GPT:dsp0        : 22ac8         22eb7
GPT:recovery    : 22eb8         29cf7
GPT:UDISK       : 29cf8         ffffffde
update gpt file ok
update mbr file ok
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$ ~/D1s-Core/tina-d1-h/tools/pack-bintools/src/dragon  image.cfg sys_partition.fex
/home/book/D1s-Core/tina-d1-h/tools/pack-bintools/src/
/home/book/D1s-Core/tina-d1-h/out/d1-h-nezha/image
Begin Parse sys_partion.fex
Add partion boot-resource.fex BOOT-RESOURCE_FEX
Add partion very boot-resource.fex BOOT-RESOURCE_FEX
FilePath: boot-resource.fex
FileLength=2f8c00Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion boot.fex BOOT_FEX00000000
Add partion very boot.fex BOOT_FEX00000000
FilePath: boot.fex
FileLength=4f4000Add partion rootfs.fex ROOTFS_FEX000000
Add partion very rootfs.fex ROOTFS_FEX000000
FilePath: rootfs.fex
FileLength=5e0000Add partion dsp0.fex DSP0_FEX00000000
Add partion very dsp0.fex DSP0_FEX00000000
FilePath: dsp0.fex
FileLength=3e38cBuildImg 0
Dragon execute image.cfg SUCCESS !
book@virtual-machine:~/D1s-Core/tina-d1-h/out/d1-h-nezha/image$

最后在当前目录下 生成了一个 名为 tina_d1-h-nezha_uart0.img 文件,把它用 凤凰烧录 工具烧录进去。
你会发现你可以把你增加过文件的分区 烧进去 并启动啦。

那么这个时候,还存在一个问题,就是D1使用的都是 squashfs 类型的文件系统,这个时候,你也需要分析一下 他们的这个文件系统 生产方式,这个就可以借助 grep 命令了,参考如下。

分析文件系统生成方式

在这里插入图片描述

在这里插入图片描述

最后得到 这个
rootfs.squashfs -noappend -processors 9 -nopad -noappend -root-owned -comp xz -b 256k -p ‘’‘/dev d 755 0 0’‘’ -p ‘’‘/dev/console c 600 0 0 5 1’‘’ -processors 4\n’ >> /home/book/buildroot_dshannezhastu/buildroot-awol/output/build/buildroot-fs/squashfs/fakeroot

然后 把它 扔进 buildroot 就可以制作出 可以供 D1内核使用的系统,
注意 tina的环境变量里面的 init 进程位置和buildroot 不一样 需要修改。
注意 tina的环境变量里面的 init 进程位置和buildroot 不一样 需要修改。
注意 tina的环境变量里面的 init 进程位置和buildroot 不一样 需要修改。

最后 给大家放上,我们已经支持过 NEZHA D1的buildroot完整系统镜像源码
https://github.com/DongshanPI/buildroot_dshannezhastu

clone下来后,需要更新git 子模块 执行如下命令来拉取子模块的源码。

git submodule update --init --recursive
git submodule update --recursive --remote
git pull --recurse-submodules

之后进入 buildroot-awol 目录下,稍等一会 就可以生成 供spi nand 烧写的flash镜像了。 当然,也可以烧到tf卡启动。。
buildroot_dshannezhastu/buildroot-awol$ make BR2_DL_DIR=…/Download BR2_EXTERNAL=…/br2nezhastu/ dshannezhastu_spinand_core_defconfig

编译完成后的输出信息。
在这里插入图片描述

镜像输出在 output/images/目录下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue.js 中的指令和组件详解

Vue.js 中的指令和组件详解 在 Vue.js 中,指令和组件是两个非常重要的概念,它们都可以用来扩展 Vue.js 的功能,但它们之间有一些不同之处。本文将对 Vue.js 中的指令和组件进行详细的介绍,并附上相关的代码示例。 指令 在 Vue.j…

华为OD机试真题 Java 实现【找最小数】【2023 B卷 100分】,附详细解题思路

一、题目描述 给一个正整数num1,计算出新正整数num2,num2为num1中移除N位数字后的结果,需要使得num2的值最小。 二、输入描述 输入的第一行为一个字符串,字符串由0~9字符组成,记录正整数num1,num1的长度…

2.1 网络io、io多路复用select/poll/epoll、基于事件驱动的reactor

目录 一、网络IO请求二、一请求一线程三、IO多路复用——select的通俗理解1、select函数2、accpet函数3、recv函数 四、IO多路复用——poll五、IO多路复用——epoll1、epoll_create2、epoll_ctl3、epoll_wait4、epoll_event5、边缘触发和水平触发) 五、区别对比1、s…

axios、跨域与JSONP、防抖和节流

文章目录 一、axios1、什么是axios2、axios发起GET请求3、axios发起POST请求4、直接使用axios发起请求 二、跨域与JSONP1、了解同源策略和跨域2、JSONP(1)实现一个简单的JSONP(2)JSONP的缺点(3)jQuery中的J…

Wwise内存问题

1)Wwise内存问题 ​2)安卓平台特效显示不一致的问题 3)多个矩形小方块组成的地形接缝处有黑线问题 这是第339篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大…

nginx系列第七篇:结合nginx讨论“惊群”问题

目录 1.什么是惊群 2.linux下socket通信之accept"惊群"现象 3.select/poll/epoll"惊群"现象 4.nginx中的惊群处理 1.什么是惊群 "惊群"是多个进程(线程)阻塞在某个系统调用上等待事件触发,当事件触发后,这些睡眠的进程…

数位dp训练笔记

依稀还记得去年寒假的时候对数位dp的恐惧达到了顶峰,打死也不想做一题,也是怎么学都学不会,甚至板子也只是真的去网上copy了一份,自己也都不理解。(羞愧) 这个状态持续了一年多(羞愧羞愧&#…

Windows操作/文件/设置/DOS 记录

目录 1.系统操作 1.环境变量 2.文件夹操作 1.显示隐藏文件夹 3.DOS窗口 1.DOS窗口中docker切换管理员root /]#身份: docker run -it centos​编辑 4.文件操作 1.图片分辨率无损修改尺寸(例1280x800) 2.图片修改png/jpg文件后缀类型 1.系统操作 1.…

Python 语句

文章目录 一、条件语句1、顺序语句2、条件语句3、缩进和代码块4、条件语句练习5、空语句 二、循环语句1、while2、for3、break和continue 一、条件语句 1、顺序语句 从上到下依次执行 2、条件语句 Python中使用if else关键字表示条件语句. ①if if expression:do_somethi…

PCB板的Mark点设计对SMT重要性

Mark点也称光学点、基准点,是电路板元器件组装中,PCBA应用于自动贴片机上的位置识别点。 Mark点的选用,直接影响到自动贴片机的贴片效率,因此在设计时,需要设计好Mark点以及其在板内的位置。 Mark点的设计 1、布局位…

String s = new String(“xyz“) 创建了几个对象?

这个问题相信每个学习 java 的同学都不陌生,作为一个经典的面试题,到现在工作这么多年了我真是认为挺操蛋的一个问题,在网上到现在你仍然可以看见很多讨论这个问题的人,其中不乏工作很多年的人都有争论,我认为还是有必…

GreatSQL删除分区慢的跟踪

GreatSQL删除分区慢的跟踪 背景 某业务系统,每天凌晨会删除分区表的一个分区(按天分区),耗时较久,从最开始的30秒,慢慢变为1分钟,影响到交易业务的正常进行。 在测试环境进行了模拟,复现了删除分区慢的情…

市场火爆!三大发展优势加速汽车零部件行业布局

当前,中国新能源汽车自主品牌崛起,为汽车零部件发展带来新机遇;有别于传统汽车零部件市场,新能源领域,主机厂标准提升,对数字化要求逐渐提高,汽车零部件企业的智能制造异常重要,企业…

二分类结局变量Logistic回归临床模型预测(二)——3. 单因素多因素logistic回归分析及三线表(三)

本节讲的是二分类结局变量的临床模型预测,与之前讲的Cox回归不同,https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/article/details/1300…

1929-2022年全球站点的逐月最低气温(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据! 之前我们分享过1929-2022年全球气象站…

Qt学习之旅 -信号与槽

文章目录 点击关闭窗口自定义信号和槽自定义信号和槽解决重载问题信号和连接信号断开连接Qt4版本信号槽连接Lambda表达式 点击关闭窗口 connect(信号发送者,发送的具体信号,信号接收者,型号的处理(槽slot));这里自定义的MyPushButton与QPushButton别无二…

【NLP】KMP匹配算法

一、说明 KMP算法。也称为Knuth-Morris-Pratt字符串查找算法可在一个字符串S内查找一个词W的出现位置。一个词在不匹配时本身就包含足够的信息来确定下一个匹配可能的开始位置,此算法利用这一特性以避免重新检查先前配对的字符。将时间复杂度从O(M*N)降为O(N). 这个…

C++ Primer Plus 第三章习题

目录 复习题 1. 为什么C有多种整型? 2. 声明与下述描述相符的变量? 3. C 提供了什么措施来防止超出整型的范围? 4. 33L和33之间有什么区别? 5. 下面两条C语句是否等价? 6. 如何使用C来找出编码88表示的字符&…

又一个生物标志物ADMA被发现!可为OA治疗提供新方向!

文章标题:Metabolite asymmetric dimethylarginine (ADMA) functions as a destabilization enhancer of SOX9 mediated by DDAH1 in osteoarthriti 发表期刊:Science Advances 影响因子:14.95 作者单位:浙江大学医学院附属邵逸…

EasyUi03

1.无限极分类. 1.1无限极分类介绍. 1.1.1何为无限极分类. 无限极分类简单点说就是一个类别能够分多个子类,而后一个子类又能够分多个子类,就这样无限分下去,就好象 windows能够新建一个文件夹,而后在这个文件夹里又能够建一些文…