首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    1.2 C语言运行原理

    一、运行原理  作为一种编程语言,本身是谈不上工作原理的,实际上C语言所有的语法,正是C语言编译器的工作原理或者工作机制的具体实现。...要细致的讨论起来是不可能,但是作为C语言程序员,必须了解这个大致的流程。一个程序,从C语言源码,到系统可执行的文件,一般经历四个过程。 ?   ...1、预处理阶断,这个阶断是文本处理阶断,有预处理器来完成,会将源码中的带"#"开头的预处理命令进行相应的处理,在Linux上C语言的预处理器程序是cp命令。   ...2、编译阶断,这个阶断是有C语言编译阶断,在Linux上C语言的编译器是cc命令,它将C语言源码转换成汇编指令。   ...3、汇编阶断,这个阶断是汇编编译阶断,在Linux上C语言的汇编器是as命令,这个阶断会将汇编指令编译成二进制机器码。

    2.2K3129

    TCP】网络原理

    互联网中,主流的是 TCP/IP 五层协议 5G/4G 上网,是有自己的协议栈,要比 TCP/IP 更复杂(能够把 TCP/IP 的一部分内容给包含进去了) 应用层 可以代表我们所编写的应用程序,只要应用程序里面用到了网络通信...对于这样的情况,有两个解决方案: 把一个大的数据报,拆分成多个,分别进行传输 很快就被否决了;因为实现分包、组包的过程非常复杂,充满了不确定性 直接使用 TCP TCP 对于长度没有限制...这样来编排的 每个字节都有一个独立的编号,字节和字节之间,编号是连续的、递增的 这种按照字节编号的机制,就成为“TCP 的序号”,在应答报文中,针对之前收到的数据进行对应的编号,称为“TCP 的确认序号...滑动窗口 有一类算法题,就是通过滑动窗口的思想来解决的,算法中的“滑动窗口”借鉴自 TCP 的滑动窗口 TCP 是要保证可靠传输的==>代价,降低了传输的效率(重传,确认重传等操作) TCP 希望能在可靠传输的基础上...,所以一个 TCP 数据报和下一个 TCP 数据报携带的数据,是可以直接进行拼装的 比如要传输一个特别大的数据,传输过程中,本身就会通过多个 TCP 数据报来进行携带,这些 TCP 数据报彼此之间携带的载荷都是可以在接受方自动拼起来的

    11910

    C语言网络编程-tcp服务器实现

    5种io模型 tcp服务器分为了5种io复用模型,分别是: 阻塞io模型     非阻塞io模型 io复用 信号驱动io 异步io 本文会讲前面3种io模型的tcp服务器实现(本文只做tcp服务器实现...导致这份代码,每次运行都得客户端连接,才能到下面的遍历代码,导致代码根本就没什么卵用: A客户端连接好了,然后发送了条消息,服务器还得等到B客户端连接,才能接收到A的消息 ,然后,B客户端发送好消息,需要C客户端连接...非阻塞式TCP服务器 在c语言中,可以使用fcntl函数,将套接字设置为非阻塞的 #include  #include //inet_addr() sockaddr_in...或许我们可以用到I/O复用模型 select机制TCP服务器 select是系统级别的功能,它可以同时阻塞探测多个socket,并且返回可调用的socket的数量 原理图大概为: ?...服务器 原理图大概为: ?

    6.1K62

    TCP拥塞控制原理

    TCP拥塞控制原理TCP使用的是端到端的拥塞控制而不是网络辅助的拥塞控制,因为IP层不向端系统提供显示的网络拥塞反馈。...TCP采用的方法是让每一个发送方根据所感知到的网络拥塞的程度,来限制其能向连接发送流量的速率。 这种方法有三个问题: 一个TCP发送方是如何限制向连接发送流量的速率?...TCP拥塞控制机制让连接的每一端都记录一个额外的变量,即拥塞窗口(congestion window)。拥塞窗口表示为congwin,他能限制一个TCP发送方向网络中发送流量的速率。...增大发送速率的基本原理是:如果没有检测到拥塞,则可能有可用(未使用的)宽带可被该TCP连接使用。这种情况下TCP缓慢地拥塞窗口的长度,谨慎地探测端到端路径上的额外的可用宽带。...收到3个冗余ACK后,TCP将拥塞窗口减小一半,然后先行地增长。但是超时事件发生时TCP发送方进入一个慢启动阶段,即他将拥塞窗口设置为1MSS,然后窗口以指数速度增长。

    1.1K20

    TCP之滑动窗口原理

    在我们当初学习网络编程的时候,都接触过TCP,在TCP中,对于数据传输有各种策略,比如滑动窗口、拥塞窗口机制,又比如慢启动、快速恢复、拥塞避免等。通过本文,我们将了解滑动窗口在TCP中是如何使用的。...滑动窗口实现了TCP流控制。首先明确滑动窗口的范畴: TCP是双工的协议,会话的双方都可以同时接收和发送数据。 会话的双方都各自维护一个发送窗口和一个接收窗口。...各自的接收窗口大小取决于应用、系统、硬件的限制(TCP传输速率不能大于应用的数据处理速率)。各自的发送窗口则要求取决于对端通告的接收窗口,要求相同。...下面,为了更好的理解滑动窗口在TCP中的使用,我们将使用一个简单的例子进行模拟说明。 示例(大小不变) 我们模拟一个请求和响应,以更好地理解滑动窗口的工作原理。...为了避免这种情况,客户端的 TCP 会定期检测窗口大小。一旦释放更多空间,可用窗口就会扩大,并且可以发送更多数据。 结语 可用窗口的计算是理解TCP滑动窗口的关键。

    5.1K62

    C语言实现面向对象的原理

    不知道有多少人去了解过语言的发展史,早期C语言的语法功能其实比较简单。随着应用需求和场景的变化,C语言的语法功能在不断升级变化。...虽然我们的教材有这么一个结论:C语言是面向过程的语言C++是面向对象的编程语言,但面向对象的概念是在C语言阶段就有了,而且应用到了很多地方,比如某些操作系统内核、通信协议等。...为什么要用C语言实现面向对象 阅读文本之前肯定有读者会问这样的问题:我们有C++面向对象的语言,为什么还要用C语言实现面向对象呢?...C语言这种非面向对象的语言,同样也可以使用面向对象的思路来编写程序的。只是用面向对象的C++语言来实现面向对象编程会更简单一些,但是C语言的高效性是其他面向对象编程语言无法比拟的。...所以这个问题其实很好理解,只要有一定C语言编程经验的读者都应该能明白:面向过程的C语言和面向对象的C++语言相比,代码运行效率、代码量都有很大差异。

    86421

    C语言可变参数的原理和应用

    概述 C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦; 即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题 var_list可变参数介绍 VA_LIST...是在C语言中解决变参问题的一组宏,原型: typedef char* va_list; 其实就是个char*类型变量 除了var_list ,我们还需要几个宏来实现可变参数 「va_start、va_arg...可变参数原理 在进程中,堆栈地址是从高到低分配的.当执行一个函数的时候,将参数列表入栈,压入堆栈的高地址部分,然后入栈函数的返回地址,接着入栈函数的执行代码,这个入栈过程,堆栈地址不断递减, 「黑客就是在堆栈中修改函数返回地址

    2.5K20

    C语言】剖析qsort函数的实现原理

    回调函数的实现 定义一个函数,然后将其作为参数传递给其他函数,在特定条件下执行 回调函数的示例 让我们以 C 语言为例,来看一个简单的回调函数示例: #include void performOperation...qsort函数实现原理 详细定义 qsort 函数是一个用于快速排序(Quick Sort)的标准库函数。它接受一个数组和一个比较函数作为参数,并对数组进行排序。...实现原理 选择基准元素:qsort 函数首先选择数组中的一个元素作为基准元素。通常情况下,可以选择数组的第一个元素作为基准元素。...模拟实现sort 以下代码使用C语言模拟实现qsort函数的代码: #include void swap(int* a, int* b) { int temp = *a;

    16410
    领券