SSE3和SSSE3 Intrinsics各函数介绍
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+b3extern __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+b3extern __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-b3extern __m128 _mm_hsub_ps(__m128 a, __m128 b);//a=(a0, a1, a2, a3), 则r0=a1, r1=a1, r2=a3, r3=a3extern __m128 _mm_movehdup_ps(__m128 a);//a=(a0, a1, a2, a3), 则r0=a0, r1=a0, r2=a2, r3=a2extern __m128 _mm_moveldup_ps(__m128 a);/*New double precision vector instructions*///a=(a0, a1), b=(b0, b1), 则r0=a0-b0, r1=a1+b1extern __m128d _mm_addsub_pd(__m128d a, __m128d b);//a=(a0, a1), b=(b0, b1), 则r0=a0+a1, r1=b0+b1extern __m128d _mm_hadd_pd(__m128d a, __m128d b);//a=(a0, a1), b=(b0, b1), 则r0=a0-a1, r1=b0-b1extern __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=a0extern __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 Dataextern __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+b3extern __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+b3extern __m64 _mm_hadd_pi16 (__m64 a, __m64 b);//a=(a0, a1), b=(b0, b1), 则r0=a0+a1, r1=b0+b1extern __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-b7extern __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-b3extern __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-b3extern __m64 _mm_hsub_pi16 (__m64 a, __m64 b);//a=(a0, a1), b=(b0, b1), 则r0=a0-a1, r1=b0-b1extern __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)) & 0xffffffffffffffffextern __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)) & 0xffffffffextern __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 : a15extern __m128i _mm_abs_epi8 (__m128i a);//a=(a0, a1, a2, a3, a4, a5, a6, a7)//则r0 = (a0 < 0) ? -a0 : a0, ..., r7 = (a7 < 0) ? -a7 : a7extern __m128i _mm_abs_epi16 (__m128i a);//a=(a0, a1, a2, a3)//则r0 = (a0 < 0) ? -a0 : a0, ..., r3 = (a3 < 0) ? -a3 : a3extern __m128i _mm_abs_epi32 (__m128i a);//a=(a0, a1, a2, a3, a4, a5, a6, a7)//则r0 = (a0 < 0) ? -a0 : a0, ..., r7 = (a7 < 0) ? -a7 : a7extern __m64 _mm_abs_pi8 (__m64 a);//a=(a0, a1, a2, a3)//则r0 = (a0 < 0) ? -a0 : a0, ..., r3 = (a3 < 0) ? -a3 : a3extern __m64 _mm_abs_pi16 (__m64 a);//a=(a0, a1), 则r0 = (a0 < 0) ? -a0 : a0, r1 = (a1 < 0) ? -a1 : a1extern __m64 _mm_abs_pi32 (__m64 a);
相关文章:

kubernetes学习笔记之十三:基于calico的网络策略入门
一、.安装calico [rootk8s-master01 ~]# kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/rbac.yaml clusterrole.rbac.authorization.k8s.io "calico" created clusterrole.rbac.authorization.k8s.i…
设计模式之抽象工厂模式(Abstract Factory)摘录
面向对象系统的分析和设计实际上追求的就是两点:高内聚(Cohesion)和低耦合(Coupling). 23种GOF设计模式一般分为三大类:创建型模式、结构型模式、行为模式。 创建型模式包括:1、FactoryMethod(工厂方法模式);2、Abstract Factor…

grub设置密码的方法
grub设置密码的方法:一、grub设置明文口令的方法:修改/etc/grub.conf配置文件就可以了.[root RedHat ~] # vi /etc/grub.conf #注:此为链接文件,指向 /boot/grub/grub.conf#boot/dev/hdbdefault0timeout5splashimage(hd0,0)/gr…

web服务器(IIS)的操作步骤
转载于:https://blog.51cto.com/14118520/2335646

微软全球AI总监:Azure AI是OpenAI技术商业化变现唯一、排他性合作方
作者 | 夕颜出品 | AI科技大本营(ID:rgznai100)导读:7 月 24 日下午,微软在北京举行了媒体交流会。会上,微软全球副总裁,人工智能平台负责人 Eric Boyd 介绍了 Azure AI 近期的最新进展情况,并带…

NYOJ_16_矩形嵌套
有点小坑的严格单调递增序列,主要是排序那里坑了一下。 思路:矩形的嵌套? (a<c&&b<d)||(a<d&&b<c)? 不,只要在建点时保证a<b,条件就会少一个,直接a<c&&b<…

抢程序员饭碗?自动写代码的Deep TabNine真如此神奇?
作者 | James Vincent等编译 | 夕颜出品 | AI科技大本营(ID:rgznai100)导读:在过去的一年中,AI 生成书面文字的能力大大提高。通过扫描庞大的文本数据集,机器学习软件可以生成从短篇小说到歌词的各种令人信服的样本。…
JS 总结之事件循环
众所周知,JavaScript 为了避免复杂,被设计成了单线程。 ⛅️ 任务 单线程意味着所有任务都需要按顺序执行,如果某个任务执行非常耗时,线程就会被阻断,后面的任务需要等上一个任务执行完毕才会进行。而大多数非常耗时的…
设计模式之工厂方法模式(Factory Method)摘录
23种GOF设计模式一般分为三大类:创建型模式、结构型模式、行为模式。 创建型模式包括:1、FactoryMethod(工厂方法模式);2、Abstract Factory(抽象工厂模式);3、Singleton(单例模式);4、Builder(建造者模式);…

SpanBERT:提出基于分词的预训练模型,多项任务性能超越现有模型!
作者 | Mandar Joshi, Danqi Chen, Yinhan Liu, Daniel S. Weld, Luke Zettlemoyer, Omer Levy译者 | Rachel责编 | Jane出品 | AI科技大本营(ID: rgznai100)【导读】本文提出了一个新的模型预训练方法 SpanBERT ,该方法能够更好地表示和预测…

XP与Windows 7(Win7)等操作系统Ghost备份
XP与Windows 7(Win7)等操作系统Ghost备份 2013年5月5日 前提:备份还原win7的话,此种Ghost备份方法只针对没有100MB保留分区的win7安装方式。去掉100MB的方法可以参考《Windows7(win7)系统重装与破解》&…

SSE4.1和SSE4.2 Intrinsics各函数介绍
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) #…

Nacos v0.7.0:对接CMDB,实现基于标签的服务发现能力
Nacos近期发布了0.7.0版本,该版本支持对接第三方CMDB获取CMDB数据、使用Selector机制来配置服务的路由类型、支持单机模式使用MySQL数据库、上线Node.js客户端,并修复了一些bug。对接CMDB实现就近访问在服务进行多机房或者多地域部署时,跨地域…

数十篇推荐系统论文被批无法复现:源码、数据集均缺失,性能难达预期
作者 | Maurizio Ferrari Dacrema译者 | 凯隐责编 | Jane出品 | AI科技大本营(ID: rgznai100)【导读】来自意大利米兰理工大学的 Maurizio 团队近日发表了一篇极具批判性的文章,剑指推荐系统领域的其他数十篇论文,指出这些论文中基…

crontab 总结
2019独角兽企业重金招聘Python工程师标准>>> 1.写法 每三天执行一次:0 0 */3 * * root command,注意:* * */3 * * root command 这样写是不对的。其它每N小时执行一次也类似 (后续补充) 转载于:https://…

ubuntu安装thrift
ubuntu环境下安装thrift-0.10.0 1.解压 2.编译安装 ./configure -with-cpp -with-boost -without-python -without-csharp -with-java -without-erlang -without-perl -with-php -without-php_extension -without-ruby -without-haskell -without-go make sudo make install3.是…

AES(Advanced Encryption Standard) Intrinsics各函数介绍
AES为高级加密标准,是较流行的一种密码算法。 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 #…

轻松应对Java试题,这是一份大数据分析工程师面试指南
作者 | HappyMint转载自大数据与人工智能(ai-big-data)导语:经过这一段时间与读者的互动与沟通,本文作者发现很多小伙伴会咨询面试相关的问题,特别是即将毕业的小伙伴,所以决定输出一系列面试相关的文章。本…

【Elasticsearch 5.6.12 源码】——【3】启动过程分析(下)...
版权声明:本文为博主原创,转载请注明出处!简介 本文主要解决以下问题: 1、ES启动过程中的Node对象都初始化了那些服务?构造流程 Step 1、创建一个List暂存初始化失败时需要释放的资源,并使用临时的Logger对…

C++中的封装、继承、多态
封装(encapsulation):就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成”类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程&…

比尔盖茨护犊子 称iPad让大批用户沮丧
为什么80%的码农都做不了架构师?>>> 在5月6日接受美国CNBC电视台访问时,微软前任掌门人比尔盖茨维护了自家反响不那么好的Surface系列平板电脑,同时他还不忘吐槽了一把iPad。 当 谈到日渐颓败的PC市场时,盖茨称平板电…

小心陷阱:二维动态内存的不连续性
void new_test() {int** pp;pp new int*[10];for(int i0; i<10; i){pp[i] new int[10];}//pp[0], pp[1], ... , pp[9]在内存中连续;//a1 pp[0][0], pp[0][1], ... , pp[0][9]在内存中也是连续的;//a2 pp[1][0], pp[1][1], ... , pp[1][9]在内存中也是连续的;//...//a9 …

超酷炫!Facebook用深度学习和弱监督学习绘制全球精准道路图
作者 | Saikat Basu等译者 | 陆离责编 | 夕颜出品 | AI科技大本营(ID: rgznai100)导读:现如今,即使可以借助卫星图像和绘制软件,创建精确的道路图也依然是一个费时费力的人力加工过程。许多地区,特别是在发…
npm包发布记录
下雪了,在家闲着,不如写一个npm 包发布。简单的 npm 包的发布网上有很多教程,我就不记录了。这里记录下,一个复杂的 npm 包发布,复杂指的构建环境复杂。 整个工程使用 rollup 来构建,其中会引进 babel 来转…
设计模式之单例模式(Singleton)摘录
23种GOF设计模式一般分为三大类:创建型模式、结构型模式、行为模式。 创建型模式包括:1、FactoryMethod(工厂方法模式);2、Abstract Factory(抽象工厂模式);3、Singleton(单例模式);4、Builder(建造者模式)࿱…

关于知识蒸馏,这三篇论文详解不可错过
作者 | 孟让转载自知乎导语:继《从Hinton开山之作开始,谈知识蒸馏的最新进展》之后,作者对知识蒸馏相关重要进行了更加全面的总结。在上一篇文章中主要介绍了attention transfer,FSP matrix和DarkRank,关注点在于寻找不…
设计模式之建造者模式(生成器模式、Builder)摘录
23种GOF设计模式一般分为三大类:创建型模式、结构型模式、行为模式。 创建型模式包括:1、FactoryMethod(工厂方法模式);2、Abstract Factory(抽象工厂模式);3、Singleton(单例模式);4、Builder(建造者模式、生成器模式…

[置顶] webservice系列2---javabeanhandler
摘要:本节主要介绍以下两点,1.带javabean的webservice的开发和调用 2.handler的简单介绍及使用1.引言在之前的一篇博客webservice系列1---基于web工程上写一个基本数据类型的webservice中介绍了如何采用axis1.4来完成一个简单的webservice的开发流程(入参…

AI教育公司物灵科技完成战略融资,商汤科技投资
1月2日消息,从相关媒体报道,AI教育公司物灵科技近日完成了商汤的战略融资,本轮融资将用于产品迭代和扩大市场。 此前投资界曾报道,物灵科技已经获得1.5亿元Pre-A轮融资,当时具体资方未透露。 公开资料显示࿰…

Python之父发文,将重构现有核心解析器
原题 | PEG Parsers作者 | Guido van Rossum译者 | 豌豆花下猫转载自 Python猫(ID: python_cat) 导语:Guido van Rossum 是 Python 的创造者,虽然他现在放弃了“终身仁慈独裁者”的职位,但却成为了指导委员会的五位成员…