07 2024 档案
摘要:本文主要介绍链表结构,本人才疏学浅,文中如有出现知识点错误或者代码错误,还请大家多多指正。 首先是单向无环链表: 在单向无环链表中,每个节点由两部分组成: data 和 next_node,next_node用于指向下一个节点,而data表示在当前节点中存储的数据。 struct node{ int
阅读全文
摘要:在网络编程中我们避免不了与bytes序列打交道,python中提供了两种存储byte的结构:bytes和bytearray。 首先说明一点,bytearray比bytes更加灵活,而且bytearray可以转为bytes。但是bytes因为不允许修改,所以会更加安全。 bytes(n):初始化一个长
阅读全文
摘要:如果代码无误这种情况一般是因为pycharm的原因,网上有各种教程比如关闭科学模式,但是我在自己的pycharm上没有找到科学模式,最终还是将plt.show()改为plt.save(file),之后再打开观看
阅读全文
摘要:在之前我们已经介绍过了如何在golang中利用socket进行通信,在本文我们将介绍如何在python中编写socket函数进行通信。 在python中的socket通信与c中socket通信书写比较相似,以下为一个服务器端示例代码 import socket sock=socket.socket(
阅读全文
摘要:在golang中,我们通常使用go关键词来开启一个新的线程,来加速程序运行或者完成业务需求,但是gorouting并不支持有返回值,对此,如果我们想从新开的线程中获取数据来被其他线程所使用时,我们就需要用到channel。 ch:=make(chan int,1)这个语句表明创建一个缓冲区为1的,传
阅读全文
摘要:今天在写leetcode的一个简单问题的时候发现golang的切片传递并不是直接 传递地址的,而是一个地址副本。 如图所示,当我利用test函数对nums1和nums2数组处理时,并不是对原来的nums1和nums2做处理,而是对他们的副本nums1_temp和nums2_temp做处理,但是num
阅读全文
摘要:因为之前一直在考虑拥塞控制问题,忽略了硬件设备问题,所以在此记录下会影响短距离有线连接网络网速的几个重要硬件: 首先是两台主机的网卡NIC,网卡决定了你能发送或者接收的最大速率,不过这个一般不太像是会成为限制的原因,我的两台电脑一台最高1Gbps一台最高2.5Gbps,虽然不是特别高,但是普通的实验
阅读全文
摘要:因为需要打印传输信息,要用到pion的stats,而stats返回报告的又包含多个type,对于不同type有不同的数据统计,所以需要打印类型和switch case针对于不同的type执行不同的命令。 针对于返回变量类型,golang采用reflect包,对于变量valua,可以利用reflect
阅读全文
摘要:在模拟网络情况的时候不可避免的会要模拟动态网络变化,常用的有mahimahi和tc,mahimahi自己设置trace文件,每一行内容为这一毫秒发送了多少数据即可动态控制,而tc一般利用命令行控制,所以需要一点shell脚本基础。 首先是shell的数组建立: band (0 10 20 30 20
阅读全文
摘要:都说golang适合网络编程,知道今天写了tcp我才知道他到底有多简洁。(虽然已经对着golang的webrtc研究很久了) 首先是client端代码: package main import ( "bufio" "fmt" "net" ) func main() { conn, err := ne
阅读全文
摘要:本文介绍如何利用iperf3就行windows 和 ubuntu的带宽测试。本文的写作原因是在进行webrtc通信时发现带宽利用率极低,只有20M左右,而我设置的动态瓶颈带宽最低都有80M。一开始是想利用tcp连接不停发送数据来利用nload查看网络吞吐量观察带宽变化。实现之后发现因为每次写入的数据
阅读全文