<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Louis_815的博客]]></title><description><![CDATA[奋斗就会有收获]]></description><link>https://blog.youkuaiyun.com/Louis_815</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Louis_815]]></copyright><item><title><![CDATA[Docker镜像打包示例]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/121374707</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/121374707</guid><author>Louis_815</author><pubDate>Wed, 17 Nov 2021 11:43:29 +0800</pubDate><description><![CDATA[一、war包（SpringMVC项目）镜像部署
1、拉取tomcat镜像

docker pull tomcat:8.5.30

2、上传需要部署的war包（以hello.war为例）到自定义的工作目录下

3、在上个步骤创建的工作目录下创建Dockerfile文件。将war包和Dockerfile文件放在同一目录下。Dockerfile文件内容如下：

from tomcat:8.5.30

ENV LANG C.UTF-8

ENV TZ=Asia/Shanghai

ENV JAVA_OPTS ...]]></description><category></category></item><item><title><![CDATA[Linux文件名及目录提取]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/121126820</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/121126820</guid><author>Louis_815</author><pubDate>Wed, 03 Nov 2021 17:46:39 +0800</pubDate><description><![CDATA[一、使用${}

1、${var##*/}
该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容，返回从左边算起的最后一个'/'（不含该字符）的右边的内容。使用例子及结果如下：



从运行结果可以看到，使用该命令，可以提取出我们需要的文件名file.txt。

若使用时在shell程序文件中，可以使用变量来保存这个结果，再加以利用，如file=${var##*/}

2、${var##*.}

该命令的作用是去掉变量var从左边算起的最后一个'.'字符及其左边的内容，返回从左边算起的最]]></description><category></category></item><item><title><![CDATA[Ubuntu报错：下列签名无效： EXPKEYSIG ******* Open Robotics ＜info@osrfoundation.org＞]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/121008330</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/121008330</guid><author>Louis_815</author><pubDate>Thu, 28 Oct 2021 10:07:47 +0800</pubDate><description><![CDATA[文章目录
一、问题描述
二、解决方法
一、问题描述
自己在运行 sudo apt-get update遇到如下报错

W: GPG 错误：http://mirrors.ustc.edu.cn/ros/ubuntu xenial InRelease: 下列签名无效： EXPKEYSIG F42ED6FBAB17C654 Open Robotics &lt;info@osrfoundation.org&gt;
E: 仓库 “http://mirrors.ustc.edu.cn/ros/ubuntu xenial]]></description><category></category></item><item><title><![CDATA[C++(20):线程池的实现和使用]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/119253674</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/119253674</guid><author>Louis_815</author><pubDate>Fri, 30 Jul 2021 18:09:33 +0800</pubDate><description><![CDATA[线程池作用
线程池能够减少创建的线程个数，线程池的出现着眼于减少线程本身带来的开销

线程池适合场景
(1)单位时间内处理任务频繁而且任务处理时间短
(2)对实时性要求较高。如果接受到任务后在创建线程，可能满足不了实时要求，因此必须采用线程池进行预创建。



实现代码
代码来自github上的一位大神，只用一个简单的头文件就实现了线程池：https://github.com/progschj/ThreadPool


#ifndef THREAD_POOL_H
#define THREAD_POO...]]></description><category></category></item><item><title><![CDATA[Linux crontab命令详解]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/107219706</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/107219706</guid><author>Louis_815</author><pubDate>Thu, 09 Jul 2020 08:27:26 +0800</pubDate><description><![CDATA[crontab：定时任务的守护进程，精确到分，设计秒的我们一般写脚本 --&gt;相当于闹钟
 日志文件: ll /var/log/cron*
 编辑文件： vim /etc/crontab
 进程：ps -ef | grep crond ==&gt; /etc/init.d/crond restart
 作用：定时备份，实时备份

常见命令参数


			1

			2

			3

			4

			5

			6

			7
...]]></description><category></category></item><item><title><![CDATA[卡尔曼滤波经典讲解，C++算法实现（转载）]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/104635073</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/104635073</guid><author>Louis_815</author><pubDate>Tue, 03 Mar 2020 16:20:25 +0800</pubDate><description><![CDATA[在学习卡尔曼滤波器之前，首先看看为什么叫“卡尔曼”。跟其他著名的理论（例如傅立叶变换，泰勒级数等等）一样，卡尔曼也是一个人的名字，而跟他们不同的是，他是个现代人！
 卡尔曼全名Rudolf Emil Kalman，匈牙利数学家，1930年出生于匈牙利首都布达佩斯。1953，1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器...]]></description><category></category></item><item><title><![CDATA[FFmpeg 被声明为已否决 deprecated]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/93598163</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/93598163</guid><author>Louis_815</author><pubDate>Tue, 25 Jun 2019 10:29:25 +0800</pubDate><description><![CDATA[不用再取消SDL检查，不用再添加#pragma warning(disable :4996)，下面才是正确的解决方法！！

以下是一些常见的deprecated问题，遇到下述没有列出的问题，可以打开相应的头文件，在里面搜索ctrl+F，会有英文说明的，如下：











PIX_FMT_YUV420P -&gt; AV_PIX_FMT_YUV420P
'AVStream::cod...]]></description><category></category></item><item><title><![CDATA[FFmpeg学习4：音频格式转换]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/93163196</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/93163196</guid><author>Louis_815</author><pubDate>Fri, 21 Jun 2019 09:55:39 +0800</pubDate><description><![CDATA[前段时间，在学习试用FFmpeg播放音频的时候总是有杂音，网上的很多教程是基于之前版本的FFmpeg的，而新的FFmepg3中audio增加了平面（planar）格式，而SDL播放音频是不支持平面格式的，所以通过FFmpeg解码出来的数据不能直接发送到SDL进行播放，需要进行一个格式转换。通过网上一些资料，也能够正确的播放音频了，但是对具体的音频转换过程不是很了解，这里就对FFmpeg的对音频的存...]]></description><category></category></item><item><title><![CDATA[几种常见的设计模式（含C++代码）]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/90719170</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/90719170</guid><author>Louis_815</author><pubDate>Fri, 31 May 2019 16:48:53 +0800</pubDate><description><![CDATA[本文部分转载于https://blog.youkuaiyun.com/hechao3225/article/details/71366058

本文介绍几种常用的设计模式并给出C++实现。



1.单例模式

作用：保证一个类只有一个实例，并提供一个访问它的全局访问点，使得系统中只有唯一的一个对象实例。

应用：常用于管理资源，如日志、线程池

实现要点：

在类中，要构造一个实例，就必须调用类的构造函数...]]></description><category></category></item><item><title><![CDATA[linux 解压命令详解]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/90181145</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/90181145</guid><author>Louis_815</author><pubDate>Mon, 13 May 2019 20:54:14 +0800</pubDate><description><![CDATA[原文网址：http://zhidao.baidu.com/question/90378903.html

tar
-c: 建立压缩档案
-x：解压
-t：查看内容
-r：向压缩归档文件末尾追加文件
-u：更新原压缩包中的文件

这五个是独立的命令，压缩解压都要用到其中一个，可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z：有gzip属性的
-j：有...]]></description><category></category></item><item><title><![CDATA[Red Hat Linux 下命令行界面与图形界面的切换]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/90138936</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/90138936</guid><author>Louis_815</author><pubDate>Sun, 12 May 2019 12:11:18 +0800</pubDate><description><![CDATA[原文地址：http://blog.youkuaiyun.com/oathevil/article/details/5890261



版权声明：本文为博主原创文章，未经博主允许不得转载。



redhat 默认图形界面登录方式改为默认命令行界面登录方式



# vi /etc/inittab



id:5:initdefault更改为id:3:initdefault



在图形界面方式启动...]]></description><category></category></item><item><title><![CDATA[git命令]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/80390166</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/80390166</guid><author>Louis_815</author><pubDate>Mon, 21 May 2018 11:42:30 +0800</pubDate><description><![CDATA[学无止境，精益求精！十年河东，十年河西，莫欺少年穷！学历代表你的过去，能力代表你的现在，学习代表你的将来！本篇博客是转发的别人的，原文地址：http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html很久没写博客了，都是工作太忙闹的，索性今儿转发一篇！省的博客园太冷清了...Git图形化界面我用的还可以，但是命令就不太会了，索性和大家一起学...]]></description><category></category></item><item><title><![CDATA[ffmpeg实战教程（五）libswscale，libavfilter实践指南]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/79634444</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/79634444</guid><author>Louis_815</author><pubDate>Wed, 21 Mar 2018 08:16:32 +0800</pubDate><description><![CDATA[1.libswscale实现YUV转RGBlibswscale里面实现了各种图像像素格式的转换。libswscale使用起来很方便，最主要的函数只有3个： （1） sws_getContext()：使用参数初始化SwsContext结构体。 （2） sws_scale()：转换一帧图像。 （3） sws_freeContext()：释放SwsContext结构体。 其中sws_getContext...]]></description><category></category></item><item><title><![CDATA[ffmpeg实战教程（四）格式转换如MP4转MKV等]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/79634439</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/79634439</guid><author>Louis_815</author><pubDate>Wed, 21 Mar 2018 08:15:19 +0800</pubDate><description><![CDATA[知识延伸：I,P，B帧和PTS，DTS的关系基本概念：I frame ：帧内编码帧 又称intra picture，I 帧通常是每个 GOP（MPEG 所使用的一种视频压缩技术）的第一个帧，经过适度地压缩，做为随机访问的参考点，可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame: 前向预测编码帧 又称predictive-frame，通过充分将低于图像序列中前面已编码帧的时间冗余...]]></description><category></category></item><item><title><![CDATA[ffmpeg实战教程（三）音频PCM采样为AAC，视频YUV编码为H264/HEVC]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/79634435</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/79634435</guid><author>Louis_815</author><pubDate>Wed, 21 Mar 2018 08:14:29 +0800</pubDate><description><![CDATA[音频PCM采样数据编码为压缩码流（MP3，WMA，AAC等)简单介绍一下流程中各个函数的意义：av_register_all()：注册FFmpeg所有编解码器。

avformat_alloc_output_context2()：初始化输出码流的AVFormatContext。

avio_open()：打开输出文件。

av_new_stream()：创建输出码流的AVStream。

avco...]]></description><category></category></item><item><title><![CDATA[ffmpeg实战教程（二）用SDL播放YUV，并结合ffmpeg实现简易播放器]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/79634432</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/79634432</guid><author>Louis_815</author><pubDate>Wed, 21 Mar 2018 08:12:41 +0800</pubDate><description><![CDATA[我们先实现用SDL播放YUV数据先来了解一下基本概念SDL基本函数： [初始化] * SDL_Init(): 初始化SDL。 * SDL_CreateWindow(): 创建窗口（Window）。 * SDL_CreateRenderer(): 基于窗口创建渲染器（Render）。 * SDL_CreateTexture(): 创建纹理（Texture）。[循环渲染数据] * SDL_Update...]]></description><category></category></item><item><title><![CDATA[FFMPEG 在vs2010中的环境配置]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/79634424</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/79634424</guid><author>Louis_815</author><pubDate>Wed, 21 Mar 2018 08:11:26 +0800</pubDate><description><![CDATA[从官网上下载ffmpeg最新的版本。网址为http://ffmpeg.zeranoe.com/builds/。例如我需要的是64-bitBuilds (Shared)和64-bit Builds (Dev)，版本号要相对应。64-bit Builds (Shared)主要包含了所要用到的dll文件，64-bit Builds (Dev)主要包含了所要用的头文件和lib文件。其实这些lib并不是传统...]]></description><category></category></item><item><title><![CDATA[ffmpeg实战教程（一）Mp4，mkv等格式解码为h264和yuv数据]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/79634400</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/79634400</guid><author>Louis_815</author><pubDate>Wed, 21 Mar 2018 08:04:44 +0800</pubDate><description><![CDATA[FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。而网上对这些功能的使用大多是基于命令行的。这不利于我们深入学习定制化ffmpeg，今后我将写一系列的用代码实现这些功能的教程供大家学习。这系列的前部分我打算写在windows上的实现，后部分写移植到Android系统上实现。 代码实现的前提是对ffmpeg源码有一定的了解，如果你不了解可以看这里 ffmpeg源码...]]></description><category></category></item><item><title><![CDATA[ffmpeg源码简析（十）libswscale中的SwsContext，sws_scale()]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/79621407</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/79621407</guid><author>Louis_815</author><pubDate>Tue, 20 Mar 2018 10:02:53 +0800</pubDate><description><![CDATA[libswscale是一个主要用于处理图片像素数据的类库。可以完成图片像素格式的转换，图片的拉伸等工作。 libswscale常用的函数数量很少，一般情况下就3个：sws_getContext()：初始化一个SwsContext。

sws_scale()：处理图像数据。
sws_freeContext()：释放一个SwsContext。
其中sws_getContext()也可以用sws_get...]]></description><category></category></item><item><title><![CDATA[ffmpeg源码简析（九）av_log()，AVClass，AVOption]]></title><link>https://blog.youkuaiyun.com/Louis_815/article/details/79621379</link><guid>https://blog.youkuaiyun.com/Louis_815/article/details/79621379</guid><author>Louis_815</author><pubDate>Tue, 20 Mar 2018 10:01:36 +0800</pubDate><description><![CDATA[1.av_log()av_log()是FFmpeg中输出日志的函数。随便打开一个FFmpeg的源代码文件，就会发现其中遍布着av_log()函数。一般情况下FFmpeg类库的源代码中是不允许使用printf()这种的函数的，所有的输出一律使用av_log()。 av_log()的声明位于libavutil\log.h，如下所示。void av_log(void *avcl, int level, ...]]></description><category></category></item></channel></rss>