comctl32!ListView_OnSetItem函數分析LISTSUBITEM結構中的image表示圖標位置

第一部分:
BOOL ListView_SetSubItem(LV* plv, const LV_ITEM* plvi)
{
??? LISTSUBITEM lsi;
??? BOOL fChanged = FALSE;
??? int i;
??? int idpa;
??? HDPA hdpa;

??? if (plvi->mask & ~(LVIF_DI_SETITEM | LVIF_TEXT | LVIF_IMAGE | LVIF_STATE))
??? {
??????? RIPMSG(0, "ListView: Invalid mask: %04x", plvi->mask);
??????? return FALSE;
??? }

??? if (!(plvi->mask & (LVIF_TEXT | LVIF_IMAGE | LVIF_STATE)))
??????? return TRUE;

??? i = plvi->iItem;
??? if (!ListView_IsValidItemNumber(plv, i))
??? {
??????? RIPMSG(0, "LVM_SETITEM: Invalid iItem: %d", plvi->iItem);
??????? return FALSE;
??? }

??? // sub item indices are 1-based...
??? //
??? idpa = plvi->iSubItem - 1;
??? if (idpa < 0 || idpa >= plv->cCol - 1)
??? {
??????? RIPMSG(0, "LVM_SETITEM: Invalid iSubItem: %d", plvi->iSubItem);
??????? return FALSE;
??? }

??? hdpa = ListView_GetSubItemDPA(plv, idpa);
??? if (!hdpa)
??? {
??????? hdpa = DPA_CreateEx(LV_HDPA_GROW, plv->hheap);
??????? if (!hdpa)
??????????? return FALSE;

??????? DPA_SetPtr(plv->hdpaSubItems, idpa, (void*)hdpa);
??? }

??? ListView_GetSubItem(plv, i, plvi->iSubItem, &lsi);

??? if (plvi->mask & LVIF_TEXT) {
??????? if (lsi.pszText != plvi->pszText) {
??????????? Str_Set(&lsi.pszText, plvi->pszText);
??????????? fChanged = TRUE;
??????? }
??? }

??? if (plvi->mask & LVIF_IMAGE) {
??????? if (plvi->iImage != lsi.iImage) {
??????????? lsi.iImage = (short) plvi->iImage;
??????????? fChanged = TRUE;
??????? }
??? }

??? if (plvi->mask & LVIF_STATE) {
??????? DWORD dwChange;

??????? dwChange = (lsi.state ^ plvi->state ) & plvi->stateMask;

??????? if (dwChange) {
??????????? lsi.state ^= dwChange;
??????????? fChanged = TRUE;
??????? }
??? }

??? if (fChanged) {
??????? PLISTSUBITEM plsiReal = DPA_GetPtr(hdpa, i);
??????? if (!plsiReal) {
??????????? plsiReal = LocalAlloc(LPTR, sizeof(LISTSUBITEM));
??????????? if (!plsiReal) {
??????????????? // fail!? bail out
??????????????? return FALSE;
??????????? }
??????? }
??????? *plsiReal = lsi;
??????? if (!DPA_SetPtr(hdpa, i, (void*)plsiReal)) {

??????????? ListView_FreeSubItem(plsiReal);
??????????? return FALSE;
??????? }
??? }

??? // all's well... let's invalidate this
??? if (ListView_IsReportView(plv)) {
??????? RECT rc;
??????? ListView_RGetRectsEx(plv, plvi->iItem, plvi->iSubItem, NULL, &rc);
??????? RedrawWindow(plv->ci.hwnd, &rc, NULL, RDW_ERASE | RDW_INVALIDATE);
??? }
??? else if (ListView_IsTileView(plv))
??? {
??????? LISTITEM *pitem = ListView_GetItemPtr(plv, i);
??????? if (pitem)
??????? {
??????????? ListView_SetSRecompute(pitem);
??????????? // For tile view, we need to recompute the item
??????????? plv->rcView.left = RECOMPUTE;
?????? ?
??????????? if (plv->iItemDrawing != i)
??????????????? ListView_InvalidateItemEx(plv, i, FALSE, RDW_ERASE | RDW_INVALIDATE, LVIF_TEXT);
??????? }
??? }
??? return TRUE;
}


// ListView Item structure

#define LVIF_TEXT?????????? 0x0001? // LV_ITEM.mask flags (indicate valid fields in LV_ITEM)
#define LVIF_IMAGE????????? 0x0002
#define LVIF_PARAM????????? 0x0004
#define LVIF_STATE????????? 0x0008

第二部分:
0: kd> dx -id 0,0,896d1020 -r1 ((comctl32!_LV *)0x108d88)
((comctl32!_LV *)0x108d88)???????????????? : 0x108d88 [Type: _LV *]
??? [+0x000] ci?????????????? [Type: tagControlInfo]
??? [+0x024 ( 0: 0)] fNoDismissEdit?? : 0x0 [Type: unsigned long]
??? [+0x024 ( 1: 1)] fButtonDown????? : 0x1 [Type: unsigned long]
??? [+0x024 ( 2: 2)] fOneClickOK????? : 0x1 [Type: unsigned long]
??? [+0x024 ( 3: 3)] fOneClickHappened : 0x0 [Type: unsigned long]
??? [+0x024 ( 4: 4)] fPlaceTooltip??? : 0x0 [Type: unsigned long]
??? [+0x024 ( 5: 5)] fImgCtxComplete? : 0x0 [Type: unsigned long]
??? [+0x024 ( 6: 6)] fNoEmptyText???? : 0x0 [Type: unsigned long]
??? [+0x024 ( 7: 7)] fGroupView?????? : 0x0 [Type: unsigned long]
??? [+0x024 ( 8: 8)] fIconsPositioned : 0x1 [Type: unsigned long]
??? [+0x024 ( 9: 9)] fInsertAfter???? : 0x0 [Type: unsigned long]
??? [+0x024 (10:10)] fListviewAlphaSelect : 0x0 [Type: unsigned long]
??? [+0x024 (11:11)] fListviewShadowText : 0x0 [Type: unsigned long]
??? [+0x024 (12:12)] fListviewWatermarkBackgroundImages : 0x0 [Type: unsigned long]
??? [+0x024 (13:13)] fListviewEnableWatermark : 0x0 [Type: unsigned long]
??? [+0x024 (14:14)] fInFixIScrollPositions : 0x0 [Type: unsigned long]
??? [+0x028] wView??????????? : 0x0 [Type: unsigned short]
??? [+0x02c] hdpa???????????? : 0x1086d8 [Type: _DPA *]?? ??? ??? ?[+0x02c] hdpa???????????? : 0x1086d8 [Type: _DPA *]
? ......
??? [+0x2fc] iLastId????????? : 0x0 [Type: unsigned long]
??? [+0x300] iIncrement?????? : 0xffffffff [Type: unsigned long]
0: kd> dx -id 0,0,896d1020 -r1 ((comctl32!_DPA *)0x1086d8)
((comctl32!_DPA *)0x1086d8)???????????????? : 0x1086d8 [Type: _DPA *]
??? [+0x000] cp?????????????? : 22 [Type: int]
??? [+0x004] pp?????????????? : 0x10b900 [Type: void * *]
??? [+0x008] hheap??????????? : 0x80000 [Type: void *]
??? [+0x00c] cpAlloc????????? : 32 [Type: int]
??? [+0x010] cpGrow?????????? : 64 [Type: int]
??? [+0x014] magic??????????? : 0x4150 [Type: unsigned int]
0: kd> dd 0x10b900
0010b900? 0010b590 0010b7f8 0010b850 0010b2f0
0010b910? 0010ba10 0010ba68 0010bac0 000d64b8
0010b920? 0010b380 0010b3d8 0010b430 0010b488
0010b930? 0010b4e0 0010b538 0010b5e8 0010b640
0010b940? 0010b698 0010b6f0 0010b748 0010b7a0
0010b950? 0010b8a8 00118718 00000000 00000000
0010b960? 00000000 00000000 00000000 00000000


第三部分:
一共兩列:iImage表示位置,從左到右的相對位置

第二列:
0: kd> dt LISTSUBITEM 00118718
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x000d3818? -> 0x4e
?? +0x004 iImage?????????? : 0n621
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> dx -id 0,0,896d1020 -r1 (*((comctl32!tagSIZE *)0x118720))
(*((comctl32!tagSIZE *)0x118720))???????????????? [Type: tagSIZE]
??? [+0x000] cx?????????????? : 77 [Type: long]
??? [+0x004] cy?????????????? : 7864319 [Type: long]
0: kd> db 0x000d3818
000d3818? 4e 00 65 00 77 00 20 00-54 00 65 00 78 00 74 00? N.e.w. .T.e.x.t.
000d3828? 20 00 44 00 6f 00 63 00-75 00 6d 00 65 00 6e 00?? .D.o.c.u.m.e.n.
000d3838? 74 00 2e 00 74 00 78 00-74 00 00 00 00 00 00 00? t...t.x.t.......

0: kd> dt LISTSUBITEM 0010b8a8
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x001098c8? -> 0x53
?? +0x004 iImage?????????? : 0n546
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x001098c8
001098c8? 53 00 49 00 50 00 4f 00-42 00 4a 00 2e 00 44 00? S.I.P.O.B.J...D.
001098d8? 42 00 47 00 00 00 52 00-05 00 04 00 49 01 0c 00? B.G...R.....I...

0: kd> dt LISTSUBITEM 0010b7a0
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x001098a0? -> 0x70
?? +0x004 iImage?????????? : 0n471
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x001098a0
001098a0? 70 00 61 00 67 00 65 00-66 00 69 00 6c 00 65 00? p.a.g.e.f.i.l.e.
001098b0? 2e 00 73 00 79 00 73 00-00 00 00 00 00 00 00 00? ..s.y.s.........

0: kd> dt LISTSUBITEM 0010b748
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109888? -> 0x6e
?? +0x004 iImage?????????? : 0n396
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109888
00109888? 6e 00 74 00 6c 00 64 00-72 00 00 00 00 00 00 00? n.t.l.d.r.......
00109898? 05 00 03 00 46 01 0e 00-70 00 61 00 67 00 65 00? ....F...p.a.g.e.

0: kd> dt LISTSUBITEM 0010b6f0
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109860? -> 0x4e
?? +0x004 iImage?????????? : 0n321
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109860
00109860? 4e 00 54 00 44 00 45 00-54 00 45 00 43 00 54 00? N.T.D.E.T.E.C.T.
00109870? 2e 00 43 00 4f 00 4d 00-00 00 00 00 00 00 00 00? ..C.O.M.........

0: kd> dt LISTSUBITEM 0010b698
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109840? -> 0x4d
?? +0x004 iImage?????????? : 0n246
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109840
00109840? 4d 00 53 00 44 00 4f 00-53 00 2e 00 53 00 59 00? M.S.D.O.S...S.Y.
00109850? 53 00 00 00 00 00 00 00-05 00 04 00 5e 01 0e 00? S...........^...

0: kd> dt LISTSUBITEM 0010b640
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109828? -> 0x49
?? +0x004 iImage?????????? : 0n171
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109828
00109828? 49 00 4f 00 2e 00 53 00-59 00 53 00 00 00 0d 77? I.O...S.Y.S....w


0: kd>? dt LISTSUBITEM 0010b5e8
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109808? -> 0x65
?? +0x004 iImage?????????? : 0n96
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE

0: kd> db 0x00109808
00109808? 65 00 76 00 65 00 6e 00-74 00 2e 00 74 00 78 00? e.v.e.n.t...t.x.
00109818? 74 00 00 00 00 00 00 00-03 00 04 00 51 01 0a 00? t...........Q...


0: kd>? dt LISTSUBITEM 0010b538
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x001097e8? -> 0x43
?? +0x004 iImage?????????? : 0n21
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x001097e8
001097e8? 43 00 4f 00 4e 00 46 00-49 00 47 00 2e 00 53 00? C.O.N.F.I.G...S.
001097f8? 59 00 53 00 00 00 00 00-04 00 04 00 55 01 0c 00? Y.S.........U...


第二列:
0: kd> dt LISTSUBITEM 0010b4e0
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x001097c8? -> 0x62
?? +0x004 iImage?????????? : 0n921
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x001097c8
001097c8? 62 00 6f 00 6f 00 74 00-2e 00 69 00 6e 00 69 00? b.o.o.t...i.n.i.


0: kd>? dt LISTSUBITEM 0010b488
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x001097a0? -> 0x41
?? +0x004 iImage?????????? : 0n846
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x001097a0
001097a0? 41 00 55 00 54 00 4f 00-45 00 58 00 45 00 43 00? A.U.T.O.E.X.E.C.
001097b0? 2e 00 42 00 41 00 54 00-00 00 00 00 00 00 00 00? ..B.A.T.........


0: kd>? dt LISTSUBITEM 0010b430
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109788? -> 0x36
?? +0x004 iImage?????????? : 0n771
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109788
00109788? 36 00 2e 00 74 00 78 00-74 00 00 00 00 00 00 00? 6...t.x.t.......


0: kd>? dt LISTSUBITEM 0010b3d8
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109770? -> 0x34
?? +0x004 iImage?????????? : 0n696
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109770
00109770? 34 00 2e 00 74 00 78 00-74 00 00 00 00 00 00 00? 4...t.x.t.......


0: kd>? dt LISTSUBITEM 0010b380
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109758? -> 0x32
?? +0x004 iImage?????????? : 0n621
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109758
00109758? 32 00 2e 00 74 00 78 00-74 00 00 00 2a 97 2e 77? 2...t.x.t...*..w
00109768? 03 00 03 00 b8 01 0c 00-34 00 2e 00 74 00 78 00? ........4...t.x.


0: kd>? dt LISTSUBITEM 000d64b8
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109740? -> 0x31
?? +0x004 iImage?????????? : 0n546
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109740
00109740? 31 00 2e 00 74 00 78 00-74 00 00 00 00 00 00 00? 1...t.x.t.......
00109750? 03 00 03 00 bf 01 0c 00-32 00 2e 00 74 00 78 00? ........2...t.x.

0: kd>? dt LISTSUBITEM 0010bac0
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109728? -> 0x77
?? +0x004 iImage?????????? : 0n471
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109728
00109728? 77 00 6d 00 70 00 75 00-62 00 00 00 ac 87 2a 77? w.m.p.u.b.....*w
00109738? 03 00 03 00 b2 01 0c 00-31 00 2e 00 74 00 78 00? ........1...t.x.


0: kd>? dt LISTSUBITEM 0010ba68
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x000f4280? -> 0x57
?? +0x004 iImage?????????? : 0n396
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x000f4280
000f4280? 57 00 49 00 4e 00 44 00-4f 00 57 00 53 00 00 00? W.I.N.D.O.W.S...


0: kd>? dt LISTSUBITEM 0010ba10
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x0010b158? -> 0x74
?? +0x004 iImage?????????? : 0n321
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x0010b158
0010b158? 74 00 66 00 74 00 70 00-64 00 72 00 6f 00 6f 00? t.f.t.p.d.r.o.o.
0010b168? 74 00 00 00 00 00 00 00-b8 56 10 00 78 8d 10 00? t........V..x...


0: kd>? dt LISTSUBITEM 0010b2f0
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x001096e8? -> 0x53
?? +0x004 iImage?????????? : 0n246
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x001096e8
001096e8? 53 00 79 00 73 00 74 00-65 00 6d 00 20 00 56 00? S.y.s.t.e.m. .V.
001096f8? 6f 00 6c 00 75 00 6d 00-65 00 20 00 49 00 6e 00? o.l.u.m.e. .I.n.
00109708? 66 00 6f 00 72 00 6d 00-61 00 74 00 69 00 6f 00? f.o.r.m.a.t.i.o.
00109718? 6e 00 00 00 00 02 00 00-03 00 08 00 b1 01 0c 00? n...............


0: kd>? dt LISTSUBITEM 0010b850
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x00109b58? -> 0x52
?? +0x004 iImage?????????? : 0n171
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x00109b58
00109b58? 52 00 45 00 43 00 59 00-43 00 4c 00 45 00 52 00? R.E.C.Y.C.L.E.R.
00109b68? 00 00 00 00 00 00 00 00-08 00 04 00 3b 01 08 00? ............;...

0: kd>? dt LISTSUBITEM 0010b7f8
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x001056a0? -> 0x50
?? +0x004 iImage?????????? : 0n96
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE
0: kd> db 0x001056a0
001056a0? 50 00 72 00 6f 00 67 00-72 00 61 00 6d 00 20 00? P.r.o.g.r.a.m. .
001056b0? 46 00 69 00 6c 00 65 00-73 00 00 00 78 8d 10 00? F.i.l.e.s...x...

0: kd>? dt LISTSUBITEM 0010b590
comctl32!LISTSUBITEM
?? +0x000 pszText????????? : 0x0010b348? -> 0x44
?? +0x004 iImage?????????? : 0n21
?? +0x006 state??????????? : 0
?? +0x008 sizeText???????? : tagSIZE

0: kd> db 0x0010b348
0010b348? 44 00 6f 00 63 00 75 00-6d 00 65 00 6e 00 74 00? D.o.c.u.m.e.n.t.
0010b358? 73 00 20 00 61 00 6e 00-64 00 20 00 53 00 65 00? s. .a.n.d. .S.e.
0010b368? 74 00 74 00 69 00 6e 00-67 00 73 00 00 00 00 00? t.t.i.n.g.s.....

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71869.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71869.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71869.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【算法】大數據查重

大數據查重 哈希表 找出第一個出現重復的數字 || 找所有重復出現的數字 #include <iostream> #include <vector> #include <unordered_map> #include <unordered_set> #include <stdlib.h> #include <time.h> #include <string> …

模型微調-基于LLaMA-Factory進行微調的一個簡單案例

模型微調-基于LLaMA-Factory進行微調的一個簡單案例 1. 租用云計算資源2. 拉取 LLaMa-Factory3. 安裝依賴環境4. 啟動 LLaMa-Factory 界面5. 從 Huggingface 下載模型6. 模型驗證7. 模型微調 1. 租用云計算資源 以下示例基于 AutoDL 云計算資源。 在云計算平臺選擇可用的云計…

【單片機】ARM 處理器簡介

ARM 公司簡介 ARM&#xff08;Advanced RISC Machine&#xff09; 是英國 ARM 公司&#xff08;原 Acorn RISC Machine&#xff09; 開發的一種精簡指令集&#xff08;RISC&#xff09; 處理器架構。ARM 處理器因其低功耗、高性能、廣泛適用性&#xff0c;成為嵌入式系統、移動…

springboot的實體類字段校驗的分組校驗

分組校驗&#xff08;Group Validation&#xff09;允許在不同的場景下對同一個實體類應用不同的校驗規則。例如&#xff0c;在新增數據和更新數據時&#xff0c;可能需要對某些字段的校驗規則進行調整。以下是分組校驗的具體實現步驟&#xff1a; 一、定義分組接口 創建空的標…

vue3,Element Plus中隱藏樹el-tree滾動條

el-tree&#xff0c;節點過多&#xff0c;默認會出現垂直滾動條&#xff0c;顯得不美觀 可以使用隱藏組件 el-scrollbar 將 el-tree 包裹&#xff0c;就可以隱藏垂直滾動條 <el-scrollbar> <el-tree> ... </el-tree> </el-scrollbar> /* 滾動條禁用鼠…

mysql練習

創建數據庫db_ck&#xff0c;再創建表t_hero&#xff0c;將四大名著中的主要人物都插入這個表中&#xff0c;將實現過程中sql提交上上來 1、創建數據庫db_ck mysql> create database db_ck; 2、創建表t_hero mysql> use db_ck Database changed mysql> create table …

svn刪除所有隱藏.svn文件,文件夾脫離svn控制

新建一個文件&#xff0c;取名remove-svn-folders.reg&#xff0c;輸入如下內容&#xff1a; Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] "Delete SVN Folders" [HKEY_LOCAL_MACHINE\SOFTWARE\Class…

文心一言:中國大模型時代的破局者與探路者

2023年&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;的浪潮席卷全球&#xff0c;而百度推出的“文心一言”&#xff08;ERNIE Bot&#xff09;作為中國AI領域的代表性產品&#xff0c;迅速成為行業焦點。這款基于百度自主研發的“文心大模型”打造的對話式AI工具&am…

Ubuntu 安裝docker docker-compose

Docker 通過提供輕量級、可移植且高效的解決方案&#xff0c;簡化了軟件開發和部署。“docker build”命令是 Docker 鏡像創建過程的核心。本文將探討 Docker 構建命令、用法以及 Docker 構建的優化。 Docker 構建有什么作用&#xff1f; Docker build 是一個命令行界面 CLI命…

Unity開發——CanvasGroup組件介紹和應用

CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染順序的組件。 一、常用屬性的解釋 1、alpha&#xff1a;控制UI的透明度 類型&#xff1a;float&#xff0c;0.0 ~1.0&#xff0c; 其中 0.0 完全透明&#xff0c;1.0 完全不透明。 通過調整alpha值可以實現UI的淡入淡…

每天五分鐘深度學習PyTorch:向更深的卷積神經網絡挑戰的ResNet

本文重點 ResNet大名鼎鼎,它是由何愷明團隊設計的,它獲取了2015年ImageNet冠軍,它很好的解決了當神經網絡層數過多出現的難以訓練的問題,它創造性的設計了跳躍連接的方式,使得卷積神經網絡的層數出現了大幅度提升,設置可以達到上千層,可以說resnet對于網絡模型的設計具…

大模型巔峰對決:DeepSeek vs GPT-4/Claude/PaLM-2 全面對比與核心差異揭秘

文章目錄 一、架構設計深度解剖1.1 核心架構對比圖譜1.2 動態MoE架構實現架構差異分析表 二、訓練策略全面對比2.1 訓練數據工程對比2.2 分布式訓練代碼對比DeepSeek混合并行實現GPT-4 Megatron實現對比 2.3 關鍵訓練參數對比 三、性能表現多維評測3.1 基準測試全景對比3.2 推理…

基于hive的電信離線用戶的行為分析系統

標題:基于hive的電信離線用戶的行為分析系統 內容:1.摘要 隨著電信行業的快速發展&#xff0c;用戶行為數據呈現出海量、復雜的特點。為了深入了解用戶行為模式&#xff0c;提升電信服務質量和精準營銷能力&#xff0c;本研究旨在構建基于 Hive 的電信離線用戶行為分析系統。通…

Python使用alembic實現數據庫管理

python使用alembic實現數據庫管理 環境準備 安裝依賴&#xff1a; pip install sqlalchemy alembic項目結構 my_project/ ├── models.py # 定義數據模型 └── alembic/ # 遷移腳本目錄&#xff08;自動生成&#xff09; 使用步驟&#xff1a; 1. 初始化Alembic環境 …

對WebSocket做一點簡單的理解

1.概念 WebSocket 是基于 TCP 的一種新的網絡協議。它實現了瀏覽器與服務器全雙工通信——瀏覽器和服務器只需要完成一次握手&#xff0c;兩者之間就可以創建持久性的連接&#xff0c; 并進行雙向數據傳輸。 HTTP協議和WebSocket協議對比&#xff1a; HTTP是短連接 WebSocke…

kali虛擬機登錄頁面發癲 大寫鎖定輸入不了密碼

不知道怎么了 總是發癲 重啟切換太麻煩了 還有時候不成功 kali其實可以開啟虛擬鍵盤 如下 就解決的 發癲kali 發癲 發癲

基于Python的商品銷量的數據分析及推薦系統

一、研究背景及意義 1.1 研究背景 隨著電子商務的快速發展&#xff0c;商品銷售數據呈現爆炸式增長。這些數據中蘊含著消費者行為、市場趨勢、商品關聯等有價值的信息。然而&#xff0c;傳統的數據分析方法難以處理海量、多源的銷售數據&#xff0c;無法滿足現代電商的需求。…

內存泄漏出現的時機和原因,如何避免?

由于時間比較緊張我就不排版了&#xff0c;但是對于每一種可能的情況都會出對應的代碼示例以及解決方案代碼示例。 內存泄漏可能的原因之一在于用戶在動態分配一個內存空間之中&#xff0c;忘記將這部分內容手動釋放。例如&#xff1a;&#xff08;c之中使用new分配內存沒有使…

PDF處理控件Aspose.PDF,如何實現企業級PDF處理

PDF處理為何成為開發者的“隱形雷區”&#xff1f; “手動調整200頁PDF目錄耗時3天&#xff0c;掃描件文字識別錯誤導致數據混亂&#xff0c;跨平臺渲染格式崩壞引發客戶投訴……” 作為開發者&#xff0c;你是否也在為PDF處理的復雜細節消耗大量精力&#xff1f;Aspose.PDF憑…

工程化與框架系列(27)--前端音視頻處理

前端音視頻處理 &#x1f3a5; 引言 前端音視頻處理是現代Web應用中的重要組成部分&#xff0c;涉及音頻播放、視頻處理、流媒體傳輸等多個方面。本文將深入探討前端音視頻處理的關鍵技術和最佳實踐&#xff0c;幫助開發者構建高質量的多媒體應用。 音視頻技術概述 前端音視…