国密起步5:GmSSL3交叉编译arm64

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


        之前已经建立好了交叉编译环境,并且已经完成本地编译GmSSL。这里仅仅是交叉编译GmSSL。

一、源码

        官网下载最近版,应该是3.X,上传到交叉编译环境(Ubuntu 18)。

二、启动交叉编译环境

        我的命令是这个:

source environment-setup-aarch64-unisoc-linux

三、cmake

        因为之前已经本地编译过GmSSL,所以cmake已经可用。无需cmake的交叉编译版本,直接cmake即可:

mkdir build
cd build
cmake ..

        输出如下:

user@vm-ubuntu:~/arm64/GmSSL/build$ cmake ..
-- The C compiler identification is GNU 7.2.1
-- Check for working C compiler: /opt/unisoc-initgc/udx710-module+unisoc-initgc-1.0+20201024+userdebug+native/sysroots/x86_64-unisocsdk-linux/usr/bin/aarch64-unisoc-linux/aarch64-unisoc-linux-gcc
-- Check for working C compiler: /opt/unisoc-initgc/udx710-module+unisoc-initgc-1.0+20201024+userdebug+native/sysroots/x86_64-unisocsdk-linux/usr/bin/aarch64-unisoc-linux/aarch64-unisoc-linux-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- ENABLE_ASM_UNDERSCORE_PREFIX is ON
-- ENABLE_SM4_ECB is ON
-- ENABLE_SM4_OFB is ON
-- ENABLE_SM4_CFB is ON
-- ENABLE_SM4_CCM is ON
-- ENABLE_SM4_XTS is ON
-- ENABLE_SM3_XMSS is ON
-- ENABLE_SHA1 is ON
-- ENABLE_SHA2 is ON
-- ENABLE_AES is ON
-- ENABLE_CHACHA20 is ON
-- ENABLE_SM4_CBC_MAC is ON
-- Looking for getentropy
-- Looking for getentropy - found
-- have getentropy
-- ENABLE_SDF is ON
-- Detected Linux, configuring /etc/ld.so.conf.d/gmssl.conf
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/arm64/GmSSL/build

        注意C编译器已经是交叉编译版本。

四、make

        执行make会顺利完成:

[ 98%] Building C object CMakeFiles/sm2_keytest.dir/tests/sm2_keytest.c.o
[ 98%] Linking C executable bin/sm2_keytest
[ 98%] Built target sm2_keytest
Scanning dependencies of target x509_crltest
[ 99%] Building C object CMakeFiles/x509_crltest.dir/tests/x509_crltest.c.o
[ 99%] Linking C executable bin/x509_crltest
[ 99%] Built target x509_crltest
Scanning dependencies of target tls13test
[ 99%] Building C object CMakeFiles/tls13test.dir/tests/tls13test.c.o
[100%] Linking C executable bin/tls13test
[100%] Built target tls13test

五、不要install,检查输出

        不需要执行install,需要的东西都在bin下面:

user@vm-ubuntu:~/arm64/GmSSL/build/bin$ ls -l
total 5752
-rwxrwxr-x 1 user user   36000 Aug 28 08:48 aestest
-rwxrwxr-x 1 user user   64376 Aug 28 08:48 asn1test
-rwxrwxr-x 1 user user   27488 Aug 28 08:48 base64test
-rwxrwxr-x 1 user user   20248 Aug 28 08:48 block_ciphertest
-rwxrwxr-x 1 user user   21592 Aug 28 08:48 chacha20test
-rwxrwxr-x 1 user user   68048 Aug 28 08:48 cmstest
-rwxrwxr-x 1 user user   22896 Aug 28 08:48 digesttest
-rwxrwxr-x 1 user user   32840 Aug 28 08:48 ectest
-rwxrwxr-x 1 user user   29304 Aug 28 08:48 gf128test
-rwxrwxr-x 1 user user   27576 Aug 28 08:48 ghashtest
-rwxrwxr-x 1 user user  884984 Aug 28 08:48 gmssl
-rwxrwxr-x 1 user user   20216 Aug 28 08:48 hextest
-rwxrwxr-x 1 user user   36112 Aug 28 08:48 hkdftest
-rwxrwxr-x 1 user user   29416 Aug 28 08:48 hmactest
lrwxrwxrwx 1 user user      13 Aug 28 08:48 libgmssl.so -> libgmssl.so.3
lrwxrwxrwx 1 user user      15 Aug 28 08:48 libgmssl.so.3 -> libgmssl.so.3.1
-rwxrwxr-x 1 user user 3242152 Aug 28 08:48 libgmssl.so.3.1
-rwxrwxr-x 1 user user   31704 Aug 28 08:48 pemtest
-rwxrwxr-x 1 user user   28304 Aug 28 08:48 pkcs8test
-rwxrwxr-x 1 user user   22656 Aug 28 08:48 sha1test
-rwxrwxr-x 1 user user   27096 Aug 28 08:48 sha224test
-rwxrwxr-x 1 user user   27096 Aug 28 08:48 sha256test
-rwxrwxr-x 1 user user   26880 Aug 28 08:48 sha384test
-rwxrwxr-x 1 user user   26904 Aug 28 08:48 sha512test
-rwxrwxr-x 1 user user   32752 Aug 28 08:48 sm2_enctest
-rwxrwxr-x 1 user user   31736 Aug 28 08:48 sm2_keytest
-rwxrwxr-x 1 user user   39144 Aug 28 08:48 sm2_signtest
-rwxrwxr-x 1 user user   59664 Aug 28 08:48 sm2_z256test
-rwxrwxr-x 1 user user   31496 Aug 28 08:48 sm3test
-rwxrwxr-x 1 user user   23640 Aug 28 08:48 sm4_cbc_mactest
-rwxrwxr-x 1 user user   38448 Aug 28 08:48 sm4_cbctest
-rwxrwxr-x 1 user user   30888 Aug 28 08:48 sm4_ccmtest
-rwxrwxr-x 1 user user   33312 Aug 28 08:48 sm4_cfbtest
-rwxrwxr-x 1 user user   40280 Aug 28 08:48 sm4_ctrtest
-rwxrwxr-x 1 user user   30408 Aug 28 08:48 sm4_ecbtest
-rwxrwxr-x 1 user user   35848 Aug 28 08:48 sm4_gcmtest
-rwxrwxr-x 1 user user   32192 Aug 28 08:48 sm4_ofbtest
-rwxrwxr-x 1 user user   36576 Aug 28 08:48 sm4_sm3_hmactest
-rwxrwxr-x 1 user user   28352 Aug 28 08:48 sm4test
-rwxrwxr-x 1 user user   29880 Aug 28 08:48 sm4_xtstest
-rwxrwxr-x 1 user user   88160 Aug 28 08:48 sm9test
-rwxrwxr-x 1 user user   28672 Aug 28 08:48 tls13test
-rwxrwxr-x 1 user user   44888 Aug 28 08:48 tlstest
-rwxrwxr-x 1 user user   31744 Aug 28 08:48 x509_algtest
-rwxrwxr-x 1 user user   48432 Aug 28 08:48 x509_crltest
-rwxrwxr-x 1 user user   70288 Aug 28 08:48 x509_exttest
-rwxrwxr-x 1 user user   41032 Aug 28 08:48 x509_oidtest
-rwxrwxr-x 1 user user   34640 Aug 28 08:48 x509_reqtest
-rwxrwxr-x 1 user user   28536 Aug 28 08:48 x509_strtest
-rwxrwxr-x 1 user user   48800 Aug 28 08:48 x509test
-rwxrwxr-x 1 user user   38520 Aug 28 08:48 zuctest

        可以试一下make test,不出意外,全部都是失败(因为格式不对根本无法运行)。

        执行file *看看文件格式:

user@vm-ubuntu:~/arm64/GmSSL/build/bin$ file *
aestest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=fc96f4a8d6a284c1687f7d1806819f357ac93ca6, with debug_info, not stripped
asn1test:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=4bedc805b44a1124a70aa5e13bb8b3b6c295b643, with debug_info, not stripped
base64test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=5c45f3d32e8c4b52d521f6ee091af042fd457fdf, with debug_info, not stripped
block_ciphertest: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=7a4852bc99b528a82a3eeb12b19b34e88cd121d0, with debug_info, not stripped
chacha20test:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=2d2994ee9497c7b2ab3208c7329861946cded845, with debug_info, not stripped
cmstest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=75c77ade163dc0a4ec66b0e0b0771e66caa18eb0, with debug_info, not stripped
digesttest:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=46f9df696214b9cfd41e73027e7031d8aa56c224, with debug_info, not stripped
ectest:           ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=b223db93d1e6e8244e5ad05c8ab2b009a2c6a0eb, with debug_info, not stripped
gf128test:        ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=d059d62e624e2cc84dad1b47dccb1dcf5417683d, with debug_info, not stripped
ghashtest:        ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=fe079002472a4d4b2cb263708c77fe04620aa5a9, with debug_info, not stripped
gmssl:            ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=8ca8ef42860cb011088f39c3cfada2c957b785da, with debug_info, not stripped
hextest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=571cbe3dd7353c7837c30dd90300d5b2d67f418a, with debug_info, not stripped
hkdftest:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=618fdf94e341921df437059a1babdd9f58d32c23, with debug_info, not stripped
hmactest:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=f16abfbab4fd99db3b5dacf514fd85d1b44086d4, with debug_info, not stripped
libgmssl.so:      symbolic link to libgmssl.so.3
libgmssl.so.3:    symbolic link to libgmssl.so.3.1
libgmssl.so.3.1:  ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=60e001e423da7002ea1de01c8df5c87315eae5f6, with debug_info, not stripped
pemtest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=60e510012b03adc49449e7f5466fc545aa995b2c, with debug_info, not stripped
pkcs8test:        ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=ca6fcbfeb223678dec67ce06de7906fd52aca286, with debug_info, not stripped
sha1test:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=cef1160c01b54f196fc311016921af4bef62a545, with debug_info, not stripped
sha224test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=5a369baac9ac5193ec8b0cc8843eca113d44d3c0, with debug_info, not stripped
sha256test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=f1136d4989677f6717bab82e502d1f47b94be0df, with debug_info, not stripped
sha384test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=e7ef0af8438708f94b87c592170e312c3d241e35, with debug_info, not stripped
sha512test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=f68116f0fab592ddb8615830189f71709a20267b, with debug_info, not stripped
sm2_enctest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=47204681d48a02b37943defbeec70202e3355fb2, with debug_info, not stripped
sm2_keytest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=edf2fca1056da0ac2c1a0907063c5d4542d33cf4, with debug_info, not stripped
sm2_signtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=478900180a755cee6266fa621428e479e09038c4, with debug_info, not stripped
sm2_z256test:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=bb39b7143452049f919aad51b3a75cc748cc63f8, with debug_info, not stripped
sm3test:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=82868688521ed73e7dfb3a2635271a3293faa146, with debug_info, not stripped
sm4_cbc_mactest:  ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=b982deddbb02419e91ccee658ac1a712ae9f3735, with debug_info, not stripped
sm4_cbctest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=1d207d6517326dfe70c0780a1590c721f9c25e40, with debug_info, not stripped
sm4_ccmtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=9e62f7933a0e0bc38029dffd32192120855a410a, with debug_info, not stripped
sm4_cfbtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=422b0f6479e9db053797da998039acd82b4dcbba, with debug_info, not stripped
sm4_ctrtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=47258c78e5b6d006ad9f99b915a5ce3630320cdc, with debug_info, not stripped
sm4_ecbtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=e0e1a64470cc5ec71d8be6d32301bbf17634bc2f, with debug_info, not stripped
sm4_gcmtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=c9bfb792e62aa8efe8909c446accaeb145ac679f, with debug_info, not stripped
sm4_ofbtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=4f082949d2222467fe6bf51e2d493362d9030ee8, with debug_info, not stripped
sm4_sm3_hmactest: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=ba6498dcf32bf4f504be757459fe07f841c955d5, with debug_info, not stripped
sm4test:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=d5f74db24752de276fe16c1d1508e07db2bb0144, with debug_info, not stripped
sm4_xtstest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=6ec5091b09997748c12586dcacfc511b5b9e5b06, with debug_info, not stripped
sm9test:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=3a00608a2ebca841fe605e465c57eee37acb957c, with debug_info, not stripped
tls13test:        ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=9badbc59adb81fa4973bf34b5021c19c0970bd08, with debug_info, not stripped
tlstest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=1967e4d7733c9f48256d068d87227acc1983021d, with debug_info, not stripped
x509_algtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=9964dc2e89bce1e0d021a31b0fee4f1452a62241, with debug_info, not stripped
x509_crltest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=b135facea3168265a56a151582aaadb1044e4b90, with debug_info, not stripped
x509_exttest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=aeae1b9c7970f8a8245f0839a43d9b15162dba08, with debug_info, not stripped
x509_oidtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=fe75932592d8bed6bba9c02d76e6448f56d9b430, with debug_info, not stripped
x509_reqtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=1506319bcb9b66f41d452afe984fbc59385df110, with debug_info, not stripped
x509_strtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=5b6c8fb5c3f3b377a43cba2be6c8d56d0685bc4b, with debug_info, not stripped
x509test:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=cf78223b886a1be0680161613f29e7deecdd95a0, with debug_info, not stripped
zuctest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=c8647088245ddfcccfb15ab3b4a1319a04aad076, with debug_info, not stripped

        全部都是ARM aarch64,说明交叉编译正确。

六、设备测试

        输出文件虽然多,但是其实我们只需要gmssl和so文件,我先用ftp下载到本地,三个so变成了相同的文件(两个链接被替换为了链接目标):

        上传到设备测试,发现其实只要有libgmssl.so.3一个就可以了:

root# ./gmssl
./gmssl: error while loading shared libraries: libgmssl.so.3: cannot open shared object file: No such file or directory
root# ./gmssl
Usage: ./gmssl command [options]
command -helpCommands:help              Print this help messageversion           Print versionrand              Generate random bytessm2keygen         Generate SM2 keypairsm2sign           Generate SM2 signaturesm2verify         Verify SM2 signature
。。。。。。

(这里是文档结束)

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

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

相关文章

视频集中存储智能边缘计算网关软硬一体机智能边缘计算网关应用场景

在信息化飞速发展的今天,数据处理的速度和效率直接影响到各行各业的运作和发展。传统的云计算模式虽然强大,但在面对实时性和带宽要求越来越高的应用场景时,往往显得力不从心。此时,智能边缘计算网关的出现,为我们带来…

sqli-labs靶场(56-60)

56关 ?id-1)union select 1,2,database()-- 看数据库 ?id-1) union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- 看表 ?id-1) union select 1,group_concat(column_name),3 from information_schema.columns wh…

深入探索MySQL数据库结构设计:实战案例解析,打造高效、可扩展的数据存储方案

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 前言:…

noge-gyp构建项目踩坑记录

开发环境 系统: win11 node: 19.7.0 npm: 8.3.2 node-gyp: 10.0.2可以不使用windows-build-tools来安装构建工具,手动进行安装 我这边用windows-build-tools安装时候会提示 process.env only accepts a configurable, writable, and enumerable data descriptor. 查了资料后…

转换视频格式轻松搞定!3个小窍门助你轻松将mxf格式转mp4

你是否因为格式转换而烦恼?你是否经历过这样的情况:你想要在别的设备或平台上播放心仪的视频,但是你的视频文件是xmf格式的,很多设备都不支持这个格式,导致视频无法播放。现在,你需要把mxf格式转mp4格式。你…

【时间盒子】-【2.准备】HarmonyOS 开发前需要准备什么?

零基础新手或转行进入鸿蒙生态应用的开发者,请提前准备以下内容: 一、注册华为帐号 此帐号在华为官方各平台通用,比如:华为手机、华为商城、华为云、华为开发者联盟等等。 https://id1.cloud.huawei.com/CAS/portal/userRegist…

如何在Windows和Mac上免费提取RAR文件?这里有方法

序言 你有没有下载过一个文件,却发现它有一个奇怪的.rar文件扩展名?RAR是一种压缩文件格式,与ZIP文件非常相似,在本文中,我们将向你展示如何在Windows或macOS上打开RAR文件。 如何在Windows 11上打开RAR文件 Windows 11在2023年增加了对RAR文件的原生支持。从那时起,你…

144. 腾讯云Redis数据库

文章目录 一、Redis 的主要功能特性二、Redis 的典型应用场景三、Redis 的演进过程四、Redis 的架构设计五、Redis 的数据类型及操作命令六、腾讯云数据库 Redis七、总结 Redis 是一种由 C 语言开发的 NoSQL 数据库,以其高性能的键值对存储和多种应用场景而闻名。本…

可重入VI,VI模板和动态VI之间的差异 转

可重入VI 当您想要同时运行同一VI的多个实例时,将使用可重入VI。当VI不可重入时,VI只有一个数据空间。因此,一次只能有一个调用者运行VI,因此调用者可能必须“等待轮到它”时才能使用VI。这是VI的默认选项,但您可以将V…

Hibernate 批量插入速度慢的原因和解决方法

由于业务需要一次性连续写入超过10k条以上的新数据,当对象超过10个成员变量以后,整个写入过程居然需要长达35秒,这个速度是不能接受的,故此研究了一下怎么开启Hibernate批量写入的功能。 我这边使用的是Hibernate 5.6.15 在网上…

【Java|Stream流】不可变集合

文章目录 1.什么是不可变集合2.创建不可变集合的方式2.1 List类型2.2 Set2.3 Map 1.什么是不可变集合 不可变集合:不可以被修改的集合 不可变集合优点: 安全性 由于不可变集合不能被修改,所以可以安全地在多个线程之间共享,而不用担心被意外修改&#xf…

【kubernetes】Service 介绍和应用

一,Service介绍 四层代理是基于传输层(第四层)工作的代理,主要在传输层(如TCP、UDP协议)上转发和管理数据流 七层代理是基于应用层(第七层)工作的代理,能够对应用层协议…

# 利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优--2

利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优–2 二、Tomcat专题 - Tomcat性能调优 - 性能测试结果说明 1、压力性能测试 # 打开另一个终端,切换目录 [rootbogon ~]# cd /usr/local/tomcat# 进行压力性能测试[rootbogon tomcat]# …

JSON处理库 -- Fastjson

文章目录 一、json格式1.1 用途1.2 语法1.3 常见格式 二、fastjson常用类2.1 JSONObject2.2 JSONArray 三、序列化和反序列化3.1 默认序列化与反序列化3.2 序列化的扩展3.3 自定义序列化SerializeFilter3.4 JSONField 注解3.5 复习Jackson 一、json格式 1.1 用途 一种轻量级的…

浅谈SpringMvc的核心流程与组件

一、SpringMvc的核心流程 当发起请求时被前置的控制器(DispatcherServlet)拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制…

扑捉一只耿鬼(HTML文件)

图例&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>耿鬼</title><style>body {background: #fff;font-family: Comfortaa, sans-serif;}* {box-sizing:…

Unet改进12:添加PCONV||减少冗余计算和同时存储访问

本文内容:添加PCONV 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 为了设计快速的神经网络,许多工作都集中在减少浮点运算(FLOPs)的数量上。然而,我们观察到FLOPs的这种减少并不一定会导致类似程度的延迟减少。这主要源于低效率的每秒浮点操作数(FLOP…

Bean 的实例化(创建 | 获取)

Spring为Bean提供了多种实例化方式&#xff0c;包括如下4种方式&#xff1a; 第一种&#xff1a;通过构造方法实例化第二种&#xff1a;通过简单工厂模式实例化第三种&#xff1a;通过factory-bean实例化&#xff08;工厂方法模式实例化&#xff09;第四种&#xff1a;通过Fact…

盘点java8 stream中隐藏的函数式接口

shigen坚持更新文章的博客写手&#xff0c;记录成长&#xff0c;分享认知&#xff0c;留住感动。个人IP&#xff1a;shigen 提到函数式接口&#xff0c;最常见的就是lambda表达式&#xff0c;IDEA也有智能的提示&#xff1a; 最后改成这样的就是最简洁的、IDEA希望的风格&#…

Android UI绘制原理:UI的绘制流程是怎么样呢?为什么子线程不能刷新UI呢?讲解大体的流程是怎么样的

目录&#xff1a; 一、 为什么要学习android UI绘制原理呢&#xff1f;对我们有什么帮助&#xff1f; 1.解决复杂布局问题&#xff1a;了解UI绘制原理可以帮助我们更好地理解和解决布局问题&#xff0c;比如使用自定义View、优化布局层级等。 2.知道何时触发布局&#xff08;…