网络udp及ipc内存共享

news/2024/9/17 21:13:17/ 标签: 网络, 安全, 服务器

大字符串找小字符串

调试

1. 信号处理函数注册:•一旦使用 signal 函数注册了信号处理函数,该函数就会一直有效,直到程序结束或者显式地取消注册。2. 注册多次的影响:•如果多次注册同一信号的处理函数,最后一次注册的处理函数将成为有效的处理函数。•重复注册同一信号的处理函数并不会累加效果,而是覆盖之前的注册。3. 取消注册:•如果想要取消信号处理函数的注册,可以再次调用 signal 函数,并将 handler 参数设置为 SIG_DFL 或 SIG_IGN。

2.在Linux系统中,每个共享内存段都通过一个唯一的键值来标识。当进程想要访问某个共享内存段时,它会通过shmget函数并传入该共享内存段的键值来请求系统分配或返回该内存段的标识符(shmid)。系统会根据键值来查找对应的共享内存段,如果找到,就返回该内存段的标识符给进程;如果找不到,且进程请求的是创建新的共享内存段,那么系统会根据键值(如果使用的是非IPC_PRIVATE的键值)检查是否已经存在一个同名的共享内存段,如果不存在,则创建一个新的共享内存段并返回其标识符。

由于键值的唯一性,不同的进程如果想要访问不同的共享内存段,就需要使用不同的键值。这样,即使多个进程都在请求共享内存段,它们也能够通过各自的键值来访问到正确的内存段,而不会发生误操作或数据冲突。

当然,如果两个或多个进程想要共享同一个内存段,它们就需要使用相同的键值来访问该内存段。这通常是通过在进程之间共享这个键值来实现的,比如通过环境变量、配置文件或命令行参数等方式传递。

需要注意的是,虽然键值确保了共享内存段的唯一性,但在使用共享内存进行进程间通信时,还需要注意同步和互斥问题,以避免数据竞争和不一致性。这通常需要通过信号量、互斥锁等同步机制来实现。

数据传输过程1. 数据包的封装与解封装:•当数据从发送方传输到接收方时,它会经历一个封装过程,然后在网络中传输,最后进行解封装。•在封装过程中,数据会被添加头部信息,形成数据包。2. 网络层与链路层:•网络层:负责将数据包从源主机路由到目的主机,使用 IP 地址。•链路层:负责在局域网内将数据包从源设备传输到目的设备,使用 MAC 地址。IP 地址与 MAC 地址的关系

1. IP 地址:•IP 地址用于在网络层标识设备。•当数据包需要从一个网络传输到另一个网络时,路由器使用 IP 地址进行路由决策。

2. MAC 地址:•MAC 地址用于在链路层标识设备。•当数据包需要在同一局域网内传输时,使用 MAC 地址将数据包从源设备发送到目的设备。

3. ARP 协议:•在局域网中,ARP 协议用于将 IP 地址映射到 MAC 地址。•当设备需要向另一台设备发送数据时,它首先查询 ARP 缓存以查找目标 IP 地址对应的 MAC 地址。•如果找不到,则发送一个 ARP 请求广播,询问目标 IP 地址对应的 MAC 地址。•目标设备会回复一个 ARP 应答,包含其 MAC 地址。

为什么需要 MAC 地址虽然 IP 地址已经足够标识网络中的设备,但在局域网内,数据包的实际传输是通过 MAC 地址完成的。这是因为:1. 链路层转发:•数据包在局域网内的传输是由链路层完成的,而链路层使用 MAC 地址进行转发。•MAC 地址确保数据包能够在局域网内准确地从一个设备传输到另一个设备。2. 局域网内的直接通信:•在同一局域网内,设备之间的通信不需要通过路由器,直接通过 MAC 地址进行。3. 提高效率:•使用 MAC 地址可以提高数据包在局域网内的传输效率。•MAC 地址的使用减少了对路由器的依赖,加快了数据包的转发速度。

示例假设有一台设备 A 需要向同一局域网内的设备 B 发送数据:1. 查找 IP 地址:•设备 A 已知设备 B 的 IP 地址为 192.168.1.3。2. 查找 MAC 地址:•设备 A 查询 ARP 缓存,如果找到了设备 B 的 MAC 地址,则直接使用。•如果没有找到,则发送一个 ARP 请求广播,询问 192.168.1.3 对应的 MAC 地址。•设备 B 回复 ARP 应答,包含其 MAC 地址 00:1F:2G:3H:4I:5J。3. 发送数据:•设备 A 在数据帧中使用设备 B 的 MAC 地址 00:1F:2G:3H:4I:5J 发送数据。

帧数据(Frame Data)是计算机网络中链路层(第二层)的数据单位。在数据从发送方传输到接收方的过程中,数据在每一层都会被封装成不同的格式。在链路层,数据被封装成帧(Frames)。帧数据的组成帧数据通常包含以下几个部分:1. 帧头(Header):•包含控制信息,如源 MAC 地址、目的 MAC 地址、帧类型等。•帧头还包括一些用于确保数据完整性、同步等的信息。2. 数据字段(Data Field):•包含来自上一层(通常是网络层)的数据,如 IP 数据报。3. 帧尾(Trailer):•通常包含校验和(Checksum)或循环冗余校验(CRC)等用于检测传输错误的信息。帧数据的格式帧数据的具体格式可能因使用的链路层协议而异,但大多数帧数据格式遵循类似的结构。下面是一个通用的帧数据格式示例:+----------------+----------------+----------------+----------------+
| Preamble | Start Frame Delimiter | Destination MAC |
+----------------+----------------+----------------+----------------+
| Source MAC | Length / Type | Data | Frame Check Sequence |
+----------------+----------------+----------------+----------------+
plaintext1. Preamble:•一系列的位,用于帮助接收端设备同步。•通常由多个 10101010 的序列组成。2. Start Frame Delimiter (SFD):•标志帧的开始。3. Destination MAC:•目的设备的 MAC 地址。4. Source MAC:•发送设备的 MAC 地址。5. Length / Type:•数据字段的长度或类型。6. Data:•包含来自网络层的数据。7. Frame Check Sequence (FCS):•用于检测传输错误的校验和或 CRC。

示例假设有一条从发送方传输到接收方的数据,这条数据在网络层被封装成 IP 数据报,然后在链路层被封装成帧数据:1. 网络层:•IP 数据报包含源 IP 地址、目的 IP 地址、协议类型等信息。2. 链路层:•IP 数据报被封装成帧数据。•帧数据包括帧头、数据字段(IP 数据报)和帧尾。

总结•帧数据:链路层的数据单位。•组成:帧头、数据字段、帧尾。•用途:确保数据在局域网内的准确传输。

1. 应用层数据:•原始数据,例如一段文本或图像。

2. 传输层:•数据被分割成较小的部分,并添加 TCP 或 UDP 头部,形成传输层数据段。

3. 网络层:•传输层数据段被封装成数据包,添加 IP 地址等信息。

4. 链路层:•数据包被封装成帧数据,添加 MAC 地址等信息。

5. 物理层:•帧数据被转换为比特流,在物理介质上传输。

6. 接收方:•物理层接收到比特流,并将其转换为帧数据。•链路层解封装帧数据,提取出数据包。•网络层解封装数据包,提取出传输层数据段。•传输层解封装数据段,重组原始数据。

OSI 七层模型OSI(Open Systems Interconnection)七层模型是一种理论模型,用于描述计算机网络中不同层次的功能。

它将网络通信分解为七个不同的层次,每个层次负责不同的功能。下面是 OSI 七层模型各层的具体含义:

1. 应用层(Layer 7)•功能: •提供应用程序和服务之间的接口。•支持文件传输、电子邮件、打印服务等功能。•为用户提供访问网络资源的方法。•常见协议:HTTP, FTP, SMTP, Telnet, SSH, SNMP 等。

2. 表示层(Layer 6)•功能: •负责数据的编码和解码。•处理数据压缩、加密和解密等。•常见协议:JPEG, MPEG, ASCII, DES, RSA 等。

3. 会话层(Layer 5)•功能: •建立、管理和终止会话。•控制数据交换的同步。•提供会话恢复和检查点等机制。•常见协议:SQL, RPC, NCP, NetBIOS, ASP 等。

4. 传输层(Layer 4)•功能: •提供端到端的数据传输服务。•确保数据的可靠传输,包括错误检测、纠正和流量控制。•分割和重组数据。•常见协议:TCP, UDP 等。

5. 网络层(Layer 3)•功能: •负责路由选择和数据包的转发。•提供逻辑寻址(如 IP 地址)。•控制拥塞和数据包的排序。•常见协议:IP, ICMP, ARP, RARP, OSPF, BGP 等。

6. 数据链路层(Layer 2)•功能: •负责在相邻节点之间传输数据帧。•提供物理地址(如 MAC 地址)。•进行错误检测和流量控制。•常见协议:Ethernet, Token Ring, PPP, HDLC 等。

7. 物理层(Layer 1)•功能: •负责在物理介质上进行比特流的传输。•定义电气特性、机械特性、功能特性和过程特性。•提供物理连接的建立、维护和释放。•常见协议:RS-232, V.35, RJ-45, BNC, AUI 等。

各层之间的关系1. 数据封装:•当数据从高层向低层传输时,每层都会添加自己的头部信息,形成数据单元。•数据单元在不同层有不同的名称: •应用层:数据•表示层:数据•会话层:会话数据单元 (SDU)•传输层:数据段 (Segment)•网络层:数据包 (Packet)•数据链路层:数据帧 (Frame)•物理层:比特流 (Bit Stream)2. 数据解封装:•当数据从低层向高层传输时,每层都会去除自己添加的头部信息,还原原始数据。•数据在接收方的每个层次被解封装,直至恢复为原始数据。示例假设有一条从发送方传输到接收方的数据,这条数据在网络的不同层次中被封装的过程如下:1. 应用层:•原始数据,例如一段文本或图像。

2. 表示层:•数据被编码或加密。

3. 会话层:•数据被封装成会话数据单元 (SDU)。

4. 传输层:•SDU 被分割成较小的部分,并添加 TCP 或 UDP 头部,形成数据段。

5. 网络层:•数据段被封装成数据包,添加 IP 地址等信息。

6. 数据链路层:•数据包被封装成帧数据,添加 MAC 地址等信息。

7. 物理层:•帧数据被转换为比特流,在物理介质上传输。总结•OSI 七层模型:将网络通信分解为七个不同的层次,每个层次负责不同的功能。•各层功能:从应用层到物理层,描述了数据在网络中的传输过程。•数据封装与解封装:数据在网络的不同层次中被封装和解封装。

    • 网络协议的作用网络协议是规定网络通信的标准和规则,同时也是实现网络通信的基础。网络协议定义了数据在网络中传输的方式,包括数据的格式、传输的规则、错误处理等各个方面。下面详细介绍网络协议的作用:规定标准
    • 1. 定义通信规则:•网络协议定义了不同设备之间通信的规则和标准。•它们规定了数据的格式、传输的顺序、错误处理方法等。
    • 2. 确保兼容性:•网络协议确保不同制造商生产的设备可以相互通信。•通过遵循共同的协议标准,设备可以相互识别和交换数据。
    • 3. 标准化数据格式:•网络协议定义了数据在网络中传输时的格式。•例如,TCP/IP 协议族中的 IP 协议定义了 IP 数据包的格式。
    • 实现网络通信1. 数据传输:•网络协议提供了数据在网络中传输的方法。•它们定义了数据如何被封装、如何被传输、以及如何被解封装。
    • 2. 错误检测与纠正:•网络协议包含了错误检测和纠正机制。•例如,TCP 协议使用序列号和确认机制来确保数据的可靠传输。
    • 3. 路由选择:•网络协议定义了数据在网络中如何被路由。•例如,IP 协议使用路由表来确定数据包的最佳路径。
    • 4. 资源管理:•网络协议还涉及到网络资源的管理。
    • •例如,TCP 协议中的流量控制机制可以帮助防止网络拥塞。示例假设两台计算机通过 TCP/IP 协议族进行通信:1. 应用层:•HTTP 协议定义了 Web 服务器和客户端之间的通信规则。2. 传输层:•TCP 协议确保数据可靠传输,提供流控制和错误检测机制。3. 网络层:•IP 协议定义了数据包在网络中的路由和寻址规则。4. 数据链路层:•Ethernet 协议定义了局域网内的数据帧格式和传输规则。5. 物理层:•定义了物理连接的电气特性、信号传输方式等。总结•规定标准:网络协议定义了通信的规则和标准。•实现通信:网络协议提供了实现网络通信的方法。•兼容性与互操作性:网络协议确保不同设备可以相互通信。

先发给网关,子网掩码和ip与后,网络号就知道了,网关就知道是给外面发还是在局域网内

iPV4,32位

ipv6,128位

p2p,点对点,可能用的越多带宽越大

网络编程:
   tcp / udp  

IPC 进程间通信方式
  
  共享内存   //最高效的进程间通信方式 


【原理】:        
+-进程A-+              +-进程B-+   <--        
|       |              |       |     ^
|       |              |       |     |
|       |              |       |    0~3G
|       |              |       |     
|       |              |       |     |
|       |              |       |     |
|       |                |       |     V
+------------------------------+     --
|         内核                 |     1G
+------------------------------+   <----


共享内存:

                  [内存]
                  |    |
                  +----+                  
[进程A]           |    |                 [进程B]
    \---------->  |    | <---------------/
                  |    |
                  +----+                  
                  |    | 
                  |    |
                  |    | 
                  |    |
                  
    虚拟地址     mmu(memory management unit )          
                   fifo 
                   
                   
共享内存:
  1.是一块,内核预留的空间 
  2.最高效的通信方式 
   //避免了用户空间 到 内核空间的数据拷贝
  
  

IPC通信方式 ---操作流程类似的 
操作:
         system v :  共享内存 

    IPC对象操作通用框架:
    0x  ftok
    key值 ==> 申请 ==》读写 ==》关闭 ==》卸载


    InterProcessCommunication  //IPC 

                  |进程A|        |进程B|
                     \             /
[用户空间]            ````[key]```       //name ---fifo 
                            |
                          xxxget()函数 //建立了 key <==>ipc对象之间的一一对应的关系
                            |
----------------------------|--------------   
[内核空间]                  |   
                            |
                         [IPC对象]//共享内存 
                         
    


//step1 产生key值 
ftok //


#include <sys/types.h>
       #include <sys/ipc.h>

       key_t ftok(const char *pathname, int proj_id);
       功能:
             将pathname 和 proj_id 转换为 key值 
       参数:
        @pathname  //给一个路径名 
        @proj_id   //工程id       eg: 'A'
       返回值
          成功 key值
          失败 -1     

//step2 通过key获取ipc对象 (共享内存)
shmget   //shared memory 


//1、申请对象:shmget()
    #include <sys/ipc.h>
    #include <sys/shm.h>
    ps aux|grep a.out
        shared memory get         IPC_CREAT|0666
    int shmget(key_t key, size_t size, int shmflg);
    功能:
         使用唯一键值key向内核提出共享内存使用申请
    参数:key   唯一键值
          size  要申请的共享内存大小
          shmflg 申请的共享内存访问权限,八进制表示
          如果是第一个申请,则用IPC_CREAT
          如果要检测是否存在,用IPC_EXCL
    返回值:
            成功 返回共享内存id,一般用shmid表示
            失败  -1;

            share memory attach

//step3 共享内存 绑定 
shmat 

    映射对象:shmat()
    void *shmat(int shmid, const void *shmaddr, int shmflg);
    功能:将指定shmid对应的共享内存映射到本地内存。
    参数:shmid 要映射的本地内存
          shmaddr 本地可用的地址,如果不确定则用NULL,表示
                  由系统自动分配。
          shmflg  
          0         ,  表示读写
          SHM_RDONLY, 只读
    返回值:
           成功 返回映射的地址,一般等于shmaddr
            失败 (void*)-1        

//step4 解除绑定(映射)

    撤销映射:shmdt
    int shmdt(const void *shmaddr);
    功能:将本地内存与共享内存断开映射关系。
    参数:shmaddr 要断开的映射地址。
    返回值:成功  0
            失败  -1;

          

//step4 销毁IPC对象 
        删除对象:shmctl
    int shmctl(int shmid, int cmd, struct shmid_ds *buf); //ctl = control 
    功能:
         修改共享内存属性,也可以删除指定的共享内存对象。
    参数:shmid 要删除的共享内存对象
          cmd 
               IPC_RMID 删除对象的宏
          buff  NULL 表示只删除对象。
    返回值:成功 0
            失败 -1
      
          总结:                      
    1、共享内存数据的存储方式是拷贝还是剪切?
        拷贝
    2、共享内存的数据如果多次不同进程读写会怎么样?
        同一操作对象,数据没有偏移情况下会覆盖。
IPC对象 -- 共享内存 
消息队列 
信号量集     
--------------------------------------------------------------------------
单主机内的进程间通信方式:
传统
   管道 
     有名管道
     无名管道 
   信号    
IPC对象
   共享内存   //通信效率最高的 
   (*)消息队列
   (*)信号量集 
--------------------------------------------------------------------------
进程通信方式:
  不同主机间    //网络通信 
  
 

实现网络通信
1.物理层面 有一个 信息通路  
  有线 
  无线 
     5G
     4G 
     星链 
2.软件层面(逻辑层面) 也需要 一个通路 
   
TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数
据无误、数据无丢失、数据无失序、数据无重复到达的通信)

* 适用情况:
1. 适合于对传输质量要求较高,以及传输大量数据
的通信。
2. 在需要可靠数据传输的场合,通常使用TCP协议
3. QQ等即时通讯软件的用户登录账户管理相关
的功能通常采用TCP协议

tcp协议特点:
1. 面向连接   //类似打电话通话之前 ,必须先打通 
2. 可靠传输   //保证数据准确可靠 (tcp协议机制 里面的功能 )
3. 面向字节流程

UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。
在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。

* 适用情况:
1. 发送小尺寸数据(如对DNS服务器进行IP地址查询时)
2. 在接收到数据,给出应答较困难的网络中使用UDP。(如:无
线网络
3. 适合于广播/组播式通信中。
4. MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通
讯通常采用UDP协议
5. 流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP
方式进行实时数据传输

UDP特点:    //广播 
1.不可靠 
2.无连接 
3.数据报  
-----------------------------------------------------------------------------------
编程:
  编程模型 
     c/s    client server    客户端,服务器模型     --- 专用客户端 
     b/s    browser server   浏览器,服务器模型     --- 通用的客户端 
     p2p    peer to peer     点对点传输 
     
     

基于UDP c/s通信模型:
//client ---客户端 --- 角色  --- 主动的角色  
socket    //1.一种特殊的文件 --- 专门用于网络通信(不同主机间的进程)
          //2.socket 编程接口  --- socket 函数 
          //提供了一个可以访问 操作系统 网络功能的接口 
          
sendto //发数据 
... 


//server --- 服务器端 --角色 --- 被动的角色  
socket 
recvfrom    //接收数据 
...

//socket 

 int socket(int domain, int type, int protocol);
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>

int socket(int domain, int type, int protocol);
功能:程序向内核提出创建一个基于内存的套接字描述符    
参数:   
      //domain --域 (范围) ---socket 用于什么范围的通信
      //           ipv4 
     //               ipv6 
      domain  地址族,PF_INET == AF_INET ==>互联网程序
                      PF_UNIX == AF_UNIX ==>单机程序
      type    套接字类型:
                SOCK_STREAM  流式套接字 ===》TCP   
              SOCK_DGRAM   用户数据报套接字===>UDP
              //SOCK_RAW     原始套接字  ===》IP
      protocol 协议 ==》0 表示自动适应应用层协议。

返回值:

        成功 返回申请的套接字文件描述符 
        失败  -1
        
      
    ssize_t sendto(    int sockfd,  //用于通信的socket对应的fd
                  const void *buf,  //表示要发送的数据所在的一块空间 
                       size_t len,  //表示发送的字节数 
                        int flags,  //0  --- 默认  
 const struct sockaddr *dest_addr,  //表示 要发送到的 地址 (网络地址 ip+端口号 ) 
                socklen_t addrlen   //表示dest_addr 这个参数的长度 
                );
      
      返回值:
          成功  发送出去的字节的数 
          失败  -1 
          
          
             struct sockaddr_in {
               sa_family_t    sin_family; /* address family: AF_INET */
               in_port_t      sin_port;   /* port in network byte order */
               struct in_addr sin_addr;   /* internet address IP */
           };

           /* Internet address. */
           struct in_addr {
               uint32_t       s_addr;     /* address in network byte order */
           };

 
          
         
          
端口号:
    端口号:  16位数值(unsigned short ) //0~65535 (65536个数)
       //标示一个进程
      TCP和 UDP 的端口号是独立的
  端口号:
    (1) 
       作用:唯一的标识一个进程
       每一个应用程序进程有一个端口号,
       通讯时区分数据包属于哪个应用程序进程

     (2) 分类
      
      端口号一般由IANA (Internet Assigned NumbersAuthority) 管理
   众所周知端口:
                  1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用)
                  知名端口号(已经分配给标准应用服务软件) 
                  如: 
                  http协议用到的端口号 80 
    已登记端口:  
                  1024~49151
                  注册端口号(非标准应用服务软件的软件可以申请的端口号范围)
    动态或私有端口://50000 以上的端口号 
                  49152~65535 动态分配的端口号(系统动态分配给应用程序使用的)

   (3) 长度
    2字节(16bit) 
    
    leetcode //力扣 
    
    
    
            00 12
    数字转换函数:
    #include <arpa/inet.h>
    1236234687
    主机转网络
                uint32_t htonl(uint32_t hostlong);
    ipv4 192.168.0.1 1~65535
                uint16_t htons(uint16_t hostshort);
    网络转主机:host to net 
                net to host 
                uint32_t ntohl(uint32_t netlong);
                uint16_t ntohs(uint16_t netshort);


    htonl --- h(host) to n(network) l (long)  //32位的数据
       htons --- h(host) to n(network) s (short) //16位的数据 
    
    ntohl 
    ntohs --- n(network) to h(host)  s (short) 
    
    字符串转换函数:
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>

    主机转网络
    in_addr_t inet_addr(const char *cp);
    inet_addr("192.168.1.20");
    cli.sin_addr
    网络转主机:char *inet_ntoa(struct in_addr in); //a -- ascii 

                


http://www.ppmy.cn/news/1516737.html

相关文章

【手写数据库内核组件】0303 数据缓存池(二) 缓存块使用前需要固定,缓存加载与无效,无锁的替换算法

0303 数据缓存池(二) ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章目录 0303 数据缓存池(二)一、概述 二、缓存块操作原理 2.1 缓存块的读写访问 2.2 无…

C学习(数据结构)-->实现链式结构二叉树

目录 一、链式二叉树结构 二、实现 1、申请新结点 2、前、中、后序遍历 1&#xff09;前序遍历 例&#xff1a; 2&#xff09;中序遍历 3&#xff09;后序遍历 3、结点个数 1&#xff09;二叉树结点个数 例&#xff1a;​编辑 2&#xff09;二叉树叶子结点个数 3&…

网络排名变差算法在充电桩计量可信度评价中的应用AcrelCloud-9000安科瑞充电柱收费运营云平台

摘要&#xff1a;网络排名变差算法是指根据充电交易流水数据构造桩车网络&#xff0c;利用复杂网络的投票智慧而非传统的物理实验来获得对量值的信心。将排名变差算法用于桩车网络计算中&#xff0c;旨在检定合格的充电桩对其他充电桩排名变化的影响&#xff0c;这种影响以电动…

计算机毕业设计选题推荐-OA办公管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Git提交错误代码如何回退代码

1&#xff0c;找到需要回退的提交行&#xff0c;点击右键&#xff0c;点击重置当前分支到此次提交 2,选择强行合并 3&#xff0c;执行git pull -f 强行推送 4&#xff0c;如果当前账号没有开启本分支强推权限 需要去git开启 5&#xff0c;如果没有推送&#xff0c;处于待推…

深度学习学习经验——长短期记忆网络(LSTM)

长短期记忆网络&#xff08;LSTM&#xff09; 长短期记忆网络&#xff08;LSTM&#xff0c;Long Short-Term Memory&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;专为解决 RNN 中长期依赖问题而设计。LSTM 引入了三个门和一个细胞状态&#x…

Spring DI 数据类型——构造注入

首先新建项目&#xff0c;可参考 初识 IDEA 、模拟三层--控制层、业务层和数据访问层 一、spring 环境搭建 &#xff08;一&#xff09;pom.xml 导相关坐标 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.…

FPGA时序约束

FPGA时序约束 目录 FPGA时序约束 前言1、建立和保持时间1.1 建立时间1.2 保持时间 2 时序路径2 具体约束2.1 IO约束2.1.1 管脚约束2.1.2 延迟约束2.1.3 虚拟时钟 2.2周期约束&#xff0c;FPGA内部的时序路径2.2.1 主时钟2.2.2 衍生时钟2.2.3 主时钟之间的相互关系2.2.4 使用BUF…

S3协议分片上传(minio)

文章目录 前言一、minio 为例二、使用步骤1.引入库2.读入数据总结前言 目前文件存储一般采用obs存储,也就是对象存储 比较流行的有: minio 阿里云 华为云 阿里云 腾讯云 七牛云 百度云 ,对于贫穷的我来说,当然选择免费开源的minio了,但是他们有一个统一的标准也就是S3协议,相…

一文读懂 DDD领域驱动设计

DDD&#xff08;Domain-Driven Design&#xff0c;领域驱动设计&#xff09;是一种软件开发方法&#xff0c;它强调软件系统设计应该以问题领域为中心&#xff0c;而不是技术实现为主导。DDD通过一系列手段如统一语言、业务抽象、领域划分和领域建模等来控制软件复杂度&#xf…

【Rust光年纪】Rust多媒体处理库全面比较:探索安全高效的多媒体处理利器

多媒体处理不再困扰&#xff1a;解锁Rust语言下的六大多媒体利器 前言 随着Rust语言的快速发展&#xff0c;越来越多的多媒体处理库和工具集开始出现&#xff0c;为开发人员提供了丰富的选择。本文将对几个用于Rust语言的多媒体处理库进行介绍&#xff0c;并对它们的核心功能…

【算法】希尔排序、计数排序、桶排序、基数排序

1 希尔排序 2 计数排序 3 桶排序 4 基数排序 1 希尔排序 """ 希尔排序&#xff08;Shell Sort&#xff09;是一种插入排序算法的改进版本&#xff0c;得名于其发明者Donald Shell。 它通过比较一定间隔的元素来进行排序&#xff0c;以减少数据移动的次数&#…

Jmeter进行http接口测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤&#xff08;1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL&#xff0c;路径&#xf…

【HarmonyOS NEXT星河版开发实战】天气查询APP

目录 前言 界面效果展示 首页 添加和删除 界面构建讲解 1. 获取所需数据 2. 在编译器中准备数据 3. index页面代码讲解 3.1 导入模块&#xff1a; 3.2 定义组件&#xff1a; 3.3 定义状态变量: 3.4 定义Tabs控制器: 3.5 定义按钮样式&#xff1a; 3.6 页面显示时触发…

Java核心API——Collection集合的工具类Collections

集合的排序 int类型的排序 * 集合的排序 * java.util.Collections是集合的工具类&#xff0c;提供了很多static方法用于操作集合 * 其中提供了一个名为sort的方法&#xff0c;可以对List集合进行自然排序(从小到大) List<Integer> list new ArrayList<>();Rand…

96页PPT集团战略解码会工具与操作流程

德勤集团在战略解码过程中通常会用到以下一些具体工具&#xff1a; 一、平衡计分卡&#xff08;Balanced Scorecard&#xff09; 财务维度&#xff1a; 明确关键财务指标&#xff0c;如营业收入、利润、投资回报率等。你可以通过分析历史财务数据和行业趋势&#xff0c;确定…

设计模式24-命令模式

设计模式24-命令模式 写在前面行为变化模式 命令模式的动机定义与结构定义结构 C 代码推导优缺点应用场景总结补充函数对象&#xff08;Functors&#xff09;定义具体例子示例&#xff1a;使用函数对象进行自定义排序代码说明输出结果具体应用 优缺点应用场景 命令模式&#xf…

鸿蒙位置服务

位置服务 1、首先申请权限 在module.json5文件下申请位置权限 "requestPermissions": [{"name": "ohos.permission.LOCATION", // 权限名称,为系统已定义的权限"reason": "$string:location_reason", // 申请权限的原因,…

windows 核心编程第五章:演示作业的使用及获取统计信息

演示作业的使用及获取统计信息 演示作业的使用及获取统计信息 文章目录 演示作业的使用及获取统计信息演示作业的使用及获取统计信息 演示作业的使用及获取统计信息 /* 演示作业的使用及获取统计信息 */#include <stdio.h> #include <Windows.h> #include <tc…

HBase原理和操作

目录 一、HBase在Zookeeper中的存储元数据信息集群状态信息 二、HBase的操作Web Console命令行操作 三、HBase中数据的保存过程 一、HBase在Zookeeper中的存储 元数据信息 HBase的元数据信息是HBase集群运行所必需的关键数据&#xff0c;它存储在Zookeeper的"/hbase&quo…