3GP文件格式分析

1.     概述
现在很多智能手机都支持多媒体功能,特别是音频和视频播放功能,而3GP文件格式是手机端普遍支持的视频文件格式。
目前很多手机都支持h263视频编码格式的视频文件播放,还有些手机支持h264。音频文件格式普遍支持amr,有些手机还支持AAC音频格式。
鉴于凤凰卫视节目主要以新闻类为主,音频压缩采用AMR标准,视频压缩采用H263和H264标准。
编号
文件名
文件长度
时长
1
news_h263.3gp
1.38MB
01:21.90
2
zbc1217_h263.3gp
1.92MB
02:37.98
3
zbc1217_h264.3gp
2.44MB
02:37.98

2. 3GP文件结构分析示例
AtomicParsley是一个开源的多媒体文件结构分析器。
下面是用该程序分析的两个3GP文件结构:
news_h263.3gp
Atom ftyp @ 0 of size: 28, ends @ 28
Atom mdat @ 28 of size: 65, ends @ 93
Atom mdat @ 93 of size: 130856, ends @ 130949
Atom mdat @ 130949 of size: 1312119, ends @ 1443068
Atom moov @ 1443068 of size: 7136, ends @ 1450204
     Atom mvhd @ 1443076 of size: 108, ends @ 1443184
     Atom trak @ 1443184 of size: 1546, ends @ 1444730
         Atom tkhd @ 1443192 of size: 92, ends @ 1443284
         Atom udta @ 1443284 of size: 48, ends @ 1443332
             Atom uuid=484d496e-6354-7261-636b-496e666f2020 @ 1443292 of size: 40, ends @ 1443332
         Atom mdia @ 1443332 of size: 1398, ends @ 1444730
             Atom mdhd @ 1443340 of size: 32, ends @ 1443372
             Atom hdlr @ 1443372 of size: 37, ends @ 1443409
             Atom minf @ 1443409 of size: 1321, ends @ 1444730
                 Atom smhd @ 1443417 of size: 16, ends @ 1443433
                 Atom dinf @ 1443433 of size: 36, ends @ 1443469
                     Atom dref @ 1443441 of size: 28, ends @ 1443469
                 Atom stbl @ 1443469 of size: 1261, ends @ 1444730
                     Atom stts @ 1443477 of size: 24, ends @ 1443501
                     Atom stsd @ 1443501 of size: 69, ends @ 1443570
                         Atom samr @ 1443517 of size: 53, ends @ 1443570
                             Atom damr @ 1443553 of size: 17, ends @ 1443570
                     Atom stsz @ 1443570 of size: 1112, ends @ 1444682
                     Atom stsc @ 1444682 of size: 28, ends @ 1444710
                     Atom stco @ 1444710 of size: 20, ends @ 1444730
     Atom trak @ 1444730 of size: 5474, ends @ 1450204
         Atom tkhd @ 1444738 of size: 92, ends @ 1444830
         Atom tref @ 1444830 of size: 20, ends @ 1444850
             Atom sync @ 1444838 of size: 12, ends @ 1444850
         Atom udta @ 1444850 of size: 48, ends @ 1444898
             Atom uuid=484d496e-6354-7261-636b-496e666f2020 @ 1444858 of size: 40, ends @ 1444898
         Atom mdia @ 1444898 of size: 5306, ends @ 1450204
             Atom mdhd @ 1444906 of size: 32, ends @ 1444938
             Atom hdlr @ 1444938 of size: 37, ends @ 1444975
             Atom minf @ 1444975 of size: 5229, ends @ 1450204
                 Atom vmhd @ 1444983 of size: 20, ends @ 1445003
                 Atom dinf @ 1445003 of size: 36, ends @ 1445039
                     Atom dref @ 1445011 of size: 28, ends @ 1445039
                 Atom stbl @ 1445039 of size: 5165, ends @ 1450204
                     Atom stts @ 1445047 of size: 24, ends @ 1445071
                     Atom stsd @ 1445071 of size: 117, ends @ 1445188
                         Atom s263 @ 1445087 of size: 101, ends @ 1445188
                             Atom d263 @ 1445173 of size: 15, ends @ 1445188
                     Atom stsz @ 1445188 of size: 4920, ends @ 1450108
                     Atom stss @ 1450108 of size: 48, ends @ 1450156
                     Atom stsc @ 1450156 of size: 28, ends @ 1450184
                     Atom stco @ 1450184 of size: 20, ends @ 1450204
------------------------------------------------------
Total size: 1450204 bytes; 46 atoms total. AtomicParsley version: 0.9.0 (utf16)
Media data: 1442975 bytes; 7229 bytes all other atoms (0.498% atom overhead).
Total free atom space: 0 bytes; 0.000% waste.
------------------------------------------------------
Movie duration: 81.900 seconds (01:21.90) - 140.95* kbp/sec bitrate (*=approximate)
Low-level details. Total tracks: 2
Trk Type Handler                    Kind Lang Bytes
1    soun soun                       samr eng   130848   Encoder: NXTR
     12.78* kbp/s 81.900 sec AMR Narrow-Band.Modes: 0, 1, 2, 3, 4, 5, 6, 7, 8. Encoder vendor code: NXTR
2    vide vide                       s263 eng   1312111   Encoder: NXTR
     128.41* kbp/s 81.748 sec H.263 Baseline Profile, Level 10. Encoder vendor code: NXTR
 

   该3GP文件结构如下:

 

zbc1217_h263.3gp
Atom ftyp @ 0 of size: 24, ends @ 24
Atom mdat @ 24 of size: 1989236, ends @ 1989260
Atom moov @ 1989260 of size: 14951, ends @ 2004211
     Atom mvhd @ 1989268 of size: 108, ends @ 1989376
     Atom iods @ 1989376 of size: 33, ends @ 1989409
     Atom udta @ 1989409 of size: 1069, ends @ 1990478
         Atom rtng [eng] @ 1989417 of size: 29, ends @ 1989446
         Atom uuid=f78caa0c-36be-4ce9-88d2-03c256dabeb2 @ 1989446 of size: 1032, ends @ 1990478
     Atom trak @ 1990478 of size: 9978, ends @ 2000456
         Atom tkhd @ 1990486 of size: 92, ends @ 1990578
         Atom mdia @ 1990578 of size: 9842, ends @ 2000420
             Atom mdhd @ 1990586 of size: 32, ends @ 1990618
             Atom hdlr @ 1990618 of size: 33, ends @ 1990651
             Atom minf @ 1990651 of size: 9769, ends @ 2000420
                 Atom vmhd @ 1990659 of size: 20, ends @ 1990679
                 Atom dinf @ 1990679 of size: 36, ends @ 1990715
                     Atom dref @ 1990687 of size: 28, ends @ 1990715
                 Atom stbl @ 1990715 of size: 9705, ends @ 2000420
                     Atom stsd @ 1990723 of size: 117, ends @ 1990840
                         Atom s263 @ 1990739 of size: 101, ends @ 1990840
                             Atom d263 @ 1990825 of size: 15, ends @ 1990840
                     Atom stts @ 1990840 of size: 32, ends @ 1990872
                     Atom stsc @ 1990872 of size: 1900, ends @ 1992772
                     Atom stsz @ 1992772 of size: 6300, ends @ 1999072
                     Atom stco @ 1999072 of size: 644, ends @ 1999716
                     Atom stss @ 1999716 of size: 704, ends @ 2000420
         Atom udta @ 2000420 of size: 36, ends @ 2000456
             Atom uuid=f78caa0c-36be-4ce9-87d2-03c256dabeb2 @ 2000428 of size: 28, ends @ 2000456
     Atom trak @ 2000456 of size: 2934, ends @ 2003390
         Atom tkhd @ 2000464 of size: 92, ends @ 2000556
         Atom mdia @ 2000556 of size: 2798, ends @ 2003354
             Atom mdhd @ 2000564 of size: 32, ends @ 2000596
             Atom hdlr @ 2000596 of size: 33, ends @ 2000629
             Atom minf @ 2000629 of size: 2725, ends @ 2003354
                 Atom smhd @ 2000637 of size: 16, ends @ 2000653
                 Atom dinf @ 2000653 of size: 36, ends @ 2000689
                     Atom dref @ 2000661 of size: 28, ends @ 2000689
                 Atom stbl @ 2000689 of size: 2665, ends @ 2003354
                     Atom stsd @ 2000697 of size: 69, ends @ 2000766
                         Atom samr @ 2000713 of size: 53, ends @ 2000766
                             Atom damr @ 2000749 of size: 17, ends @ 2000766
                     Atom stts @ 2000766 of size: 24, ends @ 2000790
                     Atom stsc @ 2000790 of size: 1900, ends @ 2002690
                     Atom stsz @ 2002690 of size: 20, ends @ 2002710
                     Atom stco @ 2002710 of size: 644, ends @ 2003354
         Atom udta @ 2003354 of size: 36, ends @ 2003390
             Atom uuid=f78caa0c-36be-4ce9-87d2-03c256dabeb2 @ 2003362 of size: 28, ends @ 2003390
     Atom trak @ 2003390 of size: 420, ends @ 2003810
         Atom tkhd @ 2003398 of size: 92, ends @ 2003490
         Atom mdia @ 2003490 of size: 296, ends @ 2003786
             Atom mdhd @ 2003498 of size: 32, ends @ 2003530
             Atom hdlr @ 2003530 of size: 33, ends @ 2003563
             Atom minf @ 2003563 of size: 223, ends @ 2003786
                 Atom nmhd @ 2003571 of size: 12, ends @ 2003583
                 Atom dinf @ 2003583 of size: 36, ends @ 2003619
                     Atom dref @ 2003591 of size: 28, ends @ 2003619
                 Atom stbl @ 2003619 of size: 167, ends @ 2003786
                     Atom stsd @ 2003627 of size: 67, ends @ 2003694
                         Atom mp4s @ 2003643 of size: 51, ends @ 2003694
                             Atom esds @ 2003659 of size: 35, ends @ 2003694
                     Atom stts @ 2003694 of size: 24, ends @ 2003718
                     Atom stsc @ 2003718 of size: 28, ends @ 2003746
                     Atom stsz @ 2003746 of size: 20, ends @ 2003766
                     Atom stco @ 2003766 of size: 20, ends @ 2003786
         Atom tref @ 2003786 of size: 24, ends @ 2003810
             Atom mpod @ 2003794 of size: 16, ends @ 2003810
     Atom trak @ 2003810 of size: 401, ends @ 2004211
         Atom tkhd @ 2003818 of size: 92, ends @ 2003910
         Atom mdia @ 2003910 of size: 301, ends @ 2004211
             Atom mdhd @ 2003918 of size: 32, ends @ 2003950
             Atom hdlr @ 2003950 of size: 33, ends @ 2003983
             Atom minf @ 2003983 of size: 228, ends @ 2004211
                 Atom nmhd @ 2003991 of size: 12, ends @ 2004003
                 Atom dinf @ 2004003 of size: 36, ends @ 2004039
                     Atom dref @ 2004011 of size: 28, ends @ 2004039
                 Atom stbl @ 2004039 of size: 172, ends @ 2004211
                     Atom stsd @ 2004047 of size: 72, ends @ 2004119
                         Atom mp4s @ 2004063 of size: 56, ends @ 2004119
                             Atom esds @ 2004079 of size: 40, ends @ 2004119
                     Atom stts @ 2004119 of size: 24, ends @ 2004143
                     Atom stsc @ 2004143 of size: 28, ends @ 2004171
                     Atom stsz @ 2004171 of size: 20, ends @ 2004191
                     Atom stco @ 2004191 of size: 20, ends @ 2004211
------------------------------------------------------
Total size: 2004211 bytes; 82 atoms total. AtomicParsley version: 0.9.0 (utf16)
Media data: 1989236 bytes; 14975 bytes all other atoms (0.747% atom overhead).
Total free atom space: 0 bytes; 0.000% waste.
------------------------------------------------------
Movie duration: 156.980 seconds (02:36.98) - 101.38* kbp/sec bitrate (*=approximate)
Low-level details. Total tracks: 4
Trk Type Handler                    Kind Lang Bytes
1    vide [none listed]              s263 und   1738018   Encoder: ViVi
     88.58* kbp/s 156.960 sec H.263 Baseline Profile, Level 20. Encoder vendor code: ViVi
2    soun [none listed]              samr und   251168   Encoder: ViVi
     12.80* kbp/s 156.980 sec AMR Narrow-Band. Modes: 7. Encoder vendor code: ViVi
3    odsm [none listed]              mp4s und   18
4    sdsm [none listed]              mp4s und   24
 
该3GP文件结构如下:
 
其实3GP文件就是一个对象(box)容器,对象还允许包含子对象。
对象格式如下:
struct
{
UINT32size;       //对象大小
chartype;      //对象类型
void*data;      //对象数据(属性),大小为(size-8)
};

 

ISO base media file format》说明不同box对象的结构定义细节。

 

 

3. 3GP文件对象实例分析
l        ftype
File Type(该对象仅有一个)
记录该文件使用的规范和版本等信息。
 
属性
大小
说明
size
4
0x0000001c = 28
ftyp
4
ftyp
major_brand
4
3gp4
主类型
minor_version
4
最小版本号
compatible_brands[]
string
3gp4 | 3gp5 | 3g2a
兼容类型
l        mdat
Media Data
mdat 存放媒体数据(media data)。一般包括文字、音频和视频等。这些mdat的顺序不固定。
 
当前mdat对象包含的是纯文字。
大小
其他说明
size
4
0x00000041 = 65
mdat
4
string
这个box可以忽略。
l        mdat
音频数据块
 
 
大小
其他说明
size
4
0x0001FF28 = 130856
mdat
4
32*N
3C打头
每个音频帧32字节
amr音频数据以32字节一帧,每帧20毫秒。所以根据amr数据包大小就能估算出语音的时间长度。
(130856– 8) / 32 = 4089 * 20 = 81780 ms = 817.80 = 01:21.90
这个时间与播放器上显示的时间基本相同。
注意:这里真实的视频数据起始位置为0x000005D
在音频trak里面的stso对象里面的chunk_offset记录的就是这个值。
RFC3267中有如下描述:
The sampling frequency used in AMR is 8000 Hz and the speech encoding is
performed on 20 ms speech frames. Therefore, each encoded AMR speech
frame represents 160 samples of the original speech.
AMR语音采样频率为8Khz,每帧对应20ms
l        mdat
视频数据块
 
 
大小
其他说明
size
4
0x004946F1 = 4802289
mdat
4
4
H263视频数据
实际视频数据大小:4802289 – 8 = 4802281
H263协议中文版》第8 5.1图象层中描述:
每帧图象的数据包含一个图象头,并紧跟着块组数据,最后是一个end-of-sequence码和填塞位。
图象开始码 (PSC) (22 bits)
PSC是一个22比特的字。它的值是0000 0000 0000 0000 1000 0000 00 80 00 …z
时域参考 (TR) (8 bits)  00-00 000000-
类型信息 (PTYPE) (13 bits)  00-10 0000 1000 000-0
6-8010表示图像为QCIF
9:图象编码类型,“0” INTRA (I-picture)“1” INTER (P-picture)。关键帧标志位,0:关键帧,1p帧。
l        moov
Movie Box
该对象保留了3GP视频的metadata,即该3GP的全部描述信息。
这个对象一般在文件开始或者末尾。
下面详细分析moov的各个子对象。
l        mvhd
Movie Head Box
 
 
大小
其他说明
size
4
0x0000006C = 108
mvhd
4
version
1
0
flag
3
0
creation_time
4
modification_time
4
timescale
4
0x000003E8 = 1000
时间缩放因子
duration
4
0x00013FEC = 81900 = 81.9s
持续时间
rate
4
0x00010000 1.0(即全速播放)
播放比率
volume
2
0x0100 1.0 (音量)
音量
reserved
保留
reserved
保留
matrix
视频转换矩阵
pre_defined
预定义(0)
next_track_ID
4
0x000000CA = 202
下一个track_id
trak(音频)
Track Box
 
l        tkhd
Track Header Box
定义了该track的属性。
 
 
大小
其他说明
size
4
0x0000005C = 92
tkhd
4
version
1
0
flag
3
1
creation_time
4
modification_time
4
track_id
4
0x00000065 = 101
reserved
4
0
duration
4
0x00013FEC = 81900 = 81.9s
音频播放时间
reserved
8
layer
2
alternate_group
2
volume
2
0x0100
如果track是音频则为0x0100,视频则为0x0000
reserved
2
0
matrix
4 * 9
视频转换矩阵
width
4
0
音频的wh0
height
4
0
注意:如果track是音频volume则为0x0100,视频volume则为0x0000
 
l        mdhd
Media Header Box
 
 
大小
其他说明
size
4
32
mdhd
4
version
1
flag
3
creation_time
4
modification_time
4
timescale
4
0x00001F40 = 8000
时间缩放因子
duration
4
0x0009FF60 = 655200/8000=81.9
音频播放时长
pad
1bit
language
15bit
0x15c7 ISO-639-2/T language code
pre_defined
2
 
l        hdlr
Handler Reference Box
 
 
大小
其他说明
size
4
0x00000025 = 37
hdlr
4
version
1
flag
3
pre_defined
4
0
handler_type
4
soun
videVideo  track
sounAudio  track
reserved
4 * 3
0
handler_type
string
4+1
soun
’/0’结束
 
l        stbl
Sample Table Box
 
 
l        stts
Decoding Time to Sample Box
大小
其他说明
size
4
0x00000018 = 24
stts
4
version
1
flag
3
entry_count
4
1
sample_count
4
0x00000111 = 273
sample_delta
4
0x00000960 = 2400
说明:该amr音频数据里面有273sample,每个sample的时间为2400,而音频的时间因子为8000(见5.2.3.1 mdhdtimescale),所以每个sample的时长 = 2400 / 8000s = 0.3s
l        stsd
Sample Description Box
大小
其他说明
size
4
0x00000045 = 69
stsd
4
version
1
flag
3
entry_count
4
1
AudioSampleEntry
l        samr
amr音频
size
4
0x35 = 53
samr
4
reserved
6
0
data_reference_index
2
0x0001
reserved
4 * 2
0
channelcount
2
0x0002 = 2
(1:单声道 2:双声道)
samplesize
2
0x0010 = 16
pre_defined
2
0
reserved
2
0
samplerate
4
0x1F400000 = (14F0)<<16
0x1F40 = 8000
时间因子左移16位。
声音采样频率(hz
size
4
0x11 = 17
damr
4
NXTR ...
9
l        stsz
Sample Size Boxes
大小
其他说明
size
4
0x00000458 = 1112
stsz
4
version
1
flag
3
sample_size
4
0
sample_count
4
0x00000111 = 273
 
entry_size
4
0x000001E0 = 480
每个sample大小
4
0x000001E0 = 480
4
0x000001E0 = 480
...
说明:在(5.2.3.3.3.1 stts)中说明了有1001sample,这里的sample_count=1001,每个sample数据块的大小为480,(480 / 32*20 = 15*20 = 0.3s
这里包含了每个sample的大小,都为480字节。
l        stsc
Sample To Chunk Box
大小
其他说明
size
4
0x0000001C = 28
stsc
4
version
1
flag
3
entry_count
4
1
first_chunk
4
1
samples_per_chunk
4
0X0111 = 273
sample_description_index
4
1
l        stco
Chunk Offset Box
大小
其他说明
size
4
0x00000014 = 20
stco
4
version
1
flag
3
entry_count
4
1
chunk_offset
4
0x65 = 101
trak(视频)
Track Box
 
l        tkhd
Track Header Box
定义了该track的属性。
大小
其他说明
size
4
0x0000005C = 92
tkhd
4
version
1
0
flag
3
1
creation_time
4
modification_time
4
track_id
4
0x000000C9 = 201
reserved
4
0
duration
4
0x00013F54 = 81748 = 81.7s
视频播放时间
reserved
8
layer
2
alternate_group
2
volume
2
0x0000
如果track是音频则为0x0100,视频则为0x0000
reserved
2
0
matrix
4 * 9
视频转换矩阵
width
4
0x01400000<<16 = 0x0140=320
height
4
0x00F00000<<16 = 0x00F0=240
l        vmhd
Video Media Header Box
大小
其他说明
size
4
0x00000014 = 20
wmhd
4
version
1
flag
3
graphicsmode
2
0
opcolor
2 * 3
{0,0,0}
l         stts
Sync Sample Box
大小
其他说明
size
4
0x00000018 = 24
stts
4
version
1
flag
3
entry_count
4
1
sample_count
4
0x000004C9 = 1225
sample_delta
4
0x00001776 = 6006
说明:该H263视频数据里面有1225sample,每个sample的时间为6006,而视频的时间因子为90000(见5.3.3.1 mdhdtimescale),所以每个sample的时长 = 6006 / 90000s = 0.0667s
1225*6006 / 90000 = 1225*6006/90000 = 81.7s
l         stsd
Sample Description Box
大小
其他说明
size
4
0x00000075 = 117
stsd
4
stsd
version
1
0
flag
3
0
entry_count
4
1
VideoSampleEntry
l        S263
263视频
size
4
0x65 = 101
s263
4
reserved
6
data_reference_index
2
0x0001
pre_defined
2
0
reserved
2
0
pre_defined
4 * 3
width
2
0xb0 = 176
视频宽度
height
2
0x90 = 144
视频高度
horizresolution
4
0x00480000; // 72 dpi
vertresolution
4
0x00480000; // 72 dpi
reserved
4
frame_count
2
1
compressorname
32
string[32]
0
depth
2
0x0018
pre_defined
2
-1
size
4
15
d263
4
NXTR ...
7
l        stsz
Sample Size Boxes
大小
其他说明
size
4
0x1338
stsz
4
version
1
flag
3
sample_size
4
0
sample_count
4
0x04C9 = 1225
 
entry_size
4
0x0000297 = 663
4
0x068C = 1676
4
0x028D = 653
...
说明:总共1225sample即有1225帧,sample_count后面紧跟的是每个视频帧的数据大小,可以看出每个帧的大小都不一样,这是因为视频帧的类型不同,有些帧是I帧,有些是P帧,有些是B帧。
MPEG图像编码包含3个成分:I帧,P帧和B帧。MPEG编码过程中,一些图像压缩成I帧,一些压缩成P帧,另一些压缩成B帧。I帧压缩可以得到61的压缩比而不产生任何可觉察的模糊现象。I帧压缩的同时使用P帧压缩,可以达到更高的压缩比而无可觉察的模糊现象。B帧压缩可以达到2001的压缩比,其文件尺寸一般为I帧压缩尺寸的15%,不到P帧压缩尺寸的一半。I帧压缩去掉图像的空间冗余度,P帧和B帧去掉时间冗余度,下文将进一步解释。
I压缩采用基准帧模式,只提供帧内压缩,即把帧图像压缩到I帧时,仅仅考虑了帧内的图像。I帧压缩不能除去帧间冗余度。帧内压缩基于离散余弦变换(DCT),类似于JPEGH.261图像中使用DCT的压缩标准。
P采用预测编码,利用相邻帧的一般统计信息进行预测。也就是说,它考虑运动特性,提供帧间编码。P帧预测当前帧与前面最近的I帧或P帧的差别。
B为双向帧间编码。它从前面和后面的I帧或P帧中提取数据。B帧基于当前帧与前一帧和后一帧图像之间的差别进行压缩。
MEPG数据流开始时对CCIR-601规定的SIF分辨率的未压缩数字图像进行抽样。SIF分辨率,对于NTSC制,就是亮度信号为352240各像素,每个色度信号都为176120个象素。各信号都是每秒30帧。MPEG压缩器决定了当前帧以I帧,P帧还是B帧。帧确定之后就采用DCT变换,对结果进行量化,舍入,行程编码即变长编码。编码后的典型图像帧序为:IBBPBBPBBPBBIBBPBBPBBPBBI
B帧和P帧要求计算机有更强的功能。有些压缩器不能产生B帧或者连P帧也不能产生,则图像的压缩结果将有很明显的间断。
H263采用了与MPEG相似的技术。
l        stco
Chunk Offset Box
 
 
大小
其他说明
size
4
0x00000014 = 20
stco
4
version
1
flag
3
entry_count
4
1
chunk_offset
4
0x0001FF8D
说明:chunk_offset定义的是视频数据的起始位置。

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

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

相关文章

mysql group concat_MySQL 的 GROUP_CONCAT 函数详解

GROUP_CONCAT(expr) 函数会从 expr 中连接所有非 NULL 的字符串。如果没有非 NULL 的字符串&#xff0c;那么它就会返回 NULL。语法如下&#xff1a;GROUP_CONCAT 语法规则它在递归查询中用的比较多&#xff0c;但要使用好它并不容易。所以让我们一起来看看吧&#xff1a;假设有…

光荣之路测试开发面试linux考题之四:性能命令

Hi,大家好我是tom,I am back.今天要给大家讲讲linux系统一些性能相关命令。 1.fdisk 磁盘管理 是一个强大的危险命令&#xff0c;所有涉及磁盘的操作都由该命令完成&#xff0c;包括&#xff1a;新增磁盘、增删改磁盘分区等。 1.fdisk -l 查看磁盘分区情况 Disk /dev/sda: 27.8…

mac安装完mysql后关机特别慢_mysql-Mac终端下遇到的问题总结

为了方便启动mysql服务&#xff0c;修改/etc/.bash_profile文件&#xff0c;如下alias mysql"/usr/local/mysql/bin/mysql"alias mysqladmin"/usr/local/mysql/bin/mysqladmin"或者alias mysqlstart"sudo /usr/local/mysql/support-files/mysql.serve…

sending data mysql slow Mysql查询非常慢的可能原因

1.用explain看看mysql的执行情况,可以得知,task_id扫描了近20万条数据,而且这个task_id不是索引 2.为这个task_id所在的表,将此字段添加索引后,查询就变得很快了 转载于:https://www.cnblogs.com/Skrillex/p/7365590.html

打包上架

昨天写的打包上架&#xff0c;分组到了文章&#xff0c;发现不便查看贴链接到这里&#xff1a; http://www.cnblogs.com/ITCoderW/articles/7597969.html 最近一个版本的审核的过程 当我们上传到APP Store一个新的版本后 登录ITunes Connect就可以看到相应的版本的审核的状态 粗…

架构设计--仅是软件开发之第二大影响力?!

SDWest2006&#xff08;译注1&#xff09;对我来说是个有趣的大会。我除了星期三之外&#xff08;当时我正飞往费城参加一个客户会议 因此错过了Jolt颁奖部分&#xff09;每天都在演讲。我也参加了一些谈话和会议&#xff1b;其中最引人关注的是Mike Cohn的计划与估算的谈话。…

WiFi密码分享有妙招 不必口头相传

移动互联网的迅速崛起&#xff0c;使得我们可以方便的使用手持移动设备进行上网。尤其是在家庭中&#xff0c;使用智能手机、平板电脑、笔记本电脑等移动设备进行上网和娱乐已经成为主流&#xff0c;台式机上网正日渐式微。在家中时&#xff0c;我们通过无线路由器提供的WiFi网…

javaweb(二十一)——JavaWeb的两种开发模式

一、JSPJavaBean开发模式 1.1、jspjavabean开发模式架构 jspjavabean开发模式的架构图如下图(图1-1)所示 图1-1 在jspjavabean架构中&#xff0c;JSP负责控制逻辑、表现逻辑、业务对象&#xff08;javabean&#xff09;的调用。 JSPJavaBean模式适合开发业务逻辑不太复杂的web应…

概率论与数理统计思维导图知识框架_考研概率论与数理统计 综合题型秘籍思维导图① 随机变量1~3章 [21考研上岸之旅]...

Hello World&#xff0c;我的朋友&#xff0c;这里是一颗小白蛋&#xff0c;大千世界&#xff0c;很高兴以这样的方式与你相遇前言在复习过程中发现概率论知识点很少且集中 所以没有分开章节去整理王安式概率论辅导讲义张宇概率论9讲方浩强化班1800题 综合题型秘籍在学习过程中…

php mysql删除失败_php+MySQL实战案例【七】数据编辑、删除

​本节内容中讲解用户管理模块中的修改用户信息和删除用户。修改用户信息&#xff1a;可对选择的用户记录进行编辑&#xff0c;可修改用户名、密码、性别、手机、邮箱和地址信息。删除用户信息&#xff1a;将列表中指定的用户进行删除操作。二、编辑用户信息编辑用户信息&#…

1.three.js世界的4大要素

一、三大组件 在Three.js中&#xff0c;要渲染物体到网页中&#xff0c;我们需要3个组建&#xff1a;场景&#xff08;scene&#xff09;、相机&#xff08;camera&#xff09;和渲染器&#xff08;renderer&#xff09;。有了这三样东西&#xff0c;才能将物体渲染到网页中去。…

架构设计 例子和实践

系统设计说明书(架构、概要、详细)目录结构 虽然这些文档一般来说公司都是有模板的&#xff0c;但我写这些文档以来基本上是每写一次就把目录结构给改一次&#xff0c;应该说这是因为自己对这些文档的理解开始加深&#xff0c;慢慢的越来越明白这些文档的作用和其中需要阐述的东…

activiti 批量 mysql_Activiti6系列(3)- 快速体验

一、部署启动activiti####1、部署&#xff0c;将两个war包拷贝到Tomcat下即可。![](https://img2018.cnblogs.com/blog/1755845/201908/1755845-20190802010532367-2002399291.png)2、启动tomcat&#xff0c;访问http://127.0.0.1:8080/activiti-app默认账号密码&#xff1a;ad…

【启动】Windows上启动图形化软件,报错: 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-1-1-0.dll...

今天在安装了jetbrains官网上的ToolBox软件后&#xff0c;没有办法启动起来&#xff0c;报错如下&#xff1a; 无法启动此程序&#xff0c;因为计算机中丢失api-ms-win-crt-runtime-1-1-0.dll 尝试重新安装了并没有什么用&#xff0c;现在来解决方法&#xff1a; 直接找到官方的…

论文: YOLO9000-Better,Faster,Stronger

论文阅读&#xff1a; YOLO9000-Better,Faster,Stronger YOLOv2 是经过改造之后的YOLO Batch Normalization&#xff1a;在所有的conv layer后加了BN之后提高了2% mAP&#xff0c;BN可以帮助regularize模型&#xff0c;这样的话就可以放弃 dropout。 High Resolution Classifi…

怎么ie取消要打开或保存来自_取消认证后,发票抵扣就这么简单!

点击标题下「中财讯集团」可快速关注3月1日起&#xff0c;取消增值税发票认证的纳税人范围扩大至全部一般纳税人。一般纳税人可以自愿使用增值税发票选择确认平台查询、选择用于申报抵扣、出口退税或者代办退税的增值税发票信息。具体如何操作呢&#xff1f;掌握以下步骤&#…

好的软件架构设计

什么是架构 前言&#xff1a;软体设计师中有一些技术水平较高、经验较为丰富的人&#xff0c;他们需要承担软件系统的架构设计&#xff0c;也就是需要设计系统的元件如何划分、元件之间如何发生相互作用&#xff0c;以及系统中逻辑的、物理的、系统的重要决定的作出。在很多公…

python线程状态_Python线程

1. 线程基础1.1. 线程状态线程有5种状态&#xff0c;状态转换的过程如下图所示&#xff1a;1.2. 线程同步(锁)多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是当线程需要共享数据时&#xff0c;可能存在数据不同步的问题。考虑这样一种情况&#xff1a;一个列…

JavaScript中错误正确处理方式,你用对了吗?

JavaScript的事件驱动范式增添了丰富的语言&#xff0c;也是让使用JavaScript编程变得更加多样化。如果将浏览器设想为JavaScript的事件驱动工具&#xff0c;那么当错误发生时&#xff0c;某个事件就会被抛出。理论上可以认为这些发生的错误只是JavaScript中的简单事件。 本文将…

文件分割机

文件分割与合并 要求&#xff1a;实现对大文件的分割与合并。 按指定个数切&#xff08;如把一个文件切成10份&#xff09;或按指定大小切&#xff08;如每份最大不超过10M&#xff09;&#xff0c;这两种方式都能够。 程序说明&#xff1a; 文件分割&#xff1a;把一个文件分割…