算法

阿里巴巴大数据产品最新特性介绍--机器学习PAI

爱⌒轻易说出口 提交于 2020-03-27 18:17:38
3 月,跳不动了?>>> 以下内容根据演讲视频以及PPT整理而成。 本次分享主要围绕以下五个方面: PAI产品简介 自定义算法上传 数加智能生态市场 AutoML2.0自动调参 AutoLearning自动学习 一、PAI产品简介与功能发展 1. PAI-Studio 在PAI的架构图中,最下层的是PAI的计算框架和数据资源。PAI可支持MaxCompute、OSS、HDFS和NAS等多种数据资源。在数据资源和多种计算框架基础之上,诞生出了PAI的最早形态:PAI-Studio——可视化建模实验平台,Studio中包括了两百多种算法,覆盖了数据预处理,特征工程,模型训练,评估预测等全链路的实验流程操作。用户可在PAI-Studio中以拖拽的方式构建实验,而无需复杂的操作。此外,PAI内置了鲲鹏计算框架,可支持百亿特征,百亿样本的超大规模矩阵训练。在最初建立过程中,PAI-Studio的定位目标为中级的算法工程师,即一个不需要很高的技术门槛就可以上手使用的算法平台。有了可视化建模Studio,PAI就可以拥有为用户提供业务支持,如构建推荐系统、金融风控、疾病预测或新闻分类等的能力。 2. PAI-EAS 然而,从Studio中算法和实验的构建,到真正成为用户可用的模型服务,其中间还存在一个gap,即如何将模型部署为在线服务。用户一般需要耗费较大的精力在此之上。为了解决这个问题

Java面试之JVM

♀尐吖头ヾ 提交于 2020-03-27 15:27:43
194. 说一下 JVM 的主要组成部分?及其作用? 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库接口(Native Interface) 组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集规范,并不能直接交给底层操作系统去执行,因此需要特定的命令解析器执行引擎(Execution Engine),将字节码翻译成底层系统指令,再交由 CPU 去执行,而这个过程中需要调用其他语言的本地库接口(Native Interface)来实现整个程序的功能。 195. 说一下 JVM 运行时数据区? 不同虚拟机的运行时数据区可能略微有所不同,但都会遵从 Java 虚拟机规范, Java 虚拟机规范规定的区域分为以下 5 个部分: 程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值,来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能,都需要依赖这个计数器来完成; Java 虚拟机栈(Java Virtual Machine

如何面对最强算法MD5被破译

社会主义新天地 提交于 2020-03-27 10:15:32
在2004年召开的国际密码学年会上,来自中国山东大学王小云教授的一篇关于"破译MD5、HAVAL-128、MD4以及RIPEMD-128算法"的 报告引起了轰动,报告中提到的新破译方法几乎标志着世界通信密码标准——MD5堡垒的轰然倒塌。一石激起千层浪,此前一直负责公开征集针对MD5的攻击而 设立的权威站点http://www.md5crk.com/宣布"由于MD5破译获得突破性进展,MD5破解项目(MD5CRK Project)即日停止",并开始提供该站点以往技术资料的下载,预计该站点也将在不久的将来完全关闭。面对MD5被破译,有人一声叹息,有人觉得不可 思议,更有人忧虑甚至恐慌......那么究竟MD5有什么来头?它被破译是否意味着"地球将不再旋转"?谁将成为它的继承者? 一、MD5是何方神圣? 所 谓MD5,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2、MD3、MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设 计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一 种保密的格式,关键之处在于——这种"压缩"是不可逆的。 为了让读者朋友对MD5的应用有个直观的认识

MD5简介

久未见 提交于 2020-03-27 09:19:25
md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电脑。这三个算法的描述和c语言源代码在internet rfcs 1321中有详细的描述(http://www.ietf.org/rfc/rfc1321.txt),这是一份最权威的文档,由ronald l. rivest在1992年8月向ieft提交。 rivest在1989年开发出md2算法。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的检验和追加到信息末尾。并且根据这个新产生的信息计算出散列值。后来,rogier和chauvaud发现如果忽略了检验和将产生md2冲突

C/C++ 数据结构之算法(面试)

独自空忆成欢 提交于 2020-03-27 08:16:46
数据结构中的排序算法。 排序算法的相关知识: (1)排序的概念:所谓排序就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。 (2)稳定的排序方法:在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的。相反,如果发生改变,这种排序方法不稳定。 (3)排序算法的分类(分为5类):插入排序、选择排序、交换排序、归并排序和分配排序。 (4)排序算法两个基本操作:<1>比较关键字的大小。 <2>改变指向记录的指针或移动记录本身。 具体的排序方法: 插入排序 <1>插入排序(Insertion Sort)的思想:每次将一个待排序的记录按其关键字大小插入到前面已经排好序的子记录中的适当位置,直到全部记录插入完成为止。 <2>常用的插入排序方法有直接插入排序和希尔排序。 (1)直接插入排序 <1>算法思路:把一个记录集(如一个数组)分成两部分,前半部分是有序区,后半部分是无序区;有序区一开始有一个元素r[0],无序区一开始是从r[1]到之后的所有元素;然后每次从无序区按顺序取一个元素r[i],拿到有序区中由后往前进行比较,每次比较时,有序区中比r[i]大的元素就往后移动一位,直到找到小于r[i]的元素,这时r[i]插到小元素的后面,则完成一趟直接插入排序。如此反复,从无序区不断取元素插入到有序区,直到无序区为空

蛇形填数(算法竞赛入门经典)

痞子三分冷 提交于 2020-03-27 02:01:02
#include<iostream> #include<vector> #include<algorithm> #define max 20 using namespace std; int a[max][max]; int main() { int x, y, n, tot = 0; cin >> n; memset(a, 0, sizeof(a)); tot = a[x = 0][y = n - 1] = 1; while (tot<n*n) { while (x + 1 < n&&!a[x + 1][y]) a[++x][y] = ++tot; while (y - 1 >= 0 && !a[x][y - 1]) a[x][--y] = ++tot; while (x - 1>=0 && !a[x - 1][y])a[--x][y] = ++tot; while (y + 1 < n&&!a[x][y + 1]) a[x][++y] = ++tot; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << a[i][j] << " "; } cout << endl; } system("pause"); return 0; }    来源: https://www.cnblogs.com

ssl-原理

元气小坏坏 提交于 2020-03-26 21:24:30
----------------------------------------------------SSL/TLS 介绍----------------------------------------------------------------------------------- 一: SSL/TLS 介绍 SSL 是安全套接层 (secure sockets layer), TLS 是 SSL 的继任者,叫传输层安全 (transport layer security)。 在明文的上层和 TCP 层之间加上一层加密,这样就保证上层信息传输的安全。如 HTTP 协议是明文传输,加上 SSL 层之后,就有了雅称 HTTPS。它存在的唯一目的就是保证上层通讯安全的一套机制。 SSL协议实现的安全机制包括: 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。 身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。 消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。 ----------------------------------------------------SSL/TLS 版本-----------------

Raft系列文章之一: 什么是Raft?

陌路散爱 提交于 2020-03-26 13:16:31
3 月,跳不动了?>>> 简单的说, Raft 是一种易于理解的一致性算法,其功能相当于Paxos。目前很多提供一致性服务的系统都采用Paxos, 例如Chubby, ZooKeeper, 那么为何还需要 Raft ?自Lamport 1998年提出Paxos以来, 该协议虽逐渐成为主流一致性协议,但也以难以理解而著名,实现起来比较困难。针对 Raft 难以理解的缺陷, Raft 设计的主要目的之一就是容易理解, Raft 将整个算法过程分解为若干个独立的子过程,并且详细描述了每个子过程如何实现,容易理解和实现。我自己也用 Java 实现了 Raft , 代码在 https://github.com/chicm/CmRaft , 本系列文章的最后我将介绍我的实现。 本文主要参考了 In Search of an Understandable Consensus Algorithm (Extended Version) ,也包含了我自己的理解。 那么什么是一致性算法? 一致性是分布式容错系统的基本功能,例如在分布式共享文件系统中,通常有多台服务器向客户提供文件服务,当客户通过其中一台服务器A向文件系统存储 了一个文件,如何保证能从服务器B获取刚刚保存的文件?其核心问题在于多台机器就某个值达成一致,一旦某个值达成了一致,客户向整个集群的任何一台机器请 求该值时都会得到同一个值

最长回文子串问题 O(n)算法 manacher URAL1297 HDU3068

不问归期 提交于 2020-03-26 01:44:39
先来看一道简单的题, ural1297 给定一个1000长度的字符串,求最长回文子串。 看起来很Naive,乱搞一下,O(n^2)都可以解决。 再来看这个题 HDU3068 120个110000长度的字符串,是不是感觉有点困难了?据说后缀数组也要TLE 给出一个O(n)的解决方案 manacher算法 很有趣的利用了回文子串的性质,进行递推更新。 转载自 http://blog.csdn.net/ggggiqnypgjg/article/details/6645824 这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法. 原文地址: http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/ 其实原文说得是比较清楚的,只是英文的,我这里写一份中文的吧。 首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长, 这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了。这一点一直是在做回文串问题中时比较烦的地方

左神算法进阶班2_7滑动窗口

别说谁变了你拦得住时间么 提交于 2020-03-26 01:13:02
Problem:   生成窗口最大值数组   【题目】     有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。     例如,数组为[4, 3, 5, 4, 3, 3, 6, 7],窗口大小为3时:     [4 3 5] 4 3 3 6 7 窗口中最大值为5     4[3 5 4] 3 3 6 7 窗口中最大值为5     4 3[5 4 3] 3 6 7 窗口中最大值为5     4 3 5[4 3 3] 6 7 窗口中最大值为4     4 3 5 4[3 3 6] 7 窗口中最大值为6     4 3 5 4 3[3 6 7] 窗口中最大值为7     如果数组长度为n,窗口大小为w,则一共产生n - w + 1个窗口的最大值。     请实现一个函数。     输入:整型数组arr,窗口大小为w。     输出:一个长度为n - w + 1的数组res,res[i]表示每一种窗口状态下的最大值。     以本题为例,结果应该返回{ 5,5,5,4,6,7 }。 Solution:   使用左右指针L, R,   R移一步,一个数进入窗口,L向右移动一步,一个数出窗口   L, R只能向右移动,且R > L   【求一个窗口的实时最大值】     使用双向链表,或双向队进行存储    R移动: