- 博客(67)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 Mininet+Ryu安装及GUI可视化(ubuntu20.04)
一、mininet安装#更新软件列表sudo apt-get upadatesudo apt-get upgrade#安装mininetsudo apt-get install mininet#验证sudo mn如下:二、Ryu安装#安装pip3,ubuntu自带python2和python3,使用pip3指定使用python3环境,避免两者冲突sudo apt-get install python3-pip#git安装sudo apt-get install git#ry
2022-03-29 22:17:42
5716
原创 NS元胞自动机模型--python实现
实现:]# -*- coding: utf-8 -*-''' NS模型 场景: 周期型边界 道路长度:cell=1000个元胞 车辆初始分布为均匀分布 初始速度:v0=vmax=5 随机慢化概率:p=0.1 仿真时步为2000时步,从500时步开始采样 -1表示元胞,其他值表示车辆 要求:绘制车辆加速度的分布图(密度:0.05, 0.2, 0.4, 0.6)'''#im.
2022-03-23 09:48:32
4486
4
原创 Merge sort(归并排序) -- 分治
基本思路:确定分界点:mid = (l + r) / 2;递归排序left,right;将步骤2中排序好的left,right数组进行归并,合二为一。C++代码实现:void merge_sort(int q[], int l, int r){ if (l >= r) return; int mid = l + r >> 1; merge_sort(q, l, mid); merge_sort(q, mid + 1, r); in
2021-10-05 17:09:20
266
原创 Quick Sort(快排)-- 分治
基本思路:确定分界点:q[l],q[(l+r)/2],q[r] ;调整区间;递归处理左右两段。对于步骤2,有两种方法:法1:暴力调整创建两个数组a[],b[];扫描q[l~r],将<=x的数放进a[],将>=x的数放进b[];先将a[]放进q[],再将b[]放进q[]。法2:优美调整创建i(左),j(右) 指针,i负责查找>=x的数,j负责查找<=x的数,两指针同时向中间移动;当i,j指针找到各自满足条件的值时,进行swap操作,然后向中间移动一位;
2021-10-05 17:08:53
300
原创 ns3--入门基础概念
一、网络仿真步骤选择或开发相应模块编写网络仿真脚本,其中包括:生成节点安装网络设备安装协议栈安装应用层协议其他配置启动仿真仿真结果分析根据仿真结果调整网络配置参数或修改源代码二、ns3关键概念(1)节点(Node) 设想为一台空的可以添加各种功能的计算机。为了使一台计算机有效工作,可以给它添加应用程序、协议栈、外设卡及驱动程序等。C++中使用Node类描述节点。如果一个设备助手可能在大量得相同节点上安装设备,则可使用NodeContainer类追踪一组节点指针。N
2021-10-02 21:57:56
2419
原创 C语言 实现中缀表达式转后缀表达式并求值(附加括号匹配判断)
1、栈的基本操作函数Stack.c#include "Stack.h"//栈的相关操作void InitStack(SqStack* S) { //初始化 S->top = -1;}Status IsEmpty(SqStack S) { //判空 if (S.top == -1) return TRUE; else return FALSE;}Status Push(SqStack* S, char c) { //入栈 if (S->top == M.
2021-06-22 23:41:44
1871
4
原创 基于Linux用C语言实现TCP/UDP图片和文件传输(socket)
目录一、TCP实现1.服务端2.客户端二、UDP实现1.服务端2.客户端一、TCP实现传输控制协议(TCP,Transmission Control Protocol) 是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。1.服务端
2021-06-16 23:52:07
8960
9
原创 关于毕业这一年
关于毕业这一年一、考研与工作二、关于博客与学习一、考研与工作 关于大三下学期到大四上学期这段时间(大概是5月份到12月份),会有许多人面临许多抉择并且产生焦虑。关于考研和工作的话题也是老生常谈了,笔者在刚上大学的时候曾强烈表示自己不会考研,毕竟数学学得确实不咋地(doge)。然而,随着在大学期间相继参加了一些比赛,也在网上接触了解了各种大佬的博客和学习心得,这才深刻体会到了系统地学好一门知识是有多么的重要,故而踏上了艰辛的备考之路。 对于考研人而言,孤独便是常态。虽然本人并没有考上自己理想的大学(
2021-06-13 15:33:46
184
原创 串的模式匹配(暴力匹配算法)
#include<stdio.h>#define MAXLEN 255typedef struct{ char ch[MAXLEN]; int length;}SString;int Index(SString S, SString T){ int i=0,j=0; while(i<S.length && j<T.length){ if(S.ch[i] == T.ch[j]){ ++i;++j; //继续比较后继字符 } els
2020-07-13 15:25:10
442
原创 串的基本操作(顺序存储)
#include<stdio.h>/*定义串*/#define MAXLEN 255typedef struct{ char ch[MAXLEN]; //每个分量存储一个字符 int length; //串的实际长度}SString;/*求串的长度*/int StrLength(SString S){ return S.length;}/*求子串*/bool SubString(SString &Sub, SString S, int pos, int l
2020-07-13 15:20:43
2099
原创 队列的链式实现
一、带头结点#include<stdio.h>#include<stdlib.h>/*链栈定义:带头结点*/typedef struct LinkNode{ //链式队列结点 int data; struct LinkNode *next;}LinkNode;typedef struct{ //链式队列结点 LinkNode *front,*rear; //队列的队头和队尾指针}LinkQueue;/*初始化*/void InitQueue(Lin
2020-07-03 23:45:10
222
原创 队列的顺序实现(6种方式)
一、定义队尾指针指向队尾元素下一个位置方案一(牺牲1个空间):/***判断队满条件:队尾指针的再下一个位置是队头****//***即:(Q.rear+1)%Maxsize == Q.front。***********//***代价:牺牲一个存储单元.***********************/#include<stdio.h>/*队列定义*/#define Maxsize 10typedef struct{ int data[Maxsize]; //静态数组存放队列元
2020-07-03 23:40:57
2175
1
原创 括号匹配(栈的应用)
#include<stdio.h>#define MaxSize 256//栈的相关操作typedef struct{ //定义栈 char data[MaxSize]; int top;}SqStack;void InitStack(SqStack &S){ //初始化 S.top = -1;}bool IsEmpty(SqStack S){ //判空 if(S.top == -1) return true; else return fa
2020-07-03 23:29:17
188
原创 判断字符串的对称问题(栈的应用)
#include<stdio.h>#include<stdlib.h>typedef struct LNode{ char data; LNode *next;}LNode,*LinkList;/*初始化单链表*/bool InitList(LinkList &L){ L = (LNode *)malloc(sizeof(LNode)); //分配一个结点 if(L == NULL) return false; L->next = NULL;
2020-06-17 23:19:59
1067
原创 共享栈的实现
#include<stdio.h>/*定义共享栈*/#define MaxSize 50typedef struct{ int data[MaxSize]; int top0; int top1;}SharedStack;/*初始化*/void InitStack(SharedStack &S){ S.top0 = -1; //初始化栈顶指针 S.top1 = MaxSize;}/*判空*/bool StackEmpty(SharedStack &a
2020-06-17 23:13:48
389
原创 链栈的实现(详细注释)
#include<stdio.h>#include<stdlib.h>/*链栈的定义(不含头结点)*/typedef struct LinkNode{ int data; struct LinkNode *next;}*ListStack; //栈类型定义/*初始化*/bool InitStack(ListStack &S){ S = NULL; //空表,防止脏数据 return true;}/*判空*/bool StackEmpty(L
2020-06-17 23:00:27
626
原创 顺序栈的实现(详细注释)
在这里插入代码片#include<stdio.h>/*顺序栈的定义*/#define MaxSize 50 //定义栈中元素的最大个数typedef struct{ int data[MaxSize]; //存放栈中元素 int top; //栈顶指针}SqStack;/*初始化栈*/void InitStack(SqStack &S){ S.top = -1; //初始化栈顶指针,也可初始化为S.top=0}/*判栈空*/bool StackE
2020-06-17 22:46:56
559
原创 数据结构--线性表的插入、删除和查找(静态存储)
#include <stdio.h>#define MaxSize 10 //array size/*create struct for data*/typedef struct{ int data[MaxSize]; int length; //current table's length}SqList;/*insert data to...
2020-04-18 21:42:56
862
原创 基于socket通信的网络聊天室(linux)
//客户端#include "header.h"// 客户端接收消息的线程函数void* recv_func(void *args){ char buf[BUFFER_SIZE]; int sock_fd = *(int*)args; while(true) { memset(buf,0,BUFFER_SIZE); int n = read(sock_fd...
2019-11-25 14:56:39
759
原创 Linux(socket通信)--服务端与客户端编程
server.c#include <stdio.h> //printf perror#include <sys/socket.h> //socket blind listen accept connect#include <unistd.h> //read and write#include <sys/types.h> //size_t...
2019-11-17 22:53:16
244
原创 树与二叉树的概念及遍历查找(C语言实现)(2019.11.12)
一、树的定义及特点Define: 树是n(n>0)个节点的有限集T,其中:有且仅有有一个特定的节点,称为树的根(root)。当n>1时,其余节点可以分为m(m>0)个互不相交的有限集T1,T2,T3,....Tm,其中每个集合本身又是一棵树,称为跟的子树(SubTree)。Feature: a、树中至少有一个节点-----根。b、树中各子树是互不相交的集合。...
2019-11-12 12:47:45
228
原创 (C)输入整数数组,奇数移到偶数之前且奇偶部分分别有序(2019.11.7)
/**function:将一个数组中的所有奇数移到偶数之前,要求奇偶内部有序*way:用动态分配的方法输入一个数组,再将其分开成奇偶两个数组* 最后分别实现冒泡排序,比较大小 *Note: use free(point) and point=NULL to release the memory */#include<stdio.h>#include<std...
2019-11-07 12:46:58
887
原创 字符串b首次在字符串a出现的下标(2019.11.5)
/**function:输出字符串b首次在字符串a出现的下标*return value: 0 */#include <stdio.h>#include <string.h>//strlenstatic int b = 0;//用来判断是否等于字符串b的长度static int a = 0;//记录下标 int main(){ char str1[1...
2019-11-05 10:41:29
863
原创 linux--4G模块pppd拨号(SIM700)
环境:友善之臂smart210标准Linux系统1、需要的配置文件及存放路径:文件1:gprs-connect-chat,放置路径:路径:/etc/ppp/文件2:gprsdial,放置路径:路径:/etc/ppp/peers/2、自动拨号设置:在/etc/init.d/ 下,编辑rcS文件,在文件末尾加入拨号指令pppd call gprsdial &即可3、断线...
2019-10-26 09:58:25
3158
原创 MySQL--常用终端操作指令总结
一、首先登录:mysql -u root -h localhost -puse mysql#打开mysql数据库(默认已经搭建好Mysql数据库) 使用安装过程中设置的账号密码登陆Mysql二、数据库管理1、create 创建数据库create database firstdb;2、show查看所有数据库show data...
2019-10-17 19:36:47
517
原创 Linux--获取当前时间
一、说明: Linux内部对时间是用从Epoch时间开始计时的秒数来表示的。Epoch也就是通用协调时间(UTC,也就是格林尼治平均时间或格林威治标准时间,CMT)。Linux将这个数据存储在time_t结构体变量里。二、用到的函数:time()&localtime()函数1. time() 函数/* time - 获取计算机系统当前的日历时间(Calender Time) ...
2019-10-14 08:26:22
1637
原创 Linux C --串口编程
/*配置串口*/int set_com_config(int fd,int baud_rate,int data_bits, char parity, int stop_bits){ struct termios new_cfg,old_cfg; int speed;/*DESCRIPTION The termios functions describe a general...
2019-10-13 19:56:52
283
原创 友善之臂smart210—安装Linux系统
一、使用到的工具: SD卡读卡器、8G以上空的SD卡、SD卡大卡套,如图:二、步骤:1、烧写Superboot到SD卡 :先在 PC 上使用 SD-Flasher 软件把 Superboot-210 写 入 SD 卡2、烧写kernel:将光盘资料中的images文件夹复制到SD卡的根目录下,修改一下FriendlyARM_电容屏.ini配置文件,:a...
2019-10-09 20:01:41
1166
原创 gdb调试:Error: No such file or directory During startup program exited with code 127.
问题描述: 在使用gdb中的run命令时,出现Error: No such file or directoryDuring startup program exited with code 127.问题原因: 在linux上开了两个终端,这时候运行调试工具需要使用root权限。问题解决: su命令后切换管理员身份。...
2019-10-03 13:18:28
1644
原创 strlen()函数和sizeof()运算符的区别(2019.9.30)
区别1:strlen()为函数,原型为: size_t strlen(char const* str),而 sizeof 是一个单目运算符,它的参数可以是数组、指针、类型、对象、函数等。区别2: strlen 测量的是字符的实际长度,以’\0’ 结束。而sizeof 测量的是字符的分配大小。strlen()函数功能:计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)。...
2019-09-30 22:53:08
138
原创 MySQL5.7版本的安装和配置(Windows平台)
1、下载链接:https://dev.mysql.com/downloads/installer/选择相应的版本和操作系统,如下例:下一步:
2019-09-28 22:56:55
200
原创 (大功告成)qt5.13下Android软件实例化
搭建好安卓环境后,就可以生成apk包了。一、步骤:创建好工程及文件后,按如下图操作:顺序:构建->重新构建项目xxx若构建失败,出现以下问题:则重新打开之前解压好的sdk文件夹,运行SDK.exe程序,在里面找到上图蓝色框中对应的包,点击安装即可。构建完成后,就可以直接将apk文件发送到安卓手机上使用了。apk所在的文件夹路径如下:....
2019-09-26 21:26:34
693
原创 (实践可行)Qt5.13下配置Android环境
以Windows 64平台为例Qt的下载与安装,参考:https://blog.youkuaiyun.com/qq_23473839/article/details/80523318注意:在到达下图这步时,要勾上下面三个选项,这里我选择MinGW编译器。二、搭建Android开发环境下载JDK(只能下8u221版本,其他的不可用),下载完默认下一步安装就可以了。链接:htt...
2019-09-25 17:51:44
2498
4
原创 LinuxC中链表的学习(2019.09.19)
一、链表(Linked list)的概念: 链表是一种常见的数据结构。相对数组而言,链表可以为程序动态的分配内存,不用浪费内存空间。如下图:Head: 头指针,这个指针变量保存一个地址。Head头节点指向第一个元素,第一个元素中的指针又指向第一个元素,以此类推,形成链式解构。一个单元中包含数据域和指针域,数据域存放数据,指针域存放下一个单元的地址。二、链表的构建一...
2019-09-19 23:22:36
134
原创 LinuxC中指针的理解(一)(2019.09.17)
一、指针的定义: 任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。因此:指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量。二、初步理解:程序:输出:...
2019-09-17 23:33:49
178
原创 LinuxC结构体的理解(2019.09.16)
一、结构体的创建struct 结构体名{ 成员列表;} ; /*不能漏掉分号,在使用前需要声明*/创建方法1:输出结果:创建方法2:输出结果:创建方法3:输出:说明:结构体中默认是四字节对齐。...
2019-09-16 19:13:51
111
原创 LinuxC中argc和argv的理解(2019.9.15)
C语言中main函数主要有如下几种写法:1、void main(){} //不带返回值2、int main(void){} //int型,带返回值,不带参数3、int main(int argc, char **argv)[]或 int main (int argc ,char *argv[]){} //带参数,带返回值解释:argc :argument c...
2019-09-15 11:36:09
1065
原创 warning: control reaches end of non-void function [-Wreturn-type]
对于线程*void,在结尾要加上return 0或者return NULL;否则编译会不过。
2019-09-11 01:00:48
2162
原创 git 制作补丁和提交到服务器(linux)
1、初始化reposity后,创建a.c住:(使用diff生成补丁:diff a.c(源文件) b.c(修改文件) >c.patch(生成patch补丁))2、提交文件到仓库:git add a.c (git add . 表示提交所有修改过的文件)3、git commit -m 'messege1messege2messege3......'4...
2019-09-06 01:57:20
232
用WiFi8266作服务器,手机连接控制单片机,为什么就是连接不上主机,是不是代码有问题
2019-03-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人