- 博客(37)
- 资源 (7)
- 收藏
- 关注
原创 Flink-ExecutionGraph的构成
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录前言一、ExecutionGraph的详细构成ExecutionJobVertexIntermediateResult二、ExecutionGraph是如何生成的?总结前言JobManager 根据 JobGraph 生成 ExecutionGraph。ExecutionGraph 是 JobGraph 的并行化版本,是调度层最核心的数据结构。主要的变化如下:JobVertex 变成了
2021-10-25 23:15:53 413
原创 Flink源码-ExecutionGraph基本概念
用C++读取mysql数据库,编译时报错:致命错误: mysql/mysql.h:没有那个文件或目录编译中断。
2021-10-24 23:34:43 170
原创 Flink-JobGraph基本概念
JobGraph也是在client端生成的,我们看一下StreamGraph->JobGraph的变化:主要的变化有:StreamNode变成了JobVertex StreamEdge变成了JobEdge 增加了IntermediateDataSet Forward相连的StreamNode合并成一个JobVertexJobGraph的生成同样,我们进入debug模式,从execute()方法一路点点点,到了StreamingJobGraphGenerator.createJ.
2021-10-20 22:55:03 1264
原创 Flink 源码-StreamGraph基本概念
Flink的Graph有4层:Stream Graph - Job Graph - Execution Graph - 物理执行图如图所示,Stream Graph中主要包含了:StreamNode 和 StreamEdge实例代码: // get input data by connecting to the socket DataStream<String> source = env.socketTextStream(hostname, po.
2021-10-18 22:08:26 325
原创 ubuntu 1204 无法安装libmysqlclient-dev
解决ubuntu 1204下libmysqlclient-dev无法安装问题
2015-08-20 20:44:45 10006 1
原创 Qt多个信号连接到一个槽,在槽中识别信号的发送者方法
Qt是通过信号和槽的机制进行事件传递的,当有多个不同类型、或相同类型的物件的发送信号都通过一个槽来处理的时候,需要在槽中识别出这些信号然后做相应的处理。例如:在一个界面中有16个按钮(QPushButton)和4个(QRadioButton)这20个物件的SIGNAL(clicked(bool))都连接(connect)到同一个按键的处理槽中(void get_keyvalue(b
2015-06-22 16:21:38 3508
原创 C++学习之函数重载内幕
众所周知,重载(overload)是C++区别C的重要特征之一。所谓重载就是指在同一个作用域中,函数名相同,参数表不同的函数。那么重载在C++中到底时如何实现的呢? 是通过更换函数名来实现的。
2015-04-28 00:14:47 919
转载 C++学习之字符串转数字,数字转字符串
1. 字符串转数字 如将“32”转为32,将“3.1415”转为3.1415,将“567283”转为567283。使用://Convert string to integer, more @http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/int atoi ( const char * str );//C
2015-04-20 13:37:31 922
原创 <曾仕强论三国智慧-妄言害自己>观后感
妄言害自己1、不讲实在话不一定是欺骗,要看最后的结果。2、大局的前提下,很多小事情根本就不要去考虑。(顾全大局)3、一个人能够把后来的事情算的那么精准,这个人肯定不简单。(曹操)4、很多事情是好是坏,有时候到最后才能看到出来。
2014-01-20 19:18:33 2355 2
原创 <曾仕强论三国智慧-得意勿忘形>观后感
得意勿忘形1、一个人最怕的就是,他哪里痛,你偏要碰他的痛点。(一个人过分伤害别人,最后一定是伤害自己)2、一个人没有那个实力,就不要占据那个位置。3、天下没有不可能的事情。4、形势比人强。(一旦形势造成了,谁都没有办法挽救)5、当一个人处在顺境的时候,一定要沉得住气。因为老天不一定样样随人愿。6、一个人最后还是要靠自己。
2014-01-20 18:41:39 2415
原创 C++学习之构造函数初始化式
众所周知,构造函数的job就是保证每个对象的数据成员具有合适的初始值//假设name(string),stuNum(int),grade(int)都是类myClass的数据成员class myClass::myClass(){ name = "1班"; stuNum = 60; grade = 2;}一直认为上面构造函数的函数体内三行便是对数据成员的初始化,今天一
2013-06-16 10:10:18 1220
原创 C++学习之实现链表的增删查。
线性表的链表描述,废话少说,上代码。节点头文件 ChainNode.h:#ifndef CHAIN_NODE_H#define CHAIN_NODE_H#include "ChainList.h"template class ChainNode{ //friend ChainList;public: ChainNode(); ~ChainNode(); t
2013-06-12 09:31:38 1111
转载 C++中的NULL和nullptr
0.NULL的前世今生对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价(别惊讶,这是真的)。NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(macro)。在C中,习惯将NULL定义为void*指针值0:1#define NULL (void*)0
2013-06-07 15:40:10 4345
原创 C++学习之用数组实现顺序表
开始学习数据结构,路还长,加油!!用C++的template实现顺序表SequenceList ,第一次上传完整代码,比较菜。SequenceList.h:#ifndef SEQ_LIST_H#define SEQ_LIST_H#include #include //模板的声明和定义要在同一个头文件中//创建一个顺序表类模板template class Sequ
2013-06-07 14:23:12 2042
转载 placement new 操作符
在item16和17里大师曾经介绍过,一个new的过程大致分两步: - 申请内存 - 调用构造函数构造新对象如果第一步成功而第二步失败,一个成熟的系统应该能回撤第一步,释放刚分配的内存空间。如果第一步用的是普通的new函数,C++是能够找到与之匹配的delete函数的。//normal form of new operatorvoid* operator n
2013-05-31 10:15:50 781
转载 10步让你成为更优秀的程序员
原文出处这篇文章要介绍的,是我作为专业程序员这些年来学到的能真正提高我的代码质量和整体工作效率的10件事情。1. 永远不要复制代码不惜任何代价避免重复的代码。如果一个常用的代码片段出现在了程序中的几个不同地方,重构它,把它放到一个自己的函数里。重复的代码会导致你的同事在读你的代码时产生困惑。而重复的代码如果在一个地方修改,在另外一个地方忘记修改,就会产生到处是bug,它
2013-04-12 10:32:58 656
转载 C++学习笔记之操作符重载
原文链接 点击打开链接什么是操作符重载?操作符重载可以分为两部分:“操作符”和“重载”。说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载。运算符重载和函数重载的不同之处在于操作符重载重载的一定是操作符。我们不妨先直观的看一下所谓的操作符重载:#include using namespace std; int main()
2013-04-10 09:35:36 832
原创 C++学习笔记之操作符使用注意。
1、赋值表达式是有值的,就是左操作数的新值。2、sizeof 操作符判断它的操作数的类型长度 , 以字节为单位。操作数既可以是个表达式,亦可以是类型名:sizeof( int ) sizeof x 第一个表达式返回整形变量的字节数 , 第二个返回变量x所占的字节数。当sizeof操作数是数组名时,返回该数组的长度。一定要注意:判断表达式
2013-01-31 10:35:32 890 1
转载 C++的五种内存存储区
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在
2013-01-11 19:06:02 687
原创 Ubuntu 下QT设计QMainWIndow ---菜单栏始终不显示?
今天想用QT协议个ARM的上位机,在windows下设计完成之后 调试 菜单栏 正常显示,可是将代码移植到Ubuntu下之后一直不显示菜单,上网搜。。。给出各种复杂的说法。。。突然想起来 Ubuntu 下的菜单栏 是显示在系统的左上角的,重新运行 发现真的是。。。汗 叹息 自己, 没文化 真可怕
2012-10-28 15:31:35 2714 5
原创 C++学习笔记之继承层次中的函数调用。
不妨将继承层次中的函数调用按照调用方式分类:一、直接通过对象调用:1、调用非虚函数。众所周知,一个派生类对象(public继承)是有两部分组成的,基类对象部分和派生类自己的部分,如果用派生类对象调用某一非虚函数(假设该函数在基类中为public)nvfcn() , 则编译器首先在派生类部分中查找该函数名字:若找到,则进行类型检查,检查正确-->调用、不正确-->报错;若找不到,则到基类中查
2012-10-14 14:53:25 1787 3
转载 C++的内存管理
原文出处这篇文章是我在学习高质量C++/C编程指南中的第7章"内存管理"后的一篇笔记,之前我也写过相关的文章指针以及内存分配,但我感觉那篇还不是很好,这篇我很把它更完善一些一.内存的常见分配方式 1. 从静态区分配,一般是全局变量和static类型变量 2.从栈区分配内存,一般是局部的变量,会随着所在函数的结束而自动释放
2012-10-10 09:48:48 581
转载 容器适配器的理解(转)
原文链接首先,我们要明白适配器是干什么的?其实就是一个接口转换装置,是得我们能用特定的方法去操作一些我们本来无法操作的东西。举一个例子,比如你的一个设备支持串口线,而你的电脑支持的是usb口,这时候,我们没有必要重新买一个支持usb的设备,只需要一根串口转usb口的小玩意,让你的设备能够连接到usb插口上,而它就是适配器。那么C++中的容器适配器是干什么的呢?可以做一个类比,我们已
2012-09-25 10:45:58 665
原创 c++学习笔记之函数重载与const的关系
函数重载与const的关系:1、如果形参是非引用类型的,则下面两个函数是编译报错的(error C2084: 函数“void rldFunction(int)”已有主体)void rldFunction(int paraIn){ cout << paraIn << endl;}void rldFunction(const int paraIn){ cout << paraI
2012-09-19 16:30:02 757
原创 C++ 学习笔记之二:类成员变量的初始化
1、可采用构造函数的初始化列表:Book::book():size(100),weight(50){}//假设size weight 均为int类型 类名为Book2、若采用默认的构造函数(或者说编译器创建的构造函数), 则有: A 、如果该对象在全局作用域中定义(不在任何的函数中),或者是定义为静态局部对象:类类型由构造函数初始化 , 内置类型的成员变量初始化为0
2012-09-18 17:21:57 549
原创 C++ 学习笔记之一
1、c中可以定义可变形参的函数(可变形参 以前还没听过呢),最熟悉的printf() 就是典型的可变形参的函数。void myFunciton(paraList,...);void myFunction(...);那么可变形参的函数跟void形参的函数什么区别的啊?当然有区别了,调用可变形参的函数时是可以传递参数的奥!!2、不要以为返回值是void 类型的函数中就没有return
2012-09-17 17:06:24 548
转载 CPP 中的8进制 10进制 16进制
1、C和C++都没有提供二进制数的表达方法。2、C,C++语言中,如何表达一个八进制数呢? 如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。 所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进
2012-09-05 15:06:49 2273
转载 软件开发的“三重门”
自从上次写了“程序员技术练级攻略” 以来,就觉得似乎还有很多东西没有谈到,但当时没有继续思考了。而春节前有人问我,是做底层技术,还是做业务。这问题让我思考了很多,不由自主地回顾了一 下我这十多年的软件开发经历,并顺着整理分类了一下自己解决过的若干问题,还发散想了很多,经过了一个春节假期的发酵,产生了下面这篇文章。前言这篇文章必然是通过我的个人经历来写的。所以,我先说说个人经历吧。我的经历基
2012-09-04 10:16:45 1678
转载 lwIP raw API
原文出处:点击打开链接简介lwIP提供了两套API:1.底层的基于回调(callback)的raw API2.高层的顺序模型的API(类似BSD socket) 顺序模型的API为普通的顺序程序提供使用协议栈的API,和BSD风格的API很相似,也是基于阻塞的open-read-write-close模式。鉴于TCP/IP协议栈本身就基于时间的。所
2012-09-01 14:35:44 1211
原创 C/C++语言中的反斜杠!!!
今天碰到一个某公司的笔试题(被鄙视了): char s[] = "\\141\141abc\t"; cout << s << endl; cout 答案:\141aabc9(如果你是大牛 一看就知道答案 下面的东西就别看了 , 就放小弟一马,别鄙视我了)前两个 字符大家比较熟悉,肯定是一个 \ ,后面的141 是三个字符 , 但是到了 \141 我就烦糊涂了, 到底是几个
2012-08-31 21:04:34 4161
原创 我对Qt中信号与槽的误解!!
众所周知 qt中一个信号可以连接两个槽, 今天想体验一下,写了个简单的UI 文件,包含一个简单的lineEdit 、一个pushButton 写了两个connect 如下:connect(pushButton , SIGNAL(clicked()) , this, SLOTS(serverOpen()));connect(pushButton , SIGNAL(clicked()) ,
2012-08-29 15:02:57 1128
转载 Qt4中ui文件的使用方法
ui文件的使用是在Qt4中不太容易上手的一点,因为很多同学都是从Qt3升级到Qt4的,在升级过程中发现这部分的变化非常之大,让人有点无所适从。 Qt3的designer简直可以媲美一个ide,可以编辑代码,可以管理工程, 可是到了Qt4却仿佛是退化到了史前一万年,我们又来到那个茹毛饮血的蛮荒时代,工程管理的功能被彻底剔除到designer以外。Trolltech这样做也是有道理的,在他
2012-08-27 21:04:02 1058
转载 C/C++数组名与指针区别深入探索
C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字符串为例比较指针与数
2012-02-09 14:37:32 947 1
Stellaris驱动库用户指南
2012-08-23
使用_Eclipse_和_Java_SE_6_创建独立_Web_Services_应用程序
2011-12-09
程序设计实践
2011-09-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人