2019Android 网络编程总结篇,你想要的三次握手和四次握手

网络编程面试题 阅读详情

对于这些专题的详解,专门做了一个983页的PDF版本,如下

更多完整项目下载。未完待续。源码。图文知识后续上传github。
可以点击关于我联系我获取

1.网络分层
OSI七层模型

OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。

2.TCP/IP五层模型

TCP/IP五层模型:应用层(Application)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。

3.三次握手与四次挥手

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”

第一次挥手:客户端发送报文告诉服务器没有数据要发送了
第二次挥手:服务端收到,再发送给客户端告诉它我收到了
第三次挥手:服务端向客户端发送报文,请求关闭连接
第四次挥手:客户端收到关闭连接的请求,向服务端发送报文,服务端关闭连接

4.TCP为什么三次握手不是两次握手,为什么两次握手不安全

为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤

如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认

5.为什么TCP是可靠的,UDP早不可靠的?为什么UDP比TCP快?

TCP/IP协议拥有三次握手双向机制,这一机制保证校验了数据,保证了他的可靠性。
UDP就没有了,udp信息发出后,不验证是否到达对方,所以不可靠。

6.http协议

http协议是一个基于请求与响应模式的无连接,无状态,应用层的协议,支持c/s模式,简单快速,灵活
简单快速:协议简单,通信速度快
灵活:允许传输任意类型的数据对象,由Content-Type标记
无连接:每次处理一个请求,处理完成后既断开
无状态:对事务处理没有记忆能力

http有两种报文:请求报文和响应报文
请求报文由请求行,请求报头,和请求数据组成
请求行:抓包第一行,包括请求方法,url和http版本
请求报头:指的就是题目中“里面的协议头部”
请求数据:指post方式提交的表单数据
响应报文由状态行,响应报头,响应正文组成
状态行:状态码
响应报头:同请求报头
响应正文:服务器返回的资源数据

接下来是http头部,既请求报头和响应报头,统称消息报头,消息报头可以分为通用报头,请求报头,响应报头,实体报头等

通用报头和实体报头既可以出现在请求报头中,也可以出现在响应报头中,
通用报头包含的字段如
:Date Connection Cache-Control,实体报头中有Content-Type Content-Length Content-Language Content-Encoding.
请求报头中包含的字段有:
Host,User-Agent,Accept-Encoding,Accept-Language,Connection
响应报头包含的字段:
Location,Server

7.http的get和post的区别

http是应用层的协议,底层基于TCP/IP协议,所以本质上,get和post请求都是TCP请求。所以二者的区别都是体现在应用层上(HTTP的规定和浏览器/服务器的限制)

1. 参数的传输方式:GET参数通过URL传递,POST放在Request body中。
2. GET请求在URL中传送的参数是有长度限制的,而POST没有。
3. 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。不过要注意,并不是所有浏览器都会在POST中发送两次包,比如火狐
4. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
5. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
6. GET请求只能进行url编码,而POST支持多种编码方式。
7. GET在浏览器回退时是无害的,而POST会再次提交请求。
8. GET产生的URL地址可以被Bookmark,而POST不可以。
9. GET请求会被浏览器主动cache,而POST不会,除非手动设置。

8.socket和http的区别:

Http协议:简单的对象访问协议,对应于应用层。Http协议是基于TCP链接的。
tcp协议:对应于传输层
ip协议:对应与网络层
TCP/IP是传输层协议,主要解决数据如何在网络中传输;而Http是应用层协议,主要解决如何包装数据。

Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
Http连接:http连接就是所谓的短连接,及客户端向服务器发送一次请求,服务器端相应后连接即会断掉。
socket连接: socket连接及时所谓的长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该链接已释放网络资源。所以当一个socket连接中没有数据的传输,那么为了位置连续的连接需要发送心跳消息,具体心跳消息格式是开发者自己定义的。

9.TCP与UDP区别总结:

1、 TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、 TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
3、 TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、 TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、 TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

10.https

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义了数据如何进行包装,在HTTP跟TCP中间加多了一层加密层TLS/SSL,SSL是个加密套件,负责对HTTP的数据进行加密。TLS是SSL的升级版。现在提到HTTPS,加密套件基本指的是TLS。

传输加密的流程:http是应用层将数据直接给到TCP进行传输,https是应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输

HTTPS是如何加密数据的:
一般来说,加密分为对称加密、非对称加密

对称加密:
对称加密的意思就是,加密数据用的密钥,跟解密数据用的密钥是一样的。
对称加密的优点在于加密、解密效率通常比较高。缺点在于,数据发送方、数据接收方需要协商、共享同一把密钥,并确保密钥不泄露给其他人。传输过程中容易被截获。

网上一个很形象的例子:假如现在小客与小服要进行一次私密的对话,他们不希望这次对话内容被其他外人知道。可是,我们平时的数据传输过程中又是明文传输的,万一被某个黑客把他们的对话内容给窃取了,那就难受了。

为了解决这个问题,小服这家伙想到了一个方法来加密数据,让黑客看不到具体的内容。该方法是这样子的:在每次数据传输之前,小服会先传输小客一把密钥,然后小服在之后给小客发消息的过程中,会用这把密钥对这些消息进行加密。小客在收到这些消息后,会用之前小服给的那把密钥对这些消息进行解密,这样,小客就能得到密文里面真正的数据了。如果小客要给小服发消息,也同样用这把密钥来对消息进行加密,小服收到后也用这把密钥进行解密。 这样,就保证了数据传输的安全性。

非对称加密
非对称加密的意思就是,加密数据用的密钥(公钥),跟解密数据用的密钥(私钥)是不一样的。

网上一个很形象的例子:小服还是挺聪明的,得意了一会之后,小服意识到了密钥会被截取这个问题。倔强的小服又想到了另外一种方法:用非对称加密的方法来加密数据。该方法是这样的:小服和小客都拥有两把钥匙,一把钥匙的公开的(全世界都知道也没关系),称之为公钥;而另一把钥匙是保密(也就是只有自己才知道),称之为私钥。

并且,用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密。所以在传输数据的过程中,小服在给小客传输数据的过程中,会用小客给他的公钥进行加密,然后小客收到后,再用自己的私钥进行解密。小客给小服发消息的时候,也一样会用小服给他的公钥进行加密,然后小服再用自己的私钥进行解密。 这样,数据就能安全着到达双方。是什么原因导致非对称加密这种方法的不安全性呢?它和对称加密方法的不安全性不同。非对称加密之所以不安全,是因为小客收到了公钥之后,无法确定这把公钥是否真的是小服。

解决的办法就是数字证书:小服再给小客发公钥的过程中,会把公钥以及小服的个人信息通过Hash算法生成消息摘要,为了防止摘要被人调换,小服还会用CA提供的私钥对消息摘要进行加密来形成数字签名,当小客拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密得到消息摘要,然后对数字证书里面小服的公钥和个人信息进行Hash得到另一份消息摘要,然后把两份消息摘要进行对比,如果一样,则证明这些东西确实是小服的,否则就不是。

11.加密算法
11.1.对称加密算法

Data Encryption Standard(DES)
DES 是一种典型的块加密方法:将固定长度的明文通过一系列复杂的操作变成同样长度的密文,块的长度为64位。同时,DES 使用的密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。 DES 的密钥表面上是64位的,实际有效密钥长度为56位,其余8位可以用于奇偶校验。
DES 现在已经不被视为一种安全的加密算法,主要原因是它使用的56位密钥过短。
为了提供实用所需的安全性,可以使用 DES 的派生算法 3DES 来进行加密 (虽然3DES 也存在理论上的攻击方法)。

Advanced Encryption Standard(AES)
AES 在密码学中又称 Rijndael 加密法,用来替代原先的 DES,已经被多方分析且广泛使用。

DES与AES的比较
自DES 算法公诸于世以来,学术界围绕它的安全性等方面进行了研究并展开了激烈的争论。在技术上,对DES的批评主要集中在以下几个方面:

  • 作为分组密码,DES 的加密单位仅有64 位二进制,这对于数据传输来说太小,因为每个分组仅含8 个字符,而且其中某些位还要用于奇偶校验或其他通讯开销。
  • DES 的密钥的位数太短,只有56 比特,而且各次迭代中使用的密钥是递推产生的,这种相关必然降低密码体制的安全性,在现有技术下用穷举法寻找密钥已趋于可行。
  • DES 不能对抗差分和线性密码分析。
  • DES 用户实际使用的密钥长度为56bit,理论上最大加密强度为256。DES 算法要提高加密强度(例如增加密钥长度),则系统开销呈指数增长。除采用提高硬件功能和增加并行处理功能外,从算法本身和软件技术方面都无法提高DES 算法的加密强度。
11.2非对称加密算法

RSA
1977年由 MIT 的 Ron Rivest、Adi Shamir 和 Leonard Adleman 一起提出,以他们三人姓氏开头字母命名,是一种获得广泛使用的非对称加密算法。
对极大整数做因数分解的难度 (The Factoring Problem) 决定了 RSA 算法的可靠性。换言之,对一个极大整数做因数分解愈困难,RSA 算法就愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降。目前看来找到这样的算法的可能性非常小。

DES与RSA的比较
RSA算法的密钥很长,具有较好的安全性,但加密的计算量很大,加密速度较慢限制了其应用范围。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。

采用DES与RSA相结合的应用,使它们的优缺点正好互补,即DES加密速度快,适合加密较长的报文,可用其加密明文;RSA加密速度慢,安全性好,应用于DES 密钥的加密,可解决DES 密钥分配的问题。

目前这种RSA和DES结合的方法已成为EMAIL保密通信标准。

12.Volley
1、Volley的特点

Volley是谷歌大会上推出的网络通信框架(2.3之前使用HttpClient,之后使用HttpUrlConnection),它既可以访问网络获取数据,也可以加载图片,并且在性能方面进行了大幅度的调整,它的设计目的就是适合进行数据量不大但通信频繁的网络操作,而对于大数据量的操作,比如文件下载,表现很糟糕,因为volley处理http返回的默认实现是BasicNetwork,它会把返回的流全部导入内存中,下载大文件会发生内存溢出

2、Volley执行的过程:

默认情况下,Volley中开启四个网络调度线程和一个缓存调度线程,首先请求会加入缓存队列,,缓存调度线程从缓存队列中取出线程,如果找到该请求的缓存就直接读取该缓存并解析,然后回调给主线程,如果没有找到缓存的响应,则将这个请求加入网络队列,然后网络调度线程会轮询取出网络队列中的请求,发起http请求,解析响应并将响应存入缓存,回调给主线程

3、Volley为什么不适合下载上传大文件?为什么适合数据量小的频率高的请求?
  • volley基于请求队列,Volley的网络请求线程池默认大小为4。意味着可以并发进行4个请求,大于4个,会排在队列中。并发量小所以适合数据量下频率高的请求
  • 因为Volley下载文件会将流存入内存中(是一个小于4k的缓存池),大文件会导致内存溢出,所以不能下载大文件,不能上传大文件的原因和1中差不多,设想你上传了四个大文件,同时占用了volley的四个线程,导致其他网络请求都阻塞在队列中,造成反应慢的现象
13.OKHttp
1、OKHttp的特点
  • 相较于Volley,它的最大并发量为64
  • 使用连接池技术,支持5个并发的socket连接默认keepAlive时间为5分钟,解决TCP握手和挥手的效率问题,减少握手次数
  • 支持Gzip压缩,且操作对用户透明,可以通过header设置,在发起请求的时候自动加入header,Accept-Encoding: gzip,而我们的服务器返回的时候header中有Content-Encoding: gzip
  • 利用响应缓存来避免重复的网络请求
  • 很方便的添加拦截器,通常情况下,拦截器用来添加,移除,转换请求和响应的头部信息,比如添加公参等
  • 请求失败,自动重连,发生异常时重连,看源码调用recover方法重连了一次
  • 支持SPDY协议(SPDY是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩。谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%)
  • 使用Okio来简化数据的访问与存储,提高性能
2、 OkHttp的缺点
  • 消息回来需要切到主线程,主线程要自己去写。
  • 调用比较复杂,需要自己进行封装。
  • 缓存失效:网络请求时一般都会获取手机的一些硬件或网络信息,比如使用的网络环境。同时为了信息传输的安全性,可能还会对请求进行加密。在这些情况下OkHttp的缓存系统就会失效了,导致用户在无网络情况下不能访问缓存。
3、 OkHttp框架中都用到了哪些设计模式
  • 最明显的Builder设计模式,如构建对象OkHttpClient,还有单利模式
  • 工厂方法模式,如源码中的接口Call
  • 观察者模式如EventListener,监听请求和响应
  • 策略模式
  • 责任链模式,如拦截器
14.Retrofit

Retrofit底层是基于OkHttp实现的,与其他网络框架不同的是,它更多使用运行时注解的方式提供功能

1、原理

通过java接口以及注解来描述网络请求,并用动态代理的方式生成网络请求的request,然后通过client调用相应的网络框架(默认okhttp)去发起网络请求,并将返回的response通过converterFactorty转换成相应的数据model,最后通过calladapter转换成其他数据方式(如rxjava Observable)

2、Retrofit流程

(1) 通过解析 网络请求接口的注解 配置 网络请求参数
(2) 通过 动态代理 生成 网络请求对象
(3) 通过 网络请求适配器 将 网络请求对象 进行平台适配
(4) 通过 网络请求执行器 发送网络请求
(5) 通过 数据转换器 解析服务器返回的数据
(6) 通过 回调执行器 切换线程(子线程 ->>主线程)
(7) 用户在主线程处理返回结果

3、 Retrofit优点
  • 可以配置不同HTTP client来实现网络请求,如okhttp、httpclient等;
  • 请求的方法参数注解都可以定制;
  • 支持同步、异步和RxJava;
  • 超级解耦;
  • 可以配置不同的反序列化工具来解析数据,如json、xml等
  • 框架使用了很多设计模式

(更多完整项目下载。未完待续。源码。图文知识后续上传github。)
领取完整版PDF可以点击关于我联系我获取

常见网络编程面试题整理 1、TCP和UDP的区别: 阅读详情

相关推荐

Android网络编程(八)源码解析OkHttp后篇[复用连接池]

上一篇我们根据OkHttp的源码讲解了OkHttp的请求网络流程,这一讲我们接着根据源码了解OkHttp的复用连接池。

Android进阶三部曲 - 刘望舒 1万+

常见网络编程面试题以及答案(网络面试30题)

1.常说的四层、五层、七层网络模型有什么区别?2.TCP/IP 网络模型中的五层模型,每层分别有什么用?3.介绍一下 HTTP 协议4.GET 和 POST有什么区别?5.PING 的作用?6.常见的 HTTP 状态码有哪些7.HTTP1.1 和 HTTP1.0 的区别有哪些?8.HTTPS 和 HTTP 的区别是什么?9.HTTP2 和 HTTP1.1 的区别是什么?10.HTTP3 和 HTTP2 的区别是什么?11.TCP 建立连......

日积月累,水滴石穿 1万+

Android网络编程-TCP/IP协议

在Android网络编程-计算机网络基础一文中得知,IP协议属于网络层,TCP、UDP协议属于传输层。 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态、无连接、不可靠的服务。 TCP协议是面向连接的传输层协议,提供一种面向连接的、可靠的字节流服务。 UDP协议是面向无连接的传输层协议,提供面向事务的简单不可靠信息传输服务。 数据报文 在不同层传输的数据单位名称不同,在网络层传...

weixin_45365889的博客 1242

网络编程常见面试题

一、TCP协议的概念和特点 TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。特点: 面向连接:通过三次握手建立连接,四次挥手断开连接; 可靠传输:确认应答机制、超时重传、拥塞控制; 面向字节流: 确认应答机制:TCP将每个字节的数据都进行了编号,即为序列号。每.

黄昏后的黎明的专栏 2163

Android Studio 开发一个完整的APP实例

随着移动应用程序的普及和需求的增长,Android操作系统成为最受欢迎的移动平台之一。在Android开发中,Android Studio是最流行和功能强大的集成开发环境(IDE)。打开Android Studio,点击"Start a new Android Studio project"来创建一个新的项目。使用Android Studio的强大功能,你可以轻松地开发出功能丰富的Android应用程序。点击Android Studio工具栏上的"Run"按钮,选择要运行的设备或模拟器。

2301_79330513的博客 3191

2019Android网络编程总结

OSI七层模型OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。TCP/IP五层模型:应用层(Application)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等

s13596191285的博客 203

2019Android-网络编程总结篇,你想要的三次握手和四次握手

*1、**TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接**2、**TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付**3、**TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)**4、**每一条TCP连接只能是点到点的。

2401_85699502的博客 1136

用Keil5给CH552G编程:手把手配置8051开发环境+LED闪烁实战

本文详细介绍了如何使用Keil5为CH552G单片机配置8051开发环境,并完成LED闪烁实战。从获取必要软件、安装WCH器件库到创建工程、编写程序及烧录,手把手指导开发者避开常见陷阱,特别适合从STC转向CH552G的开发者。

weixin_30733003的博客 538

2024Android-网络编程总结篇,你想要的三次握手和四次握手

*1、**TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接**2、**TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付**3、**TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)**4、**每一条TCP连接只能是点到点的。

2401_84003839的博客 972

Android车载桌面开发实战:从CarLauncher源码解析到自定义Launcher开发(Android 11)

本文深入解析了Android 11中CarLauncher的源码架构与核心模块,并提供了从零开始定制开发车载Launcher的完整实战指南。内容涵盖车载桌面的独特定位、驾驶场景优化、多屏协同、动态内容嵌入等核心挑战,以及如何构建符合安全规范、体验流畅的自定义车载桌面应用,是车载应用开发者提升系统级定制能力的实用参考。

weixin_29266647的博客 515

【electron】- 从零到一:在electron-vite项目中集成better-sqlite3的工程化实践

本文详细介绍了在electron-vite项目中集成better-sqlite3数据库的完整工程化实践。针对原生模块的编译挑战,提供了从环境配置、路径规划、服务封装到IPC通信的解决方案,并重点解决了开发与生产环境的数据库路径分离及打包部署等核心问题,帮助开发者构建稳定高效的Electron桌面应用数据层。

weixin_29306571的博客 203

网络编程——TCP连接的三次握手和“四次”挥手小结

引言 一、TCP 的三次握手 因为HTTP是基于TCP协议的,所以发起HTTP请求时,会首先建立起底层的TCP连接,在客户端与服务器建立TCP连接的时候会进行三次握手;而在断开TCP连接的时候需要进行四次挥手,简记连三断四。最初两端的TCP进程都处于CLOSED关闭状态,而S端程序启动并自动创建TCB 开始监听,随时等待响应C端的请求。 1、第一次握手 C端的TCP进程主动打开连接创建TCB,向C...

最美不过,心中有梦,身旁有你! 1198

STM32F407用FSMC+DMA驱动LVGL,3.5寸屏流畅度翻倍实战(附CubeMX配置避坑)

本文详细介绍了如何在STM32F407上通过FSMC+DMA驱动LVGL,显著提升3.5寸屏的显示流畅度。从FSMC与DMA的配置原理到LVGL驱动层适配,提供了完整的优化方案和实测数据,帮助开发者解决界面卡顿问题,实现流畅度翻倍的效果。

weixin_30872499的博客 559

TCP:三次握手/四次握手

socket 中TCP的三次握手建立连接详解 我们知道tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下: 客户端向服务器发送一个SYN J服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1客户端再想服务器发一个确认ACK K+1 只有就完了三次握手,但是这个三次握手发生在socket的那几个函数中呢?请看下图: 图1、socket中发送的TCP三次

ByteBai的专栏 1163

复制幻灯片到另一个PPT编程

请确保将源PPT文件和目标PPT文件的文件名修改为你实际使用的文件名。运行上述代码后,目标PPT将包含源PPT中的所有幻灯片和形状。这里假设源PPT文件名为"source.pptx",目标PPT文件名为"target.pptx"。方法将每个幻灯片的布局添加到目标PPT中。是一个强大的库,可以用于创建、修改和操作PPT文件。要将一个PPT中的幻灯片复制到另一个PPT,可以使用Python的。这段代码遍历源PPT的每个幻灯片,并使用。步骤 3: 打开源PPT和目标PPT。这将保存修改后的目标PPT文件。

ByteSparkX的博客 1322

华为MetaERP PTP采购到应付全流程解析

摘要:本文系统解析华为MetaERP中的PTP(采购到应付)全流程管理方案,涵盖从采购申请到付款执行的完整业务流程。文章详细分解了PR、PO、GR、IV、AP等关键环节的财务核算规则,并提供了预算校验、库存更新等Python代码示例。同时阐述了IT落地架构设计,包括会计引擎配置、系统集成方案及银企直连支付接口实现。该方案通过三单匹配自动化和智能会计引擎,将处理效率提升10倍(200笔/人天→2000笔/人天),实现98%的自动化率,为集团企业提供了高效的数字化财务管理样板。文中所有技术方案均需根据实际场景调

金牌架构师 1742

三次握手 四次握手 与socket函数的关系

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下: 作者:吴秦 出处:http://www.cnblogs.com...

fakine的专栏 488

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part2知识获取与图谱构建、服务搭建

前序文章:其中原项目提供了关系数据如下: 其中五列数据表示:人物1,人物2,人物1与人物2关系,人物1所属家族,人物2所属家族。关系说明:以第一列为例,贾演是贾代化的父亲。下面我们就将这个数据放到neo4j中。这些需要去连接,需要安装这个包: 程序中,我使用去读取配置文件, 其中为了保持配置全局唯一性,使用单例的写法。 后面就是创建构建关系文件,构建neo4j图谱数据了,如下: 后期可能会将构建图谱内容使用flask去生成命令行的方式构建,暂时在开发的过程查看构建情况,便于调试。导入关系后,我们再查看

让算法融入生活,改变生活! 4080

基于TCP/UDP的Socket的Android网络编程

1、普通Socket 普通Socket 2、TCP & UDP介绍 TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,能够保证数据正确性,还有数据顺序,TCP套接口是字节流套接口(stream socket)的一种。 UDP:用户数据报协议。UDP是一种无连接协议,一次发送交付一个完整的数据报,响应速度快,但是可能会有丢包的情况(好...

qiuwf的博客 3102

Linux V3H 平台开发系列讲解(串行解串篇)2.2.2 MAX9296 MAX96705 GMSL1 续篇--串行器提前配置

本文详细介绍了在Linux v3h平台上,针对Max9296解串器和解串器max96705的详解配置,验证可出图,内容包括串行器解串器介绍、链路框架、硬件连接、速率配置,以及遇到的图像异常问题及解决方法。

xian18809311584的博客 537

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2019Android网络编程总结 握手挥手 +网络层详解+加密算法分析

1.网络分层 OSI七层模型 OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。 TCP/IP五层模型 TCP/IP五层模型:应用层(Application)、传输层(Transport)、...

weixin_43901866的博客 669

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android网络编程(三) 之 网络请求握手过程

1 一次网络请求的过程 我们平常在浏览器输入一个网址回车后经过了大概不到一秒时间的网络请求便可展示出相应的页面,其实这样一次完整的网络请求过程要经过好几个步骤: 第一步:DNS解析IP地址; 第二步:TCP三次握手建立连接; 第三步:如果是HTTPS的话,还要进行TLS握手验证签名证书; 第四步:客户端发起HTTP请求 第五步:服务器响应HTTP请求 第六步:客户端浏览器接收到内容进...

子云心的博客 1037

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android网络编程总结

1.网络的基本概念 1.1 IP地址和端口号 ●IP地址:网络中的每台计算机都必须有一-个唯- -的I P地址作为标识,用一-组由"."分隔的十进制数组成 ●端口号: IP地址只能保证将数据送到指定的计算机,但无法知道交给该主机的哪个网络程序,因此采用端口号标识计算机上正在运行的进程 ●每个被发送的网络数据包都包含端口号,用于将该数据帧交给具有相同端口号的应用程序处理 1.2Java的网络编程由j...

cdh516的博客 341
上一篇: 互联网公司为什么那么喜欢问多线程的面试:15道面试题带你了解
下一篇: 腾讯Android社招面试源码相关11题+原理详解
初壹十五a
博客等级 码龄8年 146粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值