【Linux跬步积累】—— 网络基础
🌏博客主页:PH_modest的博客主页
🚩当前专栏:Linux跬步积累
💌其他专栏:
🔴 每日一题
🟡 C++跬步积累
🟢 C语言跬步积累
🌈座右铭:广积粮,缓称王!
文章目录
- 一、认识“协议”
- 什么是“协议”
- 二、网络协议初识
- 网络的分层结构——网络 vs OS之间的关系
- 为什么要进行网络分层?
- 为什么要存在网络?主要解决什么问题?
- OSI七层模型
- 网络和操作系统之间的关系
- 站在语言角度理解,什么是协议?
- 三、网络传输基本流程
- 局域网通信
- 如何查看Mac地址
- 通信过程
- 什么是封装?
- **什么是报文?**
- **什么是协议报头?**
- 跨路由器传输
- 传输过程
- **Mac地址和IP地址的区别?**
- **屏蔽底层差异**
- 四、网络中的地址管理
- 认识IP地址
- 认识MAC地址
一、认识“协议”
什么是“协议”
“协议”是一种约定,这个约定的作用就是用来减少通信成本和沟通成本;
计算机协议就是计算机之间的约定;
例如:
计算机生产厂商有很多,计算机操作系统也有很多,计算机网络硬件设备还是有很多。那么如何让这些不同厂商之间生产的计算机能够相互顺畅的通信呢?就需要有人站出来,约定一个共同的标准,大家都在遵守,这就是网络协议。
二、网络协议初识
网络的分层结构——网络 vs OS之间的关系
为什么要进行网络分层?
答:层和层之间是松耦合的,可以随时替换或者方便维护。
为什么要存在网络?主要解决什么问题?
首先我们需要知道一个客观事实,就是主机通信距离变远,一旦通信距离变远,必定会引发新的问题:
- 如何使用数据的问题
- 可靠性问题
- 主机定位的问题
- 数据包局域网转发的问题
有了以上的问题之后我们就需要解决这些问题,那么我们如何解决呢?
使用网络协议(tcp/ip协议),这些协议是为了解决在网络通信当中,因为通信距离变远而引发的一系列问题。网络协议其实就是一种解决方案,既然是一个解决方案,就可以有好的解决方案和坏的解决方案。
衡量解决方案的标注是什么呢?
可扩展,方便维护。
所以为了满足可扩展和可维护,大佬们就将网络协议设计成了层状结构。
那么为什么要将网络协议设计成层状结构呢?
原因是层状结构可以减少层与层之间的耦合度,松耦合度就可以实现随时替换、随时扩展、方便维护,一层不影响另一层,所以最终网络协议就表现成一种层状结构了
OSI七层模型
OSI七层模型是一种框架性的设计方法,其中最主要的功能就是帮助不同的主机之间实现数据传输,但是它既复杂又不实用,所以我们按照TCP/IP四层模型来讲解。
物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.
物理层我们考虑的比较少,因此很多时候也可以称为TCP/IP四层模型。
一般而言:
- 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容;
- 对于一台路由器,它实现了从网络层到物理层;
- 对于一台交换机,它实现了从数据链路层到物理层;
- 对于集线器,它只实现了物理层;
应用层对应shell、应用程序
传输层和网络层对应着操作系统
数据链路层对应着驱动板块
物理层对应着硬件
网络和操作系统之间的关系
Windows和Linux系统之间,操作系统的设计是不一样的,因为如果一样的话,系统调用也肯定都是一样的,那么就不需要搞什么语言级别的跨平台性了。所以操作系统本身是不一样的,但是无论你是Windows还是Linux,他们的网络协议都是一样的,因为需要遵守OSI定出来的标准。
这就是为什么Windows和Linux操作系统不一样,但是可以直接进行通信的原因。
站在语言角度理解,什么是协议?
协议就是
双方都能认识的结构体数据类型!!!
三、网络传输基本流程
局域网通信
在同一个局域网中的主机,能不能直接通信呢?原理(以太网的通信原理)是什么?
答:能。如果A传输数据给C,每一个主机都能接收到数据,但是不会处理,会丢弃。但是只有C接收到之后,才会保留处理。
那么如何才能保证只有C接收到之后才会保留处理呢?
我们给每一个局域网的主机设置一个唯一标识符:Mac地址,这样我们就能知道是哪个主机发送给哪个主机了。
那么如果A给C传输数据的时候,主机X在不断的给我们对应的局域网里发送垃圾数据呢?那么有可能两条数据会混在一起,此时这个数据就识别不出来了。所以在这种以太网通信的时候,存在一个问题,叫做数据碰撞。
发生数据后,主机A会进行碰撞的检测和避免,如果发生碰撞,主机A会进行等待发送。
所以我们会把一个局域网称之为碰撞域。
所以在任何时刻,只允许一台主机在局域网中发送消息,这种网络就叫做以太网。因此在局域网中,主机越少越好。
网络与OS一统:
我们将A主机和C主机看成两个进程,所谓的A给C发数据,第一件事情就是A把数据交到局域网上,而这个局域网很明显就是被ABCDX所共享的一个网络,所以这个网络我们可以称之为它就是多个不同主机之间的公共资源。
所以局域网本质就是一个临界资源!
那么我们如果想要黑掉一个局域网,我该怎么做呢?
一直发送垃圾数据,产生碰撞。
如何查看Mac地址
我们可以使用
ifconfig
进行查看其中ether的意思就是以太
通信过程
什么是封装?
我们所谓的添加报头,就是给一串二进制数据前面再拷贝一个结构体对象,这个过程我们叫做封装。
报文在不同层有着不同的名称:
- 应用层:request/response
- 传输层:数据段
- 网络层:数据报
- 链路层:数据帧
什么是报文?
“报文” = 协议报头 + 有效载荷
什么是协议报头?
上层数据向下传送时,会在有效载荷前面加上一个协议报头,目的就是为了在对方主机的同一层可以正确的解析和处理数据。每一层都会有不同的协议,所以在报头中需要包含上层的协议是谁。
可以理解成快递单子和鞋子,你买了一个鞋子,商家发货时是不是会粘贴一个快递单,上面有发货地址和收货地址,快递就通过这个信息送到你手上。快递单就可以理解成协议报头,而鞋子就是有效载荷。
对方主机收到后就需要自底向上开始解包和分用,先将报头和有效载荷分离开,因为是同层协议,所以两个报头的源代码都是一样的,就可以正常解析,然后将有效载荷发送给上一层的协议。
协议的共性:
- 将报头和有效载荷进行分离; ——> 解包
- 将自己的有效载荷交付给上一层的哪个协议;——> 分用
以上的过程是在物理层面的过程。
但是在逻辑上:同层协议,都可以认为自己在和对方直接通信。
那么如何理解呢?
逻辑层面就可以看成你在给室友打电话,那么你是不是认为你在跟室友直接沟通。但实际上,你是在跟你手机说的,你把声音录给了手机,手机通过基站将声音打包转到你室友的手机上,你室友的手机再进行解压,然后把声音播放。
跨路由器传输
传输过程
当数据要从局域网1发送数据到局域网2时,自定向下封装时,在网络层的报头中会添加两个信息:源IP地址(IPA)和目的IP地址(IPB),在数据链路层的报头中会有源Mac地址(MacA)和目的Mac地址(Mac_left)。
路由器接收到局域网1的数据后,会将以太网对应的报头进行解包,然后将剩下的数据向上交付给网络层网络层此时对报头进行分析,因为报头中包含源IP地址和目的IP地址,所以网络层分析之后就知道将有效载荷发给哪台计算机了,因为每个计算机都有自己唯一的IP地址。
然后再将数据交付给链路层,此时在链路层当中就会给数据添加上令牌环对应的报头信息:源Mac地址(Mac_right)和目的Mac地址(MacB),然后再将该数据发送到局域网2当中,此时该数据就能够在令牌环网当中传输了。
总结一下:路由器为什么能够知道数据应该转发给哪个局域网
路由器是通过IP地址来确定数据的转发方向的,因特网上的每台计算机都有一个唯一的IP地址,在数据向下封装时,在网络层封装的报头中会包含两个字段:源IP地址和目的IP地址。
当路由器需要将一个局域网中的数据转发到另外一个局域网时,在路由器的链路层会先将当前局域网对应的底层报头去掉,然后将剩下的数据上交给网络层,此时网络层就可以获取当前的报头信息了:源IP地址和目的IP地址,也就知道数据是哪台机器发送的,以及发送给谁。然后路由器就可以根据IP地址在路由表中查找,最终就能确定该数据应该发送到哪一个局域网中的哪台机器了。
具体过程如下图所示:
Mac地址和IP地址的区别?
- Mac地址只能作用在局域网当中,每经过一个路由器,它都会被路由器解包,再重新封装
- IP地址则是一直不变的
屏蔽底层差异
IP地址的存在除了帮助数据“路由”之外,还有一个很重要的作用,就是屏蔽了底层网络的差异。对与通信双方主机的IP地址以及往上的协议来说,他们不需要过多关心底层采用的是以太网还是令牌环网,因为有路由器帮我们适配两个局域网之间的不同,他们只需要知道源IP地址和目的IP地址就可以将数据正确的发送出去,因此现在主流的网络也叫做IP网络。
四、网络中的地址管理
认识IP地址
IP协议有两个版本,IPv4和IPv6,IPv4用32个比特位来标识IP地址,而IPv6用128个比特位来标识IP地址。
- IP地址是在IP协议中,用来标识网络中不同主机的地址。
- 对于IPv4来说,IP地址是一个4字节,32位的整数。
- 我们通常也使用“点分十进制”的字符串标识IP地址,例如192.160.0.1,用点分割的每一个数字表示一个字节,范围是0-255。
认识MAC地址
- MAC地址用来识别数据链路层中相连的节点。
- 长度为48位,及6个字节,一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)。
- 在网卡出厂时就确定了,不能修改。MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突,也有些网卡支持用户配置MAC地址)。
相关文章:
【Linux跬步积累】—— 网络基础
🌏博客主页:PH_modest的博客主页 🚩当前专栏:Linux跬步积累 💌其他专栏: 🔴 每日一题 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮࿰…...
【银河麒麟高级服务器操作系统实例】虚拟机桥接网络问题分析及处理
更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…...
深入剖析Android Service:原理、生命周期与实战应用
一、引言:开启 Service 探索之旅 在 Android 开发的广袤天地中,Service 堪称一颗璀璨的明星,占据着举足轻重的地位。它宛如一位幕后英雄,默默地在后台辛勤劳作,执行着各种至关重要的任务,却无需与用户进行…...
MLT媒体程序框架03:滤镜——loudness
EBU R.128协议 引用链接 EBU的全称为European Broadcasting Union ,既欧洲广播联盟,为欧洲与北非各广播业者(包含广播电台与电视台)的合作组织,成立于1950年2月12日,有五十多个正式加盟国,总部位于瑞士日内瓦,目前中国…...
FreeRTOS第15篇:FreeRTOS链表实现细节03_List_t与ListItem_t的奥秘
文/指尖动听知识库-星愿 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:深入FreeRTOS内核:从原理到实战的嵌入式开发指南 1 FreeRTOS列表的核心数据结构 FreeRTOS的列表实现由两个关键结构体组成:List_t(列表)和ListItem_t(列表项)。它们共同…...
Spring Boot静态资源访问顺序
在 Spring Boot 中,static 和 public 目录都用于存放静态资源(如 HTML、CSS、JavaScript、图片等文件),但它们在使用上有一些细微的区别。以下是它们的详细对比: 1. 默认优先级 Spring Boot 会按照以下优先级加载静态…...
什么是 spring 的循环依赖?
什么是 spring 的循环依赖? 首先,认识一下什么是循环依赖,举个例子:A 对象被 Spring 管理,并且引入的 B 对象,同样的 B 对象也被 Spring 管理,并且也引入的 A 对象。这种相互被引用的情况&#…...
RSA的理解运用与Pycharm组装Cryptodome库
1、RSA的来源 RSA通常指基于RSA算法的密码系统,令我没想到的是,其名字的来源竟然不是某个含有特别意义的单词缩写而成(比如PHP:Hypertext Preprocessor(超文本预处理器)),而是由1977年提出该算法的三个歪果…...
AI数据分析:deepseek生成SQL
在当今数据驱动的时代,数据分析已成为企业和个人决策的重要工具。随着人工智能技术的快速发展,AI 驱动的数据分析工具正在改变我们处理和分析数据的方式。本文将着重介绍如何使用 DeepSeek 进行自动补全SQL 查询语句。 我们都知道,SQL 查询语…...
git的坑
不小心把工作区的代码全删掉了 首先是名字出错,不知为何gitee任意把我的名字更改。 导致无法push验证 git push -u origin "master 显示:fatal: Authentication failed for https://gitee.com/zhang-great/stm32-smart-security-system.git/ 我…...
小程序事件系统 —— 32 事件系统 - 事件分类以及阻止事件冒泡
在微信小程序中,事件分为 冒泡事件 和 非冒泡事件 : 冒泡事件:当一个组件的事件被触发后,该事件会向父节点传递;(如果父节点中也绑定了一个事件,父节点事件也会被触发,也就是说子组…...
PLC数据类型和C#数据类型的数据类型映射表
数据类型映射表 PLC数据类型C#数据类型读取方式补充说明BitboolDBX布尔值BytebyteDBB单字节无符号整数WordushortDBW16位无符号整数DWorduintDBD32位无符号整数Intshort16位有符号整数DIntint32位有符号整数RealfloatDBR单精度浮点数LRealdoubleDBL双精度浮点数Stringstr…...
全球首创!微软发布医疗AI助手,终结手写病历时代
今天凌晨,微软发布了医疗界首个用于临床工作流程的AI助手Microsoft Dragon Copilot。 Dragon Copilot是基于语音文本的混合架构,能够将医生的语音或临床口述内容实时转换为文本。例如,医生可以通过语音输入患者的病历信息、医嘱或诊断结果&a…...
每日一题----------异常处理
总结: NullPointerException:尝试使用一个空引用进行操作时抛出。 ArrayIndexOutOfBoundsException:数组下标越界时抛出。 ClassCastException:类型转换失败时抛出。 ArithmeticException:数学运算错误时抛出&#…...
HTML 属性(详细易懂)
HTML(超文本标记语言)是用于创建网页和其他可在浏览器中查看的内容的基础标记语言。HTML 属性是 HTML 元素的额外信息,它们提供了元素的更多细节,如元素的标识符、样式、行为等。在本文中,将详细介绍 HTML 属性&#x…...
基于火山引擎的DeepSeek-V3 api实现简单的数据查询功能
前言 现在ai比较火,ai可以极大的提高大家的工作效率,所以有空的话要学习下ai的使用 火山引擎大模型 火山引擎大模型广场,聚集了市面上常见的基座大模型,每个模型都有50Wtokens的免费调用量,可以方便大家调用 账号登…...
AI入门1:关键概念
1. 基础概念 AI(Artificial Intelligence,人工智能) 模拟人类智能的机器系统,具备学习、推理、决策等能力。 Machine Learning(机器学习,ML) 让计算机通过数据自动学习规律,…...
WPS工具栏添加Mathtype加载项
问题描述: 分别安装好WPS和MathType之后,WPS工具栏没直接显示MathType工具,或者是前期使用正常,由于WPS更新之后MathType工具消失,如下图 解决办法 将文件“MathType Commands 2016.dotm”和“MathPage.wll”从Matht…...
【MySQL-数据类型】数据类型分类+数值类型+文本、二进制类型+String类型
一、数据类型分类 二、数值类型 1.bit类型 测试环境ubuntu 基本语法: bit[(M)]:位字段类型,M表示每个值的位数,范围从1~64;如果M被忽略,默认为1举例: create table testBit(id i…...
cuda矩阵转置算子(共享内存)
cpu版本 即为按行遍历行列互换 // 主机上的矩阵转置函数,用于验证结果 void cpuTranspose(const float *input, float *output, int n) {for (int row 0; row < n; row){for (int col 0; col < n; col){output[col * n row] input[row * n col];}} }gp…...
GB28181视频监控流媒体平台LiveGBS如何自定义收流端口区间以便减少收流端口数或解决端口冲突问题
LiveGBS GB28181流媒体服务在接收视频的时候默认是使用30000-30249, webrtc流播放端口区间默认是UDP的30250-30500区间。有些网络环境不方便开放这么大的端口区间,下面介绍下如何修改配置这个区间。 从页面上修改这个区间,端口区间尽量设置大…...
在Go语言中,判断变量是否为“空”(零值或未初始化状态)的方法总结
在Go语言中,判断变量是否为“空”(零值或未初始化状态)的方法因数据类型而异。以下是各类型变量的判断方法总结: 1. 基本类型 整数(int) 判断是否等于零值 0。 var i int if i == 0 { // 空 } 字符串(string) 判断是否等于空字符串 ""。 var s string if s =…...
VUE3开发-9、axios前后端跨域问题解决方案
VUE前端解决跨域问题 前端页面需要改写 如果无效,记得重启服务器 后端c#解决跨域问题 前端js取值,后端c#跨域_c# js跨域-CSDN博客...
利用 requestrepo 工具验证 XML外部实体注入漏洞
1. 前言 在数字化浪潮席卷的当下,网络安全的重要性愈发凸显。应用程序在便捷生活与工作的同时,也可能暗藏安全风险。XXE(XML外部实体)漏洞作为其中的典型代表,攻击者一旦利用它,便能窃取敏感信息、掌控服务…...
嵌入式开发之串行数据处理
前题 前面几篇文章写了关于嵌入式软件开发时,关于串行数据处理的一些相关内容,有兴趣的可以看看《嵌入式开发:软件架构、驱动开发与串行数据处理》、《嵌入式软件开发之生产关系模型》和《嵌入式开发之Modbus-RTU协议解析》相关的内容。从业十…...
深入解析 JVM —— 从基础概念到实战调优的全链路学习指南
文章目录 一、为什么要学习 JVM?1. 面试必备与技能提升2. 性能优化与问题诊断3. 编写高质量代码 二、JVM 基础概念与体系结构1. JVM 简介2. JDK、JRE 与 JVM 三、JVM 内存模型1. 线程私有区2. 线程共享区 四、类加载机制与双亲委派1. 类加载过程2. 双亲委派模型3. 动…...
LTC6804、LTC6811、LTC6813的使用
FSEC自制BMS第一步:从零开发使用LTC6804采集电池电压 LTC6811特性 LTC6811 是 LTC6804 的引脚兼容型升级器件,LTC6804官方已经不推荐选用 可测量多达 12 节串联电池 1.2mV 最大总测量误差 可堆叠式架构能支持几百个电池 内置 isoSPI™ 接口 可在 290μ…...
Spring 构造器注入和setter注入的比较
一、比较说明 在 Spring 框架中,构造器注入(Constructor Injection)和 Setter 注入(Setter Injection)是实现依赖注入(DI)的两种主要方式。它们的核心区别在于依赖注入的时机、代码设计理念以及…...
【LangChain】对话历史管理
1 历史记录的剪裁 trimmed_messages from langchain_core.messages import (AIMessage,HumanMessage,SystemMessage,trim_messages, ) from langchain_openai import ChatOpenAImessages [SystemMessage("youre a good assistant, you always respond with a joke."…...
【无人机三维路径规划】基于CPO冠豪猪优化算法的无人机三维路径规划Maltab
代码获取基于CPO冠豪猪优化算法的无人机三维路径规划Maltab 基于CPO冠豪猪优化算法的无人机三维路径规划 一、CPO算法的基本原理与核心优势 冠豪猪优化算法(Crested Porcupine Optimizer, CPO)是一种新型元启发式算法,其灵感来源于冠豪猪的…...
CAN协议介绍
目录 一、CAN协议 1.1 CAN协议简介 1.2 CAN物理层 1.3 CAN协议层 二、CAN控制器 2.1 CAN控制内核 2.2 CAN发送邮箱 2.3 CAN接收FIFO 2.4 CAN验收筛选器 一、CAN协议 1.1 CAN协议简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生…...
树莓派 Interface Option 中没有camera选项
最近重温树莓派的视觉,烧录了树莓派的新系统后发现在 raspi-config 中的 Interface Option 没有 camera 选项,同时在终端用 vcgencmd get_camera 查看摄像头时没有检测到树莓派的 CSI 摄像头,在 Thonny 中调用树莓派摄像头出现报错࿱…...
大数据学习(55)-BI工具数据分析的使用
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
轻松上手 —— 通过 RPM 包快速部署 NebulaGraph
前言 在当今大数据时代,处理复杂关系数据的需求与日俱增,图数据库应运而生并逐渐崭露头角。NebulaGraph 作为一款高性能、分布式且易扩展的图数据库,专为应对大规模图数据处理而精心打造。它不仅具备丰富的查询语言,还拥有强大高效…...
nginx作为下载服务器配置
一、Nginx 作为下载服务器配置笔记 基本配置指令 server块配置: 在 Nginx 的配置文件(通常是/etc/nginx/nginx.conf或在/etc/nginx/conf.d/目录下的特定配置文件)中,首先需要定义一个server块来监听特定的端口并处理下载请求。例如…...
第六课:数据存储三剑客:CSV/JSON/MySQL
在Python的数据存储与处理领域,CSV、JSON和MySQL被广大开发者誉为“数据存储三剑客”。它们各自在不同的场景下发挥着重要作用,无论是简单的数据交换、轻量级的数据存储,还是复杂的关系型数据库管理,都能找到它们的身影。本文将详…...
Dify 开源大语言模型应用开发平台使用(一)
文章目录 一、创建锂电池专业知识解答应用1.1 应用初始化二、核心功能模块详解2.1 知识库构建2.2 工作流与节点编排节点类型说明工作流设计示例:锂电池选型咨询2.3 变量管理三、测试与调试3.1 单元测试3.2 压力测试3.3 安全验证四、部署与优化建议4.1 部署配置4.2 持续优化结论…...
PyQt高亮代码
PyQt高亮代码 安装 Pygments支持的格式支持的样式详解参考 Qt中使用 安装 Pygments Pygments 是Python中的一个高亮代码的包,挺好用的 pip install Pygments支持的格式 支持的格式比较多,不列出来了 # coding:utf-8 from pygments.lexers import get_all…...
小白学Agent技术[1]
文章目录 课程地址Agent介绍原理架构任务规划记忆工具使用程序开发范式的变化Agent开发注意事项 课程地址 Agent课程地址 Agent介绍 AI Agent(人工智能代理、AI智能体),一种模拟人类智能行为的人工智能系统,以大模型语言&#…...
以商业思维框架为帆,驭创业浪潮前行
创业者踏入商海,如同航海家奔赴未知海域,需有清晰的思维罗盘指引方向。图中“为什么—用什么—怎么做—何人做—投入产出”的商业框架,正是创业者破解商业谜题的密钥,从需求洞察到落地执行,为创业之路铺就逻辑基石。 …...
开源宝藏 Tigshop,开启电商新征程
在电商竞争愈发激烈的当下,一个强大且适配的商城系统是商家制胜的法宝。 Tigshop官网:Tigshop官网 - 开源商城系统Tigshop开源商城系统,支持b2b2c、多商户、多店铺、商家入驻、分销系统、跨境电商、连锁商城等解决方案,免费下载&…...
java多线程实现方式
目录 1. 继承 Thread 类 2. 实现 Runnable 接口 3. 实现 Callable 接口 4. 使用线程池 5. 使用 CompletableFuture(Java 8) 6. 使用 ForkJoinPool(Java 7) 7. 使用 Timer 和 TimerTask 8. 使用 ScheduledExecutorService …...
windows:curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)
目录 1. git update-git-for-windows 报错2. 解决方案2.1. 更新 CA 证书库2.2. 使用 SSH 连接(推荐)2.3 禁用 SSL 验证(不推荐) 1. git update-git-for-windows 报错 LenovoLAPTOP-EQKBL89E MINGW64 /d/YHProjects/omni-channel-…...
python:pymunk + pygame 模拟六边形内小球弹跳运动
向 chat.deepseek.com 提问:编写 python 程序,用 pymunk, 有一个正六边形,围绕中心点缓慢旋转,六边形内有一个小球,六边形的6条边作为墙壁,小球受重力和摩擦力、弹力影响,模拟小球弹跳运动&…...
vulnhub靶场之【digitalworld.local系列】的vengeance靶机
前言 靶机:digitalworld.local-vengeance,IP地址为192.168.10.10 攻击:kali,IP地址为192.168.10.6 kali采用VMware虚拟机,靶机选择使用VMware打开文件,都选择桥接网络 这里官方给的有两种方式ÿ…...
shiro550-cve-2016-4437复现
shiro550-cve-2016-4437 复现环境:docker desktop idea远程调试jdk版本必须与容器里的jdk1.8.0_102 匹配上,下载资源翻我CC1链那篇文章 注意burpsuite的proxy listeners端口改一下别跟docker容器的重了。 ysoserial工具:https://github.c…...
【DeepSeek】Ubuntu快速部署DeepSeek(Ollama方式)
文章目录 人人都该学习的DeepSeekDeepSeek不同版本功能差异DeepSeek与硬件直接的关系DeepSeek系统兼容性部署方式选择部署步骤(Ollama方式)1.选定适合的deepseek版本2.环境准备3.安装Ollama4.部署deepseek5.测试使用 人人都该学习的DeepSeek DeepSeek 作…...
Windows 版本Nmap使用报错“无法打开device eth0”
背景 使用nmap在win10上进行扫描工作正常,换到win server 2012 r2以后,扫描报错“无法打开device eth0” 使用了重装、重启大法,未彻底解决 PS:这台服务器之前完装过wireshark,实际已经安装了npcap 解决步骤 查询了…...
java字符串
字符串构造 1.使用常量串构造 String h1 "hello";System.out.println(h1); 2.new对象 String h2 new String("hello");System.out.println(h2); 3.使用字符数组构造 char[] array {h,e,l,l,o};String h3 new String(array);System.out.println(h3);…...
Uniapp 页面返回不刷新?两种方法防止 onShow 触发多次请求!
目录 前言1. 变量(不生效)2. 延迟(生效) 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 在 Uniapp 中,使用 onShow() 钩子来监听页面显示࿰…...