[计算机网络]数据链路层
0 概论:数据链路层都干什么事,提供啥功能
比物理层再高一层就是数据链路层,咱们上一篇讲物理层,物理层直接接触传输介质,现在数据链路层是使用物理层的传输服务,然后实现更多的功能。物理层是只管把比特流传到传输介质上,我只管传,我不管传给谁,我也不管我传的时候别人是不是也正在传即是不是有冲突,我物理层就只管传,那么那些事谁来管呢?是你数据链路层。
所谓链路就是一条物理线路,数据链路是物理线路加上规程
提供两个相邻的网络节点或主机及其相连的网络节点之间的可靠通信
- 将不可靠的物理链路变为可靠的逻辑链路
- 流量控制:发送端可能发送过快,导致拥挤和丢失
- 为网络层提供服务:
- 将来自原机器的网络层的数据传送到目标机器的网络层
- >1.无确认无连接的服务
- (适用于误码率低的可靠信道)
- >2.有确认无连接的服务
- >1.无确认无连接的服务
- 将来自原机器的网络层的数据传送到目标机器的网络层
(适用于不可靠信道、无线信道)
>3.有确认面向连接的服务
(长延迟的不可靠信道)
有确认就一定有链接,不存在有连接没确认的
- 链路管理:建立链路、释放链路、介质访问控制
然后接下来咱们就一块一块来讲这些功能都是怎么实现的:
1 组帧:
组帧:从网络层接受数据,并加上有意义的比特位形成头部和尾部来携带地址和其他控制信息。一个含有这些附加控制信息的数据单元称为帧。
帧定界又称帧同步:就是在首尾各加点东西,然后读的时候先读到那个代表开始,然后又读了一次代表结束,使得接收方应该能从接收到的二进制比特流中区分出帧的起始和终止,
有四种方法:
1.1 字符计数
在帧头部加一个字符,就存帧总共的字符个数(当然计数字符自己也算)
1.2 字符填充
首尾各加一个特殊字符,然后信息位中如果发现有控制字符,就在前面加一个转义字符(转义字符本身也算控制字符)
1.3 零比特填充
首位各加一个01111110,然后信息位中每连续遇到5个1就加入一个0(防止有效载荷中出现标志比特)
零比特填充法更容易用硬件来实现,虽然原理跟字符填充法差不多但是性能优于字符填充法
1.4 违规编码
就比如曼彻斯特编码,本来前低后高=0,前高后低=1,没有前高后高或前低后低这种说法,但是我就加入这么一位,让它来代表开始和终止
因为违规,所以特殊
2 差错控制:
数据帧可能出现损坏、丢失、重复、乱序现象
比特差错:0变1了,或者1变0了
ARQ:自动重复请求
FEC:前向纠错
2.1 检错编码:
循环冗余码:
循环冗余校验码
奇偶校验码:
奇偶校验码讲解视频
2.2 纠错编码:
位错:
CRC循环冗余校验码
帧错:帧的丢失,重复或失序
定时器:
帧编号:
3 流量控制&差错控制:
这一块有几个协议,他们之间的关系应该是这样的:滑动窗口协议是一个大的概念,分为:
- 停止等待协议
- 发送窗口=1,接收窗口=1
- 回退n协议(GBN)
- 发送窗口=n,接收窗口=1
- 选择重传协议(SR)
- 发送窗口=n,接收窗口=n
4 介质访问控制(Media Access Control, MAC):
学到这的时候我一开始有个疑问说最直接接触传输介质的不是物理层么,为啥不由物理层来执行介质访问控制?网络分层体系结构的设计者就是这么设计的,这么设计也有一定的合理性,物理层是光管发,我如何发比特流变成各种形式的光信号电信号传到传输介质上,我只管发,至于给谁发、啥时候发、发的时候有没有跟别人产生冲突,我物理层是不管的,是由你数据链路层来管的,所以数据链路层可以说使用物理层提供的发送服务,然后实现了介质访问控、流量控制、差错控制这些更多的功能。
介质访问控制其实就是为了解决冲突,主要有以下这些手段。
有静态和动态之分,这里的静态和动态是怎么说法呢,就是怎么就静态怎么就动态了,就是说像静态这些多路复用,他给每个结点的分配是固定的,公平的,一直就是这个规则不会变,比如时分,咱们就设时间片为5s,你发5s我发5s咱俩轮着来,一直就这么执行。但是动态的话会根据实际情况,可能其他结点都不发就这个结点一直发,也可能多个结点像时分多路复用那样快速轮换,总之每个结点分到的对这个信道的配额会动态的不断变化,不是一成不变的,所以叫动态。
王道的思维导图不错,放这起个总览的作用:
4.1 信道划分介质访问控制(静态介质访问控制)
4.1.1 时分多路复用TDM
数字技术
共享频率,但不共享时间
4.1.2 频分多路复用FDM
模拟技术
共享时间,但不共享频率
4.1.3 波分多路复用WDM
光的频分多路复用
4.1.4 码分多路复用CDMA
4.2 随机介质访问控制(动态介质访问控制)
4.2.1 CSMA载波监听多路访问
CSMA主要有用的特性是监听信道,
在具体讲CSMA这个协议及其CA和CD变种之前,首先得明确两个概念,这两个概念各大教材包括王道都没讲明白,导致理解起来吃力,我自己耗费了很长时间才弄明白,总结在这里:
信道忙闲:
怎么算忙,怎么算闲?咱们说,一个结点监听信道,它只能监听自己这一个点,所以不管有没有结点正在发送,也不管信道上有没有数据在传播,只要这个结点检测到自己这里有来自其他结点的信号经过,那它就认为信道忙,要没有它就认为是空闲。
我初学时在这里陷入很大的误区,主要因为教材讲解的模糊、不明确,导致我以为“只要信道上有数据就叫忙”,“有结点正在发送就叫忙”。后来看了王道的视频(他甚至都没有明说)自己推断了半天才明白。
碰撞:
这里理解的难点是,实际的碰撞和结点检测到碰撞是两回事。
什么叫碰撞了,就是同一时刻,两股数据出现在了信道的同一位置,这就叫碰撞。
那么结点如何去检测到碰撞呢?是必须在它发送的过程中检测到有其他结点的信号到了自己这,它才能检测到发生了碰撞。
同样是由于教材和课程的不明确,我初学时在这里也有误区,以为碰撞检测是依赖争用期,只要从开始发时计时,经过争用期没有检测到其他信号就叫没有发生碰撞。
4.2.2 CSMA/CD
一般的CSMA是发送前监听信道,监听到闲了就发送,然后就不再监听了。
CD则是发送时还监听,就为了监听冲突/碰撞。
总体算法可以陈述如下:
忙怎么办?
忙继续监听,和1坚持一样
争用期和最小帧长:
看图3.22的倒数第二行,设想极端情况,当A发送的数据就差一点点到达B时,B突然发了一个bit。
根据上面说忙闲和碰撞的定义,A开始发送数据后需要经过的时间,A发的数据能到达每个结点,使每个结点监听信道时都能监听到A的信号,从而不会发送。但是假如说,就在差0.00001秒到
时离A最远的B突然发了一个bit,那么这是发生碰撞的最极端情况了,这个bit要到达A还需要
的时间。所以争用期=2
,只要过了争用期A还没检测到其他结点的信号到自己这,A就能确定肯定没发生碰撞。
最小帧长就是说,根据检测碰撞的定义,一个结点必须在自己发送数据时同时检测到有其他结点的信号到自己这,它才能知道碰撞了,还是考虑上面那种极端情况,如果说,那来自B的一个bit到A时,A的数据早发完了,那么A就检测不到碰撞了。这属于是实际发生了碰撞但A检测不到。所以为了确保任何碰撞都能被检测到,就限制最小帧长为:争用期*带宽.
检测到碰了怎么办?
二进制指数回避算法,
确定基本退避时间=争用期
确定参数K=min[重传次数,10]
确定倍数r,r从[0,1,2,3,---2^k-1]中随便取一个
退避时间为:基本退避时间*r
重传次数最高为16次,如果超过16次,向上层报错
4.2.3 CSMA/CA
王道计算机考研 计算机网络
CSMA/CA协议主要用在无线局域网中,那么
为什么不用CD?
1.因为无线网络中发送信号远强于接收信号(信号随距离减弱),且信号不稳定。假如我是结点A,我自己发送的信号很强,而别的结点的发送信号到我这里已经很弱了,那么我自己的发送信号干扰了别的结点的发送信号,我可能就听不到别的结点也在发送了。
2.隐蔽站问题:
所谓隐蔽站,就是说无线信号的传播有距离限制,比如就10m,那么我距离接入点8m,你距离接入点7m,咱俩相距15m,那么监听不监听都没用,因为反正咱俩听不到彼此,咱俩就有可能同时发送造成冲突。
CA和CD相比区别就是不去检测碰撞而尽量去避免碰撞,所采取的手段就是DIFS、随机退避和信道预约。
CD是监听,闲则立即发,忙则继续监听,CA是闲则等待DIFS然后发RTS,忙则随机退避,CA只要发了就不再去检测冲突。
这部分主要是CSMA/CD会考一些计算题比较难,需要把最小帧长的计算掌握清楚,别的就都是考概念
然后这块经常会各种MAC协议的优缺点,什么情况下适合选哪种,统一总结一下就是说:
高负载时,无碰撞协议好,
低负载时,碰撞协议好。因为低负载的时候往往无碰撞协议的信道利用率就低了。
4.2.4 令牌环网:
令牌环网,物理星型,逻辑环形
令牌包含:
标记位
发送方信息
接收方信息
数据
过程:
每个节点拿到令牌后有一段固定的令牌持有时间,这段时间可以给令牌里装数据,同时置标记位为忙
装完以后把令牌在环网里转一圈回到手里,置标记位为闲
然后顺着环网给下一个人
优缺点:
1.令牌开销
2.延迟,如果A想发,但令牌在D手里,那要等D->C->B->A
相关文章:
[计算机网络]数据链路层
0 概论:数据链路层都干什么事,提供啥功能 比物理层再高一层就是数据链路层,咱们上一篇讲物理层,物理层直接接触传输介质,现在数据链路层是使用物理层的传输服务,然后实现更多的功能。物理层是只管把比特流…...
基于 vue-flow 实现可视化流程图
vue-flow 是一个基于 Vue.js 的强大且灵活的可视化流程图库,它允许开发者轻松创建交互式的流程图、工作流图、节点图等。 主要特点 易于使用 :提供了简洁的 API 和组件,开发者可以快速上手并创建复杂的流程图。高度可定制 :支持…...
【网络编程】HTTP(超文本传输协议)详解
🦄个人主页:修修修也 🎏所属专栏:网络编程 ⚙️操作环境:Visual Studio 2022 目录 📌HTTP定义 📌HTTP工作原理 1.客户端发起请求: 2.服务器处理请求: 3.客户端处理响应: 📌HTTP关键特性 🎏HTTP请求方法 &am…...
NuttX 与 PX4 系统开发全流程详解
NuttX 与 PX4 系统开发全流程详解 目录 1. NuttX 构建与使用2. NuttX 启动流程解析3. BootLoader 源码分析4. GPIO 驱动机制5. I2C 驱动分析6. PX4 系统架构简析7. uORB 消息机制8. PX4 应用开发示例9. 串口及 GPS 驱动解析10. MAVLink 协议与 PX4 交互 1. NuttX 构建与使用 …...
【Mytais系列】Myatis的设计模式
目录 设计模式 1. 工厂模式(Factory Pattern) 2. 建造者模式(Builder Pattern) 3. 动态代理模式(Dynamic Proxy Pattern) 4. 模板方法模式(Template Method Pattern) 5. 策略模…...
Linux:进程优先级及环境
一:孤儿进程 在Linux系统中,当一个进程创建了子进程后,如果父进程执行完毕或者提前退出而子进程还在运行,那么子进程就会成为孤儿进程。子进程就会被systemd(系统)进程收养,其pid为1 myproces…...
网络编程初识
注:此博文为本人学习过程中的笔记 1.socket api 这是操作系统提供的一组api,由传输层向应用层提供。 2.传输层的两个核心协议 传输层的两个核心协议分别是TCP协议和UDP协议,它们的差别非常大,编写代码的风格也不同,…...
疾病传播模拟 ——python实操
1、需求 疾病传播模拟 定义一个Infection类,包含初始感染人数、每日感染率等属性,以及一个simulate_spread方法用于模拟疾病传播过程。 使用numpy随机生成初始感染人数(范围1-100)和每日感染率(范围0.01-0.1)。 创建Infection对象,模拟10天的疾病传播过程,每天计算感染…...
用docker ffmpeg测试视频vmaf分数,很快不用编译
之前测试vmaf要自己编译libvmaf,自己编译ffmpeg,巨麻烦,或者用老旧不再维护的docker仓库,最近在docker hub上发现了编译了libvmaf的ffmpeg的docker,而且镜像很小,适合直接运行。 # dest.mp4 评分视频&…...
【浅学】Windows下ffmpeg+nginx+flv将本地视频推流在本地搭建的Web前端页面中播放,超详细步骤
Nginx安装和配置 下载nginx-1.19.3-http-flv 模块预编译包并解压放在d盘,路径就跟安装步骤里说的一样(如下图),不然会有其他问题出现。 打开conf/nginx.conf,查看RTMP和http相关的配置,确认端口号和路由名称 ffpemg推流视频…...
SQL笔记——左连接、右连接、内连接
前言:总是忘记表连接的区别,在面试的时候也容易被问到,因此就好记性不如烂笔头吧 集合运算 有并集、交集、差集 联合查询*(针对行合并的)* union为关键字,就是将两个select的结果求并集(此时重…...
iOS启动优化:从原理到实践
前言 在iOS应用开发中,启动速度是影响用户体验的重要因素之一。研究表明,启动时间每增加1秒,用户留存率就会下降约7%。本文将深入探讨iOS启动优化的各个方面,从底层原理到具体实践,帮助开发者打造更快的应用启动体验。…...
202553-sql
目录 一、196. 删除重复的电子邮箱 - 力扣(LeetCode) 二、602. 好友申请 II :谁有最多的好友 - 力扣(LeetCode) 三、176. 第二高的薪水 - 力扣(LeetCode) 一、196. 删除重复的电子邮箱 - 力扣…...
Socket-TCP
在TCP/ip协议中,用源IP、源端口号、目的IP、目的端口号、协议号这样一个五元组来标识一个通信! 端口号范围划分 0 - 1023: 知名端口号,HTTP,FTP,SSH 等这些广为使用的应用层协议,他们的端口号都是固定的。…...
BOSS的收入 - 华为OD机试(A卷,C++题解)
华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 代码不懂有疑问欢迎留言或私我们的VX:code5bug。 题目描述 一个 XX 产品行销总公司,只有一个 boss,其有若干一级分销&…...
神经网络的基本概念与深度解析——基于生物机制的仿生建模与工程实现
广义上讲,神经网络是泛指生物神经网络与人工神经网络这两个方面。所谓生物神经网络是指由中枢神经系统(脑和脊髓)及周围神经系统(感觉神经、运动神经、交感神经、副交感神经等)所构成的错综复杂的神经网络,…...
JavaScript基础-运算符优先级
在JavaScript编程中,理解运算符的优先级是编写正确且高效代码的关键之一。当一个表达式包含多个运算符时,JavaScript会根据运算符的优先级来决定执行顺序。如果不了解这些规则,可能会导致意外的结果。本文将详细介绍JavaScript中的运算符优先…...
【RocketMQ NameServer】- NameServer 启动源码
文章目录 1. 前言2. RocketMQ 通信架构3. NameServer 启动流程3.1 创建 NameServerController3.2 启动 NameServerController3.3 NamesrvController#initialize3.3.1 Netty 通信的整体流程3.3.2 创建 NettyRemotingServer 3.4 this.remotingServer.start()3.4.1 this.remotingS…...
Learning vtkjs之WindowedSincPolyDataFilter
过滤器 模型简化(光滑处理) 介绍 像是对模型进行特征信息的简化(光滑处理) 效果 核心代码 主要流程 const fullScreenRenderer vtkFullScreenRenderWindow.newInstance({background: [0, 0, 0],rootContainer: vtkContainerR…...
C++ - 数据容器之 forward_list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)
一、创建与初始化 引入 <forward_list> 并使用 std 命名空间 #include <forward_list>using namespace std;创建一个空 forward_list forward_list<int> fl;创建一个包含 5 个元素,每个元素初始化为 0 的 forward_list forward_list<int&g…...
ES6/ES11知识点
ES 全称ECMAScript ,是脚本语言的规范,javascript是ES的一种实现。 作用域链 在 JavaScript 中,作用域链是一个非常重要的概念,它决定了变量和函数的访问顺序。掌握作用域链有助于深入理解执行上下文、闭包和变量查找等概念。 …...
力扣面试150题--二叉树的最大深度
Day 40 题目描述 做法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right…...
360驱动大师v2.0(含网卡版)驱动工具软件下载及安装教程
1.软件名称:360驱动大师 2.软件版本:2.0 3.软件大小:218 MB 4.安装环境:win7/win10/win11 5.下载地址: https://www.kdocs.cn/l/cdZMwizD2ZL1?RL1MvMTM%3D 提示:先转存后下载,防止资源丢失&…...
Excel-CLI:终端中的轻量级Excel查看器
在数据驱动的今天,Excel 文件处理成为了我们日常工作中不可或缺的一部分。然而,频繁地在图形界面与命令行界面之间切换,不仅效率低下,而且容易出错。现在,有了 Excel-CLI,一款运行在终端中的轻量级Excel查看…...
AI Agent开发第48课-DIFY中利用AI动态判断下一步流程-DIFY调用API、REDIS、LLM
开篇 之前我们在《AI Agent开发第47课-DIFY处理多步流程慢?你确认用对了?》中讲述了DIFY的设计中在整合多步LLM时如避免过多调用LLM的良好设计,并给出了AI工作流的相应设计手法。今天我们要在上一篇的基础上把“上门维修预约”这个流程进一步按照实际业务需求加入用户在整个…...
C# 操作符
C# 操作符 一、操作符概览二、优先级与运算顺序三、各类操作符的实例 一、操作符概览 操作符(运算符)的本质是函数的简记法 操作符不能脱离与它关联的数据类型 int x 5; int y 4; int z x / y; Console.WriteLine(z);//输出1double a 5.0; double b…...
python下载
一、下载python和IDIE 1.进入python官网 加载可能有点慢,因为是国外网站 下载 点击Downloads按钮,选择版本下载。 安装 勾选两个多选框,点击Install Now安装完成,进入开始菜单,多出一个Python xxx.xxx文件夹&…...
tp5 php获取农历年月日干支甲午
# 切换为国内镜像源 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/# 再次尝试安装 composer require overtrue/chinese-calendar核心写法一个农历转公历,一个公历转农历 农历闰月可能被错误标记(例如 闰四月 应表示…...
MySQL安装完全指南:从零开始到配置优化(附避坑指南)
🔥 前言:为什么你总是装不好MySQL? (实话实说)每次看到新手在MySQL安装环节疯狂踩坑,老司机都忍不住想摔键盘!明明官网下载的安装包,怎么就会报错呢?为什么别人的环境变…...
5.3刷题
P3370 【模板】字符串哈希 #include<bits/stdc.h> using namespace std; #define int long long typedef unsigned long long ull; int n; ull myhash(string s){ull code 0, x 131, y 140814840257324663;for(int i 0; i < s.size(); i){code (code * x (ull)…...
KeyPresser 一款自动化按键工具
1. 简介 KeyPresser 是一款自动化按键工具,它可以与窗口交互,并支持后台运行, 无需保持被控窗口在前台运行。用户可以选择要操作的目标窗口,并通过勾选复选框来控制要发送哪些按键消息。可以从组合框中选择所需的按键,并在编辑框中输入时间间隔以控制按键发送之间的延迟。程…...
# LeetCode 1007 行相等的最少多米诺旋转
LeetCode 1007 行相等的最少多米诺旋转 原题英文:Minimum Domino Rotations For Equal Row 难度:中等 | 标签:数组、贪心 1 题目重述 给定两行长度相同的多米诺骨牌: tops[i] 表示第 i 张骨牌上面的数字;bottoms[…...
【Agent搭建】利用coze平台搭建一个AI销售?
目录 一、关于coze 核心功能 二、搭建属于你自己智能体 备注:(以下说明比较需要调整的板块) 1、从Prompt工程开始 2、搭建工作流 3、添加知识 三、总结 一、关于coze Coze是字节跳动推出的AI应用开发平台,专注于帮助用户快速…...
Linux系统中安装GitLab
一、安装前准备:确认系统要求(新手必看!) 系统版本:推荐 Ubuntu 20.04 或更高(本文以 Ubuntu 22.04 为例)。内存要求: 最低:2GB RAM(仅建议测试环境…...
PowerShell安装Chocolatey
文章目录 环境背景安装参考 环境 Windows 11 专业版PowerShell 7.5.1.NET Framework 4.0Chocolatey v2.4.3 背景 Chocolatey是Windows上的包管理工具,有点类似于Linux的 yum 和 apt 命令。比如,PowerShell里默认没有 grep 命令,则可以通过…...
UDP / TCP 协议
目录 一、前言: 数据封装与分用: 二、网络协议分层模型: 三、UDP / TCP 协议 UDP 协议: 1、UDP 协议段格式: 2、UDP 的特点: TCP 协议: 1、TCP 协议段格式: 2、TCP 协议的十…...
Coding Practice,48天强训(28)
Topic 1:悠悠的重组数组 游游的重组偶数__牛客网 比较简单的一个题,因为前两天写了快速幂算法,一直想着用进位 &1之类的处理偶数,其实就正常用string装数字遍历%2就行了 #include <bits/stdc.h> using namespace std;…...
第一章 初识SpringMVC
一、什么是MVC MVC是一种软件架构模式(是一种软件架构设计思想,不止Java开发中用到,其它语言也需要用到),它将应用分为三块: M:Model(模型) V:View…...
虚幻引擎入门笔记
【虚幻5】UE5新手入门尝试 虚幻引擎的基础设置 1.验证-当文件误删的时候,对其进行验证,可以恢复。 2.虚幻引擎极其强大,可以实现多种复合技能,所在创建项目页面可以看见不只是创建游戏的项目 3.更改虚幻引擎默认的缓存地址。有些…...
Oracle 11g通过dg4odbc配置dblink连接神通数据库
1、安装unixodbc 2、安装神通数据库 3、 配置神通数据库odbc数据源,测试连通性 4、配置透明网关、监听文件以及对应编写的hsodbc的ora文件,我这里是initst.ora ##对应编写的hsodbc的ora文件 vim $ORACLE_HOME/hs/admin/initst.ora ##添加如下 HS_FDS_CO…...
2.2 矩阵
考点一:方阵的幂 1. 计算方法 (1) 找规律法 适用场景:低阶矩阵或具有周期性规律的矩阵。示例: 计算 A ( 0 1 1 0 ) n A \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}^n A(0110)n: 当 n n n 为奇…...
Linux《进程概念(下)》
在之前我们已经了解了进程基本的概念、知道了如何去创建子进程;还了解了进程状态、进程切换、进程O(1)调度算法等,那么接下来在本篇当中我们就来学习环境变量和程序地址空间的相关知识,相信通过本篇的学习你会有很大的所获,一起加…...
MySQL 比较运算符详解
(1)符号类型运算符 运算符名称作用示例等于运算符判断两个值、字符串或表达式是否相等SELECT * FROM users WHERE age 25SELECT name FROM products WHERE category Electronics<>安全等于运算符安全地判断两个值、字符串或表达式是否相等&…...
No qualifying bean of type ‘XXX‘ available
没有某类型的bean可供使用 问题一解决方案错误问题配置类YuApiClientConfig依赖导入测试方法 问题二解决方法问题现场问题解决 问题一 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.transbit.yuapiclientsd…...
手搓一个 MCP Server 实现水质在线数据查询
随着人工智能技术的快速发展,如何将大语言模型(LLM)与实际业务场景结合,提供精准、可控的服务成为一个热门话题。MCP(Model Context Protocol)作为一种开放协议,为应用程序向 LLM 提供标准化的上下文接口,极大地简化了这一过程。本文将以构建一个水质在线查询 MCP 服务…...
neo4j初尝试
neo4j 下载并安装 这里以ubuntu 下载为例 打开neo4j官网,如下图所示,找到下载中心 选择 每个人可以根据自己的系统进行下载。然后解压tar -xf neo4j-community-2025.04.0-unix.tar.gz,如果不出意外的话,这里就可以直接输入命令启动了&#…...
数据分析业务拆解底层思维
业务拆解 分析前要有方法,从用户体验入手,将业务拆解,找到对象以及对象之间的关系。 电商平台卖的不是用户时间,不是流量,而是机会,而作为一个分析师就得分析机会在哪,帮助平台将机会更好的提…...
Linux运维——Vim技巧一
Vim技巧 一、优化重复操作1.1、 . 命令1.2、* 命令1.3、重复修改示例 二、删除单词(daw)三、对数字做算数运算四、操作符与动作五、插入模式5.1、插入模式下删除5.2、返回普通模式5.3、插入-普通模式5.4、不离开插入模式,粘贴寄存器中的文本5…...
第一节:OpenCV 基础入门-简介与环境搭建
一、OpenCV 是什么?为什么值得学习? OpenCV(Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习库,由英特尔实验室于1999年发起,现已成为全球计算机视觉领域最广泛使用的工具之一。它…...
前端面经-VUE3篇(二)--vue3组件知识(一)组件注册、props 与 emits、透传、插槽(Slot)
组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成一个层层嵌套的树状结构: 一、注册 Vue 组件本质上是一个可以复用的 自定义 HTML 元素,为了在其他组件中使用一…...