草庐IT

FreeRTOS_Plus_TCP

全部标签

TCP/IP小白看源码

写在前面:本文章是本人关于Linux内核网络协议栈的课程学习报告,关于网络协议栈源码本人理解很浅,初学,不建议大家参考学习,仅作为个人的阶段性记录。关于个人的初学建议,如果仅仅的阅读源码,可以尝试使用一些在线linux源码网站进行阅读。本人是因为接受不了虚拟机的卡顿(cup太老了,明年再换)大部分时候使用以下几个网站,各有优缺点。https://elixir.bootlin.com/linux/latest/source/nethttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net?h=v6.7-r

TCP/IP协议栈源代码分析

一、inet_init是如何被调用的?从start_kernel到inet_init调用路径在Linux内核中,inet_init函数是用于初始化TCP/IP协议栈的函数,它的调用路径涉及到整个内核启动的过程。以下是一个简化的描述,描述了从start_kernel到inet_init的调用路径:start_kernel函数:start_kernel是Linux内核启动的入口函数,它负责初始化整个内核。asmlinkagevoid__initstart_kernel(void){//...初始化内核的一系列操作...kernel_init();}kernel_init函数:kernel_init

通信信道带宽为1Gb/s,端到端时延为10ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?

在Bing和CSDN上转了一圈,答案千奇百怪的。很多只给计算,不给解释,过程实在是难以理解。索性自己结合chatGPT研究出了正确的答案和解释,以下,希望对各位有帮助。网上主要有两种计算方式:方法一(多数情况下采用该答案)发送时延 =数据长度/信道带宽=65535*8bit/1Gb/s=0.52428*10-3s=0.52428ms;传播往返时延=2*10=20ms(发送数据和接收确认);故每发送一个窗口大小的流量需要:总时延=发送时延+传播往返时延=0.52428+20=20.52428ms ≈20.52ms。故每秒钟可以产生1000/20.52个窗口,因此最大数据吞吐量=65535*8*(

Vue3+element-plus+vite 组件的二次封装-- 添加vue项目单元测试(vitest+happy-dom+testing-library)

本人是一个web前端开发工程师,主要是vue框架,整理了一些Vue常用的技术,一方面是分享,一方面是做总结,今后也会一直更新,有好建议的同学欢迎评论区分享;-)序号文章0组件库展示1通过JSON配置–头部搜索条件的封装组件2通过JSON配置–表单Table的封装组件3页脚的封装组件4通过JSON配置–Form表单的封装组件5生成npm组件库6发布到npm7vitest为组件库添加单元测试8vuepress为组件库生成文档9通过github或者giteepages将组件库文档发布到线上,免费!10源码地址文章目录组件库开发流程0.简介1.安装依赖2.配置Vitest2.1添加三斜线指令2.2在d

QT学习笔记:TCP客户端的实现

QT一般用来做客户端,我这里就简单讲一下怎么开发基于QT的TCP客户端。1、用QtCreator创建项目 2、界面3、.pro文件添加networkQT+=coreguinetwork 4、mainwindow.h#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include#includeQT_BEGIN_NAMESPACEnamespaceUi{classMainWindow;}QT_END_NAMESPACEclassMainWindow:publicQMainWindow{Q_OBJECTpublic:MainWindow(QWidget*parent=n

vue3+ts+element-plus‘, eslint 报错 Parsing error:Unexpected token, expected “from“

vue3引用element-plus上传图片el-upload组件时报错代码:importtype{UploadProps,UploadUserFile}from‘element-plus’报错:Parsingerror:Unexpectedtoken,expected“from”(4:12)解决方法:修改package.json文件eslintConfig配置添加“parser”:“vue-eslint-parser”,“parserOptions”:{“parser”:“@typescript-eslint/parser”},总配置截图新增配置后报错Parsingerror:Cannotf

mybatis-plus技巧--动态表名-多语句-拼接sql--关于mybatis的mysql分页查询总数的优化思考

文章目录动态表名xml表名填充表名拦截器每天按统计每次设置多语句操作forEach动态拼接参数构建java进行拼接sqlmysql分页查询总数count不要使用count(常数),count(列名)代替count(*)自己计数SQL_CALC_FOUND_ROWSxml单条接口实现mybatis拦截器动态表名xml表名填充select>select*from${tableName}select>传入tableName参数就可以了,不过只能用$不能用#因为#会发生预编译,然后会在表名上加引号’'。表名拦截器新建一个表名拦截类实现TableNameHandler@Componentpubliccl

C语言基础知识(5):TCP网络编程

        TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构,当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。1.TCP协议TCP与UDP的区别相当大。它充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。根据TCP的这些机制

Mybatis-Plus使用Wrapper自定义SQL

文章目录准备工作Mybatis-Plus使用Wrapper自定义SQL注意事项目录结构如下所示domain层Controller层Service层ServiceImplMapper层UserMapper.xml结果如下所示:单表查询条件构造器单表查询,Mybatis-Plus使用Wrapper自定义SQL联表查询不用,Mybatis-Plus的条件构造器时联表查询,Mybatis-Plus使用Wrapper自定义SQL总结简要说明:Mybatis-Plus使用Wrapper自定义SQL,主要的代码说明,详情可以往后看。假设有三张表(这三张表在:SpringBoot整合mybatis-plus-

【计算机网络】TCP原理 | 可靠性机制分析(一)

个人主页:兜里有颗棉花糖欢迎点赞👍收藏✨留言✉加关注💓本文由兜里有颗棉花糖原创收录于专栏【网络编程】【Java系列】本专栏旨在分享学习网络编程、计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌目录一、UDP协议UDP协议特性UDP协议端格式二、TCP协议TCP协议头格式三、TCP协议可靠性分析确认应答机制超时重传机制一、UDP协议UDP协议特性无连接:知道对端的IP和端口号就可以直接进行传输,不需要进行连接。不可靠:发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。面向数据报:应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合