目录
Labelme
LabelImg
Labelbox
PowerPoint
WPS
NIrCMD
Doxygen
U-Boot
frp
Microsoft Visual C++ (MSVC)
Intel MKL
LLVM
BLAS
cuDNN
AMI
OpenMPI
Eigen
xterm
turbo boost
wheel
NEON
Redis
OpenAI Gym
中文分词工具
NCCL(NVIDIA Collective Communication Library)
LMDB:LightningMemory-Mapped Database
Sphinx
Versioneer
Docker
MKL-DNN
MSYS2
OpenNMT
Slurm
Hadoop
HDFS
MapReduce
HBase
Hive
Pig
Sqoop
Flume
HUE
ZooKeeper
Oozie
数据类型
SequenceFile
MapFile, SetFile, ArrayFile 及 BloomMapFile
Spark
Spark Core
Spark SQL
Spark Streaming
Storm
Canal
Google Compute Engine
DNNL
Jupyter Notebook
OpenSSL
PMD
GNU
Node.js
Neo4j
Flask框架
Labelme是一个图像标注软件,使用 Python 语言编写,图形界面使用Qt。
Labelme能对图像进行多边形、矩形、圆形、多段线、线段、点形式、flag 形式的标注。
Labelme可以在Ubuntu、macOS、Windows操作系统上使用。
Labelme以JSON文件存储标注信息。
LabelImg是一个图像标注软件,使用 Python 语言编写,图形界面使用Qt。
可以标注三种格式。
1.PascalVOC标签格式,保存为xml文件
2.YOLO标签格式,保存为txt文件
3.CreateML标签格式,保存为json文件
Labelbox是一个图像标注软件。
Microsoft Office PowerPoint是微软公司的演示文稿软件。用户可以在投影仪或者计算机上进行演示,也可以将演示文稿打印出来,制作成胶片,以便应用到更广泛的领域中。
WPS指WPS OFFICE。WPS Office是由北京金山办公软件股份有限公司自主研发的一款办公软件套件,可以实现办公软件最常用的文字、表格、演示、PDF阅读等多种功能。
NIrCMD是一个小命令行实用工具,允许您在不显示任何用户界面的情况下执行一些有用的任务。通过使用简单命令行选项运行NIMRCD,可以在注册表中写入和删除值和键,将值写入INI文件,拨号到Internet帐户或连接到VPN网络,重新启动Windows或关闭计算机,创建文件快捷方式,更改创建/修改日期。一个文件,改变你的显示设置,关闭你的显示器,打开你的CD-ROM驱动器的门,以及更多…
使用
这款软件是一个独立的可执行程序,不需要任何的安装过程或者额外的dll文件支持。只需要把exe文件复制到任何指定的文件夹,并且根据你的需要添加你需要的命令选项运行即可。推荐复制NirCmd.exe到Windows目录,或者复制到任何系统中path环境变量中所列出的路径下,这样你就不需要在每次运行时输入NirCmd的完整路径。
如:下载,解压,然后复制nircmd.exe/nircmdc.exe到系统盘windows文件夹下
打开cmd
输入相应的nircmd 命令即可
例子:切换windows应用窗口
nircmd win activate title "窗口名称(如无标题 - 记事本)"
或者通过模拟键盘的方式
nircmd sendkeypress alt+tab
Doxygen是一个开源软件,它类似javadoc,能够根据源代码和源代码中特定格式的注释,生成文档和UML图(如果要生成UML图,需要下载可选组件Graphviz)的。多平台支持(Linux, Windows, Mac),多编程语言支持(C++, C, Java, Python, Fortran, VHDL, PHP, C#等等)。
Das U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。
反向代理软件,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议
MSVC is an integrated development environment (IDE) product from Microsoft for the C, C++, and C++/CLI programming languages.
全称 Intel Math Kernel Library,提供经过高度优化和大量线程化处理的数学例程,面向性能要求极高的科学、工程及金融等领域的应用
是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本
SelectionDAG是LLVM指令选择的基础框架, 不论是O0编译时使用的FastISel还是O2编译时使用的SelectionDAGISel都会使用SelectionDAG来描述输入的程序流. 将输入的IR转换成SelectionDAG的过程被称作lowering, 在lowering之前我们通过IR表示一段程序, 在lowering之后我们使用SelectionDAG来描述同一段程序.
basic linear algebra subprograms,基础线性代数子程序
其实现经常针对特殊的机器进行优化,比较著名的·BLAS库有
ACML, ATLAS, MKL, OpenBLAS。许多常见的数值软件均采用兼容
BLAS规范的实现库来进行线性代数计算,比如
Matlab, Numpy, Mathematica。
其中,Level 1 BLAS
主要提供向量操作
Level 2 BLAS
提供矩阵向量操作(gemv)
而Level 3 BLAS
则提供广义矩阵乘积操作(gemm)
NVIDIA CUDA深度神经网络库
Amazon系统映像
A High Performance Message Passing Library
是一个线性算术的C++模板库,包括:vectors, matrices, 以及相关算法。
是一个X Window System上的标准虚拟终端。用户可以在同一个显示器上开启许多xterm,每一个都为其中运行的进程提供独立的输入输出(一般来说此进程是Unix shell)。
英特尔睿频加速技术,是英特尔酷睿 i7/i5 处理器的独有特性,这项技术可以理解为自动超频。
是一种二进制的发布方式
ARM NEON 技术是ARMv7体系结构的可选组件。NEON是针对高级媒体和信号处理应用程序以及嵌入式处理器64/128位混合SIMD技术,它是作为ARM内核的一部分实现的,但有自己的执行管道和寄存器组,该寄存器组不同于ARM核心寄存器组。 NEON支持整数、定点和单精度浮点SIMD运算。这些指令在ARM和Thumb-2中都可用。
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
是一个用于开发和比较强化学习算法的工具包。 gym 不对代理的结构做任何假设,并且与任何数值计算库兼容,例如 TensorFlow 或 Theano。
THULAC、Jieba
英伟达多GPU通信库
一款开源的高效快速的内存映射数据库,C语言编写,基于B+树索引,支持MVCC事务处理。它不是一个需要独立运行的数据库管理进程,只要在需要访问lmdb数据库的代码里引用lmdb库,给出数据库所在目录,就能方便地实现读写lmdb数据库。
是一款基于SQL的高性能全文检索引擎
Versioneer is a tool to automatically update version strings (in setup.py and the conventional ‘from PROJECT import _version’ pattern) by asking your version-control system about the current tree.
ocker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
Docker镜像是由多个文件系统(只读层)叠加而成,当启动一个容器的时候,Docker会加载只读镜像层并在其上(镜像栈顶部)添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏。当删除Docker容器,并通过该镜像重启时,之前的修改将会丢失。在Docker中,只读层和顶部的读写层的组合被称为联合文件系统(Union File System)。
Docker镜像可以理解成多个只读文件叠加而成,因此镜像是只读的,当镜像运行起来时就相当于在只读的镜像外包裹了一层读写层变成了容器。当删除容器之后,使用镜像重新创建一个容器时,此时的镜像的只读层和原来一样,只是在读写层的修改会全部丢失。
为了能够保存(持久化)数据以及共享容器间的数据,Docker提出了Volume数据卷的概念。简单来说,Volume数据卷就是目录或文件,可以绕过默认的联合文件系统,以正常的文件或目录的形式存在于宿主机上。Docker使用Volume实现数据的持久化,不仅如此,Volume还能帮助容器和容器之间、容器和主机之间共享数据。
它是由Intel开发和维护的一个开源算法库,应该很多代码是出自Intel另一个闭源算法库mkl。从其他地方看到这个库NB的地方是用了JIT相关的一些技术,可以根据当前的CPU类型动态的使用最佳算法来计算。
MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境。同时它也是一个在Cygwin (POSIX 兼容性层) 和 MinGW-w64(从"MinGW-生成")基础上产生的,追求更好的互操作性的 Windows 软件。
OpenNMT 是哈佛大学 NLP 研究小组开源的产品级翻译工具,在其官网上有多种语言代码,有基于 Torch/Pytorch,也有基于tensorflow的。该框架一经发布便被谷歌采用,是迄今为止最能代表神经机器翻译前沿技术的开源工具之一。
Slurm工作调度工具是面向Linux和Unix类似内核的免费和开源工作调度程序,由世界上许多超级计算机和计算机集群使用。 它提供了三个关键功能。 首先,它在一段时间内为用户分配对资源(计算机节点)的独占和/或非独占访问权限,以便他们可以执行工作。 其次,它提供了一个框架,用于在一组分配的节点上启动,执行和监视工作(通常是并行作业,例如MPI)。 最后,它通过管理待处理作业队列来仲裁资源争用。
Slurm是TOP500超级计算机中约60%的工作负载管理器,其中包括天河二号,在2016年之前,它是世界上速度最快的计算机。
Slurm使用基于希尔伯特曲线调度或胖树网络拓扑的最佳拟合算法来优化并行计算机上任务分配的局部性。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。
Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
Hadoop是一个实现了mapreduce模式的开源的分布式并行编程框架。
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。
Pig是Hadoop数据操作的客户端,是一个数据分析引擎,采用了一定的语法操作HDFS中的数据。
Pig应该说是一种语言,有人说Pig是类SQL的语言,我这里只能说它的功能类似Sql语言和数据库的关系,而且这里的Sql更像是PLSQL而不是标准SQL,Hadoop中更像标准Sql的应该是Hive或者叫HiveQL,它的语言比较像Shell脚本,可以嵌入Hadoop的JAVA程序中,从而达到简化代码的功能,Pig的脚本叫Pig Latin。
之所以说Pig是一个数据分析引擎,是因为Pig相当于一个翻译器,将Pig Latin语句翻译成MapReduce程序,而Pig Latin语句是一种用于处理大规模数据的脚本语言。Pig Latin可完成排序(Order By)、过滤(Where)、求和(Sum)、分组(Group By)、关联(Join)等操作,支持自定义函数;Pig Latin是把类似Sql的语句转换成MapReduce过程进行处理,减少Java 代码的书写,Pig的运行方式有Grunt Shell方式,脚本方式和嵌入式方式。
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
HUE=Hadoop User Experience
Hue是一个开源的Apache Hadoop UI系统,由Cloudera Desktop演化而来,最后Cloudera公司将其贡献给Apache基金会的Hadoop社区,它是基于Python Web框架Django实现的。
通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job,执行Hive的SQL语句,浏览HBase数据库等等。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
Oozie是一个用于管理Apache Hadoop作业的工作流调度程序系统。
Oozie Workflow job是由多个Action组成的有向无环图(DAG)。
Oozie Coordinator job是根据时间(频率)和数据可用性触发的可重复执行的Oozie Workflow job(简单讲就是根据时间或数据条件,规划workflow的执行)。
Oozie与Hadoop技术栈的项目集成,支持多种类型的Hadoop作业(例如Java map-reduce,Streaming map-reduce,Pig,Hive,Sqoop和Distcp,Spark)以及系统特定的工作(例如Java程序和shell脚本)。
Oozie是一个可水平扩展,可靠和可使用扩展插件(scalable, reliable and extensible)的系统。
LongWritable
import org.apache.hadoop.io.LongWritable;
接收 long 类型的构造 LongWritable(long value)
向 long 类型的转换 long get();
sequenceFile文件是Hadoop用来存储二进制形式的
SequenceFile 是Hadoop 的一个基础数据文件格式,后续讲的 MapFile, SetFile, ArrayFile 及 BloomMapFile 都是基于它来实现的。
MapFile – 一个key-value 对应的查找数据结构,由数据文件/data 和索引文件 /index 组成,数据文件中包含所有需要存储的key-value对,按key的顺序排列。索引文件包含一部分key值,用以指向数据文件的关键位置。
SetFile – 基于 MapFile 实现的,他只有key,value为不可变的数据。
ArrayFile – 也是基于 MapFile 实现,他就像我们使用的数组一样,key值为序列化的数字。
BloomMapFile – 他在 MapFile 的基础上增加了一个 /bloom 文件,包含的是二进制的过滤表,在每一次写操作完成时,会更新这个过滤表。
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。 Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。 Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。
Spark的基础,底层的最小数据单位是:RDD ; 主要是处理一些离线(可以通过结合Spark Streaming来处理实时的数据流)、非格式化数据。它与Hadoop的MapReduce的区别就是,spark core基于内存计算,在速度方面有优势,尤其是机器学习的迭代过程。
Spark SQL 底层的数据处理单位是:DataFrame(新版本为DataSet
Spark Streaming底层的数据处理单位是:DStream ; 主要是处理流式数据(数据一直不停的在向Spark程序发送),这里可以结合 Spark Core 和 Spark SQL 来处理数据,如果来源数据是非结构化的数据,那么我们这里就可以结合 Spark Core 来处理,如果数据为结构化的数据,那么我们这里就可以结合Spark SQL 来进行处理。
Storm是一个分布式计算框架,主要由Clojure编程语言编写。最初是由Nathan Marz及其团队创建于BackType,该项目在被Twitter取得后开源。它使用用户创建的“管(spouts)”和“螺栓(bolts)”来定义信息源和操作来允许批量、分布式处理流式数据。最初的版本发布于2011年9月17日。
Storm应用被设计成为一个拓扑结构,其接口创建一个转换“流”。它提供与MapReduce作业类似的功能,当遇到异常时该拓扑结构理论上将不确定地运行,直到它被手动终止
2013年,Apache软件基金会将Storm纳入它的孵化计划。
canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。
Google Compute Engine是一个基础架构服务,可以让你用Google的服务器来运行Linux的虚拟机,得到更强大的数据运算能力。
DNNL此前叫做MKL-DNN,是Intel专为深度学习网络(DNN)打造的数学内核库(MKL)
Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。
需要特别说明的是“单元格的状态”,有Code,Markdown,Heading,Raw NBconvert。其中,最常用的是前两个,分别是代码状态,Markdown编写状态。Jupyter Notebook已经取消了Heading状态,即标题单元格。取而代之的是Markdown的一级至六级标题。而Raw NBconvert目前极少用到。代码单元是编写代码的地方,按下Shift+Enter运行代码,左侧In[]内编号代表运行次序。Markdown单元执行Markdown语法规范,按下Shift+Enter运行显示格式文本。
在计算机网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。 SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
PMD (Programming Mistake Detector) 是一个开源的静态代码检查工具。
是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU's Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。
Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。