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

网络基础概念

1.网络协议

网络协议是一组标准和规则,用于定义电子设备如何在网络上通信。这些规则涵盖了数据如何格式化,传输,路由以及接收。网络协议确保了不同制造商的设备能够相互理解和交换数据

协议分层

协议也是软件,在设计上为了更好的进行模板化,解耦合,也被设计成层状结构

OSI七层模型

在网络角度,OSI七层模型其实非常完善,但是在实际操作过程中,会话层和表示层是不可能写入操作系统中的,所以在实践中,实际是四层协议

TCP/IP四层模型

  • 应用层:提供网络服务和应用接口
  • 传输层:提供端到端的数据传输服务
  • 网络层:负责在多个网络之间路由数据包
  • 链路层:也被称为网络接口层,负责在物理网络上传输

关于协议的朴素理解

所谓协议,就是通信双方都认识的结构化的数据

因为协议栈是分层的,所以,每层双方都会有协议,同层之间,互相认识对方的协议

2.局域网网络传输基本流程

局域网(以太网为例)通信原理

认识MAC地址

MAC地址用于在局域网标识网络设备的唯一性,

长度为48位,即6个字节,一般用16进制数字加上冒号的形式来表示

例如: 08:00:27:03:fb:19

MAC地址在网卡出场的时候就确定了,不能修改,具有唯一性,(虚拟机中的 mac 地址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址 )

  • 以太网中,任何时刻,只允许一台机器向网络中发送数据
  • 如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞
  • 所有发送数据的主机要进行碰撞检测和碰撞避免
  • 没有交换机的情况下,一个以太网就是一个碰撞域
  • 局域网通信过程中,主机对收到的报文确认是否是发给自己的,是通过目标mac地址判定

数据包封装和解包,分用

当我们进行数据传送时,每一层都有协议,所以每一层都要进行封装和解包

传输的数据分为报头和有效载荷,报头就是对应协议层的结构体字段,我们一般叫做报头

所以,报文=报头+有效载荷

在不同层,报文的叫法不一样

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部 (header),称为封装(Encapsulation).
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理

两台计算机通过TCP/IP协议通讯过程

3.跨网络传输流程图

网络中的地址管理--认识IP地址

IP协议有两个版本,IPv4和IPv6,一般提到 IP 协议,没有特殊说明的,默认都是指 IPv4

  • IP地址是在IP协议中,用来标识网络中不同主机的地址
  • 对于IPv4来说,IP地址是一个4字节,32位的整数
  • 我们通常用“点分十进制”的字符串表示IP地址,例如192.168.0.1,用点分割的每一个数字表示一个字节,范围是0-255

跨网段的主机的数据传输,数据从一台计算机到另一台计算机传输的过程中要经过一个或多个路由器

IP 地址和 MAC 地址的区别

特性

IP 地址

MAC 地址

作用

网络层逻辑地址,用于跨网络通信

数据链路层物理地址,用于局域网内通信

唯一性

不唯一,设备可以更改或重新分配

唯一且通常固定

更改可能性

可更改(静态或动态)

一般不可更改(除非使用欺骗技术)

使用层级

网络层(第三层)

数据链路层(第二层)

适用范围

广域网和局域网之间的通信

局域网内设备之间的通信

主要协议

IP 协议(IPv4、IPv6)

ARP 协议

简而言之,IP 地址是在不同网络之间定位设备的"逻辑地址",MAC 地址是设备的唯一 "物理地址",主要用于局域网内识别设备

IP 网络通信宏观流程

4.socket 编程预备

1.认识端口号

端口号(port)时传输层协议的内容

  • 端口号是一个 2 字节 16 位的整数
  • 端口号用来标识一个进程,告诉操作系统,当前的数据应该交给哪个进程
  • IP 地址+端口号能够标识网络上的某一台主机的某一个进程
  • 一个端口号只能被一个进程占用

端口号范围划分

  • 0-1023:知名端口号。HTTP,FTP,SSH 等这些广为使用的应用层协议,他们的端口号都是固定的
  • 1024-65535:操作系统动态分配的端口号,客户端程序的端口号,就是由操作系统从这个范围分配的

理解"端口号"和"进程 ID"

进程 ID 属于系统概念,技术上也具有唯一性,可以用来表示一个唯一的进程,但是这样做,会让系统进程管理和网络强耦合,不太好,所以不建议这样做

理解 socket

  • IP 地址用来表示互联网中唯一的一台主机,port 用来表示该主机上唯一的一个网络进程
  • IP+port 就能表示互联网中唯一的一个进程
  • 网络通信的本质,就是进程间通信
  • 我们把 IP+port 叫做套接字 socket

2.传输层的典型代表

传输层是属于内核的,我们要通过网络协议栈进行通信,必须要调用传输层提供的系统调用,来进行网络通信

TCP 协议和 UDP 协议的特点

  • TCP:传输层协议,有连接,可靠传输,面向字节流
  • UDP:传输层协议,无连接,不可靠传输,面向数据报

网络字节序

我们知道,内存中的多字节数据有大端储存和小端储存,网络数据流中同样有大端小端之分,那么如何定义网络数据流的地址呢?

TCP/IP 协议规定:网络数据流应采用大端字节序,即低地址高字节

将 0x1234abcd 写入内存中

大端存储 小端存储

0x0000 0x12 0xcd

0x0000 0x34 0xab

0x0000 0xab 0x34

0x0000 0xcd 0x12

为使网络程序具有可移植性,可以调用库函数做大端字节序和小端字节序的转换

#include<arpa/inet.h>
uint32_t htonl(uint32_t hostlong);//将32位的整数从主机字节序转换成网络字节序
uint16_t htons(uint16_t hostshort);//将16位的整数从主机字节序转换成网络字节序
uint32_t ntonl(uint32_t netlong);//将32位的整数从网络字节序转换成主机字节序
uint16_t ntons(uint16_t netshort);//将16位的整数从网络字节序转换成主机字节序

网络字节序就是大端储存

5.socket 接口编程

socket 常见 API

// 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器)
int socket(int domain, int type, int protocol);
// 绑定端口号 (TCP/UDP, 服务器)
int bind(int socket, const struct sockaddr *address,socklen_t address_len);
// 开始监听 socket (TCP, 服务器)
int listen(int socket, int backlog);
// 接收请求 (TCP, 服务器)
int accept(int socket, struct sockaddr* address,socklen_t* address_len);
// 建立连接 (TCP, 客户端)
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

sockaddr 结构

sockaddr 是一个通用的地址结构体,可以用来表示多种类型的地址,例如 IPv4 地址,IPv6 地址,Unix 域套接字地址

struct sockaddr {unsigned short sa_family;   // 地址族,例如 AF_INET、AF_INET6char sa_data[14];           // 地址数据的存储空间,具体内容依赖于地址族
};
  1. sa_family:
    • 类型:unsigned short
    • 这是一个地址族字段,用来表示该地址的类型。常见的地址族包括:
      • AF_INET:IPv4 地址族
      • AF_INET6:IPv6 地址族
      • AF_UNIXAF_LOCAL:Unix 域套接字地址族
      • AF_PACKET:用于低层网络通信(通常与链路层相关)
  1. sa_data:
    • 类型:char sa_data[14]
    • 这是一个字符数组,长度为 14 字节,表示存储地址的空间。它的具体内容依赖于 sa_family 的值。例如,对于 AF_INET(IPv4 地址),sa_data 会包含 IP 地址和端口号;对于 AF_INET6(IPv6 地址),它将存储 IPv6 地址和端口号。

sockaddr_in:sockaddr 表示 IPv4 地址

struct sockaddr_in {short sin_family;         // 地址族:AF_INETunsigned short sin_port;  // 端口号struct in_addr sin_addr;  // IPv4 地址char sin_zero[8];         // 保留字段,通常不使用
};

sockaddr_un:sockaddr 表示 Unix 域套接字

struct sockaddr_un {sa_family_t sun_family;    // 地址族:AF_UNIXchar sun_path[108];        // Unix 域套接字路径
};

相关文章:

网络基础概念

1.网络协议 网络协议是一组标准和规则&#xff0c;用于定义电子设备如何在网络上通信。这些规则涵盖了数据如何格式化&#xff0c;传输&#xff0c;路由以及接收。网络协议确保了不同制造商的设备能够相互理解和交换数据 协议分层 协议也是软件&#xff0c;在设计上为了更好…...

sunshine和moonlight串流网络丢失帧高的问题(局域网)

注&#xff1a;此贴结果仅供参考 场景环境&#xff1a;单身公寓 路由器&#xff1a;2016年的路由器 开始&#xff1a;电脑安装sunshine软件&#xff0c;手机安装moonlight软件开始串流发现网络丢失帧发现巨高 一开始怀疑就是路由器问题&#xff0c;因为是局域网&#xff0c;而…...

远程视频验证如何改变商业安全

如今&#xff0c;商业企业面临着无数的安全挑战。尽管企业的形态和规模各不相同——从餐厅、店面和办公楼到工业地产和购物中心——但诸如入室盗窃、盗窃、破坏和人身攻击等威胁让安全主管时刻保持警惕。 虽然传统的监控摄像头网络帮助组织扩大了其态势感知能力&#xff0c;但…...

CTO 实际上是做什么的?

https://vadimkravcenko.com/shorts/what-cto-does/ 有刪節 本文旨在为软件工程师解密CTO的角色&#xff0c;并为那些渴望担任这一职位的人提供路线图。 “他们是技术团队与公司其他部门之间的桥梁&#xff0c;确保技术支持并推动业务发展。” CTO的角色经常被误解。CTO有时是…...

【软考速通笔记】系统架构设计师④——系统工程基础知识

文章目录 一、前言二、系统工程方法2.1 霍尔的三维结构2.2 切克兰德法2.3 并行工程2.4 综合集成法 三、系统工程生命周期四、系统生命周期方法五、系统性能5.1 计算机的性能指标5.2 路由器的性能指标5.3 交换机的性能指标5.4 网络的性能资料5.5 操作系统的性能指标5.6 数据库的…...

2024赣ctf-web -wp

1.你到底多想要flag??? 首先来解决第一关&#xff1a; 先了解一下stripos&#xff08;&#xff09;&#xff1b; 并且此函数处理数组返回false。而且pre_match同样遇见数组是返回false&#xff08;解释一下正则 i&#xff1a;这是正则表达式的修饰符&#xff0c;代表“不区…...

Android Framework AudioFlinge 面试题及参考答案

目录 请解释什么是 AudioFlinger? AudioFlinger 在 Android 系统中的位置是什么? AudioFlinger 的主要职责有哪些? AudioFlinger 如何管理音频流? 在 AudioFlinger 中,什么是音频会话? 请简述 AudioFlinger 的工作流程。 AudioFlinger 是如何与硬件交互的? 在 A…...

英语知识在线平台:Spring Boot技术应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

Qt5.14.2的安装与环境变量及一些依赖库的配置

目录 1.Qt5.14.2安装 2.Qt环境变量及一些依赖库的配置 1.Qt5.14.2安装 QT从入门到入土&#xff08;一&#xff09;——Qt5.14.2安装教程和VS2019环境配置 - 唯有自己强大 - 博客园 2.Qt环境变量及一些依赖库的配置 假设QT安装目录为: D:\Qt\Qt5.14.2 将目录: D:\Qt\Qt5.14.…...

2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

一、单选题 1、下面代码运行后出现的图像是&#xff1f;&#xff08; &#xff09; import matplotlib.pyplot as plt import numpy as np x np.array([A, B, C, D]) y np.array([30, 25, 15, 35]) plt.bar(x, y) plt.show() A. B. C. D. 正确答案&#xff1a;A 答案…...

go编程中yaml的inline应用

下列代码&#xff0c;设计 Config 和 MyConfig 是为可扩展 Config&#xff0c;同时 Config 作为公共部分可保持变化。采用了匿名的内嵌结构体&#xff0c;但又不希望 yaml 结果多出一层。如果 MyConfig 中的 Config 没有使用“yaml:",inline"”修饰&#xff0c;则读取…...

Springboot自带注解@Scheduled实现定时任务

基于Scheduled注解实现简单定时任务 原理 Spring Boot 提供了Scheduled注解&#xff0c;通过在方法上添加此注解&#xff0c;可以方便地将方法配置为定时任务。在应用启动时&#xff0c;Spring 会自动扫描带有Scheduled注解的方法&#xff0c;并根据注解中的参数来确定任务的…...

VSCode【下载】【安装】【汉化】【配置C++环境(超快)】(Windows环境)

目录 一、VSCode 下载 & 安装 二、VSCode 汉化 三、VSCode C配置 配置环境变量 如何验证是否成功 接着在VSCode中配置​编辑 一、VSCode 下载 & 安装 VSCode 下载 & 安装-CSDN博客https://blog.csdn.net/applelin2012/article/details/144009210Download Visual St…...

【八股文】小米

文章目录 一、vector 和 list 的区别&#xff1f;二、include 双引号和尖括号的区别&#xff1f;三、set 的底层数据结构&#xff1f;四、set 和 multiset 的区别&#xff1f;五、map 和 unordered_map 的区别&#xff1f;六、虚函数和纯虚函数的区别&#xff1f;七、extern C …...

ABAP OOALV模板

自用模板&#xff0c;可能存在问题 一、主程序 *&---------------------------------------------------------------------* *& Report ZVIA_OO_ALV *&---------------------------------------------------------------------* REPORT ZVIA_OO_ALV.INCLUDE ZVI…...

qt QDateTime详解

1. 概述 QDateTime 是 Qt 框架中用于处理日期和时间的类。它将 QDate 和 QTime 组合在一起&#xff0c;提供了日期时间的统一处理方案。QDateTime 可以精确到毫秒&#xff0c;并支持时区处理。 2. 重要方法 构造函数: QDateTime() 构造无效的日期时间 QDateTime(const QDa…...

鸿蒙安全控件之位置控件简介

位置控件使用直观且易懂的通用标识&#xff0c;让用户明确地知道这是一个获取位置信息的按钮。这满足了授权场景需要匹配用户真实意图的需求。只有当用户主观愿意&#xff0c;并且明确了解使用场景后点击位置控件&#xff0c;应用才会获得临时的授权&#xff0c;获取位置信息并…...

决策树分类算法【sklearn/决策树分裂指标/鸢尾花分类实战】

决策树分类算法 1. 什么是决策树&#xff1f;2. DecisionTreeClassifier的使用&#xff08;sklearn&#xff09;2.1 算例介绍2.2 构建决策树并实现可视化 3. 决策树分裂指标3.1 信息熵&#xff08;ID3&#xff09;3.2 信息增益3.3 基尼指数&#xff08;CART&#xff09; 4. 代码…...

【Android】RecyclerView回收复用机制

概述 RecyclerView 是 Android 中用于高效显示大量数据的视图组件&#xff0c;它是 ListView 的升级版本&#xff0c;支持更灵活的布局和功能。 我们创建一个RecyclerView的Adapter&#xff1a; public class MyRecyclerView extends RecyclerView.Adapter<MyRecyclerVie…...

自制Windows系统(十)

上图 &#xff08;真的不是Windows破解版&#xff09; 开源地址&#xff1a;仿Windows...

Linux——初识操作系统(Operator System)

前言&#xff1a;大佬写博客给别人看&#xff0c;菜鸟写博客给自己看&#xff0c;我是菜鸟。 一、冯偌伊曼体系 图一&#xff1a; 在初识操作系统之前&#xff0c;我们需要对计算机的硬件组成做一定的了解。本篇优先对数据信号做初步分析&#xff0c;暂时不考虑控制信号(操作系…...

RuoYi(若依)框架的介绍与基本使用(超详细分析)

**RuoYi&#xff08;若依&#xff09;**是一个基于Spring Boot和Spring Cloud的企业级快速开发平台。它集成了多种常用的技术栈和中间件&#xff0c;旨在帮助企业快速构建稳定、高效的应用系统。以下是关于RuoYi框架的详细介绍和基本使用教程&#xff0c;涵盖了从环境搭建到核心…...

js:基础

js是什么 JavaScript是一种运行在客户端的编程语言&#xff0c;实现人机交互的效果 js只要有个浏览器就能跑 js可以做网页特效、表单验证、数据交互、服务端编程 服务端编程是前端人拿他们特有的后端语言node.js来干后端干的事情 js怎么组成 JavaScriptECMAScript(语言基…...

easyui combobox 只能选择第一个问题解决

easyui combobox 只能选择第一个问题解决 问题现象 在拆分开票的时候&#xff0c;弹出框上面有一个下拉框用于选择需要新增的明细行&#xff0c;但是每次只能选择到第一个 选择第二条数据的时候默认选择到第一个了 代码如下 /*新增发票编辑窗口*/function addTicketDialog…...

【RISC-V CPU 专栏 -- 香山处理器介绍】

文章目录 RISC-V 香山处理器介绍雁栖湖处理器南湖处理器RISC-V 香山处理器介绍 相信很多小伙伴对于“香山”都不陌生,它是一款开源RISC-V处理器核,香山的每一代架构,都是采用了湖的名字,第一代架构被命名为雁栖湖,第二代架构则叫做 “南湖”。 “雁栖湖”这款处理器的 R…...

深入理解下oracle 11g block组成

深层次说&#xff0c;oracle数据库的最少组成单位应该是块&#xff0c;一般默认情况下&#xff0c;oracle数据库的块大小是8kb&#xff0c;其中存储着我们平常所需的数据。我们在使用过程中&#xff0c;难免会疑问道&#xff1a;“oracle数据块中到底是怎样组成的&#xff0c;平…...

“华为杯”研究生数学建模比赛历年赛题汇总(2004-2024)

文章目录 赛题链接历年赛题2004年赛题2005年赛题2006年赛题2007年赛题2008年赛题2009年赛题2010年赛题2011年赛题2012年赛题2013年赛题2014年赛题2015年赛题2016年赛题2017年赛题2018年赛题2019年赛题2020年赛题2020年赛题2021年赛题2022年赛题2023年赛题2024年赛题 赛题链接 部…...

LLM PPT Translator

LLM PPT Translator 引言Github 地址UI PreviewTranslated Result Samples 引言 周末开发了1个PowerPoint文档翻译工具&#xff0c;上传PowerPoint文档&#xff0c;指定想翻译的目标语言&#xff0c;通过LLM的能力将文档翻译成目标语言的文档。 Github 地址 https://github.…...

【深度学习之一】2024最新pytorch+cuda+cudnn下载安装搭建开发环境

兵马未动&#xff0c;粮草先行。作为深度学习的初学者&#xff0c;快速搭建一个属于自己的开发环境就是头等大事&#xff0c;可以让我们节省许多的时间。这一期我们主要讲一讲2024年最新pytorchcudacudnn下载安装搭建开发环境&#xff0c;以及安装过程中可能遇到的一些问题以及…...

摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现

随着科技的不断进步&#xff0c;摄像机视频分析软件的发展已经为我们的生活带来了许多便捷。其中&#xff0c;LiteAIServer视频智能分析平台的玩手机打电话检测算法技术尤为突出&#xff0c;它利用先进的图像处理和人工智能技术&#xff0c;能够自动识别并监控视频中的玩手机或…...

HTML5和CSS3新增特性

HTML5的新特性 HTML5新增的语义化标签 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量…...

删除word中页眉里的横线

使用快捷键‌简单粗暴&#xff1a; 双击页眉&#xff0c;将光标定位在页眉的横线上&#xff0c;按下CtrlShiftN快捷键&#xff0c;页眉横线即可删除。...

列表代码思路

目录 列表添加修改删除(单删,批删) 页面>Controller>service>Dao 一.列表的jsp页面 : 一. 想要用户已经来就看到的数据使用文档就绪函数 ①文档就绪函数 : 二. 封装ajax方法 二 : 在body中间 一 : 多条件查询的文本框 二. 写列表 三.在body的下面写脚本 1.给搜…...

40分钟学 Go 语言高并发:Context包与并发控制

Context包与并发控制 学习目标 知识点掌握程度应用场景context原理深入理解实现机制并发控制和请求链路追踪超时控制掌握超时设置和处理API请求超时、任务限时控制取消信号传播理解取消机制和传播链优雅退出、资源释放context最佳实践掌握使用规范和技巧工程实践中的常见场景…...

el-row el-col显示失效问题修复

el-row el-col显示失效 问题&#xff1a; 在列表显示页面&#xff0c;头部有几个搜索框和选择框&#xff0c;由于搜索条件框太多&#xff0c;写了el-row 和el-col进行分行分列展示。测试发现并没有按照行列展示。 <el-form :inline"true" :model"paramForm…...

libphone desktop编译

linphone-desktop 在ubuntu20.04 下编译 linphone 介绍 Linphone是一款遵循GPL的开源网络视频电话系统&#xff0c;支持多种平台如Windows、Linux、Android等。它基于SIP协议&#xff0c;提供语音、视频通话及即时文本消息功能。核心功能包括SIP用户代理、音频视频Codec支持、…...

实现一个可配置的TCP设备模拟器,支持交互和解析配置

前言 诸位在做IOT开发的时候是否有遇到一个问题&#xff0c;那就是模拟一个设备来联调测试&#xff0c;虽然说现在的物联网通信主要是用mqtt通信&#xff0c;但还是有很多设备使用TCP这种协议交互&#xff0c;例如充电桩&#xff0c;还有一些工业设备&#xff0c;TCP这类报文交…...

Rust环境安装乱码解决

安装rust环境open with visual studio2022操作系统乱码问题解决 打开“设置”&#xff0c;找到“时间和语言”。 进去之后依次选择“语言”->"管理语言设置"->“更改系统区域设置” 取消勾选“Beta版:使用Unicode UTF-8 提供全球语言支持”&#xff0c;然后重…...

Zookeeper实现分布式锁、Zookeeper实现配置中心

一、Zookeeper实现分布式锁 分布式锁主要用于在分布式环境中保证数据的一致性。 包括跨进程、跨机器、跨网络导致共享资源不一致的问题。 1.Zookeeper分布式锁的代码实现 新建一个maven项目ZK-Demo,然后在pom.xml里面引入相关的依赖 <dependency><groupId>com.…...

学习日记_20241126_聚类方法(自组织映射Self-Organizing Maps, SOM)

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…...

【webrtc】 mediasoup中m77的IntervalBudget及其在AlrDetector的应用

IntervalBudget 用于带宽控制和流量整形 mediasoup中m77 代码的IntervalBudget ,版本比较老IntervalBudget 在特定时间间隔内的比特预算管理,从而实现带宽控制和流量整形。 一。 pacedsender 执行周期: 下一次执行的时间的动态可变的 int64_t PacedSender::TimeUntilNextPr…...

Python学习指南 + 谷歌浏览器如何安装插件

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 前言 Python 官方文档的使用 谷歌浏览器中如何安装插件 前言 在学习Python时&#xff0c;我们可能会出现这样的困惑&#x…...

leetcode - LRU缓存

什么是 LRU LRU (最近最少使用算法), 最早是在操作系统中接触到的, 它是一种内存数据淘汰策略, 常用于缓存系统的淘汰策略. LRU算法基于局部性原理, 即最近被访问的数据在未来被访问的概率更高, 因此应该保留最近被访问的数据. 最近最少使用的解释 LRU (最近最少使用算法), 中…...

RabbitMQ7:消息转换器

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…...

C#(14)七大原则

前言 其实在面向对象设计里&#xff0c;程序猿们互相约定好一些原则&#xff0c;即七大原则。 面向对象的七大原则是一组指导软件设计的原则&#xff0c;旨在帮助开发人员实现松耦合、可维护和可扩展的软件系统。这些原则的设计过程和发展历史可以追溯到20世纪80年代。 单一职…...

JDBC使用连接池druid操作数据库mysql

// 创建DruidDataSource实例DruidDataSource dataSource = new DruidDataSource();String url = "jdbc:mysql://localhost:3306/demo_base?useUnicode=true&characterEncoding=utf8&useSSL=true";String username...

零碎04 MybatisPlus自定义模版生成代码

目录 背景 动手开干 需要的依赖包&#xff0c;需要注意mybatis-plus-generator的3.5版本是没有兼容历史版本的。 定义一个CodeGenerator类&#xff0c;负责生成代码和配置属性 Entity模版 背景 MybatisPlus代码生成使用默认的velocity模版解决不了定制化的需求&#xff0…...

rk3568-linux-5.10.160移植rtl8822cs wifi 模块纪要

rk3568-linux-5.10.160移植rtl8822cs wifi 模块纪要 1、将驱动添加到 kernel/drivers/net/wireless/rockchip_wlan/ 或者 kernel/drivers/net/wireless/realtek/rtlwifi/ 2、修改该目录下的makefile、kconfig 3、修改rtl8822cs/os_dep/linux/os_intfs.c&#xff0c;添加 MO…...

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…...

如何通过高效的缓存策略无缝加速湖仓查询

引言 本文将探讨如何利用开源项目 StarRocks 的缓存策略来加速湖仓查询&#xff0c;为企业提供更快速、更灵活的数据分析能力。作为 StarRocks 社区的主要贡献者和商业化公司&#xff0c;镜舟科技深度参与 StarRocks 项目开发&#xff0c;也为企业着手构建湖仓架构提供更多参考…...