【SLAM十四讲-9.3 实践Ceres BA-BAL数据集problem-16-22106-pre.txt分析】

news2025/2/28 20:41:29

数据集Dubrovnik Dataset 杜布罗夫尼克数据集的链接:Bundle Adjustment in the Large https://grail.cs.washington.edu/projects/bal/
在这里插入图片描述

problem-16-22106-pre.txt.bz2
16 22106 83718(这里是第1行)
0 0     -3.859900e+02 3.871200e+02(这里是第2行)
1 0     -3.844000e+01 4.921200e+02
2 0     -6.679200e+02 1.231100e+02
7 0     -5.991800e+02 4.079300e+02
12 0     -7.204300e+02 3.143400e+02
13 0     -1.151300e+02 5.548999e+01
0 1     3.838800e+02 -1.529999e+01
1 1     5.597500e+02 -1.061500e+02
10 1     3.531899e+02 1.649500e+02
0 2     5.915500e+02 1.364400e+02
1 2     8.638600e+02 -2.346997e+01
2 2     4.947200e+02 1.125200e+02
6 2     4.087800e+02 2.846700e+02
7 2     4.246100e+02 3.101700e+02
9 2     2.848900e+02 1.928900e+02
省略省略省略省略省略省略省略省略
省略省略省略省略省略省略省略省略
省略省略省略省略省略省略省略省略
14 22101     8.408002e+01 -4.590699e+02
15 22101     -3.668100e+02 5.134200e+02
14 22102     6.578003e+01 -4.800800e+02
15 22102     -3.920800e+02 4.843700e+02
14 22103     1.808000e+02 -5.225200e+02
15 22103     -2.593700e+02 4.393600e+02
14 22104     8.235999e+01 -5.621600e+02
15 22104     -3.864900e+02 3.803600e+02
14 22105     2.212600e+02 -4.689200e+02
15 22105     -1.963200e+02 5.126800e+02 (这里是第83719行,总共83718个观测数据)
-1.6943983532198115e-02(这里是第83720行)
1.1171804676513932e-02
2.4643508831711991e-03
7.3030995682610689e-01
-2.6490818471043420e-01
-1.7127892627337182e+00
1.4300319432711681e+03
-7.5572758535864072e-08
3.2377569465570913e-14
1.5049725341485708e-02
-1.8504564785154357e-01
-2.9278402790141456e-01
-1.0590476152349551e+00
-3.6017862414345798e-02
省略省略省略省略省略省略省略省略
省略省略省略省略省略省略省略省略
省略省略省略省略省略省略省略省略
-4.6810959170777309e+01
-5.1658843840370494e+00
8.7190890000602259e+00
-4.3856247105773697e+01
-7.9343522447974468e+00
7.3540260405955173e+00
-4.2005555023142122e+01
-3.7719680164031812e+00
1.1022501903417394e+01
-4.7349911639646528e+01(这是第150181行,总共16个相机 * 9个参数 + 22106个路标点 * 3个参数 = 144 +66318 = 66462个参数)

Data Format 数据格式
每个问题都以 bzip2 压缩文本文件的形式提供,格式如下。

<num_cameras> <num_points> <num_observations>
<camera_index_1> <point_index_1> <x_1> <y_1>
...
<camera_index_num_observations> <point_index_num_observations> <x_num_observations> <y_num_observations>
<camera_1>
...
<camera_num_cameras>
<point_1>
...
<point_num_points>

其中,摄像机和点索引从 0 开始。每个摄像机都是一组 9 个参数 - R、t、f、k1 和 k2。旋转 R 指定为罗德里格斯矢量。
problem-16-22106-pre.txt 数据格式说明

<num_cameras> <num_points> <num_observations>
16 22106 83718      - `<num_cameras>`:表示相机的数量,这里为16- `<num_points>`:表示路标点(三维点)的数量,这里为22106- `<num_observations>`:表示观测的数量,指的是所有相机观测到的路标点的数量,这里为83718。 

                    这些数据指示了整个问题的规模和数据集中的相机、路标点以及相机观测的总数目。                        
                                                      
         
<camera_index_1> <point_index_1> <x_1> <y_1>
0 0     -3.859900e+02 3.871200e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                  
1 0     -3.844000e+01 4.921200e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。         
2 0     -6.679200e+02 1.231100e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。         
7 0     -5.991800e+02 4.079300e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。         
12 0     -7.204300e+02 3.143400e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。           
13 0     -1.151300e+02 5.548999e+0183718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                
0 1     3.838800e+02 -1.529999e+0183718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。 
1 1     5.597500e+02 -1.061500e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。
10 1     3.531899e+02 1.649500e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。
.....................................83718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。    
14 22102     6.578003e+01 -4.800800e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                   
15 22102     -3.920800e+02 4.843700e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                   
14 22103     1.808000e+02 -5.225200e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                   
15 22103     -2.593700e+02 4.393600e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                   
14 22104     8.235999e+01 -5.621600e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                   
15 22104     -3.864900e+02 3.803600e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                   
14 22105     2.212600e+02 -4.689200e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                   
15 22105     -1.963200e+02 5.126800e+0283718行观测:每一行包含一个观测数据点,其中包括相机索引 0-15 、路标点索引 0-22105 以及对应的 x 和 y 值。                   
<camera_index_num_observations> <point_index_num_observations> <x_num_observations> <y_num_observations>


<camera_1>
-1.6943983532198115e-02                 这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
1.1171804676513932e-02                  这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
2.4643508831711991e-03                  这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
7.3030995682610689e-01                  这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
-2.6490818471043420e-01                 这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
-1.7127892627337182e+00                 这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
1.4300319432711681e+03                  这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
-7.5572758535864072e-08                 这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
3.2377569465570913e-14                  这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
1.5049725341485708e-02                  这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
-1.8504564785154357e-01                 这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
.....................                   这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                        
<camera_num_cameras>                    这部分数据表示16个相机 * 每个相机的9个参数 = 144个参数                       
 
 


<point_= 144个参数1>
.....................
8.7190890000602259e+00                这部分数据表示22106个路标点 * 每个路标点的3个参数 = 66318个参数  
-4.3856247105773697e+01               这部分数据表示22106个路标点 * 每个路标点的3个参数 = 66318个参数   
-7.9343522447974468e+00               这部分数据表示22106个路标点 * 每个路标点的3个参数 = 66318个参数   
7.3540260405955173e+00                这部分数据表示22106个路标点 * 每个路标点的3个参数 = 66318个参数  
-4.2005555023142122e+01               这部分数据表示22106个路标点 * 每个路标点的3个参数 = 66318个参数   
-3.7719680164031812e+00               这部分数据表示22106个路标点 * 每个路标点的3个参数 = 66318个参数   
1.1022501903417394e+01                这部分数据表示22106个路标点 * 每个路标点的3个参数 = 66318个参数  
-4.7349911639646528e+01               这部分数据表示22106个路标点 * 每个路标点的3个参数 = 66318个参数   
<point_num_points>


文件总行数:150181 = 整个问题的规模和数据集中的相机、路标点以及相机观测的总数目 1+ 观测数据 83718+ 16个相机 * 每个相机的9个参数   144+ 22106个路标点 * 每个路标点的3个参数  66318行

在文本文件 `problem-16-22106-pre.txt` 中,`<camera_1>` 到 `<camera_num_cameras>` 和 `<point_1>` 到 `<point_num_points>` 部分表示相机和路标点的参数信息。
在这里,`<camera_1>` 到 `<camera_num_cameras>` 部分包含了相机的参数数据,而 `<point_1>` 到 `<point_num_points>` 部分包含了路标点的参数数据。
这些部分可能包含相机和路标点的内部参数,例如内参矩阵、畸变系数(如果有的话),或者其他相机和路标点相关的参数。这取决于问题的具体设置和使用的算法,这些参数通常是用来描述相机或者路标点在优化过程中的特性和约束。
通常情况下,这些参数会以一定的格式保存在文本文件中,并在算法中被读取和处理。需要根据问题的具体背景和文档中的说明来解释这些参数的含义。

在这个上下文中,每个相机的9个参数代表了相机的内部参数和外部参数。具体而言,这9个参数通常指的是:
1. **R (Rotation)**:旋转矩阵或旋转向量。在这种情况下,描述相机的旋转通常使用 Rodrigues' vector(罗德里格斯向量)来表示。Rodrigues' vector 是一个三维向量,用来表示旋转轴乘以旋转角度的结果。
2. **t (Translation)**:平移向量。它表示相机在世界坐标系中的位置。
3. **f (Focal Length)**:焦距,即相机的焦距参数。
4. **k1, k2 (Distortion Parameters)**:径向畸变参数,通常使用k1和k2来表示畸变的程度。这些参数用于校正由于相机镜头特性而引起的径向畸变。

这些参数的组合构成了相机的内部参数(焦距、畸变)以及外部参数(旋转、平移),并且在相机标定或三维重建问题中经常使用。
 

common.cpp文件的部分代码

// 从文件中读取数据,并检查读取是否成功的函数模板
template<typename T>
void FscanfOrDie(FILE *fptr, const char *format, T *value) {
    // 使用 fscanf 从文件中按照给定的格式读取数据到 value 中
    int num_scanned = fscanf(fptr, format, value);
    // 如果读取的数据数量不符合预期(不是 1 个),则输出错误信息
    if (num_scanned != 1)
        std::cerr << "Invalid UW data file. ";
}

// BALProblem 类的构造函数
BALProblem::BALProblem(const std::string &filename, bool use_quaternions) {
    FILE *fptr = fopen(filename.c_str(), "r"); // 打开文件

    if (fptr == NULL) {
        // 如果文件无法打开,输出错误信息
        std::cerr << "Error: unable to open file " << filename;
        return;
    };

    // 读取文件头信息:相机数量、路标点数量、观测数量 读取第1行的3个数:16 22106 83718
    FscanfOrDie(fptr, "%d", &num_cameras_);
    // 每次调用 FscanfOrDie 函数只会读取并解析一组数据。
    // 例如,如果你的调用是 FscanfOrDie(fptr, "%d", &num_cameras_);,那么它会从文件中读取一个整数,存储到 num_cameras_ 变量中。
    FscanfOrDie(fptr, "%d", &num_points_);
    FscanfOrDie(fptr, "%d", &num_observations_);

    std::cout << "Header: " << num_cameras_
              << " " << num_points_
              << " " << num_observations_<<std::endl;//Header: 16 22106 83718
    // 分配存储相机索引、路标点索引和观测数据的数组空间
    point_index_ = new int[num_observations_];//point_index_ 是一个 int 类型的指针,指向一个包含 num_observations_ 个整数的数组。
    camera_index_ = new int[num_observations_];//camera_index_ 也是一个 int 类型的指针,指向一个包含 num_observations_ 个整数的数组。
    observations_ = new double[2 * num_observations_];//observations_ 是一个 double 类型的指针,指向一个包含 2 * num_observations_ 个双精度浮点数的数组。
    // observations_指向 [x1,y1,   x2,y2  ,...,  x83718,y83718] 

    // 计算参数总数并分配存储参数的数组空间
    num_parameters_ = 9 * num_cameras_ + 3 * num_points_;//num_parameters_ = 9*16+ 3*22106 =66462
    // problem-16-22106-pre.txt  150181行 - 83719行   = 66462行
    parameters_ = new double[num_parameters_];

    // 从文件中读取相机索引、路标点索引和观测数据,并存储到相应的数组中
    /* `camera_index_ + i`、`point_index_ + i`、`observations_ + 2 * i + j` 是指针算术的用法。
    1. `camera_index_ + i` 和 `point_index_ + i`:这些是指针算术的形式,用于访问数组中的特定元素。
    `camera_index_` 和 `point_index_` 是指向 `int` 类型数组的指针。
    `camera_index_ + i` 和 `point_index_ + i` 分别表示数组的第 `i` 个元素的地址。
    由于这些是指针算术,因此它们会根据数组元素的大小移动指针,使得指针指向相应元素的地址。
    2. `observations_ + 2 * i + j`:这里也是指针算术的用法,`observations_` 是指向 `double` 类型数组的指针。
    `observations_ + 2 * i + j` 表示数组中第 `(2 * i + j)` 个元素的地址。
    在这个循环中,`j` 的值为 `0` 或 `1`,因此 `observations_ + 2 * i + j` 分别访问了 `observations_` 数组中的奇数或偶数索引位置的元素。 */
    
    // 读取第2行到83719行 ,共83718行观测
    for (int i = 0; i < num_observations_; ++i) { // i < 83718
        FscanfOrDie(fptr, "%d", camera_index_ + i);
        FscanfOrDie(fptr, "%d", point_index_ + i);
        for (int j = 0; j < 2; ++j) {// [x1,y1,   x2,y2  ,...,  x83718,y83718] 
            FscanfOrDie(fptr, "%lf", observations_ + 2 * i + j);
        }
    }

    // 读取 83720行 到 最后180181行,共144 * 9 + 22106 * 3  =66462行参数
    // 读取并存储所有参数
    // 16个相机 * 每个相机的9个参数   144行
    // 22106个路标点 * 每个路标点的3个参数  66318行
    for (int i = 0; i < num_parameters_; ++i) {
        FscanfOrDie(fptr, "%lf", parameters_ + i);
    }


// 打印数组大小
std::cout << "Size of camera_index_: " << num_observations_ << std::endl;
std::cout << "Size of point_index_: " << num_observations_ << std::endl;
std::cout << "Size of observations_: " << 2 * num_observations_ << std::endl;
std::cout << "Size of parameters_: " << num_parameters_ << std::endl;
// Size of camera_index_: 83718
// Size of point_index_: 83718
// Size of observations_: 167436
// Size of parameters_: 66462
// Size of camera_index_: 83718

// 打印相机索引数组 camera_index_
for (int i = 0; i < 10; ++i) {
    std::cout << "Camera index " << i << ": " << camera_index_[i] << std::endl;
}

// 打印路标点索引数组 point_index_
for (int i = 0; i < 10; ++i) {
    std::cout << "Point index " << i << ": " << point_index_[i] << std::endl;
}

// 打印观测数据数组 observations_
for (int i = 0; i < 10; ++i) {
    std::cout << "Observations for " << i << ": " << observations_[2 * i] << " " << observations_[2 * i + 1] << std::endl;
}

// 打印参数数组 parameters_
for (int i = 0; i < 10; ++i) {
    std::cout << "Parameter " << i << ": " << parameters_[i] << std::endl;
}

// Camera index 0: 0
// Camera index 1: 1
// Camera index 2: 2
// Camera index 3: 7
// Camera index 4: 12
// Camera index 5: 13
// Camera index 6: 0
// Camera index 7: 1
// Camera index 8: 10
// Camera index 9: 0
// Point index 0: 0
// Point index 1: 0
// Point index 2: 0
// Point index 3: 0
// Point index 4: 0
// Point index 5: 0
// Point index 6: 1
// Point index 7: 1
// Point index 8: 1
// Point index 9: 2
// Observations for 0: -385.99 387.12
// Observations for 1: -38.44 492.12
// Observations for 2: -667.92 123.11
// Observations for 3: -599.18 407.93
// Observations for 4: -720.43 314.34
// Observations for 5: -115.13 55.49
// Observations for 6: 383.88 -15.3
// Observations for 7: 559.75 -106.15
// Observations for 8: 353.19 164.95
// Observations for 9: 591.55 136.44
// Parameter 0: -0.016944
// Parameter 1: 0.0111718
// Parameter 2: 0.00246435
// Parameter 3: 0.73031
// Parameter 4: -0.264908
// Parameter 5: -1.71279
// Parameter 6: 1430.03
// Parameter 7: -7.55728e-08
// Parameter 8: 3.23776e-14
// Parameter 9: 0.0150497



    fclose(fptr); // 关闭文件

    // 根据 use_quaternions 的值,将角轴表示的旋转转换为四元数表示
    use_quaternions_ = use_quaternions;
    if (use_quaternions) {
        // 扩展参数向量长度,将角轴旋转转换为四元数表示
        num_parameters_ = 10 * num_cameras_ + 3 * num_points_;
        double *quaternion_parameters = new double[num_parameters_];
        double *original_cursor = parameters_;
        double *quaternion_cursor = quaternion_parameters;
        for (int i = 0; i < num_cameras_; ++i) {
            AngleAxisToQuaternion(original_cursor, quaternion_cursor);
            quaternion_cursor += 4;
            original_cursor += 3;
            for (int j = 4; j < 10; ++j) {
                *quaternion_cursor++ = *original_cursor++;
            }
        }
        // 复制剩余的路标点信息
        for (int i = 0; i < 3 * num_points_; ++i) {
            *quaternion_cursor++ = *original_cursor++;
        }
        // 使用四元数参数替换角轴参数
        delete[] parameters_;
        parameters_ = quaternion_parameters;
    }
}

终端输出部分信息:

                                     Original                  Reduced
Parameter blocks                        22122                    22122
Parameters                              66462                    66462
Residual blocks                         83718                    83718
Residuals                              167436                   167436

参数块:16个相机 + 22106 个路标点 = 22122
参数:16个相机 * 9个参数 + 22106个路标点 * 3个参数 = 144 +66318 = 66462个参数
残差块:83718次观测
残差:[x1,y1, x2,y2 ,…, x83718,y83718] ,数组大小为2*83718 =167436

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

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

相关文章

【PTA-C语言】实验四-循环结构II

如果代码存在问题&#xff0c;麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 实验四-循环结构II 7-1 跟奥巴马一起画方块&#xff08;分数 15&#xff09;7-2 打印九九口诀表&#xff08;分数 10&#xff09;7-3 求符合给定条件的整数集&#xff08;分数 15&#xff09;7-4 求特殊方程…

CSS 选择器优先级,!important 也会被覆盖?

目录 1&#xff0c;重要性2&#xff0c;专用性3&#xff0c;源代码顺序 CSS 属性值的计算过程中。其中第2步层叠冲突只是简单说明了下&#xff0c;这篇文章来详细介绍。 层叠冲突更广泛的被称为 CSS选择器优先级计算。 为什么叫层叠冲突&#xff0c;可以理解为 CSS 是 Cascadi…

五年自动化测试,终于进字节跳动了,年薪30w其实也并非触不可及

一些碎碎念 什么都做了&#xff0c;和什么都没做其实是一样的&#xff0c;走出“瞎忙活”的安乐窝&#xff0c;才是避开弯路的最佳路径。希望我的经历能帮助到有需要的朋友。 在测试行业已经混了5个年头了&#xff0c;以前经常听到开发对我说&#xff0c;天天的点点点有意思没…

Linux常见指令大全及周边知识:让你的命令行变得更加强大

文章目录 目录 文章目录 前言 一&#xff0c;Linux操作系统是啥&#xff1f; 二&#xff0c;Linux操作系统具有以下特点 三&#xff0c;指令的学习 1&#xff0c;指令是什么&#xff1f; 2&#xff0c;ls 指令及其常用的衍生指令&#xff1a; 周边知识&#xff1a; ls…

Woocommerce Private Store私人商店秘密商城插件,适合批发商店,会员制俱乐部

点击访问原文Woocommerce Private Store私人商店秘密商城插件&#xff0c;适合批发商店&#xff0c;会员制俱乐部 - 易服客工作室 WooCommerce Private Store插件是使 WooCommerce 私有的简单方法。密码保护您的整个 WooCommerce 商店并使其隐藏。 非常适合批发商店、会员制俱…

wordpress路径怎么优化?wordpress伪静态怎么做?

Wordpress这个程序是动态的&#xff0c;在后台中设置链接的格式为朴素&#xff0c;就可以了&#xff0c;这样简单又方便&#xff0c;因为百度对于路径的都是一样对待的&#xff0c;静态路径和动态路径&#xff0c;都是一样的对待。 有的时候&#xff0c;有的人会认为动态路径不…

【Java Web学习笔记】 2 - CSS入门

项目代码 零、 CSS引出 CSS 教程 官方教学文档 1.在没有CSS之前&#xff0c;我们想要修改HTML元素的样式需要为每个HTML元素单独定义样式属性&#xff0c;费心费力。所以CSS就出现了。 2.使用CSS将HTML页面的内容与样式分离提高web开发的工作效率&#xff08;针对前端开发&a…

基于springboot,vue高校图书馆管理系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatisredis 本项…

【送书活动三期】解决docker服务假死问题

工作中使用docker-compose部署容器&#xff0c;有时候会出现使用docker-compose stop或docker-compose down命令想停掉容器&#xff0c;但是依然无法停止或者一直卡顿在停止中的阶段&#xff0c;这种问题很让人头疼啊&#xff01; 目录 问题描述问题排查问题解决终极杀招-最粗暴…

会声会影2023序列号免费永久序列号和激活码下载使用(附破解补丁)

前言 会声会影2023破解版免费下载是经过修改的视频剪辑软件&#xff0c;它能够免费为您提供很多功能。会声会影2023免费下载提供超过 1500 种独特的效果&#xff0c;可让您提升自我。会声会影破解版是用于是制作独一无二的视频的最强大、功能最全的软件。 它是一个简单而快速的…

Socket 编程

1&#xff1a;针对 TCP 应该如何 Socket 编程&#xff1f; 服务端和客户端初始化 socket&#xff0c;得到文件描述符&#xff1b; 服务端调用 bind&#xff0c;将 socket 绑定在指定的 IP 地址和端口; 服务端调用 listen&#xff0c;进行监听&#xff1b; 服务端调用 accept&am…

【大模型】更强的 ChatGLM3-6B 来了,开源可商用

【大模型】更强的 ChatGLM3-6B 来了&#xff0c;开源可商用 简介ChatGLM3-6B 环境配置环境搭建安装依赖 代码及模型权重拉取拉取 ChatGLM3-6B拉取 ChatGLM3-6B 模型权重及代码 终端测试网页测试安装 gradio加载模型并启动服务 参考 简介 ChatGLM3-6B ChatGLM3-6B 是 ChatGLM …

C语言-指针_02

指针-02 1. 指针的指针 概念&#xff1a;指针变量中存储的是指针的地址&#xff0c;又名 二维指针 语法&#xff1a; 数据类型 **p;示例&#xff1a; #include <stdio.h> int main(int argc, char const *argv[]) {int num 10;int *p1 &num;int **p2 &p1…

最新发布 Spring Boot 3.2.0 新特性和改进

一、Spring Boot 简介 Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。这个框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。 以下是Spring Boot的一些主要特点&#xf…

159.库存管理(TOPk问题!)

思路&#xff1a;也是tok的问题&#xff0c;与上篇博客思路一样&#xff0c;只不过是求前k个小的元素&#xff01; 基于快排分块思路的代码如下&#xff1a; class Solution { public:int getkey(vector<int>&nums,int left,int right){int rrand();return nums[r%…

Ext4文件系统解析(一)

1、前言 熟悉Linux操作系统的都应该或多或少的了解或者使用过Ext4文件系统。 接下来&#xff0c;会简单介绍Ext4文件系统的一些特性和工作原理。 2、常用概念 在介绍Ext文件系统之前&#xff0c;先简单描述一些相关概念。 块(Block)&#xff1a;Ext文件系统存储分配的基本单…

第一百八十七回 DropdownButton组件

文章目录 1. 概念介绍2. 使用方法2.1 DropdownButton2.2 DropdownMenuItem 3. 示例代码4. 内容总结5. 经验分享 我们在 上一章回中介绍了"DropdownMenu组件"相关的内容&#xff0c;本章回中将介绍 DropdownButton组件.闲话休提&#xff0c;让我们一起Talk Flutter吧…

STM32DAC输出可调电压、三角波、正弦波

STM32DAC输出可调电压、三角波、正弦波 DAC简介输出可调电压输出正弦波输出三角波 本期内容我们将学习stm32DAC的原理和使用方法 DAC简介 DAC&#xff0c;全称&#xff1a;Digital-to-Analog Converter&#xff0c;指数字/模拟转换器。可以将数字量转换为模拟量进行输出&#…

FL Studio21.2汉化永久中文语言包

FL Studio21.2这款软件在国内被广泛使用&#xff0c;因此又被称为"水果"。它提供音符编辑器&#xff0c;可以针对作曲者的要求编辑出不同音律的节奏&#xff0c;例如鼓、镲、锣、钢琴、笛、大提琴、筝、扬琴等等任何乐器的节奏律动。此外&#xff0c;它还提供了方便快…

2023年12月03日新闻简报(国内国际)

新闻简报 每天三分钟&#xff0c;朝闻天下事。今天是&#xff1a;2023年12月03日&#xff0c;星期日&#xff0c;农历十月廿一&#xff0c;祝工作愉快&#xff0c;身体健康&#xff0c;生活喜乐&#xff1a; &#x1f449;&#x1f449;国内新闻 1、1日凌晨&#xff0c;四川…