TCP/IP五层协议
目录
1. 五层模型结构
2. 各层核心功能与协议
(1) 应用层(Application Layer)
(2) 传输层(Transport Layer)
(3) 网络层(Network Layer)
(4) 数据链路层(Data Link Layer)
(5) 物理层(Physical Layer)
3.TCPvsUDP
4. 数据封装与解封装过程
5. 五层模型 vs 四层模型
6. 关键工具与调试命令
7. 常见问题
Q1:为什么数据链路层需要 MAC 地址?
Q2:物理层不关心数据内容,如何保证传输?
Q3:交换机工作在哪些层?
8. 总结
TCP/IP 五层协议模型是为了教学和理论分析而提出的分层框架,它结合了 TCP/IP 四层模型的实用性和 OSI 七层模型的细节性,更清晰地描述数据从应用程序到物理介质的完整传输过程。以下是五层模型的详细解析:
1. 五层模型结构
层级 | 核心功能 | 关键协议/设备 | 数据单元 |
---|---|---|---|
应用层 | 处理应用程序逻辑和用户数据格式 | HTTP, FTP, DNS, SMTP, MQTT | 消息(Message) |
传输层 | 端到端通信控制(可靠性、流量控制) | TCP, UDP, SCTP | 段(Segment) |
网络层 | 全局寻址和路由(跨网络传输) | IP, ICMP, BGP, OSPF, ARP | 包(Packet) |
数据链路层 | 本地网络帧传输(MAC地址、错误检测) | Ethernet, Wi-Fi, PPP, VLAN | 帧(Frame) |
物理层 | 物理介质传输(比特流) | 电缆(双绞线、光纤)、无线信号 | 比特(Bit) |
2. 各层核心功能与协议
(1) 应用层(Application Layer)
-
功能:
-
定义应用程序间的通信规则(如 HTTP 定义网页请求格式)。
-
数据编码、加密、压缩(如 HTTPS 使用 TLS 加密)。
-
-
典型协议:
-
HTTP/HTTPS:网页浏览(端口 80/443)。
-
DNS:域名解析(端口 53)。
-
FTP:文件传输(端口 20/21)。
-
SMTP:邮件发送(端口 25)。
-
MQTT:物联网轻量级消息协议(端口 1883)。
-
(2) 传输层(Transport Layer)
-
功能:
-
端到端连接管理:通过端口号标识应用进程(如 80 端口对应 HTTP)。
-
可靠性保障(仅 TCP):丢包重传、流量控制、拥塞控制。
-
多路复用/分解:多个应用共享同一网络连接。
-
-
典型协议:
-
TCP:面向连接、可靠传输(如文件下载)。
-
UDP:无连接、高效传输(如视频流)。
-
SCTP:多路径传输(用于电话信令)。
-
(3) 网络层(Network Layer)
-
功能:
-
IP 寻址:为每台设备分配唯一 IP 地址(IPv4: 32位,IPv6: 128位)。
-
路由选择:路由器根据路由表转发数据包(如 BGP 协议决定互联网骨干路径)。
-
分片与重组:根据网络 MTU(最大传输单元)拆分/重组数据包。
-
-
典型协议:
-
IP:数据包寻址和路由(IPv4/IPv6)。
-
ICMP:网络状态反馈(如
ping
命令)。 -
BGP/OSPF:动态路由协议。
-
ARP:IP 地址到 MAC 地址的解析(局域网内)。
-
(4) 数据链路层(Data Link Layer)
-
功能:
-
帧封装:添加帧头(源/目的 MAC 地址)和帧尾(CRC 校验)。
-
介质访问控制:解决多设备共享信道冲突(如 CSMA/CD 用于以太网)。
-
局域网通信:通过交换机基于 MAC 地址转发帧。
-
-
典型协议与技术:
-
Ethernet(IEEE 802.3):有线局域网标准(如 1000BASE-T)。
-
Wi-Fi(IEEE 802.11):无线局域网标准(如 802.11ac)。
-
VLAN:虚拟局域网划分(隔离广播域)。
-
PPP:点对点协议(如家庭宽带拨号)。
-
(5) 物理层(Physical Layer)
-
功能:
-
比特流传输:将数据转换为电信号、光信号或电磁波。
-
物理介质定义:规范接口形状、电压、光波长等(如 RJ45 网口、光纤接口)。
-
-
典型技术与设备:
-
双绞线(Cat5e/Cat6):传输电信号(最长 100 米)。
-
光纤:长距离、高速传输(单模/多模)。
-
无线射频:Wi-Fi(2.4GHz/5GHz 频段)、蓝牙。
-
中继器/集线器:物理层信号放大(已逐渐被交换机取代)。
-
3.TCPvsUDP
以下是 TCP 和 UDP 的核心区别对比表:
对比项 | TCP(传输控制协议) | UDP(用户数据报协议) |
---|---|---|
连接方式 | 面向连接(需三次握手建立连接) | 无连接(直接发送数据) |
可靠性 | 可靠传输(确认应答、重传、流量控制、拥塞控制) | 不可靠传输(无确认、不保证数据到达) |
传输单位 | 面向字节流 | 面向数据包 |
通信模式 | 全双工 | 全双工 |
数据顺序 | 保证数据按发送顺序到达 | 不保证顺序,可能乱序 |
传输速度 | 较慢(需维护连接和可靠性机制) | 较快(无连接和复杂控制) |
头部大小 | 较大(最小 20 字节,包含序列号、确认号等控制信息) | 较小(固定 8 字节,仅含源/目的端口和长度) |
流量控制 | 支持(滑动窗口机制) | 不支持 |
拥塞控制 | 支持(慢启动、拥塞避免等算法) | 不支持 |
适用场景 | 要求可靠传输的应用(如网页、文件传输、邮件) | 实时性优先的应用(如视频、语音、在线游戏) |
典型应用协议 | HTTP、HTTPS、FTP、SMTP、SSH | DNS、DHCP、SNMP、QUIC(HTTP/3)、实时流媒体 |
4. 数据封装与解封装过程
以访问网页(HTTP)为例,说明数据在五层模型中的流动:
-
应用层:浏览器生成 HTTP 请求(
GET /index.html
)。 -
传输层:添加 TCP 头部(源端口 5000,目的端口 80,序列号等)。
-
网络层:添加 IP 头部(源 IP 192.168.1.100,目的 IP 93.184.216.34)。
-
数据链路层:添加以太网帧头(源 MAC 00:1A:2B:3C:4D:5E,目的 MAC 路由器 MAC)。
-
物理层:转换为电信号,通过网线传输。
接收端反向解析:
物理层 → 数据链路层(校验帧) → 网络层(路由判断) → 传输层(端口分发) → 应用层(处理 HTTP 请求)。
5. 五层模型 vs 四层模型
对比项 | TCP/IP 四层模型 | 五层模型 |
---|---|---|
分层目的 | 贴近实际协议实现 | 理论教学,兼容 OSI 模型细节 |
底层划分 | 合并物理层和数据链路层为“网络接口层” | 明确分离物理层和数据链路层 |
适用场景 | 工程开发(如网络编程) | 网络原理教学、设备厂商文档 |
协议归属 | ARP 属于网络接口层 | ARP 属于网络层(更符合逻辑) |
6. 关键工具与调试命令
-
应用层:
-
curl
、wget
(模拟 HTTP 请求)。 -
dig
、nslookup
(DNS 查询)。
-
-
传输层:
-
netstat
、ss
(查看端口状态)。 -
tcpdump
、Wireshark
(抓包分析)。
-
-
网络层:
-
ping
(ICMP 测试连通性)。 -
traceroute
(追踪路由路径)。
-
-
数据链路层:
-
arp
(查看/修改 ARP 缓存)。 -
ethtool
(查看网卡配置)。
-
-
物理层:
-
网络测线仪(检测网线连通性)。
-
光功率计(测量光纤信号强度)。
-
7. 常见问题
Q1:为什么数据链路层需要 MAC 地址?
-
答:IP 地址用于全局寻址(网络层),而 MAC 地址用于本地网络(数据链路层)的直接设备通信。数据包跨网络传输时,IP 地址不变,但每跳的 MAC 地址会更新(如从主机到路由器再到下一跳)。
Q2:物理层不关心数据内容,如何保证传输?
-
答:物理层仅负责比特流的透明传输(如调制解调器将数字信号转为模拟信号),错误检测由数据链路层的 CRC 校验完成。
Q3:交换机工作在哪些层?
-
答:
-
二层交换机:数据链路层(基于 MAC 地址转发)。
-
三层交换机:网络层(具备路由功能,基于 IP 地址转发)。
-
8. 总结
五层模型通过明确分离 物理层 和 数据链路层,更清晰地描述了数据从应用程序到物理介质的完整传输过程。理解各层的核心协议(如 HTTP、TCP、IP、Ethernet)和功能(寻址、路由、错误检测、物理信号转换),是掌握网络通信原理、进行网络故障排查和优化的基础。实际工程中,开发者通常关注上三层(应用层、传输层、网络层),而网络工程师需深入理解下两层(数据链路层、物理层)。
相关文章:
TCP/IP五层协议
目录 1. 五层模型结构 2. 各层核心功能与协议 (1) 应用层(Application Layer) (2) 传输层(Transport Layer) (3) 网络层(Network Layer) (4) 数据链路层(Data Link Layer) (5…...
解决Opencv:TypeError: points is not a numerical tuple
最近刚开始学习Opencv,跟着b站阿婆主敲代码的时候,又又又又,又出现了bug,下面听我娓娓道来~~ --------------------------------------------------------------------------(手动分界线) 首先描述一下当时…...
LLM-大语言模型浅谈
目录 核心定义 典型代表 核心原理 用途 优势与局限 未来发展方向 LLM(Large Language Model)大语言模型,指通过海量文本数据训练 能够理解和生成人类语言的深度学习模型。 核心定义 一种基于深度神经网络(如Transformer架…...
LeetCode第132题_分割回文串II
LeetCode 第132题:分割回文串 II 题目描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。 返回符合要求的 最少分割次数 。 难度 困难 题目链接 点击在LeetCode中查看题目 示例 示例 1: 输入…...
【Leetcode 每日一题】368. 最大整除子集
问题背景 给你一个由 无重复 正整数组成的集合 n u m s nums nums,请你找出并返回其中最大的整除子集 a n s w e r answer answer,子集中每一元素对 ( a n s w e r [ i ] , a n s w e r [ j ] ) (answer[i], answer[j]) (answer[i],answer[j]) 都应当…...
python三大库之---pandas(二)
python三大库之—pandas(二) 文章目录 python三大库之---pandas(二)六,函数6.1、常用的统计学函数6.2重置索引 六,函数 6.1、常用的统计学函数 函数名称描述说明count()统计某个非空值的数量sum()求和mea…...
消防车调度问题:基于Matlab的优化求解
摘要 本文聚焦消防车调度问题,介绍如何将其转化为数学模型并利用Matlab进行求解。通过建立损失矩阵,以总损失最小为目标构建线性规划模型,并针对模型求解结果可能出现的不合理情况,增加消防车到达先后次序约束条件。 关键词&…...
批量将 Markdown 转换为 Word/PDF 等其它格式
在工作当中,我们经常会接触到 Markdown 格式的文档。这是一种非常方便我们做记录,做笔记的一种格式文档。现在很多互联网编辑器都是支持 Markdown 格式的,编辑起文章来更加的方便简介。有时候,我们会碰到需要将 Markdown 格式的文…...
C语言学习笔记-9
九、结构体 构造类型: 不是基本类型的数据结构也不是指针类型, 它是若干个相同或不同类型的数据构成的集合 结构体类型: 结构体是一种构造类型的数据结构,是一种或多种基本类型或构造类型的数据的集合。 1.结构体类型定义 定…...
LLM 部署(1)——LLM 部署框架对比
1 Ollama 一个专注于简化大型语言模型(LLM)在本地部署和运行的开源框架。 简化部署:Ollama使用Docker容器技术来简化LLM的部署过程 捆绑模型组件:Ollama将模型权重、配置和数据捆绑到一个包中,称为Modelfile…...
Qt坐标体系,控件坐标的设置
Qt窗口坐标体系---平面直角坐标系(笛卡尔坐标系) 以左上角为0,0坐标原点 给Qt的某个控件,设置位置,就需要指定坐标,对应这个控件来说,坐标系原点就是相对于父控件的 如: QPushButt…...
大数据系列之:Kerberos
大数据系列之:Kerberos 基本概念工作流程安全特性应用场景总结加密原理Kerberos认证流程更改您的密码授予账户访问权限票证管理Kerberos 票据属性使用 kinit 获取票据使用 klist 查看票据使用 kdestroy 销毁票据.k5identity 文件描述 Kerberos 是一种网络认证协议&a…...
【力扣hot100题】(059)单词搜索
这道题给我最大的启示就是不要什么时候都用哈希表,偶尔也要用用数组…… 是这样,一开始还沾沾自喜的以为知道了哈希表的自己一定可以比以前傻傻用数组的我要节省空间,结果发现哈希表不能存储pair用编号存储会时间超限用数组只需要7*7的空间。…...
Java全栈面试宝典:锁机制与Spring生命周期深度解析
目录 一、synchronized锁状态机全解析 🔥 问题5:synchronized四态转换与性能对比 锁状态转换流程图 锁特性对比表 CAS操作示例 二、ReentrantLock与synchronized深度对比 🔥 问题6:两大锁机制对比 核心差异矩阵 生产级Re…...
15分钟完成Odoo18.0安装与基本配置
序言:时间是我们最宝贵的财富,珍惜手上的每个时分 Odoo18发行已半年有余,不少企业也已上至生产环境进行使用了。今天我们来看看 Odoo18的安装。 本次安装我们介绍通过阿里云服务器安装Odoo18社区版。 1.服务器准备 1.1操作系统 操作系统使用ubuntu22.04ÿ…...
pom导包成功,但是就是无法使用相关类,同时报错:Library:Maven ‘xxx‘ has broken path
开发环境:Intellij 2023 一、问题记录 在maven工程的pom文件导入如下某一依赖(JGit)。没有显示导包的错误,同时在maven仓库里面找到对应的包是正常下载到相应jar的。 但是就是无法引入相关的类。打开Project Structure,在Dependencies中发现…...
Cocos Creator 进行 Web 发布后,目录结构解析
在使用 Cocos Creator 进行 Web 发布后,生成的目录结构通常包含以下内容,下面为你详细介绍: 1. index.html 这是 Web 项目的入口 HTML 文件,它会加载所需的 JavaScript 文件和资源,从而启动游戏或应用程序。示例代码…...
Linux-磁盘管理
文章目录 1、查看磁盘和文件(夹)使用情况2、磁盘分区1)查看分区情况2)MBR分区3)GPT分区 3、磁盘分区格式化4、磁盘挂载1)挂载2)卸载挂载点3)永久挂载 1、查看磁盘和文件(…...
P1149 [NOIP 2008 提高组] 火柴棒等式(DFS)
题目描述 给你 n 根火柴棍,你可以拼出多少个形如 ABC 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。用火柴棍拼数字 0∼9 的拼法如图所示: 注意: 加号与等号…...
机器学习新范式:Kubernetes + Kubeflow,解锁模型训练与部署的高效密码
一、Kubernetes在机器学习模型训练与部署中的作用 Kubernetes作为一个强大的容器编排平台,为机器学习模型的训练与部署提供了以下核心支持: 分布式训练支持:Kubernetes能够自动化部署和管理PyTorch等机器学习框架的分布式训练任务。通过利用…...
testflight上架ipa包-只有ipa包的情况下如何修改签名信息为苹果开发者账户对应的信息-ipa苹果包如何手动改签或者第三方工具改签-优雅草卓伊凡
testflight上架ipa包-只有ipa包的情况下如何修改签名信息为苹果开发者账户对应的信息-ipa苹果包如何手动改签或者第三方工具改签-优雅草卓伊凡 直接修改苹果IPA包的签名和打包信息并不是一个推荐的常规做法,因为这可能违反苹果的开发者条款,并且可能导致…...
SpringSecurity框架入门
简介 官网 Spring Security是一个Java框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念,可以轻松地集成到任何基于Spring的应用程序中。它支持多种…...
AIDD-人工智能药物设计-双扩散模型结合多目标优化策略助力3D小分子药物设计
Adv. Sci. | 双扩散模型结合多目标优化策略助力3D小分子药物设计 药物发现中,如何精准且高效地设计具有理想物理化学性质的潜在药物分子,对当前的研究水平来说仍然是一项重大挑战。近年来,基于深度学习的全新分子生成(de novo molecular generation)方法取得了显著进展,…...
Python面向对象编程 - 接口隔离原则(ISP)
1. 原则定义 接口隔离原则(Interface Segregation Principle, ISP) 是SOLID原则中的"I",核心思想是: 客户端不应该被迫依赖它们不使用的接口 即:多个特定功能的接口比一个通用接口更好 2. 核心思想 将臃肿的接口拆分为更小、更具…...
mac安装浏览器闪退处理
安装 Chrome或edge后打开浏览器出现闪退,是因为权限不够。 以下是针对edge的处理方法。 sudo chown -R $(whoami) ~/Library/Application\ Support/Microsoft\ Edge sudo chmod -R 755 ~/Library/Application\ Support/Microsoft\ Edge 原因分析: 在…...
408 计算机网络 知识点记忆(5)
前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 往期内容 408 计算机网络 知识…...
Java面试黄金宝典38
1. TIME_WAIT 和 CLOSE_WAIT 的区别 定义 TIME_WAIT:是主动发起关闭连接操作的一方,在发送最后一个 ACK 确认包之后进入的状态。此状态存在的意义在于确保对端能收到最后一个 ACK 包,同时让网络中可能残留的旧数据包自然消逝,防止其干扰后续相同四元组(源 IP、源端口、目…...
【算法】筛质数
目录 埃氏筛法算法原理代码 欧拉筛法算法原理代码 埃氏筛法 算法原理 算法思想就像"筛子"一样,把合数筛掉,剩下的就是质数: 从2开始,依次检查每个数如果当前数未被标记为合数,它就是质数然后把这个质数的…...
【IDEA】✈️自定义模板,自动生成类和方法注释
💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥 🏆本篇文章阅读大约耗时三分钟。 ⛳️motto:不积跬步、无以千里 📋📋📋本文目录如下:🎁🎁&a…...
笔试专题(六)
文章目录 最长无重复子数组(滑动窗口)题解代码 重排字符串(贪心 构造)题解代码 牛牛冲钻五(模拟)题解代码 最长无重复子数组(滑动窗口) 题目链接 题解 1. 滑动窗口 2. 什么时候…...
【算法实践】跳跃游戏——计算到达终点的最小跳数
问题描述 给定一个非负数数组 arr[],每个元素表示从该位置最多可向前跳跃的步数。 示例: 若 arr[i] 3,则可以从位置 i 跳跃到 i1、i2 或 i3。若 arr[i] 0,则无法从该位置向前跳跃。 任务:找到从数组第一个位置移动…...
sklearn的Pipeline
Pipeline类 介绍:Pipeline 可以将多个数据处理步骤和机器学习模型组合成一个序列,其中每个步骤都是一个变换器(Transformer)或者估计器(Estimator),并且Pipeline中的最后一个必须为估计器,其它的必须为变换器,如果Pipeline中的估计器为为分类器则整个Pipeline就作为分…...
Unity3D仿星露谷物语开发34之单击Drop项目
1、目标 当在道具栏中选中一个Item时,点击地面就可以实现Item的drop操作,每点击一次就drop一次,直到道具栏中Item数量不够。 这样的好处:避免每次Drop都从道具栏中拖拉Item,通过点击这种操作可以更加高效。 方法&am…...
每日一题(小白)回溯篇4
深度优先搜索题:找到最长的路径,计算这样的路径有多少条(使用回溯) 分析题意可以得知,每次向前后左右走一步,直至走完16步就算一条走通路径。要求条件是不能超出4*4的范围,不能重复之前的路径。…...
Day16——路由2
路由独有的两个生命周期钩子 作用:用于捕获路由组件的激活状态 具体名字: activated 路由组件被激活时触发 deactivated 路由组件失活时触发 现在在缓存路由组件的基础上,想要使h2中的文字透明度不断变化,在切换到别的组件时销毁控制文字不…...
iproute2 工具集使用详解
目录 一、iproute2 核心命令:ip二、常用功能详解1. 管理网络接口(link 对象)2. 管理 IP 地址(address 对象)3. 管理路由表(route 对象)4. 管理 ARP 和邻居缓存(neigh 对象࿰…...
C++学习之套接字并发服务器
目录 1.昨天套接字服务器的弊端 2.如何通过多进程方式实现服务器并发 3.多进程服务器-1 4.多进程服务器-2 5.多进程版程序-回收子进程被信号中断的处理 6.多线程版TCP服务处理思路 7.多线程并发服务器编写 8.为什么不能把文件描述符地址传到子线程中 9.多线程程序测试 …...
MCP项目开发-一个简单的RAG示例
MCP项目开发-一个简单的RAG示例 前言 前言 客户端是基于官网的例子改的,模型改成了openai库连接仅仅使用基础的RAG流程作为一个演示,包含了以下步骤 query改写搜索:使用google serper重排序:使用硅基流动的api 大模型api也使用…...
Windows安装ssh服务
使用管理员权限打开Windows PowerShell Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0启动服务 Start-Service sshd 设置开机自启 Set-Service sshd -StartupType Automatic允许22端口 New-NetFirewallRule -Name “SSH” -DisplayName “SSH” -Enabled Tr…...
从零实现本地大模型RAG部署
1. RAG概念 RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合信息检索与大型语言模型(大模型)的技术。从外部知识库(如文档、数据库或网页)中实时检索相关信息,并将其…...
什么是ThreadLocal
ThreadLocal 是 Java 提供的一个工具类,它为每一个使用该变量的线程都提供了一个独立的变量副本。换句话说:每个线程都有自己的本地变量副本、互不干扰。它不是用来共享数据的,而是用来隔离数据的。 一、为什么需要 ThreadLocal?…...
MySQL-SQL-DQL语句、DQL基本查询、DQL条件查询、DQL分组查询、聚合函数、DQL排序查询、DQL分页查询
一. DQL DQL:Data Query Language(数据查询语言),用来查询数据库表中的记录。 关键字:SELETE -- DQL 完整语法select字段列表 from表名列表 where条件列表 group by分组字段列表 having分组后条件列表 order by排序字段列表 limit分页参数 …...
vue2 vue3 响应式差异
vue2 响应式原理看这 链接: link 总结: object.defineproperty()是对属性的劫持,对属性劫持有两大缺陷 1. 需要遍历对象的所有属性,深层属性需递归,存在效率问题 2. 后添加的属性,无法获得响应式,因为劫持…...
常见NLP模型发展脉络:从传统方法到大语言模型
自然语言处理作为人工智能领域的重要分支,经历了从传统统计方法到深度学习的巨大飞跃。本文将带你梳理NLP模型的发展脉络,回顾那些推动技术进步的重要里程碑。 一、统计学习阶段(1990s-2010s初) 早期的NLP模型主要基于统计方法&…...
Bert论文解析
文章目录 BERT:用于语言理解的深度双向转换器的预训练一、摘要三、BERT介绍BERT及其详细实现答疑:为什么没有标注的数据可以用来预训练模型?1. 掩码语言模型(Masked Language Model, MLM)2. 下一句预测(Nex…...
【数学】勒让德定理(legendres-formula)详解
勒让德定理(Legendre’s Formula)详解 这段代码使用的数学原理是勒让德定理,它是计算质数p在n!的质因数分解中指数的核心方法。 一、定理内容 对于任意质数p和正整数n,p在n!的质因数分解中的指数(即n!能被p整除的最…...
时空联合规划算法
本文主要讲解时空时空联合规划算法。 文章目录 前言一、时空联合规划基本概念1.1 EM Planner算法求解过程1.2 时空联合规划算法求解过程二、基于搜索的规划方法2.1 构建三维时空联合规划地图2.2 基于Hybrid A*的时空联合规划二、基于迭代搜索的规划方法2.1 这段时间更新中2.2 这…...
如何在idea中新建一个项目
Java通常展现的方式就是项目,但是在不熟悉idea的情况下,我们应该如何创建一个项目呢? 第一步:点击File-->New-->Project 第二步:选择 Empty Project 第三步:点击File-->找到Project Structure--&…...
设计模式简述(十三)适配器模式
适配器模式 描述基本使用使用关于适配器关联不兼容类的方式如果原有抽象层是抽象类若原有抽象是接口使用 描述 适配器模式常用于系统已经上限稳定运行,但现有需求需要将两个不匹配的类放到一起工作时使用。 也就是说这是一个迭代阶段使用的模式。 这种模式&#x…...
功耗日志抓取需求
最近罗列了一些功耗分析需要的常见日志: 测试功耗前: adb shell dumpsys batterystats --reset adb shell dumpsys batterystats --enable full-wake-history 测试功耗后,使用脚本导出如下功耗日志: 脚本 chmod x collect_logs.s…...