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/1881205261000044544.htm" title="全新4.2版本多功能社交兴趣爱好圈子系统涵盖APP、小程序和H5三个端口 ,圈子系统小程序成品源码" target="_blank">全新4.2版本多功能社交兴趣爱好圈子系统涵盖APP、小程序和H5三个端口 ,圈子系统小程序成品源码</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%90%8E%E7%AB%AF%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">前端后端小程序数据库</a> <div>圈子系统通常指的是社交平台或论坛中的一种功能模块,用于创建和管理兴趣小组或讨论群组。这种系统的源码会涉及到后端数据库设计、用户认证授权、消息传递、群组管理等多个模块。适用于多种场景语音匹配:(主要是匹配当前在线的异性,会主动发送弹窗,对方同意后,进入1v1双方语聊,默认6分钟,如果双方点喜欢按钮,可延长到30分钟。时间到了后,双方私聊即可)每次话费虚拟币。灵魂匹配:是根据采集的用户更多数据和心理测</div> </li> <li><a href="/article/1881204531509915648.htm" title="stm32+w5500实现web服务_【NodeJS】简单静态WEB服务器实现" target="_blank">stm32+w5500实现web服务_【NodeJS】简单静态WEB服务器实现</a> <span class="text-muted">weixin_39711441</span> <div>说明利用HTTP模块URl模块Path模块Fs模块创建在项目文件夹下,创建文件夹static,下面创建index.html//引入http模块var http=require('http');//fs模块var fs=require('fs');http.createServer(function(req,res){    //http://localhost:8001/news.html/new</div> </li> <li><a href="/article/1881204404934209536.htm" title="android wifi 流程图_实现双wifi的方法及Android终端与流程" target="_blank">android wifi 流程图_实现双wifi的方法及Android终端与流程</a> <span class="text-muted">weixin_39719427</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/wifi/1.htm">wifi</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%9B%BE/1.htm">流程图</a> <div>本发明涉及无线通信技术领域,尤其涉及一种实现双wifi的方法及Android终端。背景技术:在楼宇对讲产品中,楼宇对讲的家庭设备,如平板,需要连接到楼宇对讲的局域网络,以实现与楼宇内的相关设备进行对讲等。然而楼宇对讲所在的局域网络通常为内网,加上现有的基于Android系统的平板仅支持一路wifi热点连接功能,导致已连接了内网的平板无法再同时连接公网,即互联网,进而也就无法在通过平板使用需要连接公</div> </li> <li><a href="/article/1881204402732199936.htm" title="python雪人_python实现滑雪者小游戏" target="_blank">python雪人_python实现滑雪者小游戏</a> <span class="text-muted">weixin_39692761</span> <a class="tag" taget="_blank" href="/search/python%E9%9B%AA%E4%BA%BA/1.htm">python雪人</a> <div>引言这是一个用pygame写的滑雪者的游戏。skier从上向下滑,途中会遇到树和旗子,捡起一个旗子得10分,碰到一颗树扣100分,可以用左右箭头控制skier方向。安装pygamepipinstallpygame用pip或设置界面安装,可自行百度以下是主界面代码,每一个类都是一个py文件,需要导包importpygameimportrandomfromsettingsimportSettingsf</div> </li> <li><a href="/article/1881204251074555904.htm" title="相约深圳,个推与你共寻AI时代下的数据价值和数智增长机会" target="_blank">相约深圳,个推与你共寻AI时代下的数据价值和数智增长机会</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E8%BF%90%E8%90%A5%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86/1.htm">运营产品经理</a> <div>抓住AI风口,共探变革机遇。12月7日-8日,AI产品经理大会将在深圳召开。每日互动(个推)将在7日上午场带来《AI时代下的数据价值体现和数智增长机会》主题演讲,并在当天举办“数据驱动运营增长”专题闭门会。同时,在两天的会期中,个推在大会展区也将为现场观众带来数智化运营增长的实战案例与创新产品,助力各位产品官、运营官在AI产品飞速迭代的时代洞察发展趋势,稳抓增长曲线。本次产品经理大会聚焦AI时代的</div> </li> <li><a href="/article/1881203898711076864.htm" title="tiktok框架_字节跳动大动作!调整抖音海外版TikTok架构,更好服务全球用户" target="_blank">tiktok框架_字节跳动大动作!调整抖音海外版TikTok架构,更好服务全球用户</a> <span class="text-muted">活着改变世界</span> <a class="tag" taget="_blank" href="/search/tiktok%E6%A1%86%E6%9E%B6/1.htm">tiktok框架</a> <div>原标题:字节跳动大动作!调整抖音海外版TikTok架构,更好服务全球用户说到当下最流行的短视频软件,那非抖音莫属,抖音不仅在国内火遍大江南北,在海外同样拥有巨大的市场,抖音海外版TikTok同样是国际短视频软件行业中的一匹黑马。就在几天前,TikTok背后的爸爸字节跳动又有了新动作,字节跳动表示,将会对TikTok进行架构调整,并且设立海外总部来专门为TikTok设计发展方案。声明中显示,字节跳动</div> </li> <li><a href="/article/1881203265887072256.htm" title="mysql8 mha_探索MySQL高可用架构之MHA(8)" target="_blank">mysql8 mha_探索MySQL高可用架构之MHA(8)</a> <span class="text-muted">樱桃小公举</span> <a class="tag" taget="_blank" href="/search/mysql8/1.htm">mysql8</a><a class="tag" taget="_blank" href="/search/mha/1.htm">mha</a> <div>探索MySQL高可用架构之MHA(8)-----构建mysql高可用系列(共9篇)上一篇文章介绍了本次架构的mha读写分离!世上本来就没有十全十美的事物。你不能要求一个人没有一点缺点错误。要正视自己的长处和短处,取他人之长补己之短,把自己的优点发挥至极致,你将会拥有精彩的人生。mha虽然功能强大,但是它同样并不完美,本篇文章主要介绍手工编写shell脚本解决mha的不完美。我只是基本把功实现了,因</div> </li> <li><a href="/article/1881203242860343296.htm" title="一款前端开源的,在线电子表格univer介绍" target="_blank">一款前端开源的,在线电子表格univer介绍</a> <span class="text-muted"></span> <div>Univer是一款颠覆性的在线电子表格解决方案,为数据输入和协作带来了全新的方式。作为一款开源、免费的平台,Univer专注于在线电子表格管理,为用户提供了处理数据、创建动态报告和高效协作的无缝体验。具体可以看他们的官网univer.ai.Excel作为广受欢迎的电子表格软件,Univer的兼容性和功能性使其成为Excel爱好者的理想选择。用户可以体验到与Excel相关的功能,并且能够轻松使用带公</div> </li> <li><a href="/article/1881203114237816832.htm" title="中医津液代谢过程关系图解" target="_blank">中医津液代谢过程关系图解</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">数据可视化</a> <div>  关系图通过图形天下展现了复杂的关系以数据可视化,清晰地呈现了人体内津液代谢的关键环节及其相互作用,涵盖了从饮食入口直至废物排出的全过程。它不仅突显了胃、脾、肺、肾等主要器官在津液生成与分配中的协作关系,同时也强调了身体如何通过排汗和排泄来维持内部平衡。使得抽象的生命科学概念变得易于理解。                  津液代谢过程  这张关系图展示了津液从食物和饮料进入人体后的代谢过程,包</div> </li> <li><a href="/article/1881203115647102976.htm" title="生态系统中磷循环的关系图" target="_blank">生态系统中磷循环的关系图</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">数据可视化</a> <div>  关系图通过图形天下展示了磷循环的关键过程,清晰地呈现了磷在岩石、土壤、水体及生物体之间的流动。利用关系数据可视化技术,详细描绘了磷通过风化、吸收、摄取、排泄、分解等环节在不同环境介质中的转化,揭示了生态系统中磷元素动态平衡的重要性。这一可视化工具使复杂的磷循环变得直观易懂。                  磷循环关系图  磷循环展示了磷在岩石、土壤、水体及生物体之间的流动过程,反映了生态系统</div> </li> <li><a href="/article/1881203013746487296.htm" title="力扣148:排序链表" target="_blank">力扣148:排序链表</a> <span class="text-muted">瀛台夜雪</span> <a class="tag" taget="_blank" href="/search/%E5%8A%9B%E6%89%A3%E5%88%B7%E9%A2%98/1.htm">力扣刷题</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>力扣148:排序链表题目描述给你链表的头结点head,请将其按升序排列并返回排序后的链表。输入输出样例输入:head=[4,2,1,3]输出:[1,2,3,4]输入:head=[-1,5,3,4,0]输出:[-1,0,3,4,5]输入:head=[]输出:[]解法一,使用递归的归并排序,自顶向下,空间复杂度为O(logN)classSolution{public:ListNode*sortList</div> </li> <li><a href="/article/1881202634623348736.htm" title="【NOIP普及组】三连击" target="_blank">【NOIP普及组】三连击</a> <span class="text-muted">我就是南山</span> <a class="tag" taget="_blank" href="/search/C%2B%2B%E9%A2%98%E7%9B%AE/1.htm">C++题目</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/NOIP%E6%99%AE%E5%8F%8A%E7%BB%84/1.htm">NOIP普及组</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>题目描述将1,2,…,91,2,…,9共99个数分成33组,分别组成33个三位数,且使这33个三位数构成1:2:31:2:3的比例,试求出所有满足条件的33个三位数。输入格式无输出格式若干行,每行33个数字。按照每行第11个数字升序排列。输入输出样例输入无输出192384576***...***(剩余部分不予展示)上代码代码#includeusingnamespacestd;intmain(){f</div> </li> <li><a href="/article/1881202635562872832.htm" title="【NOIP普及组】 细胞分裂" target="_blank">【NOIP普及组】 细胞分裂</a> <span class="text-muted">我就是南山</span> <a class="tag" taget="_blank" href="/search/C%2B%2B%E9%A2%98%E7%9B%AE/1.htm">C++题目</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/NOIP%E6%99%AE%E5%8F%8A%E7%BB%84/1.htm">NOIP普及组</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>题目描述Hanks博士是BT(Bio-Tech,生物技术)领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。Hanks博士手里现在有N种细胞,编号从1-N,一个第i种细胞经过1秒钟可以分裂为Si个同种细胞(Si为正整数)。现在他需要选取某种细胞的一个放进培养皿,让其自由分裂,进行培养。一段时间以后,再把培养皿中的所有细胞平均分入M个试管,形成M份样本,用于实验。Hanks博士的试</div> </li> <li><a href="/article/1881202631209185280.htm" title="【NOIP普及组】寻宝" target="_blank">【NOIP普及组】寻宝</a> <span class="text-muted">我就是南山</span> <a class="tag" taget="_blank" href="/search/C%2B%2B%E9%A2%98%E7%9B%AE/1.htm">C++题目</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/NOIP%E6%99%AE%E5%8F%8A%E7%BB%84/1.htm">NOIP普及组</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>题目描述传说很遥远的藏宝楼顶层藏着诱人的宝藏。小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书。说明书的内容如下:藏宝楼共有N+1层,最上面一层是顶层,顶层有一个房间里面藏着宝藏。除了顶层外,藏宝楼另有N层,每层M个房间,这M个房间围成一圈并按逆时针方向依次编号为0,…,M-1。其中一些房间有通往上一层的楼梯,每层楼的楼梯设计可能不同。每个房间里有</div> </li> <li><a href="/article/1881202252920713216.htm" title="问题 E: 指针练习-1" target="_blank">问题 E: 指针练习-1</a> <span class="text-muted">我就是南山</span> <a class="tag" taget="_blank" href="/search/C%2B%2B%E9%A2%98%E7%9B%AE/1.htm">C++题目</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%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>时间限制:1.000sec内存限制:128MB题目描述编写一个函数myMove,其功能是将一个数组中的所有为0的元素移至数组末尾,并保持数组非0元素的相对顺序不变。函数原型可参考如下:voidmyMove(int*p,intlen);其中,p为指向数组首元素的指针,len为数组中的元素个数。如,数组中的原始数据为:1,0,3,4,0,2,5。则经过函数处理后的数组元素为:1,3,4,2,5,0,0</div> </li> <li><a href="/article/1881201980265787392.htm" title="玩转云计算:教你在Akamai Linode上构建IT架构–准备工作" target="_blank">玩转云计算:教你在Akamai Linode上构建IT架构–准备工作</a> <span class="text-muted"></span> <div>时至今日,选择以云计算方式来运维业务,已经成为大部分情况下的最优选。那么如果要从零开始开发一个新应用,并依托云平台来设计、开发、部害和远维,具体该从何处下手?这一系列文章将介绍如何基于AkamaiLinode平台实现这个目标。如果现在需要从零开始开发一个新应用,那么直接选择依托云平台来设计、开发、部署和运维,这无疑是最好的方式。不过到底该从何处下手?Akamai将通过一系列文章告诉大家,如何利用A</div> </li> <li><a href="/article/1881201748866035712.htm" title="Axios封装一款前端项目网络请求实用插件" target="_blank">Axios封装一款前端项目网络请求实用插件</a> <span class="text-muted">smart_ljh</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/vuejs/1.htm">vuejs</a><a class="tag" taget="_blank" href="/search/axios/1.htm">axios</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>前端项目开发非常经典的插件axios大家都很熟悉,它是一个Promise网络请求库,可以用于浏览器和node.js支持的项目中。像一直以来比较火的Vue.js开发的几乎所有项目网络请求用的都是axios。那么我们在实际的项目中,有时候为了便于维护、请求头信息统一处理、统一拦截器设置以及响应数据统一处理,需要在项目中针对axios封装一个网络请求插件。接下来就介绍一下针对以上这些输出具体的解决方案和</div> </li> <li><a href="/article/1881201726959185920.htm" title="游戏业者必看!从中心化到分布式,分布式架构对游戏业带来的优势与收益" target="_blank">游戏业者必看!从中心化到分布式,分布式架构对游戏业带来的优势与收益</a> <span class="text-muted"></span> <div>游戏行业在全球范围内的蓬勃增长引发了从技术到架构的飞速革新与演变。推动技术发展的重要因素是玩家的体验,任何一个游戏行业的参与者都将玩家的体验是为业务的核心服务目标,而在优化玩家体验的道路上,游戏业者仍有很长的旅程。尤其是对于在线游戏商来说,全球复杂的网络环境让延迟变得更加难以控制。在线游戏可以说是所有行业中对延迟最敏感的行业,这使得它特别容易受到传统集中式云计算架构的缺点的影响,在这种架构中,数据</div> </li> <li><a href="/article/1881201471312162816.htm" title="vue3开发:项目添加mitt" target="_blank">vue3开发:项目添加mitt</a> <span class="text-muted"></span> <div>项目中遇到一个场景:类似于app.vue页面获取某一个页面组件的数据,因为进入那个组件是通过router-view进入,不是通过组件注入到app.vue,所以使用常规的组件通信获取不到数据,我使用了mitt实现了这个功能。Vue2中我们使用EventBus来实现跨组件之间的一些通信,它依赖于Vue自带的on/on/on/emit/$off等方法,而Vue3中移除了这些相关方法,这意味着EventB</div> </li> <li><a href="/article/1881201092457459712.htm" title="vue开发:解决el-input-number组件输入数字的时候无法实时触发change事件" target="_blank">vue开发:解决el-input-number组件输入数字的时候无法实时触发change事件</a> <span class="text-muted"></span> <div>问题:当已经输入数字的时候,还触发了为空的校验,预期是已经输入年龄的时候不会校验,输入框没有值的时候才会触发校验的。在网上查找了资料,el-input-number组件输入数字的时候无法实时触发change事件,需要使用@input.native来触发,一开始使用了也没有效果,后来加了this.$nextTick功能实现了。//解决el-input-number组件输入数字的时候无法实时触发cha</div> </li> <li><a href="/article/1881200993362833408.htm" title="20230329----重返学习-正则的匹配-同步任务与异步任务" target="_blank">20230329----重返学习-正则的匹配-同步任务与异步任务</a> <span class="text-muted">方朝端</span> <a class="tag" taget="_blank" href="/search/%E9%87%8D%E8%BF%94%E5%AD%A6%E4%B9%A0/1.htm">重返学习</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>day-038-thirty-eight-20230329-正则的匹配-同步任务与异步任务正则的匹配字符串正则方法与正则一起使用的字符串方法match捕获letstr="helloAppleoneapple";letreg=/apple/ig;console.log(str.match(reg));replce替换letstr="helloappleoneApple";//默认没有正则,只会替换第</div> </li> <li><a href="/article/1881200965240025088.htm" title="判断数组对象里的特定几个属性值是否重复" target="_blank">判断数组对象里的特定几个属性值是否重复</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>遇到一个场景,用户可以添加多个同一种药品,但是同一种药品中只能选择一种药品批次,这就需要判断:同一种药品选择多个药品批次就需要提示代码:判断数组对象里的特定几个属性值是否重复//constarr=[{"drugId":"9736970079698968","price":"1","num":"1",//药品批次"specification":"1","category":"药品1"},{"drug</div> </li> <li><a href="/article/1881200835581505536.htm" title="基于区块链技术的超级账本(Hyperledger) - 从理论到实战" target="_blank">基于区块链技术的超级账本(Hyperledger) - 从理论到实战</a> <span class="text-muted"></span> <div>在多模态模型的架构上,ChatGPT的绘图能力主要依赖以下几个核心组件:跨模态编码器(Cross-ModalEncoder):跨模态编码器的作用是将文本和图像的特征进行对齐。GPT可以将用户输入的文本描述转换为文本特征表示,然后利用跨模态编码器将这些特征映射到图像特征空间。这种方式确保模型能够理解描述性语言中不同细节是如何与图像特征对应的。</div> </li> <li><a href="/article/1881200836751716352.htm" title="华为云开天 aPaaS 平台的流使用体验" target="_blank">华为云开天 aPaaS 平台的流使用体验</a> <span class="text-muted"></span> <div>Python中的class体内定义方法时,如果没有显式地包含self参数,有时候依然可以被调用。这是一个非常有趣的话题,因为它涉及到对Python中类与对象之间关系的更深理解。要理解为什么这种情况下方法依然能够被调用,我们需要逐步拆解Python类的构造方式以及方法绑定的原理。</div> </li> <li><a href="/article/1881200838022590464.htm" title="移动端、微信小程序兼容性问题汇总(持续更新……" target="_blank">移动端、微信小程序兼容性问题汇总(持续更新……</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">前端小程序</a> <div>safari浏览器字体不能自动随网页缩放调整大小-webkit-text-size-adjust:100%点击有灰色透明背景-webkit-tap-highlight-color:rgba(0,0,0,0);3.微信、QQ内置浏览器视频自动全屏非腾讯域名的视频地址都会4.iphoneX默认网页显示在安全区域内,不全屏5.flex布局不兼容,加上前缀也不行(常见于华为或旧版iOS)display:-</div> </li> <li><a href="/article/1881200708334710784.htm" title="海康/大华/宇视等网络摄像头云台控制功能探测方法解析" target="_blank">海康/大华/宇视等网络摄像头云台控制功能探测方法解析</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E6%91%84%E5%83%8F%E5%A4%B4%E5%BC%80%E5%8F%91rtsp%E6%B5%81%E5%AA%92%E4%BD%93/1.htm">摄像头开发rtsp流媒体</a> <div>熟悉我们的小伙伴都知道,当我们的RTSP/Onvif流媒体服务器与摄像头可以进行网络连接时,通过RTSP/Onvif流媒体服务器自带的Onvif探测即可实现Onvif摄像头的设备IP探测,成功后返回需要的流地址,实现摄像头的PTZ云台控制,PTZ控制包含转动、变焦等。但是我们经常会遇到有用户反馈,第一、不知道自己的摄像头是否支持Onvif协议;第二、自己探测显示支持Onvif协议,但是通过Onvi</div> </li> <li><a href="/article/1881200363466452992.htm" title="STM32 FreeRTOS 事件标志组" target="_blank">STM32 FreeRTOS 事件标志组</a> <span class="text-muted">雁过留声花欲落</span> <a class="tag" taget="_blank" href="/search/STM32/1.htm">STM32</a><a class="tag" taget="_blank" href="/search/FreeRTOS/1.htm">FreeRTOS</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><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a> <div>目录事件标志组简介基本概念1、事件位(事件标志)2、事件组事件组和事件位数据类型事件标志组和信号量的区别事件标志组相关API函数介绍事件标志组简介基本概念当在嵌入式系统中运行多个任务时,这些任务可能需要相互通信,协调其操作。FreeRTOS中的事件标志组(EventFlagsGroup)提供了一种轻量级的机制,用于在任务之间传递信息和同步操作。事件标志组就像是一个共享的标志牌集合,每个标志位都代表</div> </li> <li><a href="/article/1881200203608944640.htm" title="不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧" target="_blank">不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧</a> <span class="text-muted"></span> <div>在SAP项目实施中,Brownfield场景是一种迁移策略,尤其用于从SAPERP系统升级到SAPS/4HANA的过程中。Brownfield方法可以理解为“系统转换”模式,它是指在现有系统基础上进行优化和转换,而不是从头开始构建一个全新系统。这种策略可以让企业保留现有的业务流程和系统配置,最大程度地降低业务中断风险,同时利用S/4HANA提供的新功能来实现企业数字化转型。</div> </li> <li><a href="/article/1881200111636246528.htm" title="松散比较(PHP)(小迪网络安全笔记~" target="_blank">松散比较(PHP)(小迪网络安全笔记~</a> <span class="text-muted">1999er</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">网络安全学习笔记</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</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%AC%94%E8%AE%B0/1.htm">笔记</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%AE%89%E5%85%A8/1.htm">安全</a> <div>免责声明:本文章仅用于交流学习,因文章内容而产生的任何违法&未授权行为,与文章作者无关!!!附:完整笔记目录~ps:本人小白,笔记均在个人理解基础上整理,若有错误欢迎指正!1.3松散比较(PHP)引子:本章主要介绍一些由PHP自身语言特性可能产生的脆弱性,该内容往往被应用于PHPCTF入门题中,但在PHPWeb开发时也可能被使用。====是php中的比较运算符,用于判断==左右两边的值是否相等。若</div> </li> <li><a href="/article/1881199481437876224.htm" title="深入理解 Java 并发编程中的锁机制" target="_blank">深入理解 Java 并发编程中的锁机制</a> <span class="text-muted">向着开发进攻</span> <a class="tag" taget="_blank" href="/search/java%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/1.htm">java并发编程</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>深入理解Java并发编程中的锁机制在Java并发编程中,锁是一个至关重要的概念,它用于确保多个线程在访问共享资源时能够遵循正确的顺序和互斥规则。锁机制的设计和使用直接影响到程序的效率、正确性和可维护性。本文将从锁的基本概念讲起,深入分析Java中的锁类型、实现方式以及如何避免常见的并发问题。1.什么是锁?锁是一种同步机制,它用于限制对共享资源的访问,确保在同一时刻只有一个线程能够访问资源。锁的目的</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>