SSE3和SSSE3 Intrinsics各函数介绍

2023-11-18

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各函数介绍 的相关文章

  • 【测试入门】测试用例经典设计方法 —— 因果图法

    01 因果图设计测试用例的步骤 1 分析需求 阅读需求文档 如果User Case很复杂 尽量将它分解成若干个简单的部分 这样做的好处是 不必在一次处理过程中考虑所有的原因 没有固定的流程说明究竟分解到何种程度才算简单 需要测试人员根据自己
  • 直线检测方法—LSD论文翻译

    附原文链接 LSD a Line Segment Detector 摘 要 LSD是一个线段检测器 能够在线性时间内得到亚像素级精度的检测结果 它无需调试参数就可以适用于任何数字图像上 并且能够自我控制错误数量的检测 平均来说 一个图像中允
  • Bazel install Tips

    Bazel Fast Correct Choose two Build and test software of any size quickly and reliably Speed up your builds and tests Ba
  • Android接口一般定义格式,Android开发规范

    原标题 Android开发规范 一 书写规范 1 编码方式统一用UTF 8 2 花括号不要单独一行 和它前面的代码同一行 而且 花括号与前面的代码之间用一个空格隔开 3 空格的使用 if else for switch while等逻辑关键
  • 一个不错的关于CPU和GPU(CUDA)的性能比较讨论话题

    http topic csdn net u 20081027 23 67ff3857 3c71 4d5c acf6 095f3497c7a9 html这里是今天的一个论坛的一个帖子 大家可以讨论一下 1 那些程序适合用cpu来做 那些适合用
  • 【Transformer系列】深入浅出理解Tokenization分词技术

    一 参考资料 NLP技术中的Tokenization是什么 核心任务是什么 二 Tokenization相关介绍 1 Tokenization的概念 NLP技术中Tokenization被称作是 word segmentation 直译为分
  • 深入理解工具链-自己搭建STM32编程IDE

    目录 一 前言 二 编译器组成与编译流程 2 1 编译流程概述 2 2 Gcc For Arm编译器 2 3 预编译 2 4 编译 2 5 汇编 2 6 链接 2 7 生成HEX镜像 2 8 通过Makefile编译代码 三 调试流程 3
  • 解决在使用 Ant Design Vue组件库更改Modal对话框样式使用深度作用选择符不生效的问题

    项目场景 在使用 Ant Design Vue组件库更改Modal对话框样式使用深度作用选择符不生效 问题描述 Modal对话框官方样式如下图 现在要修改为下图所示样式 使用深度作用选择符样式没有生效 原因分析 因为modal是直接插入到b
  • 【SQL】10 SQL UPDATE 语句

    UPDATE 语句用于更新表中的记录 SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录 SQL UPDATE 语法 UPDATE table name SET column1 value1 column2 value2
  • Flink消费kafka出现空指针异常

    文章目录 出现场景 表现 问题 解决 tombstone Kafka中提供了一个墓碑消息 tombstone 的概念 如果一条消息的key不为null 但是其value为null 那么此消息就是墓碑消息 出现场景 双流join时 采用的是l
  • 此av非彼"AV"

    作者 王亨 R语言中文社区专栏作者 跟着菜鸟一起一步步学习R语言 争做R语言高手 个人公众号 跟着菜鸟一起学R语言 微信ID learn R 最近发现一个特别有意思的包 av 为什么有意思 首先名字有意思吧 其次这个包可以捕获图像 添加背景
  • 华为OD机试真题(Java),最小步骤数(100%通过+复盘思路)

    一 题目描述 一个正整数数组 设为nums 最大为100个成员 求从第一个成员开始正好走到数组最后一个成员所使用的最小步骤数 要求 第一步 必须从第一元素起 且 1 lt 第一步步长
  • Java企业微信开发_01_接收消息服务器配置

    一 准备阶段 需要准备事项 1 一个能在公网上访问的项目 见 Java微信公众平台开发01本地服务器映射外网 http www cnblogs com shirui p 7308856 html 2 一个企业微信账号 去注册 https w
  • 链式存储结构-----栈

    链式存储结构实现栈 上一节我们说了关于线性表的链式存储结构的实现 今天的栈也是建立在线性表的基础上 栈的特性 先进后出 1 删除时 出栈 我们考虑时间复杂度时发现 删除时的头删的复杂度为O 1 而尾删的时间复杂度为O n 故而我们出栈选择从
  • 【操作系统】键盘敲入字母时,操作系统期间发生了什么?

    操作系统 键盘敲入字母时 操作系统期间发生了什么 参考资料 键盘敲入 A 字母时 操作系统期间发生了什么 操作系统 浅谈 Linux 中的中断机制 文章目录 操作系统 键盘敲入字母时 操作系统期间发生了什么 设备控制器 I O 控制方式 设
  • html 自定义简单的时间轴 timeline 并与 table 图表和 echarts 进度甘特图联动

    1 需求 最近有需求需要实现 table 图表与 eharts 柱状图的联动 完整的效果图如下所示 这里时间轴要实现的效果要基本如下图所示 该时间轴并不是要实现选中单独的某一个月份并查看单月的数据 而是要将当前数据的时间跨度控制在时间轴的跨
  • uniapp 电商app支付倒计时处理

    电商app支付倒计时 所有电商app支付页面都是有倒计时的 一来可以促进消费 二来可以减少恶意减库存的问题发生 因为创建订单的时候 除了预售的商品外 实际销售的商品是需要减库存的 一般的电商app倒计时都是30分钟或者45分钟的 如果在此页
  • 带调速功能的arduino摇头避障小车

    一 材料同上篇文章 二 接线同上篇文章 L298N红板有两个使能端口ENA和ENB 这两个端口默认是有跳线帽的 也就是接5V的 此时输出就是HIGH或者LOW 摘掉跳线帽 将外边端口分别接arduino的PWM接口就好 本文接的是3和11
  • 3.[人脸识别] python-opencv 人脸特征采集与录入

    目录 1 环境 2 描述 3 代码 4 效果 1 环境 1 python 3 6 6 64bit 2 python packages 1 opencv python 3 4 1 15 2 opencv contrib python 4 4
  • 李沐动手学深度学习V2-微调练习

    1 继续提高finetune net的学习率 模型的准确性如何变化 原实验参数 lr 5e 5 batch size 128 num epochs 5 lr 5e 4 lr 5e 6 2 2 在比较实验中进一步调整finetune net和

随机推荐

  • 2018.5.21 . XMLSpy激活的方法

    127 0 0 1 altova com XMLspy 127 0 0 1 www altova com XMLspy 127 0 0 1 link altova com XMLspy 追加加到 C WINDOWS system32 dri
  • Python爬虫

    一 什么是代理 二 代理服务器的作用 可以进行请求的响应和转发 三 在爬虫中为何要使用代理 如果我们使用爬虫对一个网站在一段时间内发起一个高频请求 该网站会检测出这个异常的现象 并将异常的请求 IP 获取 将 IP 加入到黑名单 然后改 I
  • [无线通信基础-14]:图解移动通信技术与应用发展-2-第一代移动模拟通信大哥大

    前言 第一代移动通信主要采用的是模拟通信技术和频分多址 FDMA 技术 模拟通信 analog communication 是利用正弦波的幅度 频率或相位的变化 或者利用脉冲的幅度 宽度或位置变化来模拟原始信号 以达到通信的目的 故称为模拟
  • PyTorch中的符号索引和函数索引用法

    Pytorch中很多函数都采用的是函数式索引的思路 而且使用函数式索引对代码可读性会有很大提升 张量的符号索引 张量也是有序序列 我们可以根据每个元素在系统内的顺序位置 来找出特定的元素 也就是索引 一维张量的索引 一维张量索引与Pytho
  • 基于MATLAB的二进制数字调制与解调信号的仿真——2ASK

    实现二进制数字调制与解调信号的仿真是我的MATLAB课程设计的一部分 我参考了网上的一些资料 并加入了一些自己的想法 代码已在本地MATLAB编译通过且能正常运行 2ASK 二进制振幅键控 i 10 10个码元 j 5000 t linsp
  • java线程分析工具

    下载网站 IBM Thread and Monitor Dump Analyzer for Java TMDA 效果图
  • java8新特性-总览

    转眼真正工作的时间也一年多了 说实话虽然老板对我是肯定的 但是我对自己还是很不满意所以学习吧骚年们 Java8新特性 Java8算是java语言的一个大版本还是很有必要学习的 包括函数式编程 新的JavaScript引擎 新的日期API 新
  • 【附带配置疑问解决】Keil5配置ST-Link仿真器下载程序的方法

    0 首先需要安装好ST Link驱动 方法参阅CSDN其他文章或自行百度 1 点击魔术棒 2 选择Debug 按下图下拉框选择ST Link后 点击Settings 3 Flash Download设置如下 4 Pack设置 要把Enabl
  • 【Linux】【Ubuntu】在VMware虚拟机中安装Ubuntu18.04(UEFI启动图文教程)

    在VMware虚拟机中安装Ubuntu18 04 以UEFI方式启动 VMware 版本 15 5 以UEFI启动的Ubuntu系统安装方式与 Linux Ubuntu 在VMware虚拟机中安装Ubuntu18 04 保姆级图文教程 中记
  • BeagleBone 实施 Yocto 项目

    特点 Yocto 项目生产工具和流程 支持为嵌入式软件创建 Linux 发行版 独立于架构 BeagleBone Black 是一个平台 允许用户根据自己的喜好快速轻松地执行安装和自定义 从 Yocto Project 构建系统的基本介绍开
  • SD卡读写实验(SPI模式)

    对于 SD 卡的 SPI 模式而言 采用的 SPI 的通信模式为模式 3 即 CPOL 1 CPHA 1 在 SD 卡 2 0 版 本协议中 SPI CLK 时钟频率可达 50Mhz SD 卡的 SPI 模式 只用到了 SDIO D3 SP
  • 第五届蓝桥杯—— 基础练习:数列特征

    问题描述 给出n个数 找出这n个数的最大值 最小值 和 输入格式 第一行为整数n 表示数的个数 第二行有n个数 为给定的n个数 每个数的绝对值都小于10000 输出格式 输出三行 每行一个整数 第一行表示这些数中的最大值 第二行表示这些数中
  • C++11中的原子操作(atomic operation)

    所谓的原子操作 取的就是 原子是最小的 不可分割的最小个体 的意义 它表示在多个线程访问同一个全局资源的时候 能够确保所有其他的线程都不在同一时间内访问相同的资源 也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问 这有点类似互斥对象
  • AIops | 一文了解日志异常检测

    作者 李旭光 中国农业银行研发中心责编 晋兆雨出品 CSDN云计算头图 付费下载于视觉中国 背景介绍 日志是有关系统运行状态的描述 例如Linux的系统日志 数据库系统的日志以及分布式系统的日志等 日志是运维人员查看系统运行状态 寻找系统故
  • Java Eclipse进行断点调试

    如何调试Java程序 大家最开始学习Java 都会觉得IDE调试好高端有木有 其实很简单了 下文会尽量简单直观的教会你在Eclipse中调试 其他的IDE调试步骤也是类似的 1 在你觉得有错的地方设置断点 在代码行数前 点击右键 注意是右键
  • MATLAB基础语法总结

    主体参照 全网最全MATLAB学习归纳总结 建模学习必备 MATLAB讲解PPT和MATLAB官方帮助文档这里对该教程做一定的完善与汇总 1 MATLAB编辑器常用快捷键 1 1 编辑器窗口操作 编辑器窗口操作 自动整理代码 用鼠标选中代码
  • 【粉丝问答11】如何实现内网穿透

    本文章由网友 邓工 投稿 VX A18665908735 问题描述 起因 最近公司要做一个4G模块带GNSS 全球导航卫星系统 定位功能的产品 上传传感器数据和设备定位数据到服务器上 我们选择了simcom7600G一个支持全球通的4G模块
  • 基于Docker安装的MindSpore-1.2 GPU版本

    技术背景 在前面一篇博客中 我们介绍过MindSpore CPU版本的Docker部署以及简单的案例测试 当时官方还不支持GPU版本的Docker容器化部署 经过MindSpore团队的努力 1 2 0版本的MindSpore GPU终于推
  • XCTF攻防世界Web12道简单题

    0x00 准备 内容 在xctf官网注册账号 即可食用 目录 目录 0x01 view source2 0x02 get post3 0x03 robots4 0x04 backup6 0x05 Cookie7 0x06 disabled
  • SSE3和SSSE3 Intrinsics各函数介绍

    SIMD相关头文件包括 include