利用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
英文地址,請注明出處:http://en.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服務…