Linux——应用软件的生命周期

  1. 功能开发
  2. 测试:
    1. 功能性测试
      • 对应开发框架的测试用例
    2. 代码的漏洞扫描
      • Web服务器版本
      • 应用开发语言的依赖关系和版本信息
      • 是否会造成类似内存泄露等影响系统性能的问题
    3. 压力测试
  3. 应用的部署
    1. 获取应用代码以及应用静态文件的代码包
    2. 将安装包中的文件按照服务器配置的架构,将代码文件上传到指定的位置

传统应用开发生命周期中,使用一个名为“瀑布式开发”的概念。各个部门的人员,各司其职,互相之间的工作联系并不紧密。

“敏捷开发”:开发人员一边开发,一边对已经开发完成的部分,进行测试和集成,提升开发效率。

持续集成:开发人员一边进行开发,同时及时进行应用的集成

  1. 一旦检测到代码发生变化,立刻运行测试(自动化出发)
  2. 测试无误的情况下,继续进行代码的打包发布(自动完成,无需人工操作)
  3. 如果测试出现问题,将问题通知给相关人员(无需人工操作,根据测试结果,自动发生)。继续修改
  4. 相关开发人员针对测试中出现的问题进行修改后,此时代码发生变化,回到第一步。

持续部署:一定那检测到新版本程序包的发布,就立刻按照提前规划好的方式进行应用的更新部署。

  1. 可以利用puppet chef ansible 等自动化管理软件,配置应用的自动化部署
  2. 应用更新策略的选择:
    1. 滚动更新:以K8S中部署的具有10个副本数量要求的deployment为例:
      • K8S中如果没有设置更新比例的情况下,默认使用25%作为控制值
      • 10 * 0.25 = 2.5 取整3 每次更新3个副本的pod
      • 更新的批次安排: 3   3   3   1
      • K8S维持本身的10个pod不变,新调度3个pod,新调度的pod使用新发布的应用 ,此时deployment控制的pod数量为13, 10 个旧版本应用 3 个新版本应用
      • 等待新调度的3个pod返回状态为running之后,移除原本10个pod中的3个 此时deployment控制的pod数量为10,3个新应用 7 旧的应用
        1. 如果新调度的3个pod在指定的时间内,没有返回running状态,则此时更新中止,对应的deployment继续控制10个运行旧版本应用的pod
      • 然后回到第三步,以3个pod为单位,依次更新,最后deployment控制到的pod都是新版本的应用

滚动更新是一种更新策略,在滚动更新的过程中如果出现任何问题,可以进行回滚以实现应用版本回溯,恢复到没有问题的版本。而这种更新策略所规划的更新部署可以通过任意方式实现。Shell 剧本 应答文件

    1. 灰度发布:生产环境下的服务器将被分为两个集群。一个集群用来部署灰度发布的应用,一个集群用来部署正常更新的应用。

灰度发布和滚动更新都是为了避免同一个问题,即新版本代码发布到生产环境下,出现问题后,不应该影响用户对于应用的正常访问

    1. 蓝绿发布:生产环境下服务器被分为两个集群,一个集群使用绿色表示,一个集群使用蓝色表示,这两套集群环境一致,一般同时只有一个集群开放给用户访问。
      • 蓝色集群部署了稳定版本的应用,绿色集群部署了开发版本的应用
      • 绿色集群中的新版本应用经过测试稳定运行后,将用户的访问全部转发给绿色集群处理
      • 此时蓝色集群不再用户的访问,但是蓝色集群可以用来部署最新版本的应用,并测试其稳定性。

金丝雀测试:在应用更新部署前,一定要在生产环境下进行测试,以验证没有任何问题,才可以进行大规模的应用更新。

代码仓库:保存代码的集中仓库。

代码仓库可以使用传统的文件共享协议进行部署,也可以使用专门的代码仓库软件进行部署。目前大部分公司的代码仓库都是用了支持版本控制功能的应用来进行管理。

常见的版本控制软件:

  1. Git
  2. Mercuril
  3. SVN

Git :

git add //文件提交到暂存区,已经被追踪的文件,也可以提交未追踪的文件

git commit // 将暂存区的文件提交到本地仓库

git log // 查看git commit的提交次数和记录

git rm // 将文件从本地目录和仓库中移除

git mv //对文件进行重命名的操作,同时发生在本地和仓库中

Git status // 显示本地目录中文件的状态,

文件状态显示: 未追踪  //在本地git仓库中不存在该文件

已修改未提交 // 文件的修改已使用git add 命令同步至暂存区,但是未提交到比本地git仓库

已修改未暂存 // 文件的修改未提交到暂存区

git reset // 将文件从暂存区移除

git restore // 从本地仓库恢复文件到本地

Git checkout -- 文件名  // 将文件未提交的变更全部移除

课堂演示记录:

[student@harbor ~]$ sudo yum -y install git		// 包含下面所有的功能,同时支持tab 键自动补齐子命令和选项
[student@harbor ~]$ rpm -qa | grep git-core   //git核心功能,功能完善,不影响使用
git-core-2.43.5-1.el9.x86_64
git-core-doc-2.43.5-1.el9.noarch
[student@harbor ~]$
[student@harbor ~]$ sudo git config --system  user.email  admin@123.com
[student@harbor ~]$ cat /etc/gitconfig
[user]email = admin@123.com
[student@harbor ~]$ git config --list
user.email=admin@123.com
[student@harbor ~]$ git config --list  --show-origin
file:/etc/gitconfig     user.email=admin@123.com
[student@harbor ~]$ git config --global user.email student@123.com
[student@harbor ~]$ git config --list
user.email=admin@123.com
user.email=student@123.com
[student@harbor ~]$ git config --list  --show-origin
file:/etc/gitconfig     user.email=admin@123.com
file:/home/student/.gitconfig   user.email=student@123.com
[student@harbor ~]$ cat .gitconfig
[user]email = student@123.com
[student@harbor ~]$ git config --global core.editor vim
[student@harbor ~]$ git config --global user.name student
[student@harbor ~]$ git config --list
user.email=admin@123.com
user.email=student@123.com
user.name=student
core.editor=vim
[student@harbor ~]$ git config user.name
student
[student@harbor ~]$ git config user.email
student@123.com
[student@harbor ~]$ git config help
error: key does not contain a section: help
[student@harbor ~]$ git help config
[student@harbor ~]$
[student@harbor ~]$ cd practice/demo/
[student@harbor demo]$
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  src  target
[student@harbor demo]$ cd ..
[student@harbor practice]$ cp -r demo demo_1
[student@harbor practice]$ cd demo
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  src  target
[student@harbor demo]$ ls -a
.  ..  Dockerfile  .gitignore  HELP.md  .mvn  mvnw  mvnw.cmd  pom.xml  src  target
[student@harbor demo]$ rm -rf .gitignore
[student@harbor demo]$
[student@harbor demo]$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:   git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint:   git branch -m <name>
Initialized empty Git repository in /home/student/practice/demo/.git/
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  src  target
[student@harbor demo]$ ls .git/
branches  config  description  HEAD  hooks  info  objects  refs
[student@harbor demo]$
[student@harbor demo]$ git status
On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed).mvn/DockerfileHELP.mdmvnwmvnw.cmdpom.xmlsrc/target/nothing added to commit but untracked files present (use "git add" to track)
[student@harbor demo]$ git add Dockerfile
[student@harbor demo]$ git status
On branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   DockerfileUntracked files:(use "git add <file>..." to include in what will be committed).mvn/HELP.mdmvnwmvnw.cmdpom.xmlsrc/target/[student@harbor demo]$ git rm --cached Dockerfile
rm 'Dockerfile'
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  src  target
[student@harbor demo]$ git status
On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed).mvn/DockerfileHELP.mdmvnwmvnw.cmdpom.xmlsrc/target/nothing added to commit but untracked files present (use "git add" to track)
[student@harbor demo]$ vim Dockerfile
[student@harbor demo]$ git status
On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed).mvn/DockerfileHELP.mdmvnwmvnw.cmdpom.xmlsrc/target/nothing added to commit but untracked files present (use "git add" to track)
[student@harbor demo]$ git add Dockerfile
[student@harbor demo]$
[student@harbor demo]$ git status
On branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   DockerfileUntracked files:(use "git add <file>..." to include in what will be committed).mvn/HELP.mdmvnwmvnw.cmdpom.xmlsrc/target/[student@harbor demo]$ vim Dockerfile
[student@harbor demo]$ git status
On branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   DockerfileChanges not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   DockerfileUntracked files:(use "git add <file>..." to include in what will be committed).mvn/HELP.mdmvnwmvnw.cmdpom.xmlsrc/target/[student@harbor demo]$ git add Dockerfile
[student@harbor demo]$ git commit
[master (root-commit) 6072b75] Add container image build file1 file changed, 6 insertions(+)create mode 100644 Dockerfile
[student@harbor demo]$ git status
On branch master
Untracked files:(use "git add <file>..." to include in what will be committed).mvn/HELP.mdmvnwmvnw.cmdpom.xmlsrc/target/nothing added to commit but untracked files present (use "git add" to track)
[student@harbor demo]$ tree src
src
├── main
│   ├── java
│   │   └── com
│   │       └── example
│   │           └── demo
│   │               ├── Application.java
│   │               └── HelloController.java
│   └── resources
│       └── application.properties
└── test└── java└── com└── example└── demo├── HelloControllerITest.java└── HelloControllerTest.java11 directories, 5 files
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  src  target
[student@harbor demo]$ vim .gitignore
# maven's working directory
target/
#project default mvn program
mvnw*
#project help file
HELP.md
#but track all readme file
!readme.txt
!README.txt
!README.md
!readme.md[student@harbor demo]$ git status
On branch master
Untracked files:(use "git add <file>..." to include in what will be committed).gitignore.mvn/pom.xmlsrc/nothing added to commit but untracked files present (use "git add" to track)
[student@harbor demo]$ ls .mvn/
wrapper
[student@harbor demo]$ ls .mvn/wrapper/
maven-wrapper.properties
[student@harbor demo]$ vim  .gitignore
# ignore git-ignore file
.gitignore
# maven's working directory
target/
#project default mvn program
mvnw*
.mvn/
#project help file
HELP.md
#but track all readme file
!readme.txt
!README.txt
!README.md
!readme.md[student@harbor demo]$ git status
On branch master
Untracked files:(use "git add <file>..." to include in what will be committed)pom.xmlsrc/nothing added to commit but untracked files present (use "git add" to track)
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  src  target
[student@harbor demo]$ git add .
[student@harbor demo]$ git commit
[master 78aa0f9] source code and project maven configuration6 files changed, 170 insertions(+)create mode 100644 pom.xmlcreate mode 100644 src/main/java/com/example/demo/Application.javacreate mode 100644 src/main/java/com/example/demo/HelloController.javacreate mode 100644 src/main/resources/application.propertiescreate mode 100644 src/test/java/com/example/demo/HelloControllerITest.javacreate mode 100644 src/test/java/com/example/demo/HelloControllerTest.java
[student@harbor demo]$ git status
On branch master
nothing to commit, working tree clean
[student@harbor demo]$ vim readme.txt
[student@harbor demo]$ git status -s
?? readme.txt
[student@harbor demo]$ git add readme.txt
[student@harbor demo]$ git commit "add readme file"
error: pathspec 'add readme file' did not match any file(s) known to git
[student@harbor demo]$ git commit -m "add readme file"
[master 6acb2a6] add readme file1 file changed, 2 insertions(+)create mode 100644 readme.txt
[student@harbor demo]$ vim readme.txt
[student@harbor demo]$ git status -sM readme.txt
[student@harbor demo]$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index a3365b1..2bf0964 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,4 @@project purpose:practice how to deploy an app base on springboot development infrustracture
+
+this project run on port 8080
[student@harbor demo]$ git add readme.txt
[student@harbor demo]$ git diff readme.txt
[student@harbor demo]$ git diff readme.txt
[student@harbor demo]$ git diff readme.txt --staged
fatal: option '--staged' must come before non-option arguments
[student@harbor demo]$ git diff --staged  readme.txt
diff --git a/readme.txt b/readme.txt
index a3365b1..2bf0964 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,4 @@project purpose:practice how to deploy an app base on springboot development infrustracture
+
+this project run on port 8080
[student@harbor demo]$ vim Dockerfile
[student@harbor demo]$ vim readme.txt
[student@harbor demo]$ git status
On branch master
Changes to be committed:(use "git restore --staged <file>..." to unstage)modified:   readme.txtChanges not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   Dockerfilemodified:   readme.txt[student@harbor demo]$ git commit -am "add all changes to repository"
[master b7abcf7] add all changes to repository2 files changed, 7 insertions(+), 1 deletion(-)
[student@harbor demo]$ git status
On branch master
nothing to commit, working tree clean
[student@harbor demo]$ echo "test " >> test.txt
[student@harbor demo]$ git add test.txt
[student@harbor demo]$ git commit -m 'test'
[master 1b64891] test1 file changed, 1 insertion(+)create mode 100644 test.txt
[student@harbor demo]$ git status
On branch master
nothing to commit, working tree clean
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  readme.txt  src  target  test.txt
[student@harbor demo]$ rm -f test.txt
[student@harbor demo]$ git status
On branch master
Changes not staged for commit:(use "git add/rm <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)deleted:    test.txtno changes added to commit (use "git add" and/or "git commit -a")
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  readme.txt  src  target
[student@harbor demo]$ git restore test.txt
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  readme.txt  src  target  test.txt
[student@harbor demo]$ git rm test.txt
rm 'test.txt'
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  readme.txt  src  target
[student@harbor demo]$ git status
On branch master
Changes to be committed:(use "git restore --staged <file>..." to unstage)deleted:    test.txt[student@harbor demo]$ git commit
[master 5066a6f] delete unraleted files1 file changed, 1 deletion(-)delete mode 100644 test.txt
[student@harbor demo]$ mv readme.txt README.txt
[student@harbor demo]$ git status
On branch master
Changes not staged for commit:(use "git add/rm <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)deleted:    readme.txtUntracked files:(use "git add <file>..." to include in what will be committed)README.txtno changes added to commit (use "git add" and/or "git commit -a")
[student@harbor demo]$ git mv readme.txt README.txt
fatal: bad source, source=readme.txt, destination=README.txt
[student@harbor demo]$ git mv  readme.txt README.txt
Dockerfile  pom.xml     readme.txt  README.txt  src/
[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  README.txt  src  target
[student@harbor demo]$
[student@harbor demo]$ mv README.txt readme.txt
[student@harbor demo]$ git status
On branch master
nothing to commit, working tree clean
[student@harbor demo]$ git mv readme.txt README.txt
[student@harbor demo]$ git status
On branch master
Changes to be committed:(use "git restore --staged <file>..." to unstage)renamed:    readme.txt -> README.txt[student@harbor demo]$ ls
Dockerfile  HELP.md  mvnw  mvnw.cmd  pom.xml  README.txt  src  target
[student@harbor demo]$ git commit
[master 8150f9a] rename readme to README1 file changed, 0 insertions(+), 0 deletions(-)rename readme.txt => README.txt (100%)
[student@harbor demo]$ git log
commit 8150f9ac7721a074a7bea55f1fa9a321482cfee1 (HEAD -> master)
Author: student <student@123.com>
Date:   Fri Oct 18 15:03:04 2024 +0800rename readme to READMEcommit 5066a6f4e44521ca7ae92f48a482e90d644b8c85
Author: student <student@123.com>
Date:   Fri Oct 18 14:58:28 2024 +0800delete unraleted filescommit 1b648917cc774f1239a6be2b8ccae2b6a7ca1ac6
Author: student <student@123.com>
Date:   Fri Oct 18 14:55:54 2024 +0800testcommit b7abcf70832a81e796e1a16a3548038d1d169577
Author: student <student@123.com>
Date:   Fri Oct 18 14:54:14 2024 +0800add all changes to repositorycommit 6acb2a653db83193e4b7b51ecff39d6d252af457
Author: student <student@123.com>
Date:   Fri Oct 18 14:45:55 2024 +0800add readme filecommit 78aa0f986c5e4084969b674bea50b20949966250
Author: student <student@123.com>
Date:   Fri Oct 18 14:39:25 2024 +0800source code and project maven configurationcommit 6072b75fed80c8ab6777dd52c7955ead217e5f8e
Author: student <student@123.com>
Date:   Fri Oct 18 14:20:53 2024 +0800Add container image build file
[student@harbor demo]$ git log -2
commit 8150f9ac7721a074a7bea55f1fa9a321482cfee1 (HEAD -> master)
Author: student <student@123.com>
Date:   Fri Oct 18 15:03:04 2024 +0800rename readme to READMEcommit 5066a6f4e44521ca7ae92f48a482e90d644b8c85
Author: student <student@123.com>
Date:   Fri Oct 18 14:58:28 2024 +0800delete unraleted files
[student@harbor demo]$ vim README.txt
[student@harbor demo]$ git status -sM README.txt
[student@harbor demo]$ git add  README.txt
[student@harbor demo]$ vim pom.xml
[student@harbor demo]$ git status -s
M  README.txtM pom.xml
[student@harbor demo]$ git commit -m 'modify readme'
[master bde40f3] modify readme1 file changed, 2 insertions(+)
[student@harbor demo]$ git commit --amend
[master 0ae7c5d] modify readmeDate: Fri Oct 18 15:13:04 2024 +08001 file changed, 2 insertions(+)
[student@harbor demo]$ git add pom.xml
[student@harbor demo]$ git commit --amend
[master 4516228] modify readme and pom.xmlDate: Fri Oct 18 15:13:04 2024 +08002 files changed, 3 insertions(+), 1 deletion(-)
[student@harbor demo]$ git log -3
commit 451622813a89a19b12be78dd6aa9e364bb891164 (HEAD -> master)
Author: student <student@123.com>
Date:   Fri Oct 18 15:13:04 2024 +0800modify readme and pom.xmlcommit 8150f9ac7721a074a7bea55f1fa9a321482cfee1
Author: student <student@123.com>
Date:   Fri Oct 18 15:03:04 2024 +0800rename readme to READMEcommit 5066a6f4e44521ca7ae92f48a482e90d644b8c85
Author: student <student@123.com>
Date:   Fri Oct 18 14:58:28 2024 +0800delete unraleted files

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

表贴式永磁同步电机无感控制-基于滑膜观测器SMO法

导读:在全速域范围内,一般的永磁同步电机无感控制要分为低速区域和高速区域两个部分。原因在于常规的方法是利用模型建立反电动势观测器来求解转子位置信息,但其只适合在中高速区域。本文介绍一种基于滑膜观测器SMO法+PLL的方法。 需要文章中的仿真,关注微信公众号:浅谈电…

python机器人编程——用python调用API控制wifi小车的实例程序

目录 一、前言二、一个客户端的简单实现2.1 首先定义一个类及属性2.2 其次定义连接方法2.3 定义一些回调函数2.4 定义发送小车指令方法2.5 定义一个正常关闭方法 三、python编程控制小车的demo实现四、小结PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源p…

【大数据技术基础 | 实验四】HDFS实验:读写HDFS文件

文章目录 一、实验目的二、实验要求三、实验原理&#xff08;一&#xff09;Java Classpath&#xff08;二&#xff09;Eclipse Hadoop插件 四、实验环境五、实验内容和步骤&#xff08;一&#xff09;配置master服务器classpath&#xff08;二&#xff09;使用master服务器编写…

git修改默认分支

你可以通过以下步骤修改 Git 仓库的默认分支&#xff1a; 1. 修改现有仓库的默认分支&#xff1a; 如果你已经有一个 Git 仓库&#xff0c;想要更改默认分支的名字&#xff08;例如从 master 改为 main&#xff09;&#xff1a; # 重命名当前分支为 main git branch -m mast…

C. Klee in Solitary Confinement(2021 南京 ICPC)

C. Klee in Solitary Confinement 观察题目&#xff0c;发现暴力枚举区间不可行。 考虑一个经典套路&#xff1a;独立处理每个数字&#xff08;考虑一个数字作为众数的时候&#xff0c;只有x和x-k会对答案造成影响&#xff0c;其他是不用考虑的&#xff09; 于是&#xff0c;考…

JVM学习总结:字节码篇

本文是学习尚硅谷宋红康老师主讲的 尚硅谷JVM精讲与GC调优教程 的总结 &#xff0c;部分内容也参考了 JavaGuide 网站&#xff08;文末有链接&#xff09; JVM 概述 Oracle JDK 与 OpenJDK 是什么关系&#xff1f; 2006 年 SUN 公司将 Java 开源&#xff0c;也就有了 OpenJDK。…

Games202作业5(完结)

单帧降噪 也就是针对图像空间进行降噪 也就是我们需要在像素&#xff08;i,j&#xff09;的四周进行采样&#xff0c;然后将采样的权重加到一起&#xff0c;然后所有的权重和像素的乘积也加到一起&#xff0c;然后相除&#xff0c;得到最终滤波后的(i,j)像素期望的结果。 Buf…

P4可编程技术详解:从理论到硬件实现

P4的诞生 为打破传统的固定封装模式&#xff0c;充分解放数据平面的编程能力&#xff0c;Nick McKeown领导的斯坦福大学研究团队于2014年提出可编程处理语言P4。借助P4的数据平面编程能力&#xff0c;用户可在网卡、交换机、路由器等网络设备上实现包括VXLAN、MPLS等在内的各种…

电影评论网站开发:Spring Boot技术指南

3系统分析 3.1可行性分析 通过对本电影评论网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本电影评论网站采用SSM框架&#xff0c;JAVA作为开发语言&#…

音视频入门基础:H.264专题(19)——FFmpeg源码中,获取avcC封装的H.264码流中每个NALU的长度的实现

一、引言 从《音视频入门基础&#xff1a;H.264专题&#xff08;18&#xff09;——AVCDecoderConfigurationRecord简介》中可以知道&#xff0c;avcC跟AnnexB不一样&#xff0c;avcC包装的H.264码流中&#xff0c;每个NALU前面没有起始码。avcC通过在每个NALU前加上NALUnitL…

Linux文件的查找和打包以及压缩

文件的查找 文件查找的用处&#xff0c;在我们需要文件但却又不知道文件在哪里的时候 文件查找存在着三种类型的查找 1、which或whereis&#xff1a;查找命令的程序文件位置 2、locate&#xff1a;也是一种文件查找&#xff0c;但是基于数据库的查找 3、find&#xff1a;针…

基于SpringBoot+Vue+uniapp微信小程序的社区门诊管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

01 设计模式-创造型模式-工厂模式

工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一&#xff0c;它提供了一种创建对象的方式&#xff0c;使得创建对象的过程与使用对象的过程分离。 工厂模式提供了一种创建对象的方式&#xff0c;而无需指定要创建的具体类。 通过使用工厂模式…

1.2.3 TCP IP模型

TCP/IP模型&#xff08;接网叔用&#xff09; 网络接口层 网络层 传输层 应用层 理念&#xff1a;如果某些应用需要“数据格式转换”“会话管理功能”&#xff0c;就交给应用层的特定协议去实现 tip&#xff1a;数据 局部正确不等于全局正确 但是&#xff0c;数据的 全局正…

数码准备记录

1.数据结构 常见的数据结构包括数组、链表、栈、队列、树&#xff08;如二叉树、B树、B树&#xff09;、图等 2.队列和栈的区别 队列是一种先入先出的数据结构&#xff0c;即最先加入的元素被最先移除&#xff1b; 栈是一种后进后出的数据结构&#xff0c;即最后加入的元素…

SQL Server的介绍以及存储过程和函数的使用

SQL Server 是由微软开发的一个关系型数据库管理系统(RDBMS)。以下是关于 SQL Server 的详细介绍: 一、主要特点 强大的数据处理能力: 支持大规模数据存储和处理,可以处理海量的结构化数据。无论是小型企业应用还是大型企业级系统,SQL Server 都能提供高效的数据存储和检…

数据分箱:如何确定分箱的最优数量?

选择最优分箱可以考虑以下几种方法&#xff1a; 一、基于业务理解 分析业务背景&#xff1a;从业务角度出发&#xff0c;某些特征可能有自然的分组或区间划分。例如&#xff0c;年龄可以根据不同的人生阶段进行分箱&#xff0c;收入可以根据常见的收入等级划分。 优点&#x…

RTMP协议分析

理论 总体介绍 RTMP协议是应⽤层协议&#xff0c;是要靠底层可靠的传输层协议&#xff08;通常是TCP&#xff09;来保证信息传输的可靠性的。在基于传输层协议的链接建⽴完成后&#xff0c;RTMP协议也要客户端和服务器通过“握⼿”来建⽴基于传输层链接之上的RTMP Connection链…

《测试能否转产品经理?——优势与难点并存的转型之路》

引言 在软件行业中&#xff0c;测试人员和产品经理这两个角色似乎有着不同的定位和职责。然而&#xff0c;随着行业的发展和个人职业发展的需求&#xff0c;越来越多的测试人员开始思考一个问题&#xff1a;我能不能转产品经理呢&#xff1f; 一、测试转产品经理的优势 对产…

Collection 单列集合 List Set

集合概念 集合是一种特殊类 ,这些类可以存储任意类对象,并且长度可变, 这些集合类都位于java.util中,使用的话必须导包 按照存储结构可以分为两大类 单列集合 Collection 双列集合 Map 两种 区别如下 Collection 单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两…