首页
学习
活动
专区
工具
TVP
发布

xingoo, 一个梦想做发明家的程序员

专栏作者
805
文章
898809
阅读量
80
订阅数
Flink深入浅出: 资源管理(v1.11)
Flink在资源管理上可以分为两层:集群资源和自身资源。集群资源支持主流的资源管理系统,如yarn、mesos、k8s等,也支持独立启动的standalone集群。自身资源涉及到每个子task的资源使用,由Flink自身维护。
用户1154259
2020-10-26
1K0
Flink深入浅出: 应用部署与原理图解(v1.11)
Flink在1.11版本新增了一种部署模式,目前支持三种:Session 模式、Per job 模式、Application 模式,这三种模式主要在集群管理、资源隔离、用户main方法执行位置几个方面有所不同。
用户1154259
2020-10-26
1.1K0
共享栈
共享栈,即是两个栈使用同一段存储空间。 第一个栈从数组头开始存储,第二个栈从数组尾开始,两个栈向中间拓展。 当top1+1==top2或者top1==top2-1时,即staock overflow!. 与普通栈一样,共享栈出栈入栈的时间复杂度仍为O(1). 数据结构 typedef struct shareStack{ int data[MAXSIZE]; int top1; int top2; }shareStack; 出栈操作 该数据,仅存的是非负数,因此如果想要存储更复杂的操
用户1154259
2018-01-18
1.1K0
栈的基本操作就是出栈和入栈,这两个的时间复杂度都是O(1) 数据结构 typedef struct Stack{ int data[MAXSIZE]; int top; }Stack; 出栈操作 int Pop(Stack *s){ if(s->top == -1) return 0; s->top--; return s->data[s->top+1]; } 入栈操作 int Push(Stack *s,int num){ if(s->top
用户1154259
2018-01-18
4280
循环队列
循环队列类似栈,但是有两个口,一个专门用来入队,一个专门用来出队。由于入队出队不在一个端口,因此如果不适用循环队列,随着队列的使用,存储空间马上就被耗光了。在循环队列中,一个主要的知识点,就是如何判断队列为空,或者队列满。 这里主要有两个方法: 1 设置一个标记位,初始时,队列为空,我们设置flag=0;随着数据的使用,如果队满,设置flag=1; 2 使用一个空的数据位,这样rear指针永远也不能追上front指针。当front==rear时,队列即为空;当(rear-front)%SIZE==SIZE时
用户1154259
2018-01-18
4910
oracle数据结构
 数据类型: 1 字符数据:CHAR VARCHAR NCHAR NVARCHAR2 LONG CLOB NCLOB  2 数字数据类型:NUMBER 唯一用来存储数字型的类型 3 日期数据类型: 4 raw解释型 串联: ||   NUM1 || NUM2  = "12"(num1 =1 num2 = 2) NULL: NULL=NULL也为假。NULL不等于任何值,包括自己 表:行的集合 视图:通过SQL语句来定义的 索引:如果建立索引的列包含的值为NULL,那么索引不会包含这行数据 B*树的深度取决于
用户1154259
2018-01-18
5680
堆 栈-相关知识
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在
用户1154259
2018-01-17
7170
CIOCPServer的数据结构定义及内存池方案
为了避免频繁的申请释放内存,使用内存池来管理缓冲区对象和客户上下文对象使用的内存。 使用指针保存所有空闲的内存块,形成空闲列表。 申请内存时,这个指针不为NULL,就从空闲列表中取出一个来使用,如果取完,就真正的申请内存。                   1 缓冲区对象                程序使用CIOCPBuffer来描述per-IO数据,包含IO操作的必要信息,提交时,提交的就是CIOCPBuffer对象 下面是申请缓冲区对象代码: CIOCPBuffer *CIOCPServer::A
用户1154259
2018-01-17
6840
重叠(Overlapped)IO模型
基本思想:允许应用程序使用重叠数据结构一次投递一个或者多个异步IO请求。 提交IO请求完成后,与之关联的重叠数据结构中的事件对象受信,应用程序便可使用WSAVerlappedResult函数获取重叠操作结果。 1创建数据: SOCKET sListen = ::WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,                 NULL,0,WSA_FLAG_OVERLAPPED); 2传输数据:WSASend WSARecv(tcp)     WSASe
用户1154259
2018-01-17
1.9K0
希尔排序
使用希尔增量时排序的最坏为:O(n^2); 代码如下: 1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 template <typename Comparable> 5 void shellsort(vector<Comparable> & a) 6 { 7 for(int gap = a.size()/2; gap > 0; gap /= 2) 8 for(int i = gap;
用户1154259
2018-01-17
5200
堆排序
说白了,也就是大堆,或者小堆,通过删掉堆顶点,然后存入数组,来实现排序: 第一阶段:构建堆最多用2N次比较 第二阶段:第i次deleteMax最多用到2【logi】次比较, 总数最多2NlogN-O(N)次比较 代码: 1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 template <typename Comparable> 5 void heapsort(vector<Comparable> & a) 6
用户1154259
2018-01-17
5160
归并排序
采用分治的思想  以O(NlogN)最坏的情形运行时间运行 如果对merge的每个递归调用都采用局部声明一个临时数组,那么在任一时刻就可能有logN个临时数组处在活动期 代码如下: 1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 template <typename Comparable> 5 void mergeSort(vector<Comparable> & a) 6 { 7 vector<Co
用户1154259
2018-01-17
9730
快速排序
平均时间O(NlogN),最坏O(N^2) 主要过程四步: 1 如果S中元素为1 或者 0 ,直接返回 2 取S中的任一元素v,称为 枢纽元 3 将集合按照 枢纽元大小 分成两个集合 4 两个子集合递归调用2 - 3 选取枢纽元方法: 1错误方法:直接选取第一个 2安全方法: 随即选取一个枢纽元 3三数中值分割法:选取数组的中值 主要代码: 1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 template
用户1154259
2018-01-17
3770
二叉堆
容易证明: 一棵高为h的完全二叉树有2^h 到 2^(h+1)-1个结点。 这就意味着,完全二叉树的高是[logN] 特点: 任意位置i: 左儿子在位置2i上,右儿子在位置2i+1上,父亲在i/2上 一个堆数据结构将由一个Comparable数组和一个代表当前堆的大小的整数组成: 优先队列的接口: 1 template <typename Comparable> 2 class BinaryHeap 3 { 4 public: 5 explicit BinaryHeap ( int cap
用户1154259
2018-01-17
4670
插入排序的简单实现
最简单的排序算法了,每一次j--到对应的值,不会减到0,这个纠结我好久 1 #include "stdafx.h" 2 #include <iostream> 3 #include <vector> 4 using namespace std; 5 6 template <typename Comparable> 7 void insertionSort(vector<Comparable> & a) 8 { 9 int j; 10 for(int p=1 ; p<a.s
用户1154259
2018-01-17
4080
20120919-二叉树 数据结构《数据结构与算法分析》
又是一次的毕业季,羡慕嫉妒啊.... 二叉查找树类的框架: 1 template <typename Comparable> 2 class BinarySearchTree 3 { 4 public: 5 BinarySearchTree(); 6 BinarySearchTree(const BinarySearchTree & rhs) 7 ~BinarySearchTree(); 8 9 const Comparable & findMin() c
用户1154259
2018-01-17
5680
20120920-AVL树定义《数据结构与算法分析》
AVL树节点声明: 1 struct AvlNode 2 { 3 Comparable element; 4 AvlNode *left; 5 AvlNode *right; 6 int height; 7 8 AvlNode( const Comparable & theElement,AvlNode *lt,AvlNode *rt,int h=0):element ( theElement),left(lt),right(rt),height(t) 9 };
用户1154259
2018-01-17
5130
AVL树
详细描述,好像跟我自己写的差不多......不过终究是大神级别,讲的就是透彻 1. 概述 AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis。AVL树种查找、插入和删除在平均和最坏情况下都是O(log n),增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 2. 基本术语 有四种种情况可能导致二叉查找树不平衡,分别为: (1)LL:插入一个新节点到根节点的
用户1154259
2018-01-17
7460
伸展树
没看懂,多看几遍吧 1 简介: 伸展树,或者叫自适应查找树,是一种用于保存有序集合的简单高效的数据结构。伸展树实质上是一个二叉查找树。允许查找,插入,删除,删除最小,删除最大,分割,合并等许多操作,这些操作的时间复杂度为O(logN)。由于伸展树可以适应需求序列,因此他们的性能在实际应用中更优秀。 伸展树支持所有的二叉树操作。伸展树不保证最坏情况下的时间复杂度为O(logN)。伸展树的时间复杂度边界是均摊的。尽管一个单独的操作可能很耗时,但对于一个任意的操作序列,时间复杂度可以保证为O(logN)。 2 自
用户1154259
2018-01-17
1.2K0
B树 B-树 B+树 B*树
B树 即二叉搜索树:        1.所有非叶子结点至多拥有两个儿子(Left和Right);        2.所有结点存储一个关键字;        3.非叶子结点的左指针指向小于其关键字的子
用户1154259
2018-01-17
1.6K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档