Python爬虫之m3u8文件里提取小视频的正确姿势

前言

  在网上爬取的小视频(.ts格式)打不开怎么搞?使用IDM下载有时候还会出现数据受法律保护,IDM无法下载该内容,如何解决?这篇博客就来聊聊如何正确提取m3u8文件里的.ts视频,并合成完整的.mp4格式视频。

Python爬虫之m3u8文件里提取小视频的正确姿势_第1张图片
Python爬虫之m3u8文件里提取小视频的正确姿势_第2张图片

1. HLS协议与m3u8文件

  HLS,即 H T T P   L i v e   S t r e a m i n g HTTP\ Live\ Streaming HTTP Live Streaming的缩写,是由苹果公司提出基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的扩展 M3U (m3u8) 播放列表文件,用于寻找可用的媒体流。
  M3U8是 U n i c o d e Unicode Unicode 版本的 M3U,用 UTF-8 编码。"M3U"和"M3U8"文件都是苹果公司使用的 H T T P   L i v e   S t r e a m i n g HTTP\ Live\ Streaming HTTP Live Streaming 格式的基础,这种格式可以在 iPhone 和 Macbook 等设备播放。是一种播放多媒体列表的文件格式,文本内容是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。其格式大致如下:

# 未加密
	#EXTM3U
	#EXT-X-VERSION:3
	#EXT-X-TARGETDURATION:8
	#EXT-X-MEDIA-SEQUENCE:0
	#EXTINF:4.000000,
	1af12fece7a000000.ts
	#EXTINF:4.320000,
	1af12fece7a000001.ts
	...
	#EXTINF:3.800000,
	1af12fece7a001155.ts
	#EXT-X-ENDLIST
	
	# 加密
	#EXTM3U
	#EXT-X-VERSION:3
	#EXT-X-TARGETDURATION:6
	#EXT-X-PLAYLIST-TYPE:VOD
	#EXT-X-MEDIA-SEQUENCE:0
	#EXT-X-KEY:METHOD=AES-128,URI="https://ts1.yuyuangewh.com:9999/20200808/1XdSSbTb/2000kb/hls/key.key"
	#EXTINF:3,
	https://ts1.yuyuangewh.com:9999/20200808/1XdSSbTb/2000kb/hls/EUtRrqJU.ts
	#EXTINF:4.72,
	https://ts1.yuyuangewh.com:9999/20200808/1XdSSbTb/2000kb/hls/HF90vrrN.ts
	...
	#EXTINF:0.24,
	https://ts1.yuyuangewh.com:9999/20200808/1XdSSbTb/2000kb/hls/b7ZLcRqT.ts
	#EXT-X-ENDLIST

  中文维基百科----HTTP Live Streaming
  中文维基百科----M3U

  下面介绍几个m3u8文件中常见的标签:

标签 格式 作用
EXTM3U #EXTM3U 表明该文件是一个m3u8文件,每个m3u8文件必须将该标签放置在第一行
EXT-X-VERSION EXT-X-VERSION: 表明该文件是一个m3u8文件,每个m3u8文件必须将该标签放置在第一行
EXT-X-TARGETDURATION #EXT-X-TARGETDURATION: 表示每个视频分段最大的时长(单位秒)
EXT-X-PLAYLIST-TYPE #EXT-X-PLAYLIST-TYPE: 表明流媒体类型,VOD 表示该视屏流为点播源,因此服务器不能更改该m3u8文件;EVENT表示该视频流为直播源,因此服务器不能更改或删除该文件任意部分内容,但是可以在文件末尾添加新内容
EXT-X-MEDIA-SEQUENCE #EXT-X-MEDIA-SEQUENCE: 表示播放列表第一个URL片段文件的序列号,每个媒体片段URL都拥有一个唯一的整型序列号,每个媒体片段序列号按出现顺序依次加 1,如果该标签未指定,则默认序列号从0开始
EXT-X-KEY #EXT-X-KEY:METHOD=AES-128,URI="http:xxxx",IV="xxxx" 表明视频流文件的加解密方法,METHOD表示加密方式,URI表示密钥路径,该密钥是一个 16 字节的数据,IV是一个128位的十六进制数值
EXTINF #EXTINF:,[]</code></td> <td>表示其后 URL 指定的媒体片段时长(单位为秒),<code>duration</code>可以为十进制的整型或者浮点型,其值必须小于或等于<code>EXT-X-TARGETDURATION</code>指定的值</td> </tr> <tr> <td><code>EXT-X-ENDLIST</code></td> <td><code>#EXT-X-ENDLIST</code></td> <td>表明m3u8文件的结束</td> </tr> </tbody> </table> <blockquote> <p>  简书:m3u8 文件格式详解 作者:Whyn</p> </blockquote> <p>2. 第三方库----m3u8</p> <blockquote> <p>  <code>m3u8</code>是一个专门用于解析m3u8文件的解析器,有关库的详细操作请参阅官方示例</p> </blockquote> <div class="jb51code"> <pre class="brush:py;"> # 安装m3u8 pip install m3u8</pre> </div> <div class="jb51code"> <pre class="brush:py;"> # 加载m3u8文件 import m3u8 # 返回一个M3U8对象 playlist = m3u8.load(uri='http://videoserver.com/playlist.m3u8') # url # playlist = m3u8.load(uri='playlist.m3u8') # file print(playlist.segments) # 打印EXT-X-KEY标签和所有的EXTINF标签: print(playlist.target_duration) # 打印EXT-X-TARGETDURATION标签的值 for key in playlist.keys: if key: # 如果视频文件加密,可以查看加密参数 print(key.uri, key.method, key.iv)</pre> </div> <h2>3. 合成mp4文件</h2> <p style="text-align: center"><a href="http://img.e-com-net.com/image/info11/82bdbfad1dee4d24847b08b4b1f4edbb.jpg" target="_blank"><img alt="Python爬虫之m3u8文件里提取小视频的正确姿势_第3张图片" src="http://img.e-com-net.com/image/info11/82bdbfad1dee4d24847b08b4b1f4edbb.jpg" width="650" height="345" style="border:1px solid black;"></a></p> <p> 本次就以这个视频为例,流程如下:<br>   <code>1.</code> 找到视频对应的<code>.m3u8</code>文件<br>   <code>2.</code> 解析<code>.m3u8</code>文件,从中提取<code>.ts</code>视频的url<br>   <code>3.</code> 下载<code>.ts</code>格式的视频<br>   <code>4.</code> 解密<code>.ts</code>格式的视频(如果视频流没有加密,则该步不是必须的)<br>   <code>5.</code> 合成<code>.mp4</code>或其他格式的视频</p> <div class="jb51code"> <pre class="brush:py;"> # 第1步,我载了m3u8文件,也可以直接使用m3u8文件对应的url playlist = m3u8.load(uri='./data/index.m3u8') # 第2步,提取URL for seg in playlist.segments: print(seg.uri) # 第3步,下载ts视频 with open('xxxxx.ts', 'wb') as f: ts = get_ts(url) f.write(ts) # 第4步,解密 cipher_text = pad(data_to_pad=cipher_text, block_size=AES.block_size) aes = AES.new(key=key, mode=AES.MODE_CBC, iv=iv) cipher_text = aes.decrypt(cipher_text) # 第5步,合成 files = glob.glob(os.path.join('./video', '*.ts')) for file in files: with open(file, 'rb') as fr, open('./video_de/baitoushan.mp4', 'ab') as fw: content = fr.read() fw.write(content )</pre> </div> <h2>4. 完整代码</h2> <div class="jb51code"> <pre class="brush:py;"> # -*- coding: utf-8 -*- # @Time : 2021/5/10 20:11 # @Author : XiaYouRan # @Email : youran.xia@foxmail.com # @File : video.py # @Software: PyCharm from Crypto.Cipher import AES from Crypto.Util.Padding import pad from concurrent.futures import ThreadPoolExecutor import requests import m3u8 import glob import os import time import logging logging.getLogger("urllib3").setLevel(logging.WARNING) def AESDecrypt(cipher_text, key, iv): cipher_text = pad(data_to_pad=cipher_text, block_size=AES.block_size) aes = AES.new(key=key, mode=AES.MODE_CBC, iv=iv) cipher_text = aes.decrypt(cipher_text) # clear_text = unpad(padded_data=cipher_text, block_size=AES.block_size) return cipher_text headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'} def get_ts(url): try: response = requests.get(url, verify=False) response.raise_for_status() response.encoding = 'utf-8' return response.content except Exception as err: print(err) return b'' def save_ts(url, index): filename = os.path.join('./video', str(index).zfill(5) + '.ts') with open(filename, 'wb') as f: ts = get_ts(url) f.write(ts) print(filename + ' is ok!') if __name__ == '__main__': playlist = m3u8.load(uri='./data/index.m3u8') # 线程池,引入index可以防止合成时视频发生乱序 with ThreadPoolExecutor(max_workers=10) as pool: for index, seg in enumerate(playlist.segments): pool.submit(save_ts, seg.uri, index) key = get_ts(playlist.keys[-1].uri) files = glob.glob(os.path.join('./video', '*.ts')) for file in files: with open(file, 'rb') as fr, open('./video_de/baitoushan.mp4', 'ab') as fw: content = fr.read() encontent = AESDecrypt(content, key=key, iv=key) fw.write(encontent) print(file + ' is ok!')</pre> </div> <p>  下载<code>.ts</code>文件效果如下:</p> <p style="text-align: center"><a href="http://img.e-com-net.com/image/info11/554fe1f2b8b848ddb5d536165955370a.jpg" target="_blank"><img alt="Python爬虫之m3u8文件里提取小视频的正确姿势_第4张图片" src="http://img.e-com-net.com/image/info11/554fe1f2b8b848ddb5d536165955370a.jpg" width="650" height="389" style="border:1px solid black;"></a></p> <p>  合成<code>.mp4</code>文件效果如下:</p> <p style="text-align: center"><a href="http://img.e-com-net.com/image/info11/e79ed16a25cd4efaaa28c42f53c4272b.jpg" target="_blank"><img alt="Python爬虫之m3u8文件里提取小视频的正确姿势_第5张图片" src="http://img.e-com-net.com/image/info11/e79ed16a25cd4efaaa28c42f53c4272b.jpg" width="650" height="389" style="border:1px solid black;"></a></p> <p style="text-align: center"></p> <h2>5. 结束语</h2> <p>Musicer开源代码仓库</p> <hr> <p>  Musicer音乐爬虫已经开源了哦,持续更新中,欢迎来踩来Star哦!ヾ(≧∇≦*)ヾ</p> <p>以上就是Python爬虫之m3u8文件里提取小视频的正确姿势的详细内容,更多关于Python提取m3u8文件小视频的资料请关注脚本之家其它相关文章!</p> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1393052272392491008"></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">你可能感兴趣的:(Python爬虫之m3u8文件里提取小视频的正确姿势)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1899393511170568192.htm" title="基于Java的智能家居设计:模块化智能插座的设计与实现" target="_blank">基于Java的智能家居设计:模块化智能插座的设计与实现</a> <span class="text-muted">AGI大模型与大数据研究院</span> <a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/R1/1.htm">R1</a><a class="tag" taget="_blank" href="/search/%26amp%3B/1.htm">&</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AEAI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">大数据AI人工智能</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/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> <div>智能家居,Java,模块化设计,智能插座,物联网,MQTT,RESTfulAPI1.背景介绍智能家居已成为现代生活的重要趋势,它通过将各种智能设备连接到网络,实现对家居环境的自动化控制和远程管理。智能插座作为智能家居的基础设备之一,能够远程控制电器开关,监测电器功耗,并根据用户需求实现定时开关等功能。传统的智能插座往往采用单片机或嵌入式系统,功能相对单一,难以扩展和升级。随着物联网技术的快速发展,</div> </li> <li><a href="/article/1899392881412599808.htm" title="【30天玩转python】项目实战:从零开始开发一个Python项目" target="_blank">【30天玩转python】项目实战:从零开始开发一个Python项目</a> <span class="text-muted">爱技术的小伙子</span> <a class="tag" taget="_blank" href="/search/30%E5%A4%A9%E7%8E%A9%E8%BD%ACpython/1.htm">30天玩转python</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>项目实战:从零开始开发一个Python项目在学习Python的过程中,开发一个完整的项目是非常重要的实战练习。它不仅能够帮助你巩固所学的知识,还能提高实际编程能力。本文将带领你从零开始开发一个Python项目,介绍从项目规划、环境搭建、代码实现到项目发布的完整过程。我们将以一个简单的“任务管理系统”为例,逐步讲解如何构建、测试和优化这个项目。1.项目规划1.1项目简介我们将开发一个基于命令行的任务</div> </li> <li><a href="/article/1899392880460492800.htm" title="决策树的核心思想" target="_blank">决策树的核心思想</a> <span class="text-muted">code 旭</span> <a class="tag" taget="_blank" href="/search/AI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%AD%A6%E4%B9%A0/1.htm">AI人工智能学习</a><a class="tag" taget="_blank" href="/search/%E5%86%B3%E7%AD%96%E6%A0%91/1.htm">决策树</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/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> <div>一、决策树的核心思想本质:通过特征判断对数据集递归划分,形成树形结构。目标:生成一组“若-则”规则,使数据划分到叶子节点时尽可能纯净。关键流程:特征选择:选择最佳分裂特征(如信息增益最大)。节点分裂:根据特征取值划分子节点。停止条件:节点样本纯度过高或样本数过少时终止。二、数学公式与理论1.信息熵(InformationEntropy)衡量数据集的混乱程度:H(D)=−∑k=1Kpklog⁡2pk</div> </li> <li><a href="/article/1899392628382822400.htm" title="本地部署Hive集群" target="_blank">本地部署Hive集群</a> <span class="text-muted">克里斯蒂亚诺罗纳尔多阿维罗</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/1.htm">数据仓库</a> <div>规划服务机器Hive本体部署在Node1元数据服务所需的关系型数据库(MYSQL)部署在Node1安装MYSQL数据库#更新密钥rpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022#安装Mysqlyum库rpm-Uvhhttp://repo.mysql.com//mysql57-community-release-el7-7.noarch</div> </li> <li><a href="/article/1899391998524190720.htm" title="卡尔曼滤波算法从理论到实践:在STM32中的嵌入式实现" target="_blank">卡尔曼滤波算法从理论到实践:在STM32中的嵌入式实现</a> <span class="text-muted">DOMINICHZL</span> <a class="tag" taget="_blank" href="/search/STM32/1.htm">STM32</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a> <div>摘要:卡尔曼滤波(KalmanFilter)是传感器数据融合领域的经典算法,在姿态解算、导航定位等嵌入式场景中广泛应用。本文将从公式推导、代码实现、参数调试三个维度深入解析卡尔曼滤波,并给出基于STM32硬件的完整工程案例。一、卡尔曼滤波核心思想1.1什么是卡尔曼滤波?卡尔曼滤波是一种最优递归估计算法,通过融合预测值(系统模型)与观测值(传感器数据),在噪声干扰环境下实现对系统状态的动态估计。其核</div> </li> <li><a href="/article/1899390361592197120.htm" title="IEC104协议解析" target="_blank">IEC104协议解析</a> <span class="text-muted">上海研博数据</span> <a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>一、IEC104协议核心特性与应用场景IEC104(IEC60870-5-104)是电力系统中广泛使用的通信协议,基于TCP/IP实现主从站(SCADA与RTU/变电站设备)的实时数据交互‌。其核心功能包括:1.四遥操作‌:‌遥测‌(YC):采集电压、电流等模拟量数据(如类型标识0x0D)‌。遥信‌(YX):监测开关状态等数字量信号(如M_SP_NA_1单点遥信)‌。遥控‌(YK):远程控制断路器</div> </li> <li><a href="/article/1899390361990656000.htm" title="ffplay 使用文档介绍" target="_blank">ffplay 使用文档介绍</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/ffplay/1.htm">ffplay</a><a class="tag" taget="_blank" href="/search/%E6%92%AD%E6%94%BE%E5%99%A8/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/%E7%9B%B4%E6%92%AD/1.htm">直播</a><a class="tag" taget="_blank" href="/search/%E8%BD%AC%E7%A0%81/1.htm">转码</a> <div>ffplayffplay是一个简单的媒体播放器,它是FFmpeg项目的一部分。FFmpeg是一个广泛使用的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有类型的媒体文件。ffplay主要用于测试和调试,因为它提供了一个命令行界面,可以方便地查看媒体文件的详细信息,如视频帧、音频波形等。它支持多种视频和音频格式,并且可以实时显示解码过程中的统计信息。使用文档原文地址:http</div> </li> <li><a href="/article/1899390109397086208.htm" title="flink+kafka实现流数据处理学习" target="_blank">flink+kafka实现流数据处理学习</a> <span class="text-muted">上海研博数据</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>在应用系统的建设过程中,通常都会遇到需要实时处理数据的场景,处理实时数据的框架有很多,本文将以一个示例来介绍flink+kafka在流数据处理中的应用。1、概念介绍flink:是一个分布式、高可用、高可靠的大数据处理引擎,提供了一种高效、可靠、可扩展的方式来处理和分析实时数据。kafka:是用于构建实时数据管道和流应用程序并具有横向扩展,容错,wickedfast(变态快)等优点的一种消息中间件。</div> </li> <li><a href="/article/1899388724085583872.htm" title="Python从0到100(七十六):计算机视觉-直方图和自适应直方图均衡化" target="_blank">Python从0到100(七十六):计算机视觉-直方图和自适应直方图均衡化</a> <span class="text-muted">是Dream呀</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0到100最新</div> </li> <li><a href="/article/1899388469533274112.htm" title="uniapp 滚动尺" target="_blank">uniapp 滚动尺</a> <span class="text-muted">走,带你去玩</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>scale组件代码(部分class样式使用到了uview1.0的样式){{item/10}}exportdefault{name:'Scale',components:{},props:{value:{type:String,default:'0.0'},//最小值min:{type:Number,default:0,},//最大值max:{type:Number,default:100,},//</div> </li> <li><a href="/article/1899388470401495040.htm" title="修改uview组件样式无效" target="_blank">修改uview组件样式无效</a> <span class="text-muted">走,带你去玩</span> <a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a> <div>在自己的components组件目录下修改uview组件样式不起效果,添加如下代码与metnods平级即可exportdefault{options:{styleIsolation:'shared'},}</div> </li> <li><a href="/article/1899388470825119744.htm" title="Elasticsearch 入门教学:从零开始掌握分布式搜索引擎" target="_blank">Elasticsearch 入门教学:从零开始掌握分布式搜索引擎</a> <span class="text-muted">格子先生Lab</span> <a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a> <div>引言Elasticsearch是一个开源的分布式搜索引擎,基于ApacheLucene构建,能够实现近乎实时的数据搜索和分析。它广泛应用于日志分析、全文搜索、数据可视化等场景。本文将带你从零开始学习Elasticsearch,掌握其基本概念、安装配置、数据操作及搜索功能。1.Elasticsearch简介1.1什么是Elasticsearch?Elasticsearch是一个分布式的RESTful</div> </li> <li><a href="/article/1899388471441682432.htm" title="MySql索引使用" target="_blank">MySql索引使用</a> <span class="text-muted">沐千熏</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>索引类型#主键索引:PRIMARY这设立主键后数据库自动建立索引,InnoDB为聚簇索引,主键索引列不能为空(NUll);#唯一索引:UNIQUE索引列的值必须唯一。可以为空值,但是必须只有一个;#普通索引(组合索引):NORMAL也称为非唯一索引,允许重复值和NULL值。一个索引可以包含多个列,多个列共同组成一个复杂的索引;#全文索引:FULLTEXTFullText(MySQL5.7之前,只有</div> </li> <li><a href="/article/1899387588096094208.htm" title="【LLM】预训练的具体流程" target="_blank">【LLM】预训练的具体流程</a> <span class="text-muted">FOUR_A</span> <a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a> <div>分词器训练预训练模型:就像你已经学会了一些基础知识的“大脑”,我们可以在这个基础上继续学习新东西。比如,有些模型已经学会了英语,但中文学得不够好。中文预训练:为了让这个“大脑”更好地理解中文,我们需要用大量的中文数据继续训练它。分词器(Tokenizer):它的作用是把一句话拆分成一个个小单元(比如词语或字)。比如,“我喜欢学习”会被拆成“我/喜欢/学习”。这些拆分后的单元会被转换成数字,方便模型</div> </li> <li><a href="/article/1899387336022618112.htm" title="android屏幕旋转生命周期,Activity、Fragment生命周期---横竖屏切换的生命周期" target="_blank">android屏幕旋转生命周期,Activity、Fragment生命周期---横竖屏切换的生命周期</a> <span class="text-muted">老K先生</span> <a class="tag" taget="_blank" href="/search/android%E5%B1%8F%E5%B9%95%E6%97%8B%E8%BD%AC%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F/1.htm">android屏幕旋转生命周期</a> <div>先贴出一张大家众所周知activity流程图onCreate():创建Activity调用,用于Activity的初始化,还有个Bundle类型的参数,可以访问以前存储的状态。onStart():Activity在屏幕上对用户可见时调用,但还不可与用户交互onRestart():在activity停止后,在再次启动之前被调用。onResume():Activity开始和用户交互的时候调用,这时该A</div> </li> <li><a href="/article/1899386957868363776.htm" title="大数据面试之路 (一) 数据倾斜" target="_blank">大数据面试之路 (一) 数据倾斜</a> <span class="text-muted">愿与狸花过一生</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a> <div>记录大数据面试历程数据倾斜大数据岗位,数据倾斜面试必问的一个问题。一、数据倾斜的表现与原因表现某个或某几个Task执行时间过长,其他Task快速完成。Spark/MapReduce作业卡在某个阶段(如reduce阶段),日志显示少数Task处理大量数据。资源利用率不均衡(如CPU、内存集中在某些节点)。常见场景Key分布不均:如某些Key对应的数据量极大(如用户ID为空的记录、热点事件)。数据分区</div> </li> <li><a href="/article/1899386453226483712.htm" title="python递推法_如何使用Python递归函数中的递推?" target="_blank">python递推法_如何使用Python递归函数中的递推?</a> <span class="text-muted">热茶走</span> <a class="tag" taget="_blank" href="/search/python%E9%80%92%E6%8E%A8%E6%B3%95/1.htm">python递推法</a> <div>我们大家都知道,一个函数可能存在多种不同的用法,很少是有函数只针对一个方式,那么基于一种函数,我们肯定要了解多个方式,今日针对递归函数里的递推内容给大家介绍哦~递归是什么?是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象。下面是个人理解:递归就是在函数内部调用自己的函数被称之为递归。实例:#直接调用自己:deffunc:print('fromfunc')funcFunc#间接</div> </li> <li><a href="/article/1899386453633331200.htm" title="递推和递归_一文学会递归递推" target="_blank">递推和递归_一文学会递归递推</a> <span class="text-muted">HR刀姐</span> <a class="tag" taget="_blank" href="/search/%E9%80%92%E6%8E%A8%E5%92%8C%E9%80%92%E5%BD%92/1.htm">递推和递归</a> <div>递归算法和递推算法无论是在ACM竞赛还是项目工程上都有着极为广泛的应用,但想要完全掌握两者的思想并不容易,对于刚刚接触编程的人来说更是这样,我在初次接触递归递推时就吃了很多的苦头,除了当时对编程语言不太熟悉之外,最大的原因就是难以理解其中的思想,本文将二者结合代码分别讲解,力求以"理论+实践"的方式使读者明白两种算法。一箭双雕,一文双递。一.递归和递推的区别学习递归递推的一个容易遇到的问题就是混淆</div> </li> <li><a href="/article/1899386454115676160.htm" title="飞控简析-从入门到跑路序章" target="_blank">飞控简析-从入门到跑路序章</a> <span class="text-muted">skyman满天星</span> <a class="tag" taget="_blank" href="/search/%E9%A3%9E%E6%8E%A7%E7%AE%80%E6%9E%90/1.htm">飞控简析</a><a class="tag" taget="_blank" href="/search/pixhawk/1.htm">pixhawk</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E4%BA%BA%E6%9C%BA/1.htm">无人机</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E9%A3%9E%E6%8E%A7/1.htm">开源飞控</a> <div>一、序言茫茫天数此中求,世道兴衰不自由万万千千说不尽,不如推背去归休本人搞飞控差不多两年了,从一开始什么都不懂的真·小白,到现在的高级小白,我已经经历了太多太多。因为感觉飞控是一个比较小众的产品,所以国内的资料并不是很完善,有些文章重复太多了,而且每个人看问题的视角是不一样的。我虽然只是个半瓶水,但是也想为国内的飞控圈子做一点贡献。二、学飞控有没有前途这个话题有点小,大一点的问法应该是学嵌入式有没</div> </li> <li><a href="/article/1899386074359197696.htm" title="python递推式_Python 递推式构造列表(List Comprehensions)" target="_blank">python递推式_Python 递推式构造列表(List Comprehensions)</a> <span class="text-muted">man One</span> <a class="tag" taget="_blank" href="/search/python%E9%80%92%E6%8E%A8%E5%BC%8F/1.htm">python递推式</a> <div>你需要构造一个新的列表,列表中的元素是从一个已知列表中的元素计算而得到的.比如你要创建一个列表,里面的元素是另一个列表中的元素加23后得到的.使用递推式构造列表是最理想的方法:thenewlist=[x+23forxintheoldlist]如果你希望用一个列表中大于5的元素构造一个新的列表,使用递推式也是很方便的:thenewlist=[xforxintheoldlistifx>5]如果你希望将</div> </li> <li><a href="/article/1899386074887680000.htm" title="zookeeper程序员指南" target="_blank">zookeeper程序员指南</a> <span class="text-muted">weixin_30326741</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a> <div>1简介本文是为想要创建使用ZooKeeper协调服务优势的分布式应用的开发者准备的。本文包含理论信息和实践信息。本指南的前四节对各种ZooKeeper概念进行较高层次的讨论。这些概念对于理解ZooKeeper是如何工作的,以及如何使用ZooKeeper来进行工作都是必要的。这几节没有代码,但却要求读者对分布式计算相关的问题较为熟悉。本文的大多数信息以可独立访问的参考材料的形式存在。但是,在编写第一</div> </li> <li><a href="/article/1899386072853442560.htm" title="ZooKeeper学习总结(1)——ZooKeeper入门介绍" target="_blank">ZooKeeper学习总结(1)——ZooKeeper入门介绍</a> <span class="text-muted">一杯甜酒</span> <a class="tag" taget="_blank" href="/search/ZooKeeper%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/1.htm">ZooKeeper学习总结</a><a class="tag" taget="_blank" href="/search/Zookeeper/1.htm">Zookeeper</a> <div>1.概述Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务、名字服务、分布式同步、组服务等。它有如下的一些特点:简单Zookeeper的核心是一个精简的文件系统,它支持一些简单的操作和一些抽象操作,例如,排序和通知。丰富Zookeeper的原语操作是很丰富的,可实现一些协调数据结构和协议。例如,分布式队列、分布式锁和一组同级别节点中的“领导者选举</div> </li> <li><a href="/article/1899385694401392640.htm" title="一体化便携式气象站:从农业到环保,助力各行各业发展" target="_blank">一体化便携式气象站:从农业到环保,助力各行各业发展</a> <span class="text-muted">tianhe8888_</span> <a class="tag" taget="_blank" href="/search/%E6%B0%94%E8%B1%A1%E7%AB%99/1.htm">气象站</a><a class="tag" taget="_blank" href="/search/%E4%BE%BF%E6%90%BA%E5%BC%8F%E6%B0%94%E8%B1%A1%E7%AB%99/1.htm">便携式气象站</a><a class="tag" taget="_blank" href="/search/%E6%B0%94%E8%B1%A1%E7%9B%91%E6%B5%8B%E7%AB%99/1.htm">气象监测站</a> <div>【TH-PQX5】随着科技的飞速进步,气象监测技术也在不断创新与发展。一体化便携式气象站,作为气象监测领域的佼佼者,以其小巧、便捷、功能全面的特点,正逐渐成为各行各业不可或缺的监测工具。从农业到环保,从科研到应急,一体化便携式气象站正以其独特的优势,助力各行各业的发展。一、一体化便携式气象站的基本概述一体化便携式气象站是一种集多种气象要素监测于一体的便携式设备。它通常包括温度传感器、湿度传感器、风</div> </li> <li><a href="/article/1899385694812434432.htm" title="转基因大豆检测仪:快速精准识别,确保大豆安全品质" target="_blank">转基因大豆检测仪:快速精准识别,确保大豆安全品质</a> <span class="text-muted">tianhe8888_</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AC%E5%9F%BA%E5%9B%A0%E6%A3%80%E6%B5%8B%E4%BB%AA/1.htm">转基因检测仪</a><a class="tag" taget="_blank" href="/search/%E8%BD%AC%E5%9F%BA%E5%9B%A0%E6%A3%80%E6%B5%8B%E8%AE%BE%E5%A4%87/1.htm">转基因检测设备</a> <div>【TH-ZJY1】在现代农业与食品工业中,转基因作物的安全性一直是公众关注的焦点。为了确保大豆及其制品的安全品质,转基因大豆检测仪应运而生。这种高科技设备以其快速、精准的检测能力,为大豆产业链的安全监管提供了有力支持。一、工作原理基因检测技术转基因大豆检测仪主要依赖于先进的基因检测技术,如聚合酶链反应(PCR)、荧光原位杂交(FISH)或基因芯片等。这些技术能够特异性地识别大豆DNA中的转基因片段</div> </li> <li><a href="/article/1899385568215756800.htm" title="洛谷P5731 【深基5.习6】蛇形方阵" target="_blank">洛谷P5731 【深基5.习6】蛇形方阵</a> <span class="text-muted">westdata-Tm</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E6%8B%9F/1.htm">模拟</a> <div>P5731【深基5.习6】蛇形方阵题目描述给出一个不大于999的正整数nnn,输出n×nn\timesnn×n的蛇形方阵。从左上角填上111开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用333个字符,前面使用空格补齐。输入格式输入一个正整数nnn,含义如题所述。输出格式输出符合题目要求的蛇形矩阵。输入输出样例#1输入#14输出#112341213145111615610987说</div> </li> <li><a href="/article/1899385441812017152.htm" title="雨滴谱仪:准确掌握降水情况,助力道路维护" target="_blank">雨滴谱仪:准确掌握降水情况,助力道路维护</a> <span class="text-muted">tianhe8888_</span> <a class="tag" taget="_blank" href="/search/%E9%9B%A8%E6%BB%B4%E8%B0%B1%E4%BB%AA/1.htm">雨滴谱仪</a><a class="tag" taget="_blank" href="/search/%E9%99%8D%E6%B0%B4%E5%A4%A9%E6%B0%94%E7%8E%B0%E8%B1%A1%E4%BB%AA/1.htm">降水天气现象仪</a><a class="tag" taget="_blank" href="/search/%E9%9B%A8%E6%BB%B4/1.htm">雨滴</a> <div>【TH-YD1】在气象监测与交通管理中,对道路降水情况的实时监测是至关重要的。雨滴谱仪作为一种高精度、智能化的降水天气现象监测设备,凭借其独特的工作原理和卓越的性能,在实时监测道路降水情况方面发挥着重要作用。一、引言降水是自然界中一种常见的天气现象,对道路交通、农业生产、城市排水等多个领域都有着重要影响。为了准确掌握降水情况,及时采取应对措施,科学家们研发了雨滴谱仪这一先进的气象监测设备。雨滴谱仪</div> </li> <li><a href="/article/1899384937455349760.htm" title="个人NAS方案,终端字符界面浏览器" target="_blank">个人NAS方案,终端字符界面浏览器</a> <span class="text-muted">耶耶耶耶耶~</span> <a class="tag" taget="_blank" href="/search/%E5%85%B6%E5%AE%83/1.htm">其它</a><a class="tag" taget="_blank" href="/search/NAS/1.htm">NAS</a> <div>文章目录前言需求分析Linux配置smb服务-Linux服务端配置-windows客户端配置Linux安装流媒体服务在终端界面中浏览网页references前言个人nas需要满足的需求:可以通过浏览器访问nas中的文件、图片、视频支持像访问本地分区一样访问nas,对应用程序来讲文件在nas和本地是透明的需求分析硬件方面可用arm开发版+外置大硬盘软件方面采用Linux系统+一系列服务程序实现总结一</div> </li> <li><a href="/article/1899384937878974464.htm" title="Dash 简介" target="_blank">Dash 简介</a> <span class="text-muted">tankusa</span> <a class="tag" taget="_blank" href="/search/dash/1.htm">dash</a> <div>Dash是一个基于Python的开源框架,专门用于构建数据分析和数据可视化的Web应用程序。Dash由Plotly团队开发,旨在帮助数据分析师、数据科学家和开发人员快速创建交互式的、基于数据的Web应用,而无需深入掌握前端技术(如HTML、CSS和JavaScript)。Dash的核心优势在于其简单易用性和强大的功能。通过Dash,用户可以使用纯Python代码来构建复杂的Web应用,而无需编写繁</div> </li> <li><a href="/article/1899384811282296832.htm" title="cpp-httplib 解析" target="_blank">cpp-httplib 解析</a> <span class="text-muted">耶耶耶耶耶~</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/network/1.htm">network</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/cpp/1.htm">cpp</a> <div>文章目录前言headerrequest-responsecpphttplib结构解析有意思的trick利用对象的生命周期判断fd是否健在阻塞式读写防止阻塞的方法listen,acceptcpp-httplib解析1.创建server_socket_fd2.监听事件循环3.处理单用户请求的函数process_and_close_socket4.获取clientsock的一些信息5.一些列令人窒息的c</div> </li> <li><a href="/article/1899384433081905152.htm" title="opencv借助ffmpeg读取sdp文件进行rtp拉流 20231019" target="_blank">opencv借助ffmpeg读取sdp文件进行rtp拉流 20231019</a> <span class="text-muted">诗筱涵</span> <a class="tag" taget="_blank" href="/search/rtsp/1.htm">rtsp</a><a class="tag" taget="_blank" href="/search/%E7%94%A8%E7%AE%80%E5%8D%95%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0%E5%8A%9F%E8%83%BD/1.htm">用简单代码实现功能</a><a class="tag" taget="_blank" href="/search/OpenCV/1.htm">OpenCV</a><a class="tag" taget="_blank" href="/search/rtp/1.htm">rtp</a> <div>20231019ffmpeg装起来很快编译命令g++rtp_ffmpeg_test.cpp-ooutput$(pkg-config--libsopencv4)代码如下#include#include#include#includeusingnamespacestd;usingnamespacecv;intmain(intargc,char**argv){cout>frame;if(frame.em</div> </li> <li><a href="/article/63.htm" title="关于旗正规则引擎规则中的上传和下载问题" target="_blank">关于旗正规则引擎规则中的上传和下载问题</a> <span class="text-muted">何必如此</span> <a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD/1.htm">文件下载</a><a class="tag" taget="_blank" href="/search/%E5%8E%8B%E7%BC%A9/1.htm">压缩</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/1.htm">文件上传</a> <div>文件的上传下载都是数据流的输入输出,大致流程都是一样的。 一、文件打包下载 1.文件写入压缩包 string mainPath="D:\upload\";     下载路径 string tmpfileName=jar.zip;        &n</div> </li> <li><a href="/article/190.htm" title="【Spark九十九】Spark Streaming的batch interval时间内的数据流转源码分析" target="_blank">【Spark九十九】Spark Streaming的batch interval时间内的数据流转源码分析</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a> <div>  以如下代码为例(SocketInputDStream): Spark Streaming从Socket读取数据的代码是在SocketReceiver的receive方法中,撇开异常情况不谈(Receiver有重连机制,restart方法,默认情况下在Receiver挂了之后,间隔两秒钟重新建立Socket连接),读取到的数据通过调用store(textRead)方法进行存储。数据</div> </li> <li><a href="/article/317.htm" title="spark master web ui 端口8080被占用解决方法" target="_blank">spark master web ui 端口8080被占用解决方法</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/8080/1.htm">8080</a><a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3%E5%8D%A0%E7%94%A8/1.htm">端口占用</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/master+web+ui/1.htm">master web ui</a> <div>spark master web ui 默认端口为8080,当系统有其它程序也在使用该接口时,启动master时也不会报错,spark自己会改用其它端口,自动端口号加1,但为了可以控制到指定的端口,我们可以自行设置,修改方法:   1、cd SPARK_HOME/sbin   2、vi start-master.sh     3、定位到下面部分</div> </li> <li><a href="/article/444.htm" title="oracle_执行计划_谓词信息和数据获取" target="_blank">oracle_执行计划_谓词信息和数据获取</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/%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92/1.htm">执行计划</a> <div>  oracle_执行计划_谓词信息和数据获取(上) 一:简要说明 在查看执行计划的信息中,经常会看到两个谓词filter和access,它们的区别是什么,理解了这两个词对我们解读Oracle的执行计划信息会有所帮助。 简单说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引),而filter表示谓词条件的值并不会影响数据访问路径,只起到</div> </li> <li><a href="/article/571.htm" title="spring中datasource配置" target="_blank">spring中datasource配置</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/dataSource/1.htm">dataSource</a> <div>datasource配置有很多种,我介绍的一种是采用c3p0的,它的百科地址是: http://baike.baidu.com/view/920062.htm   <!-- spring加载资源文件 --> <bean name="propertiesConfig" class="org.springframework.b</div> </li> <li><a href="/article/698.htm" title="web报表工具FineReport使用中遇到的常见报错及解决办法(三)" target="_blank">web报表工具FineReport使用中遇到的常见报错及解决办法(三)</a> <span class="text-muted">老A不折腾</span> <a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/FAQ/1.htm">FAQ</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E8%A1%A8%E8%BD%AF%E4%BB%B6/1.htm">报表软件</a> <div>这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。   出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。 1、repeated column width is largerthan paper width: 这个看这段话应该是很好理解的。比如做的模板页面宽度只能放</div> </li> <li><a href="/article/825.htm" title="mysql 用户管理" target="_blank">mysql 用户管理</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/user/1.htm">user</a> <div>1.新建用户 //登录MYSQL@>mysql -u root -p@>密码//创建用户mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’));//刷新系统权限表mysql>flush privileges;这样就创建了一个名为:</div> </li> <li><a href="/article/952.htm" title="关于使用Spring导致c3p0数据库死锁问题" target="_blank">关于使用Spring导致c3p0数据库死锁问题</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Spring+%E5%85%A5%E9%97%A8/1.htm">Spring 入门</a><a class="tag" taget="_blank" href="/search/Spring+%E5%AE%9E%E4%BE%8B/1.htm">Spring 实例</a><a class="tag" taget="_blank" href="/search/Spring3/1.htm">Spring3</a><a class="tag" taget="_blank" href="/search/Spring+%E6%95%99%E7%A8%8B/1.htm">Spring 教程</a> <div>这个问题我实在是为整个 springsource 的员工蒙羞 如果大家使用 spring 控制事务,使用 Open Session In View 模式, com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.</div> </li> <li><a href="/article/1079.htm" title="百度词库联想" target="_blank">百度词库联想</a> <span class="text-muted">annan211</span> <a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a> <div> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>RunJS</title&g</div> </li> <li><a href="/article/1206.htm" title="int数据与byte之间的相互转换实现代码" target="_blank">int数据与byte之间的相互转换实现代码</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E7%A7%BB/1.htm">位移</a><a class="tag" taget="_blank" href="/search/int%E8%BD%ACbyte/1.htm">int转byte</a><a class="tag" taget="_blank" href="/search/byte%E8%BD%ACint/1.htm">byte转int</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E7%9A%84%E5%AE%9E%E7%8E%B0/1.htm">基本数据类型的实现</a> <div>在BMP文件和文件压缩时需要用到的int与byte转换,现将理解的贴出来;   主要是要理解;位移等概念 http://baihe747.iteye.com/blog/2078029   int转byte;   byte转int;   /** * 字节转成int,int转成字节 * @author Administrator * </div> </li> <li><a href="/article/1333.htm" title="简单模拟实现数据库连接池" target="_blank">简单模拟实现数据库连接池</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/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/%E7%AE%80%E5%8D%95%E6%A8%A1%E6%8B%9F%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">简单模拟实现数据库连接池</a> <div>简单模拟实现数据库连接池 实例1: package com.bijian.thread; public class DB { //private static final int MAX_COUNT = 10; private static final DB instance = new DB(); private int count = 0; private i</div> </li> <li><a href="/article/1460.htm" title="一种基于Weblogic容器的鉴权设计" target="_blank">一种基于Weblogic容器的鉴权设计</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/weblogic/1.htm">weblogic</a> <div>        服务器对请求的鉴权可以在请求头中加Authorization之类的key,将用户名、密码保存到此key对应的value中,当然对于用户名、密码这种高机密的信息,应该对其进行加砂加密等,最简单的方法如下: String vuser_id = "weblogic"; String vuse</div> </li> <li><a href="/article/1587.htm" title="【RPC框架Hessian二】Hessian 对象序列化和反序列化" target="_blank">【RPC框架Hessian二】Hessian 对象序列化和反序列化</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hessian/1.htm">hessian</a> <div> 任何一个对象从一个JVM传输到另一个JVM,都要经过序列化为二进制数据(或者字符串等其他格式,比如JSON),然后在反序列化为Java对象,这最后都是通过二进制的数据在不同的JVM之间传输(一般是通过Socket和二进制的数据传输),本文定义一个比较符合工作中。   1. 定义三个POJO    Person类 package com.tom.hes</div> </li> <li><a href="/article/1714.htm" title="【Hadoop十四】Hadoop提供的脚本的功能" target="_blank">【Hadoop十四】Hadoop提供的脚本的功能</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>1. hadoop-daemon.sh 1.1 启动HDFS ./hadoop-daemon.sh start namenode ./hadoop-daemon.sh start datanode  通过这种逐步启动的方式,比start-all.sh方式少了一个SecondaryNameNode进程,这不影响Hadoop的使用,其实在 Hadoop2.0中,SecondaryNa</div> </li> <li><a href="/article/1841.htm" title="中国互联网走在“灰度”上" target="_blank">中国互联网走在“灰度”上</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/%E7%AE%A1%E7%90%86+%E7%81%B0%E5%BA%A6/1.htm">管理 灰度</a> <div>中国互联网走在“灰度”上(转) 文/孕峰   第一次听说灰度这个词,是任正非说新型管理者所需要的素质。第二次听说是来自马化腾。似乎其他人包括马云也用不同的语言说过类似的意思。   灰度这个词所包含的意义和视野是广远的。要理解这个词,可能同样要用“灰度”的心态。灰度的反面,是规规矩矩,清清楚楚,泾渭分明,严谨条理,是决不妥协,不转弯,认死理。黑白分明不是灰度,像彩虹那样</div> </li> <li><a href="/article/1968.htm" title="java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。" target="_blank">java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class PrintMatrixClockwisely { /** * Q51.输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 </div> </li> <li><a href="/article/2095.htm" title="mongoDB 用户管理" target="_blank">mongoDB 用户管理</a> <span class="text-muted">开窍的石头</span> <a class="tag" taget="_blank" href="/search/mongoDB%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86/1.htm">mongoDB用户管理</a> <div>  1:添加用户    第一次设置用户需要进入admin数据库下设置超级用户(use admin)      db.addUsr({user:'useName',pwd:'111111',roles:[readWrite,dbAdmin]});    第一个参数用户的名字    第二个参数</div> </li> <li><a href="/article/2222.htm" title="[游戏与生活]玩暗黑破坏神3的一些问题" target="_blank">[游戏与生活]玩暗黑破坏神3的一些问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a> <div>    暗黑破坏神3是有史以来最让人激动的游戏。。。。但是有几个问题需要我们注意      玩这个游戏的时间,每天不要超过一个小时,且每次玩游戏最好在白天      结束游戏之后,最好在太阳下面来晒一下身上的暗黑气息,让自己恢复人的生气   &nb</div> </li> <li><a href="/article/2349.htm" title="java 二维数组如何存入数据库" target="_blank">java 二维数组如何存入数据库</a> <span class="text-muted">cuiyadll</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>using System; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.Serialization; using System.IO; namespace WindowsFormsApplication1 { </div> </li> <li><a href="/article/2476.htm" title="本地事务和全局事务Local Transaction and Global Transaction(JTA)" target="_blank">本地事务和全局事务Local Transaction and Global Transaction(JTA)</a> <span class="text-muted">darrenzhu</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><a class="tag" taget="_blank" href="/search/local/1.htm">local</a><a class="tag" taget="_blank" href="/search/global/1.htm">global</a><a class="tag" taget="_blank" href="/search/transaction/1.htm">transaction</a> <div>Configuring Spring and JTA without full Java EE http://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/ Spring doc -Transaction Management http://docs.spring.io/spri</div> </li> <li><a href="/article/2603.htm" title="Linux命令之alias - 设置命令的别名,让 Linux 命令更简练" target="_blank">Linux命令之alias - 设置命令的别名,让 Linux 命令更简练</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/alias/1.htm">alias</a> <div>用途说明 设置命令的别名。在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名。虽然可以为命令建立“链接”解决长文件名的问 题,但对于带命令行参数的命令,链接就无能为力了。而指定别名则可以解决此类所有问题【1】。常用别名来简化ssh登录【见示例三】,使长命令变短,使常 用的长命令行变短,强制执行命令时询问等。   常用参数 格式:alias 格式:ali</div> </li> <li><a href="/article/2730.htm" title="yii2 restful web服务[格式响应]" target="_blank">yii2 restful web服务[格式响应]</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a> <div>响应格式 当处理一个 RESTful API 请求时, 一个应用程序通常需要如下步骤 来处理响应格式: 确定可能影响响应格式的各种因素, 例如媒介类型, 语言, 版本, 等等。 这个过程也被称为 content negotiation。 资源对象转换为数组, 如在 Resources 部分中所描述的。 通过 [[yii\rest\Serializer]]</div> </li> <li><a href="/article/2857.htm" title="MongoDB索引调优(2)——[十]" target="_blank">MongoDB索引调优(2)——[十]</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/MongoDB%E7%B4%A2%E5%BC%95%E4%BC%98%E5%8C%96/1.htm">MongoDB索引优化</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2178555 一、概述       上一篇文档中也说明了,MongoDB的索引几乎与关系型数据库的索引一模一样,优化关系型数据库的技巧通用适合MongoDB,所有这里只讲MongoDB需要注意的地方 二、索引内嵌文档     可以在嵌套文档的键上建立索引,方式与正常</div> </li> <li><a href="/article/2984.htm" title="当滑动到顶部和底部时,实现Item的分离效果的ListView" target="_blank">当滑动到顶部和底部时,实现Item的分离效果的ListView</a> <span class="text-muted">gundumw100</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>拉动ListView,Item之间的间距会变大,释放后恢复原样; package cn.tangdada.tangbang.widget; import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import andr</div> </li> <li><a href="/article/3111.htm" title="程序员用HTML5制作的爱心树表白动画" target="_blank">程序员用HTML5制作的爱心树表白动画</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>体验效果:http://keleyi.com/keleyi/phtml/html5/31.htmHTML代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="UTF-8" > <ti</div> </li> <li><a href="/article/3238.htm" title="预装windows 8 系统GPT模式的ThinkPad T440改装64位 windows 7旗舰版" target="_blank">预装windows 8 系统GPT模式的ThinkPad T440改装64位 windows 7旗舰版</a> <span class="text-muted">kakajw</span> <a class="tag" taget="_blank" href="/search/ThinkPad/1.htm">ThinkPad</a><a class="tag" taget="_blank" href="/search/%E9%A2%84%E8%A3%85/1.htm">预装</a><a class="tag" taget="_blank" href="/search/%E6%94%B9%E8%A3%85/1.htm">改装</a><a class="tag" taget="_blank" href="/search/windows+7/1.htm">windows 7</a><a class="tag" taget="_blank" href="/search/windows+8/1.htm">windows 8</a> <div>  该教程具有普遍参考性,特别适用于联想的机器,其他品牌机器的处理过程也大同小异。 该教程是个人多次尝试和总结的结果,实用性强,推荐给需要的人!   缘由 小弟最近入手笔记本ThinkPad T440,但是特别不能习惯笔记本出厂预装的Windows 8系统,而且厂商自作聪明地预装了一堆没用的应用软件,消耗不少的系统资源(本本的内存为4G,系统启动完成时,物理内存占用比</div> </li> <li><a href="/article/3365.htm" title="Nginx学习笔记" target="_blank">Nginx学习笔记</a> <span class="text-muted">mcj8089</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>一、安装nginx             1、在nginx官方网站下载一个包,下载地址是:  http://nginx.org/download/nginx-1.4.2.tar.gz      2、WinSCP(ftp上传工</div> </li> <li><a href="/article/3492.htm" title="mongodb 聚合查询每天论坛链接点击次数" target="_blank">mongodb 聚合查询每天论坛链接点击次数</a> <span class="text-muted">qiaolevip</span> <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a> <div>/* 18 */ { "_id" : ObjectId("5596414cbe4d73a327e50274"), "msgType" : "text", "sendTime" : ISODate("2015-07-03T08:01:16.000Z"</div> </li> <li><a href="/article/3619.htm" title="java术语(PO/POJO/VO/BO/DAO/DTO)" target="_blank">java术语(PO/POJO/VO/BO/DAO/DTO)</a> <span class="text-muted">Luob.</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/DTO/1.htm">DTO</a><a class="tag" taget="_blank" href="/search/po/1.htm">po</a><a class="tag" taget="_blank" href="/search/VO+BO/1.htm">VO BO</a> <div> PO(persistant object) 持久对象 在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操作. VO(value object) 值对象 通</div> </li> <li><a href="/article/3746.htm" title="算法复杂度" target="_blank">算法复杂度</a> <span class="text-muted">Wuaner</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a> <div>Time Complexity & Big-O: http://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o http://bigocheatsheet.com/ http://www.sitepoint.com/time-complexity-algorithms/ </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>