利用Minicsv库解析csv文件的c程序及读入测试

上午的c程序写入xlsx较快但不正确,python程序虽正确但过慢。所以找了一个全部源程序加起来不到4K字节的C语言csv解析库Minicsv,来改写,改写结果如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "xlsxwriter.h"
#include "minicsv.h"#define MAX_COLS 255       // 最大列数限制
#define MAX_LINE_LENGTH 65536  // 单行最大长度int main(int argc, char *argv[]) {if (argc != 3) {fprintf(stderr, "Usage: %s <input.csv> <output.xlsx>\n", argv[0]);return EXIT_FAILURE;}// 打开CSV文件FILE *csv_file = fopen(argv[1], "r");if (!csv_file) {fprintf(stderr, "Error opening file: %s\n", strerror(errno));return EXIT_FAILURE;}// 创建工作簿和工作表lxw_workbook *workbook = workbook_new(argv[2]);lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);char line_buf[MAX_LINE_LENGTH];char *cols[MAX_COLS];size_t cols_count;int row = 0;int progress_counter = 0;printf("Processing CSV file...\n");// 逐行读取和处理CSV文件while (fgets(line_buf, sizeof(line_buf), csv_file)) {// 移除换行符line_buf[strcspn(line_buf, "\r\n")] = '\0';// 解析当前行if (minicsv_parse_line(line_buf, cols, &cols_count, MAX_COLS) == NULL) {fprintf(stderr, "Error at line %d: Too many columns or parsing error\n", row+1);continue;}// 跳过空行if (cols_count == 0) {continue;}// 写入Excel行for (size_t i = 0; i < cols_count; i++) {// 尝试转换为数字char *endptr;double num = strtod(cols[i], &endptr);if (*endptr == '\0') {worksheet_write_number(worksheet, row, i, num, NULL);} else {worksheet_write_string(worksheet, row, i, cols[i], NULL);}}row++;progress_counter++;// 每处理100000行显示进度if (progress_counter >= 100000) {printf("Processed %d rows...\n", row);progress_counter = 0;}}// 关闭文件和保存工作簿fclose(csv_file);lxw_error error = workbook_close(workbook);if (error) {fprintf(stderr, "Error creating Excel file: %s\n", lxw_strerror(error));return EXIT_FAILURE;}printf("Successfully converted '%s' to '%s' (%d rows)\n", argv[1],argv[2], row);return EXIT_SUCCESS;
}

编译和执行情况如下

gcc minicsv.c c2x3.c -o c2x3 -I . -I libxlsxwriter/include -lxlsxwriter -L libxlsxwriter/lib -O3
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:libxlsxwriter/lib
time ./c2x3  NYC_311_SR_2010-2020-sample-1M.csv output.xlsx
Processing CSV file...
Processed 100000 rows...
Processed 200000 rows...
Processed 300000 rows...
Processed 400000 rows...
Processed 500000 rows...
Processed 600000 rows...
Processed 700000 rows...
Processed 800000 rows...
Processed 900000 rows...
Processed 1000000 rows...
Successfully converted 'NYC_311_SR_2010-2020-sample-1M.csv' to 'output.xlsx' (1000001 rows)real    1m14.115s
user    0m44.640s
sys     0m7.400s
ls -l output.xlsx
-rwxrwxrwx 1 root root 219313665 Aug 15 12:54 output.xlsx

三种插件读入情况如下,可见它们都能完整读取刚才生成的文件,行数正确,内容符合预期,我们的csv解析器实现正确,生成的文件大小比python生成的略小,但不影响结果。

D load rusty_sheet;
D .timer on
D create table t as from read_sheet('output.xlsx');
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 48.929 user 50.380880 sys 3.794923
D summarize t;
┌──────────────────────┬─────────────┬──────────────────────┬──────────────────────┬───────────────┬───┬────────────────────┬────────────────────┬────────────────────┬─────────┬─────────────────┐
│     column_name      │ column_type │         min          │         max          │ approx_unique │ … │        q25         │        q50         │        q75         │  count  │ null_percentage │
│       varcharvarcharvarcharvarchar        │     int64     │   │      varcharvarcharvarchar       │  int64  │  decimal(9,2)   │
├──────────────────────┼─────────────┼──────────────────────┼──────────────────────┼───────────────┼───┼────────────────────┼────────────────────┼────────────────────┼─────────┼─────────────────┤
│ Unique KeyBIGINT11465364484781731022792 │ … │ 25277477328500714019850910000000.00 │
│ Created DateVARCHAR01/01/2010 01:05:5…  │ 12/31/2019 12:58:5…  │        920156 │ … │ NULLNULLNULL10000000.00 │
│ Closed DateVARCHAR012/31/2019 12:59:0…  │        667996 │ … │ NULLNULLNULL10000000.00 │
│ Agency               │ VARCHAR3-1-1                │ TLC                  │            29 │ … │ NULLNULLNULL10000000.00 │
│ Agency Name          │ VARCHAR3-1-1                │ Valuation Policy     │           686 │ … │ NULLNULLNULL10000000.00 │
│ Complaint TypeVARCHAR../../WEB-INF/web.…  │ ZTESTINT             │           281 │ … │ NULLNULLNULL10000000.00 │
│ Descriptor           │ VARCHAR0                    │ unknown odor/taste…  │          1553 │ … │ NULLNULLNULL10000000.00 │
│ Location TypeVARCHAR0                    │ Wooded Area          │           154 │ … │ NULLNULLNULL10000000.00 │
│ Incident Zip         │ BIGINT0900836548 │ … │ 10257111301123310000000.01 │
│ Incident Address     │ VARCHAR* *                  │ west 155 street an…  │        333521 │ … │ NULLNULLNULL10000000.00 │
│ Street Name          │ VARCHAR*                    │ wyckoff avenue       │         13987 │ … │ NULLNULLNULL10000000.00 │
│ Cross Street 1VARCHAR0                    │ mermaid              │         14204 │ … │ NULLNULLNULL10000000.00 │
│ Cross Street 2VARCHAR0                    │ surf                 │         16003 │ … │ NULLNULLNULL10000000.00 │
│ Intersection Stree…  │ VARCHAR0                    │ flatlands AVE        │         11592 │ … │ NULLNULLNULL10000000.00 │
│ Intersection Stree…  │ VARCHAR0                    │ glenwood RD          │         12172 │ … │ NULLNULLNULL10000000.00 │
│ Address TypeVARCHAR0                    │ PLACENAME            │             6 │ … │ NULLNULLNULL10000000.00 │
│ City                 │ VARCHAR*                    │ YORKTOWN HEIGHTS     │           320 │ … │ NULLNULLNULL10000000.00 │
│ Landmark             │ VARCHAR0                    │ ZULETTE AVENUE       │          6235 │ … │ NULLNULLNULL10000000.00 │
│ Facility TypeVARCHAR0                    │ School District      │             6 │ … │ NULLNULLNULL10000000.00 │
│ StatusVARCHAR     │ Assigned             │ Unspecified          │            10 │ … │ NULLNULLNULL10000000.00 │
│ Due DateVARCHAR012/31/2018 12:59:2…  │        363080 │ … │ NULLNULLNULL10000000.00 │
│ Resolution Descrip…  │ VARCHAR0                    │ Your request was s…  │          1368 │ … │ NULLNULLNULL10000000.00 │
│ Resolution Action …  │ VARCHAR012/31/2019 12:58:0…  │        787085 │ … │ NULLNULLNULL10000000.00 │
│ Community Board      │ VARCHAR0 Unspecified        │ Unspecified STATEN…  │            74 │ … │ NULLNULLNULL10000000.00 │
│ BBL                  │ BIGINT05270000501380610 │ … │ 8532218202037638696306535590810000000.00 │
│ Borough              │ VARCHAR     │ BRONX                │ Unspecified          │             6 │ … │ NULLNULLNULL10000000.00 │
│ X Coordinate (Stat…  │ BIGINT01067220108282 │ … │ 9889451002094101631710000000.00 │
│ Y Coordinate (Stat…  │ BIGINT0271876129370 │ … │ 17419419821123011310000000.00 │
│ Open Data Channel …  │ VARCHAR     │ MOBILE               │ UNKNOWN              │             5 │ … │ NULLNULLNULL10000000.00 │
│ Park Facility Name   │ VARCHAR"Uncle" Vito F. Ma…  │ Zimmerman Playground │          2016 │ … │ NULLNULLNULL10000000.00 │
│ Park Borough         │ VARCHAR     │ BRONX                │ Unspecified          │             6 │ … │ NULLNULLNULL10000000.00 │
│ Vehicle TypeBIGINT001 │ … │ 00010000000.03 │
│ Taxi Company Borough │ BIGINT001 │ … │ 00010000000.08 │
│ Taxi Pick Up Locat…  │ BIGINT001 │ … │ 00010000000.79 │
│ Bridge Highway Name  │ BIGINT001 │ … │ 00010000000.23 │
│ Bridge Highway Dir…  │ BIGINT001 │ … │ 00010000000.23 │
│ Road Ramp            │ BIGINT001 │ … │ 00010000000.23 │
│ Bridge Highway Seg…  │ BIGINT001 │ … │ 00010000000.24 │
│ Latitude             │ DOUBLE0.040.9128688361176 │ … │ 2.43619520404981440.6840017437987140.76377954861527510000000.00 │
│ Longitude            │ DOUBLE-77.51958440.0425806 │ … │ -73.95431355456392-73.89694232795956-13.5594012789610310000000.00 │
│ Location             │ VARCHAR(40.1123853, -77.5…  │ 0310936 │ … │ NULLNULLNULL10000000.00 │
├──────────────────────┴─────────────┴──────────────────────┴──────────────────────┴───────────────┴───┴────────────────────┴────────────────────┴────────────────────┴─────────┴─────────────────┤
│ 41 rows                                                                                                                                                                   12 columns (10 shown) │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Run Time (s): real 0.511 user 2.972291 sys 0.092939
D load excel;
Run Time (s): real 0.037 user 0.051329 sys 0.001551
D create table t2 as from read_xlsx('output.xlsx');
Run Time (s): real 2.088 user 1.624796 sys 0.274348
Invalid Input Error:
read_xlsx: Failed to parse cell 'N4': Could not convert string 'WILLOUGHBY AVENUE' to DOUBLE
D create table t2 as from read_xlsx('output.xlsx',all_varchar=1,header=1);
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 16.844 user 14.512552 sys 0.502509
D summarize t2;
┌──────────────────────┬─────────────┬──────────────────────┬───────────────────────────────────────────────────────────────┬───────────────┬───────┬───────┬───────┬───────┬───────┬─────────┬─────────────────┐
│     column_name      │ column_type │         min          │                              max                              │ approx_unique │  avg  │  std  │  q25  │  q50  │  q75  │  count  │ null_percentage │
│       varcharvarcharvarcharvarchar                            │     int64     │ int32 │ int32 │ int32 │ int32 │ int32 │  int64  │  decimal(9,2)   │
├──────────────────────┼─────────────┼──────────────────────┼───────────────────────────────────────────────────────────────┼───────────────┼───────┼───────┼───────┼───────┼───────┼─────────┼─────────────────┤
│ Unique KeyVARCHAR1146536448478173857267NULLNULLNULLNULLNULL10000000.00 │
│ Created DateVARCHAR01/01/2010 01:05:5…  │ 12/31/2019 12:58:50 PM                                        │        920156NULLNULLNULLNULLNULL10000000.00 │
│ Closed DateVARCHAR012/31/2019 12:59:00 PM                                        │        667996NULLNULLNULLNULLNULL10000000.00 │
│ Agency               │ VARCHAR3-1-1                │ TLC                                                           │            29NULLNULLNULLNULLNULL10000000.00 │
│ Agency Name          │ VARCHAR3-1-1                │ Valuation Policy                                              │           686NULLNULLNULLNULLNULL10000000.00 │
│ Complaint TypeVARCHAR../../WEB-INF/web.…  │ ZTESTINT                                                      │           281NULLNULLNULLNULLNULL10000000.00 │
│ Descriptor           │ VARCHAR0                    │ unknown odor/taste in drinking water (QA6)1553NULLNULLNULLNULLNULL10000000.00 │
│ Location TypeVARCHAR0                    │ Wooded Area                                                   │           154NULLNULLNULLNULLNULL10000000.00 │
│ Incident Zip         │ VARCHAR*                    │ XXXXX                                                         │           560NULLNULLNULLNULLNULL10000000.00 │
│ Incident Address     │ VARCHAR* *                  │ west 155 street and edgecombe avenue                          │        333521NULLNULLNULLNULLNULL10000000.00 │
│ Street Name          │ VARCHAR*                    │ wyckoff avenue                                                │         13987NULLNULLNULLNULLNULL10000000.00 │
│ Cross Street 1VARCHAR0                    │ mermaid                                                       │         14204NULLNULLNULLNULLNULL10000000.00 │
│ Cross Street 2VARCHAR0                    │ surf                                                          │         16003NULLNULLNULLNULLNULL10000000.00 │
│ Intersection Stree…  │ VARCHAR0                    │ flatlands AVE                                                 │         11592NULLNULLNULLNULLNULL10000000.00 │
│ Intersection Stree…  │ VARCHAR0                    │ glenwood RD                                                   │         12172NULLNULLNULLNULLNULL10000000.00 │
│ Address TypeVARCHAR0                    │ PLACENAME                                                     │             6NULLNULLNULLNULLNULL10000000.00 │
│ City                 │ VARCHAR*                    │ YORKTOWN HEIGHTS                                              │           320NULLNULLNULLNULLNULL10000000.00 │
│ Landmark             │ VARCHAR0                    │ ZULETTE AVENUE                                                │          6235NULLNULLNULLNULLNULL10000000.00 │
│ Facility TypeVARCHAR0                    │ School District                                               │             6NULLNULLNULLNULLNULL10000000.00 │
│ StatusVARCHAR     │ Assigned             │ Unspecified                                                   │            10NULLNULLNULLNULLNULL10000000.00 │
│ Due DateVARCHAR012/31/2018 12:59:20 PM                                        │        363080NULLNULLNULLNULLNULL10000000.00 │
│ Resolution Descrip…  │ VARCHAR0                    │ Your request was submitted to the Department of Homeless Se…  │          1368NULLNULLNULLNULLNULL10000000.00 │
│ Resolution Action …  │ VARCHAR012/31/2019 12:58:00 PM                                        │        787085NULLNULLNULLNULLNULL10000000.00 │
│ Community Board      │ VARCHAR0 Unspecified        │ Unspecified STATEN ISLAND                                     │            74NULLNULLNULLNULLNULL10000000.00 │
│ BBL                  │ VARCHAR05270000501245925NULLNULLNULLNULLNULL10000000.00 │
│ Borough              │ VARCHAR     │ BRONX                │ Unspecified                                                   │             6NULLNULLNULLNULLNULL10000000.00 │
│ X Coordinate (Stat…  │ VARCHAR0999999104831NULLNULLNULLNULLNULL10000000.00 │
│ Y Coordinate (Stat…  │ VARCHAR0271876120308NULLNULLNULLNULLNULL10000000.00 │
│ Open Data Channel …  │ VARCHAR     │ MOBILE               │ UNKNOWN                                                       │             5NULLNULLNULLNULLNULL10000000.00 │
│ Park Facility Name   │ VARCHAR"Uncle" Vito F. Ma…  │ Zimmerman Playground                                          │          2016NULLNULLNULLNULLNULL10000000.00 │
│ Park Borough         │ VARCHAR     │ BRONX                │ Unspecified                                                   │             6NULLNULLNULLNULLNULL10000000.00 │
│ Vehicle TypeVARCHAR0                    │ Green Taxi                                                    │             5NULLNULLNULLNULLNULL10000000.00 │
│ Taxi Company Borough │ VARCHAR0                    │ Staten Island                                                 │            11NULLNULLNULLNULLNULL10000000.00 │
│ Taxi Pick Up Locat…  │ VARCHAR0                    │ YORK AVENUE AND EAST 70 STREET                                │          1971NULLNULLNULLNULLNULL10000000.00 │
│ Bridge Highway Name  │ VARCHAR0                    │ Willis Ave Br - 125th St/1st Ave                              │            65NULLNULLNULLNULLNULL10000000.00 │
│ Bridge Highway Dir…  │ VARCHAR0                    │ Westbound/To Goethals Br                                      │            50NULLNULLNULLNULLNULL10000000.00 │
│ Road Ramp            │ VARCHAR0                    │ Roadway                                                       │             4NULLNULLNULLNULLNULL10000000.00 │
│ Bridge Highway Seg…  │ VARCHAR0                    │ Wythe Ave/Kent Ave (Exit 31)795NULLNULLNULLNULLNULL10000000.00 │
│ Latitude             │ VARCHAR040.9128688325711NULLNULLNULLNULLNULL10000000.00 │
│ Longitude            │ VARCHAR-73.70059680309785NULLNULLNULLNULLNULL10000000.00 │
│ Location             │ VARCHAR(40.1123853, -77.5…  │ 0310936NULLNULLNULLNULLNULL10000000.00 │
├──────────────────────┴─────────────┴──────────────────────┴───────────────────────────────────────────────────────────────┴───────────────┴───────┴───────┴───────┴───────┴───────┴─────────┴─────────────────┤
│ 41 rows                                                                                                                                                                                            12 columns │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Run Time (s): real 0.198 user 1.525080 sys 0.021050
C:\d>duckdb122
v1.2.2 7c039464e4
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.D install  sheetreader from community;
100% ▕████████████████████████████████████████████████████████████▏
D load sheetreader;
D .timer on
D create table t as from sheetreader('output.xlsx');
100% ▕████████████████████████████████████████████████████████████▏
Run Time (s): real 8.745 user 24.765625 sys 0.609375
D summarize t;
┌──────────────────────┬─────────────┬──────────────────────┬──────────────────────┬───────────────┬───┬────────────────────┬────────────────────┬─────────────────────┬─────────┬─────────────────┐
│     column_name      │ column_type │         min          │         max          │ approx_unique │ … │        q25         │        q50         │         q75         │  count  │ null_percentage │
│       varcharvarcharvarcharvarchar        │     int64     │   │      varcharvarcharvarchar       │  int64  │  decimal(9,2)   │
├──────────────────────┼─────────────┼──────────────────────┼──────────────────────┼───────────────┼───┼────────────────────┼────────────────────┼─────────────────────┼─────────┼─────────────────┤
│ Unique KeyDOUBLE11465364.048478173.0972278 │ … │ 25259190.0287762732850243.75137341440210190.3675816310000000.00 │
│ Created DateVARCHAR01/01/2010 01:05:5…  │ 12/31/2019 12:58:5…  │        815306 │ … │ NULLNULLNULL10000000.00 │
│ Closed DateVARCHAR01/01/1900 12:00:0…  │ 12/31/2019 12:59:0…  │        736431 │ … │ NULLNULLNULL10000002.86 │
│ Agency               │ VARCHAR3-1-1                │ TLC                  │            27 │ … │ NULLNULLNULL10000000.00 │
│ Agency Name          │ VARCHAR3-1-1                │ Valuation Policy     │           476 │ … │ NULLNULLNULL10000000.00 │
│ Complaint TypeVARCHAR../../WEB-INF/web.…  │ ZTESTINT             │           247 │ … │ NULLNULLNULL10000000.00 │
│ Descriptor           │ VARCHAR1 Missed Collection  │ unknown odor/taste…  │          1296 │ … │ NULLNULLNULL10000000.30 │
│ Location TypeVARCHAR1-, 2- and 3- Fami…  │ Wooded Area          │           144 │ … │ NULLNULLNULL100000023.91 │
│ Incident Zip         │ DOUBLE0.0900836.0438 │ … │ 10258.56767006923711136.85945101536711232.65988460328710000000.01 │
│ Incident Address     │ VARCHAR* *                  │ west 155 street an…  │        402568 │ … │ NULLNULLNULL100000017.47 │
│ Street Name          │ VARCHAR*                    │ wyckoff avenue       │         10920 │ … │ NULLNULLNULL100000017.48 │
│ Cross Street 1VARCHAR1 AVE                │ mermaid              │         13602 │ … │ NULLNULLNULL100000032.04 │
│ Cross Street 2VARCHAR1 AVE                │ surf                 │         14335 │ … │ NULLNULLNULL100000032.36 │
│ Intersection Stree…  │ DOUBLE0.05730.013 │ … │ 0.00.00.0100000023.26 │
│ Intersection Stree…  │ DOUBLE0.02641.02 │ … │ 0.00.00.0100000023.23 │
│ Address TypeVARCHAR     │ ADDRESS              │ PLACENAME            │             5 │ … │ NULLNULLNULL100000012.58 │
│ City                 │ VARCHAR*                    │ YORKTOWN HEIGHTS     │           401 │ … │ NULLNULLNULL10000006.20 │
│ Landmark             │ DOUBLE0.00.01 │ … │ 0.00.00.010000008.72 │
│ Facility TypeVARCHAR     │ DSNY Garage          │ School District      │             5 │ … │ NULLNULLNULL100000014.55 │
│ StatusVARCHAR     │ Assigned             │ Unspecified          │            10 │ … │ NULLNULLNULL10000000.00 │
│ Due DateVARCHAR01/01/2010 01:26:0…  │ 12/31/2018 12:59:2…  │        441334 │ … │ NULLNULLNULL100000064.78 │
│ Resolution Descrip…  │ VARCHAR     │ A DOB violation wa…  │ Your request was s…  │          1182 │ … │ NULLNULLNULL10000002.05 │
│ Resolution Action …  │ VARCHAR01/01/2010 01:50:4…  │ 12/31/2019 12:58:0…  │        610175 │ … │ NULLNULLNULL10000001.51 │
│ Community Board      │ VARCHAR0 Unspecified        │ Unspecified STATEN…  │            91 │ … │ NULLNULLNULL10000000.00 │
│ BBL                  │ DOUBLE0.05270000501.0255245 │ … │ 895490913.78056362037490882.84289723065445091.435732410000000.00 │
│ Borough              │ VARCHAR     │ BRONX                │ Unspecified          │             5 │ … │ NULLNULLNULL10000000.00 │
│ X Coordinate (Stat…  │ DOUBLE0.01067220.090189 │ … │ 988948.29581324331002107.9786482681016333.015130990910000000.00 │
│ Y Coordinate (Stat…  │ DOUBLE0.0271876.0115328 │ … │ 174165.58611895636198257.62046094937230180.9825644191310000000.00 │
│ Open Data Channel …  │ VARCHAR     │ MOBILE               │ UNKNOWN              │             5 │ … │ NULLNULLNULL10000000.00 │
│ Park Facility Name   │ VARCHAR"Uncle" Vito F. Ma…  │ Zimmerman Playground │          1855 │ … │ NULLNULLNULL10000000.00 │
│ Park Borough         │ VARCHAR     │ BRONX                │ Unspecified          │             5 │ … │ NULLNULLNULL10000000.00 │
│ Vehicle TypeDOUBLE0.00.01 │ … │ 0.00.00.010000000.03 │
│ Taxi Company Borough │ DOUBLE0.00.01 │ … │ 0.00.00.010000000.08 │
│ Taxi Pick Up Locat…  │ DOUBLE0.00.01 │ … │ 0.00.00.010000000.79 │
│ Bridge Highway Name  │ DOUBLE0.00.01 │ … │ 0.00.00.010000000.23 │
│ Bridge Highway Dir…  │ DOUBLE0.00.01 │ … │ 0.00.00.010000000.23 │
│ Road Ramp            │ DOUBLE0.00.01 │ … │ 0.00.00.010000000.23 │
│ Bridge Highway Seg…  │ DOUBLE0.00.01 │ … │ 0.00.00.010000000.24 │
│ Latitude             │ DOUBLE0.040.9128688361176 │ … │ 0.866540125246388140.6839239232508140.7636148618282410000000.00 │
│ Longitude            │ DOUBLE-77.51958440.0425806 │ … │ -73.95429925066404-73.89697557516627-16.60918654311044310000000.00 │
│ Location             │ VARCHAR(40.1123853, -77.5…  │ (40.9128688, -73.9…  │        381782 │ … │ NULLNULLNULL100000025.47 │
├──────────────────────┴─────────────┴──────────────────────┴──────────────────────┴───────────────┴───┴────────────────────┴────────────────────┴─────────────────────┴─────────┴─────────────────┤
│ 41 rows                                                                                                                                                                    12 columns (10 shown) │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Run Time (s): real 0.518 user 2.484375 sys 0.187500

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

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

相关文章

企微用户部门同步HRS系统

企微用户导入HR系统流程说明 概述 本文档详细说明了WechatUserImportServiceImpl.importWechatUsersToHrs()方法的业务流程和实现逻辑。该方法负责将企业微信用户数据同步导入到HR管理系统中&#xff0c;包括员工信息、工作信息和任职记录的创建与更新。 主要功能 数据同步…

告别传统SEO!拥抱下一代流量密码:生成式引擎优化(GEO)实战指南

前言&#xff1a;为什么你的“最佳实践”SEO正在失效&#xff1f;你是否发现&#xff0c;即使严格遵循了谷歌自2019年以来的所有“最佳实践”&#xff0c;你的技术博客或产品文档的流量依旧增长乏力&#xff0c;甚至不升反降&#xff1f;你不是一个人。问题在于&#xff0c;游戏…

week1-[一维数组]传送

week1-[一维数组]传送 题目描述 有 nnn 个传送门&#xff0c;从第 iii 个传送门进去后会被传送到第 aia_iai​ 个传送门&#xff0c;进而被传送到第 aaia_{a_i}aai​​ 个传送门&#xff0c;如此一直下去……小 A 想知道从第 kkk 个传送门进去后&#xff0c;能不能回到第 kkk 个…

【18】目心智能——目心智能 嵌入式一面 ,校招,面试问答记录

目心智能——目心智能 嵌入式一面 &#xff0c;校招&#xff0c;面试问答记录 1 简单自我介绍2 你做了这么多算法&#xff0c;为什么不找算法的&#xff1f;3 我们主要还是软件开发&#xff0c;不做结构设计4 模电知识6 CSDN应该附链接在简历上&#xff0c;稍后发给我&#xff…

C++第二十课:快递运费计算器 / 黑白配+石头剪刀布小游戏

快递运费计算器帮一家快递站点开发一个快递运费计算器&#xff0c;快递站点人员只需要输入包裹重量和地点编号即可计算出对应的运费。假设快递费计算规则如下&#xff1a;首重&#xff1a;3公斤 3公斤以内&#xff1a;1.东三省/宁夏/青海/海南&#xff1a;12元&#xff0c;2.新…

网络安全蓝队常用工具全景与实战指南

摘要 在现代信息系统的安全防护中&#xff0c;蓝队承担着防御、检测、响应和持续改进的核心职责。要实现高效、可持续的防御能力&#xff0c;蓝队需要一整套成熟、可靠的工具集来进行威胁情报收集、日志分析、入侵检测、漏洞评估、端点防护、网络流量监控、事件响应与取证等工作…

基于 Flink 的淘宝实时数据管道设计:商品详情流式处理与异构存储

引言在电子商务领域&#xff0c;实时数据处理能力已成为企业核心竞争力的重要组成部分。淘宝作为中国领先的电商平台&#xff0c;每天产生海量的商品数据&#xff0c;这些数据需要被实时处理、分析并分发到各种存储系统中&#xff0c;以支持搜索、推荐、库存管理等关键业务。本…

面试题:【多线程问题,三个线程A,B,C;C线程依赖B线程的结果执行,怎么控制】

在 Java 中&#xff0c;若需要控制线程间的依赖关系&#xff08;如 C 线程依赖 B 线程的结果&#xff09;&#xff0c;可以通过以下几种方式实现&#xff1a; 方案 1&#xff1a;使用 CountDownLatch CountDownLatch 是一个同步工具类&#xff0c;允许一个或多个线程等待其他线…

React useMemo 深度指南:原理、误区、实战与 2025 最佳实践

把“为什么用、怎么用、用错了怎么办”一次讲透&#xff0c;附 React 19 自动优化前瞻。一、useMemo 是什么&#xff1f; 一句话&#xff1a; useMemo 记住&#xff08;缓存&#xff09;昂贵计算结果&#xff0c;只在依赖变化时重新计算。 const memoValue useMemo(() > {…

[ HTML 前端 ] 语法介绍和HBuilderX安装

目录 一. HTML 1.概述 2. 安装前端开发工具 (1)HBuilderX下载 (2)创建html项目和使用 3. HTML基础 1.标签 (1).标签定义: (2).标签结构: (3).标签属性: 2.常用标签: 3.特殊符号: 4.表格(table) (1)基本标签: (2)基本结构: (3)表格属性: 5.表单(form) (1). 表单概述…

Spring Cloud系列—Alibaba Sentinel熔断降级

上篇文章&#xff1a; Spring Cloud系列— Alibaba Sentinel限流https://blog.csdn.net/sniper_fandc/article/details/149944260?fromshareblogdetail&sharetypeblogdetail&sharerId149944260&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link…

Spring Boot 使用 @NotBlank + @Validated 优雅校验参数

在日常开发中&#xff0c;我们常用 if (isBlank(...)) 来判断参数是否为空&#xff0c;但这种方式不仅繁琐&#xff0c;而且容易遗漏。 Spring 生态中推荐使用 JSR-303 校验注解&#xff08;NotBlank、NotNull 等&#xff09;配合 Validated 实现自动校验&#xff0c;大幅减少手…

网络安全(Java语言)简单脚本汇总 (一)

文章目录敏感信息探测脚本源代码思路URL批量存活探测器源代码思路端口扫描器源代码思路 敏感信息探测脚本 源代码/*** description 该脚本通过分析HTTP响应头&#xff0c;来检测可能暴露服务器信息的安全隐患*/import java.io.IOException; import java.net.HttpURLConnection;…

buuctf_NSBlogin_http_upload(极客2019+ACTF2020新生赛)

今天做三1个web 题目&#xff1a;NSB_login用户名有admin&#xff0c;看源码&#xff1a;I like rockyou&#xff01;今天学习到&#xff0c;kali里面有密码爆破的文件叫rockyou.txt&#xff08;/usr/share/wordlists/&#xff09;&#xff08;没kali也可以去https://gitcode.c…

IDEA如何引用brew安装的openjdk

因为 brew 安装的 openjdk@21 目录结构和 IDEA 期望的 JDK 目录不一样。所以默认brew安装的jdk,在IDEA中是无法识别到的。 一、创建软连接 sudo mkdir -p /Library/Java/JavaVirtualMachines sudo ln -sfn /usr/local/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/Java…

【Unity3D】Spine黑线(预乘问题)、贴图边缘裁剪问题

一、黑线问题 Spine正确的导出和Unity导入设置&#xff08;解决黑边/彩条带问题&#xff09;_spine导出的图片有黑边-CSDN博客 采用&#xff08;已解决问题&#xff09; Texture 打包器启用 Premultiply alpha ,禁用Bleed Unity Texture 设置中禁用 sRGB (Color Texture) 和…

嵌入式系统学习Day18(文件编程-系统调用文件IO)

- open#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 功能:打开文件 参数:pathname --- 文件名 flags 必选:O_RDONLYO_WRONLY…

Vue浅学

概述在最近的学习任务中了解了 Vue&#xff0c;并对其产生了浓厚的兴趣&#xff0c;现在分享一下我的学习所得关键字其一statestate 是 Vuex 存储中的“状态对象”&#xff0c;用于存储整个应用的共享数据&#xff08;如用户信息、令牌、权限等&#xff09;&#xff0c;比如&am…

机器翻译:Hugging Face库详解

文章目录一、Hugging Face概述1.1 Hugging Face介绍1.2 核心理念&#xff1a;模型即服务&#xff0c;但以开源形式二、核心架构2.1 Transformers库&#xff1a;模型交互的统一接口2.2 Datasets库&#xff1a;高效的数据处理引擎2.3 Tokenizers库&#xff1a;文本与模型的“翻译…

服务器安装gielab社区版

第一步&#xff1a;安装Gitlab 1,使用的是CentOs镜像(服务器最低配置为4核8g内存才行要不然带不动) 登录目标实例。 2,执行如下命令&#xff0c;安装所需依赖。 1 sudo yum install -y curl policycoreutils-python openssh-server 3,执行如下命令&#xff0c;启动SSH服务…