`
hunxiejun
  • 浏览: 1145911 次
文章分类
社区版块
存档分类
最新评论

Oracle KFED 和 KFOD 工具说明

 
阅读更多

OracleASM是个封装的磁盘管理工具,所以我们需要对ASM 有充分的认识,否则ASM 出现问题就会非常棘手,KFED 和KFOD 两个命令可以帮助我们了解ASM。

一. KFED(Kernel Files Editor) 说明

KFED是ORACLE 10gR2 自带的一个工具,但是和BBED 命令一样,需要编译过以后才能使用。

1.1 编译KFED

[oracle@rac2 lib]$cd $ORACLE_HOME/rdbms/lib

[oracle@rac2 lib]$ pwd

/u01/app/oracle/product/10.2.0/db_1/rdbms/lib

[oracle@rac2 lib]$ make -f ins_rdbms.mk ikfed

Linking KFED utility (kfed)

rm -f/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/kfed

gcc -o/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/kfed-L/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/-L/u01/app/oracle/product/10.2.0/db_1/lib/ -L/u01/app/oracle/product/10.2.0/db_1/lib/stubs/-L/usr/lib -lirc/u01/app/oracle/product/10.2.0/db_1/lib/s0main.o/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/sskfeded.o/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/skfedpt.o/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/defopt.o -ldbtools10-lclntsh `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10-lvsn10 -lcommon10 -lgeneric10 -lmm -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10-lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lnro10 `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10-lvsn10 -lcommon10 -lgeneric10-lsnls10 -lnls10 -lcore10-lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10-lnls10 -lcore10 -lnls10 -lclient10 -lnnetd10-lvsn10 -lcommon10 -lgeneric10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10-lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat/u01/app/oracle/product/10.2.0/db_1/lib/sysliblist`-Wl,-rpath,/u01/app/oracle/product/10.2.0/db_1/lib -lm `cat /u01/app/oracle/product/10.2.0/db_1/lib/sysliblist`-ldl -lm -L/u01/app/oracle/product/10.2.0/db_1/lib

mv -f/u01/app/oracle/product/10.2.0/db_1/bin/kfed/u01/app/oracle/product/10.2.0/db_1/bin/kfedO

mv: cannot stat`/u01/app/oracle/product/10.2.0/db_1/bin/kfed': No such file or directory

make: [ikfed] Error 1 (ignored)

mv /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/kfed/u01/app/oracle/product/10.2.0/db_1/bin/kfed

chmod 751/u01/app/oracle/product/10.2.0/db_1/bin/kfed

[oracle@rac2 lib]$

--查看KFED 位置

[oracle@rac2 lib]$ which kfed

/u01/app/oracle/product/10.2.0/db_1/bin/kfed

1.2 KFED 命令使用

--查看KFED 帮助

[oracle@rac2 lib]$ kfed -h

as/mlib ASM Library [asmlib='lib']

aun/um AU number to examine or update[AUNUM=number]

aus/z Allocation Unit size in bytes[AUSZ=number]

blkn/um Block number to examine or update[BLKNUM=number]

blks/z Metadata block size in bytes[BLKSZ=number]

ch/ksum Update checksum before each write[CHKSUM=YES/NO]

cn/t Count of AUs to process[CNT=number]

d/ev ASM device to examine or update[DEV=string]

o/p KFED operation type [OP=READ/WRITE/MERGE/NEW/FORM/FIND/STRUCT]

p/rovnm Name for provisioning purposes[PROVNM=string]

s/eek AU number to seek to [SEEK=number]

te/xt File name for translated block text[TEXT=string]

ty/pe ASM metadata block type number[TYPE=number]

--查看ASM磁盘组的情况

SYS@anqing2(rac2)> select group_number,disk_number,mount_status,header_status,state,name,path fromv$asm_disk;

group_number disk_number mount_sheader_statu state name path

------------ ----------- ------------------- -------- ---------- --------------------

1 0OPENED UNKNOWN NORMALDATA /dev/mapper/datap1

2 0OPENED UNKNOWN NORMAL FRA_0000/dev/mapper/frap1

SYS@anqing2(rac2)> selectdg.group_number "g.no",dg.name,d.disk_number,d.mount_status,

2d.header_status,dg.type,d.name,d.path from v$asm_disk d,v$asm_diskgroupdg

3where dg.group_number=d.group_number;

g.no NAME DISK_NUMBER MOUNT_S HEADER_STATUTYPE NAME PATH

---------- --------------------- ------- ------------ ------ ---------- ---------------------------

1 DATA 0 OPENED UNKNOWNEXTERN DATA/dev/mapper/datap1

2 FRA 0 OPENED UNKNOWNEXTERN FRA_0000/dev/mapper/frap1

--从系统层面上查看

[oracle@rac2 ~]$ /etc/init.d/oracleasm listdisks

DATA

FRA

[oracle@rac2 ~]$ ls -lrt /dev/oracleasm/disks/*

brw-rw---- 1 oracle dba 8, 49 Aug 7 07:32 /dev/oracleasm/disks/FRA

brw-rw---- 1 oracle dba 8, 65 Aug 7 07:32 /dev/oracleasm/disks/DATA

--使用KFED查看ASM磁盘组

[oracle@rac2 ~]$ kfed read /dev/mapper/datap1 text=datap1.txt

[oracle@rac2 ~]$ ls

datap1.txtDesktop oradiag_oracle

[oracle@rac2 ~]$ cat datap1.txt

...

kfed 命令可以加text或者不加,如果使用text 参数,那么kfed 读取的内容会保存到text 指定的文档,如果不使用就直接输入到屏幕。

[oracle@rac2 ~]$ kfed read /dev/mapper/datap1

kfbh.endian: 1 ; 0x000: 0x01

kfbh.hard: 130 ; 0x001: 0x82

kfbh.type: 1 ; 0x002:KFBTYP_DISKHEAD

kfbh.datfmt: 1 ; 0x003: 0x01

kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0

kfbh.block.obj: 2147483648 ; 0x008: TYPE=0x8NUMB=0x0

kfbh.check: 1508168608 ; 0x00c:0x59e4d3a0

kfbh.fcn.base: 0 ; 0x010: 0x00000000

kfbh.fcn.wrap: 0 ; 0x014: 0x00000000

kfbh.spare1: 0 ; 0x018: 0x00000000

kfbh.spare2: 0 ; 0x01c: 0x00000000

kfdhdb.driver.provstr: ORCLDISKDATA ; 0x000: length=12

-->磁盘卷名

kfdhdb.driver.reserved[0]: 1096040772 ; 0x008: 0x41544144

kfdhdb.driver.reserved[1]: 0 ; 0x00c: 0x00000000

kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000

kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000

kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000

kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000

kfdhdb.compat: 168820736 ; 0x020: 0x0a100000

kfdhdb.dsknum: 0 ; 0x024: 0x0000

kfdhdb.grptyp: 1 ; 0x026:KFDGTP_EXTERNAL

--> This indicatesRedundancy for Group.Check TYPE in query output.

kfdhdb.hdrsts: 3 ; 0x027:KFDHDR_MEMBER

--> This indicatesDisk Header status. Here it indicates it is member of Group.

kfdhdb.dskname: DATA ; 0x028: length=4

--> This indicatesDisk Name

kfdhdb.grpname: DATA ; 0x048: length=4

--> This indicates theGroup Name for the disk.

kfdhdb.fgname: DATA ; 0x068: length=4

--> This indicates theFailure Group Name.

kfdhdb.capname: ; 0x088: length=0

kfdhdb.crestmp.hi: 32952076 ; 0x0a8: HOUR=0xcDAYS=0x18 MNTH=0x3 YEAR=0x7db

kfdhdb.crestmp.lo: 3374491648 ; 0x0ac: USEC=0x0MSEC=0xaa SECS=0x12 MINS=0x32

kfdhdb.mntstmp.hi: 32955120 ; 0x0b0: HOUR=0x10DAYS=0x17 MNTH=0x6 YEAR=0x7db

kfdhdb.mntstmp.lo: 3440417792 ; 0x0b4: USEC=0x0MSEC=0x27 SECS=0x11 MINS=0x33

kfdhdb.secsize: 512 ; 0x0b8: 0x0200

kfdhdb.blksize: 4096 ; 0x0ba: 0x1000

kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000

kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80

kfdhdb.dsksize: 11993 ; 0x0c4: 0x00002ed9

kfdhdb.pmcnt: 2 ; 0x0c8: 0x00000002

kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001

kfdhdb.altlocn: 2 ; 0x0d0: 0x00000002

kfdhdb.f1b1locn: 2 ; 0x0d4: 0x00000002

kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0x0000

kfdhdb.redomirrors[1]: 0 ; 0x0da: 0x0000

kfdhdb.redomirrors[2]: 0 ; 0x0dc: 0x0000

kfdhdb.redomirrors[3]: 0 ; 0x0de: 0x0000

kfdhdb.dbcompat: 168820736 ; 0x0e0: 0x0a100000

kfdhdb.grpstmp.hi: 32952076 ; 0x0e4: HOUR=0xcDAYS=0x18 MNTH=0x3 YEAR=0x7db

kfdhdb.grpstmp.lo: 3374396416 ; 0x0e8: USEC=0x0MSEC=0x4d SECS=0x12 MINS=0x32

kfdhdb.ub4spare[0]: 0 ; 0x0ec: 0x00000000

kfdhdb.ub4spare[1]: 0 ; 0x0f0: 0x00000000

kfdhdb.ub4spare[2]: 0 ; 0x0f4: 0x00000000

kfdhdb.ub4spare[3]: 0 ; 0x0f8: 0x00000000

kfdhdb.ub4spare[4]: 0 ; 0x0fc: 0x00000000

kfdhdb.ub4spare[5]: 0 ; 0x100: 0x00000000

kfdhdb.ub4spare[6]: 0 ; 0x104: 0x00000000

kfdhdb.ub4spare[7]: 0 ; 0x108: 0x00000000

kfdhdb.ub4spare[8]: 0 ; 0x10c: 0x00000000

kfdhdb.ub4spare[9]: 0 ; 0x110: 0x00000000

kfdhdb.ub4spare[10]: 0 ; 0x114: 0x00000000

kfdhdb.ub4spare[11]: 0 ; 0x118: 0x00000000

kfdhdb.ub4spare[12]: 0 ; 0x11c: 0x00000000

kfdhdb.ub4spare[13]: 0 ; 0x120: 0x00000000

kfdhdb.ub4spare[14]: 0 ; 0x124: 0x00000000

kfdhdb.ub4spare[15]: 0 ; 0x128: 0x00000000

kfdhdb.ub4spare[16]: 0 ; 0x12c: 0x00000000

kfdhdb.ub4spare[17]: 0 ; 0x130: 0x00000000

kfdhdb.ub4spare[18]: 0 ; 0x134: 0x00000000

kfdhdb.ub4spare[19]: 0 ; 0x138: 0x00000000

kfdhdb.ub4spare[20]: 0 ; 0x13c: 0x00000000

kfdhdb.ub4spare[21]: 0 ; 0x140: 0x00000000

kfdhdb.ub4spare[22]: 0 ; 0x144: 0x00000000

kfdhdb.ub4spare[23]: 0 ; 0x148: 0x00000000

kfdhdb.ub4spare[24]: 0 ; 0x14c: 0x00000000

kfdhdb.ub4spare[25]: 0 ; 0x150: 0x00000000

kfdhdb.ub4spare[26]: 0 ; 0x154: 0x00000000

kfdhdb.ub4spare[27]: 0 ; 0x158: 0x00000000

kfdhdb.ub4spare[28]: 0 ; 0x15c: 0x00000000

kfdhdb.ub4spare[29]: 0 ; 0x160: 0x00000000

kfdhdb.ub4spare[30]: 0 ; 0x164: 0x00000000

kfdhdb.ub4spare[31]: 0 ; 0x168: 0x00000000

kfdhdb.ub4spare[32]: 0 ; 0x16c: 0x00000000

kfdhdb.ub4spare[33]: 0 ; 0x170: 0x00000000

kfdhdb.ub4spare[34]: 0 ; 0x174: 0x00000000

kfdhdb.ub4spare[35]: 0 ; 0x178: 0x00000000

kfdhdb.ub4spare[36]: 0 ; 0x17c: 0x00000000

kfdhdb.ub4spare[37]: 0 ; 0x180: 0x00000000

kfdhdb.ub4spare[38]: 0 ; 0x184: 0x00000000

kfdhdb.ub4spare[39]: 0 ; 0x188: 0x00000000

kfdhdb.ub4spare[40]: 0 ; 0x18c: 0x00000000

kfdhdb.ub4spare[41]: 0 ; 0x190: 0x00000000

kfdhdb.ub4spare[42]: 0 ; 0x194: 0x00000000

kfdhdb.ub4spare[43]: 0 ; 0x198: 0x00000000

kfdhdb.ub4spare[44]: 0 ; 0x19c: 0x00000000

kfdhdb.ub4spare[45]: 0 ; 0x1a0: 0x00000000

kfdhdb.ub4spare[46]: 0 ; 0x1a4: 0x00000000

kfdhdb.ub4spare[47]: 0 ; 0x1a8: 0x00000000

kfdhdb.ub4spare[48]: 0 ; 0x1ac: 0x00000000

kfdhdb.ub4spare[49]: 0 ; 0x1b0: 0x00000000

kfdhdb.ub4spare[50]: 0 ; 0x1b4: 0x00000000

kfdhdb.ub4spare[51]: 0 ; 0x1b8: 0x00000000

kfdhdb.ub4spare[52]: 0 ; 0x1bc: 0x00000000

kfdhdb.ub4spare[53]: 0 ; 0x1c0: 0x00000000

kfdhdb.ub4spare[54]: 0 ; 0x1c4: 0x00000000

kfdhdb.ub4spare[55]: 0 ; 0x1c8: 0x00000000

kfdhdb.ub4spare[56]: 0 ; 0x1cc: 0x00000000

kfdhdb.ub4spare[57]: 0 ; 0x1d0: 0x00000000

kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0x00000000

kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0x00000000

kfdhdb.acdb.ents: 0 ; 0x1dc: 0x0000

kfdhdb.acdb.ub2spare: 0 ; 0x1de: 0x0000

1.3 ASM 磁盘里的一些名词解释

(1)kfbh.endian

kf3.h/*endianness of writer */

Littleendian = 1

Bigendian = 0

(2)kfbh.hard

kf3.h/*H.A.R.D. magic # and block size */

(3)kfbh.type

kf3.h/*metadata blocktype*/

(4)kfbh.datfmt

kf3.h/*metadata blockdataformat*/

(5)kfbh.block

kf3.h/* blocklocation of thisblock*/

blk -- Diskheader should have T=0 and NUMB=0x0

obj -- Diskheader should have TYPE=0x8 NUMB=<disknumber>

blk and obj values arederived from a series of macros in kf3.h.See

"KFBL Macros"in kf3.h for more information.

(6)kfbh.check

kf3.h/* checkvalue to verify consistency */

(7)kfbh.fcn

kf3.h/*change number of last change*/-

(8)kfdhdb.driver

kf3.h/*OSMLIB driver reserved block*/

If nodriver is defined "ORCLDISK" is used.

(9)kfdhdb.compat

kf3.h/*Comaptible software version*/

example:0x0a100000

Youget:

a=101=1 so 10.1.0.0.0

(10)kfdhdb.dsknum

kf3.h/* OSMdisknumber*

This is thedisk number.The first disk being "0".There can be up to

ub2 disks ina diskgroup.This allows for 65336 disks 0 through 65335.

(11)kfdhdb.grptyp

kf3.h/* Diskgrouptype*/

(12)kfdhdb.hdrsts

kf3.h/* Diskheaderstatus*/

This is whatis used to determine if a disk is available or not to

thediskgroup.0x03 is the correct value for a valid status.

(13)kfdhdb.dskname/*OSMdisk name*/

(14)kfdhdb.grpname/*OSM disk group name */

(15)kfdhdb.fgname/*Failure group name*/

(16)kfdhdb.capname/*Capacity grp, unused*/

(17)kfdhdb.crestmp/*Creationtimestamp*/

(18)kfdhdb.mntstmp/*Mounttimestamp*/

kf3.hTo derive the hi and low time`from an unformated dump use the

"KFTS Macros" inkf3.h.

(19)kfdhdb.secsize

kf3.h/* Disksector size (bytes)*/

This is thephysical sector size of the disk in bytes. All I/O's to the

disk aredescribed in physical sectors. This must be a power of 2. An

ideal valuewould be 4096, but most disks are formatted with 512 byte

sectors.(from asmlib.h)

(20)kfdhdb.blksize

kf3.h/*Metadata block (bytes)*/

(21)kfdhdb.ausize

kf3.h/*Allocation Unit (bytes)*/

(22)kfdhdb.mfact

kf3.h/*Stride between phys addr AUs*/

(23)kfdhdb.dsksize

kf3.h/* Disksize inAUs*/

Mulitply byAUs to get actual size of disk when added.

(24)kfdhdb.pmcnt

kf3.h/*Permanent phys addressed AUs*/

Number ofphysically addressed allocation units.

(25)kfdhdb.fstlocn

kf3.h/* FirstFreeSpace table blk num */

Used to findfreespace.

(26)kfdhdb.altlocn

kf3.h/* FirstAlocation table blk num */

Used to findalocated space.

(27)kfdhdb.f1b1locn

kf3.h/* FileDirectory blk 1 AU num*/

Beginging forfile directory.

1.4 一个损坏了的disk的KFED 结果

kfbh.endian: 83 ; 0×000: 0×53
kfbh.hard: 0 ; 0×001: 0×00
kfbh.type: 0 ; 0×002: KFBTYP_INVALID
kfbh.datfmt: 0 ; 0×003: 0×00
kfbh.block.blk: 4294967293 ; 0×004: T=1 NUMB=0x7ffffffd
kfbh.block.obj: 65286 ; 0×008: TYPE=0×0 NUMB=0xff06
kfbh.check: 144 ; 0x00c: 0×00000090
kfbh.fcn.base: 136903976 ; 0×010: 0x0828fd28
kfbh.fcn.wrap: 4294953840 ; 0×014: 0xffffcb70
kfbh.spare1: 136905029 ; 0×018: 0×08290145
kfbh.spare2: 30000 ; 0x01c: 0×00007530

二.KFOD ( OSM Discovery utility)说明

这里的OSM是:Order and Service Management,KFOD 命令可以在系统级别对来查找ASM。也可以用来监控ASM.

2.1 KFOD的帮助

[oracle@rac2 ~]$ kfod -h

_asm_a/llow_only_raw_disks KFOD allow only raw devices[_asm_allow_only_raw_disks=TRUE/(FALSE)]

_asm_l/ibraries ASMLibraries[_asm_libraries='lib1','lib2',...]

_asms/id ASM Instance[_asmsid=sid]

a/sm_diskstring ASM Diskstring[asm_diskstring='discoverystring', 'discoverystring' ...]

d/isks Disks to discover [disks=raw,asm,all]

g/roup Group discover [group=controlfile]

n/ohdr KFOD header suppression[nohdr=TRUE/(FALSE)]

o/p KFOD options type[OP=DISKS/GROUPS/ALL]

p/file ASM parameter file[pfile='parameterfile']

s/tatus Include disk header status[status=TRUE/(FALSE)]

v/erbose KFOD verbose errors[verbose=TRUE/(FALSE)]

2.2 KFOD 示例

[oracle@rac2 ~]$kfod

--------------------------------------------------------------------------------

ORACLE_SID ORACLE_HOME

================================================================================

+ASM2 /u01/app/oracle/product/10.2.0/db_1

+ASM1 /u01/app/oracle/product/10.2.0/db_1

[oracle@rac2 ~]$ kfod disk=all

--------------------------------------------------------------------------------

DiskSize Path

================================================================================

1: 101 Mb /dev/raw/raw1

2: 101 Mb /dev/raw/raw2

3: 101 Mb /dev/raw/raw3

4: 101 Mb /dev/raw/raw4

5: 101 Mb /dev/raw/raw5

6: 101 Mb /dev/raw/raw6

7: 101 Mb /dev/raw/raw7

8: 101 Mb /dev/raw/raw8

--------------------------------------------------------------------------------

ORACLE_SID ORACLE_HOME

================================================================================

+ASM2 /u01/app/oracle/product/10.2.0/db_1

+ASM1 /u01/app/oracle/product/10.2.0/db_1

[oracle@rac2 ~]$ kfod op=disks

--------------------------------------------------------------------------------

DiskSize Path

================================================================================

1: 101 Mb /dev/raw/raw3

2: 101 Mb /dev/raw/raw4

3: 101 Mb /dev/raw/raw8

这篇就简单的介绍一下这2个命令, 在下篇ASM disk header 的备份与恢复中在详细的看一下这2个命令的使用。

-------------------------------------------------------------------------------------------------------

Blog: http://blog.csdn.net/tianlesoftware

Weibo: http://weibo.com/tianlesoftware

Email: dvd.dba@gmail.com

DBA1 群:62697716(满); DBA2 群:62697977(满)DBA3 群:62697850(满)

DBA 超级群:63306533(满); DBA4 群: 83829929(满)DBA5群: 142216823(满)

DBA6 群:158654907(满) 聊天 群:40132017(满) 聊天2群:69087192(满)

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

分享到:
评论

相关推荐

    32位 oracle_product_instantclient_11_2_BIN.rar

    32位oracle11.2.0.1 BIN文件夹,数据库管理员版,包含sqlplus,imp,exp,impdp,expdp等完整工具。exe列表:adrci、agtctl、amdu、asmtool、asmtoolg、CreatDep、csscan、dbv、dg4odbc、dg4pwd、dgmgrl、diskmon、...

    Android开发BLE 串口调试工具,用来和底层进行一些握手协议的调试

    【Android】开发BLE 串口调试工具,用来和底层进行一些握手协议的调试。

    机械设计自动锁垫片机(sw18可编辑+工程图+BOM)非常好的设计图纸100%好用.zip

    机械设计自动锁垫片机(sw18可编辑+工程图+BOM)非常好的设计图纸100%好用.zip

    基于Mediapipe的手势识别前端应用可执行程序+说明.zip

    基于Mediapipe的手势识别前端应用可执行程序+说明.zip # 项目简介 * 基于AutoHotkey制作的摄像头手势识别软件。能让你的电脑摄像头在识别手势后,执行自定义的电脑操作命令。同时也集成了语音识别功能,可调用Windows自带API实现简单的语音助手功能。 * 手势识别调用了高性能的Mediapipe动态链接库来免部署实现。而电脑自动化操作使用AutoHotkey脚本语言来实现,它能更方便的对电脑进行深度调用和流程自动化处理。 # 使用介绍 * 测试环境:Win10 64位(专业版完整镜像) * **第一次运行 Visual_Gesture_Recognition.exe**时,会提示下载手势识别的**依赖包**。点击**确定**后,跟着提示**点击自动下载**

    node-v4.8.0.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    python烟花代码.zip

    python烟花代码python烟花代码.zip python烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zip

    如何提高APP商业变现能力.docx

    如何提高APP商业变现能力.docx

    node-v12.19.1-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    数据分析:揭示数据背后的智慧与力量

    在数字化时代,数据已成为一种宝贵的资源,而数据分析则是解锁这一资源的关键。数据分析是指运用适当的统计分析和数据挖掘方法,对收集来的大量数据进行详细的研究和概括总结,以最大化地开发数据的功能,发挥数据的作用。 数据分析的过程涉及数据的收集、整理、转化、建模和解释等多个环节。通过对比分析法、分组分析法、结构分析法等多种方法,我们能够深入挖掘数据中的隐藏信息和内在规律,为企业决策、市场研究、科学研究等领域提供有力的支持。 数据分析在现代社会中的应用越来越广泛。例如,在市场调研中,通过对消费者需求、竞争品牌分布等数据的分析,企业可以了解市场潜力、竞争优势和定位策略,从而制定有效的市场推广策略。在社交媒体数据分析中,企业可以通过分析用户的关注人群、点赞、转发等行为,揭示用户的兴趣爱好、消费倾向和口碑传播效果,从而制定有针对性的营销策略。 数据分析工具和技术的发展也极大地推动了数据分析的普及和应用。如R语言和Python语言等编程工具,以及SAS等商业化的数据分析软件,都为数据分析提供了强大的支持。这些工具不仅具有丰富的统计函数和图表绘制能力,还具有高度的灵活性和可扩展性,可以满足各种要求

    水和废水处理化学品的选择和使用指南

    水和废水处理化学品的选择和使用指南

    python输出虚拟棋盘代码示例

    在Python中,可以使用多种方法来创建一个虚拟棋盘。下面是一个简单的示例,使用字符串和循环来创建一个8x8的国际象棋棋盘。 这段代码定义了一个函数print_chessboard,它首先定义了棋盘的一半,然后通过循环来构建整个棋盘。棋盘的每个格子用空格分隔,并且棋盘的行号用数字表示。棋盘的黑白格子使用字符串white和black来表示,其中white表示白格子,而black表示黑格子。 运行这段代码,你会在控制台看到一个8x8的棋盘,其中棋盘的行号从1到8,列号从A到H,棋盘的黑白格子交替出现。 请注意,这个棋盘是虚拟的,仅用于展示布局,并没有实现任何棋盘游戏的逻辑。如果你需要实现一个可以进行游戏的棋盘,你需要添加更多的代码来处理棋子的移动和游戏规则。

    基于modbus协议的大屏数据监控,使用modbus slave模拟数据,串口服务器获取温湿度

    系统使用了Modbus协议完成数据的获取工作,通过Mqtt协议与后端进行连接,获取了数据,完成了数据采集工作。后端通过对数据的处理,进行了数据存储,和接口api的处理。通过WebSocket协议来推送数据。前端展示请求的后端数据。通过此流程完成了工业暖通空调系统的开发。

    机械设计大倾角波状挡边带式输送机sw17可编辑非常好的设计图纸100%好用.zip

    机械设计大倾角波状挡边带式输送机sw17可编辑非常好的设计图纸100%好用.zip

    常见移动变现术语(mobile monetization).docx

    常见移动变现术语(mobile monetization).docx

    R语言绘制SCI科研小提琴图源代码.zip

    把input里面的数据替换成自己的数据,打开R,点Run,可以直接出图!文件适合有R语言基础的同学。

    福克斯初级和猎犬初级电线追踪工具包使用说明书

    福克斯初级和猎犬初级电线追踪工具包使用说明书

    数据库实验报告 SJK完整性语言

    数据库实验报告 SJK完整性语言

    PDU8000 ATS配电箱-T 快速指南

    PDU8000 ATS配电箱-T 快速指南

    串口通过 YMODEM 协议进行文件传输

    串口协议 串口通过 YMODEM 协议进行文件传输 开发环境 框架:Qt 5.7.1 编译器:MSVC2015_64bit IDE:Qt Creator 4.2.0 社区版 操作系统:Windows 10 专业版

    springboot(题库管理系统)

    开发语言:Java JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.6/5.7(或8.0) 数据库工具:Navicat 开发软件:idea 依赖管理包:Maven 代码+数据库保证完整可用,可提供远程调试并指导运行服务(额外付费)~ 如果对系统的中的某些部分感到不合适可提供修改服务,比如题目、界面、功能等等... 声明: 1.项目已经调试过,完美运行 2.需要远程帮忙部署项目,需要额外付费 3.本项目有演示视频,如果需要观看,请联系我 4.调试过程中可帮忙安装IDEA,eclipse,MySQL,JDK,Tomcat等软件 重点: 需要其他Java源码联系我,更多源码任你选,你想要的源码我都有! https://img-blog.csdnimg.cn/direct/e73dc0ac8d27434b86d886db5a438c71.jpeg

Global site tag (gtag.js) - Google Analytics