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

FFMPEG编码容错处理解决办法之途径----升级库文件

在qt开发环境下接收网络数据,调用ffmpeg解码播放视频,出现闪屏现象,具体现象可以使用操作系统自带的ffplay播放器播放原始视频流可复现;而使用操作系统自带的mpv播放器播放视频则不会出现闪屏;闪屏时会报Could not find ref with POC xx错误(由于是无线通信该错误无法避免)要求能达到mpv的播放效果就行,具体实现方式不限。 

根本解决方法:通过测试不同版本的pplay功能,哪个版本容错能力强就用哪个版本。

当只使用 I 帧进行编码时,编码时间较短,但生成的视频流较长;而加入 P B 帧后,会使编码时间变长,但生成的视频流长度只有纯 I 帧编码的 25%。因此,P B 帧的加入本质上是用时间换空间的思路(跟算法设计思路刚好反过来)。

将无线传输过来的UDP协议视频,将UDP去掉包头及包尾将数据组合成一帧编码数据后保存成h265裸流文件。用ffmpeg4.2.2的命令ffplay播放有花屏现象并伴随报错误Could not  find ref with POC xx。但是利用mpv播放虽然也有报错Could not  find ref with POC xx但是不花屏。将一帧H265编码数据组成一帧后送入函数 avcodec_send_packet(进行解码)和avcodec_receive_frame(从解码的图像中获取YUV图像)这些函数的返回值也是对的。

为此解决此问题用到的方法进行梳理如下:

方法1、加入数据缓冲器---有少部分改善

        由原来的收到一帧就进行处理修改为根据UDP协议序号帧收满数据后,再直接送入解码器进行解码(开辟有缓冲器)。

方法2、硬件解码---效果不明显

硬件解码数据不能为RGB24,

方法3、OPenGL显示图像数据--效果不明显

通过加入库文件进行显示

方法4、 MPV与FFMPEG播放处理不通--确定问题解决思路

发现MPV虽然是基于FFMPEG库上开发的但是对FFMPEG进行了优化,其播放效果优于FFMPEG

方法5、更新FFMPEG库---效果明显

Step 1 下载并编译FFMPEG库

1)下载ffmpeg源代码

说明:

ffmpeg下载地址 http://ffmpeg.org/releases/

点击Last modified(最后修改内容可看到最新版本--其实是快照版本)

  • Snapshot版本‌:这是一种开发中的版本,表示该版本尚未正式发布,可能会频繁发生变化。它主要用于开发阶段,特别是多个团队或模块之间协同开发时,确保依赖的模块始终是最新的。‌12
  • Release版本‌:这是一种正式发布的版本,表示该版本已经经过测试和验证,不会再有频繁的变化。它通常用于生产环境,确保依赖的版本是稳定和可靠的。

2) ffmpeg编译安装
首先,将下载好的ffmpeg压缩包解压。输入解压bz2压缩文件的命令

sudo tar -xjf ffmpeg-snapshot.tar.bz2

然后进入解压后的文件夹,打开终端,设置安装配置,配置文件是configure,在编译和安装之前,需要配置一下,不然无法执行编译指令.

配置configure的指令为:(注意将--enable-libx264去掉,否则配置报错)

sudo ./configure --enable-gpl --enable-libx264 --prefix=/media/cssc/708/ZHKZ/YTHWQ/FFMPEG_BUILD/ffmpeg-build --enable-shared

其中,gpl和libx264是额外的库,可根据情况选择,默认都是disable。
--prefix:指定安装路径,如果不指定,头文件会默认安装在/usr/local/include,库会默认在/usr/local/lib
--enable-shared:选择编译动态库,如果不加上这一句,编译出来的只有静态库(.a),加上之后才有动态库(.so)

配置完以后,执行编译和安装命令:

make -j8 && sudo make install
其中,make -j8:多线程编译的意思,加快编译速度,当然也要看电脑最大线程数。make install:安装各种头文件和库,要加上sudo,不然建不了文件夹。

编译以及安装完之后,在ffmpeg-build文件夹下会多出四个文件夹,bin、include、lib、share;

如果没有指定安装路径,bin文件夹下的两个文件会默认至/usr/local/bin/
include文件夹下的内容会默认在/usr/local/include/下
lib文件夹下的内容会默认在/usr/local/lib/下
share文件夹下的内容默认在/usr/local/share/下

除此之外,还需要注意一点,每次编译之前都需要配置configure,上次的配置在此次编译无效

3)添加环境变量

打开ffmpeg(安装后的)下的bin,执行./ffmpeg -version会出现报错信息:这是因为ffmpeg库没有链接到系统库里边,建立链接有两种办法,第一种在环境变量中添加ffmpeg库路径,第二种是在/etc/ld.so.conf.d文件夹下建立ffmpeg.conf,推荐使用第一种,更简单快捷一些,第二种权当记录在此。

第一种方法:

将ffmpeg添加到环境变量,首先执行 

sudo gedit /etc/profile

在文件末尾添加ffmpeg主程序路径和库路径:(也可命令行执行只对当前cmd用户有效)

export PATH=$PATH:/media/cssc/708/ZHKZ/YTHWQ/FFMPEG_BUILD/ffmpeg-build/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/media/cssc/708/ZHKZ/YTHWQ/FFMPEG_BUILD/ffmpeg-build/lib

保存后,再执行   

source /etc/profile

再次执行ffmpeg -version就可以正常显示ffmpeg版本信息了,也不用进入ffmpeg-build/bin下了。不仅可以看到版本信息,还能看到编译ffmpeg时的configure配置信息,以及库的版本。

补充说明:除了用新版本可以解决视频解码播放花屏问题,同时也尝试基于FFMPEG4.2.2版本的MPV库进行播放,因为MPV库对FFMPEG库进行了优化。

方法6、采用MPV库---效果明显

linux下GPU硬件解码接口,常用的有vdpau和vaapi。mpv是基于mplayer开发的一个播放器。此外,mpv还提供了函数库libmpv,通过使用libmpv可以编写一个简单的播放器。

mpv是一款一优秀的播放器。由于需要将其内嵌到代码中,所以需要将其编译成动态库的形式使用。编译流程如下:

1)mpv源码URL

             URL1:  https://github.com/mpv-player/mpv     

             URL2: https://github.com/mpv-player/mpv-build  

URL1是mpv的源码,而URL2是将源码和其所需要的库做了一个整合脚本。此文档使用URL2进行编译安装。

windows环境下的64为开发库的下载地址为:https://sourceforge.net/projects/mpv-player-windows/进入后页面如下,选择dev x86-64位的压缩包进行下载。

2)mpv编译安装流程记录:

相关文章:

FFMPEG编码容错处理解决办法之途径----升级库文件

在qt开发环境下接收网络数据,调用ffmpeg解码播放视频,出现闪屏现象,具体现象可以使用操作系统自带的ffplay播放器播放原始视频流可复现;而使用操作系统自带的mpv播放器播放视频则不会出现闪屏;闪屏时会报Could not fin…...

kkFileView报错no office manager available

背景 部署环境:虚机Linux系统 发生问题的版本:4.1.0-SNAPSHOT 现象:有的docx文件可以预览,有的不可以。不可以的就怎么打开都不可以(不管你是躺着,站着,坐着,睡着,趴着都不行,哈哈) 报错内容 贴出主要的报错内容步骤: > no office manager available > tr…...

C++ 设计模式-模板方法模式

文件处理 #include <iostream>// 抽象基类&#xff1a;定义模板方法和抽象步骤 class DataProcessor { public:// 模板方法&#xff08;固定流程&#xff09;void Process() {OpenFile();ProcessData(); // 由子类实现CloseFile();}protected:virtual void ProcessData…...

MacOS下使用Ollama本地构建DeepSeek并使用本地Dify构建AI应用

目录 1 大白话说一下文章内容2 作者的电脑配置3 DeepSeek的本地部署3.1 Ollamal的下载和安装3.2 选择合适的deepseek模型3.3 安转deepseek 4 DifyDeepSeek构建Al应用4.1 Dify的安装4.1.1 前置条件4.1.2 拉取代码4.1.3 启动Dify 4.2 Dify控制页面4.3 使用Dify实现个“文章标题生…...

区块链相关方法-波士顿矩阵 (BCG Matrix)

波士顿矩阵&#xff08;BCG Matrix&#xff09;&#xff0c;又称市场增长率 - 相对市场份额矩阵、波士顿咨询集团法、四象限分析法、产品系列结构管理法等&#xff0c;由美国著名的管理学家、波士顿咨询公司创始人布鲁斯・亨德森于 1970 年首创1。以下是关于波士顿矩阵的详细介…...

命令执行漏洞 Command Execute

命令执行漏洞&#xff08;Command Injection&#xff09;是一种安全漏洞&#xff0c;指的是攻击者能够在应用程序的命令行中注入并执行恶意命令。简单来说&#xff0c;就是攻击者可以利用这个漏洞让程序执行自己指定的命令&#xff0c;而不是程序原本应该执行的命令。 举个例子…...

黑马点评_商品信息缓存模块

保证缓存不要有空档期 删除后马上要写入中间不能插入任何阶段(如查询数据库) 对于单体系统1&#xff0c;将缓存与数据库操作放在同一个事务中&#xff08;当前项目就是一个单体项目&#xff0c;所以选择这种方式&#xff09; 对于分布式系统2&#xff0c;利用TCC&#xff08;Tr…...

socket()函数的概念和使用案例

socket()函数的概念&#xff08;C语言&#xff09; 在C语言中&#xff0c;socket() 函数是用于创建一个新的套接字&#xff0c;它是网络编程的基础。套接字可以看作是不同计算机进程间通信的一个端点&#xff0c;允许数据在网络中的发送和接收。 socket() 函数的原型定义在 &l…...

【架构】事件驱动架构(Event - Driven Architecture,EDA)

一、事件驱动架构理论基础 事件驱动架构(Event - Driven Architecture,EDA)是一种软件设计范式,事件驱动的体系结构由生成事件流、侦听这些事件的事件使用者以及将事件从生成者传输到使用者的事件通道组成。 在事件驱动架构中,系统的行为由事件触发。事件可几乎实时发送,…...

三、linux字符驱动详解

在上一节完成NFS开发环境的搭建后&#xff0c;本节将探讨Linux字符设备驱动的开发。字符设备驱动作为Linux内核的重要组成部分&#xff0c;主要负责管理与字符设备&#xff08;如串口、键盘等&#xff09;的交互&#xff0c;并为用户空间程序提供统一的读写操作接口。 驱动代码…...

14.9 Auto-GPT 提示工程深度解析:设计具备自主决策能力的智能体大脑

Auto-GPT 提示工程深度解析:设计具备自主决策能力的智能体大脑 关键词:Auto-GPT 提示工程、结构化提示模板、工具调用触发、动态上下文管理、自主决策优化 1. 自主智能体提示设计的核心原则 Prompt 设计三维度模型: #mermaid-svg-jHMGjPZTQA8Op385 {font-family:"tre…...

【p-camera-h5】 一款开箱即用的H5相机插件,支持拍照、录像、动态水印与样式高度定制化。

【开源推荐】p-camera-h5&#xff1a;一款轻量级H5相机插件开发实践 一、插件背景 在Web开发中&#xff0c;原生摄像头功能的集成往往面临以下痛点&#xff1a; 浏览器兼容性问题视频流与水印叠加实现复杂移动端适配困难功能定制成本高 为此&#xff0c;p-camera-h5 —— 一…...

c++中sleep是什么意思(不是Sleep() )

sleep 函数在 C 语言中用于暂停程序执行指定的秒数&#xff0c;语法为 sleep(unsigned int seconds)。当 seconds 为 0 时&#xff0c;函数立即返回&#xff0c;否则函数将使进程暂停指定的秒数&#xff0c;并返回实际暂停的时间。 sleep 函数在 C 中的含义 sleep 函数是 C 标…...

优品指标树

目录 大势型 超买超卖型 超势型 能量型 成交量型 均线型 路径型 指南针经典指标 神系经典指标 庄家克星经典指标 大智慧经典指标 钱龙经典指标 同花顺经典指标 通达信经典指标 操盘手经典指标 期货特色指标 股票特色推荐 用户推荐共享指标 名家经典战法指标…...

springboot多实例部署时,@Scheduled注释的方法重复执行

问题&#xff1a;springboot多实例部署时&#xff0c;Scheduled注释的方法重复执行 在 Spring Boot 中要实现 Redis 的SET NX EX命令&#xff0c;可以借助 Spring Data Redis 来完成。SET NX EX命令用于在键不存在时设置键值对&#xff0c;并同时设置过期时间。 <dependen…...

智能自动化新纪元:AI与UiPath RPA的协同应用场景与技术实践

智能自动化新纪元&#xff1a;AI与UiPath RPA的协同应用场景与技术实践 引言 在数字化转型的浪潮中&#xff0c;企业对于自动化技术的需求已从简单的任务执行转向更复杂的智能决策。传统RPA&#xff08;Robotic Process Automation&#xff09;通过模拟人类操作处理重复性任务…...

[STM32 - 野火] - - - 固件库学习笔记 - - - 十六.在SRAM中调试代码

一、简介 在RAM中调试代码是一种常见的嵌入式开发技术&#xff0c;尤其适用于STM32等微控制器。它的核心思想是将程序代码和数据加载到微控制器的内部RAM&#xff08;SRAM&#xff09;中运行&#xff0c;而不是运行在Flash存储器中。这种方法在开发过程中具有显著的优势&#…...

nginx 反向代理 配置请求路由

nginx | 反向代理 | 配置请求路由 nginx简介 Nginx&#xff08;发音为“Engine-X”&#xff09;是一款高性能、开源的 Web 服务器和反向代理服务器&#xff0c;同时也支持邮件代理和负载均衡等功能。它由俄罗斯程序员伊戈尔西索夫&#xff08;Igor Sysoev&#xff09;于 2004…...

第二届粤港澳大湾区数字经济与人工智能国际学术会议(DEAI 2025)

重要信息 2025年3月28-30日 I 广东省东莞市(广东科技学院-松山湖校区&#xff09; I www.icdeai.com 简介 第二届粤港澳大湾区数字经济与人工智能(DEAI 2025)将在2025年3月28-30日在广东省东莞市隆重举行。来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、…...

使用GDI+、文件和目录和打印API,批量将图片按文件名分组打包成PDF

代码写了两个小时&#xff0c;速度太慢&#xff08;包括学习文档的时间&#xff09; #include <stdio.h> #include <Windows.h> #include <gdiplus.h> #include <string.h> using namespace Gdiplus; #pragma comment(lib, "Gdiplus.lib") …...

贪心算法

int a[1000], b5, c8; swap(b, c); // 交换操作 memset(a, 0, sizeof(a)); // 初始化为0或-1 引导问题 为一个小老鼠准备了M磅的猫粮&#xff0c;准备去和看守仓库的猫做交易&#xff0c;因为仓库里有小老鼠喜欢吃的五香豆&#xff0c;第i个房间有J[i] 磅的五香豆&#xf…...

如何查询网站是否被百度蜘蛛收录?

一、使用site命令查询 这是最直接的方法。在百度搜索框中输入“site:你的网站域名”&#xff0c;例如“site:example.com”&#xff08;请将“example.com”替换为你实际的网站域名&#xff09;。如果搜索结果显示了你的网站页面&#xff0c;并且显示了收录的页面数量&#xf…...

Hutool - Log:自动识别日志实现的日志门面

一、简介 在 Java 开发中&#xff0c;日志记录是一项非常重要的功能&#xff0c;它可以帮助开发者在开发和生产环境中监控程序的运行状态、排查问题。然而&#xff0c;Java 生态系统中有多种日志实现框架&#xff0c;如 Log4j、Logback、JDK 自带的日志框架等。为了在不同的项…...

【GPU驱动】- 状态机

一、概述 Mesa 是一个开源的图形库&#xff0c;它提供了一个通用的图形抽象层&#xff0c;支持多种硬件和驱动程序。Mesa 的核心组件之一是 State Tracker&#xff0c;它在抽象图形 API&#xff08;如 OpenGL &#xff09;与具体的图形驱动之间起到桥梁作用。State Tracker 通…...

rtcwake - Linux下定时唤醒计算机

rtcwake 是一个用于通过实时时钟&#xff08;RTC&#xff09;唤醒计算机的工具。它常用于在 Linux 系统中设置计算机在指定时间自动唤醒或关闭。以下是对命令 rtcwake -m off -s ${sleep_time} 的详细解析&#xff1a; 命令解析 bash复制 rtcwake -m off -s ${sleep_time} 1…...

MySQL 日志

MySQL 日志 慢查询日志(Slow query log) 慢查询⽇志由执⾏时间超过系统变量 long_query_time 指定的秒数的SQL语句组成&#xff0c;并且检 查的⾏数⼤于系统变量 min_examined_row_limit 指定值。被记录的慢查询需要进⾏优化&#xff0c; 可以使⽤mysqldumpslow客⼾端程序对慢…...

C++ 泛型编程之补充(class 和typename)

目录 1.class 和 typename 可互换 1.1 template 和 template 在模板参数列表中完全一样&#xff0c;可以互换使用。 2.什么时候 class 和 typename 不一样&#xff1f; 2.1 嵌套依赖类型 时必须用typename 重点说明&#xff1a; 2.2 普通作用域&#xff08;不能互换&…...

[MDM 2024]Spatial-Temporal Large Language Model for Traffic Prediction

论文网址&#xff1a;[2401.10134] Spatial-Temporal Large Language Model for Traffic Prediction 论文代码&#xff1a;GitHub - ChenxiLiu-HNU/ST-LLM: Official implementation of the paper "Spatial-Temporal Large Language Model for Traffic Prediction" …...

跟着 Lua 5.1 官方参考文档学习 Lua (6)

文章目录 2.11 – Coroutines 2.11 – Coroutines Lua supports coroutines, also called collaborative multithreading. A coroutine in Lua represents an independent thread of execution. Unlike threads in multithread systems, however, a coroutine only suspends i…...

Spring Cloud — Hystrix 服务隔离、请求缓存及合并

Hystrix 的核心是提供服务容错保护&#xff0c;防止任何单一依赖耗尽整个容器的全部用户线程。使用舱壁隔离模式&#xff0c;对资源或失败单元进行隔离&#xff0c;避免一个服务的失效导致整个系统垮掉&#xff08;雪崩效应&#xff09;。 1 Hystrix监控 Hystrix 提供了对服务…...

加油站(力扣134)

既然每一个加油站都有对应的加油量和耗油量&#xff0c;我们不妨计算一下每个加油站的汽油净增量。如果每个加油站净增量之和不为负数&#xff0c;则说明一定可以找到唯一的起始点。那我们该如何找到这个起始点呢&#xff1f;我们设置最开始的起点为第0个加油站&#xff0c;接着…...

科普:你的笔记本电脑中有三个IP:127.0.0.1、无线网 IP 和局域网 IP;两个域名:localhost和host.docker.internal

三个IP 你的笔记本电脑中有三个IP&#xff1a;127.0.0.1、无线网 IP 和局域网 IP。 在不同的场景下&#xff0c;需要选用不同的 IP 地址&#xff0c;如下为各自的特点及适用场景&#xff1a; 127.0.0.1&#xff08;回环地址&#xff09; 特点 127.0.0.1 是一个特殊的 IP 地…...

Golang 相关的github 开源项目

1. pan-light url: http://github.com/peterq/pan-lightstar: 12.1kfork: 2.5kwatch: 284 用Golang和Qt5编写的不限速版百度网盘。相比之前版本的百度网盘客户端&#xff0c;当前版本拥有更友好、便捷的图形界面&#xff0c;体量更轻&#xff0c;便于使用&#xff0c;只需下载…...

数据结构《图》

数据结构《图论》 图的性质 一、无向图&#xff08;Undirected Graph&#xff09; 定义 由一组顶点&#xff08;Vertex&#xff09;和一组无向边&#xff08;Edge&#xff09;构成。 每条无向边用一条无方向的线段连接两个顶点&#xff0c;记为 ( (u, v) )&#xff0c;其中…...

WPF实现打印机控制及打印

在WPF中实现打印机控制和打印功能&#xff0c;通常需要使用System.Printing命名空间中的类来管理打印机和打印任务。以下是一个简单的示例&#xff0c;展示如何在WPF应用程序中实现打印功能。 1. 添加必要的引用 首先&#xff0c;确保在项目中引用了System.Printing命名空间。…...

springboot系列十四: 注入Servlet, Filter, Listener + 内置Tomcat配置和切换 + 数据库操作

文章目录 注入Servlet, Filter, Listener官方文档基本介绍使用注解方式注入使用RegistrationBean方法注入DispatcherServlet详解 内置Tomcat配置和切换基本介绍内置Tomcat配置通过application.yml完成配置通过类配置 切换Undertow 数据库操作 JdbcHikariDataSource需求分析应用…...

DeepSeek 助力 Vue 开发:打造丝滑的二维码生成(QR Code)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

从传统到轻量级5G:网络架构演变与优化路径

轻量级5G​​​​ 随着5G技术的不断发展&#xff0c;通信网络架构正经历着前所未有的变革。传统的5G核心网架构虽然在性能和容量方面表现出色&#xff0c;但在灵活性、部署效率以及成本控制方面却面临一些挑战。为了应对日益复杂的通信需求&#xff0c;轻量级5G核心网成为了一种…...

独立开发者如何寻找产品设计灵感

作为独立开发者&#xff0c;面对激烈的市场竞争和不断变化的用户需求&#xff0c;寻找优秀的产品设计灵感是至关重要的一步。以下是一篇关于独立开发者如何寻找产品设计灵感的教程&#xff0c;希望能为你提供一些有益的指导。 一、观察日常生活 1.1 关注身边的小问题 在日常生…...

技术解析 | 适用于TeamCity的Unreal Engine支持插件,提升游戏构建效率

龙智是JetBrains授权合作伙伴、Perforce授权合作伙伴&#xff0c;为您提供TeamCity、Perforce Helix Core等热门的游戏开发工具及一站式服务 TeamCity 是游戏开发的热门选择&#xff0c;大家选择它的原因包括支持 Perforce、可以进行本地安装&#xff0c;并提供了多种配置选项。…...

uniapp h5端和app端 使用 turn.js

前提:添加页后,添加页与当前页会重叠在一起,不知道为什么,没有找到解决办法 1.h5端 <template><view class"container"><view id"flipbook"><view class"page page1">Page 1</view><view class"page pag…...

智慧校园系统在学生学习与生活中的应用

随着科技的快速发展&#xff0c;智慧校园系统逐渐成为现代教育不可或缺的一部分。它整合了先进的信息技术、物联网技术以及人工智能等&#xff0c;旨在构建一个全面、智能、个性化的学习与生活环境。对于学生而言&#xff0c;这一系统不仅能够极大地提高学习效率&#xff0c;还…...

umi: valtio的使用

一、基本用法 import { proxy, useSnapshot } from umijs/max;// 1、定义数据 const state proxy({ count: 33 });export default () > {// 2、使用数据const snap useSnapshot(state);function increaseCount() {state.count 1;}return (<><h1>{snap.count}…...

什么是矩阵账号?如何高效运营tiktok矩阵账号

‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​​‌​​‌​‍‌​‌‌​‌‌‌‍‌​‌​‌​​​‍‌​​‌​‌‌​‍‌​​​​‌‌​‍‌​‌​​‌‌‌‍‌​​‌‌​‌​‍‌​‌​​‌‌‌‍‌​‌‌‌​​‌‍‌‌​​‌‌‌​‍‌‌​​‌‌​​‍‌…...

C语言.h头文件的写法

头文件的内容 #ifndef __SEQUENCE_LIST_H // 定义以防止递归包含 #define __SEQUENCE_LIST_H // (1)、其它头文件 #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <stdbool.h> // (2)、宏定义(函数、变量、常量) // (3)、…...

【Day44 LeetCode】图论问题 Ⅱ

一、图论问题 Ⅱ 1、岛屿的最大面积 这题和上一篇博客求岛屿数量如出一辙&#xff0c;都是要找出所有岛屿&#xff0c;深度优先搜索代码如下&#xff1a; # include<iostream> # include<vector>using namespace std;int dfs(vector<vector<int>> …...

设计模式教程:责任链模式(Chain of Responsibility Pattern)

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种常用的设计模式&#xff0c;它属于行为型模式&#xff0c;主要解决的是多个对象处理一个请求时&#xff0c;如何解耦请求的发送者和接收者&#xff0c;以及如何将请求的处理职责分配给不同的对象。 1…...

java网络编程

计算机网络基础 网络编程的目的就是直接或间接地通过网络协议与其他计算机进行通信。 在 Java 语言中包含网络编程所需要的各种类&#xff0c;编程人员只需要创建这些类的对象&#xff0c;调用相应的方法&#xff0c;就可以进行网络应用程序的编写。 要进行网络程序的编写&am…...

计算机网络面试知识点总结

目录 1. 计算机网络的基本知识点2. OSI 七层模型3. TCP/IP 四层模型4. TCP 和 UDP4.1 TCP 协议4.2 TCP 流量控制4.3 TCP 拥塞控制4.4 TCP 三次握手4.5 TCP 四次挥手4.6 TCP 粘包问题4.7 TCP Socket交互流程4.8 UDP 协议以及和 TCP 协议的不同 5. HTTP协议5.1 HTTP 请求方法以及…...

ubuntu22.4搭建单节点es8.1

下载对应的包 elasticsearch-8.1.1-linux-x86_64.tar.gz 创建es租户 groupadd elasticsearc useradd elasticsearch -g elasticsearch -p elasticsearch chmod uw /etc/sudoers chmod -R elasticsearch:elasticsearch elasticsearch 修改配置文件 vim /etc/sysctl.conf vm…...