常见计算机网络知识整理(未完,整理中。。。)

  • TCP和UDP区别

  • TCP是面向连接的协议,发送数据前要先建立连接;UDP是无连接的协议,发送数据前不需要建立连接,是没有可靠性;

  • TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多

  • TCP是面向字节流的,UDP是面向报文的; 面向字节流是指发送数据时以字节为单位,一个数据包可以拆分成若干组进行发送,而UDP一个报文只能一次发完。

  • TCP首部开销(20字节)比UDP首部开销(8字节)要大

  • UDP 的主机不需要维持复杂的连接状态表。


  • 运行在TCP 或UDP的应用层协议分析

  • 运行在TCP协议上的协议
    • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
    • HTTPS(HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
    • FTP(File Transfer Protocol,文件传输协议),用于文件传输。
    • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
    • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
    • TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
    • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。

  • 运行在UDP协议上的协议
    • BOOTP(Boot Protocol,启动协议),应用于无盘设备。
    • NTP(Network Time Protocol,网络时间协议),用于网络同步。
    • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
  • 运行在TCP和UDP协议上
    • DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作。
    • ECHO(Echo Protocol,回绕协议),用于查错及测量应答时间(运行在TCPUDP协议上)。
    • SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管理。
    • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
    • ARP(Address Resolution Protocol,地址解析协议),用于动态解析以太网硬件的地址。

  • 什么是ARP协议 (Address Resolution Protocol)?

        ARP协议完成了IP地址与物理地址的映射。每一个主机都设有一个 ARP 高速缓存,里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。

        当源主机要发送数据包到目的主机时,会先检查自己的ARP高速缓存中有没有目的主机的MAC地址,如果有,就直接将数据包发到这个MAC地址,如果没有,就向所在的局域网发起一个ARP请求的广播包(在发送自己的 ARP 请求时,同时会带上自己的 IP 地址到硬件地址的映射),收到请求的主机检查自己的IP地址和目的主机的IP地址是否一致,如果一致,则先保存源主机的映射到自己的ARP缓存,然后给源主机发送一个ARP响应数据包。源主机收到响应数据包之后,先添加目的主机的IP地址与MAC地址的映射,再进行数据传送。如果源主机一直没有收到响应,表示ARP查询失败。

        如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。


  • 什么是NAT (Network Address Translation, 网络地址转换)

        用于解决内网中的主机要和因特网上的主机通信。由NAT路由器将主机的本地IP地址转换为全球IP地址,分为静态转换(转换得到的全球IP地址固定不变)和动态NAT转换。


  • 从输入址到获得页面的过程?

  • 浏览器查询 DNS,获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。

        对于向本地DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);

        如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具有权威性)。

        如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;

  • 浏览器获得域名对应的IP地址以后,浏览器向服务器请求建立链接,发起三次握手;

  • TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求;

  • 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

  • 浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;

  • 浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

用到哪些协议?

        浏览器中输入一个url发生了什么,用到了哪些协议


三次握手

        无须过多赘述,但是有几个重要的问题需要补充。

  • 两次握手可以?

        假设不采用 “三次握手”,那么只要 server 发出确认,新的连接就建立了。由于现在 client 并没有发出建立连接的请求,因此不会理睬 server 的确认,也不会向 server 发送数据。但 server 却以为新的运输连接已经建立,并一直等待 client 发来数据。这样,server 的很多资源就白白浪费掉了。

        而且,两次握手无法保证Client正确接收第二次握手的报文(Server无法确认Client是否收到),也无法保证Client和Server之间成功互换初始序列号。

  • 四次握手?

        可以,没必要。

  • 第三次握手,客户端的ACK未送达服务器,会怎么样?

        这个参考了一些资料后,最合适的应该是分情况讨论:

        (1)假定此时双发都没有数据发送,服务端会周期性重传,直到收到A的确认。

        (2)假定此时客户端有数据发送,服务端收到数据Data + ACK后,会自动切换状态。

        (3)假定服务端有数据发送,数据发送不了,也是一直周期性重传。


四次挥手

  • 为什么需要四次挥手来关闭一个TCP连接

        四次挥手能够处理延迟的数据包。在网络通信中,由于数据包在传输过程中可能会遇到延迟,因此即使一方已经发送了关闭连接的请求,另一方可能仍然会接收到之前发送的数据包。通过四次挥手的过程,接收方可以确认所有待处理的数据包都已经收到并处理完毕,从而确保数据的完整性。
        四次挥手能够解决半关闭状态的问题。半关闭状态是指在一方已经关闭连接,而另一方仍尝试发送数据的情况。通过四次挥手,即使一方已经发送了关闭连接的请求,另一方也可以继续发送数据,直到对方确认收到所有数据并发送关闭连接的请求。这样可以避免数据丢失和连接异常中断的情况。
        通过四次交互,双方都能确保对方已经准备好关闭连接,并且所有数据都已经传输完毕,从而实现了连接的可靠关闭。
        如果采用三次挥手,可能会导致数据丢失或连接状态不一致的问题。例如,如果客户端发送FIN包后直接关闭连接,而服务端还有未发送完的数据,那么这些数据将丢失。因此,四次挥手是确保TCP连接可靠关闭所必需的。

  • 在四次挥手中,为什么客户端在发送FIN之后还要等待一段时间(2MSL)才进入CLOSED状态?(解释TIME-WAIT)

        等待2MSL可以确保客户端发送的最后一个ACK报文能够到达服务端。虽然服务端在接收到FIN报文后发送了ACK报文,但由于网络中的数据包可能会丢失或延迟,服务端可能没有收到客户端的ACK确认。因此,客户端等待一段时间,给服务端足够的时间来重新发送ACK报文,以确保服务端能够正确关闭连接。
        等待2MSL可以避免已失效的连接请求报文段出现在本连接中。在等待期间,如果有之前发送的数据包由于某种原因延迟到达,客户端可以处理这些迟到的数据包,而不会将其误认为是新连接的数据包,从而保证了数据的完整性和准确性。
        等待2MSL还可以确保客户端在发送完最后一个ACK报文后,有足够的时间让该报文在网络中消失,从而避免对新连接造成干扰。这是因为在网络拥塞或其他情况下,报文可能会在网络中存在一段时间,如果客户端立即进入CLOSED状态并开始新的连接,可能会与这些迟到的报文发生冲突。

  • TCP连接中的半连接队列和全连接队列是什么

        TCP连接中的半连接队列(也称为SYN队列)用于存储处于TCP三次握手过程中第一步的连接请求。

        当服务端收到客户端发起的SYN请求后,内核会把该连接存储到半连接队列中,等待完成三次握手的过程。此时,连接请求还没有完成握手,因此被认为是“半连接”。如果半连接队列满了,新来的连接请求可能会被丢弃或者根据系统配置发送RST报文。

        全连接队列就是已经完成三次握手,建立起连接的就会放在全连接队列中。

        半连接队列的主要作用是管理并跟踪那些尚未完全建立的连接,确保在三次握手完成之前,这些连接请求能够得到妥善的处理。它是TCP协议保证连接可靠性和性能的重要机制之一。

        需要注意的是,当服务端并发处理大量请求时,如果TCP半连接队列过小,就容易出现溢出的情况,导致后续的请求被丢弃,从而影响服务端的请求处理能力。因此,合理设置和调整半连接队列的大小对于优化网络性能和提升系统稳定性具有重要意义。


DNS域名解析过程

  • DNS运行于UDP协议之上,使用的端口为53。

        1、首先客户端位置是一台电脑或手机,在打开浏览器以后,比如输入http://www.zdns.cn的域名,它首先是由浏览器发起一个DNS解析请求,如果本地缓存服务器中找不到结果,则首先会向根服务器查询,根服务器里面记录的都是各个顶级域所在的服务器的位置,当向根请求http://www.zdns.cn的时候,根服务器就会返回.cn服务器的位置信息。

        2、递归服务器拿到.cn的权威服务器地址以后,就会寻问cn的权威服务器,知不知道http://www.zdns.cn的位置。这个时候cn权威服务器查找并返回http://zdns.cn服务器的地址。

        3、继续向http://zdns.cn的权威服务器去查询这个地址,由http://zdns.cn的服务器给出了地址:202.173.11.10

        4、最终才能进行http的链接,顺利访问网站。

        5、这里补充说明,一旦递归服务器拿到解析记录以后,就会在本地进行缓存,如果下次客户端再请求本地的递归域名服务器相同域名的时候,就不会再这样一层一层查了,因为本地服务器里面已经有缓存了,这个时候就直接把http://www.zdns.cn的A记录返回给客户端就可以了。


select,poll,epoll的区别(IO多路复用)

select
  • 委托操作系统内核检测服务端的文件描述符(通信和监听两类),因为检测过程会导致阻塞。

  • 监听的文件描述符,那么此时调用accept()不会阻塞程序。通信的文件描述符,调用read()/recv()不会阻塞程序。

  • 与多进程和多线程相比,I/O多路复用最大优势是系统开销小。

  • 最大文件描述符检测数量1024(写死)

#include <sys/select.h>
struct timeval {
    time_t      tv_sec;         /* seconds */
    suseconds_t tv_usec;        /* microseconds */
};

int select(int nfds, fd_set *readfds, fd_set *writefds,
           fd_set *exceptfds, struct timeval * timeout);
  •  nfds:委托内核检测的这三个集合中最大的文件描述符 + 1。内核需要线性遍历这些集合中的文件描述符,这个值是循环结束的条件,在Window中这个参数是无效的,指定为-1即可。

  • readfds:文件描述符的集合, 内核只检测这个集合中文件描述符对应的读缓冲区,传入传出参数,读集合一般情况下都是需要检测的,这样才知道通过哪个文件描述符接收数据

  • writefds:文件描述符的集合, 内核只检测这个集合中文件描述符对应的写缓冲区,传入传出参数,如果不需要使用这个参数可以指定为NULL

  • exceptfds:文件描述符的集合, 内核检测集合中文件描述符是否有异常状态,传入传出参数,如果不需要使用这个参数可以指定为NULL

  • timeout:超时时长,用来强制解除select()函数的阻塞的,NULL:函数检测不到就绪的文件描述符会一直阻塞。等待固定时长(秒):函数检测不到就绪的文件描述符,在指定时长之后强制解除阻塞,函数返回0。不等待:函数不会阻塞,直接将该参数对应的结构体初始化为0即可。

        select文件描述符操作流程:

// 将文件描述符fd从set集合中删除 == 将fd对应的标志位设置为0        
void FD_CLR(int fd, fd_set *set);
// 判断文件描述符fd是否在set集合中 == 读一下fd对应的标志位到底是0还是1
int  FD_ISSET(int fd, fd_set *set);
// 将文件描述符fd添加到set集合中 == 将fd对应的标志位设置为1
void FD_SET(int fd, fd_set *set);
// 将set集合中, 所有文件文件描述符对应的标志位设置为0, 集合中没有添加任何文件描述符
void FD_ZERO(fd_set *set);

 小结:

  •  执行原理

        (1)将当前的所有文件描述符,一次性从用户态拷贝到内核态

        (2)内核中无差别遍历fd(文件描述符)

        (3)将所有fd状态从内核态拷贝会用户态

        (4)需要用户自己判断哪个fd已经就绪

  • 限制和不足

        (1)长度有限,最大1024

        (2)fdset无法重用,需要循环创建

        (3)频繁进行用户态和内核态拷贝

        (4)需要对文件描述符列表遍历,O(n)

爱编程的大丙Select

poll
  • poll机制和select类似,一般较少使用(只有select可以跨平台,Linux更多使用epoll)

  • poll检测的文件描述符数量:无上限

#include <poll.h>
// 每个委托poll检测的fd都对应这样一个结构体
struct pollfd {
    int   fd;         /* 委托内核检测的文件描述符 */
    short events;     /* 委托内核检测文件描述符的什么事件 */
    short revents;    /* 文件描述符实际发生的事件 -> 传出 */
};

struct pollfd myfd[100];
int poll(struct pollfd *fds, nfds_t nfds, int timeout);

来源: 爱编程的大丙 poll

小结:

  •  执行原理        

        (1)将当前的所有文件描述符,一次性从用户态拷贝到内核态

        (2)内核中无差别遍历fd(文件描述符)

        (3)将所有fd状态从内核态拷贝会用户态

        (4)需要用户自己判断哪个fd已经就绪

  • 问题和不足

        (1)采用pollfd结构数组,没有1024限制

        (2)频繁的用户态和内核态切换

        (3)顺序便利,O(n)

epoll
  • epoll是select和poll的改进版,底层是红黑树,(select,poll都是线性表机制)不可以跨平台,只可以Linux使用

  • 对于待检测集合select和poll是基于线性方式处理的,epoll是基于红黑树来管理待检测集合的。

  • select和poll每次都会线性扫描整个待检测集合,集合越大速度越慢,epoll使用的是回调机制,效率高,处理效率也不会随着检测集合的变大而下降。

  • select和poll工作过程中存在内核/用户空间数据的频繁拷贝问题,在epoll中内核和用户区使用的是共享内存基于mmap内存映射区实现),省去了不必要的内存拷贝。

  • 程序猿需要对select和poll返回的集合进行判断才能知道哪些文件描述符是就绪的,通过epoll可以直接得到已就绪的文件描述符集合,无需再次检测。

  • 使用epoll没有最大文件描述符的限制,仅受系统中进程能打开的最大文件数目限制。

epoll工作模式:水平触发(LT),边缘触发(ET)

        水平触发(LT)

        只要读缓冲区不为空,写缓冲区不满,每次epoll_wait都会返回就绪,是epoll的默认工作方式。

        边缘触发(ET)

        只有缓冲区的数据有变化,epoll_wait才会返回就绪,因此在ET模式下,每次需要将缓冲区的数据全部读完,不然下次如果缓冲区没有发生数据变化,就一直不会返回就绪了。

小结:

  • epoll_ctl()函数中,每个文件描述符都指定了回调函数,基于回调函数将就绪的文件描述符放入就绪队列,因此时间负责度从O(n)降为O(1);

  • 只需要在epoll_ctl()时传递一次文件描述符,epoll_wait()不需要再传递文件描述符。

  • epoll基于红黑树和双列表,没有最大连接限制

  • epoll没有使用MMAP零拷贝技术

IO多路复用


常见问题搜集

  • socket什么情况下可读? 

1.socket接收缓冲区中已经接收的数据的字节数大于等于socket接收缓冲区低潮限度的当前值

2.连接的读一半关闭(即:接收到对方发过来的FIN的TCP连接),并且返回0;

3.socket收到了对方的connect请求已经完成的连接数为非0.这样的soocket处于可读状态;

4.异常的情况下socket的读操作将不会阻塞,并且返回一个错误(-1)。

  • 五种IO模型

阻塞IO、非阻塞IO、信号驱动IO、异步IO、I/O复用模型。

IO多路复用

  • TCP/IP状态迁移过程?

TCP/IP状态迁移


参考

TCP、UDP、Socket、HTTP网络编程面试题(总结最全面的面试题!!!) - 非科班的科班的文章 - 知乎

TCP三次握手与四次挥手详解

一张图看懂DNS域名解析全过程 - 玩转Linux内核的文章 - 知乎

来源: 爱编程的大丙 Select

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/913229.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HashMap(深入源码追踪)

一篇让你搞懂HashMap的几个最重要的知识点,往源码跟踪可以让我们很轻松应对所谓的一些八股面试题. 一. 属性解释 先来解释HashMap中重要的常量属性值 DEFAULT_INITIAL_CAPACITY : 默认初始化容量,也就是如果不指定初始化的Map存储容量大小,默认生成一个存储16个空间的Map集合…

MySQL中的事务与锁

目录 事务 InnoDB 和 ACID 模型 原⼦性的实现 持久性的实现 ​隔离性的实现 锁 隔离级别 ​多版本控制(MVCC) 事务 1.什么是事务? 事务是把⼀组SQL语句打包成为⼀个整体&#xff0c;在这组SQL的执⾏过程中&#xff0c;要么全部成功&#xff0c;要么全部失败&#…

C#开发基础:WPF和WinForms关于句柄使用的区别

1、前言 在 Windows 应用程序开发中&#xff0c;WPF&#xff08;Windows Presentation Foundation&#xff09;和 WinForms&#xff08;Windows Forms&#xff09;是两种常见的用户界面&#xff08;UI&#xff09;框架。它们各自有不同的架构和处理方式&#xff0c;其中一个显…

基于.NET开源、功能强大且灵活的工作流引擎框架

前言 工作流引擎框架在需要自动化处理复杂业务流程、提高工作效率和确保流程顺畅执行的场景中得到了广泛应用。今天大姚给大家推荐一款基于.NET开源、功能强大且灵活的工作流引擎框架&#xff1a;elsa-core。 框架介绍 elsa-core是一个.NET开源、免费&#xff08;MIT License…

.NET6中WPF项目添加System.Windows.Forms引用

.NET6中WPF项目添加System.Windows.Forms引用 .NET6的WPF自定义控件默认是不支持System.Windows.Forms引用的&#xff0c;需要添加这个引用方法如下&#xff1a; 1. 在项目浏览器中找到项目右击&#xff0c;选择编辑项目文件&#xff08;Edit Project File&#xff09;。 …

16.UE5拉怪机制,怪物攻击玩家,伤害源,修复原视频中的BUG

2-18 拉怪机制&#xff0c;怪物攻击玩家、伤害源、黑板_哔哩哔哩_bilibili 目录 1.实行行为树实现拉怪机制 1.1行为树黑板 1.2获取施加伤害对象&#xff08;伤害源&#xff09; 2.修复原视频中&#xff0c;第二次攻击怪物后&#xff0c;怪物卡在原地不动的BUG 3.怪物攻击玩…

<项目代码>YOLOv8 草莓成熟识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

Vue全栈开发旅游网项目(9)-用户登录/注册及主页页面开发

1.用户登录页面开发 1.查询vant组件 2.实现组件模板部分 3.模型层准备 4.数据上传 1.1 创建版权声明组件Copyright 新建文件&#xff1a;src\components\common\Copyright.vue <template><!-- 版权声明 --><div class"copyright">copyright xx…

后台管理系统窗体程序:文章管理 > 文章列表

目录 文章列表的的功能介绍&#xff1a; 1、进入页面 2、页面内的各种功能设计 &#xff08;1&#xff09;文章表格 &#xff08;2&#xff09;删除按钮 &#xff08;3&#xff09;编辑按钮 &#xff08;4&#xff09;发表文章按钮 &#xff08;5&#xff09;所有分类下拉框 &a…

【万字详解】如何在微信小程序的 Taro 框架中设置静态图片 assets/image 的 Base64 转换上限值

设置方法 mini 中提供了 imageUrlLoaderOption 和 postcss.url 。 其中&#xff1a; config.limit 和 imageUrlLoaderOption.limit 服务于 Taro 的 MiniWebpackModule.js &#xff0c; 值的写法要 &#xff08;&#xff09;KB * 1024。 config.maxSize 服务于 postcss-url 的…

基于STM32通过TM1637驱动4位数码管详细解析(可直接移植使用)

目录 1. 单位数码管概述 2. 对应编码 2.1 共阳数码管 2.2 共阴数码管 3. TM1637驱动数码管 3.1 工作原理 3.1.1 读键扫数据 3.1.2 显示器寄存器地址和显示模式 3.2 时序 3.2.1 指令数据传输过程&#xff08;读案件数据时序&#xff09; 3.2.2 写SRAM数据…

数字信号处理Python示例(11)生成非平稳正弦信号

文章目录 前言一、生成非平稳正弦信号的实验设计二、生成非平稳正弦信号的Python代码三、仿真结果及分析写在后面的话 前言 本文继续给出非平稳信号的Python示例&#xff0c;所给出的示例是非平稳正弦信号&#xff0c;在介绍了实验设计之后给出Python代码&#xff0c;最后给出…

Linux 系统结构

Linux系统一般有4个主要部分&#xff1a;内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构&#xff0c;它们使得用户可以运行程序、管理文件并使用系统。 1. linux内核 内核是操作系统的核心&#xff0c;具有很多最基本功能&#xff0c;它…

网络安全之SQL初步注入

一.字符型 平台使用pikachu $name$_GET[name]; ​ $query"select id,email from member where username$name"; 用户输入的数据会被替换到SQL语句中的$name位置 查询1的时候&#xff0c;会展示username1的用户数据&#xff0c;可以测试是否有注入点&#xff08;闭…

【IEEE/EI会议】第八届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2025)

会议通知 会议时间&#xff1a;2025年4月25-27日 会议地点&#xff1a;中国南京 会议官网&#xff1a;www.aemcse.org 会议简介 第八届先进电子材料、计算机与软件工程国际学术会议&#xff08;AEMCSE 2025&#xff09;由南京信息工程大学主办&#xff0c;将于2025年4月25日…

华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)

华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目分享——共九套&#xff08;每套四十题&#xff09; 岗位——芯片与器件设计工程师 岗位意向——模拟芯片 真题题目分享&#xff0c;完整题目&#xff0c;无答案&#xff08;共8套&#xff09; 实习岗位…

Python——数列1/2,2/3,3/4,···,n/(n+1)···的一般项为Xn=n/(n+1),当n—>∞时,判断数列{Xn}是否收敛

没注释的源代码 from sympy import * n symbols(n) s n/(n1) print(数列的极限为&#xff1a;,limit(s,n,oo))

104、Python并发编程:基于事件Event实现多线程间的同步

引言 继续介绍关于多线程同步的实现方式&#xff0c;本文将介绍基于Event的线程同步方式。 本文的主要内容有&#xff1a; 1、什么是Event 2、Event的使用场景 3、Event的代码实例 4、Event与Condition的比较 什么是Event 在Python的多线程编程中&#xff0c;Event是一个…

首次超越扩散模型和非自回归Transformer模型!字节开源RAR:自回归生成最新SOTA!

文章链接&#xff1a;https://arxiv.org/pdf/2411.00776 项目链接&#xff1a;https://yucornetto.github.io/projects/rar.html 代码&模型链接&#xff1a;https://github.com/bytedance/1d-tokenizer 亮点直击 RAR&#xff08;随机排列自回归训练策略&#xff09;&#x…

IDEA在编译时: java: 找不到符号符号: 变量 log

一、问题 IDEA在编译的时候报Error:(30, 17) java: 找不到符号符号: 变量 log Error:(30, 17) java: 找不到符号 符号: 变量 log 位置: 类 com.mokerson.rabbitmq.config.RabbitMqConfig 二、解决方案 背景&#xff1a;下载其他同事代码时&#xff0c;第一次运行&#xff0c…