<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>大数据 on 庞玉栋个人博客</title><link>https://pangyd.com/tags/%E5%A4%A7%E6%95%B0%E6%8D%AE/</link><description>Recent content in 大数据 on 庞玉栋个人博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 17 Sep 2026 07:29:57 +0800</lastBuildDate><atom:link href="https://pangyd.com/tags/%E5%A4%A7%E6%95%B0%E6%8D%AE/index.xml" rel="self" type="application/rss+xml"/><item><title>Sample Count Is Not Enough: Candidate-Generation Strategy Shapes the Energy and Performance of LLM Test-Time Scaling</title><link>https://pangyd.com/post/radar-270/</link><pubDate>Thu, 17 Sep 2026 07:29:57 +0800</pubDate><guid>https://pangyd.com/post/radar-270/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>原文&lt;/strong>：&lt;a href="https://arxiv.org/abs/2609.19499v1">Sample Count Is Not Enough: Candidate-Generation Strategy Shapes the Energy and Performance of LLM Test-Time Scaling&lt;/a>&lt;/p>
&lt;p>&lt;strong>作者&lt;/strong>：Mobina Kashaniyan, Ali Jannesari&lt;/p>
&lt;p>&lt;strong>来源&lt;/strong>：arXiv cs.DC（分布式并行）&lt;/p>
&lt;/blockquote>
&lt;h2 id="正文">正文&lt;/h2>
&lt;p>Computer Science &amp;gt; Machine Learning&lt;/p>
&lt;p>arXiv:2609.19499v1 (cs)&lt;/p>
&lt;p>[Submitted on 16 Sep 2026]&lt;/p>
&lt;p>Title:Sample Count Is Not Enough: Candidate-Generation Strategy Shapes the Energy and Performance of LLM Test-Time Scaling&lt;/p>
&lt;p>Authors:Mobina Kashaniyan, Ali Jannesari&lt;/p>
&lt;p>View a PDF of the paper titled Sample Count Is Not Enough: Candidate-Generation Strategy Shapes the Energy and Performance of LLM Test-Time Scaling, by Mobina Kashaniyan and Ali Jannesari&lt;/p></description></item><item><title>Efficiently Linking Unstructured Data for Multi-step Reasoning</title><link>https://pangyd.com/post/radar-196/</link><pubDate>Thu, 17 Sep 2026 07:16:45 +0800</pubDate><guid>https://pangyd.com/post/radar-196/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>原文&lt;/strong>：&lt;a href="https://arxiv.org/abs/2609.19491v1">Efficiently Linking Unstructured Data for Multi-step Reasoning&lt;/a>&lt;/p>
&lt;p>&lt;strong>作者&lt;/strong>：Jiaming Liang, Haydn Jones, Jacob R. Gardner, Mark Yatskar, Zachary Ives&lt;/p>
&lt;p>&lt;strong>来源&lt;/strong>：arXiv cs.DB（数据库）&lt;/p>
&lt;/blockquote>
&lt;h2 id="正文">正文&lt;/h2>
&lt;p>Computer Science &amp;gt; Databases&lt;/p>
&lt;p>arXiv:2609.19491v1 (cs)&lt;/p>
&lt;p>[Submitted on 16 Sep 2026]&lt;/p>
&lt;p>Title:Efficiently Linking Unstructured Data for Multi-step Reasoning&lt;/p>
&lt;p>Authors:Jiaming Liang, Haydn Jones, Jacob R. Gardner, Mark Yatskar, Zachary Ives&lt;/p>
&lt;p>View a PDF of the paper titled Efficiently Linking Unstructured Data for Multi-step Reasoning, by Jiaming Liang and 4 other authors&lt;/p></description></item><item><title>The Stochastic Deputy: Structural Tenant Isolation for Tool-Using LLM Agents</title><link>https://pangyd.com/post/radar-210/</link><pubDate>Mon, 14 Sep 2026 04:40:11 +0800</pubDate><guid>https://pangyd.com/post/radar-210/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>原文&lt;/strong>：&lt;a href="https://arxiv.org/abs/2609.14780v1">The Stochastic Deputy: Structural Tenant Isolation for Tool-Using LLM Agents&lt;/a>&lt;/p>
&lt;p>&lt;strong>作者&lt;/strong>：Mirza Samad Ahmed Baig, Syeda Anshrah Gillani, Asher Ali, Muhammad Hamzah Siddiqui&lt;/p>
&lt;p>&lt;strong>来源&lt;/strong>：arXiv cs.DB（数据库）&lt;/p>
&lt;/blockquote>
&lt;h2 id="正文">正文&lt;/h2>
&lt;p>Computer Science &amp;gt; Cryptography and Security&lt;/p>
&lt;p>arXiv:2609.14780v1 (cs)&lt;/p>
&lt;p>[Submitted on 13 Sep 2026]&lt;/p>
&lt;p>Title:The Stochastic Deputy: Structural Tenant Isolation for Tool-Using LLM Agents&lt;/p>
&lt;p>Authors:Mirza Samad Ahmed Baig, Syeda Anshrah Gillani, Asher Ali, Muhammad Hamzah Siddiqui&lt;/p>
&lt;p>View a PDF of the paper titled The Stochastic Deputy: Structural Tenant Isolation for Tool-Using LLM Agents, by Mirza Samad Ahmed Baig and 3 other authors&lt;/p></description></item><item><title>Natural Language Knowledge Graph Query Execution: Leveraging Controlled Semantics in the LLM Context Window</title><link>https://pangyd.com/post/radar-211/</link><pubDate>Mon, 14 Sep 2026 00:36:40 +0800</pubDate><guid>https://pangyd.com/post/radar-211/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>原文&lt;/strong>：&lt;a href="https://arxiv.org/abs/2609.14652v1">Natural Language Knowledge Graph Query Execution: Leveraging Controlled Semantics in the LLM Context Window&lt;/a>&lt;/p>
&lt;p>&lt;strong>作者&lt;/strong>：Blake G. Fitch&lt;/p>
&lt;p>&lt;strong>来源&lt;/strong>：arXiv cs.DB（数据库）&lt;/p>
&lt;/blockquote>
&lt;h2 id="正文">正文&lt;/h2>
&lt;p>Computer Science &amp;gt; Databases&lt;/p>
&lt;p>arXiv:2609.14652v1 (cs)&lt;/p>
&lt;p>[Submitted on 13 Sep 2026]&lt;/p>
&lt;p>Title:Natural Language Knowledge Graph Query Execution: Leveraging Controlled Semantics in the LLM Context Window&lt;/p>
&lt;p>Authors:Blake G. Fitch&lt;/p>
&lt;p>View a PDF of the paper titled Natural Language Knowledge Graph Query Execution: Leveraging Controlled Semantics in the LLM Context Window, by Blake G. Fitch&lt;/p></description></item><item><title>VikingRAG: Accurate and Token-efficient Retrieval-augmented Generation over Structured Documents</title><link>https://pangyd.com/post/radar-222/</link><pubDate>Thu, 10 Sep 2026 19:25:59 +0800</pubDate><guid>https://pangyd.com/post/radar-222/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>原文&lt;/strong>：&lt;a href="https://arxiv.org/abs/2609.11390v1">VikingRAG: Accurate and Token-efficient Retrieval-augmented Generation over Structured Documents&lt;/a>&lt;/p>
&lt;p>&lt;strong>作者&lt;/strong>：Peiyuan Gao, Gaoyuan Zhang, Haojie Qin, Yahui Sun, Qianyi Zhang, Yunhao Zhang, Zeyu Wang, Wei Lu&lt;/p>
&lt;p>&lt;strong>来源&lt;/strong>：arXiv cs.DB（数据库）&lt;/p>
&lt;/blockquote>
&lt;h2 id="正文">正文&lt;/h2>
&lt;p>Computer Science &amp;gt; Information Retrieval&lt;/p>
&lt;p>arXiv:2609.11390v1 (cs)&lt;/p>
&lt;p>[Submitted on 10 Sep 2026]&lt;/p>
&lt;p>Title:VikingRAG: Accurate and Token-efficient Retrieval-augmented Generation over Structured Documents&lt;/p>
&lt;p>Authors:Peiyuan Gao, Gaoyuan Zhang, Haojie Qin, Yahui Sun, Qianyi Zhang, Yunhao Zhang, Zeyu Wang, Wei Lu&lt;/p>
&lt;p>View a PDF of the paper titled VikingRAG: Accurate and Token-efficient Retrieval-augmented Generation over Structured Documents, by Peiyuan Gao and 7 other authors&lt;/p></description></item><item><title>Collections 内建集合模块</title><link>https://pangyd.com/post/231-collections/</link><pubDate>Fri, 28 Feb 2020 17:01:13 +0800</pubDate><guid>https://pangyd.com/post/231-collections/</guid><description>&lt;p>&lt;/p>&lt;p>&lt;span lang="EN-US">Collections&amp;nbsp;&lt;/span>集合类&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;h3>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/h3>&lt;p>我们知道&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>可以表示不变集合，例如，一个点的二维坐标就可以表示成：&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">p = (&lt;/span>&lt;/code>&lt;span class="number">&lt;span lang="EN-US">1&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="number">&lt;span lang="EN-US">2&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">)&lt;/span>&lt;/code>&lt;/pre>&lt;p>但是，看到&lt;code>&lt;span lang="EN-US">(1, 2)&lt;/span>&lt;/code>，很难看出这个&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>是用来表示一个坐标的。&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p>定义一个&lt;span lang="EN-US">class&lt;/span>又小题大做了，这时，&lt;code>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/code>就派上了用场：&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;span class="keyword">&lt;span lang="EN-US">from&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US"> collections &lt;/span>&lt;/code>&lt;span class="keyword">&lt;span lang="EN-US">import&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US"> namedtuple&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">Point = namedtuple(&lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'Point'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, [&lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'x'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'y'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">])&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">p = Point(&lt;/span>&lt;/code>&lt;span class="number">&lt;span lang="EN-US">1&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="number">&lt;span lang="EN-US">2&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">)&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">p.x&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="number">&lt;span lang="EN-US">1&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">p.y&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="number">&lt;span lang="EN-US">2&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>&lt;p>&lt;code>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/code>是一个函数，它用来创建一个自定义的&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>对象，并且规定了&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>元素的个数，并可以用属性而不是索引来引用&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>的某个元素。&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p>这样一来，我们用&lt;code>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/code>可以很方便地定义一种数据类型，它具备&lt;span lang="EN-US">tuple&lt;/span>的不变性，又可以根据属性来引用，使用十分方便。&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p>可以验证创建的&lt;code>&lt;span lang="EN-US">Point&lt;/span>&lt;/code>对象是&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>的一种子类：&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">isinstance(p, Point)&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="builtin">&lt;span lang="EN-US">True&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">isinstance(p, tuple)&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="builtin">&lt;span lang="EN-US">True&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>&lt;p>类似的，如果要用坐标和半径表示一个圆，也可以用&lt;code>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/code>定义：&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;pre>&lt;span class="comment">&lt;span lang="EN-US"># namedtuple('&lt;/span>名称&lt;span lang="EN-US">', [&lt;/span>属性&lt;span lang="EN-US">list]):&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="constant">&lt;span lang="EN-US">Circle&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US"> = namedtuple(&lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'Circle'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, [&lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'x'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'y'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'r'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">])&lt;/span>&lt;/code>&lt;/pre>&lt;p>&lt;span lang="EN-US">&amp;nbsp;&lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span lang="EN-US">Deque&lt;/span>&lt;/b>&lt;span lang="EN-US">&amp;nbsp;&amp;nbsp;&lt;/span>双向队列&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p>使用&lt;code>&lt;span lang="EN-US">list&lt;/span>&lt;/code>存储数据时，按索引访问元素很快，但是插入和删除元素就很慢了，因为&lt;code>&lt;span lang="EN-US">list&lt;/span>&lt;/code>是线性存储，数据量大的时候，插入和删除效率很低。&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p>&lt;span lang="EN-US">deque&lt;/span>是为了高效实现插入和删除操作的双向列表，适合用于队列和栈：&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p>&lt;span lang="EN-US">list&lt;/span>是线性存储，数据量大的时候，效率慢&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p>&lt;code>&lt;span lang="EN-US">deque&lt;/span>&lt;/code>除了实现&lt;span lang="EN-US">list&lt;/span>的&lt;code>&lt;span lang="EN-US">append()&lt;/span>&lt;/code>和&lt;code>&lt;span lang="EN-US">pop()&lt;/span>&lt;/code>外，还支持&lt;code>&lt;span lang="EN-US">appendleft()&lt;/span>&lt;/code>和&lt;code>&lt;span lang="EN-US">popleft()&lt;/span>&lt;/code>，这样就可以非常高效地往头部添加或删除元素。&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p align="left">&lt;b>&lt;span lang="EN-US">defaultdict&lt;/span>&lt;/b>&lt;/p>&lt;p align="left">使用&lt;span lang="EN-US">dict&lt;/span>时，如果引用的&lt;span lang="EN-US">Key&lt;/span>不存在，就会抛出&lt;span lang="EN-US">KeyError&lt;/span>。如果希望&lt;span lang="EN-US">key&lt;/span>不存在时，返回一个默认值，就可以用&lt;span lang="EN-US">defaultdict&lt;/span>：&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p align="left">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; from collections import defaultdict&lt;/span>&lt;/p>&lt;p align="left">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; dd = defaultdict(lambda: 'N/A')&lt;/span>&lt;/p>&lt;p align="left">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; dd['key1'] = 'abc'&lt;/span>&lt;/p>&lt;p align="left">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; dd['key1'] # key1&lt;/span>存在&lt;span lang="EN-US">&lt;/span>&lt;/p>&lt;p align="left">&lt;span lang="EN-US">'abc'&lt;/span>&lt;/p>&lt;p align="left">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; dd['key2'] # key2&lt;/span>不存在，返回默认值&lt;span lang="EN-US">&lt;/span>&lt;/p></description></item><item><title>济宁职业技术学院庞玉栋，王永强，刘明帅同学在“大数据技术与应用”国赛中获一等奖</title><link>https://pangyd.com/post/232/</link><pubDate>Wed, 04 Dec 2019 22:25:52 +0800</pubDate><guid>https://pangyd.com/post/232/</guid><description>&lt;p>&lt;span>&lt;br>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;img src="https://pangyd.com/uploads/2020/03/3395e6d4f16c86b9.jpg" alt="图片1.jpg">&lt;br>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;img src="https://pangyd.com/uploads/2020/03/a5844cf157db4b39.jpg" alt="X[_[%360Q38$(9J{1F7FBQG.jpg">&lt;/span>&lt;span>&amp;nbsp;&lt;/span>&lt;span>2019&lt;/span>&lt;span>年（高职组）&lt;/span>&lt;span>“新华三”杯大数据技术与应用&lt;/span>&lt;span>&lt;span>国赛于&lt;/span>&lt;span>6&lt;/span>&lt;span>月&lt;/span>&lt;span>13&lt;/span>&lt;span>日在贵州轻工职业技术学院举行，全国&lt;/span>&lt;span>28&lt;/span>&lt;span>个省市&lt;/span>&lt;span>98&lt;/span>&lt;span>所职业院校队参加比赛，决出金牌&lt;/span>&lt;span>10&lt;/span>&lt;span>个。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>我院参赛选手庞玉栋、&lt;a target="_blank" href="https://lmshuai.com/?tdsourcetag=s_pctim_aiomsg">刘明帅&lt;/a>、王永强经过激烈地角逐获大赛一等奖，王秀芳、范建淑获优秀指导教师。至此，我院参赛选手在2019年国赛中全部获得一等奖。&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>比赛包括大数据平台搭建、大数据采集、大数据清洗、大数据分析、大数据可视化等技能竞赛五个环节，竞赛时间为&lt;/span>&lt;span>240&lt;/span>&lt;span>分钟。其中大数据应用基本技能竞赛环节以团队竞赛方式进行，岗位职业素养考核穿插在大数据应用基本技能竞赛环节中进行。&lt;/span>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;span>比赛中充分展现了我省学生扎实的专业基础、实践能力与创新能力，以及职业素养和团队合作精神。&lt;/span>&lt;/span>&lt;/p></description></item><item><title>爬取斗图网表情包</title><link>https://pangyd.com/post/223/</link><pubDate>Sat, 12 Oct 2019 20:59:15 +0800</pubDate><guid>https://pangyd.com/post/223/</guid><description>&lt;pre lay-lang="Python" class="layui-code" skin="notepad">#需要安装的库：requests lxml
import requests
import re
from lxml.html import etree
import os
import time
#伪装头
headers = {
 'referer': 'https://www.doutula.com/article/list/?page=3',
 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3783.0 Safari/537.36'
}
#先爬取100个页面
for s in range(1,100):
 url = 'https://www.doutula.com/article/list/?page={}'.format(s)
 try:
 res = requests.get(url,headers=headers)
 except Exception as e:
 continue
 csc = etree.HTML(res.text)
 ds = {}
 #解析出来每个页面的表情包标题和网址添加到ds字典
 for i in csc.xpath('//*[@id="home"]/div/div[2]//a'):
 if i.xpath('@href')[0][0:4]=='http':
 ds[i.xpath('div[1]/text()')[0]] = i.xpath('@href')[0]
 #循环字典，并在指定目录创建文件夹，存放表情包
 for a,b in ds.items():
 file_path = '/Users/pyd/Documents/BigData/gs2/doutu/{}'.format(a)
 if not os.path.exists(file_path):
 os.mkdir(file_path)
 else:
 continue
 try:
 cbv = requests.get(b,headers=headers,timeout=5)
 except Exception as e:
 continue
&lt;p>&lt;/p></description></item><item><title>SQLAlchemy_定义(一对一/一对多/多对多)关系</title><link>https://pangyd.com/post/222-sqlalchemy/</link><pubDate>Tue, 08 Oct 2019 10:32:05 +0800</pubDate><guid>https://pangyd.com/post/222-sqlalchemy/</guid><description>&lt;p>Basic Relationship Patterns&lt;/p>&lt;p>基本关系模式&lt;/p>&lt;p>The imports used for each of the following sections is as follows:&lt;/p>&lt;p>下列的 import 语句，应用到接下来所有的代章节中：&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>from sqlalchemy import Table, Column, Integer, ForeignKey&lt;/p>&lt;p>from sqlalchemy.orm import relationship&lt;/p>&lt;p>from sqlalchemy.ext.declarative import declarative_base&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>Base = declarative_base()&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p>One To Many&lt;/p>&lt;p>A one to many relationship places a foreign key on the child table referencing the parent.&lt;/p>&lt;p>表示一对多的关系时，在子表类中通过 foreign key (外键)引用父表类。&lt;/p>&lt;p>relationship() is then specified on the parent, as referencing a collection of items represented by the child:&lt;/p></description></item><item><title>flask-sqlalchemy 使用详解</title><link>https://pangyd.com/post/221-flask-sqlalchemy/</link><pubDate>Thu, 03 Oct 2019 19:47:58 +0800</pubDate><guid>https://pangyd.com/post/221-flask-sqlalchemy/</guid><description>&lt;h2 id="一-安装">一. 安装&lt;/h2>&lt;pre class="has" name="code">&lt;code class="hljs sql">$ pip &lt;span class="hljs-keyword">install&lt;/span> flask-sqlalchemy
&lt;/code>&lt;/pre>&lt;h2 id="二-配置">&lt;a name="t1">&lt;/a>二. 配置&lt;/h2>&lt;p>配置选项列表 :&lt;/p>&lt;div class="table-box">&lt;table class="layui-table">&lt;thead>&lt;tr>&lt;th style="text-align: left">选项&lt;/th>&lt;th style="text-align: left">说明&lt;/th>&lt;/tr>&lt;/thead>&lt;tbody>&lt;tr>&lt;td>SQLALCHEMY_DATABASE_URI&lt;/td>&lt;td>用于连接的数据库 URI 。例如:sqlite:////tmp/test.db 或 mysql://username:password@server/db&lt;/td>&lt;/tr>&lt;tr>&lt;td>SQLALCHEMY_BINDS&lt;/td>&lt;td>一个映射 binds 到连接 URI 的字典。更多 binds 的信息见 用 Binds 操作多个数据库 。&lt;/td>&lt;/tr>&lt;tr>&lt;td>SQLALCHEMY_ECHO&lt;/td>&lt;td>如果设置为 Ture ， SQLAlchemy 会记录所有 发给 stderr 的语句，这对调试有用。&lt;/td>&lt;/tr>&lt;tr>&lt;td>SQLALCHEMY_RECORD_QUERIES&lt;/td>&lt;td>可以用于显式地禁用或启用查询记录。查询记录 在调试或测试模式自动启用。更多信息见 get_debug_queries() 。&lt;/td>&lt;/tr>&lt;/tbody>&lt;/table>&lt;/div>&lt;p>SQLALCHEMY_NATIVE_UNICODE | 可以用于显式禁用原生 unicode 支持。当使用 不合适的指定无编码的数据库默认值时，这对于 一些数据库适配器是必须的（比如 Ubuntu 上某些版本的 PostgreSQL ）。|&lt;br>| SQLALCHEMY_POOL_SIZE | 数据库连接池的大小。默认是引擎默认值（通常 是 5 ） |&lt;br>| SQLALCHEMY_POOL_TIMEOUT | 设定连接池的连接超时时间。默认是 10 。 |&lt;br>| SQLALCHEMY_POOL_RECYCLE | 多少秒后自动回收连接。这对 MySQL 是必要的， 它默认移除闲置多于 8 小时的连接。注意如果 使用了 MySQL ， Flask-SQLALchemy 自动设定这个值为 2 小时。|&lt;/p></description></item><item><title>Flume配置文件详解</title><link>https://pangyd.com/post/220-flume/</link><pubDate>Wed, 24 Jul 2019 09:26:42 +0800</pubDate><guid>https://pangyd.com/post/220-flume/</guid><description>&lt;p>一、source配置&lt;/p>&lt;p>1、netcat的source：bind指定IP，port指定port&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p># Describe/configure the source&lt;/p>&lt;p>a1.sources.r1.type = netcat&lt;/p>&lt;p>a1.sources.r1.bind = localhost&lt;/p>&lt;p>a1.sources.r1.port = 44444&lt;/p>&lt;p>2、读文件exec：commd中写命令，如果用tail的话记得用大写的F&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p># Describe/configure the source&lt;/p>&lt;p>a1.sources.r1.type = exec&lt;/p>&lt;p>a1.sources.r1.command = tail -F /opt/module/hive/logs/hive.log&lt;/p>&lt;p>a1.sources.r1.shell = /bin/bash -c&lt;/p>&lt;p>3、读取文件夹source：spooldir source ，tmp记得一定要忽略&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p># Describe/configure the source&lt;/p>&lt;p>a1.sources.r1.type = spooldir&lt;/p>&lt;p># 指定文件夹&lt;/p>&lt;p>a1.sources.r1.spoolDir = /opt/module/flume/upload&lt;/p>&lt;p>#指定文件上传后的后缀&lt;/p>&lt;p>a1.sources.r1.fileSuffix = .COMPLETED&lt;/p>&lt;p>a1.sources.r1.fileHeader = true&lt;/p>&lt;p>#忽略所有以.tmp结尾的文件，不上传&lt;/p>&lt;p>a1.sources.r1.ignorePattern = ([^ ]*\.tmp)&lt;/p>&lt;p>4、最常用的source: arvo模式，bind指的是接收的主机，port不是随意的，是看sink给的端口&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;p># Describe/configure the source&lt;/p>&lt;p>a1.sources.r1.type = avro&lt;/p></description></item><item><title>Flume采集数据时在HDFS上产生大量小文件的问题</title><link>https://pangyd.com/post/219-flumehdfs/</link><pubDate>Tue, 23 Jul 2019 09:15:03 +0800</pubDate><guid>https://pangyd.com/post/219-flumehdfs/</guid><description>&lt;p>在配置flume配置文件的时候，配置了滚动时间和最大字节数，但是在写入到hdfs的时候，其实是不按滚动时间去自动滚动的。&lt;/p>&lt;p>&lt;span>设置a1.sinks.k1.hdfs.minBlockReplicas=1。因为文件会因为所在块的复制而滚动文件。&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/p>&lt;p>&lt;span>或者&lt;/span>&lt;/p>&lt;p>去掉round时间系列参数，并将rollSize和rollCount置0，表示不根据临时文件大小和event数量来滚动文件（滚动文件即指将HDFS上生成的以.tmp结尾的临时文件转换为实际存储文件）。当然，也可以调大rollSize参数（如调至100000000,表示100MB滚动文件，单位是bytes）。&lt;/p></description></item><item><title>flask传递列表等到jinja2模版的时候出现'；</title><link>https://pangyd.com/post/218-flaskjinja2/</link><pubDate>Fri, 19 Jul 2019 09:09:34 +0800</pubDate><guid>https://pangyd.com/post/218-flaskjinja2/</guid><description>&lt;pre lay-lang="JavaScript" class="layui-code" skin="notepad">{% for i in connect.d %}
 "{{i[0]}}",
{% endfor %}#

#可以使用循环读取每一条数据&lt;/pre></description></item><item><title>在Hadoop HDFS NameNode web端中下载文件会重定向到localhost:50075</title><link>https://pangyd.com/post/215-hadoop-hdfs-namenode-weblocalhost-50075/</link><pubDate>Wed, 10 Jul 2019 08:46:58 +0800</pubDate><guid>https://pangyd.com/post/215-hadoop-hdfs-namenode-weblocalhost-50075/</guid><description>&lt;p>host文件在错误的IP地址上指定，则获取并报告环回适配器的地址。因此需要检查一下几项&lt;/p>&lt;p>1.检查hosts文件，确认127.0.0.1对应的是 localhost&lt;/p>&lt;p>2.检查&lt;span>HDFS-site.xml中dfs.name.rpc-address和dfs.datanode.http.address中配置的主机名是否和/etc/hostname中的主机名对应&lt;/span>&lt;/p>&lt;p>&lt;br>&lt;/p></description></item><item><title>大数据行业就业指南</title><link>https://pangyd.com/post/200/</link><pubDate>Mon, 01 Oct 2018 09:00:25 +0800</pubDate><guid>https://pangyd.com/post/200/</guid><description>&lt;p>
&lt;/p>&lt;p align="center">&lt;b>&lt;a name="_Toc518382491">大数据行业就业指南&lt;/a>&lt;/b>&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>大数据开发工程师&lt;span lang="EN-US">/&lt;/span>大数据运维&lt;span lang="EN-US">/Hadoop&lt;/span>开发：&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>熟悉&lt;span lang="EN-US">Hadoop&lt;/span>生态圈（
&lt;span lang="EN-US">MapReduce&lt;/span>，&lt;span lang="EN-US">hdfs&lt;/span>，&lt;span lang="EN-US">Hive&lt;/span>，&lt;span lang="EN-US">Spark&lt;/span>等相关组件），&lt;span lang="EN-US">liunx&lt;/span>（&lt;span lang="EN-US">shell&lt;/span>脚本）相关技术以及对源码有深入认识，熟悉&lt;span lang="EN-US">mysql&lt;/span>数据库等，掌握&lt;span lang="EN-US">JAVA&lt;/span>语言或者&lt;span lang="EN-US">python&lt;/span>语言 （有的公司要求掌握&lt;span lang="EN-US">Scala&lt;/span>语言，流式处理框架使用经验，熟悉&lt;span lang="EN-US">Tableau&lt;/span>报表设计&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>&lt;span lang="EN-US">&amp;nbsp;&lt;/span>&lt;/p>
&lt;p>数据采集工程师&lt;span lang="EN-US">/&lt;/span>网络爬虫工程师&lt;span lang="EN-US">/&lt;/span>反爬虫工程师&lt;span lang="EN-US">:&lt;/span>&lt;/p>
&lt;p>&lt;span lang="EN-US">&lt;span>&amp;nbsp; &lt;/span>&lt;/span>熟悉&lt;span lang="EN-US">Selenium, phantomjs, scrapy&lt;/span>等自动化测试工具，以及爬虫框架，精通&lt;span lang="EN-US">Java/Objective-C/python&lt;/span>等至少一种语言，了解各种前端技术，包括&lt;span lang="EN-US">XHTML/XML/CSS/JavaScript/AJAX&lt;/span>等；熟悉正则表达式和&lt;span lang="EN-US">XPATH&lt;/span>，能够从结构化或非结构化数据中获取信息；熟悉&lt;span lang="EN-US">DDMS&lt;/span>、&lt;span lang="EN-US">Instruments&lt;/span>，&lt;span lang="EN-US">Charles&lt;/span>，&lt;span lang="EN-US">Fildder&lt;/span>等抓包工具&lt;span lang="EN-US">;&lt;/span>，熟悉网络编程，对&lt;span lang="EN-US">TCP/IP&lt;/span>有深入理解，精通&lt;span lang="EN-US">MySQL&lt;/span>或&lt;span lang="EN-US">PostgreSQL&lt;/span>；熟悉&lt;span lang="EN-US">Redis&lt;/span>或&lt;span lang="EN-US">MongoDB&lt;/span>；了解&lt;span lang="EN-US">linux&lt;/span>优先&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>大数据分析工程师&lt;span lang="EN-US">/&lt;/span>统计建模师&lt;span lang="EN-US">/&lt;/span>数据管理&lt;span lang="EN-US">/&lt;/span>数据统计&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>&lt;span lang="EN-US">&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span>&lt;/span>熟悉&lt;span lang="EN-US">R/Spark/Python&lt;/span>或&lt;span lang="EN-US">C/C++&lt;/span>等至少一个常用语言；以机器学习、深度学习、复杂网络、自然语言处理等其中一种或几种模型见长；对建模技术的前沿探索有热情，优秀的学习能力和逻辑思考能力；对风险管理、用户生命周期管理、或不同垂直领域有深入研究，对各式海量数据分析与挖掘有强烈兴趣。具备&lt;span lang="EN-US">ETL&lt;/span>数据处理能力，有经验者优先，优秀的逻辑思维能力，和数据敏感度，可从海量数据中日趋分析并反推业务逻辑，优化核心业务流程；&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>数据可视化工程师：&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>&lt;span lang="EN-US">.&lt;span>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span>&lt;/span>理解&lt;span lang="EN-US">W3C&lt;/span>标准与&lt;span lang="EN-US">ES&lt;/span>规范，熟悉&lt;span lang="EN-US">Web&lt;/span>语义化，掌握盒模型、常用布局以及浏览器兼容性；熟练掌握各项&lt;span lang="EN-US">Web&lt;/span>前端技术&lt;span lang="EN-US"> (HTML/CSS/Javascript) &lt;/span>，了解&lt;span lang="EN-US">svg&lt;/span>，&lt;span lang="EN-US">canvas&lt;/span>，&lt;span lang="EN-US">webgl&lt;/span>技术；熟练掌握&lt;span lang="EN-US">JET Charts/ECharts/HighCharts/D3.js/Three.js&lt;/span>等图形库熟练使用可视化&lt;span lang="EN-US">BI&lt;/span>工具及前端工具，具有计算机图形学理论基础，熟悉数据可视化相关基础算法；熟悉&lt;span lang="EN-US"> HTTP
&lt;/span>协议及缓存，了解基本的浏览器渲染及网络传输过程，掌握&lt;span lang="EN-US">Java/python&lt;/span>等一门语言，有前端开发经验&lt;span lang="EN-US">/&lt;/span>大规模数据存储，处理经验者优先&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>&lt;span lang="EN-US">&amp;nbsp;&lt;/span>&lt;/p>&lt;p>&lt;/p></description></item><item><title>Collections 内建集合模块</title><link>https://pangyd.com/post/199-collections/</link><pubDate>Sat, 29 Sep 2018 08:49:45 +0800</pubDate><guid>https://pangyd.com/post/199-collections/</guid><description>&lt;p>
&lt;/p>&lt;p>&lt;span lang="EN-US">Collections &lt;/span>集合类&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;h3>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/h3>
&lt;p>我们知道&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>可以表示不变集合，例如，一个点的二维坐标就可以表示成：&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">p = (&lt;/span>&lt;/code>&lt;span class="number">&lt;span lang="EN-US">1&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="number">&lt;span lang="EN-US">2&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">)&lt;/span>&lt;/code>&lt;/pre>
&lt;p>但是，看到&lt;code>&lt;span lang="EN-US">(1, 2)&lt;/span>&lt;/code>，很难看出这个&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>是用来表示一个坐标的。&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>定义一个&lt;span lang="EN-US">class&lt;/span>又小题大做了，这时，&lt;code>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/code>就派上了用场：&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;span class="keyword">&lt;span lang="EN-US">from&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US"> collections &lt;/span>&lt;/code>&lt;span class="keyword">&lt;span lang="EN-US">import&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US"> namedtuple&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">Point = namedtuple(&lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'Point'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, [&lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'x'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'y'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">])&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">p = Point(&lt;/span>&lt;/code>&lt;span class="number">&lt;span lang="EN-US">1&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="number">&lt;span lang="EN-US">2&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">)&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">p.x&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="number">&lt;span lang="EN-US">1&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">p.y&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="number">&lt;span lang="EN-US">2&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>
&lt;p>&lt;code>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/code>是一个函数，它用来创建一个自定义的&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>对象，并且规定了&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>元素的个数，并可以用属性而不是索引来引用&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>的某个元素。&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>这样一来，我们用&lt;code>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/code>可以很方便地定义一种数据类型，它具备&lt;span lang="EN-US">tuple&lt;/span>的不变性，又可以根据属性来引用，使用十分方便。&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>可以验证创建的&lt;code>&lt;span lang="EN-US">Point&lt;/span>&lt;/code>对象是&lt;code>&lt;span lang="EN-US">tuple&lt;/span>&lt;/code>的一种子类：&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">isinstance(p, Point)&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="builtin">&lt;span lang="EN-US">True&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="prompt">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; &lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">isinstance(p, tuple)&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="builtin">&lt;span lang="EN-US">True&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>
&lt;p>类似的，如果要用坐标和半径表示一个圆，也可以用&lt;code>&lt;span lang="EN-US">namedtuple&lt;/span>&lt;/code>定义：&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;pre>&lt;span class="comment">&lt;span lang="EN-US"># namedtuple('&lt;/span>名称&lt;span lang="EN-US">', [&lt;/span>属性&lt;span lang="EN-US">list]):&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">&lt;/span>&lt;/code>&lt;/pre>&lt;pre>&lt;span class="constant">&lt;span lang="EN-US">Circle&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US"> = namedtuple(&lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'Circle'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, [&lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'x'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'y'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">, &lt;/span>&lt;/code>&lt;span class="string">&lt;span lang="EN-US">'r'&lt;/span>&lt;/span>&lt;code>&lt;span lang="EN-US">])&lt;/span>&lt;/code>&lt;/pre>
&lt;p>&lt;span lang="EN-US">&amp;nbsp;&lt;/span>&lt;/p>
&lt;p>&lt;b>&lt;span lang="EN-US">Deque&lt;/span>&lt;/b>&lt;span lang="EN-US">&lt;span>&amp;nbsp; &lt;/span>&lt;/span>双向队列&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>使用&lt;code>&lt;span lang="EN-US">list&lt;/span>&lt;/code>存储数据时，按索引访问元素很快，但是插入和删除元素就很慢了，因为&lt;code>&lt;span lang="EN-US">list&lt;/span>&lt;/code>是线性存储，数据量大的时候，插入和删除效率很低。&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>&lt;span lang="EN-US">deque&lt;/span>是为了高效实现插入和删除操作的双向列表，适合用于队列和栈：&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>&lt;span lang="EN-US">list&lt;/span>是线性存储，数据量大的时候，效率慢&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p>&lt;code>&lt;span lang="EN-US">deque&lt;/span>&lt;/code>除了实现&lt;span lang="EN-US">list&lt;/span>的&lt;code>&lt;span lang="EN-US">append()&lt;/span>&lt;/code>和&lt;code>&lt;span lang="EN-US">pop()&lt;/span>&lt;/code>外，还支持&lt;code>&lt;span lang="EN-US">appendleft()&lt;/span>&lt;/code>和&lt;code>&lt;span lang="EN-US">popleft()&lt;/span>&lt;/code>，这样就可以非常高效地往头部添加或删除元素。&lt;span lang="EN-US">&lt;/span>&lt;/p>
&lt;p style="text-align: left" align="left">&lt;b>&lt;span lang="EN-US">defaultdict&lt;/span>&lt;/b>&lt;/p>
&lt;p style="text-align: left" align="left">&lt;span>使用&lt;span lang="EN-US">dict&lt;/span>时，如果引用的&lt;span lang="EN-US">Key&lt;/span>不存在，就会抛出&lt;span lang="EN-US">KeyError&lt;/span>。如果希望&lt;span lang="EN-US">key&lt;/span>不存在时，返回一个默认值，就可以用&lt;span lang="EN-US">defaultdict&lt;/span>：&lt;span lang="EN-US">&lt;/span>&lt;/span>&lt;/p>
&lt;p style="text-align: left" align="left">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; from collections import defaultdict&lt;/span>&lt;/p>
&lt;p style="text-align: left" align="left">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; dd = defaultdict(lambda: 'N/A')&lt;/span>&lt;/p>
&lt;p style="text-align: left" align="left">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; dd['key1'] = 'abc'&lt;/span>&lt;/p>
&lt;p style="text-align: left" align="left">&lt;span lang="EN-US">&amp;gt;&amp;gt;&amp;gt; dd['key1'] # key1&lt;/span>&lt;span>存在&lt;span lang="EN-US">&lt;/span>&lt;/span>&lt;/p></description></item><item><title>Java在各个操作系统中的安装方式</title><link>https://pangyd.com/post/150-java/</link><pubDate>Mon, 30 Oct 2017 17:43:48 +0800</pubDate><guid>https://pangyd.com/post/150-java/</guid><description>&lt;p>&lt;br>&lt;/p>&lt;div class="content rich" data-reactid=".1colohowohs.1.0.0.0.1.1.1">&lt;p>&lt;span>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" img_width="640" img_height="360" alt="java逆天攻略：快速进入大数据开发核心技术" inline="0">&lt;/span>&lt;/p>&lt;p>&lt;span>前言&lt;/span>&lt;/p>&lt;p>&lt;span>Java安装应该是件非常简单的事情，不知何时在Oracle官方下载JDK时，竟然强制要求用户登陆。这样就不能通过Linux命令wget下载了，真是有点让人火大。&lt;/span>&lt;/p>&lt;p>&lt;span>想了个办法破解这种恶心的cookies验证行为！&lt;/span>&lt;/p>&lt;blockquote>&lt;p>&lt;span>对大数据感兴趣的朋友可以加群大数据视频学习交流群 675590728&lt;/span>&lt;/p>&lt;/blockquote>&lt;p>&lt;span>目录&lt;/span>&lt;/p>&lt;ul class=" list-paddingleft-2">&lt;li>&lt;p>&lt;span>Java在Windows中安装&lt;/span>&lt;/p>&lt;/li>&lt;li>&lt;p>&lt;span>Java在Linux Ubuntu中安装&lt;/span>&lt;/p>&lt;/li>&lt;/ul>&lt;p>&lt;span>1 Java在Windows中安装&lt;/span>&lt;/p>&lt;p>&lt;span>Java环境安装，是指Java开发环境的安装，包括JDK安装和Java的环境配置。在Windows中，很多的Java应用通过JRE就可以运行。但对Java的开发者来说，我们需要安装JDK，必须Oracle SUN官方发布的JDK。&lt;/span>&lt;/p>&lt;blockquote>&lt;p>&lt;span>在Windows系统上安装JDK是件非常简单的事情，对大数据感兴趣的朋友可以加群大数据视频学习交流群 675590728&lt;/span>&lt;/p>&lt;/blockquote>&lt;p>&lt;span>大家可以下载最新版本的Java SE 8，或者较早的JDK版本。本文中使用的是1.6.0_45版本的JDK。&lt;/span>&lt;/p>&lt;p>&lt;span>下载后，双击安装。我安装在目录: D:	oolkitjavajdk6&lt;/span>&lt;/p>&lt;p>&lt;span>安装好JDK后，配置环境变量：&lt;/span>&lt;/p>&lt;p>&lt;span>选择：控制面板 –&amp;gt; 系统和安全 –&amp;gt; 系统属性 –&amp;gt; 高级 –&amp;gt; 环境变量&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" img_width="821" img_height="720" alt="java逆天攻略：快速进入大数据开发核心技术" inline="0">&lt;/span>&lt;/p>&lt;pre>#&amp;nbsp;新建JAVA_HOME变量JAVA_HOME=D:	oolkitjavajdk6#&amp;nbsp;新建PATH变量PATH=D:&amp;nbsp;oolkitjavajdk6in&lt;/pre>&lt;p>&lt;span>注：如果PATH变量已存在，则在最后增加JDK的路径，用分号(;)与上个配置做分隔。&lt;/span>&lt;/p>&lt;p>&lt;span>保存后，打开CMD命令窗口，测试Java的命令行操作。&lt;/span>&lt;/p>&lt;pre>#&amp;nbsp;查看Java安装版本~&amp;nbsp;C:UsersAdministrator&amp;gt;java&amp;nbsp;-versionjava&amp;nbsp;version&amp;nbsp;"1.6.0_45"Java(TM)&amp;nbsp;SE&amp;nbsp;Runtime&amp;nbsp;Environment&amp;nbsp;(build&amp;nbsp;1.6.0_45-b06)Java&amp;nbsp;HotSpot(TM)&amp;nbsp;64-Bit&amp;nbsp;Server&amp;nbsp;VM&amp;nbsp;(build&amp;nbsp;20.45-b01,&amp;nbsp;mixed&amp;nbsp;mode)#&amp;nbsp;测试Java命令~&amp;nbsp;C:UsersAdministrator&amp;gt;javaUsage:&amp;nbsp;java&amp;nbsp;[-options]&amp;nbsp;class&amp;nbsp;[args...]&amp;nbsp;(to&amp;nbsp;execute&amp;nbsp;a&amp;nbsp;class)&amp;nbsp;or&amp;nbsp;java&amp;nbsp;[-options]&amp;nbsp;-jar&amp;nbsp;jarfile&amp;nbsp;[args...]&amp;nbsp;(to&amp;nbsp;execute&amp;nbsp;a&amp;nbsp;jar&amp;nbsp;file)where&amp;nbsp;options&amp;nbsp;include:&amp;nbsp;-server&amp;nbsp;to&amp;nbsp;select&amp;nbsp;the&amp;nbsp;"server"&amp;nbsp;VM&amp;nbsp;-hotspot&amp;nbsp;is&amp;nbsp;a&amp;nbsp;synonym&amp;nbsp;for&amp;nbsp;the&amp;nbsp;"server"&amp;nbsp;VM&amp;nbsp;[deprecated]&amp;nbsp;The&amp;nbsp;default&amp;nbsp;VM&amp;nbsp;is&amp;nbsp;server.&amp;nbsp;-cp-classpathA&amp;nbsp;;&amp;nbsp;separated&amp;nbsp;list&amp;nbsp;of&amp;nbsp;directories,&amp;nbsp;JAR&amp;nbsp;archives,&amp;nbsp;and&amp;nbsp;ZIP&amp;nbsp;archives&amp;nbsp;to&amp;nbsp;search&amp;nbsp;for&amp;nbsp;class&amp;nbsp;files.&amp;nbsp;-D=set&amp;nbsp;a&amp;nbsp;system&amp;nbsp;property&amp;nbsp;-verbose[:class|gc|jni]&amp;nbsp;enable&amp;nbsp;verbose&amp;nbsp;output&amp;nbsp;-version&amp;nbsp;print&amp;nbsp;product&amp;nbsp;version&amp;nbsp;and&amp;nbsp;exit&amp;nbsp;-version:require&amp;nbsp;the&amp;nbsp;specified&amp;nbsp;version&amp;nbsp;to&amp;nbsp;run&amp;nbsp;-showversion&amp;nbsp;print&amp;nbsp;product&amp;nbsp;version&amp;nbsp;and&amp;nbsp;continue&amp;nbsp;-jre-restrict-search&amp;nbsp;|&amp;nbsp;-jre-no-restrict-search&amp;nbsp;include/exclude&amp;nbsp;user&amp;nbsp;private&amp;nbsp;JREs&amp;nbsp;in&amp;nbsp;the&amp;nbsp;version&amp;nbsp;search&amp;nbsp;-?&amp;nbsp;-help&amp;nbsp;print&amp;nbsp;this&amp;nbsp;help&amp;nbsp;message&amp;nbsp;-X&amp;nbsp;print&amp;nbsp;help&amp;nbsp;on&amp;nbsp;non-standard&amp;nbsp;options&amp;nbsp;-ea[:...|:]&amp;nbsp;-enableassertions[:...|:]&amp;nbsp;enable&amp;nbsp;assertions&amp;nbsp;-da[:...|:]&amp;nbsp;-disableassertions[:...|:]&amp;nbsp;disable&amp;nbsp;assertions&amp;nbsp;-esa&amp;nbsp;|&amp;nbsp;-enablesystemassertions&amp;nbsp;enable&amp;nbsp;system&amp;nbsp;assertions&amp;nbsp;-dsa&amp;nbsp;|&amp;nbsp;-disablesystemassertions&amp;nbsp;disable&amp;nbsp;system&amp;nbsp;assertions&amp;nbsp;-agentlib:[=]&amp;nbsp;load&amp;nbsp;native&amp;nbsp;agent&amp;nbsp;library,&amp;nbsp;e.g.&amp;nbsp;-agentlib:hprof&amp;nbsp;see&amp;nbsp;also,&amp;nbsp;-agentlib:jdwp=help&amp;nbsp;and&amp;nbsp;-agentlib:hprof=help&amp;nbsp;-agentpath:[=]&amp;nbsp;load&amp;nbsp;native&amp;nbsp;agent&amp;nbsp;library&amp;nbsp;by&amp;nbsp;full&amp;nbsp;pathname&amp;nbsp;-javaagent:[=]&amp;nbsp;load&amp;nbsp;Java&amp;nbsp;programming&amp;nbsp;language&amp;nbsp;agent,&amp;nbsp;see&amp;nbsp;java.lang.instrument&amp;nbsp;-splash:show&amp;nbsp;splash&amp;nbsp;screen&amp;nbsp;with&amp;nbsp;specified&amp;nbsp;image#&amp;nbsp;测试Javac命令~&amp;nbsp;C:UsersAdministrator&amp;gt;javac用法：javac&amp;nbsp;&amp;lt;选项&amp;gt;&amp;nbsp;&amp;lt;源文件&amp;gt;其中，可能的选项包括：&amp;nbsp;-g&amp;nbsp;生成所有调试信息&amp;nbsp;-g:none&amp;nbsp;不生成任何调试信息&amp;nbsp;-g:{lines,vars,source}&amp;nbsp;只生成某些调试信息&amp;nbsp;-nowarn&amp;nbsp;不生成任何警告&amp;nbsp;-verbose&amp;nbsp;输出有关编译器正在执行的操作的消息&amp;nbsp;-deprecation&amp;nbsp;输出使用已过时的&amp;nbsp;API&amp;nbsp;的源位置&amp;nbsp;-classpath&amp;nbsp;&amp;lt;路径&amp;gt;&amp;nbsp;指定查找用户类文件和注释处理程序的位置&amp;nbsp;-cp&amp;nbsp;&amp;lt;路径&amp;gt;&amp;nbsp;指定查找用户类文件和注释处理程序的位置&amp;nbsp;-sourcepath&amp;nbsp;&amp;lt;路径&amp;gt;&amp;nbsp;指定查找输入源文件的位置&amp;nbsp;-bootclasspath&amp;nbsp;&amp;lt;路径&amp;gt;&amp;nbsp;覆盖引导类文件的位置&amp;nbsp;-extdirs&amp;nbsp;&amp;lt;目录&amp;gt;&amp;nbsp;覆盖安装的扩展目录的位置&amp;nbsp;-endorseddirs&amp;nbsp;&amp;lt;目录&amp;gt;&amp;nbsp;覆盖签名的标准路径的位置&amp;nbsp;-proc:{none,only}&amp;nbsp;控制是否执行注释处理和/或编译。&amp;nbsp;-processor[,,...]要运行的注释处理程序的名称；绕过默认的搜索进程&amp;nbsp;-processorpath&amp;nbsp;&amp;lt;路径&amp;gt;&amp;nbsp;指定查找注释处理程序的位置&amp;nbsp;-d&amp;nbsp;&amp;lt;目录&amp;gt;&amp;nbsp;指定存放生成的类文件的位置&amp;nbsp;-s&amp;nbsp;&amp;lt;目录&amp;gt;&amp;nbsp;指定存放生成的源文件的位置&amp;nbsp;-implicit:{none,class}&amp;nbsp;指定是否为隐式引用文件生成类文件&amp;nbsp;-encoding&amp;nbsp;&amp;lt;编码&amp;gt;&amp;nbsp;指定源文件使用的字符编码&amp;nbsp;-source&amp;nbsp;&amp;lt;版本&amp;gt;&amp;nbsp;提供与指定版本的源兼容性&amp;nbsp;-target&amp;nbsp;&amp;lt;版本&amp;gt;&amp;nbsp;生成特定&amp;nbsp;VM&amp;nbsp;版本的类文件&amp;nbsp;-version&amp;nbsp;版本信息&amp;nbsp;-help&amp;nbsp;输出标准选项的提要&amp;nbsp;-Akey[=value]&amp;nbsp;传递给注释处理程序的选项&amp;nbsp;-X&amp;nbsp;输出非标准选项的提要&amp;nbsp;-J&amp;lt;标志&amp;gt;&amp;nbsp;直接将&amp;nbsp;&amp;lt;标志&amp;gt;&amp;nbsp;传递给运行时系统&lt;/pre>&lt;p>&lt;span>这样我们就在Windows的系统中，配置好了Java环境。&lt;/span>&lt;/p>&lt;p>&lt;span>2 Java在Linux Ubuntu中安装&lt;/span>&lt;/p>&lt;p>&lt;span>Java安装，指定的是SUN Oracle官方的JDK软件包，而不是Linux Ubuntu系统中通过apt-get安装的OpenJDK。&lt;/span>&lt;/p>&lt;p>&lt;span>注：请一定注意版本，必须使用SUN Oracle官方的JDK软件包&lt;/span>&lt;/p>&lt;p>&lt;span>在Linux Ubuntu中，下载并安装JDK，这里我选择安装Java SE 1.6.45的64位版本的JDK。&lt;/span>&lt;/p>&lt;p>&lt;span>2.1 下载JDK&lt;/span>&lt;/p>&lt;p>&lt;span>不知道Oracle官方网站时候调整的JDK下载需要先登陆，因此直接使用wget命令，无法完成JDK的下载。&lt;/span>&lt;/p>&lt;p>&lt;span>我们有下面2种解决方法：&lt;/span>&lt;/p>&lt;ul class=" list-paddingleft-2">&lt;li>&lt;p>&lt;span>1). 从浏览器中登陆下载，然后再传到Linux的服务器&lt;/span>&lt;/p></description></item><item><title>怎么开始使用Java机器学习？</title><link>https://pangyd.com/post/83-java/</link><pubDate>Wed, 30 Aug 2017 20:36:01 +0800</pubDate><guid>https://pangyd.com/post/83-java/</guid><description>&lt;p>本文咱们会做一个&lt;a target="_blank" href="https://pangyd.com/">java&lt;/a>的机械进修的重要框架的疾速概述，并证实Java机械进修是何等轻易上手，不必要你重新努力别辟门户或许从头开端创立算法。&lt;div>&lt;br>&lt;/div>&lt;div>￼&lt;/div>&lt;div>开端Java机械进修的最佳工具是甚么?&lt;/div>&lt;div>这个成绩曾经有一段时间了，但近来这些日子险些每个人都在评论辩论人工智能和机械进修。这曾经再也不是一个保留给科学家和研究者的机密，而是险些完成于每一项新兴技巧中。&lt;/div>&lt;div>鄙人面的章节中，咱们会做一个java的机械进修的重要框架的疾速概述，并证实Java机械进修是何等轻易上手，不必要你重新努力别辟门户或许从头开端创立算法。&lt;/div>&lt;div>人类的人工智能&lt;/div>&lt;div>人工智能在一段时间以来是一个普遍而且炫酷的范畴，但老是感到有点难以涉及，是特别为科学家所做。假如你想发明一个人工智能体系，你必需完成你自己的焦点算法，而且练习它们能辨认形式，懂得图象而且处置自然说话。&lt;/div>&lt;div>近来对付这范畴的蜕变使得其对付非研究者能更轻易涉及。你如今能轻易涉及到相干算法和工具。你不必要晓得你正在做甚么，然则能很轻松的晋升你应用的机械进修才能。&lt;/div>&lt;div>让机械运行&lt;/div>&lt;div>为了更简单的论述，咱们决议选出3个名目赞助你开端：&lt;/div>&lt;div>1.Deeplearning4J (DL4J) –开源，分布式，JVM的贸易深度进修lib库&lt;/div>&lt;div>2. BID Data Project –可以或许运行疾速、大规模的机械进修和数据挖掘的形式聚集&lt;/div>&lt;div>3. Neuroph –面向工具的神经收集&lt;/div>&lt;div>趁便说一下, 咱们近来宣布了别的一些吸引咱们留意的风趣的开源&lt;a target="_self" href="https://github.com/As-before">GitHub&lt;/a>库. 下载.&lt;/div>&lt;div>DL4J – 深度进修&lt;/div>&lt;div>DL4J是一个能赞助你设置装备摆设多层神经收集的工具。它为JVM供给了深度进修且随同疾速原型计划和大规模定制，同时重视比设置装备摆设更多的商定。&lt;/div>&lt;div>这个工具是为了赞助曾经领有创立和应用神经收集的实践，但不想亲身完成算法的那些人。你可以或许在海量数据上办理特定成绩和自定义神经收集属性。&lt;/div>&lt;div>DL4J 是由Java说话编写的，可以或许兼容任何JVM说话好比 Clojure, Scala, ,Kotlin，而且可以或许与Hadoop和Spark集成。&lt;/div>&lt;div>能够的应用案例包括评估或保举体系如(CRM，adtech， churn prevention)，猜测阐发乃至讹诈检测。假如你要探求实在的案例，你可以或许下载 Rapidminer. 这是应用DL4J的开源平台，用来为用户简化猜测阐发进程。&lt;/div>&lt;div>创立一个新的神经收集犹如创立一个新名目同样轻易。&lt;/div>&lt;div>BID Data Project (大数据名目)&lt;/div>&lt;div>大数据名目是由那些必要处置大批数据而且对机能敏感的人创立的。 UC Berkeley名目是由很多硬件、软件和计划形式聚集而成，能在上应用疾速、大规模的数据挖掘。&lt;/div>&lt;div>第一个库是 BIDMach，在单节点或集群上的惯例机械进修成绩都有记载。你可以或许应用这个库治理数据源，在CPU或许GPU上优化、分派数据。&lt;/div>&lt;div>BidMach 外面包括很多流行的机械进修算法，他们团队正致力于开辟分布式神经收集、图形算法和其余模子&lt;/div>&lt;div>其余两个库分别是BIDMat和 BIDParse。BIDMat是存眷与数据挖掘的疾速数学矩阵库，BIDParse是GPU加快的自然说话剖析。大数据名目标其余类库还包括可视化工具，可以或许支撑在Spark乃至在安卓运行的类库。&lt;/div>&lt;div>BIDMach基准比其余办理计划持续表现出更好的成果。乃至将其在繁多机械上的运行与其余计划在大集群上的运行比拟也是如斯。在这里可以或许找到一个完备的基准列表。&lt;/div>&lt;div>Neuroph&lt;/div>&lt;div>neuroph是用来开辟常用的神经收集构架的轻量级java框架。该框架供给了一个java库和一个GUI工具(称为easyNeurons)，你可以或许用它来在java名目中创立和练习自己的神经收集。&lt;/div>&lt;div>Neuroph包括一个开源的java类库和大批对应根本神经收集观点的基类。对付刚开端应用神经收集，或许想晓得它们若何事情的人来讲，Neuroph是个异常好的垫脚石。&lt;/div>&lt;div>你可以或许测验考试Neuroph的在线演示，看看它是怎样运行的。提醒：界面看起来很旧且过期，但你可以或许用它来创立美好的器械。它还得过2013的 Duke’s Choice的奖项。&lt;/div>&lt;div>￼&lt;/div>&lt;div>收集视图&lt;/div>&lt;div>其余名目若何呢?&lt;/div>&lt;div>万一以上三个名目不是你所必要的，你想为你的名目探求一些分歧的，也不要紧。假如你在&lt;a target="_self" href="https://github.com/As-before">GitHub&lt;/a>上搜刮“机械进修”，将有1506个Java资本让你找到适合的工具。&lt;/div>&lt;div>举个例子， Airbnb中有个风趣的名目是aerosolve,一个计划成具备人类友爱性的机械进修库。&lt;/div>&lt;div>开端进修一项新的技巧很费事，假如您希冀获得一些赞助，确保你曾经下载了Takipi的差错阐发工具。&lt;/div>&lt;div>最后的思虑&lt;/div>&lt;div>每隔几年就会有些对付人工智能的新声响。这一次，它伴跟着机械进修，数据挖掘，神经收集等等的强化来了，咱们都很支撑。这些类库开源的现实意味着这些信息和才能正奇货可居，而你一切所做的是思虑领有这个才能可以或许做成甚么。&lt;/div>&lt;div>假如你晓得其余风趣的名目或许你觉得咱们遗漏点甚么，咱们等待鄙人面的批评里见到它们。&lt;/div>&lt;div>￼&lt;/div>&lt;/p></description></item></channel></rss>