對格式化字串的一些思考
在最近工作中,在拼接sql語句時,用到格式化字串,經過和同事討論後,有了新的思考。這個點在之前都是參照已有來使用,沒有深入去追究,本次全面瞭解下。
格式化字串
在實際工程中,格式化字串一般用在列印日誌、拼接字串等,目前在工程中常見的是這樣用的:
char szbuf[128] = {0};
snprintf(szbuf, sizeof(szbuf) - 1, “log:%d %s”, 1,“XXXX”);
按照上述格式化完後,對緩衝區szBuf進行各種操作。這裡面有幾點疑問:
這裡沒有判斷snprintf的返回值,需不需要判斷?
snprintf的第二個引數為什麼要減1?
沒有考慮格式化完整性
下面依次分析。
snprintf的返回值代表什麼含義
在linux環境上,snprintf的函式原型如下。
int snprintf(char* str, size_t size, const char* format, …);
查閱snprintf的man手冊,對返回值有如下說明:
snprintf返回值說明.jpg
該函式的返回值表示待格式化字串的長度,不包括結束分隔符。這是什麼意思呢?舉個例子:
格式化 abcd 字串,返回值是4,表示待格式化的字元個數為4。
格式化 01234567890 字串,返回值為10。
這個返回值和傳入的緩衝區長度size沒有任何關係的,它只與待格式化字串的長度有關。
另一個需要注意的點是,這個函式在格式化時,不會往緩衝區str中寫入多於size大小的資料,包括\0在內。這就是說,外部傳入size大小的緩衝區,該函式能夠保證在size大小內,填充包含\0,至於有沒有截斷,需要使用者來進一步判斷。
至此,可解答上面兩個問題:
snprintf的返回值表示待格式化字串的長度
snprintf的第二個引數沒必要減1,按照輸入緩衝區長度傳入即可。
第三個問題,判斷格式化後是否被截斷。從上述說明來看,如果返回值大於等於入參size時,表明格式化輸出被截斷。另外一種情況,如果遇到輸出錯誤,會返回一個負值。
因此,可總結出如下程式碼:
const int nBufSize = 256;
char szBuf[nBufSize] = {0};
int nRet = snprintf(szBbuf, nBufSize, “XXXX”, “XXXX”);
if (nRet >= nBufSize || nRet < 0)
{
// 格式化被截斷或者格式化失敗
}
else
{
// 正常格式化,走正常流程
}
截斷後的處理
一般來說,我們在格式化字串時,提供的緩衝區都足夠大,保證不會發生截斷。當有些格式化資料由外部傳入,當這些資料含有異常、超長資料時,比如一個無效的double值,同時此時緩衝區較小,就可能會被截斷。
截斷後要如何處理呢?這裡不好一概而論,得區分格式化字串的上下文場景
如果是執行sql,這種情況下,無論被截斷的是哪部分,這個sql都不安全l,不允許後續使用。發生此種情況的截斷,需要記錄錯誤日誌後退出。
如果是記錄日誌,日誌是為了檢查系統狀態,即使被截斷,前面資訊也是有效的,這種場景也要記錄為錯誤日誌,但後續邏輯可繼續執行。
以上是我目前想到的兩種場景,可能還有其他場景。就比如執行sql來說,如果是很簡單,很顯而易見的sql,例如根據UserId從資料庫中查詢相關資訊,這種很簡單的sql語句,要不要判斷截斷呢?如果這種簡單的不判斷,那複雜到什麼程度才判斷呢?感覺這樣判斷,會讓邏輯依賴於資料,這是不好的做法。筆者在這裡無法給出絕對的結論,不同場景下不同的處理,能夠達成團隊一致即可。
這裡說一句,即使使用儲存過程,縮短sql的長度,但只能緩解拼接截斷髮生的概覽,對於有動態資料的查詢,還是要小心。
總結
本文總結了在格式化字串時的一些注意事項,給出自認為比較正確的做法,並就格式化截斷後的處理進行了簡短討論。
另外一點,在開發過程中,不能有照抄心態。這種心態,會參照現有工程中類似邏輯的做法,其他地方是怎麼用的,所以這裡也這麼用。這種心態或者做法,不會使得程式碼質量有所提高,反而會複製貼上可能的錯誤或不規範的用法。
https://github.com/users/rangniaortz73/projects/3452
https://www.github.com/users/rangniaortz73/projects/3452
https://github.com/users/rangniaortz73/projects/3453
https://www.github.com/users/rangniaortz73/projects/3453
https://github.com/users/rangniaortz73/projects/3454
https://www.github.com/users/rangniaortz73/projects/3454
https://github.com/users/rangniaortz73/projects/3455
https://www.github.com/users/rangniaortz73/projects/3455
https://github.com/users/rangniaortz73/projects/3456
https://www.github.com/users/rangniaortz73/projects/3456
https://github.com/users/rangniaortz73/projects/3457
https://www.github.com/users/rangniaortz73/projects/3457
https://github.com/users/rangniaortz73/projects/3458
https://www.github.com/users/rangniaortz73/projects/3458
https://github.com/users/rangniaortz73/projects/3459
https://www.github.com/users/rangniaortz73/projects/3459
https://github.com/users/rangniaortz73/projects/3460
https://www.github.com/users/rangniaortz73/projects/3460
https://github.com/users/rangniaortz73/projects/3461
https://www.github.com/users/rangniaortz73/projects/3461
https://github.com/users/rangniaortz73/projects/3462
https://www.github.com/users/rangniaortz73/projects/3462
https://github.com/users/rangniaortz73/projects/3463
https://www.github.com/users/rangniaortz73/projects/3463
https://github.com/users/rangniaortz73/projects/3464
https://www.github.com/users/rangniaortz73/projects/3464
https://github.com/users/rangniaortz73/projects/3465
https://www.github.com/users/rangniaortz73/projects/3465
https://github.com/users/rangniaortz73/projects/3466
https://www.github.com/users/rangniaortz73/projects/3466
https://github.com/users/rangniaortz73/projects/3467
https://www.github.com/users/rangniaortz73/projects/3467
https://github.com/users/rangniaortz73/projects/3468
https://www.github.com/users/rangniaortz73/projects/3468
https://github.com/users/rangniaortz73/projects/3469
https://www.github.com/users/rangniaortz73/projects/3469
https://github.com/users/rangniaortz73/projects/3470
https://www.github.com/users/rangniaortz73/projects/3470
https://github.com/users/rangniaortz73/projects/3471
https://www.github.com/users/rangniaortz73/projects/3471
https://github.com/users/rangniaortz73/projects/3472
https://www.github.com/users/rangniaortz73/projects/3472
https://github.com/users/rangniaortz73/projects/3473
https://www.github.com/users/rangniaortz73/projects/3473
https://github.com/users/rangniaortz73/projects/3474
https://www.github.com/users/rangniaortz73/projects/3474
https://github.com/users/rangniaortz73/projects/3475
https://www.github.com/users/rangniaortz73/projects/3475
https://github.com/users/rangniaortz73/projects/3476
https://www.github.com/users/rangniaortz73/projects/3476
https://github.com/users/rangniaortz73/projects/3477
https://www.github.com/users/rangniaortz73/projects/3477
https://github.com/users/rangniaortz73/projects/3478
https://www.github.com/users/rangniaortz73/projects/3478
https://github.com/users/rangniaortz73/projects/3479
https://www.github.com/users/rangniaortz73/projects/3479
https://github.com/users/rangniaortz73/projects/3480
https://www.github.com/users/rangniaortz73/projects/3480
https://github.com/users/rangniaortz73/projects/3481
https://www.github.com/users/rangniaortz73/projects/3481
https://github.com/users/rangniaortz73/projects/3482
https://www.github.com/users/rangniaortz73/projects/3482
https://github.com/users/rangniaortz73/projects/3483
https://www.github.com/users/rangniaortz73/projects/3483
https://github.com/users/rangniaortz73/projects/3484
https://www.github.com/users/rangniaortz73/projects/3484
https://github.com/users/rangniaortz73/projects/3485
https://www.github.com/users/rangniaortz73/projects/3485
https://github.com/users/rangniaortz73/projects/3486
https://www.github.com/users/rangniaortz73/projects/3486
https://github.com/users/rangniaortz73/projects/3487
https://www.github.com/users/rangniaortz73/projects/3487
https://github.com/users/rangniaortz73/projects/3488
https://www.github.com/users/rangniaortz73/projects/3488
https://github.com/users/rangniaortz73/projects/3489
https://www.github.com/users/rangniaortz73/projects/3489
https://github.com/users/rangniaortz73/projects/3490
https://www.github.com/users/rangniaortz73/projects/3490
https://github.com/users/rangniaortz73/projects/3491
https://www.github.com/users/rangniaortz73/projects/3491
https://github.com/users/rangniaortz73/projects/3492
https://www.github.com/users/rangniaortz73/projects/3492
https://github.com/users/rangniaortz73/projects/3493
https://www.github.com/users/rangniaortz73/projects/3493
https://github.com/users/rangniaortz73/projects/3494
https://www.github.com/users/rangniaortz73/projects/3494
https://github.com/users/rangniaortz73/projects/3495
https://www.github.com/users/rangniaortz73/projects/3495
https://github.com/users/rangniaortz73/projects/3496
https://www.github.com/users/rangniaortz73/projects/3496
https://github.com/users/rangniaortz73/projects/3497
https://www.github.com/users/rangniaortz73/projects/3497
https://github.com/users/rangniaortz73/projects/3498
https://www.github.com/users/rangniaortz73/projects/3498
https://github.com/users/rangniaortz73/projects/3499
https://www.github.com/users/rangniaortz73/projects/3499
https://github.com/users/rangniaortz73/projects/3500
https://www.github.com/users/rangniaortz73/projects/3500
https://github.com/users/rangniaortz73/projects/3501
https://www.github.com/users/rangniaortz73/projects/3501
https://github.com/users/rangniaortz73/projects/3502
https://www.github.com/users/rangniaortz73/projects/3502
https://github.com/users/rangniaortz73/projects/3503
https://www.github.com/users/rangniaortz73/projects/3503
https://github.com/users/rangniaortz73/projects/3504
https://www.github.com/users/rangniaortz73/projects/3504
https://github.com/users/rangniaortz73/projects/3505
https://www.github.com/users/rangniaortz73/projects/3505
https://github.com/users/rangniaortz73/projects/3506
https://www.github.com/users/rangniaortz73/projects/3506
https://github.com/users/rangniaortz73/projects/3507
https://www.github.com/users/rangniaortz73/projects/3507
https://github.com/users/rangniaortz73/projects/3508
https://www.github.com/users/rangniaortz73/projects/3508
https://github.com/users/rangniaortz73/projects/3509
https://www.github.com/users/rangniaortz73/projects/3509
https://github.com/users/rangniaortz73/projects/3510
https://www.github.com/users/rangniaortz73/projects/3510
https://github.com/users/rangniaortz73/projects/3511
https://www.github.com/users/rangniaortz73/projects/3511
https://github.com/users/rangniaortz73/projects/3512
https://www.github.com/users/rangniaortz73/projects/3512
https://github.com/users/rangniaortz73/projects/3513
https://www.github.com/users/rangniaortz73/projects/3513
https://github.com/users/rangniaortz73/projects/3514
https://www.github.com/users/rangniaortz73/projects/3514
https://github.com/users/rangniaortz73/projects/3515
https://www.github.com/users/rangniaortz73/projects/3515
https://github.com/users/rangniaortz73/projects/3516
https://www.github.com/users/rangniaortz73/projects/3516
https://github.com/users/rangniaortz73/projects/3517
https://www.github.com/users/rangniaortz73/projects/3517
https://github.com/users/rangniaortz73/projects/3518
https://www.github.com/users/rangniaortz73/projects/3518
https://github.com/users/rangniaortz73/projects/3519
https://www.github.com/users/rangniaortz73/projects/3519
https://github.com/users/rangniaortz73/projects/3520
https://www.github.com/users/rangniaortz73/projects/3520
https://github.com/users/rangniaortz73/projects/3521
https://www.github.com/users/rangniaortz73/projects/3521
https://github.com/users/rangniaortz73/projects/3522
https://www.github.com/users/rangniaortz73/projects/3522
https://github.com/users/rangniaortz73/projects/3523
https://www.github.com/users/rangniaortz73/projects/3523
https://github.com/users/rangniaortz73/projects/3524
https://www.github.com/users/rangniaortz73/projects/3524
https://github.com/users/rangniaortz73/projects/3525
https://www.github.com/users/rangniaortz73/projects/3525
https://github.com/users/rangniaortz73/projects/3526
https://www.github.com/users/rangniaortz73/projects/3526
https://github.com/users/rangniaortz73/projects/3527
https://www.github.com/users/rangniaortz73/projects/3527
https://github.com/users/rangniaortz73/projects/3528
https://www.github.com/users/rangniaortz73/projects/3528
https://github.com/users/rangniaortz73/projects/3529
https://www.github.com/users/rangniaortz73/projects/3529
https://github.com/users/rangniaortz73/projects/3530
https://www.github.com/users/rangniaortz73/projects/3530
https://github.com/users/rangniaortz73/projects/3531
https://www.github.com/users/rangniaortz73/projects/3531
https://github.com/users/rangniaortz73/projects/3532
https://www.github.com/users/rangniaortz73/projects/3532
https://github.com/users/rangniaortz73/projects/3533
https://www.github.com/users/rangniaortz73/projects/3533
https://github.com/users/rangniaortz73/projects/3534
https://www.github.com/users/rangniaortz73/projects/3534
https://github.com/users/rangniaortz73/projects/3535
https://www.github.com/users/rangniaortz73/projects/3535
https://github.com/users/rangniaortz73/projects/3536
https://www.github.com/users/rangniaortz73/projects/3536
https://github.com/users/rangniaortz73/projects/3537
https://www.github.com/users/rangniaortz73/projects/3537
https://github.com/users/rangniaortz73/projects/3538
https://www.github.com/users/rangniaortz73/projects/3538
https://github.com/users/rangniaortz73/projects/3539
https://www.github.com/users/rangniaortz73/projects/3539
https://github.com/users/rangniaortz73/projects/3540
https://www.github.com/users/rangniaortz73/projects/3540
https://github.com/users/rangniaortz73/projects/3541
https://www.github.com/users/rangniaortz73/projects/3541
https://github.com/users/rangniaortz73/projects/3542
https://www.github.com/users/rangniaortz73/projects/3542
https://github.com/users/rangniaortz73/projects/3543
https://www.github.com/users/rangniaortz73/projects/3543
https://github.com/users/rangniaortz73/projects/3544
https://www.github.com/users/rangniaortz73/projects/3544
https://github.com/users/rangniaortz73/projects/3545
https://www.github.com/users/rangniaortz73/projects/3545
https://github.com/users/rangniaortz73/projects/3546
https://www.github.com/users/rangniaortz73/projects/3546
https://github.com/users/rangniaortz73/projects/3547
https://www.github.com/users/rangniaortz73/projects/3547
https://github.com/users/rangniaortz73/projects/3548
https://www.github.com/users/rangniaortz73/projects/3548
https://github.com/users/rangniaortz73/projects/3549
https://www.github.com/users/rangniaortz73/projects/3549
https://github.com/users/rangniaortz73/projects/3550
https://www.github.com/users/rangniaortz73/projects/3550
https://github.com/users/rangniaortz73/projects/3551
https://www.github.com/users/rangniaortz73/projects/3551
https://github.com/users/rangniaortz73/projects/3552
https://www.github.com/users/rangniaortz73/projects/3552
https://github.com/users/rangniaortz73/projects/3553
https://www.github.com/users/rangniaortz73/projects/3553
https://github.com/users/rangniaortz73/projects/3554
https://www.github.com/users/rangniaortz73/projects/3554
https://github.com/users/rangniaortz73/projects/3555
https://www.github.com/users/rangniaortz73/projects/3555
https://github.com/users/rangniaortz73/projects/3556
https://www.github.com/users/rangniaortz73/projects/3556
https://github.com/users/rangniaortz73/projects/3557
https://www.github.com/users/rangniaortz73/projects/3557
https://github.com/users/rangniaortz73/projects/3558
https://www.github.com/users/rangniaortz73/projects/3558
https://github.com/users/rangniaortz73/projects/3559
https://www.github.com/users/rangniaortz73/projects/3559
https://github.com/users/rangniaortz73/projects/3560
https://www.github.com/users/rangniaortz73/projects/3560
https://github.com/users/rangniaortz73/projects/3561
https://www.github.com/users/rangniaortz73/projects/3561
https://github.com/users/rangniaortz73/projects/3562
https://www.github.com/users/rangniaortz73/projects/3562
https://github.com/users/rangniaortz73/projects/3563
https://www.github.com/users/rangniaortz73/projects/3563
https://github.com/users/rangniaortz73/projects/3564
https://www.github.com/users/rangniaortz73/projects/3564
https://github.com/users/rangniaortz73/projects/3565
https://www.github.com/users/rangniaortz73/projects/3565
https://github.com/users/rangniaortz73/projects/3566
https://www.github.com/users/rangniaortz73/projects/3566
https://github.com/users/rangniaortz73/projects/3567
https://www.github.com/users/rangniaortz73/projects/3567
https://github.com/users/rangniaortz73/projects/3568
https://www.github.com/users/rangniaortz73/projects/3568
https://github.com/users/rangniaortz73/projects/3569
https://www.github.com/users/rangniaortz73/projects/3569
https://github.com/users/rangniaortz73/projects/3570
https://www.github.com/users/rangniaortz73/projects/3570
https://github.com/users/rangniaortz73/projects/3571
https://www.github.com/users/rangniaortz73/projects/3571
https://github.com/users/rangniaortz73/projects/3572
https://www.github.com/users/rangniaortz73/projects/3572
https://github.com/users/rangniaortz73/projects/3573
https://www.github.com/users/rangniaortz73/projects/3573
https://github.com/users/rangniaortz73/projects/3574
https://www.github.com/users/rangniaortz73/projects/3574
https://github.com/users/rangniaortz73/projects/3575
https://www.github.com/users/rangniaortz73/projects/3575
https://github.com/users/rangniaortz73/projects/3576
https://www.github.com/users/rangniaortz73/projects/3576
https://github.com/users/rangniaortz73/projects/3577
https://www.github.com/users/rangniaortz73/projects/3577
https://github.com/users/rangniaortz73/projects/3578
https://www.github.com/users/rangniaortz73/projects/3578
https://github.com/users/rangniaortz73/projects/3579
https://www.github.com/users/rangniaortz73/projects/3579
https://github.com/users/rangniaortz73/projects/3580
https://www.github.com/users/rangniaortz73/projects/3580
https://github.com/users/rangniaortz73/projects/3581
https://www.github.com/users/rangniaortz73/projects/3581
https://github.com/users/rangniaortz73/projects/3582
https://www.github.com/users/rangniaortz73/projects/3582
https://github.com/users/rangniaortz73/projects/3583
https://www.github.com/users/rangniaortz73/projects/3583
https://github.com/users/rangniaortz73/projects/3584
https://www.github.com/users/rangniaortz73/projects/3584
https://github.com/users/rangniaortz73/projects/3585
https://www.github.com/users/rangniaortz73/projects/3585
https://github.com/users/rangniaortz73/projects/3586
https://www.github.com/users/rangniaortz73/projects/3586
https://github.com/users/rangniaortz73/projects/3587
https://www.github.com/users/rangniaortz73/projects/3587
https://github.com/users/rangniaortz73/projects/3588
https://www.github.com/users/rangniaortz73/projects/3588
https://github.com/users/rangniaortz73/projects/3589
https://www.github.com/users/rangniaortz73/projects/3589
https://github.com/users/rangniaortz73/projects/3590
https://www.github.com/users/rangniaortz73/projects/3590
https://github.com/users/rangniaortz73/projects/3591
https://www.github.com/users/rangniaortz73/projects/3591
https://github.com/users/rangniaortz73/projects/3592
https://www.github.com/users/rangniaortz73/projects/3592
https://github.com/users/rangniaortz73/projects/3593
https://www.github.com/users/rangniaortz73/projects/3593
https://github.com/users/rangniaortz73/projects/3594
https://www.github.com/users/rangniaortz73/projects/3594
https://github.com/users/rangniaortz73/projects/3595
https://www.github.com/users/rangniaortz73/projects/3595
https://github.com/users/rangniaortz73/projects/3596
https://www.github.com/users/rangniaortz73/projects/3596
https://github.com/users/rangniaortz73/projects/3597
https://www.github.com/users/rangniaortz73/projects/3597
https://github.com/users/rangniaortz73/projects/3598
https://www.github.com/users/rangniaortz73/projects/3598
https://github.com/users/rangniaortz73/projects/3599
https://www.github.com/users/rangniaortz73/projects/3599
https://github.com/users/rangniaortz73/projects/3600
https://www.github.com/users/rangniaortz73/projects/3600
https://github.com/users/rangniaortz73/projects/3601
https://www.github.com/users/rangniaortz73/projects/3601
https://github.com/users/rangniaortz73/projects/3602
https://www.github.com/users/rangniaortz73/projects/3602
https://github.com/users/rangniaortz73/projects/3603
https://www.github.com/users/rangniaortz73/projects/3603
https://github.com/users/rangniaortz73/projects/3604
https://www.github.com/users/rangniaortz73/projects/3604
https://github.com/users/rangniaortz73/projects/3605
https://www.github.com/users/rangniaortz73/projects/3605
https://github.com/users/rangniaortz73/projects/3606
https://www.github.com/users/rangniaortz73/projects/3606
https://github.com/users/rangniaortz73/projects/3607
https://www.github.com/users/rangniaortz73/projects/3607
https://github.com/users/rangniaortz73/projects/3608
https://www.github.com/users/rangniaortz73/projects/3608
https://github.com/users/rangniaortz73/projects/3609
https://www.github.com/users/rangniaortz73/projects/3609
https://github.com/users/rangniaortz73/projects/3610
https://www.github.com/users/rangniaortz73/projects/3610
https://github.com/users/rangniaortz73/projects/3611
https://www.github.com/users/rangniaortz73/projects/3611
https://github.com/users/rangniaortz73/projects/3612
https://www.github.com/users/rangniaortz73/projects/3612
https://github.com/users/rangniaortz73/projects/3613
https://www.github.com/users/rangniaortz73/projects/3613
https://github.com/users/rangniaortz73/projects/3614
https://www.github.com/users/rangniaortz73/projects/3614
https://github.com/users/rangniaortz73/projects/3615
https://www.github.com/users/rangniaortz73/projects/3615
https://github.com/users/rangniaortz73/projects/3616
https://www.github.com/users/rangniaortz73/projects/3616
https://github.com/users/rangniaortz73/projects/3617
https://www.github.com/users/rangniaortz73/projects/3617
https://github.com/users/rangniaortz73/projects/3618
https://www.github.com/users/rangniaortz73/projects/3618
https://github.com/users/rangniaortz73/projects/3619
https://www.github.com/users/rangniaortz73/projects/3619
https://github.com/users/rangniaortz73/projects/3620
https://www.github.com/users/rangniaortz73/projects/3620
https://github.com/users/rangniaortz73/projects/3621
https://www.github.com/users/rangniaortz73/projects/3621
https://github.com/users/rangniaortz73/projects/3622
https://www.github.com/users/rangniaortz73/projects/3622
https://github.com/users/rangniaortz73/projects/3623
https://www.github.com/users/rangniaortz73/projects/3623
https://github.com/users/rangniaortz73/projects/3624
https://www.github.com/users/rangniaortz73/projects/3624
https://github.com/users/rangniaortz73/projects/3625
https://www.github.com/users/rangniaortz73/projects/3625
https://github.com/users/rangniaortz73/projects/3626
https://www.github.com/users/rangniaortz73/projects/3626
https://github.com/users/rangniaortz73/projects/3627
https://www.github.com/users/rangniaortz73/projects/3627
https://github.com/users/rangniaortz73/projects/3628
https://www.github.com/users/rangniaortz73/projects/3628
https://github.com/users/rangniaortz73/projects/3629
https://www.github.com/users/rangniaortz73/projects/3629
https://github.com/users/rangniaortz73/projects/3630
https://www.github.com/users/rangniaortz73/projects/3630
https://github.com/users/rangniaortz73/projects/3631
https://www.github.com/users/rangniaortz73/projects/3631
https://github.com/users/rangniaortz73/projects/3632
https://www.github.com/users/rangniaortz73/projects/3632
https://github.com/users/rangniaortz73/projects/3633
https://www.github.com/users/rangniaortz73/projects/3633
https://github.com/users/rangniaortz73/projects/3634
https://www.github.com/users/rangniaortz73/projects/3634
https://github.com/users/rangniaortz73/projects/3635
https://www.github.com/users/rangniaortz73/projects/3635
https://github.com/users/rangniaortz73/projects/3636
https://www.github.com/users/rangniaortz73/projects/3636
https://github.com/users/rangniaortz73/projects/3637
https://www.github.com/users/rangniaortz73/projects/3637
https://github.com/users/rangniaortz73/projects/3638
https://www.github.com/users/rangniaortz73/projects/3638
https://github.com/users/rangniaortz73/projects/3639
https://www.github.com/users/rangniaortz73/projects/3639
https://github.com/users/rangniaortz73/projects/3640
https://www.github.com/users/rangniaortz73/projects/3640
https://github.com/users/rangniaortz73/projects/3641
https://www.github.com/users/rangniaortz73/projects/3641
https://github.com/users/rangniaortz73/projects/3642
https://www.github.com/users/rangniaortz73/projects/3642
https://github.com/users/rangniaortz73/projects/3643
https://www.github.com/users/rangniaortz73/projects/3643
https://github.com/users/rangniaortz73/projects/3644
https://www.github.com/users/rangniaortz73/projects/3644
https://github.com/users/rangniaortz73/projects/3645
https://www.github.com/users/rangniaortz73/projects/3645
https://github.com/users/rangniaortz73/projects/3646
https://www.github.com/users/rangniaortz73/projects/3646
https://github.com/users/rangniaortz73/projects/3647
https://www.github.com/users/rangniaortz73/projects/3647
https://github.com/users/rangniaortz73/projects/3648
https://www.github.com/users/rangniaortz73/projects/3648
https://github.com/users/rangniaortz73/projects/3649
https://www.github.com/users/rangniaortz73/projects/3649
https://github.com/users/rangniaortz73/projects/3650
https://www.github.com/users/rangniaortz73/projects/3650
https://github.com/users/rangniaortz73/projects/3651
https://www.github.com/users/rangniaortz73/projects/3651
https://github.com/users/rangniaortz73/projects/3652
https://www.github.com/users/rangniaortz73/projects/3652
https://github.com/users/rangniaortz73/projects/3653
https://www.github.com/users/rangniaortz73/projects/3653
https://github.com/users/rangniaortz73/projects/3654
https://www.github.com/users/rangniaortz73/projects/3654
https://github.com/users/rangniaortz73/projects/3655
https://www.github.com/users/rangniaortz73/projects/3655
https://github.com/users/rangniaortz73/projects/3656
https://www.github.com/users/rangniaortz73/projects/3656
https://github.com/users/rangniaortz73/projects/3657
https://www.github.com/users/rangniaortz73/projects/3657
https://github.com/users/rangniaortz73/projects/3658
https://www.github.com/users/rangniaortz73/projects/3658
https://github.com/users/rangniaortz73/projects/3659
https://www.github.com/users/rangniaortz73/projects/3659
https://github.com/users/rangniaortz73/projects/3660
https://www.github.com/users/rangniaortz73/projects/3660
https://github.com/users/rangniaortz73/projects/3661
https://www.github.com/users/rangniaortz73/projects/3661
https://github.com/users/rangniaortz73/projects/3662
https://www.github.com/users/rangniaortz73/projects/3662
https://github.com/users/rangniaortz73/projects/3663
https://www.github.com/users/rangniaortz73/projects/3663
https://github.com/users/rangniaortz73/projects/3664
https://www.github.com/users/rangniaortz73/projects/3664
https://github.com/users/rangniaortz73/projects/3665
https://www.github.com/users/rangniaortz73/projects/3665
https://github.com/users/rangniaortz73/projects/3666
https://www.github.com/users/rangniaortz73/projects/3666
https://github.com/users/rangniaortz73/projects/3667
https://www.github.com/users/rangniaortz73/projects/3667
https://github.com/users/rangniaortz73/projects/3668
https://www.github.com/users/rangniaortz73/projects/3668
https://github.com/users/rangniaortz73/projects/3669
https://www.github.com/users/rangniaortz73/projects/3669
https://github.com/users/rangniaortz73/projects/3670
https://www.github.com/users/rangniaortz73/projects/3670
https://github.com/users/rangniaortz73/projects/3671
https://www.github.com/users/rangniaortz73/projects/3671
https://github.com/users/rangniaortz73/projects/3672
https://www.github.com/users/rangniaortz73/projects/3672
https://github.com/users/rangniaortz73/projects/3673
https://www.github.com/users/rangniaortz73/projects/3673
https://github.com/users/rangniaortz73/projects/3674
https://www.github.com/users/rangniaortz73/projects/3674
https://github.com/users/rangniaortz73/projects/3675
https://www.github.com/users/rangniaortz73/projects/3675
https://github.com/users/rangniaortz73/projects/3676
https://www.github.com/users/rangniaortz73/projects/3676
https://github.com/users/rangniaortz73/projects/3677
https://www.github.com/users/rangniaortz73/projects/3677
https://github.com/users/rangniaortz73/projects/3678
https://www.github.com/users/rangniaortz73/projects/3678
https://github.com/users/rangniaortz73/projects/3679
https://www.github.com/users/rangniaortz73/projects/3679
https://github.com/users/rangniaortz73/projects/3680
https://www.github.com/users/rangniaortz73/projects/3680
https://github.com/users/rangniaortz73/projects/3681
https://www.github.com/users/rangniaortz73/projects/3681
https://github.com/users/rangniaortz73/projects/3682
https://www.github.com/users/rangniaortz73/projects/3682
https://github.com/users/rangniaortz73/projects/3683
https://www.github.com/users/rangniaortz73/projects/3683
https://github.com/users/rangniaortz73/projects/3684
https://www.github.com/users/rangniaortz73/projects/3684
https://github.com/users/rangniaortz73/projects/3685
https://www.github.com/users/rangniaortz73/projects/3685
https://github.com/users/rangniaortz73/projects/3686
https://www.github.com/users/rangniaortz73/projects/3686
https://github.com/users/rangniaortz73/projects/3687
https://www.github.com/users/rangniaortz73/projects/3687
https://github.com/users/rangniaortz73/projects/3688
https://www.github.com/users/rangniaortz73/projects/3688
https://github.com/users/rangniaortz73/projects/3689
https://www.github.com/users/rangniaortz73/projects/3689
https://github.com/users/rangniaortz73/projects/3690
https://www.github.com/users/rangniaortz73/projects/3690
https://github.com/users/rangniaortz73/projects/3691
https://www.github.com/users/rangniaortz73/projects/3691
https://github.com/users/rangniaortz73/projects/3692
https://www.github.com/users/rangniaortz73/projects/3692
https://github.com/users/rangniaortz73/projects/3693
https://www.github.com/users/rangniaortz73/projects/3693
https://github.com/users/rangniaortz73/projects/3694
https://www.github.com/users/rangniaortz73/projects/3694
https://github.com/users/rangniaortz73/projects/3695
https://www.github.com/users/rangniaortz73/projects/3695
https://github.com/users/rangniaortz73/projects/3696
https://www.github.com/users/rangniaortz73/projects/3696
https://github.com/users/rangniaortz73/projects/3697
https://www.github.com/users/rangniaortz73/projects/3697
https://github.com/users/rangniaortz73/projects/3698
https://www.github.com/users/rangniaortz73/projects/3698
https://github.com/users/rangniaortz73/projects/3699
https://www.github.com/users/rangniaortz73/projects/3699
https://github.com/users/rangniaortz73/projects/3700
https://www.github.com/users/rangniaortz73/projects/3700
https://github.com/users/rangniaortz73/projects/3701
https://www.github.com/users/rangniaortz73/projects/3701
https://github.com/users/rangniaortz73/projects/3702
https://www.github.com/users/rangniaortz73/projects/3702
https://github.com/users/rangniaortz73/projects/3703
https://www.github.com/users/rangniaortz73/projects/3703
https://github.com/users/rangniaortz73/projects/3704
https://www.github.com/users/rangniaortz73/projects/3704
https://github.com/users/rangniaortz73/projects/3705
https://www.github.com/users/rangniaortz73/projects/3705
https://github.com/users/rangniaortz73/projects/3706
https://www.github.com/users/rangniaortz73/projects/3706
https://github.com/users/rangniaortz73/projects/3707
https://www.github.com/users/rangniaortz73/projects/3707
https://github.com/users/rangniaortz73/projects/3708
https://www.github.com/users/rangniaortz73/projects/3708
https://github.com/users/rangniaortz73/projects/3709
https://www.github.com/users/rangniaortz73/projects/3709
https://github.com/users/rangniaortz73/projects/3710
https://www.github.com/users/rangniaortz73/projects/3710
https://github.com/users/rangniaortz73/projects/3711
https://www.github.com/users/rangniaortz73/projects/3711
https://github.com/users/rangniaortz73/projects/3712
https://www.github.com/users/rangniaortz73/projects/3712
https://github.com/users/rangniaortz73/projects/3713
https://www.github.com/users/rangniaortz73/projects/3713
https://github.com/users/rangniaortz73/projects/3714
https://www.github.com/users/rangniaortz73/projects/3714
https://github.com/users/rangniaortz73/projects/3715
https://www.github.com/users/rangniaortz73/projects/3715
https://github.com/users/rangniaortz73/projects/3716
https://www.github.com/users/rangniaortz73/projects/3716
https://github.com/users/rangniaortz73/projects/3717
https://www.github.com/users/rangniaortz73/projects/3717
https://github.com/users/rangniaortz73/projects/3718
https://www.github.com/users/rangniaortz73/projects/3718
https://github.com/users/rangniaortz73/projects/3719
https://www.github.com/users/rangniaortz73/projects/3719
https://github.com/users/rangniaortz73/projects/3720
https://www.github.com/users/rangniaortz73/projects/3720
https://github.com/users/rangniaortz73/projects/3721
https://www.github.com/users/rangniaortz73/projects/3721
https://github.com/users/rangniaortz73/projects/3722
https://www.github.com/users/rangniaortz73/projects/3722
https://github.com/users/rangniaortz73/projects/3723
https://www.github.com/users/rangniaortz73/projects/3723
https://github.com/users/rangniaortz73/projects/3724
https://www.github.com/users/rangniaortz73/projects/3724
https://github.com/users/rangniaortz73/projects/3725
https://www.github.com/users/rangniaortz73/projects/3725
https://github.com/users/rangniaortz73/projects/3726
https://www.github.com/users/rangniaortz73/projects/3726
https://github.com/users/rangniaortz73/projects/3727
https://www.github.com/users/rangniaortz73/projects/3727
https://github.com/users/rangniaortz73/projects/3728
https://www.github.com/users/rangniaortz73/projects/3728
https://github.com/users/rangniaortz73/projects/3729
https://www.github.com/users/rangniaortz73/projects/3729
https://github.com/users/rangniaortz73/projects/3730
https://www.github.com/users/rangniaortz73/projects/3730
https://github.com/users/rangniaortz73/projects/3731
https://www.github.com/users/rangniaortz73/projects/3731
https://github.com/users/rangniaortz73/projects/3732
https://www.github.com/users/rangniaortz73/projects/3732
https://github.com/users/rangniaortz73/projects/3733
https://www.github.com/users/rangniaortz73/projects/3733
https://github.com/users/rangniaortz73/projects/3734
https://www.github.com/users/rangniaortz73/projects/3734
https://github.com/users/rangniaortz73/projects/3735
https://www.github.com/users/rangniaortz73/projects/3735
https://github.com/users/rangniaortz73/projects/3736
https://www.github.com/users/rangniaortz73/projects/3736
https://github.com/users/rangniaortz73/projects/3737
https://www.github.com/users/rangniaortz73/projects/3737
https://github.com/users/rangniaortz73/projects/3738
https://www.github.com/users/rangniaortz73/projects/3738
https://github.com/users/rangniaortz73/projects/3739
https://www.github.com/users/rangniaortz73/projects/3739
https://github.com/users/rangniaortz73/projects/3740
https://www.github.com/users/rangniaortz73/projects/3740
https://github.com/users/rangniaortz73/projects/3741
https://www.github.com/users/rangniaortz73/projects/3741
https://github.com/users/rangniaortz73/projects/3742
https://www.github.com/users/rangniaortz73/projects/3742
https://github.com/users/rangniaortz73/projects/3743
https://www.github.com/users/rangniaortz73/projects/3743
https://github.com/users/rangniaortz73/projects/3744
https://www.github.com/users/rangniaortz73/projects/3744
https://github.com/users/rangniaortz73/projects/3745
https://www.github.com/users/rangniaortz73/projects/3745
https://github.com/users/rangniaortz73/projects/3746
https://www.github.com/users/rangniaortz73/projects/3746
https://github.com/users/rangniaortz73/projects/3747
https://www.github.com/users/rangniaortz73/projects/3747
https://github.com/users/rangniaortz73/projects/3748
https://www.github.com/users/rangniaortz73/projects/3748
https://github.com/users/rangniaortz73/projects/3749
https://www.github.com/users/rangniaortz73/projects/3749
https://github.com/users/rangniaortz73/projects/3750
https://www.github.com/users/rangniaortz73/projects/3750
https://github.com/users/rangniaortz73/projects/3751
https://www.github.com/users/rangniaortz73/projects/3751
https://github.com/users/rangniaortz73/projects/3752
https://www.github.com/users/rangniaortz73/projects/3752
https://github.com/users/rangniaortz73/projects/3753
https://www.github.com/users/rangniaortz73/projects/3753
https://github.com/users/rangniaortz73/projects/3754
https://www.github.com/users/rangniaortz73/projects/3754
https://github.com/users/rangniaortz73/projects/3755
https://www.github.com/users/rangniaortz73/projects/3755
https://github.com/users/rangniaortz73/projects/3756
https://www.github.com/users/rangniaortz73/projects/3756
https://github.com/users/rangniaortz73/projects/3757
https://www.github.com/users/rangniaortz73/projects/3757
https://github.com/users/rangniaortz73/projects/3758
https://www.github.com/users/rangniaortz73/projects/3758
https://github.com/users/rangniaortz73/projects/3759
https://www.github.com/users/rangniaortz73/projects/3759
https://github.com/users/rangniaortz73/projects/3760
https://www.github.com/users/rangniaortz73/projects/3760
https://github.com/users/rangniaortz73/projects/3761
https://www.github.com/users/rangniaortz73/projects/3761
https://github.com/users/rangniaortz73/projects/3762
https://www.github.com/users/rangniaortz73/projects/3762
https://github.com/users/rangniaortz73/projects/3763
https://www.github.com/users/rangniaortz73/projects/3763
https://github.com/users/rangniaortz73/projects/3764
https://www.github.com/users/rangniaortz73/projects/3764
https://github.com/users/rangniaortz73/projects/3765
https://www.github.com/users/rangniaortz73/projects/3765
https://github.com/users/rangniaortz73/projects/3766
https://www.github.com/users/rangniaortz73/projects/3766
https://github.com/users/rangniaortz73/projects/3767
https://www.github.com/users/rangniaortz73/projects/3767
https://github.com/users/rangniaortz73/projects/3768
https://www.github.com/users/rangniaortz73/projects/3768
https://github.com/users/rangniaortz73/projects/3769
https://www.github.com/users/rangniaortz73/projects/3769
https://github.com/users/rangniaortz73/projects/3770
https://www.github.com/users/rangniaortz73/projects/3770
https://github.com/users/rangniaortz73/projects/3771
https://www.github.com/users/rangniaortz73/projects/3771
https://github.com/users/rangniaortz73/projects/3772
https://www.github.com/users/rangniaortz73/projects/3772
https://github.com/users/rangniaortz73/projects/3773
https://www.github.com/users/rangniaortz73/projects/3773
https://github.com/users/rangniaortz73/projects/3774
https://www.github.com/users/rangniaortz73/projects/3774
https://github.com/users/rangniaortz73/projects/3775
https://www.github.com/users/rangniaortz73/projects/3775
https://github.com/users/rangniaortz73/projects/3776
https://www.github.com/users/rangniaortz73/projects/3776
https://github.com/users/rangniaortz73/projects/3777
https://www.github.com/users/rangniaortz73/projects/3777
https://github.com/users/rangniaortz73/projects/3778
https://www.github.com/users/rangniaortz73/projects/3778
https://github.com/users/rangniaortz73/projects/3779
https://www.github.com/users/rangniaortz73/projects/3779
https://github.com/users/rangniaortz73/projects/3780
https://www.github.com/users/rangniaortz73/projects/3780
https://github.com/users/rangniaortz73/projects/3781
https://www.github.com/users/rangniaortz73/projects/3781
https://github.com/users/rangniaortz73/projects/3782
https://www.github.com/users/rangniaortz73/projects/3782
https://github.com/users/rangniaortz73/projects/3783
https://www.github.com/users/rangniaortz73/projects/3783
https://github.com/users/rangniaortz73/projects/3784
https://www.github.com/users/rangniaortz73/projects/3784
https://github.com/users/rangniaortz73/projects/3785
https://www.github.com/users/rangniaortz73/projects/3785
https://github.com/users/rangniaortz73/projects/3786
https://www.github.com/users/rangniaortz73/projects/3786
https://github.com/users/rangniaortz73/projects/3787
https://www.github.com/users/rangniaortz73/projects/3787
https://github.com/users/rangniaortz73/projects/3788
https://www.github.com/users/rangniaortz73/projects/3788
https://github.com/users/rangniaortz73/projects/3789
https://www.github.com/users/rangniaortz73/projects/3789
https://github.com/users/rangniaortz73/projects/3790
https://www.github.com/users/rangniaortz73/projects/3790
https://github.com/users/rangniaortz73/projects/3791
https://www.github.com/users/rangniaortz73/projects/3791
https://github.com/users/rangniaortz73/projects/3792
https://www.github.com/users/rangniaortz73/projects/3792
https://github.com/users/rangniaortz73/projects/3793
https://www.github.com/users/rangniaortz73/projects/3793
相關文章
- 【Go】高效擷取字串的一些思考Go字串
- 對ThreadLocal的一些思考thread
- 對於人生的一些思考
- 對React setState的一些思考與心得React
- 對提高HBase寫效能的一些思考
- 對於最近的一些理解和思考
- 對自己目前狀況的一些思考
- Python中對字串格式化的方法:%、format()、以及f+字串詳解Python字串格式化ORM
- 對於封裝react元件的一些思考封裝React元件
- 我對SLG遊戲製作的一些思考遊戲
- string.Format對C#字串格式化ORMC#字串格式化
- 字串 格式化字串
- 格式化字串字串
- Python中的字串與字串格式化Python字串格式化
- 對App應用架構搭建的一些思考APP應用架構
- 對CROS OPTIONS預檢請求的一些思考ROS
- python字串的格式化Python字串
- Python 字串的格式化Python字串
- Golang字串格式化Golang字串格式化
- Golang 字串 格式化Golang字串
- 專案開發中對成長的一些思考
- 我對軟體架構的一些看法和思考架構
- 再聊對架構決策記錄的一些思考架構
- 生活的一些思考
- 我的一些思考
- 經驗篇:對商業分析的一些思考和感悟
- 對設計與設計師“價值”的一些思考
- 對2D遊戲引擎設計的一些思考(轉)遊戲引擎
- 對於api管理系統的一些總結和思考API
- 【java初探】——格式化字串Java字串
- Python:字串格式化Python字串格式化
- js 字串格式化方法JS字串格式化
- Python 字串格式化Python字串格式化
- 一些思考
- Python中的字串格式化方法Python字串格式化
- python字串格式化的方法整理Python字串格式化
- 學習憤怒的小鳥:對Android遊戲的一些思考Android遊戲
- 由作業題引發對C++引用的一些思考C++