自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (5)
  • 收藏
  • 关注

原创 JSON序列化和反序列化

一、JSON数据的三种形式1、对象var user={ "name": "Tom", "role":"student" };2、数组var userlist=[ {"name": "Tom", "role":"student"}, {"name": "Jhon", "role":"stude...

2019-09-16 19:40:07 140

原创 -webkit-box使用方法和示例

-webkit-box用于移动动设备自适应布局,实现横列的流体布局1、在需要实现流体布局的子元素的直接父元素中添加属性:display:-webkit-box;2、需要对父元素按比例划分成块的,需要在子元素中添加属性:-webkit-box-flex:1; width:0; width:0; =>包含子元素自身的内容块长度来划分父元素,否则会除去子元素内容所占的长度,剩余空...

2019-09-09 20:15:06 1297

原创 归并排序

// test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <vector>using namespace std;vector<int> remerge(vector<int> left, vector<int> right) ...

2018-04-25 23:44:42 96

原创 引发了异常: 读取访问权限冲突。 p 是 0xCCCCCCCC。

// test.cpp : 定义控制台应用程序的入口点。//输入一个链表,反转链表后,输出链表的所有元素。#include "stdafx.h"#include <iostream>using namespace std;struct ListNode { int val; struct ListNode* next; ListNode(int n) { val...

2018-04-08 15:10:11 25124 3

原创 快速排序

快速排序:从序列中挑出一个元素,作为"基准"(pivot),我选择第一个元素作为基准把所有小于等于基准值的元素放在基准前面,所有大于基准值的元素放在基准的后面,这个称为分区(partition)操作:具体实现是:base为选择的基准值(第0个元素),left指向第1个元素,right指向最后1个元素。如果vec[left]<=base,则left往后移一个位置,如果vec[right]&gt...

2018-03-09 22:06:11 116

原创 堆排序

堆排序:从小到大(小顶堆:依次pop出最小的元素)方法1:基于堆的插入insert和删除pop两个操作进行的:先将数组中要排序的数值依次插入到小顶堆vec中,全部插入后,再将小顶堆的顶部数值依次pop出来,将剩余的元素形成小顶堆,再pop出第二小的元素。。。以此类推。此时,需要在class中新建两个vector成员变量用于保存插入进来的值和pop出去的最小值#include <iostrea...

2018-03-09 15:04:51 103

原创 冒泡排序、选择排序和插入排序

引用:https://www.cnblogs.com/eniac12/p/5329396.html注意:当直接对main函数中传入的vector操作时,需要传入引用,否则输出的结果不会改变。1、冒泡排序:比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一...

2018-03-09 15:01:47 181

原创 用堆实现最小的K个数的查找:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

#include <iostream>#include <vector>using namespace std;class Solution {public: vector<int> heap; void insert(int val){ heap.push_back(val); int index=he...

2018-03-07 17:22:32 1192

原创 大顶堆的实现:插入insert和删除pop(C++)

#include <iostream>#include <vector>using namespace std;class bigheap{ //大顶堆public: vector<int> heap; //堆的底层:数组//大顶堆插入一个数:先将要插入的数存放在堆的最后(即容器的末尾,下标为index),// 再与其父节点(下标为(...

2018-03-07 14:08:21 2499

原创 小顶堆的实现:插入insert和删除pop(C++)

#include <iostream>#include <vector>using namespace std;class litterheap{ //小顶堆//private:public: vector<int> heap;//堆的底层:数组//小顶堆插入一个数:先将要插入的数存放在堆的最后(即容器的末尾,下标为index),//...

2018-03-07 13:56:05 849

原创 C++:前序中序后序非递归实现

(1)前序遍历:根左右vector Node(TreeNode* pRoot) { vector vec; stack s; //TreeNode* p; if(pRoot==NULL) return vec; while(!s.empty()||pRoot) {

2018-01-21 15:29:38 274

转载 NS2:编写一个定时器

一个定时器通常有如下的结构:1、声明:在将要使用到定时器的类里面,将定时器声明为friend,同时声明出一个定时器对象。class MAAODV: public Agent {    ……    friend class maAntTimer;    ……    ……    maAntTimer      atimer;

2017-12-14 11:21:43 128

原创 Linux(Ubuntu系统)下安装Aqua-sim

出现问题:1.make: *** [tk3d.o] 错误 1tk8.5.10 make failed! Exiting ...安装libx11-dev可以解决问题:输入:sudo apt-get install libx11-dev2.checking for X... configure: error: Can't find X include

2017-11-15 20:35:04 1604 4

原创 关于gnuplot每次启动都要配置环境变量的问题(Linux系统中)

gnuplot每次启动都要重新配置环境变量:source /etc/profile,原因是gnuplot的环境变量没有加入到用户环境变量中或系统环境变量中。解释一下系统环境变量和用户环境变量:用户环境变量只对某个用户有效,而系统环境变量则对所有用户均有效。用户环境变量所在路径:用户目录下的.profile或.bashrc文件系统环境变量所在路径:/etc下的profile和bashrc

2017-11-15 17:22:57 896

原创 友元friend和继承(C++)

friend :友元可以访问类的private和protected数据。基类的友元和基类本身可以访问基类的private成员,派生类不能访问基类的private成员。派生类的继承:1、公有继承(public inheritance):基类的public成员在派生类中为public成员,基类的protected成员在派生类中为protected成员。2、受保护继承(prote

2017-11-01 20:51:28 911

原创 虚函数(C++)

在基类中用virtual声明成员函数为虚函数,定义的虚函数可以在派生类中重新定义,为次函数赋予新的功能。在派生类中重新定义此虚函数时,要求函数名、函数类型、函数形参个数和类型全部与基类中的一致。虚函数体现C++的多态性:1、如果调用非虚函数,则无论实际对象是基类类型还是派生类类型,都执行基类类型所定义的函数。2、如果调用虚函数,则知道运行时才能确定调用的哪个函数,运行的虚函数是引用

2017-11-01 11:27:48 153

原创 inline内联函数

inline内联函数:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置,相当于宏替换。好处:内联函数可以消除函数调用和返回所带来的开销(寄存器存储和恢复),坏处:由于每当代码调用到内联函数,就需要在调用处直接插入一段该函数的代码,所以程序的体积将增大对时间要求比较高,而本身长度又比较短的函数定义成内联函数。内联函数必须在使

2017-11-01 10:50:02 132

转载 NS2整体实现机制(转)

1. NS的整体的实现固定网络的仿真是通过下面三层合作来实现的。 Application这个层是实现数据流的层次。Agent这个层是实现所有各层协议的的层次。Node这个部分由多个分类器(Classifier)实现了所有接收数据包进行判断是否进行转发或接收到Agent的部分。Link实现了队列、时延、Agent、记录Trace等一系列的仿真问题。2.      

2017-10-30 16:44:28 350

原创 this指针(C++)

this指针作为一个隐含参数传递给非静态成员函数,用以指向该成员函数所属类所定义的对象。当不同的对象调用同一个类的成员函数代码时,编译器会依据该成员函数的this指针所指向的不同对象来确定应该引用哪个对象的数据成员。在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。#

2017-10-30 15:24:23 245

原创 tcp与udp协议

(一)TCP协议TCP协议(transmission control protocol 传输控制协议)是一种面向连接、可靠的传输层协议。当应用层向TCP层发送用于网间传输的、8字节的数据流时,tcp会将该数据流分成适当长度的数据段(通常受数据链路层MTU的限制),然后tcp将数据段传递给IP层,由它通过网络传递给接受实体的 tcp 层。tcp 为了保证不发生丢包,给每个包一个序号,

2017-10-11 21:15:12 142

原创 NS2:重新编译(make)出错

在ns-2.30/tools中加入一个新的流量发生器(poisson分布流量发生器)时,修改packet.h以及Makefile文件中的相关信息后,重新编译ns2(make命令),出现如下错误:make: *** No rule to make target ` adc/tbf.cc', needed by ` adc/tbf.o'.  Stop.则:查看Makefile文件中的修

2017-09-25 17:07:50 665

原创 NS2:添加一个新的流量发生器(poisson分布)

将poisson流量发生器整合到NS2中:1、将poisson.cc文件拷贝至ns-2.30/tools文件夹中。2、修改packet.h(ns-2.30/common/packet.h)文件:(1)在enum packet_t { } 中添加新的数据分组类型: PT_POISSON注意:此数据分组类型要与C++文件中定义的类型一致:(poisson.cc中的init()函数:

2017-09-25 17:06:52 1063 1

转载 NS2:架构(节点、链路、代理、应用层)

推荐:若吞入大量牙膏有什么危险女人面对求婚为何感动公告:请您及时更换请请请您正在使用的模版将于2周后被下线,请您及时更换×分享故事赢音乐剧门票!加载中…新浪首页登录注册飘_摇_旗的博客http://blog.sina.com.cn/piaoyaoqi[订阅][手机订阅]首

2017-09-22 16:54:49 1285

转载 NS2:添加一个新的自写协议的方法

本文介绍如何在最新版的NS-2.30中嵌入一个自己写的简单新协议,读者可先不必较真协议的具体实现代码,先熟悉嵌入流程因为此代码还是有一定bug的,但实现一个协议的总体框架是对的。后续文章将对如何写一个新协议进行解析,如TCL如何传值到C++等。一、编写新协议simple_trans我们在 NS-2.30目录下创建一个文件夹 kgn,目录下有两个文件: simple_trans.h和simp

2017-09-13 17:14:39 1153

转载 NS2:tcl 脚本运行时的流程,调用的类和函数

一般的方法都是在 C++ 中定义的 , OTcl 一般通过 unknown{}, cmd{}, 调用 C++ 的 comand{}, 然后在调用到 C++ 的方法; 而直接在 Otcl 中定义方法的情况比较少见 , 但也不是没有。 tcl 脚本运行时的流程:set val(proc) Propagation/TwoRayGroundset val(netif) Phy/

2017-09-12 10:53:36 683

原创 继承和虚函数在NS2中的应用(更好地理解累的继承)

虚函数作用:允许用基类的指针来调用子类的这个函数class A { public: virtual void foo() { cout<<"A::foo() is called"<<endl; } }; class B : public A { public: void foo() { cout<<"B::foo() is called"<<endl

2017-09-06 16:50:47 144

原创 NS2:tcl-debug-2.0安装步骤

tcl-debug-2.0安装步骤:1、下载tcl-debug-2.0安装包:http://download.csdn.net/download/yhdyy123/99556302.、将tcl-debug-2.0.tar.gz拷贝至Aqua-Sim-1.0文件夹下(即拷贝至与ns-2.30文件夹所在的同一级文件夹下),并解压,生成一个tcl-debug-2.0目录;3、进入tcl-de

2017-08-29 16:08:18 243

原创 NS2:能量模型以及新版Trace格式仿真结果(.tr文件)中各数据的含义

一、能量模型:$ns_ node-config       -adhocRouting $opt(adhocRouting) \        ......       -energyModel  $opt(energy)\      #EnergyModel       -txPower $opt(txpower)\       -rxPower $opt(rxpower

2017-08-28 17:13:15 2197

原创 NS2:RTS阈值(RTSThreshold)的意义

一个无线帧的大小如果超过设置的RTS阈值,才发送RTS;否则,为保证吞吐量和空口环境的平衡,不发送RTS。voidMac802_11::sendRTS(int dst) //creact a RTS packet and store it in the buffer pktRTS_{ Packet *p = Packet::alloc(); hdr_cmn* ch = HDR_C

2017-08-25 11:17:59 1685

原创 NS2:timeout时间(在check_pktRTS()函数中计算)的含义

int Mac802_11::check_pktRTS() //check_pktRTS():check if we have RTS packet to send{ //if we have,send it then return 0; otherwise return -1 struc

2017-08-22 20:53:00 337

转载 NS2:802.11代码整个流程—packet传输的流程

如何传送一个封包(How to transmit a packet?)首 先,我们要看的第一个function是在mac-802_11.cc内的recv( ),程式会先判断目前呼叫recv( )这个packet的传输方向,若是DOWN,则表示此packet是要送出去的,因此就会再呼叫send(p, h).所以接着,我们跳到send( ),此send( )首先会去检查energy model,若

2017-08-22 20:25:10 455

转载 NS2 定时器:BackoffTimer/ DeferTimer/NavTimer/RxTimer/TxTimer/IFTimer

MacTimer: 是 mac-802.11中所有timer的共同父类一、BackoffTimer:(1)主要目的:用于竞争退避机制:当检测到信道空闲了一个DIFS或EIFS时间后,1.如果此时站点STA(节点)的退避计时器为0(backoff timer==0),那么STA将会产生一个随机回退时间再接入信道发送数据,而不是立即接入信道(目的:为了减少多个等待的STA在DIFS

2017-08-21 20:59:28 715

原创 PreambleLength以及PLCPHeaderLength

Mac802_11::sendDATA( ) 函数中:ch->txtime() = txtime(ch->size(), dataRate_);      //record the needed time for transmission//txtime=(PreambleLength+PLCPHeaderLength)*8/PLCPDatarate + dataLength*8/da

2017-08-16 21:51:21 1459

转载 NS2:Mac/802.11中的dataRate_和basicRate_ 两种速率分析

Mac/802_11 set basicRate_  1.0e6 ;      // 1MbpsMac/802_11 set dataRate_    2.0e6 ;      // 2Mbps在802.11中,最终在信道上传送的分组是由:PLCP前导 + PLCP头 + PSDU组成PLCP前导和 PLCP头以basicRate_的速率发送,其中PLCP头中的signal 域规定

2017-08-16 21:32:11 1029

转载 C++三大特性:封装、继承、多态

C++封装继承多态总结面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!封装

2017-08-14 21:50:09 112

原创 sturct和class的区别

STRUCT中的所有成员都是PUBLIC的,类中可以有PUBLIC,PRIVATE,PROTECTED。 STRUCT中不能包含成员函数但是CLASS中可以包括成员函数. class和struct的最基本的区别就是:在class中,在默认的情况下,它的成员是私有的,而在struct中,默认的情况下,它的成员是公有的!    但是在一般编程的习惯中,在struct中一般只定义数据部分

2017-08-14 19:39:04 209

转载 虚函数和纯虚函数的区别

纯虚函数就是没有函数体的,必须在派生类中重载函数。虚函数可以有函数体,如果派生类中没有重载函数,则调用父类的函数 classa { virtualb()=0;//纯虚函数 virtualc(){...}//虚函数 };  虚函数主要实现多态机制 避免二义性问题 至于纯虚函数是抽象累机制基类提供接口 派生类提供实现 抽象类不能定义对象 ? 最大区别:有纯虚函数的类

2017-08-08 19:55:57 267 1

原创 802.11中的帧间间隔(SIFS/PIFS/DIFS)

一、IEEE 802.11标准的MAC子层分为两种工作方式:分布协调功能(DCF)方式和集中协调功能(PCF)方式。1、分布协调功能(DCF)DCF 方式:是 MAC 中最基本的介质接入控制机制。DCF 机制基于 CSMA,并以RTS/CTS 握手机制作为辅助的介质访问方式。这种控制方式利用载波侦听机制,适用于分布式网络。分布式网络:没有中心节点,由分布在不同位置的节点互联而成。网

2017-07-28 13:39:28 18924 1

原创 nam不能使用,解决办法

nam出现问题:[code omitted because of length]: no event type or button # or keysym while executing"bind Listbox {%W yview scroll [expr {- (%D / 120) * 4}] units}" invoked from within"if {[tk

2017-07-25 16:17:06 437

原创 Linux:GDB调试NS2项目详细步骤

一、TCL的调试(ns-2.30)用的比较少,一般用tcl-debug或者tkcon二、Gdb的调试——即C++代码的调试(segment fault)调试工具gdb(Source insight本质上也是调用gdb)(1)、需要先在NS2中添加调试信息1. 在~ns-2.30下的Makefile文件中添加-g,(注意要在root用户下写该才能保存)如下:

2017-07-25 11:06:51 568

tcl-debug-2.0

安装步骤见本人博客:tcl-debug-2.0安装步骤

2017-08-29

802.11Mac层流程

NS2中802.11Mac层函数注释以及Mac层各函数运行流程图 http://www.doc88.com/p-285604930007.html

2017-08-15

记录:导入Fedora要重新安装的东西

个人记录:重新导入Fedora系统时要重新安装的东西,来保证NS2仿真能正常进行

2017-07-25

Linux下对NS2项目的仿真分析全过程(从tcl脚本-awk文本处理-gnuplot)

Linux下对NS2项目的仿真分析全过程的代码(从tcl脚本-awk文本处理-gnuplot) 运行过程详见本人CSDN中的描述

2017-07-19

gnuplot/4.6.0.tar.gz

Linux下gnuplot的安装包下载,其安装步骤见我的博客:gnuplot压缩包以及Linux系统中gnuplot安装详解

2017-07-05

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除