SSE3和SSSE3 Intrinsics各函数介绍

2023-10-27

SIMD相关头文件包括:

//#include <ivec.h>//MMX
//#include <fvec.h>//SSE(also include ivec.h)
//#include <dvec.h>//SSE2(also include fvec.h)


#include <mmintrin.h> //MMX
#include <xmmintrin.h> //SSE(include mmintrin.h)
#include <emmintrin.h> //SSE2(include xmmintrin.h)
#include <pmmintrin.h> //SSE3(include emmintrin.h)
#include <tmmintrin.h>//SSSE3(include pmmintrin.h)
#include <smmintrin.h>//SSE4.1(include tmmintrin.h)
#include <nmmintrin.h>//SSE4.2(include smmintrin.h)
#include <wmmintrin.h>//AES(include nmmintrin.h)
#include <immintrin.h>//AVX(include wmmintrin.h)
#include <intrin.h>//(include immintrin.h)

mmintrin.h为MMX 头文件,其中__m64的定义为:

typedef union __declspec(intrin_type) _CRT_ALIGN(8) __m64
{
    unsigned __int64    m64_u64;
    float               m64_f32[2];
    __int8              m64_i8[8];
    __int16             m64_i16[4];
    __int32             m64_i32[2];    
    __int64             m64_i64;
    unsigned __int8     m64_u8[8];
    unsigned __int16    m64_u16[4];
    unsigned __int32    m64_u32[2];
} __m64;

xmmintrin.h为SSE 头文件,此头文件里包含MMX头文件,其中__m128的定义为:

typedef union __declspec(intrin_type) _CRT_ALIGN(16) __m128 {
     float               m128_f32[4];
     unsigned __int64    m128_u64[2];
     __int8              m128_i8[16];
     __int16             m128_i16[8];
     __int32             m128_i32[4];
     __int64             m128_i64[2];
     unsigned __int8     m128_u8[16];
     unsigned __int16    m128_u16[8];
     unsigned __int32    m128_u32[4];
 } __m128;

emmintrin.h为SSE2头文件,此头文件里包含SSE头文件,其中__m128i和__m128d的定义为:

typedef union __declspec(intrin_type) _CRT_ALIGN(16) __m128i {
    __int8              m128i_i8[16];
    __int16             m128i_i16[8];
    __int32             m128i_i32[4];    
    __int64             m128i_i64[2];
    unsigned __int8     m128i_u8[16];
    unsigned __int16    m128i_u16[8];
    unsigned __int32    m128i_u32[4];
    unsigned __int64    m128i_u64[2];
} __m128i;

typedef struct __declspec(intrin_type) _CRT_ALIGN(16) __m128d {
    double              m128d_f64[2];
} __m128d;

pmmintrin.h为SSE3头文件,其文件中各函数的介绍:

	/*New Single precision vector instructions*/
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=a0-b0, r1=a1+b1, r2=a2-b2, r3=a3+b3
	extern __m128 _mm_addsub_ps(__m128 a, __m128 b);
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=a0+a1, r1=a2+a3, r2=b0+b1, r3=b2+b3
	extern __m128 _mm_hadd_ps(__m128 a, __m128 b);
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=a0-a1, r1=a2-a3, r2=b0-b1, r3=b2-b3
	extern __m128 _mm_hsub_ps(__m128 a, __m128 b);
	//a=(a0, a1, a2, a3), 则r0=a1, r1=a1, r2=a3, r3=a3
	extern __m128 _mm_movehdup_ps(__m128 a);
	//a=(a0, a1, a2, a3), 则r0=a0, r1=a0, r2=a2, r3=a2
	extern __m128 _mm_moveldup_ps(__m128 a);

	/*New double precision vector instructions*/
	//a=(a0, a1), b=(b0, b1), 则r0=a0-b0, r1=a1+b1
	extern __m128d _mm_addsub_pd(__m128d a, __m128d b);
	//a=(a0, a1), b=(b0, b1), 则r0=a0+a1, r1=b0+b1
	extern __m128d _mm_hadd_pd(__m128d a, __m128d b);
	//a=(a0, a1), b=(b0, b1), 则r0=a0-a1, r1=b0-b1
	extern __m128d _mm_hsub_pd(__m128d a, __m128d b);
	//r0=r1=dp[0]
	extern __m128d _mm_loaddup_pd(double const * dp);
	//a=(a0, a1),则r0=r1=a0
	extern __m128d _mm_movedup_pd(__m128d a);

	/*New unaligned integer vector load instruction*/
	//load unaligned data using _mm_lddqu_si128 for best performance
	//If the address is not 16-byte aligned, the load begins at the 
	//highest 16-byte-aligned address less than the address of Data
	extern __m128i _mm_lddqu_si128(__m128i const *p);

	/*Miscellaneous new instructions,
	For _mm_monitor p goes in eax, extensions goes in ecx, hints goes in edx*/
	//The monitor instruction sets up an address range for hardware monitoring.
	//The values of extensions and hints correspond to the values in ECX and EDX
	//used by the monitor instruction. They are reserved for future use and should
	//be zero for the SSE3-enabled processor. For more information, 
	//see the Intel or AMD documentation as appropriate.
	extern void _mm_monitor(void const *p, unsigned extensions, unsigned hints);

	/*Miscellaneous new instructions,
	For _mm_mwait, extensions goes in ecx, hints goes in eax*/
	//The mwait instruction instructs the processor to enter a wait state in which the
	//processor is instructed to monitor the address range between extensions and hints
	//and wait for an event or a store to that address range. The values of extensions 
	//and hints are loaded into the ECX and EAX registers. For more information,
	//see the Intel or AMD documentation as appropriate.
	extern void _mm_mwait(unsigned extensions, unsigned hints);

tmmintrin.h为SSSE3头文件, 文件中各函数的介绍:

	/*Add horizonally packed [saturated] words, double words,
	{X,}MM2/m{128,64} (b) to {X,}MM1 (a).*/
	//a=(a0, a1, a2, a3, a4, a5, a6, a7), b=(b0, b1, b2, b3, b4, b5, b6, b7)
	//则r0=a0+a1, r1=a2+a3, r2=a4+a5, r3=a6+a7, r4=b0+b1, r5=b2+b3, r6=b4+b5, r7=b6+b7 
	extern __m128i _mm_hadd_epi16 (__m128i a, __m128i b);
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=a0+a1, r1=a2+a3, r2=b0+b1, r3=b2+b3
	extern __m128i _mm_hadd_epi32 (__m128i a, __m128i b);
	//SATURATE_16(x) is ((x > 32767) ? 32767 : ((x < -32768) ? -32768 : x))
	//a=(a0, a1, a2, a3, a4, a5, a6, a7), b=(b0, b1, b2, b3, b4, b5, b6, b7)
	//则r0=SATURATE_16(a0+a1), ..., r3=SATURATE_16(a6+a7), 
	//r4=SATURATE_16(b0+b1), ..., r7=SATURATE_16(b6+b7)
	extern __m128i _mm_hadds_epi16 (__m128i a, __m128i b);
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=a0+a1, r1=a2+a3, r2=b0+b1, r3=b2+b3
	extern __m64 _mm_hadd_pi16 (__m64 a, __m64 b);
	//a=(a0, a1), b=(b0, b1), 则r0=a0+a1, r1=b0+b1
	extern __m64 _mm_hadd_pi32 (__m64 a, __m64 b);
	//SATURATE_16(x) is ((x > 32767) ? 32767 : ((x < -32768) ? -32768 : x))
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=SATURATE_16(a0+a1), r1=SATURATE_16(a2+a3), 
	//r2=SATURATE_16(b0+b1), r3=SATURATE_16(b2+b3)
	extern __m64 _mm_hadds_pi16 (__m64 a, __m64 b);

	/*Subtract horizonally packed [saturated] words, double words,
	{X,}MM2/m{128,64} (b) from {X,}MM1 (a).*/
	//a=(a0, a1, a2, a3, a4, a5, a6, a7), b=(b0, b1, b2, b3, b4, b5, b6, b7)
	//则r0=a0-a1, r1=a2-a3, r2=a4-a5, r3=a6-a7, r4=b0-b1, r5=b2-b3, r6=b4-b5, r7=b6-b7
	extern __m128i _mm_hsub_epi16 (__m128i a, __m128i b);
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=a0-a1, r1=a2-a3, r2=b0-b1, r3=b2-b3
	extern __m128i _mm_hsub_epi32 (__m128i a, __m128i b);
	//SATURATE_16(x) is ((x > 32767) ? 32767 : ((x < -32768) ? -32768 : x))
	//a=(a0, a1, a2, a3, a4, a5, a6, a7), b=(b0, b1, b2, b3, b4, b5, b6, b7)
	//则r0=SATURATE_16(a0-a1), ..., r3=SATURATE_16(a6-a7), 
	//r4=SATURATE_16(b0-b1), ..., r7=SATURATE_16(b6-b7)
	extern __m128i _mm_hsubs_epi16 (__m128i a, __m128i b);
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=a0-a1, r1=a2-a3, r2=b0-b1, r3=b2-b3
	extern __m64 _mm_hsub_pi16 (__m64 a, __m64 b);
	//a=(a0, a1), b=(b0, b1), 则r0=a0-a1, r1=b0-b1
	extern __m64 _mm_hsub_pi32 (__m64 a, __m64 b);
	//SATURATE_16(x) is ((x > 32767) ? 32767 : ((x < -32768) ? -32768 : x))
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=SATURATE_16(a0-a1), r1=SATURATE_16(a2-a3), 
	//r2=SATURATE_16(b0-b1), r3=SATURATE_16(b2-b3)
	extern __m64 _mm_hsubs_pi16 (__m64 a, __m64 b);

	/*Multiply and add packed words,
	{X,}MM2/m{128,64} (b) to {X,}MM1 (a).*/
	//SATURATE_16(x) is ((x > 32767) ? 32767 : ((x < -32768) ? -32768 : x))
	//a=(a0, a1, a2, ..., a13, a14, a15), b=(b0, b1, b2, ..., b13, b14, b15)
	//则r0=SATURATE_16((a0*b0)+(a1*b1)), ..., r7=SATURATE_16((a14*b14)+(a15*b15))
	//Parameter a contains unsigned bytes. Parameter b contains signed bytes.
	extern __m128i _mm_maddubs_epi16 (__m128i a, __m128i b);
	//SATURATE_16(x) is ((x > 32767) ? 32767 : ((x < -32768) ? -32768 : x))
	//a=(a0, a1, a2, a3, a4, a5, a6, a7), b=(b0, b1, b2, b3, b4, b5, b6, b7)
	//则r0=SATURATE_16((a0*b0)+(a1*b1)), ..., r3=SATURATE_16((a6*b6)+(a7*b7))
	//Parameter a contains unsigned bytes. Parameter b contains signed bytes.
	extern __m64 _mm_maddubs_pi16 (__m64 a, __m64 b);

	/*Packed multiply high integers with round and scaling,
	{X,}MM2/m{128,64} (b) to {X,}MM1 (a).*/
	//a=(a0, a1, a2, a3, a4, a5, a6, a7), b=(b0, b1, b2, b3, b4, b5, b6, b7)
	//则r0=INT16(((a0*b0)+0x4000) >> 15), ..., r7=INT16(((a7*b7)+0x4000) >> 15)
	extern __m128i _mm_mulhrs_epi16 (__m128i a, __m128i b);
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=INT16(((a0*b0)+0x4000) >> 15), ..., r3=INT16(((a3*b3)+0x4000) >> 15)
	extern __m64 _mm_mulhrs_pi16 (__m64 a, __m64 b);

	/*Packed shuffle bytes
	{X,}MM2/m{128,64} (b) by {X,}MM1 (a).*/
	//SELECT(a, n) extracts the nth 8-bit parameter from a. The 0th 8-bit parameter
	//is the least significant 8-bits, b=(b0, b1, b2, ..., b13, b14, b15), b is mask
	//则r0 = (b0 & 0x80) ? 0 : SELECT(a, b0 & 0x0f), ...,
	//r15 = (b15 & 0x80) ? 0 : SELECT(a, b15 & 0x0f)
	extern __m128i _mm_shuffle_epi8 (__m128i a, __m128i b);
	//SELECT(a, n) extracts the nth 8-bit parameter from a. The 0th 8-bit parameter
	//is the least significant 8-bits, b=(b0, b1, ..., b7), b is mask
	//则r0= (b0 & 0x80) ? 0 : SELECT(a, b0 & 0x07),...,
	//r7=(b7 & 0x80) ? 0 : SELECT(a, b7 & 0x07)
	extern __m64 _mm_shuffle_pi8 (__m64 a, __m64 b);

	/*Packed byte, word, double word sign, {X,}MM2/m{128,64} (b) to
	{X,}MM1 (a).*/
	//a=(a0, a1, a2, ..., a13, a14, a15), b=(b0, b1, b2, ..., b13, b14, b15)
	//则r0=(b0 < 0) ? -a0 : ((b0 == 0) ? 0 : a0), ...,
	//r15= (b15 < 0) ? -a15 : ((b15 == 0) ? 0 : a15)
	extern __m128i _mm_sign_epi8 (__m128i a, __m128i b);
	//a=(a0, a1, a2, a3, a4, a5, a6, a7), b=(b0, b1, b2, b3, b4, b5, b6, b7)
	//r0=(b0 < 0) ? -a0 : ((b0 == 0) ? 0 : a0), ...,
	//r7= (b7 < 0) ? -a7 : ((b7 == 0) ? 0 : a7)
	extern __m128i _mm_sign_epi16 (__m128i a, __m128i b);
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=(b0 < 0) ? -a0 : ((b0 == 0) ? 0 : a0), ...,
	//r3= (b3 < 0) ? -a3 : ((b3 == 0) ? 0 : a3)
	extern __m128i _mm_sign_epi32 (__m128i a, __m128i b);
	//a=(a0, a1, a2, a3, a4, a5, a6, a7), b=(b0, b1, b2, b3, b4, b5, b6, b7)
	//则r0=(b0 < 0) ? -a0 : ((b0 == 0) ? 0 : a0), ...,
	//r7= (b7 < 0) ? -a7 : ((b7 == 0) ? 0 : a7)
	extern __m64 _mm_sign_pi8 (__m64 a, __m64 b);
	//a=(a0, a1, a2, a3), b=(b0, b1, b2, b3)
	//则r0=(b0 < 0) ? -a0 : ((b0 == 0) ? 0 : a0), ...,
	//r3= (b3 < 0) ? -a3 : ((b3 == 0) ? 0 : a3)
	extern __m64 _mm_sign_pi16 (__m64 a, __m64 b);
	//a=(a0, a1), b=(b0, b1), 则r0=(b0 < 0) ? -a0 : ((b0 == 0) ? 0 : a0),
	//r1= (b1 < 0) ? -a1 : ((b1 == 0) ? 0 : a1)
	extern __m64 _mm_sign_pi32 (__m64 a, __m64 b);

	/*Packed align and shift right by n*8 bits,
	{X,}MM2/m{128,64} (b) to {X,}MM1 (a).*/
	//n: A constant that specifies how many bytes the interim result will be 
	//shifted to the right, If n > 32, the result value is zero 
	//CONCAT(a, b) is the 256-bit unsigned intermediate value that is a concatenation of 
	//parameters a and b. The result is this intermediate value shifted right by n bytes.
	//则r= (CONCAT(a, b) >> (n * 8)) & 0xffffffffffffffff
	extern __m128i _mm_alignr_epi8 (__m128i a, __m128i b, int n);
	//n: An integer constant that specifies how many bytes to shift the interim 
	//result to the right,If n > 16, the result value is zero
	//CONCAT(a, b) is the 128-bit unsigned intermediate value that is formed by 
	//concatenating parameters a and b. The result value is the rightmost 64 bits after
	//shifting this intermediate result right by n bytes
	//则r = (CONCAT(a, b) >> (n * 8)) & 0xffffffff
	extern __m64 _mm_alignr_pi8 (__m64 a, __m64 b, int n);

	/*Packed byte, word, double word absolute value,
	{X,}MM2/m{128,64} (b) to {X,}MM1 (a).*/
	//a=(a0, a1, a2, ..., a13, a14, a15)
	//则r0 = (a0 < 0) ? -a0 : a0, ..., r15 = (a15 < 0) ? -a15 : a15
	extern __m128i _mm_abs_epi8 (__m128i a);
	//a=(a0, a1, a2, a3, a4, a5, a6, a7)
	//则r0 = (a0 < 0) ? -a0 : a0, ..., r7 = (a7 < 0) ? -a7 : a7
	extern __m128i _mm_abs_epi16 (__m128i a);
	//a=(a0, a1, a2, a3)
	//则r0 = (a0 < 0) ? -a0 : a0, ..., r3 = (a3 < 0) ? -a3 : a3
	extern __m128i _mm_abs_epi32 (__m128i a);
	//a=(a0, a1, a2, a3, a4, a5, a6, a7)
	//则r0 = (a0 < 0) ? -a0 : a0, ..., r7 = (a7 < 0) ? -a7 : a7
	extern __m64 _mm_abs_pi8 (__m64 a);
	//a=(a0, a1, a2, a3)
	//则r0 = (a0 < 0) ? -a0 : a0, ..., r3 = (a3 < 0) ? -a3 : a3
	extern __m64 _mm_abs_pi16 (__m64 a);
	//a=(a0, a1), 则r0 = (a0 < 0) ? -a0 : a0, r1 = (a1 < 0) ? -a1 : a1
	extern __m64 _mm_abs_pi32 (__m64 a);


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSE3和SSSE3 Intrinsics各函数介绍 的相关文章

  • qt发布后 mysql数据库_QT连接MySql数据库,以及配置git上传到github

    前言 最近想把自己写的一个C 项目结合所学的Qt mysql结合起来进行完善 前期的一些准备工作记录如下 如有侵权 请联系删除 QT下载链接 我的下载版本为5 9 MySql下载链接 我的下载版本为5 7 MySql的安装配置 1 解压 这
  • ElasticSearch操作命令大全

    创建索引和映射 1 手动创建索引 curl XPUT localhost 9200 new index 2 获取映射 curl localhost 9200 get together mapping group pretty 定义新映射 c
  • 机器学习——线性回归与决策树实验(附效果以及完整代码)(数据集、测试集开源)

    机器学习实验 实验名称 实验一 线性回归与决策树 一 实验目的 1 掌握线性回归算法和决策树算法 ID3 的原理 2 学会线性回归算法和决策树算法 ID3 的实现和使用方法 二 实验内容 本次实验为第一次实验 要求完成本次实验所有内容 具体
  • 接口文档参考示例

    接口文档参考示例 用户登录 POST api login 接口说明 登录成功后 会生成或更新用户令牌 token 使用帮助 测试数据库中预设了四个可供使用的账号 如下表所示 Untitled 请求参数 Untitled 响应信息 登录成功
  • 湖南株洲三维扫描检测CNC机加工零件截面检测弧度测量-CASAIM中科广电

    自工业时代开始以来 机械加工及零部件产业已经涵盖了各大电器零部件 汽车零部件 建筑机械零部件 航空航天零部件 海洋工程零部件等领域 涉及多种机械机床及工具仪器的制造 零件在加工过程中 受制于加工工艺等各方面的因素 难免会产生加工误差 会直接
  • Ubuntu系统中使用VSCode(Visual Studio Code)

    一 软件下载安装 去官网下载文件 https code visualstudio com docs dv linux64 也可以用ubuntu自带的软件商店下载 本帖就采用这种方法 案例采用ubuntu16 04 操作如下图 首先单击APP
  • maven 项目 junit步骤。

    pom xml添加对应的jar包
  • 自动化测试的转行

    什么是自动化测 做测试好几年了 真正学习和实践自动化测试一年 自我感觉这一个年中收获许多 一直想动笔写一篇文章分享自动化测试实践中的一些经验 终于决定花点时间来做这件事儿 首先理清自动化测试的概念 广义上来讲 自动化包括一切通过工具 程序

随机推荐

  • CSS——层级

    层级问题 选中的盒子显示的效果并不完整 右边的边框并没有显示红色 原因是其右边的盒子压了它的边框
  • Flink CDC 详述实时数据湖

    在构建实时数仓的过程中 如何快速 正确的同步业务数据是最先面临的问题 本文主要讨论一下如何使用实时处理引擎Flink和数据湖Apache Iceberg两种技术 来解决业务数据实时入湖相关的问题 01 Flink CDC介绍 CDC全称是C
  • Mac 开发 Tang Nano FPGA 指南(使用终端和使用 VS Code 和插件,适用所有 Gowin FPGA)

    最近收到了一个 Tang nano 9K FPGA开发板 就想借此机会研究一下 官方文档里介绍如果想使用高云的 FPGA 就需要使用 GOWIN IDE 但是需要申请 license 提交一堆资料 我是别人送的就不太方便让别人弄 加上 ID
  • 一,凸包---3,极边

    极边就是组成凸包的边的集合 时间复杂度是o n3 比判断极点快 时间复杂度O n4 快 为什么呢 试想 不论极边也好 极点也好 判断的依据是三角形的方向 无论是海伦公式 还是向量叉乘 极边是需要三个点组成一个三角形 是一个三重循环 即可用t
  • 六.安装harbor

    1 下载 harbor offline installer v1 9 3 链接 https pan baidu com s 1dTCy2KPqRhYKxTyE7vlrPg 提取码 6666 需要安装docker compose 2 修改配置
  • Java基础之异常

    文章目录 前言 一 初识异常 二 异常的体系结构 三 异常的分类 四 异常的处理 1 throw 异常抛出 2 throws 异常声明 3 try catch 捕获处理 4 finally 5 try catch finally与retur
  • Hugo themes Doit 合并 tags , categories 为检索页

    Hugo themes Doit 合并 tags categories 为检索页 原文 总觉得 tags categories 等页面可以合并成为一页 这样检索起来更方便一些 成果 https www ftls xyz retrieval
  • 编译程序和解释程序有什么区别?

    1 编译程序和解释程序的区别 编译型是使用编译器编译后生成计算机硬件可直接执行的指令 解释型是在运行时才由解释器逐语句去执行 编译型代表 C C C Java 解释型代表 html javascript 区别有很多 说说常见的几个 编译型语
  • MATLAB bp神经网络预测代码

    清除变量 清楚变量 claer clc 导入数据 变量个数较少可以自己输入变量 变量数目较大时建议采用读取Excel并保存成 mat的方法来导入数据 读取 m数据 以data mat为例 load data mat load data1 m
  • React路由

    安装 npm i react router dom S 导入 import BrowserRouter as Router Route Link from react router dom HashRouter与BrowserRouter
  • iOS基础教程-SQLite数据库操作(二简单实例学生信息增删改查数据库操作)

    学生名单管理界面实现数据库的增删改操作 关于UI部分 我们使用storyboard简单完成 在上一篇文章中有详细的描述iOS基础教程 SQLite数据库操作 一 StoryBoard操作 SQLite操作前准备工作 本篇结束以后 就可以完成
  • webpack设置分包

    Webpack中设置分包 code splitting 是一种优化技术 它允许将你的代码分割成多个小块 以便在不同的页面或情境中按需加载 这可以显著减小初始加载的资源大小 提高网页性能 Webpack提供了几种方式来设置分包 其中最常见的是
  • 搞懂 API ,地图 API 制作方法分享

    地图 API 是一种基于 Web 开发的应用程序编程接口 可以用于创建和展示地图及地理信息 以下是一些地图 API 制作的方法 选择地图 API 平台 目前市场上有很多地图 API 平台供选择 比如 Google Maps API 百度地图
  • WorkTool企微机器人自动接收图片回传(方案三)

    自动接收图片并上传到服务器 仅适用企业微信应用 前言 WorkTool企微机器人可以接收客户群的消息 但接收图片一直是个问题 前面也介绍过两种图片接收方案 但都会影响运行效率 并且不能达到100 的图片接收率 实测95 本方案三是通过企微官
  • 2023年测试之路,从功能测试进阶测试开发工程师,突破内卷...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • QT5.9.6和VS2015的配置使用

    要做界面但是MFC实在是 所以果断尝试QT实现界面化 QT5 9 6 VS2015 opencv2 4 13 所用软件 QT5 9 6 VS2015 参考地址 Qt5 7 VS2015 环境搭建https blog csdn net lia
  • kafka常用命令汇总

    新建topic bin kafka topics sh zookeeper localhost 2181 create replication factor 1 partitions 1 topic test service 删除topic
  • Qt发送端用自定义结构体发送,接收端QByteArray接收

    Qt TCP UDP 一端用自定义结构体发送消息 一端用QByteArray接收消息 用自定义结构体发送消息 void TcpServer timeOut QDateTime nowTime QDateTime currentDateTim
  • select top语句 mysql_SQL SELECT TOP 语句

    SELECT TOP 子句用于规定要返回的记录的数目 SELECT TOP 子句对于拥有数千条记录的大型表来说 是非常有用的 注释 并非所有的数据库系统都支持 SELECT TOP 子句 SQL Server MS Access 语法 SE
  • SSE3和SSSE3 Intrinsics各函数介绍

    SIMD相关头文件包括 include