【HLS】HTTP Live Streaming (HLS)

先贴出一系列参考网站 :

  1. 苹果官方文档
  2. HLS-iOS视频播放服务架构深入探究
  3. HLS标准协议

概念解释 :

HLS是一套解决方案, 包含三个部分 :



Server :
服务器组件负责获取的媒体输入流 , 然后Media编码后 MPEG-4(H.264 video 和 AAC audio)格式然后用硬件打包到 MPEG-2 (MPEG-2 transport stream)的传输流中。图中显示,传输流会经过stream segmenter, 这里的工作是MPEG-2传输流会被分散为小片段然后保存为一个或多个系列的 .ts 格式的媒体文件。这个过程需要借助编码工具来完成,比如 Apple stream segmenter。
(视频类是.ts文件,纯音频会被编码为一些音频小片段,通常为 ADTS头的AAC、MP3、或者 AC-3格式。)
服务端可以采用硬件编码和软件编码两种形式,其功能都是按照上文描述的规则对现有的媒体文件进行切片并使用索引文件进行管理。而软件切片通常会使用 Apple 公司提供的工具或者第三方的集成工具。

Distribution :
同时上面提到的那个切片器(segmenter)也会创建一个索引文件,通常会包含这些媒体文件的一个列表,也能包含元数据。他一般都是一个.M38U 个hi的列表列表元素会关联一个 URL 用于客户端访问。然后按序去请求这些 URL

client :
分配组件由标准的网络服务器。他们负责接受Client客户端请求并提供相关联的资源给客户端。


接下来将上面的图的每一块解释一下

Media encoder (媒体编码) :
媒体编码器获取到音视频设备的实时信号,将其编码后压缩用于传输。而编码格式必须配置为客户端所支持的格式,比如 H.264 视频和HE-AAC 音频。当前,支持 用于视频的 MPEG-2 传输流和 纯音频 MPEG 基本流。编码器通过本地网络将 MPEG-2 传输流分发出去,送到流切片器(Stream segmenter)那里。标准传输流和压缩传输流无法混合使用。传输流(这个流是指, 图中MPEG-2 transport stream流)可以被打包成很多种不同的压缩格式,这里有两个表详细列举了支持的压缩格式类型。 音频框架技术: Audio Technologies
视频框架 : Vedio Technologies

在编码中涂,不要修改视频编码器的设置,比如视频大小或者编码解码器类型。如果避免不了,那修改动作必须发生在一个片段边界。并且需要早之后相连的片段上用 EXT-X-DISCONTINUITY进行标记。

Stream segmenter (流切片器)
流切片器(通常是一个软件,一个SDK)会通过本地网络从上面的媒体编码器中读取数据,然后将着这些数据一组相等时间间隔的小媒体文件。虽然每一个片段都是一个单独的文件,但是他们的来源是一个连续的流,切完照样可以无缝重构回去。
切片器在切片同时会创建一个索引文件(Index file),索引文件会包含这些切片文件的引用。每当一个切片文件生成后,索引文件都会进行更新。索引用于追踪切片文件的有效性和定位切片文件的位置。切片器同时也可以对你的媒体片段进行加密并且创建一个密钥文件作为整个过程的一部分。

文件切片器(相对于上面的流切片器, 就是切文件的)

如果已经有编码后的文件(而不是编码流),你可以使用文件切片器,通过它对编码后的媒体文件进行 MPEG-2 流的封装并且将它们分割为等长度的小片段。切片器允许你使用已经存在的音视频库用于 HLS 服务。它和流切片器的功能相似,但是处理的源从流替换流为了文件。

媒体片段文件,(上面切除来的小片段)

媒体片段是由切片器生成的,基于编码后的媒体源,并且是由一系列的 .ts(如果是纯音频则不是.ts格式)格式的文件组成,其中包含了你想通过 MPEG-2 传送流携带的 H.264 视频 和 AAC /MP3/AC-3 音频。对于纯音频的广播,切片器可以生产 MPEG 基础音频流,其中包含了 ADTS头的AAC、MP3、或者AC3等音频。

索引文件(PlayLists)

通常由切片器附带生成,保存为 .m3u8格式,.m3u一般用于 MP3 音频的索引文件。Note如果你的扩展名是.m3u,并且系统支持.mp3文件,那客户的软件可能要与典型的 MP3 playList 保持一致来完成 流网络音频的播放。


.m3u8 PlayLists文件

为了更精确,你可以在 version 3 或者之后的协议版本中使用 float 数来标记媒体片段的时长,并且要明确写明版本号,如果没有版本号,则必须与 version 1 协议保持一致。你可以使用官方提供的切片器去生产各种各样的 playlist 索引文件,详见 媒体文件切片器

Distribution分布式部分
分布式系统是一个网络服务或者一个网络缓存系统,用于通过 HTTP 向客户端发送媒体文件和索引文件。不用自定义模块发送内容。通常仅仅需要很简单的网络配置即可使用。而且这种配置一般就是限制指定 .M38U 文件和 .ts 文件的 MIME 类型。详见 部署 HTTP Live Streaming

Client客户端部分
客户端开始时会去抓取 索引文件(.m3u8/.m3u),其中用URL来标记不同的流。索引文件可以指定可用媒体文件的位置,解密的密钥,以及任何可以切换的流。对于选中的流,客户端会有序的下载每一个可获得的文件。每一个文件都包含流中的连环碎片。一旦下载到足够量的数据,客户端会开始向用户展示重新装配好的媒体资源。
客户端负责抓取任何解密密钥,认证或者展示一个用于认证的界面,之后再解密需要的文件。
这个过程会一直持续知道出现 结束标记 #EXT-X-ENDLIST。如果结束标记不出现,该索引就是用于持续广播的。客户端会定期的加载一些新的索引文件。客户端会从新更新的索引文件中去查找加密密钥并且将关联的URL加入到请求队列中去。


会话模式

通常包含 Live 和 VOD (点播)两种
点播VOD的特点就是可以获取到一个静态的索引文件,其中那个包含一套完整的资源文件地址。这种模式允许客户端访问全部节目。VOD点播拥有先进的下载技术,包括加密认证技术和动态切换文件传输速率的功能(通常用于不同分辨率视频之间的切换)。

Live 会话就是实时事件的录制展示。它的索引文件一直处于动态变化的,你需要不断的更新索引文件 playlist 然后移除旧的索引文件。这种类型通过向索引文件添加媒体地址可以很容易的转化为VOD类型。在转化时不要移除原来旧的源,而是通过添加一个 #ET-X-ENDLIST
标记来终止实时事件。转化时如果你的索引文件中包含 EXT-X-PLAYLIST-TYPE
标签,你需要将值从 EVENT
改为 VOD。


抓取分析

主索引 :

直播源 : http://dlhls.cdn.zhanqi.tv/zqlive/30647_JIjP2.m3u8

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,PUBLISHEDTIME=1462118775,CURRENTTIME=1462155858,BANDWIDTH=400000,RESOLUTION=854x480
30647_JIjP2_400/index.m3u8?Dnion_vsnae=30647_JIjP2
#EXT-X-STREAM-INF:PROGRAM-ID=1,PUBLISHEDTIME=1462118776,CURRENTTIME=1462155858,BANDWIDTH=700000,RESOLUTION=1280x720
30647_JIjP2_700/index.m3u8?Dnion_vsnae=30647_JIjP2
#EXT-X-STREAM-INF:PROGRAM-ID=1,PUBLISHEDTIME=1462118775,CURRENTTIME=1462155858,BANDWIDTH=1024000,RESOLUTION=1280x720
30647_JIjP2_1024/index.m3u8?Dnion_vsnae=30647_JIjP2

每一个标签的格式, 属性, 作用,请参考这里


#EXTM3U
每个M3U文件第一行必须是这个tag,请标示作用

#EXT-X-VERSION
用以标示协议版本。(到我写这篇文章为止,HLS协议已经经历了19个版本了,既然这里是3, 那么这里用的就是HLS协议第三个版本)此标签只能有0或1个,不写代表使用版本1。

#EXT-X-STREAM-INF
#EXT-X-STREAM-INF的格式 :
#EXT-X-STREAM-INF : [attribute=value][,attribute=value]*
标签的属性列表中直接指明当前流是VIDEO还是AUDIO
属性 :

  1. BANDWIDTH 指定码率
  2. PROGRAM-ID 唯一ID (这个属性在后面的协议版本废除了)
  3. CODECS 指定流的编码类型

#EXT-X-MEDIA-SEQUENCE:1462118775 每一个media URI 在 PlayList中只有唯一的序号,相邻之间序号+1, 一个media URI并不是必须要包含的,如果没有,默认为0


如果你的视频具备流切换功能,处于不同的带宽、不同的网速播放不同清晰度的视频流,这样只能的流切换可以保证用户感觉到非常流畅的观影体验,同时不同的设备也可以作为选择的条件,比如视网膜屏可以再网速良好的情况下播放清晰度更高的视频流。

这种功能的实现在于,索引文件的特殊结构


图片来源于苹果官网
  1. 主索引文件和子索引文件都是.M3U8的playlist
  2. 主索引文件只需下载一次,但对于直播节目子索引文件定期重新加载。
  3. 客户端可能会在任何时候改变到备用流,所有的切换都应该使用相同的音频文件
  4. 这一套不同速率的视频都是有工具生成的
    使用variantplaylistcreator工具并且为 mediafilesegmenter
    或者 mediastreamsegmenter
    指定 -generate-variant-playlist 选项

子索引 :

根据上面的主索引文件,这里我选择了,1024, 码率为1024000的数据源, 将URL拼接一下, 得到下面的URL
http://dlhls.cdn.zhanqi.tv/zqlive/30647_JIjP2_1024/index.m3u8?Dnion_vsnae=30647_JIjP2

结果 :

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:5647
#EXT-X-TARGETDURATION:10
#EXTINF:9.560,
1462167932532_1462167932532.ts?Dnion_vsnae=30647_JIjP2
#EXTINF:6.520,
1462167942133_1462167942133.ts?Dnion_vsnae=30647_JIjP2
#EXTINF:9.960,
1462167948685_1462167948685.ts?Dnion_vsnae=30647_JIjP2

传说已久的.ts文件已经看到, 这些就是视频数据源文件,解释一下标签的作用

#EXT-X-MEDIA-SEQUENCE
每一个media URI 在 PlayList中只有唯一的序号,相邻之间序号+1
(上面那个URL, 不断请求的过程中能不断获取子索引, 每一次获取下来的都能发现EXT-X-MEDIA-SEQUENCE会不断增大)

#EXT-X-TARGETDURATION:10
每一份媒体文件的时间, 以秒为单位, 这里是10秒一份

#EXTINF 
格式 #EXTINF <duration>,</span><br><span style="color:#2f2f2f;">每一份媒体文件的详细信息, duration : 媒体持续时间, 应该四舍五入为整数,上面的例子,9.560就是这一份媒体文件的持续时间</span><br><span style="color:#2f2f2f;">title : 1462167932532_1462167932532.ts?Dnion_vsnae=30647_JIjP2这个是这一份媒体文件的URL地址。</span></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1177004249637269504"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(协议相关,视频,IPTV,HLS)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1881548221394776064.htm" title="Python Web开发:使用FastAPI构建视频流媒体平台" target="_blank">Python Web开发:使用FastAPI构建视频流媒体平台</a> <span class="text-muted">Switch616</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%AA%92%E4%BD%93/1.htm">媒体</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>PythonWeb开发:使用FastAPI构建视频流媒体平台目录用户认证与视频上传视频转码与存储实时视频流播放与多媒体服务1.用户认证与视频上传在构建视频流媒体平台时,用户认证与视频上传是两个至关重要的功能。通过用户认证机制,平台能够确保只有经过授权的用户才能上传视频。视频上传功能则涉及到如何处理视频文件、存储视频并为后续播放提供支持。FastAPI作为一个高效的Web框架,可以轻松处理这些需求。</div> </li> <li><a href="/article/1881544568634142720.htm" title="路由器wan口和lan口短接_路由器LAN和WAN短接可以做什么呢?" target="_blank">路由器wan口和lan口短接_路由器LAN和WAN短接可以做什么呢?</a> <span class="text-muted">weixin_34293510</span> <a class="tag" taget="_blank" href="/search/%E8%B7%AF%E7%94%B1%E5%99%A8wan%E5%8F%A3%E5%92%8Clan%E5%8F%A3%E7%9F%AD%E6%8E%A5/1.htm">路由器wan口和lan口短接</a> <div>前言众所周知,家用的弱电箱是非常小的,况且基本上都是铁做的,基本上塞下一个光猫和路由器基本上就满了,就算都塞在里面的话,第一个最让人头疼的问题就是散热,时间久了路由器容易宕机。其次就是弱电箱是金属制品,会屏蔽一定的Wi-Fi信号,导致手机看视频卡顿,游戏延迟变高,智能化设备频繁掉线等。实际体验那该如何是好呢?先把路由器放在客厅或者其他有网线接口的地方,再把路由器的wan口和lan口短接,就可以了。</div> </li> <li><a href="/article/1881542296109903872.htm" title="Android15音频进阶之音效sessionId(一百零四)" target="_blank">Android15音频进阶之音效sessionId(一百零四)</a> <span class="text-muted">Android系统攻城狮</span> <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/Audio%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%BF%9B%E9%98%B6%E7%B3%BB%E5%88%97/1.htm">Audio工程师进阶系列</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/Android15/1.htm">Android15</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E6%95%88/1.htm">音效</a><a class="tag" taget="_blank" href="/search/Visualizer%E5%A4%84%E7%90%86/1.htm">Visualizer处理</a><a class="tag" taget="_blank" href="/search/audiosessionId/1.htm">audiosessionId</a> <div>简介:CSDN博客专家、《Android系统多媒体进阶实战》一书作者新书发布:《Android系统多媒体进阶实战》优质专栏:Audio工程师进阶系列【原创干货持续更新中……】优质专栏:多媒体系统工程师系列【原创干货持续更新中……】优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课</div> </li> <li><a href="/article/1881531689491034112.htm" title="10多套html视频教程,让你彻底搞懂html。学习路上助你一臂之力!" target="_blank">10多套html视频教程,让你彻底搞懂html。学习路上助你一臂之力!</a> <span class="text-muted">guoguo507</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div>快速入口在文章最后,大家耐心观看!谢谢(想学其他更多编程技术视频,请进我的博客查看。)踏上HTML之旅:从新手到进阶的蜕变在当今数字化时代,网页无处不在,从社交媒体到在线购物,从新闻资讯到学习平台。而HTML作为构建网页的基石,掌握它不仅是踏入Web开发领域的第一步,更是理解互联网信息呈现方式的关键。对于渴望在网页设计、前端开发领域一展身手的人来说,从浅入深地学习HTML是开启精彩旅程的钥匙。一、</div> </li> <li><a href="/article/1881531058680295424.htm" title="深入理解AIGC背后的核心算法:GAN、Transformer与Diffusion Models" target="_blank">深入理解AIGC背后的核心算法:GAN、Transformer与Diffusion Models</a> <span class="text-muted">忘梓.</span> <a class="tag" taget="_blank" href="/search/%E6%9D%82%E6%96%87/1.htm">杂文</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%88%90%E5%AF%B9%E6%8A%97%E7%BD%91%E7%BB%9C/1.htm">生成对抗网络</a> <div>深入理解AIGC背后的核心算法:GAN、Transformer与DiffusionModels前言随着人工智能技术的发展,AIGC(AIGeneratedContent,人工智能生成内容)已经不再是科幻电影中的幻想,而成为了现实生活中的一种新兴力量。无论是自动生成文章、绘制图像、生成音乐还是创作视频,AIGC都在各个内容创作领域崭露头角。然而,这些“智能创作”的背后究竟依赖于哪些算法?今天,我们将</div> </li> <li><a href="/article/1881521975784960000.htm" title="安全见闻二:Web程序构成与潜在漏洞" target="_blank">安全见闻二:Web程序构成与潜在漏洞</a> <span class="text-muted">vortex5</span> <a class="tag" taget="_blank" href="/search/%E6%98%9F%E6%B2%B3%E9%A3%9E%E9%9B%AA/1.htm">星河飞雪</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E8%A7%81%E9%97%BB/1.htm">安全见闻</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>内容预览≧∀≦ゞ安全见闻二:Web程序构成与潜在漏洞声明导语前端语言及潜在漏洞前端语言前端框架与代码库常见的前端框架与代码库安全问题的根源前端潜在漏洞后端语言及潜在漏洞常见后端语言协议问题后端潜在漏洞数据库及潜在漏洞数据库分类数据库潜在漏洞服务器程序及潜在漏洞常见服务器程序服务器程序潜在漏洞结语安全见闻二:Web程序构成与潜在漏洞声明学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章笔记的只</div> </li> <li><a href="/article/1881520338697777152.htm" title="如何使用python下载B站视频并使用ffmpeg进行合流操作" target="_blank">如何使用python下载B站视频并使用ffmpeg进行合流操作</a> <span class="text-muted">Zombie_man</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>需要了解的工具:先看看我发的第一期专栏,里面有关开发者模式的介绍,一些相关的请求库与解析库。本期专栏将不再赘诉。下载ffmpeg。下载官网链接:https://ffmpeg.org/download.html。注意:如果想要在cmd中使用,需要先配置环境变量有关于此的介绍与使用详细可以看此链接:https://zhuanlan.zhihu.com/p/356411237本期将导入subproces</div> </li> <li><a href="/article/1881506084879921152.htm" title="AIGC - 深度洞察如何对大模型进行微调以满足特定需求" target="_blank">AIGC - 深度洞察如何对大模型进行微调以满足特定需求</a> <span class="text-muted">网罗开发</span> <a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a> <div>网罗开发(视频号同名)  大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、HarmonyOS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。图书作者:《ESP32-C3物联网工程开发实战》图书作者:《SwiftUI入门,进阶与实战》超级个体:COC上海社区主理</div> </li> <li><a href="/article/1881497636595363840.htm" title="AIGC视频生成国产之光:ByteDance的PixelDance模型" target="_blank">AIGC视频生成国产之光:ByteDance的PixelDance模型</a> <span class="text-muted">好评笔记</span> <a class="tag" taget="_blank" href="/search/AIGC-%E8%A7%86%E9%A2%91/1.htm">AIGC-视频</a><a class="tag" taget="_blank" href="/search/%E8%A1%A5%E6%A1%A3/1.htm">补档</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/1.htm">论文阅读</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance,论文于2023年11月发布,模型上线于2024年9月,同时期上线的模型还有Seaweed(论文未发布)。优质专栏回顾:机器学习笔记深度学习笔记多模态论文笔记AIGC—图像文章目录论文摘要引言输入训练和推理时的数据处理总结相关工作视频生成长视频生成方法模型架构</div> </li> <li><a href="/article/1881448691609432064.htm" title="python pipeline库_Easy Pipeline,一种轻量级的Python Pipeline库" target="_blank">python pipeline库_Easy Pipeline,一种轻量级的Python Pipeline库</a> <span class="text-muted">周不宅</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pipeline%E5%BA%93/1.htm">pipeline库</a> <div>嗯,很久没有写博客了,最近的工作都是偏开发性质的,以至于没有时间对自己感兴趣的领域进行探索,感觉个人的成长停滞了一些。如何在枯燥的工作中,提取出有助于自己成长的养分,对于每个人来说都是不小的考验。这次,带来的是之前编写的一下挺简单的库,用来简化流水线作业的小框架。起因是这样的,组内有一个需求,需要挖掘视频中的检测难样本,这样可以极大地减少标注的量,从而降低成本。难样本挖掘的策略,简单来说就是如果视</div> </li> <li><a href="/article/1881437333891379200.htm" title="探索未来,AI-WEBUI:让AI创作触手可及" target="_blank">探索未来,AI-WEBUI:让AI创作触手可及</a> <span class="text-muted">农爱宜</span> <div>探索未来,AI-WEBUI:让AI创作触手可及ai_webuiAI-WEBUI:AuniversalwebinterfaceforAIcreation,一款好用的图像、音频、视频AI处理工具项目地址:https://gitcode.com/gh_mirrors/ai/ai_webui1、项目介绍AI-WEBUI是一个创新的开源项目,它提供了一个全面的Web界面,让你无需编程背景就能轻松进行AI创作</div> </li> <li><a href="/article/1881429635716149248.htm" title="构建一个查询分析系统" target="_blank">构建一个查询分析系统</a> <span class="text-muted">AWsggdrg</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>技术背景介绍在构建一个查询分析系统时,需要能够加载文档、使用聊天模型、生成嵌入、创建向量存储并执行检索。这些过程的目标是将用户输入的查询优化,以实现更为精准的检索结果。本文将通过一个端到端的示例展示如何使用查询分析提升检索结果的相关性。我们将着眼于如何对LangChain的YouTube视频进行检索,并通过查询分析解决原始用户问题直接传递给搜索引擎时可能出现的失败模式。核心原理解析查询分析的核心在</div> </li> <li><a href="/article/1881425095403040768.htm" title="Python 操作二进制文件" target="_blank">Python 操作二进制文件</a> <span class="text-muted">昱晏</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>在计算机中,文件可以分为两种类型:文本文件和二进制文件。文本文件包含人类可读的字符,而二进制文件包含计算机指令或数据,无法直接阅读。常见的二进制文件包括图片、音频、视频、可执行文件等。Python提供了处理二进制文件的工具,允许你读写任意类型的数据。1以二进制模式打开文件在Python中,操作二进制文件时,需要使用'b'作为文件模式的一部分。常见的二进制文件模式有:'rb':以二进制读取文件。'w</div> </li> <li><a href="/article/1881424332400422912.htm" title="你说通过Kafka AdminClient获取Lag会有性能问题?尊嘟假嘟0.o" target="_blank">你说通过Kafka AdminClient获取Lag会有性能问题?尊嘟假嘟0.o</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/javakafka%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">javakafka大数据</a> <div>版本日期备注1.02024.8.25文章首发本文内容已用一种抽象的方式做成了视频,喜欢看视频的同学可以在B站上搜索“抽象狗哥”观看相应的内容。0.前言前阵子团队里出了个大故障,本质是因为其他语言实现的client有问题,非常频繁的请求大量元数据,而Kafka服务端这边也没有做什么限制,导致KafkaBroker宕了。在相关的复盘报告中,复盘方提到了我这边的监控程序(用于观察线上实时作业的堆压)会频</div> </li> <li><a href="/article/1881404755859795968.htm" title="应学短视频App数据库表设计文档" target="_blank">应学短视频App数据库表设计文档</a> <span class="text-muted">2401_89285805</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:||1|id|int|10|0|N|Y||||2|username|varchar|20|0|N|N||||3|password|varchar|20|0|N|N|||ROPTABLEIFEXISTSadmin;CREATETABLEadmin(idintNOTNULLAUTO_INCREMENT,usernamevarcha</div> </li> <li><a href="/article/1881397572669599744.htm" title="【计算机视觉】人脸识别" target="_blank">【计算机视觉】人脸识别</a> <span class="text-muted">油泼辣子多加</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>一、简介人脸识别是将图像或者视频帧中的人脸与数据库中的人脸进行对比,判断输入人脸是否与数据库中的某一张人脸匹配,即判断输入人脸是谁或者判断输入人脸是否是数据库中的某个人。人脸识别属于1:N的比对,输入人脸身份是1,数据库人脸身份数量为N,一般应用在办公室门禁,疑犯追踪;人脸验证属于1:1的比对,输入人脸身份为1,数据库中为同一人的数据,在安全领域应用比较多。一个完整的人脸识别流程主要包括人脸检测、</div> </li> <li><a href="/article/1881382558189547520.htm" title="足球俱乐部管理系统(11293)" target="_blank">足球俱乐部管理系统(11293)</a> <span class="text-muted">codercode2022</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/hibernate/1.htm">hibernate</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/laravel/1.htm">laravel</a><a class="tag" taget="_blank" href="/search/actionscript/1.htm">actionscript</a> <div>有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发</div> </li> <li><a href="/article/1881357732443910144.htm" title="OpenBayes 一周速览丨ShowUI专注GUI自动化,可解析屏幕截图和用户指令;U-MATH数据集上线" target="_blank">OpenBayes 一周速览丨ShowUI专注GUI自动化,可解析屏幕截图和用户指令;U-MATH数据集上线</a> <span class="text-muted"></span> <div>公共资源速递5个数据集:U-MATH数学推理数据集AlMedicalChatbot医学对话数据集Tecnalia电子设备废物高光谱数据集WaterlooExploration大规模图像质量评估数据库WasteClassification可回收物及生活垃圾分类数据集3个教程:一键部署QwQ-32B-PreviewHunyuanVideo腾讯混元文生视频DemoShowUl:专注GUI自动化的视觉-语</div> </li> <li><a href="/article/1881354567615049728.htm" title="OpenBayes 一周速览|一键部署Qwen2.5-Coder,0编程经验实现代码生成自由!" target="_blank">OpenBayes 一周速览|一键部署Qwen2.5-Coder,0编程经验实现代码生成自由!</a> <span class="text-muted"></span> <div>公共资源速递5个数据集:Coil-100图像数据集Muharaf手写阿拉伯文数据集CollectiveActivity集体活动视频数据集MultimodalSpectroscopic化学多模光谱数据集CDFSOD-benchmark跨域小样本对象检测基准数据集3个教程:一键部署Qwen2.5-CoderInkSight将手写文字数字化DemoGLM-4-Voice端到端中英语音对话模型访问官网立即</div> </li> <li><a href="/article/1881347254699225088.htm" title="探索未来视频创作:Tune-A-Video项目深度解析" target="_blank">探索未来视频创作:Tune-A-Video项目深度解析</a> <span class="text-muted">刘通双Elsie</span> <div>探索未来视频创作:Tune-A-Video项目深度解析Tune-A-Video[ICCV2023]Tune-A-Video:One-ShotTuningofImageDiffusionModelsforText-to-VideoGeneration项目地址:https://gitcode.com/gh_mirrors/tu/Tune-A-Video在数字艺术与人工智能的交汇点上,Tune-A-Vi</div> </li> <li><a href="/article/1881335145995235328.htm" title="FFmpeg 元数据" target="_blank">FFmpeg 元数据</a> <span class="text-muted">yerennuo</span> <a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>文章目录元数据代码实例,查看元数据元数据在处理音视频文件时,了解其元数据信息是非常重要的。元数据是描述文件内容和属性的数据,包括了诸如标题、作者、时长、分辨率等信息。使用ACDictonaryAPI,可以查看元数据或者将元数据写入到AVFormatContext,AVStream,AVChapter和AVProgram结构体中,元数据保存在它们Metadata字段中。元数据是由一个键值对组成的。与</div> </li> <li><a href="/article/1881330473934843904.htm" title="RV1126+FFMPEG推流项目(9)AI和AENC模块绑定,并且开启线程采集" target="_blank">RV1126+FFMPEG推流项目(9)AI和AENC模块绑定,并且开启线程采集</a> <span class="text-muted">学习嵌入式的小羊~</span> <a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a> <div>前面两篇已经交代AI和AENC模块的配置,这篇就让这两个模块绑定起来,绑定的原因是,Aenc从Ai模块拿到采集的原始数据进行编码。使用RK_MPI_SYS_Bind把AI节点和AENC进行绑定,其中enModId是模块ID号选择的是RK_ID_AI、s32ChnId是通道号,通道号则从容器AENC容器获取。开启AENC线程采集每一帧视频编码数据并存储到音频队列。绑定的函数是有rv1126通过的,R</div> </li> <li><a href="/article/1881330347505938432.htm" title="RV1126+FFMPEG推流项目(1)总体框架讲解" target="_blank">RV1126+FFMPEG推流项目(1)总体框架讲解</a> <span class="text-muted">学习嵌入式的小羊~</span> <a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a> <div>音视频推流项目的讲解项目介绍本项目通过RV1126采集摄像头和麦克风数据,采用H.264/H.265视频编码技术和AAC音频编码技术进行压缩和合成复合流,然后推送到流媒体服务器。项目框图下图展示了整个项目的总体流程图,核心部分包括:暂时无法在飞书文档外展示此内容2.1视频采集与编码使用RV1126的API对CMOS摄像头进行采集,并进行H.264/H.265编码。编码后的视频数据存放到视频编码队列</div> </li> <li><a href="/article/1881321140849274880.htm" title="【音视频之SDL2】一篇搞懂纹理与渲染" target="_blank">【音视频之SDL2】一篇搞懂纹理与渲染</a> <span class="text-muted">人才程序员</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91%E5%9F%BA%E7%A1%80%E5%A4%A7%E5%90%88%E9%9B%86/1.htm">音视频基础大合集</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/SDL2/1.htm">SDL2</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81/1.htm">视频编解码</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%97%B6%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">实时音视频</a> <div>文章目录前言SDL2的纹理与渲染什么是纹理?什么是渲染?比较SDL_SurfaceSDL_Texture纹理与渲染的关系使用纹理与渲染绘制一个BMP图片使用纹理与渲染的流程SDL_CreateRenderer作用函数原型参数返回值SDL_CreateTextureFromSurface作用函数原型参数返回值SDL_UpdateTexture作用函数原型参数返回值何时调用它SDL_RenderCop</div> </li> <li><a href="/article/1881321138026508288.htm" title="【音视频SDL2入门】创建第一个窗口" target="_blank">【音视频SDL2入门】创建第一个窗口</a> <span class="text-muted">人才程序员</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91%E5%9F%BA%E7%A1%80%E5%A4%A7%E5%90%88%E9%9B%86/1.htm">音视频基础大合集</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2/1.htm">用户界面</a><a class="tag" taget="_blank" href="/search/sdl2/1.htm">sdl2</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81/1.htm">视频编解码</a> <div>文章目录前言创建窗口的流程需要使用的函数1.初始化SDL库2.创建SDL窗口3.获取与窗口关联的表面SDL_FillRect函数介绍4.更新窗口表面5.延迟一定时间6.销毁窗口并退出SDL库示例代码总结前言SDL2(SimpleDirectMediaLayer)是一个跨平台的开发库,旨在为多媒体应用程序(如游戏和视频播放软件)提供低级别的访问接口。SDL2提供了创建窗口、处理输入、播放音频等多种功</div> </li> <li><a href="/article/1881310166914232320.htm" title="Python剪辑视频小妙招(moivepy库)" target="_blank">Python剪辑视频小妙招(moivepy库)</a> <span class="text-muted">对不起,我辜负了你</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>起因最近一直在b站上投稿喜羊羊与灰太狼的视频,但是苦于需要手动裁剪视频的片头和片尾,裁剪的多了就发现喜羊羊与灰太狼的视频片头几乎都是1分25秒结束,也就是持续85秒,片尾也差不多是持续1分02秒差不多也就是62秒,于是开始思考有没有什么方法可以替代人类进行自动化批量裁剪?思路发展迭代与确定一开始是想使用Premier里面的预设来做的,结果发现Premier里面高版本的导出变成了各种网站的标准,相比</div> </li> <li><a href="/article/1881292602771304448.htm" title="MoviePy视频编辑和处理Python库的版本问题解决:No module named ‘moviepy.editor‘" target="_blank">MoviePy视频编辑和处理Python库的版本问题解决:No module named ‘moviepy.editor‘</a> <span class="text-muted">封步宇AIGC</span> <a class="tag" taget="_blank" href="/search/%E6%96%87%E5%AD%97%E9%9F%B3%E9%A2%91%E8%A7%86%E9%A2%91%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7/1.htm">文字音频视频自动化工具</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>MoviePy是一个强大的Python库,用于视频编辑和处理。它支持多种基本操作,如视频剪切、拼接、插入标题,以及更高级的视频合成(非线性编辑)、视频处理和自定义特效创建。MoviePy能够读写包括GIF在内的常见音频和视频格式,并且兼容Windows、Mac和Linux操作系统,支持Python2.7和3.x版本MoviePy基于ffmpeg和ImageMagick,提供了易于使用的API,能够</div> </li> <li><a href="/article/1881286304583446528.htm" title="Python使用moviepy模块编辑视频时,有可能会出现“TypeError: ‘module‘ object is not callable”的错误提示" target="_blank">Python使用moviepy模块编辑视频时,有可能会出现“TypeError: ‘module‘ object is not callable”的错误提示</a> <span class="text-muted">CodeWG</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Python使用moviepy模块编辑视频时,有可能会出现“TypeError:‘module‘objectisnotcallable”的错误提示。这个错误提示表明在调用函数或方法时,试图调用一个不可被调用的对象。这个问题通常是由于导入moviepy模块时,模块本身并不是可以被调用的对象而导致的。要解决这个问题,我们需要检查代码中导入moviepy模块的语句是否有误。moviepy模块中最常用的类</div> </li> <li><a href="/article/1881278617447624704.htm" title="H266/VVC 帧间预测中 AMVR 技术" target="_blank">H266/VVC 帧间预测中 AMVR 技术</a> <span class="text-muted">码流怪侠</span> <a class="tag" taget="_blank" href="/search/%E5%B8%A7%E9%97%B4%E9%A2%84%E6%B5%8B/1.htm">帧间预测</a><a class="tag" taget="_blank" href="/search/H266/1.htm">H266</a><a class="tag" taget="_blank" href="/search/VVC/1.htm">VVC</a><a class="tag" taget="_blank" href="/search/VVenC/1.htm">VVenC</a><a class="tag" taget="_blank" href="/search/AMVR/1.htm">AMVR</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E5%8A%A8%E6%90%9C%E7%B4%A2/1.htm">运动搜索</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81/1.htm">视频编解码</a> <div>自适应运动精度AMVR最早的视频编码标准采用整数像素精度描述运动矢量,因此运动估计只能利用位于整数点位置的像素。但实际上物体的真实运动经常是连续的,采用整像素精度并不能很好的描述运动矢量。H.264和HEVC都对亮度分量的运动矢量采用1/4像素精度、色度分量的运动矢量采用1/8像素精度。在HEVC中,当切片头中的use_integer_mv_flag等于0时,运动矢量差(MVDs,即运动矢量与预测</div> </li> <li><a href="/article/1881271924399599616.htm" title="做python少儿编程教程-超好玩的Python少儿编程" target="_blank">做python少儿编程教程-超好玩的Python少儿编程</a> <span class="text-muted">weixin_37988176</span> <div>1.作者有14年的计算机培训经验,能抓住青少年的学习心理。2.超过180分钟的视频讲解,可下载也可扫码直接观看。《超好玩的Python少儿编程》是写给青少年读者的编程学习用书,主要通过游戏及作品的实例来讲解Python的编程方法,引导青少年在快乐中学习编程。通过游戏编程实例及有趣的作品,让青少年参与其中,培养他们独立分析问题和解决问题的能力,提高他们的探索精神,为今后进一步深入学习编程打好基础。《</div> </li> <li><a href="/article/46.htm" title="Maven" target="_blank">Maven</a> <span class="text-muted">Array_06</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>Maven Maven是基于项目对象模型(POM), 信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司</div> </li> <li><a href="/article/173.htm" title="ibatis的queyrForList和queryForMap区别" target="_blank">ibatis的queyrForList和queryForMap区别</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a> <div>一.说明         iBatis的返回值参数类型也有种:resultMap与resultClass,这两种类型的选择可以用两句话说明之:         1.当结果集列名和类的属性名完全相对应的时候,则可直接用resultClass直接指定查询结果类</div> </li> <li><a href="/article/300.htm" title="LeetCode[位运算] - #191 计算汉明权重" target="_blank">LeetCode[位运算] - #191 计算汉明权重</a> <span class="text-muted">Cwind</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/%E9%A2%98%E8%A7%A3/1.htm">题解</a> <div>原题链接:#191 Number of 1 Bits 要求: 写一个函数,以一个无符号整数为参数,返回其汉明权重。例如,‘11’的二进制表示为'00000000000000000000000000001011', 故函数应当返回3。 汉明权重:指一个字符串中非零字符的个数;对于二进制串,即其中‘1’的个数。 难度:简单 分析: 将十进制参数转换为二进制,然后计算其中1的个数即可。 “</div> </li> <li><a href="/article/427.htm" title="浅谈java类与对象" target="_blank">浅谈java类与对象</a> <span class="text-muted">15700786134</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>      java是一门面向对象的编程语言,类与对象是其最基本的概念。所谓对象,就是一个个具体的物体,一个人,一台电脑,都是对象。而类,就是对象的一种抽象,是多个对象具有的共性的一种集合,其中包含了属性与方法,就是属于该类的对象所具有的共性。当一个类创建了对象,这个对象就拥有了该类全部的属性,方法。相比于结构化的编程思路,面向对象更适用于人的思维</div> </li> <li><a href="/article/554.htm" title="linux下双网卡同一个IP" target="_blank">linux下双网卡同一个IP</a> <span class="text-muted">被触发</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>转自: http://q2482696735.blog.163.com/blog/static/250606077201569029441/ 由于需要一台机器有两个网卡,开始时设置在同一个网段的IP,发现数据总是从一个网卡发出,而另一个网卡上没有数据流动。网上找了下,发现相同的问题不少: 一、 关于双网卡设置同一网段IP然后连接交换机的时候出现的奇怪现象。当时没有怎么思考、以为是生成树</div> </li> <li><a href="/article/681.htm" title="安卓按主页键隐藏程序之后无法再次打开" target="_blank">安卓按主页键隐藏程序之后无法再次打开</a> <span class="text-muted">肆无忌惮_</span> <a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%8D%93/1.htm">安卓</a> <div>遇到一个奇怪的问题,当SplashActivity跳转到MainActivity之后,按主页键,再去打开程序,程序没法再打开(闪一下),结束任务再开也是这样,只能卸载了再重装。而且每次在Log里都打印了这句话"进入主程序"。后来发现是必须跳转之后再finish掉SplashActivity   本来代码:   // 销毁这个Activity fin</div> </li> <li><a href="/article/808.htm" title="通过cookie保存并读取用户登录信息实例" target="_blank">通过cookie保存并读取用户登录信息实例</a> <span class="text-muted">知了ing</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div>通过cookie的getCookies()方法可获取所有cookie对象的集合;通过getName()方法可以获取指定的名称的cookie;通过getValue()方法获取到cookie对象的值。另外,将一个cookie对象发送到客户端,使用response对象的addCookie()方法。 下面通过cookie保存并读取用户登录信息的例子加深一下理解。 (1)创建index.jsp文件。在改</div> </li> <li><a href="/article/935.htm" title="JAVA 对象池" target="_blank">JAVA 对象池</a> <span class="text-muted">矮蛋蛋</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ObjectPool/1.htm">ObjectPool</a> <div>原文地址: http://www.blogjava.net/baoyaer/articles/218460.html Jakarta对象池       ☆为什么使用对象池   恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率。Jakarta Commons Pool组件提供了一整套用于实现对象池化</div> </li> <li><a href="/article/1062.htm" title="ArrayList根据条件+for循环批量删除的方法" target="_blank">ArrayList根据条件+for循环批量删除的方法</a> <span class="text-muted">alleni123</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>场景如下: ArrayList<Obj> list Obj-> createTime, sid. 现在要根据obj的createTime来进行定期清理。(释放内存) ------------------------- 首先想到的方法就是 for(Obj o:list){ if(o.createTime-currentT>xxx){ </div> </li> <li><a href="/article/1189.htm" title="阿里巴巴“耕地宝”大战各种宝" target="_blank">阿里巴巴“耕地宝”大战各种宝</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E5%B9%B3%E5%8F%B0%E6%88%98%E7%95%A5/1.htm">平台战略</a> <div>“耕地保”平台是阿里巴巴和安徽农民共同推出的一个 “首个互联网定制私人农场”,“耕地宝”由阿里巴巴投入一亿 ,主要是用来进行农业方面,将农民手中的散地集中起来 不仅加大农民集体在土地上面的话语权,还增加了土地的流通与 利用率,提高了土地的产量,有利于大规模的产业化的高科技农业的 发展,阿里在农业上的探索将会引起新一轮的产业调整,但是集体化之后农民的个体的话语权 将更少,国家应出台相应的法律法规保护</div> </li> <li><a href="/article/1316.htm" title="Spring注入有继承关系的类(1)" target="_blank">Spring注入有继承关系的类(1)</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>一个类一个类的注入 1.AClass类 package com.bijian.spring.test2; public class AClass { String a; String b; public String getA() { return a; } public void setA(Strin</div> </li> <li><a href="/article/1443.htm" title="30岁转型期你能否成为成功人士" target="_blank">30岁转型期你能否成为成功人士</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E6%88%90%E5%8A%9F/1.htm">成功</a> <div>        很多人由于年轻时走了弯路,到了30岁一事无成,这样的例子大有人在。但同样也有一些人,整个职业生涯都发展得很优秀,到了30岁已经成为职场的精英阶层。由于做猎头的原因,我们接触很多30岁左右的经理人,发现他们在职业发展道路上往往有很多致命的问题。在30岁之前,他们的职业生涯表现很优秀,但从30岁到40岁这一段,很多人</div> </li> <li><a href="/article/1570.htm" title="[Velocity三]基于Servlet+Velocity的web应用" target="_blank">[Velocity三]基于Servlet+Velocity的web应用</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/velocity/1.htm">velocity</a> <div>什么是VelocityViewServlet 使用org.apache.velocity.tools.view.VelocityViewServlet可以将Velocity集成到基于Servlet的web应用中,以Servlet+Velocity的方式实现web应用   Servlet + Velocity的一般步骤 1.自定义Servlet,实现VelocityViewServl</div> </li> <li><a href="/article/1697.htm" title="【Kafka十二】关于Kafka是一个Commit Log Service" target="_blank">【Kafka十二】关于Kafka是一个Commit Log Service</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/service/1.htm">service</a> <div>Kafka is a distributed, partitioned, replicated commit log service.这里的commit log如何理解?   A message is considered "committed" when all in sync replicas for that partition have applied i</div> </li> <li><a href="/article/1824.htm" title="NGINX + LUA实现复杂的控制" target="_blank">NGINX + LUA实现复杂的控制</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/lua+nginx+%E6%8E%A7%E5%88%B6/1.htm">lua nginx 控制</a> <div>安装lua_nginx_module 模块 lua_nginx_module 可以一步步的安装,也可以直接用淘宝的OpenResty Centos和debian的安装就简单了。。 这里说下freebsd的安装: fetch http://www.lua.org/ftp/lua-5.1.4.tar.gz tar zxvf lua-5.1.4.tar.gz cd lua-5.1.4 ma</div> </li> <li><a href="/article/1951.htm" title="java-14.输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字" target="_blank">java-14.输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class TwoElementEqualSum { /** * 第 14 题: 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是 O(n) 。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组 1 、 2 、 4 、 7 、 11 、 15 和数字 15 。由于 </div> </li> <li><a href="/article/2078.htm" title="Netty源码学习-HttpChunkAggregator-HttpRequestEncoder-HttpResponseDecoder" target="_blank">Netty源码学习-HttpChunkAggregator-HttpRequestEncoder-HttpResponseDecoder</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a> <div>今天看Netty如何实现一个Http Server org.jboss.netty.example.http.file.HttpStaticFileServerPipelineFactory: pipeline.addLast("decoder", new HttpRequestDecoder()); pipeline.addLast(&quo</div> </li> <li><a href="/article/2205.htm" title="java敏感词过虑-基于多叉树原理" target="_blank">java敏感词过虑-基于多叉树原理</a> <span class="text-muted">cngolon</span> <a class="tag" taget="_blank" href="/search/%E8%BF%9D%E7%A6%81%E8%AF%8D%E8%BF%87%E8%99%91/1.htm">违禁词过虑</a><a class="tag" taget="_blank" href="/search/%E6%9B%BF%E6%8D%A2%E8%BF%9D%E7%A6%81%E8%AF%8D/1.htm">替换违禁词</a><a class="tag" taget="_blank" href="/search/%E6%95%8F%E6%84%9F%E8%AF%8D%E8%BF%87%E8%99%91/1.htm">敏感词过虑</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E5%8F%89%E6%A0%91/1.htm">多叉树</a> <div>基于多叉树的敏感词、关键词过滤的工具包,用于java中的敏感词过滤 1、工具包自带敏感词词库,第一次调用时读入词库,故第一次调用时间可能较长,在类加载后普通pc机上html过滤5000字在80毫秒左右,纯文本35毫秒左右。   2、如需自定义词库,将jar包考入WEB-INF工程的lib目录,在WEB-INF/classes目录下建一个 utf-8的words.dict文本文件,</div> </li> <li><a href="/article/2332.htm" title="多线程知识" target="_blank">多线程知识</a> <span class="text-muted">cuishikuan</span> <a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a> <div> T1,T2,T3三个线程工作顺序,按照T1,T2,T3依次进行 public class T1 implements Runnable{           @Override      </div> </li> <li><a href="/article/2459.htm" title="spring整合activemq" target="_blank">spring整合activemq</a> <span class="text-muted">dalan_123</span> <a class="tag" taget="_blank" href="/search/java+spring+jms/1.htm">java spring jms</a> <div>整合spring和activemq需要搞清楚如下的东东1、ConnectionFactory分:     a、spring管理连接到activemq服务器的管理ConnectionFactory也即是所谓产生到jms服务器的链接      b、真正产生到JMS服务器链接的ConnectionFactory还得</div> </li> <li><a href="/article/2586.htm" title="MySQL时间字段究竟使用INT还是DateTime?" target="_blank">MySQL时间字段究竟使用INT还是DateTime?</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>  环境:Windows XPPHP Version 5.2.9MySQL Server 5.1 第一步、创建一个表date_test(非定长、int时间) CREATE TABLE `test`.`date_test` (`id` INT NOT NULL AUTO_INCREMENT ,`start_time` INT NOT NULL ,`some_content`</div> </li> <li><a href="/article/2713.htm" title="Parcel: unable to marshal value" target="_blank">Parcel: unable to marshal value</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/marshal/1.htm">marshal</a> <div>在两个activity直接传递List<xxInfo>时,出现Parcel: unable to marshal value异常。   在MainActivity页面(MainActivity页面向NextActivity页面传递一个List<xxInfo>):   Intent intent = new Intent(this, Next</div> </li> <li><a href="/article/2840.htm" title="linux进程的查看上(ps)" target="_blank">linux进程的查看上(ps)</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/linux+ps/1.htm">linux ps</a><a class="tag" taget="_blank" href="/search/linux+ps+-l/1.htm">linux ps -l</a><a class="tag" taget="_blank" href="/search/linux+ps+aux/1.htm">linux ps aux</a> <div>ps:将某个时间点的进程运行情况选取下来 转载请出自出处:http://eksliang.iteye.com/admin/blogs/2119469 http://eksliang.iteye.com         ps 这个命令的man page 不是很好查阅,因为很多不同的Unix都使用这儿ps来查阅进程的状态,为了要符合不同版本的需求,所以这个</div> </li> <li><a href="/article/2967.htm" title="为什么第三方应用能早于System的app启动" target="_blank">为什么第三方应用能早于System的app启动</a> <span class="text-muted">gqdy365</span> <a class="tag" taget="_blank" href="/search/System/1.htm">System</a> <div>Android应用的启动顺序网上有一大堆资料可以查阅了,这里就不细述了,这里不阐述ROM启动还有bootloader,软件启动的大致流程应该是启动kernel -> 运行servicemanager 把一些native的服务用命令启动起来(包括wifi, power, rild, surfaceflinger, mediaserver等等)-> 启动Dalivk中的第一个进程Zygot</div> </li> <li><a href="/article/3094.htm" title="App Framework发送JSONP请求(3)" target="_blank">App Framework发送JSONP请求(3)</a> <span class="text-muted">hw1287789687</span> <a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/%E8%B7%A8%E5%9F%9F%E8%AF%B7%E6%B1%82/1.htm">跨域请求</a><a class="tag" taget="_blank" href="/search/%E5%8F%91%E9%80%81jsonp/1.htm">发送jsonp</a><a class="tag" taget="_blank" href="/search/ajax%E8%AF%B7%E6%B1%82/1.htm">ajax请求</a><a class="tag" taget="_blank" href="/search/%E8%B6%8A%E7%8B%B1%E8%AF%B7%E6%B1%82/1.htm">越狱请求</a> <div>App Framework 中如何发送JSONP请求呢? 使用jsonp,详情请参考:http://json-p.org/ 如何发送Ajax请求呢? (1)登录 /*** * 会员登录 * @param username * @param password */ var user_login=function(username,password){ // aler</div> </li> <li><a href="/article/3221.htm" title="发福利,整理了一份关于“资源汇总”的汇总" target="_blank">发福利,整理了一份关于“资源汇总”的汇总</a> <span class="text-muted">justjavac</span> <a class="tag" taget="_blank" href="/search/%E8%B5%84%E6%BA%90/1.htm">资源</a> <div>觉得有用的话,可以去github关注:https://github.com/justjavac/awesome-awesomeness-zh_CN 通用 free-programming-books-zh_CN 免费的计算机编程类中文书籍 精彩博客集合 hacke2/hacke2.github.io#2 ResumeSample 程序员简历</div> </li> <li><a href="/article/3348.htm" title="用 Java 技术创建 RESTful Web 服务" target="_blank">用 Java 技术创建 RESTful Web 服务</a> <span class="text-muted">macroli</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/REST/1.htm">REST</a> <div>转载:http://www.ibm.com/developerworks/cn/web/wa-jaxrs/   JAX-RS (JSR-311) 【 Java API for RESTful Web Services 】是一种 Java™ API,可使 Java Restful 服务的开发变得迅速而轻松。这个 API 提供了一种基于注释的模型来描述分布式资源。注释被用来提供资源的位</div> </li> <li><a href="/article/3475.htm" title="CentOS6.5-x86_64位下oracle11g的安装详细步骤及注意事项" target="_blank">CentOS6.5-x86_64位下oracle11g的安装详细步骤及注意事项</a> <span class="text-muted">超声波</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>前言: 这两天项目要上线了,由我负责往服务器部署整个项目,因此首先要往服务器安装oracle,服务器本身是CentOS6.5的64位系统,安装的数据库版本是11g,在整个的安装过程中碰到很多的坑,不过最后还是通过各种途径解决并成功装上了。转别写篇博客来记录完整的安装过程以及在整个过程中的注意事项。希望对以后那些刚刚接触的菜鸟们能起到一定的帮助作用。   安装过程中可能遇到的问题(注</div> </li> <li><a href="/article/3602.htm" title="HttpClient 4.3 设置keeplive 和 timeout 的方法" target="_blank">HttpClient 4.3 设置keeplive 和 timeout 的方法</a> <span class="text-muted">supben</span> <a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a> <div>ConnectionKeepAliveStrategy kaStrategy = new DefaultConnectionKeepAliveStrategy() { @Override public long getKeepAliveDuration(HttpResponse response, HttpContext context) { long keepAlive</div> </li> <li><a href="/article/3729.htm" title="Spring 4.2新特性-@Import注解的升级" target="_blank">Spring 4.2新特性-@Import注解的升级</a> <span class="text-muted">wiselyman</span> <a class="tag" taget="_blank" href="/search/spring+4/1.htm">spring 4</a> <div>3.1 @Import @Import注解在4.2之前只支持导入配置类 在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean 3.2 示例 演示java类 package com.wisely.spring4_2.imp; public class DemoService { public void doSomethin</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>