当前位置: 首页 > news >正文

十六、Linus网络编程基础

1、Linux 网络的历史发展

​早期阶段(1991–1995)​
  • ​1991年:Linus Torvalds 发布 Linux 内核的初始版本(0.01),此时内核不支持网络功能,仅是一个单机操作系统。
  • ​1992年:受 BSD 套接字(BSD Sockets)启发,Linux 开始集成网络子系统,目标是兼容 TCP/IP 协议栈。首个网络实现由开发者 Ross Biro 贡献,但功能有限。
  • ​1993年:Alan Cox 接手网络子系统开发,重构代码并逐步增加对 TCP/IP、UDP、ICMP 等协议的支持。Linux 1.0 版本(1994年)首次包含完整的网络协议栈。成熟期(1996–2000)​
  • ​网络驱动扩展:支持更多网卡驱动(如 NE2000、3Com),并开始支持 PPP(拨号上网)和 SLIP 协议。
  • ​防火墙与 NAT:1999年,Netfilter 框架(包含 iptables)被引入内核 2.4,提供强大的包过滤、NAT 和连接跟踪功能。
  • ​IPv6 支持:内核 2.2 开始实验性支持 IPv6,2.6 版本(2003年)后逐渐完善。
高性能与虚拟化(2001–2010)​
  • ​网络虚拟化:支持 VLAN、桥接、虚拟网络设备(如 TUN/TAP),为云计算奠定基础。
  • ​协议优化:改进 TCP 拥塞控制算法(如 CUBIC)、多卡支持(RSS)、零拷贝技术(Zero-Copy)提升吞吐量。
  • ​无线网络:完善 Wi-Fi 协议栈(802.11a/b/g/n),集成 MAC80211 子系统。
现代网络技术(2011–至今)​
  • ​软件定义网络(SDN)​:支持 Open vSwitch(OVS)、VXLAN 等虚拟网络技术。
  • ​eBPF 革命:eBPF(扩展的伯克利包过滤器)允许用户态程序在内核安全执行,用于网络监控(如 XDP)、负载均衡等。
  • ​容器网络:随着 Docker 和 Kubernetes 的兴起,Linux 新增 CNI(容器网络接口)、Network Namespace 隔离等技术。

2、Linux 网络协议栈的分层结构

Linux 网络协议栈遵循 ​TCP/IP 四层模型,但在内核中实现时分为多个逻辑层次。以下是分层结构与关键组件:

​用户空间接口层
  • ​套接字(Sockets)​:为应用程序提供标准接口(如 socket()bind()send()),支持 TCP、UDP、RAW 等多种类型。
  • ​系统调用:如 sendto()recvmsg(),负责用户态与内核态的数据交换。
协议无关层(Socket Layer)​
  • ​Socket Buffer(sk_buff)​:管理网络数据包在内核中的生命周期,包含元数据(如 MAC/IP 地址、协议类型)。
  • ​协议分发:根据数据包类型(IPv4/IPv6)调用对应的协议处理函数。
网络协议层
  • ​传输层:实现 TCP、UDP、ICMP 等协议。
    • ​TCP:包含拥塞控制(CUBIC、BBR)、状态机(SYN-SENT、ESTABLISHED)、滑动窗口等。
    • ​UDP:无连接、尽最大努力交付,适用于实时音视频。
  • ​网络层:处理 IP 协议(IPv4/IPv6)、路由(Routing Table)、分片与重组。
    • ​路由子系统:通过 FIB(Forwarding Information Base)决定数据包下一跳。
    • ​邻居子系统:管理 ARP(IPv4)和 ND(IPv6),解析 MAC 地址。
设备无关层(Network Device Interface)​
  • ​网络设备抽象:统一管理物理网卡(eth0)和虚拟设备(veth、tun)。
  • ​流量控制(QoS)​:通过 tc(Traffic Control)实现带宽限制、优先级队列(如 HTB、SFQ)。
物理设备驱动层
  • ​网卡驱动:与硬件交互,处理 DMA、中断、数据包收发(如 netdev_ops 结构体)。
  • ​NAPI(New API)​:在高负载时减少中断次数,提升吞吐量。

3、数据包处理流程示例

​接收数据包:网卡通过 DMA 将数据写入内存 → 触发中断 → NAPI 轮询 → 网络驱动解析帧头 → 上传至协议栈。

​协议处理:拆解以太网帧 → IP 层路由 → TCP/UDP 处理 → 传递给 Socket Buffer。

用户态交付:通过系统调用将数据从内核 Socket Buffer 复制到用户空间缓冲区。

4、TCP/IP 协议的设计原则

为解决上述问题,Vint Cerf 和 Bob Kahn 在 1974 年提出 TCP/IP 协议的核心思想,其设计哲学包括:

  1. ​网络互联优先(Internetworking)​:

    • 通过 ​IP 协议统一不同网络的寻址和路由,屏蔽底层差异,实现“网络间的网络”(Internet)。
    • 采用分层架构:将网络功能划分为链路层、网络层(IP)、传输层(TCP/UDP)、应用层,各层独立演进。
    • ​端到端原则(End-to-End Principle)​:
      • 将复杂功能(如可靠性、流量控制)放在终端设备​(主机)而非网络中,简化核心网络设备(如路由器)的设计。
      • 例:TCP 在终端实现可靠传输,IP 仅负责“尽力而为”的转发。
  2. ​开放性标准:

    • 协议规范和实现公开(RFC 文档),鼓励厂商和开发者参与,推动生态扩展。


5、TCP/IP 如何实现网络互联

1. ​IP 协议:统一寻址与路由
  • ​IP 地址:为每个网络接口分配全局唯一地址(如 192.0.2.1),实现跨网络寻址。
  • ​数据包分片与重组:IP 层处理不同链路 MTU(最大传输单元)的差异,确保大数据包可通过小 MTU 网络。
  • ​路由协议​(如 RIP、OSPF、BGP):动态学习路径,选择最优跨网络传输路径。
2. ​TCP 与 UDP:传输层抽象
  • ​TCP:提供可靠、有序的字节流传输,通过滑动窗口、拥塞控制(如 Tahoe、Reno 算法)适应不同网络条件。
  • ​UDP:提供无连接的简单传输,适用于实时应用(如 VoIP、视频流)。
3. ​协议栈的灵活性
  • ​支持多种底层网络:IP 可运行在以太网、Wi-Fi、PPP、卫星链路等任意链路层协议上。
  • ​可扩展性:通过新协议(如 IPv6、QUIC)适应未来需求,同时保持向后兼容     

6、经典网络体系结构模型

1. ​OSI 七层模型(理论参考模型)​

由国际标准化组织(ISO)提出,目标是统一全球网络协议标准。尽管实际中未完全采用,但其分层思想影响深远:

​层级​功能​典型协议/设备
​7. 应用层提供用户接口,支持具体应用(如文件传输、电子邮件)HTTP、FTP、SMTP、DNS
​6. 表示层数据格式转换(加密、压缩)、编码统一(如 ASCII 到 Unicode)SSL/TLS、JPEG、MPEG
​5. 会话层管理会话(连接建立、维护、终止),协调设备间通信NetBIOS、RPC
​4. 传输层端到端数据传输,提供可靠性(TCP)或实时性(UDP)TCP、UDP
​3. 网络层路由寻址,跨网络传递数据包IP、ICMP、路由器
​2. 数据链路层相邻节点间帧传输,错误检测(CRC)Ethernet、Wi-Fi(MAC)、交换机
​1. 物理层定义物理介质(电缆、光纤)和信号(电信号、光脉冲)网卡、中继器、集线器

核心思想:

  • ​分层解耦:每层仅依赖下一层服务,独立实现功能(如修改加密算法不影响传输层)。
  • ​协议数据单元(PDU)​:每层添加/剥离头部(Header)或尾部(Trailer),如传输层数据段 → 网络层数据包 → 链路层帧。

7、TCP/IP 四层模型(实际应用标准)​

由互联网工程实践发展而来,​简化 OSI 模型,成为互联网的实际架构:

​层级​功能​典型协议
​应用层整合 OSI 的应用层、表示层、会话层功能HTTP、DNS、MQTT、QUIC
​传输层端到端通信,保证可靠性或实时性TCP、UDP
​网络层跨网络寻址与路由IPv4、IPv6、ICMP、BGP
​网络接口层合并 OSI 的数据链路层和物理层Ethernet、Wi-Fi、PPP、ARP

与 OSI 的对比:

  • ​更注重实用性:例如,TCP/IP 省略了表示层和会话层,由应用层直接处理(如 TLS 加密在应用层实现)。
  • ​灵活性:允许底层协议多样化(如以太网、蜂窝网络均承载 IP 数据包)。

8、网络各层的协议解释

  1.网络接口和物理层mac地址:48位全球唯一,网络设备的身份标识

          ARP:地址解析协议,IP地址找到mac地址

          RARP:mac地址--找到IP地址

          PPP协议:拨号协议(GPRS/3G/4G

  2.网络层

          IP地址

          IP协议:Internet protocol(分为IPv4IPv6)

          ICMP:Internet控制管理协议,Ping 命令属于ICMP

          IGMP:Internet分组管理协议,广播和组播

  3.传输层

               TCP:Transfer Control protocol,传输控制协议)提供面向连接的,一对一的可靠传输的协议

                      数据无误,数据不丢失,数据无失序

                      适用场景

                                 适合对传输质量要求较高,以及传输大量数据的通信

                                 在需要可靠数据传输的场合,通常适用TCP协议

                                 MSN/QQ等即时通讯软件的用户登录账号管理相关的功能通常采用TCP协议

              UDP:(user Datagram Protocol,用户数据报协议):提供不可靠,无连接的传输协议

                     适用场景

                                发送小尺寸数据(如对DNS服务器进行IP地址查询时)

                                在接收数据,给出应答较困难的网络中适用UDP(如无线网络)

                                适合于广播/组播式通信中

                                MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通常采用UDP协议

                                流媒体,VOD,VoIP,IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输

                  SCTP:Stream Control Transmission Protocol:流控制传输协议),TCP的增强版,他能实现多主机,

多链路的通信。

  4.应用层

         网页访问协议:HTTP/HTTPS

         邮件发送接收协议:POP3()/SMTP()IMAP(可接受邮件的一部分)

         FTP:文件传输协议

         Telnet/ssh:远程登录

         嵌入式相关

                NTP:网络时钟协议

                SNMP:简单网络管理协议(实现对网络涉及集中式管理)

                RTP/RSTP:用于传输音视频的协议(安防监控)

9、网络预备知识

  1.socket

                是一个编程接口,是一个特殊的文件描述符(对他执行IO的操作函数,比如read,write,close等),并不

                仅限于TCP/IP协议,面向连接TCP,无连接UDP

                socket代表网络编程的一种资源

              分类

                     1.流式套接字(SOCK_STREAM)。唯一对应TCP提供了一个面向连接,可靠的数据传输服务,数据无差错,无重复的发送顺序接收。内射击流量控制,避免数据流淹没慢的接收方。数据被看作式字节流,无长度限制。

                     2.数据包套接字(SOCK_DGRAM)。唯一对应UDP提供无连接服务器,数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。

                     3.原始套接字(SOCK_RAW)。对应多个协议,发送穿透了传输层可以对较低层次协议如IPICMP直接访问。

  2.IP地址

           IP地址是Internet中主机的标识,Internet中的主机要与别的机器通信必须具有一个IP地址,IP地址为32为(Ipv4)或者128位(Ipv6),每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由

             表示的形式:常用点分形式,如202.38.64.10,最后都会转化成一个32位的无符号整数

              mobileIPV6:local IP(本地注册的IP),roma IP(漫游IP)

         特殊IP地址

             局域网IP192.XXX.XXX.XXX 10.XXX.XXX.XXX

             广播IPxxx.xxx.xxx.255 255.255.255.255(全网广播) 网络风暴

             组播IP224.xxx.xxx.xxx ~239.xxx.xxx.xxx

  3.端口号

             16位数字,1-65535

             为了区分一台主机接收到的数据包应该转交给哪个任务进程处理,使用端口号来区别

             预留端口,1-1023FTP:24, SSH:22, HTTP: 80 ,HTTPS :469

            保留端口:1024-5000(不建议使用)

            可以使用的端口: 5000~65535

            TCP端口号于UDP端口号独立

            网络里的通信是由 IP地址+端口号 来决定的

  4.字节序

           字节序是指不同的CPU访问内存中的多字节数据时候,存在大小端的问题

            如果CPU访问的是字符串,则不存在大小端问题

           一般来说X86/ARM : 小端模式

          power/miop:arm作为路由时,大端模式

          网络传输的时候采用大端模式

字节转换函数把给定系统所采用的字节序称为主机字节序,为了避免不同类别主机之间在数据交换时由于对于字节序的不同而导致的差错,引入了网络字节序。主机字节序到网络字节序u_long htonl(u_long hostlong);u_short htons(u_short short);网络字节序到主机字节序u_long ntohl(u_long hostlong);u_short ntohs(u_short short);
IP地址的转换inet_aton()将strptr所指的字符串转换成32位的网络字节序二进制值inet_addr()功能同上,返回转换后的地址仅适用于IPV4,出错时返回-1。局限性:不能用于255.255.255.255的转换inet_ntoa()将32位网络字节序二进制地址转换成点分十进制的字符串inet_pton()int inet_pton(int af, const char* src ,void* dst)将IPV4/IPV6 的地址转换成binary格式使用于IPV4/IPV6能正确处理255.255.255.255的转换问题参数:1.地址协议族(AF_INET或AF_INET6)2.src:是一个指针(填写分点形式的IP地址(主要指IPV4))dst:转换的结果给到dstinet_ntop(int af,const void *src,char *dst,socklen_t size)把ipv4和ipv6的网络字节序变成本地的字符串形式的IP地址参数1.af:地址协议族(AF_INET或AF_INET6)2.src:是一个指针(32)3.dst:输出结果为32位点分形式的IP地址4.size:长度

    相关文章:

    十六、Linus网络编程基础

    1、Linux 网络的历史发展 ​早期阶段(1991–1995)​ ​1991年:Linus Torvalds 发布 Linux 内核的初始版本(0.01),此时内核不支持网络功能,仅是一个单机操作系统。​1992年:受 BSD …...

    【激活函数:神经网络的“调味料】

    1. 激活函数:神经网络的“调味料” 想象你在做菜: 没有激活函数:就像只用水煮食材,味道单调(只能拟合线性关系)。加入激活函数:像加了盐、糖、辣椒,让菜有酸甜苦辣(非线…...

    006.Gitlab CICD流水线触发

    文章目录 触发方式介绍触发方式类型 触发方式实践分支名触发MR触发tag触发手动人为触发定时任务触发指定文件变更触发结合分支及文件变更触发正则语法触发 触发方式介绍 触发方式类型 Gitlab CICD流水线的触发方式非常灵活,常见的有如下几类触发方式: …...

    服务器远程端口详解

    服务器远程端口详解 一、服务器远程端口的概念与作用 1. 端口的基本定义 服务器远程端口是计算机网络中用于标识不同应用程序或服务的逻辑接口。通过TCP/IP协议栈的"Socket"机制,计算机可以通过软件方式与其他设备建立通信通道。每个端口对应一个16位无…...

    如何在 Vue 3 中实现百度地图位置选择器组件

    如何在 Vue 3 中实现百度地图位置选择器组件 前言 在开发前端应用时,地图选择器是一个非常常见的需求。尤其是在一些需要用户选择地址的场景,如电商平台、旅游网站、酒店预定等,百度地图组件能提供准确的地理位置服务。在本文中&#xff0c…...

    es6学习02-let命令和const命令

    一、let命令 1.let块级作用域: let关键字 VS var关键字 2.for循环计数器很适合let命令 var:整个for循环中一直都是同一个i在做1,最后输出的就是10; let:每循环一次都是多一个i的赋值,最后输出是可以调出…...

    电路方案分析(二十)TPS63xxx系列DC/DC电源EMI PCB设计方案

    tips:资料来自网络,仅供学习使用。[TOC](TPS63xxx系列DC/DC电源EMI PCB设计方案) 1.概述 通过TPS63xxx系列DC/DC电源模块来分析降低直流/直流降压/升压转换器辐射 EMI 的来源以及相关PCB设计。 下面都以最常用的TPS63070为例说明: 典型应用…...

    DeepSeek大语言模型部署指南:从基础认知到本地实现

    目录 一、DeepSeek简介:开源领域的新兴力量 1.1 公司背景与发展历程 1.2 核心产品DeepSeek-R1的技术特点 1.3 行业影响与伦理挑战 二、官方资源获取:全面掌握DeepSeek生态 2.1 官方网站与API服务 2.2 开源代码库资源 2.3 模型部署工具Ollama简介…...

    09-设计模式 企业场景 面试题-mk

    你之前项目中用过设计模式吗? 需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类图设计如下: 上面的对象都是ne…...

    达梦数据库-学习-18-ODBC数据源配置(Linux)

    一、环境信息 名称值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系统CentOS Linux release 7.9.2009 (Core)内存4G逻辑核数2DM版本1 DM Database Server 64 V8 2 DB Version: 0x7000c 3 03134284194-20240703-234060-20108 4 Msg Versi…...

    解决VS2022中scanf报错C4996

    这个的原因是因为新版的VS认为scanf不安全,要去使用scanf_s,但在C语言中就需要scanf,所以我们只要以以下步骤解决就可以了。 只要加入宏定义即可 #define _CRT_SECURE_NO_WARNINGS 因为本人已经很少写小案例了,所以就用这个办法…...

    Python(11)Python判断语句全面解析:从基础到高级模式匹配

    目录 一、条件逻辑的工程价值1.1 真实项目中的逻辑判断1.2 判断语句类型矩阵 二、基础判断深度解析2.1 多条件联合判断2.2 类型安全判断 三、模式匹配进阶应用3.1 结构化数据匹配3.2 对象模式匹配 四、判断语句优化策略4.1 逻辑表达式优化4.2 性能对比测试 五、典型应用场景实战…...

    Quartus II的IP核调用及仿真测试

    目录 第一章 什么是IP核?第二章 什么是LPM?第一节 设置LPM_COUNTER模块参数第二节 仿真 第三章 什么是PLL?第一节 设置ALTPLL(嵌入式锁相环)模块参数第二节 仿真 第四章 什么是RAM?第一节 RAM_1PORT的调用第…...

    如何修改服务器TTL值

    Windows默认返回的TTL值为128,Linux为64,我们怎么修改这个值呢? 目录 一. Windows 二. Linux 临时更改 永久更改 一. Windows WinR输入regedit,打开注册表 路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro…...

    大模型LLM表格报表分析:markitdown文件转markdown,大模型markdown统计分析

    整体流程:用markitdown工具文件转markdown,然后大模型markdown统计分析 markitdown https://github.com/microsoft/markitdown 在线体验:https://huggingface.co/spaces/AlirezaF138/Markitdown 安装: pip install markitdown…...

    劫持SUID程序提权彻底理解Dirty_Pipe:从源码解析到内核调试

    DirtyPipe(CVE-2022-0847)漏洞内核调试全流程指南 本文主要面向对内核漏洞挖掘与调试没有经验的初学者,结合 CVE-2022-0847——著名的 Dirty Pipe 漏洞,带你从零开始学习 Linux 内核调试、漏洞复现、原理分析与漏洞利用。该漏洞危害极大,并且概念简单明了,无需复杂前置知…...

    React 组件样式

    在这里插入图片描述 分为行内和css文件控制 行内 通过CSS中类名文件控制...

    嵌入式人工智能应用-第三章 opencv操作3 图像平滑操作 下

    5 高斯噪声(Gaussian Noise) 高斯噪声(Gaussian Noise)是一种符合正态(高斯)分布的随机噪声,广泛存在于传感器采集、信号传输等场景中。以下是关于高斯噪声的详细说明、添加方法及滤波方案。 …...

    OSPF的接口网络类型【复习篇】

    OSPF在不同网络环境下默认的不同工作方式 [a3]display ospf interface g 0/0/0 # 查看ospf接口的网络类型网络类型OSPF接口的网络类型(工作方式)计时器BMA(以太网)broadcast ,需要DR/BDR的选举hello:10s…...

    maven编译jar踩坑[sqlite.db]

    背景: 最近在项目中搞多数据源切换的job,在src/resource下有初始化的sqlite默认文件供后续拷贝使用,在测试阶段没有什么问题,但是一部署到服务器上运行就有问题。 报错现象: 找不到这个sqlite.db文件或者文件格式有问题&#x…...

    【软考系统架构设计师】软件工程

    1、 软件开发生命周期 软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体分为问题定义、可行性研究、需求分析等 软件开发时期:软件的设计与实现,分为概要设计、详细设计、…...

    蓝桥杯单片机刷题——ADC测量电位器的电压

    设计要求 通过PCF8591的ADC通道测量电位器RB2的输出电压,并使用套件上提供的USB转串口功能,完成下列程序设计要求。 串口每次接收包含5个字符的字符串, 1)若接收的5个字符中有字符’a’或’A’,则数码管显示一位小数…...

    零基础上手Python数据分析 (12):DataFrame 数据清洗与预处理 (下) - 类型转换、格式化、文本与日期处理

    写在前面 上一篇博客,我们学习了如何使用 Pandas 处理数据分析中最常见的 “脏数据”:缺失值、重复值和异常值。 这为我们处理数据质量问题打下了坚实的基础。 然而,数据清洗的挑战远不止于此。 在实际数据中,我们还会经常遇到 数据类型不一致、数据格式不规范、文本数据混…...

    免费下载 | 2025清华五道口:“十五五”金融规划研究白皮书

    《2025清华五道口:“十五五”金融规划研究白皮书》的核心内容主要包括以下几个方面: 一、五年金融规划的重要功能与作用 凝聚共识:五年金融规划是国家金融发展的前瞻性谋划和战略性安排,通过广泛听取社会各界意见,凝…...

    制造一只电子喵 (qwen2.5:0.5b 微调 LoRA 使用 llama-factory)

    AI (神经网络模型) 可以认为是计算机的一种新的 “编程” 方式. 为了充分利用计算机, 只学习传统的编程 (编程语言/代码) 是不够的, 我们还要掌握 AI. 本文以 qwen2.5 和 llama-factory 举栗, 介绍语言模型 (LLM) 的微调 (LoRA SFT). 为了方便上手, 此处选择使用小模型 (qwen2…...

    Java中parallelStream并行流使用指南

    Java中parallelStream并行流使用指南 在 Java 中,parallelStream() 是 Java 8 引入的一个用于并行处理集合数据的工具,它基于 Fork/Join框架 实现,能够自动将任务拆分成子任务并利用多核处理器并行执行。以下是对 parallelStream的详细说明和…...

    Python及C++中的列表

    一、Python中的列表(List) Python的列表是动态数组,内置于语言中,功能强大且易用,非常适合算法竞赛。 1. 基本概念 定义:列表是一个有序、可变的序列,可以存储任意类型的元素(整数…...

    mybatis plus 分页查询出来数据后对他二次 修改数据 封装返回

    mybatis plus 分页查询出来数据后对他二次 修改数据 封装返回 /*** 搜索问卷** param keyword* param pageNo* param pageSize* return*/AutoLog(value "v_survey-搜索")ApiOperation(value"v_survey-搜索", notes"v_survey-搜索")GetMapping(v…...

    海洋大地测量基准与水下导航系列之八我国海洋水下定位装备发展现状

    中国国家综合PNT体系建设重点可概括为“51N”,“5”指5大基础设施,包括重点推进下一代北斗卫星导航系统、积极发展低轨导航增强系统、按需发展水下导航系统、大力发展惯性导航系统、积极探索脉冲星导航系统;“1”是实现1个融合发展&#xff0…...

    基于单片机的电梯智能识别电动车阻车系统设计与实现

    标题:基于单片机的电梯智能识别电动车阻车系统设计与实现 内容:1.摘要 随着电动车在日常生活中的普及,将电动车带入电梯带来的安全隐患日益凸显,如引发火灾等。本研究的目的是设计并实现一种基于单片机的电梯智能识别电动车阻车系统。方法上&#xff0c…...

    什么是柜台债

    柜台债(柜台债券业务)是指通过银行等金融机构的营业网点或电子渠道,为投资者提供债券买卖、托管、结算等服务的业务模式。它允许个人、企业及机构投资者直接参与银行间债券市场的交易,打破了以往仅限机构参与的壁垒。以下是综合多…...

    .py文件和.ipynb文件的区别:完整教程

    一、概述 Python开发者常用的两种文件格式.py和.ipynb各有特点,本教程将通过对比分析、代码示例和场景说明,帮助开发者全面理解二者的区别与联系。 二、核心区别对比 1. 文件格式本质 特性.ipynb文件.py文件文件类型JSON结构化文档纯文本文件存储内容…...

    Python中NumPy的逻辑和比较

    在数据科学和科学计算领域,NumPy是一个不可或缺的Python库。它提供了高效的多维数组对象以及丰富的数组操作函数,其中逻辑和比较操作是NumPy的核心功能之一。通过灵活运用这些操作,我们可以轻松实现数据筛选、条件判断和复杂的数据处理任务。…...

    tt_Docker

    快速上手 查看 Docker 服务运行状态;查看本地镜像;从 Docker Hub 拉取基础镜像, 我们此处选择 ubuntu:18.04 镜像;再次查看本地镜像;使用 ubuntu:18.04 镜像构建容器,并交互式运行容器;在容器内部执行 LS 命令;退出容器;查看本地容器实例;再次启动停止的…...

    虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解?

    虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解? code review! 文章目录 虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解?理解这句话的关键点1.类&#xff08…...

    compose map 源码解析

    目录 TileCanvas ZoomPanRotateState ZoomPanRotate 布局,手势处理完了,就开始要计算tile了 MapState TileCanvasState telephoto的源码已经分析过了.它的封装好,扩展好,适用于各种view. 最近又看到一个用compose写的map,用不同的方式,有点意思.分析一下它的实现流程与原…...

    IDEA202403 常用设置【持续更新】

    文章目录 1、设置maven2、设置JDK3、菜单栏固定展示4、连接Gitee第一步、安装插件第二步、Gitee账号配置 IDEA 是程序员的编程利器,需要具备其的各种配置,提高工作效率。Java项目启动,两个关键设置:Maven 和 JDK设置。 1、设置mav…...

    从零开始开发纯血鸿蒙应用之语音输入

    从零开始开发纯血鸿蒙应用 〇、前言一、认识 speechRecognizer1、使用方式2、依赖权限3、结果回写 二、实现语音识别功能1、创建语音识别引擎2、设置事件监听3、启动识别4、写入音频数据5、操作控制 三、总结 〇、前言 除了从图片中识别文本外,语音输入也是一种现代…...

    c++ STL常用工具的整理和思考

    蓝桥杯后,我整理了这些常用的C STL工具 作为一个算法竞赛的中等生,以前总觉得STL“花里胡哨”,不如自己写数组和循环踏实。但这次蓝桥杯发现,合理用STL能省很多时间,甚至避免低级错误。下面是我总结的常用知识点和踩过…...

    Go:复合数据结构

    数组 定义:数组是固定长度、元素数据类型相同的序列 。元素通过索引访问,索引从 0 到数组长度减 1 。可用len函数获取元素个数 。 初始化:默认元素初始值为类型零值(数字为 0 ) 。可使用数组字面量初始化,…...

    SQL 语句基础(增删改查)

    文章目录 一、SQL 基础概念1. SQL 简介2. 数据库系统的层次结构 二、SQL 语句分类1. DDL(Data Definition Language 数据定义语言)1.1 CREATE1.1.1 创建数据库1.1.2 创建数据表1.1.3 创建用户 1.2 ALTER1.2.1 AlTER 添加字段名1.2.2 ALTER 修改字段名1.2…...

    【蓝桥杯 CA 好串的数目】题解

    题目链接 考虑令 p r e [ i ] pre[i] pre[i] 表示 [ p r e [ i ] , i ] [pre[i], i] [pre[i],i] 是连续非递减子串&#xff0c;这可以类似双指针 O ( n ) O(n) O(n) 预处理&#xff1a; std::vector<int> pre(n); for (int r 1, l 0; r < n; r) {if (s[r] ! s[…...

    Oracle for Linux安装和配置(11)——Linux命令

    11.1. Linux命令 Linux是目前比较常用和流行的操作系统,现在很多生产环境就会用到它。随着其功能、性能、稳定性和可靠性等方面的日渐增强和完善,加之其成本上的优势,其市场占有率逐日攀升,也得到越来越多广大用户的关注和青睐。但作为一种操作系统,其安装、配置、管理和…...

    Linux基础7

    一、逻辑卷管理 查看所有物理卷&#xff1a;pvs 查看当前系统卷组&#xff1a;vgs 查看所有逻辑卷&#xff1a;lvs 新创建系统卷组&#xff1a;vgcreate [参数] ​ [volume name] url/sdb[1-2] ​ eg&#xff1a;vgcreate vg_Test /dev/sdb{1,2} >…...

    C#打开文件及目录脚本

    如果每天开始工作前都要做一些准备工作&#xff0c;比如打开文件或文件夹&#xff0c;我们可以使用代码一键完成。 using System.Diagnostics; using System.IO;namespace OpenFile {internal class Program{static void Main(string[] args){Console.WriteLine("Hello, …...

    Docker 镜像 的常用命令介绍

    拉取镜像 $ docker pull imageName[:tag][:tag] tag 不写时&#xff0c;拉取的 是 latest 的镜像查看镜像 查看所有本地镜像 docker images or docker images -a查看完整的镜像的数字签名 docker images --digests查看完整的镜像ID docker images --no-trunc只查看所有的…...

    Python数组学习之旅:数据结构的奇妙冒险

    Python数组学习之旅:数据结构的奇妙冒险 第一天:初识数组的惊喜 阳光透过窗帘缝隙洒进李明的房间,照亮了他桌上摊开的笔记本和笔记本电脑。作为一名刚刚转行的金融分析师,李明已经坚持学习Python编程一个月了。他的眼睛因为昨晚熬夜编程而微微发红,但脸上却挂着期待的微…...

    Vue 3 和 Vue 2 的区别及优点

    Vue.js 是一个流行的 JavaScript 框架&#xff0c;广泛用于构建用户界面和单页应用。自 Vue 3 发布以来&#xff0c;很多开发者开始探索 Vue 3 相较于 Vue 2 的新特性和优势。Vue 3 引入了许多改进&#xff0c;优化了性能、增强了功能、提升了开发体验。本文将详细介绍 Vue 2 和…...

    特殊定制版,太给力了!

    今天给大家分享一款超棒的免费录屏软件&#xff0c;真的是录屏的好帮手&#xff01; 这款软件功能可以录制 MP4、AVI、WMV 格式的标清、高清、原画视频&#xff0c;满足你各种需求。 云豹录屏大师 多功能录屏神器 它的界面特别简洁&#xff0c;上手超快&#xff0c;用起来很顺…...

    Vue事件修饰符课堂练习

    Vue事件修饰符课堂练习 题目‌&#xff1a;基于 Vue 2.0&#xff0c;使用事件修饰符 .stop、.prevent、.capture、.self 和 .once&#xff0c;为按钮绑定 click 事件&#xff0c;并展示每个修饰符的作用。 要求‌&#xff1a; 创建一个 Vue 实例&#xff0c;并绑定到一个 HT…...