C/C++
鹰击丶长空
无名之辈
展开
-
列车实时数据通信协议(TRDP)探索之路【一】
前记:最近在开发TRDP协议项目,需求是在三层交换机上支持TRDP协议,故踏入不断研读协议深入源码之路。源码svn:https://svn.code.sf.net/p/tcnopen/trdp/ 可以下载最新的版本。编译:windows下可以使用VS工具直接编译相应代码 ;linux编译:cd trdp/configchmod a+x *mv buildsettings_posi...原创 2018-11-28 23:35:32 · 9799 阅读 · 10 评论 -
SimpeSortAlgorithm
#include <stdio.h>#include <string.h>//排序算法文件//算法1:冒泡排序void bubbleSort(int *arr, int size){ int i, j, temp; for (i = 0; i<size; i++) for (j = 0; j<size-i-1;j++){ if ...原创 2019-06-12 00:14:41 · 136 阅读 · 0 评论 -
【MOOC】Graph-Part One
终于从MOOC上跟陈姥姥学Graph了!图(Graph)>表示“多对多”的关系>一组顶点:通常用V(Vertex)表示顶点集合>一组边:通常用E(Edge)表示边的集合边是顶点对,有向边<v,w>表示从v指向w的边(单行线)不考虑重边和自回路ADTG(V,E)由一个非空的有限顶点集合v和一个有限边集合e组成操作集:对于任意图G,v,...原创 2019-06-04 22:31:12 · 149 阅读 · 0 评论 -
linux 内存分配
进程内存分配:每个进程所分配的内存由很多“段”组成:(地址递增方向)1.文本段:包含了进程运行的程序机器语言指令2.初始化数据段:包含了显式初始化的全局变量和静态变量3.未初始化数据段:包含了未进行显式初始化的全局变量和静态变量4.堆:向上增长5.栈:向下增长虚拟内存管理1.每个进程都有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址2.虚拟地址可以通...原创 2019-06-15 10:22:37 · 320 阅读 · 0 评论 -
Binary Tree -AVL
写在前面:对于AVL的印象一直停留在左旋、右旋的层次,具体的概念都已经忘记了。趁着复习二叉树的劲儿,又认真学习了一下AVL。这两天也看了不少关于AVL的资料和博客,这里感谢https://www.cnblogs.com/zhuwbox/p/3636783.html,博主写的很通俗易懂。感恩师兄,南无本师释迦牟尼佛(今天看了灵光寺舍利)。基本概念:AVL树的本质是BST,但它又有下面的特点:...原创 2019-06-02 23:31:06 · 199 阅读 · 0 评论 -
【MOOC】Binary Tree -Part III Heap
Heap 堆考虑堆的概念,可以先考虑<优先队列>,取出元素的顺序是按照元素的优先级大小,而不是进入队列的先后顺序,即每次取出最大值或者最小值,则对应了最大堆MaxHeap和最小堆MinHeap的概念。堆的两个特性:>用数组表示的完全二叉树>任意结点的关键字是其子树所有结点的最大值(或者最小值),满足从根结点到任意路径上结点序列的有序性最大堆的操作:&...原创 2019-05-29 23:34:37 · 111 阅读 · 0 评论 -
【MOOC】BinaryTree -Part II BST (Binary Search Tree)
Binary Search Tree一颗二叉树,可以为空;如果不为空,则满足下列性质:>非空左子树的所有键值小于其根结点的键值>非空右子树的所有键值大于其根结点的键值>左、右子树都是BSTBST操作的特殊函数Position Find(ElementType x, BinTree BST):从BST中查找元素X,返回其所在结点的地址Positi...原创 2019-05-28 22:22:24 · 135 阅读 · 3 评论 -
【MOOC】Binary Part -IV Huffman Tree && Huffman Coding
Huffman Tree带权路径长度(WPL):二叉树有n个叶子结点,每个叶子结点带有权值Wk,从根结点到每个叶结点的长度为lk,则每个叶子结点的带权路径长度之和就是WPL.最优二叉树或者哈夫曼树:WPL最小的二叉树哈夫曼树的构造方法:每次把权值最小的两颗二叉树合并。这里利用最小堆的特性,构造一个最小堆,每次返回最小的结点,返回两次则可以作为哈夫曼树的左右结点,权值为左右结点之...原创 2019-05-30 22:25:25 · 165 阅读 · 0 评论 -
【MOOC】Binary Tree-Part I
前记:大学时期学过的二叉树,N久没看。最近在跟MOOC浙大陈姥姥学习,温习一下。二叉树定义二叉树T:一个有穷的结点集合。这个集合可以为空;若是不为空,则它是由根结点和称之为左子树T-left和右子树T-Right的两个不相交的二叉树组成。二叉树具有左右顺序之分。特殊二叉树:斜二叉树(Skewed Binary Tree)。完美二叉树(Perfect Binary Tree) O...原创 2019-05-28 00:31:19 · 149 阅读 · 0 评论 -
String reverse order
1.String reverse order all string.#include <stdio.h>#include <string.h>/**"abcdefg"->"gfedcba"*/void reverse(char *p, char *q){ char tmp = 0; while(p<q){ /*exchange*/...原创 2019-05-22 23:15:47 · 166 阅读 · 1 评论 -
最大子列和问题
分治法:int Max3( int A, int B, int C ){ /* 返回3个整数中的最大值 */ return A > B ? A > C ? A : C : B > C ? B : C;} int DivideAndConquer( int List[], int left, int right ){ /* 分治法求List[left]到Li...原创 2019-05-19 21:15:27 · 123 阅读 · 0 评论 -
【APUE】线程-pthread
【线程标识】每个进程都有一个进程ID,每个线程也有一个线程ID。进程ID在整个系统中都是唯一的,但是线程ID不同,线程ID只有在它所属的进程的上下文中才有意义。#include <pthread.h>/*不同系统对于pthread_t结构定义不同,因此不能直接比较*/int pthread_equal(pthread_t tid1, pthread_t tid2);/...原创 2019-05-19 21:02:11 · 204 阅读 · 0 评论 -
【转】跟我一起写 Makefile
Makefile得好好学啊!RT,转自大佬的【跟我一起写 Makefile】目录:Makefile学习教程: 跟我一起写 Makefile0 Makefile概述 0.1 关于程序的编译和链接 1 Makefile 介绍 1.1 Makefile的规则 1.2 一个示例 1.3 make是如何工作的 1.4 makefile中使用变量 1.5 让make自动...转载 2019-04-14 14:39:40 · 242 阅读 · 0 评论 -
列车实时数据通信协议(TRDP)探索之路【四】
经过一段时间的学习,基于以太网交换机的TRDP PD开发调试结果已经正常了,故此,记录一下。TRDP基于生产者、消费者模型。TRDP PD 通信模式有两种,push和pull。在这两种模式中,网络设备又可以分为三种角色:publisher、subscriber、requester.publisher是数据的提供者,在push和pull模式中负责发送注册的comId的数据,即所谓的生产者...原创 2018-12-07 01:04:45 · 10089 阅读 · 11 评论 -
列车实时数据通信协议(TRDP)探索之路【二】
在【一】中已经对TRDP协议有了基本的了解,现在开始进行源码的深入了解。我checkout的是1.4.0.0的发布版,通过目录可以基本先了解大致结构。源码位于src目录下,/api提供了基本对外的API接口,/common包含了协议处理的核心代码,/vos包含了与操作系统对接的代码,支持了linux、VxWorks、Windows,操作系统接口大致为socket网络通信处理、内存管理以及任...原创 2018-12-01 11:40:54 · 7556 阅读 · 1 评论 -
列车实时数据通信协议(TRDP)探索之路【三】
TRDP协议中传输的PD(Process-Data)和MD(Message-Data)。PD主要用于列车控制,传输命令和状态信息,数据量大,要求高可靠性、实时性和确定性,一般为周期性传送。MD主要用于故障和诊断信息,数据量长短不一,一般都是按需传送,需要确保实时性。PD和MD通信方式都是基于了生产者/消费者模型,包含了PUSH和PULL操作,设备角色有publisher、subscri...原创 2018-12-03 01:29:59 · 13591 阅读 · 1 评论 -
const-常量指针和指针常量
const常量指针eg:const int *p;指针指向的内容是常量。因此,内容不可以改变,但是指针地址可以改变。指针常量eg:int *const p;指针是常量。因此,指针地址不可以改变,指向的内容可以改变。#include <stdio.h>int main(){ int m = 10, n =20; const int *p1 = &a...原创 2019-07-18 22:02:21 · 374 阅读 · 0 评论