iOS vDSP中的单矢量生成
来源:互联网 发布:人工智能电影观后感 编辑:程序博客网 时间:2024/06/01 23:04
注:注意数组越界问题。
vDSP_Length和vDSP_Stride数据类型:
typedef unsigned long vDSP_Length;typedef long vDSP_Stride;
矢量生成 vDSP_vramp方法
extern void vDSP_vramp( const float *__A, const float *__B, float *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
方法算法:
for (n = 0; n < N; ++n) C[n] = A[0] + n*B[0];
函数使用例子:
float A[1]={3},B[1]={2}; float C[8]={0}; printf("input:\n"); printf("A:%f B:%f",A[0],B[0]); vDSP_vramp(A, B, C, 1,8); printf("\nvDSP_vramp(A,B,C,1,8) C:\n"); for (int i=0; i<8; i++) { printf("%f ",C[i]); C[i]=0; } vDSP_vramp(A, B, C, 2,4); printf("\nvDSP_vramp(A,B,C,2,4) C\n"); for (int i=0; i<8; i++) { printf("%f ",C[i]); C[i]=0; } vDSP_vramp(A, B, C, 1,4); printf("\nvDSP_vramp(A,B,C,1,4) C:\n"); for (int i=0; i<8; i++) { printf("%f ",C[i]); }
输出结果如下:
input:
A:3.000000 B:2.000000
vDSP_vramp(A,B,C,1,8) C:
3.000000 5.000000 7.000000 9.000000 11.000000 13.000000 15.000000 17.000000
vDSP_vramp(A,B,C,2,4) C
3.000000 0.000000 5.000000 0.000000 7.000000 0.000000 9.000000 0.000000
vDSP_vramp(A,B,C,1,4) C:
3.000000 5.000000 7.000000 9.000000 0.000000 0.000000 0.000000 0.000000
A:3.000000 B:2.000000
vDSP_vramp(A,B,C,1,8) C:
3.000000 5.000000 7.000000 9.000000 11.000000 13.000000 15.000000 17.000000
vDSP_vramp(A,B,C,2,4) C
3.000000 0.000000 5.000000 0.000000 7.000000 0.000000 9.000000 0.000000
vDSP_vramp(A,B,C,1,4) C:
3.000000 5.000000 7.000000 9.000000 0.000000 0.000000 0.000000 0.000000
矢量生成 vDSP_vrampD方法
extern void vDSP_vrampD( const double *__A, const double *__B, double *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
方法算法:
for (n = 0; n < N; ++n) C[n] = A[0] + n*B[0];
矢量生成 vDSP_vrampmul方法
void vDSP_vrampmul( const float *__I, vDSP_Stride __IS, float *__Start, const float *__Step, float *__O, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i){ O[i*OS] = *Start * I[i*IS]; *Start += *Step; }
方法使用例子:
float start=0,step=2; float I[8],O[8]={0}; printf("input:\n"); for(int i=0;i<8;i++){ I[i]=i; printf("%f ",I[i]); } vDSP_vrampmul(I,1, &start, &step, O, 1, 8); printf("\nvDSP_vrampmul(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%f ",O[i]); O[i]=0; } start=0;step=2; vDSP_vrampmul(I,2, &start, &step, O, 1, 4); printf("\nvDSP_vrampmul(I,2, &start, &step, O, 1, 4) O:\n"); for(int i=0;i<8;i++){ printf("%f ",O[i]); O[i]=0; } start=0;step=2; vDSP_vrampmul(I,1, &start, &step, O, 2, 4); printf("\nvDSP_vrampmul(I,1, &start, &step, O, 2, 4) O:\n"); for(int i=0;i<8;i++){ printf("%f ",O[i]); O[i]=0; } start=0;step=2; vDSP_vrampmul(I,1, &start, &step, O, 1, 4); printf("\nvDSP_vrampmul(I,1, &start, &step, O, 1, 4) O:\n"); for(int i=0;i<8;i++){ printf("%f ",O[i]); }
输出结果:
input:0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 vDSP_vrampmul(I,1, &start, &step, O, 1, 8) O:0.000000 2.000000 8.000000 18.000000 32.000000 50.000000 72.000000 98.000000 vDSP_vrampmul(I,2, &start, &step, O, 1, 4) O:0.000000 4.000000 16.000000 36.000000 0.000000 0.000000 0.000000 0.000000 vDSP_vrampmul(I,1, &start, &step, O, 2, 4) O:0.000000 0.000000 2.000000 0.000000 8.000000 0.000000 18.000000 0.000000 vDSP_vrampmul(I,1, &start, &step, O, 1, 4) O:0.000000 2.000000 8.000000 18.000000 0.000000 0.000000 0.000000 0.000000
矢量生成 vDSP_vrampmulD方法
void vDSP_vrampmulD( const double *__I, vDSP_Stride __IS, double *__Start, const double *__Step, double *__O, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
vDSP_vrampmulD方法计算方式:
for (i = 0; i < N; ++i){ O[i*OS] = *Start * I[i*IS]; *Start += *Step; }
矢量生成 vDSP_vrampmul_s1_15方法
void vDSP_vrampmul_s1_15( const short int *__I, vDSP_Stride __IS, short int *__Start, const short int *__Step, short int *__O, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i){ O[i*OS] = (*Start * I[i*IS])/32768;//(2的15次方32768) *Start += *Step; }
short int start=1,step=2; short int I[8],O[8]={0}; printf("input:\n"); for(short int i=0;i<8;i++){ I[i]=32768/2; printf("%d ",I[i]); } vDSP_vrampmul_s1_15(I,1, &start, &step, O, 1, 8); printf("\n(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%d ",O[i]); O[i]=0; } start=1;step=2; vDSP_vrampmul_s1_15(I,2, &start, &step, O, 1, 4); printf("\n(I,2, &start, &step, O, 1, 4) O:\n"); for(int i=0;i<8;i++){ printf("%d ",O[i]); O[i]=0; } start=1;step=2; vDSP_vrampmul_s1_15(I,1, &start, &step, O, 2, 4); printf("\n(I,1, &start, &step, O, 2, 4) O:\n"); for(int i=0;i<8;i++){ printf("%d ",O[i]); O[i]=0; } start=1;step=2; vDSP_vrampmul_s1_15(I,1, &start, &step, O, 1, 4); printf("\n(I,1, &start, &step, O, 1, 4) O:\n"); for(int i=0;i<8;i++){ printf("%d ",O[i]); }
打印结果:
input:
16384 16384 16384 16384 16384 16384 16384 16384
(I,1, &start, &step, O, 1, 8) O:
0 1 2 3 4 5 6 7
(I,2, &start, &step, O, 1, 4) O:
0 1 2 3 0 0 0 0
(I,1, &start, &step, O, 2, 4) O:
0 0 1 0 2 0 3 0
(I,1, &start, &step, O, 1, 4) O:
0 1 2 3 0 0 0 0
16384 16384 16384 16384 16384 16384 16384 16384
(I,1, &start, &step, O, 1, 8) O:
0 1 2 3 4 5 6 7
(I,2, &start, &step, O, 1, 4) O:
0 1 2 3 0 0 0 0
(I,1, &start, &step, O, 2, 4) O:
0 0 1 0 2 0 3 0
(I,1, &start, &step, O, 1, 4) O:
0 1 2 3 0 0 0 0
矢量生成 vDSP_vrampmul_s8_24方法
void vDSP_vrampmul_s8_24( const int *__I, vDSP_Stride __IS, int *__Start, const int *__Step, int *__O, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i){ O[i*OS] = (*Start * I[i*IS])/16777216;//(2的24次方16777216) *Start += *Step; }
矢量生成 vDSP_vrampmul2方法
void vDSP_vrampmul2( const float *__I0, const float *__I1, vDSP_Stride __IS, float *__Start, const float *__Step, float *__O0, float *__O1, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i) { O0[i*OS] = *Start * I0[i*IS]; O1[i*OS] = *Start * I1[i*IS]; *Start += *Step;}
矢量生成 vDSP_vrampmul2D方法
void vDSP_vrampmul2D( const double *__I0, const double *__I1, vDSP_Stride __IS, double *__Start, const double *__Step, double *__O0, double *__O1, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
方法算法:
for (i = 0; i < N; ++i) { O0[i*OS] = *Start * I0[i*IS]; O1[i*OS] = *Start * I1[i*IS]; *Start += *Step;}
矢量生成 vDSP_vrampmul2_s1_15方法
void vDSP_vrampmul2_s1_15( const short int *__I0, const short int *__I1, vDSP_Stride __IS, short int *__Start, const short int *__Step, short int *__O0, short int *__O1, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i) { O0[i*OS] = *Start * I0[i*IS]/32768;//2^15=32768 O1[i*OS] = *Start * I1[i*IS]/32768;//2^15=32768 *Start += *Step;}
<pre name="code" class="objc">
矢量生成 vDSP_vrampmul2_s8_24方法
void vDSP_vrampmul2_s8_24( const int *__I0, const int *__I1, vDSP_Stride __IS, int *__Start, const int *__Step, int *__O0, int *__O1, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i) { O0[i*OS] = *Start * I0[i*IS]/16777216;//2^24=16777216 O1[i*OS] = *Start * I1[i*IS]/1677216;//2^24=16777216 *Start += *Step;}
矢量生成 vDSP_vrampmuladd 方法
void vDSP_vrampmuladd( const float *__I, vDSP_Stride __IS, float *__Start, const float *__Step, float *__O, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i) { O[i*OS] += *Start * I[i*IS]; *Start += *Step;}
例子:
float start=1,step=2; float I[8],O[8]={0}; printf("input:\n"); for(int i=0;i<8;i++){ I[i]=2; O[i]=0; printf("%f ",I[i]); } vDSP_vrampmuladd(I,1, &start, &step, O, 1, 8); printf("\n(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%f ",O[i]); O[i]=1; } start=1;step=2; vDSP_vrampmuladd(I,1, &start, &step, O, 1, 8); printf("\n(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%f ",O[i]); O[i]=2; } start=1;step=2; vDSP_vrampmuladd(I,1, &start, &step, O, 1, 8); printf("\n(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%f ",O[i]); O[i]=3; } start=1;step=2; vDSP_vrampmuladd(I,1, &start, &step, O, 1, 8); printf("\n(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%f ",O[i]); }
输出结果:
input:2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000 (I,1, &start, &step, O, 1, 8) O:2.000000 6.000000 10.000000 14.000000 18.000000 22.000000 26.000000 30.000000 (I,1, &start, &step, O, 1, 8) O:3.000000 7.000000 11.000000 15.000000 19.000000 23.000000 27.000000 31.000000 (I,1, &start, &step, O, 1, 8) O:4.000000 8.000000 12.000000 16.000000 20.000000 24.000000 28.000000 32.000000 (I,1, &start, &step, O, 1, 8) O:5.000000 9.000000 13.000000 17.000000 21.000000 25.000000 29.000000 33.000000
矢量生成 vDSP_vrampmuladdD方法
void vDSP_vrampmuladdD( const double *__I, vDSP_Stride __IS, double *__Start, const double *__Step, double *__O, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
方法算法:
for (i = 0; i < N; ++i) { O[i*OS] += *Start * I[i*IS]; *Start += *Step;}
矢量生成 vDSP_vrampmul_s1_15方法
void vDSP_vrampmuladd_s1_15( const short int *__I, vDSP_Stride __IS, short int *__Start, const short int *__Step, short int *__O, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i) { O[i*OS] += (*Start * I[i*IS])/32768;//2^15=32768 *Start += *Step;}
例子:
short int start=1,step=2; short int I[8],O[8]={0}; printf("input:\n"); for(int i=0;i<8;i++){ I[i]=32768/2; O[i]=32768-8; printf("%d ",I[i]); } vDSP_vrampmuladd_s1_15(I,1, &start, &step, O, 1, 8); printf("\n(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%d ",O[i]); O[i]=32768-9; } start=1;step=2; vDSP_vrampmuladd_s1_15(I,1, &start, &step, O, 1, 8); printf("\n(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%d ",O[i]); O[i]=32768-10; } start=1;step=2; vDSP_vrampmuladd_s1_15(I,1, &start, &step, O, 1, 8); printf("\n(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%d ",O[i]); O[i]=32768-100; } start=1;step=2; vDSP_vrampmuladd_s1_15(I,1, &start, &step, O, 1, 8); printf("\n(I,1, &start, &step, O, 1, 8) O:\n"); for(int i=0;i<8;i++){ printf("%d ",O[i]); }
输出结果:
input:
16384 16384 16384 16384 16384 16384 16384 16384
(I,1, &start, &step, O, 1, 8) O:
32760 32761 32762 32763 32764 32765 32766 32767
(I,1, &start, &step, O, 1, 8) O:
32759 32760 32761 32762 32763 32764 32765 32766
(I,1, &start, &step, O, 1, 8) O:
32758 32759 32760 32761 32762 32763 32764 32765
(I,1, &start, &step, O, 1, 8) O:
32668 32669 32670 32671 32672 32673 32674 32675
16384 16384 16384 16384 16384 16384 16384 16384
(I,1, &start, &step, O, 1, 8) O:
32760 32761 32762 32763 32764 32765 32766 32767
(I,1, &start, &step, O, 1, 8) O:
32759 32760 32761 32762 32763 32764 32765 32766
(I,1, &start, &step, O, 1, 8) O:
32758 32759 32760 32761 32762 32763 32764 32765
(I,1, &start, &step, O, 1, 8) O:
32668 32669 32670 32671 32672 32673 32674 32675
矢量生成 vDSP_vrampmuladd_s8_24方法
void vDSP_vrampmuladd_s8_24( const int *__I, vDSP_Stride __IS, int *__Start, const int *__Step, int *__O, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i) { O[i*OS] += (*Start * I[i*IS])/16777216;//2^24=16777216 *Start += *Step;}
矢量生成 vDSP_vrampmuladd2方法
void vDSP_vrampmuladd2( const float *__I0, const float *__I1, vDSP_Stride __IS, float *__Start, const float *__Step, float *__O0, float *__O1, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i){ O0[i*OS] += *Start * I0[i*IS]; O1[i*OS] += *Start * I1[i*IS]; *Start += *Step;}
矢量生成 vDSP_vrampmuladd2D方法
void vDSP_vrampmuladd2D( const double *__I0, const double *__I1, vDSP_Stride __IS, double *__Start, const double *__Step, double *__O0, double *__O1, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
方法算法:
for (i = 0; i < N; ++i){ O0[i*OS] += *Start * I0[i*IS]; O1[i*OS] += *Start * I1[i*IS]; *Start += *Step;}
矢量生成 vDSP_vrampmul2_s1_15方法
void vDSP_vrampmul2_s1_15( const short int *__I0, const short int *__I1, vDSP_Stride __IS, short int *__Start, const short int *__Step, short int *__O0, short int *__O1, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i){ O0[i*OS] += *Start * I0[i*IS]/32768;//2^15=32768 O1[i*OS] += *Start * I1[i*IS]/32768;//2^15=32768 *Start += *Step;}
矢量生成 vDSP_vrampmul2_s8_24方法
void vDSP_vrampmul2_s8_24( const int *__I0, const int *__I1, vDSP_Stride __IS, int *__Start, const int *__Step, int *__O0, int *__O1, vDSP_Stride __OS, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_4_0);
方法算法:
for (i = 0; i < N; ++i){ O0[i*OS] += *Start * I0[i*IS]/16777216;//2^24=16777216 O1[i*OS] += *Start * I1[i*IS]/16777216;//2^24=16777216 *Start += *Step;}
矢量生成 vDSP_vgen方法 生成锥形轨道
extern void vDSP_vgen( const float *__A, const float *__B, float *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
方法算法:
for (n = 0; n < N; ++n) C[n] = A[0] + (B[0] - A[0]) * n/(N-1);
例子:
float A[1]={1},B[1]={3}; float C[16]={0}; printf("input:\n"); printf("A:%f B:%f",A[0],B[0]); vDSP_vgen(A, B, C, 1,8); printf("\nvDSP_vgen(A,B,C,1,8) C:\n"); for (int i=0; i<8; i++) { printf("%f ",C[i]); C[i]=0; } vDSP_vgen(A, B, C, 2,8); printf("\nvDSP_vgen(A,B,C,2,8) C\n"); for (int i=0; i<8; i++) { printf("%f ",C[i]); C[i]=0; }
输出结果:
input:
A:1.000000 B:3.000000
vDSP_vgen(A,B,C,1,8) C:
1.000000 1.285714 1.571429 1.857143 2.142857 2.428571 2.714286 3.000000
vDSP_vgen(A,B,C,2,4) C
1.000000 0.000000 1.285714 0.000000 1.571429 0.000000 1.857143 0.000000
A:1.000000 B:3.000000
vDSP_vgen(A,B,C,1,8) C:
1.000000 1.285714 1.571429 1.857143 2.142857 2.428571 2.714286 3.000000
vDSP_vgen(A,B,C,2,4) C
1.000000 0.000000 1.285714 0.000000 1.571429 0.000000 1.857143 0.000000
矢量生成 vDSP_vgenD方法 生成锥形轨道
extern void vDSP_vgenD( const double *__A, const double *__B, double *__C, vDSP_Stride __IC, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
方法算法:
for (n = 0; n < N; ++n) C[n] = A[0] + (B[0] - A[0]) * n/(N-1);
矢量生成 vDSP_vgenp方法 生成外推和插值
注:M是A、B的长
extern void vDSP_vgenp( const float *__A, vDSP_Stride __IA, const float *__B, vDSP_Stride __IB, float *__C, vDSP_Stride __IC, vDSP_Length __N, vDSP_Length __M) // Length of A and of B. __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
方法算法
for (n = 0; n < N; ++n) If n <= B[0], then C[n] = A[0]. If B[M-1] < n, then C[n] = A[M-1]. Otherwise: Let m be such that B[m] < n <= B[m+1]. C[n] = A[m] + (A[m+1]-A[m]) * (n-B[m]) / (B[m+1]-B[m]).
矢量生成 vDSP_vgenpD方法 生成外推和插值
注:M是A、B的长 A,B
extern void vDSP_vgenpD( const double *__A, vDSP_Stride __IA, const double *__B, vDSP_Stride __IB, double *__C, vDSP_Stride __IC, vDSP_Length __N, vDSP_Length __M) // Length of A and of B. __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
方法算法
for (n = 0; n < N; ++n) If n <= B[0], then C[n] = A[0]. If B[M-1] < n, then C[n] = A[M-1]. Otherwise: Let m be such that B[m] < n <= B[m+1]. C[n] = A[m] + (A[m+1]-A[m]) * (n-B[m]) / (B[m+1]-B[m]).
矢量生成 vDSP_vtabi方法 矢量查表和插值
extern void vDSP_vtabi( const float *__A, vDSP_Stride __IA, const float *__S1, const float *__S2, const float *__C, vDSP_Length __M, float *__D, vDSP_Stride __ID, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
方法算法:
for (n = 0; n < N; ++n){ p = S1[0] * A[n] + S2[0]; if (p < 0) D[n] = C[0]; else if (p < M-1){ q = trunc(p); r = p-q; D[n] = (1-r)*C[q] + r*C[q+1]; } else D[n] = C[M-1]; }
矢量生成 vDSP_vtabiD方法 矢量查表和插值
extern void vDSP_vtabiD( const double *__A, vDSP_Stride __IA, const double *__S1, const double *__S2, const double *__C, vDSP_Length __M, double *__ID, vDSP_Stride __L, vDSP_Length __N) __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0);
方法算法:
for (n = 0; n < N; ++n){ p = S1[0] * A[n] + S2[0]; if (p < 0) D[n] = C[0]; else if (p < M-1){ q = trunc(p); r = p-q; D[n] = (1-r)*C[q] + r*C[q+1]; } else D[n] = C[M-1]; }
0 0
- iOS vDSP中的单矢量生成
- iOS vDSP中的单矢量相反
- iOS vDSP中的单矢量平方
- iOS vDSP中的单矢量填充和清除
- iOS vDSP中的矢量绝对值
- iOS vDSP中的单矢量归一化、极坐标转换和单矢量转换为分贝等值
- iOS中的单例
- iOS中的单例
- iOS中的单例
- iOS中的单例
- iOS中的单例
- Vdsp(bf561)中的浮点运算(15):vdsp库的一个BUG
- iOS中的单例模式
- IOS中的单例模式
- IOS 中的单例模式
- iOS中的单例模式
- iOS中的单例模式
- iOS中的单例模式
- android.view.WindowLeaked: Activity cn.com.zte.uc.activites.shipTicket.OrderWrite1 has leaked window
- C++学习006-条件运算符
- OFBiz 的Party PartyGroup主要关系
- ionic开发中的一些小技巧
- Prism应用开发(七)——导航
- iOS vDSP中的单矢量生成
- SQLServer 安全加固:ICP备案需要禁用的扩展存储过程
- 【HDU】-5748-Bellovin(LIS,变化)
- Android产品研发系列
- OFBIZ各级菜单权限分配
- Oracle EBS fnd_request.submit_request 与 Fnd_concurrent.wait_for_ruqest
- Flexbox 布局 与 常见布局需求实现对比
- Linux休眠,挂起,待机,关机的区别及相关命令
- Prism应用开发(八)——松耦合组件之间通信