<译>创建一个Hexo主题-Part3 :评论、分析和小部件

  • 原文地址:Create an Hexo Theme - Part 3: Comments, Analytics and Widgets
  • 原文作者:Jonathan Klughertz

在这个系列教程中,你将学习怎么从零开始制作一个 Hexo 主题。
在 part1 和 part2 中,我们已经创建了博客的所有页面。在这篇文章中,我们将给博客添加 Disqus 评论系统,实现 谷歌分析以及完成侧边栏的小部件。

其它文章的链接:

  • 创建一个Hexo主题-Part1:首页
  • 创建一个Hexo主题-Part2:其他页面
  • 创建一个Hexo主题-Part3:评论、分析和小部件

Disqus 评论系统

我已经写了一篇关于如何在 Hexo 中使用 Disqus 评论系统的文章。请前往查看以了解更多信息,这里我只简单介绍一下怎么使用:

第一步是获取 Disqus UID 来测试评论功能,可以利用你的账号在这里获取:
<译>创建一个Hexo主题-Part3 :评论、分析和小部件_第1张图片
接下来需要完成三个部分:主题文件的 disqus 配置、评论占位区、Disqus 脚本。事不宜迟,我们开始吧。

主题配置

我们希望 Disqus UID 是可以配置的,因此给主题的 config.yml 文件添加一个条目:

# Disqus Comments Shortname
disqus_shortname: klugjoTest

评论占位区

接下来我们给页面和文章详情页添加评论系统。和之前一样,创建一个局部视图文件 layout/_partial/comments.ejs,之后打开 layout/_partial/article-full.ejs 文件,把它插入到末尾。

/* layout/_partial/comments.ejs */
[...] <%- partial('comments') %>

Disqus 需要 ID 为 disqus_thread 的 div 元素,因此我们这里复制官方文档提供的代码:

将上面的代码合并到 comments 文件中:

/* layout/_partial/comments.ejs */
<% if(page.comments && theme.disqus_shortname){ %>
    

Comments:

<% } %>

首先我们检查是否开启了评论功能和设置了 disqus UID,之后将 Disqus 标记代码放到容器里。
以下是容器的 CSS 样式代码:

/* source/css/blog.css */
.blog-post-comments {
    margin-top: 50px;
}

Disqus 脚本

在测试之前,我们还需要添加 Disqus 的脚本,这是一切生效的关键。将它和其他脚本一起放在 layout/_partial/after-footer.ejs 的末尾

/* layout/_partial/after-footer.ejs */

<% if (theme.disqus_shortname){ %>
    
<% } %>

脚本来自于官方文档,并且我们在这里将 Disqus UID 参数化。
接着就可以测试一切是否正常工作了。

谷歌分析

谷歌分析的实现和 Disqus 差不多,所以这里我只简单提一下。具体步骤可以看我的另一篇博客。

在主题配置文件中设置 tracking ID

从你的账号中获取谷歌分析的 tracking ID,之后再配置文件中新增条目。

# Google Analytics Tracking ID
google_analytics: UA-83746351-2

创建一个新的局部文件

创建一个新的局部视图文件 layout/_partial/google-analytic.ejs

/* layout/_partial/google-analytic.ejs */
<% if (theme.google_analytics){ %>
    
<% } %>

这是从谷歌分析跟踪代码复制粘贴过来的,其中包括一个参数化的 ID。

合并到局部文件中

我们希望可以在任何页面中获取到跟踪代码,而页面上又没有合适的位置来存放,因此我们选择把它添加到 的末尾:

/* layout/_partial/head.ejs */

    
    
    
    [...]
    
    <%- partial('google-analytics') %>

大功告成!

小部件

此时,sidebar.ejs 文件中的小部件还只是一堆采用硬编码的静态 HTML。我们来修复这个问题。

配置

先从配置开始吧。
我们准备创建两个小部件,一个是“关于”,一个是“标签”。相关配置如果以 JavaScript 对象的形式来书写,大概是下面这样:

{
    widgets: {
        about: "Here goes the about text",
        tags: true // Or any additional configuration the widget needs
    }
}

这是它在我们的主题配置文件中转换成 YML 的形式:

# Widgets List
widgets:
  about: This blog is based off the official bootstrap blog template. Checkout the corresponding tutorial at http://www.codeblocq.com

侧边栏代码

作为所有小部件的占位区,我们的侧边栏需要遍历配置文件中的所有小部件并将其渲染出来:
侧边栏的 EJS 模板如下:

/* layout/_partial/sidebar.ejs */
<% for(var widget in theme.widgets){ %>
    <%- partial('widget/' + widget) %>
<% }; %>

第一个小部件:“关于”

新建一个局部文件 layout/_partial/widget/about.ejs,之后在里面创建第一个小部件。
代码是从原先的 bootstrap 模板中复制过来的,文本则来自于配置文件。

/* layout/_partial/widget/about.ejs */
<% if(theme.widgets.about){ %>
    
<% } %>

第二个小部件:“标签”

我们给这个部件做一些略微高级的改动。设置一个段落用于存放博客中用过的所有标签。它们互相之间用空格隔开,并且字体大小与标签使用次数成比例。
这是 layout/_partial/widget/tags.ejs 的代码:

/* layout/_partial/widget/tags.ejs */
<% if (theme.widgets.tags && site.tags.length){ %>
    
<% } %>
  • site.tags 让我们可以获取所有标签
  • site.tags.sort('name) 按照字母表的顺序对所有标签进行排序
  • item.path 对应标签归档页的相对 URL
  • item.posts.length 表示标签的使用次数
  • item.name 是标签的名字

我这里选择 13+(标签使用次数 *2)px 作为字体大小的计算方式,并且最大不超过 30px。当然,你可以根据自己的喜好来。

最后

教程到这里就结束了,我希望你从中可以学到不少有趣的东西。
如果你想进一步打磨主题,可以考虑下面这些事情:

  • 通过参数化 </code> 和所有 Open Graph 属性完善 <code>head</code> 部分</li> <li>添加更多小部件,例如搜索小部件 或者是一个 近期文章小部件 </li> <li>将你的主题提交到 Hexo官方主题站点 </li> <li>查看我的其他 Hexo 教程来改进你的博客</li> <li>查看hexo-theme-bootstrap-blog,这个主题同样是基于 bootstrap 模板实现的</li> <li>从零开始打造你自己的主题</li> </ul> <p>感谢阅读!欢迎在评论区留下你的评论、指正和意见。</p> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1175835501031141376"></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">你可能感兴趣的:(blog,hexo)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1881357086680477696.htm" title="大端模式和小端模式" target="_blank">大端模式和小端模式</a> <span class="text-muted">蝌蚪123456</span> <a class="tag" taget="_blank" href="/search/java%E5%BC%80%E5%8F%91/1.htm">java开发</a> <div>转载自http://blog.csdn.net/hackbuteer1/article/details/7722667在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常</div> </li> <li><a href="/article/1881316597990223872.htm" title="Apache2 搭建 WebDAV 服务器" target="_blank">Apache2 搭建 WebDAV 服务器</a> <span class="text-muted">cnlenglan</span> <a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a> <div>Apache2搭建WebDAV服务器本文本参考了https://blog.csdn.net/fengchao_2009/article/details/7531856https://www.cnblogs.com/anArtist/articles/5462951.html最近使用unRaid安装了Webdav,考虑到本人不熟悉Linux系统以及这个unRaid就准备放弃使用该系统。查询资料发现W</div> </li> <li><a href="/article/1881315964683874304.htm" title="关于wandb: Network error的问题" target="_blank">关于wandb: Network error的问题</a> <span class="text-muted">Young_Tramp</span> <a class="tag" taget="_blank" href="/search/%E4%B8%80%E4%BA%9B%E5%B0%8F%E9%97%AE%E9%A2%98/1.htm">一些小问题</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>关于wandb:Networkerror的问题我的情况:vscode远程服务器,服务器才重启过,wandb之前一直正常,重启后就出现错误:wandb:Networkerror(ConnectionError),enteringretryloop.wandb:W&BAPIkeyisconfigured.Usewandblogin--relogintoforcereloginwandb:Network</div> </li> <li><a href="/article/1881303970362748928.htm" title="SpringBoot+restFul+filter+threadLocal实现多租户的项目" target="_blank">SpringBoot+restFul+filter+threadLocal实现多租户的项目</a> <span class="text-muted">梦想一直在路上</span> <div>本片博客参考了https://blog.csdn.net/gebitan505/article/details/51614805threadLocal的目的是:实现变量的全局话,在当前的项目当中是实现了用户名的多租户状态下的全局话fiter:进行token的拦截,ThreadLocal的代码packagecom.zwl.util;importjava.util.HashMap;importjava</div> </li> <li><a href="/article/1881289579483426816.htm" title="厦门租房信息分析展示(pycharm+python爬虫+pyspark+pyecharts)(踩坑记录)" target="_blank">厦门租房信息分析展示(pycharm+python爬虫+pyspark+pyecharts)(踩坑记录)</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/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>厦门租房信息分析展示(pycharm+python爬虫+pyspark+pyecharts)(踩坑记录)项目地址http://dblab.xmu.edu.cn/blog/2307/踩坑:Spark分析文件rent_analyse.py改变Spark读取csv文件的写法sparkContext=SparkContext("local","rent_analyse")sqlContext=SQLCon</div> </li> <li><a href="/article/1881251358766592000.htm" title="ubuntu20 docker安装" target="_blank">ubuntu20 docker安装</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/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>https://www.cnblogs.com/lqqgis/p/18276118#更新软件包索引sudoapt-getupdate#安装需要的软件包以使apt能够通过HTTPS使用仓库sudoapt-getinstallca-certificatescurlgnupglsb-release#添加阿里云官方GPG密钥curl-fsSLhttp://mirrors.aliyun.com/docker</div> </li> <li><a href="/article/1881222338997972992.htm" title="【新人系列】Python 入门(十六):正则表达式" target="_blank">【新人系列】Python 入门(十六):正则表达式</a> <span class="text-muted">Pandaconda</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E4%BA%BA%E7%B3%BB%E5%88%97/1.htm">新人系列</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>✍个人博客:https://blog.csdn.net/Newin2020?type=blog专栏地址:https://blog.csdn.net/newin2020/category_12801353.html专栏定位:为0基础刚入门Python的小伙伴提供详细的讲解,也欢迎大佬们一起交流~专栏简介:在这个专栏,我将带着大家从0开始入门Python的学习。在这个Python的新人系列专栏下,将会</div> </li> <li><a href="/article/1881222341611024384.htm" title="【新人系列】Python 入门(十七):类与对象" target="_blank">【新人系列】Python 入门(十七):类与对象</a> <span class="text-muted">Pandaconda</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E4%BA%BA%E7%B3%BB%E5%88%97/1.htm">新人系列</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/1.htm">面向对象</a><a class="tag" taget="_blank" href="/search/%E7%B1%BB/1.htm">类</a> <div>✍个人博客:https://blog.csdn.net/Newin2020?type=blog专栏地址:https://blog.csdn.net/newin2020/category_12801353.html专栏定位:为0基础刚入门Python的小伙伴提供详细的讲解,也欢迎大佬们一起交流~专栏简介:在这个专栏,我将带着大家从0开始入门Python的学习。在这个Python的新人系列专栏下,将会</div> </li> <li><a href="/article/1881222336938569728.htm" title="【新人系列】Python 入门(十一):控制结构" target="_blank">【新人系列】Python 入门(十一):控制结构</a> <span class="text-muted">Pandaconda</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E4%BA%BA%E7%B3%BB%E5%88%97/1.htm">新人系列</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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/%E6%8E%A7%E5%88%B6%E7%BB%93%E6%9E%84/1.htm">控制结构</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a> <div>✍个人博客:https://blog.csdn.net/Newin2020?type=blog专栏地址:https://blog.csdn.net/newin2020/category_12801353.html专栏定位:为0基础刚入门Python的小伙伴提供详细的讲解,也欢迎大佬们一起交流~专栏简介:在这个专栏,我将带着大家从0开始入门Python的学习。在这个Python的新人系列专栏下,将会</div> </li> <li><a href="/article/1881214372399869952.htm" title="【新人系列】Python 入门(二十七):Python 库" target="_blank">【新人系列】Python 入门(二十七):Python 库</a> <span class="text-muted">Pandaconda</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E4%BA%BA%E7%B3%BB%E5%88%97/1.htm">新人系列</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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/python%E5%BA%93/1.htm">python库</a><a class="tag" taget="_blank" href="/search/%E5%BA%93/1.htm">库</a> <div>✍个人博客:https://blog.csdn.net/Newin2020?type=blog专栏地址:https://blog.csdn.net/newin2020/category_12801353.html专栏定位:为0基础刚入门Python的小伙伴提供详细的讲解,也欢迎大佬们一起交流~专栏简介:在这个专栏,我将带着大家从0开始入门Python的学习。在这个Python的新人系列专栏下,将会</div> </li> <li><a href="/article/1881206042675703808.htm" title="Mysql运维篇(五) 部署MHA--主机环境配置" target="_blank">Mysql运维篇(五) 部署MHA--主机环境配置</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除!大佬博文https://www.cnblogs.com/gomysql/p/3675429.htmlMySQL高可用(MHA)-知乎一、MHA简介:MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(</div> </li> <li><a href="/article/1881182696818929664.htm" title="Delphi代码编写标准指南" target="_blank">Delphi代码编写标准指南</a> <span class="text-muted">好大的牛角</span> <div>分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!·日月光华精华区文章阅读发信人:Delphii(Delphi),信区:VCL标题:Delphi编码规则发信站:日月光华站(FriSep712:03:072001),站内信件Delphi代码编写标准指南■■■■■■</div> </li> <li><a href="/article/1881179532963147776.htm" title="饿了么el-date-picker禁用当前时分秒之前的日期时间选择" target="_blank">饿了么el-date-picker禁用当前时分秒之前的日期时间选择</a> <span class="text-muted">不怕不管</span> <a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/element/1.htm">element</a><a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>使用参数picker-optionsdisabledDate:控制只能选择今天及以后的日期selectableRange:控制选择的时间段。如果是今天,则时间从此刻开始,否则从0时开始参考原文链接:https://blog.csdn.net/qq_26642611/article/details/103761975实现效果建议使用参数time-arrow-control,用箭头进行选择(用鼠标滚轮</div> </li> <li><a href="/article/1881173857935618048.htm" title="高可用架构-CAP理论" target="_blank">高可用架构-CAP理论</a> <span class="text-muted">weixin_33939843</span> <div>2019独角兽企业重金招聘Python工程师标准>>>整理自:《从零开始学架构》李运华著转载于:https://my.oschina.net/grace233/blog/2236736</div> </li> <li><a href="/article/1881172094096568320.htm" title="如何在BlogSpot中一次上传多篇博客文章?" target="_blank">如何在BlogSpot中一次上传多篇博客文章?</a> <span class="text-muted">潮易</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>如何在BlogSpot中一次上传多篇博客文章?在BlogSpot中一次性上传多篇博客文章的方法是使用API来批量上传文章。以下是详细的步骤和代码示例:1.首先,你需要从GoogleDevelopersConsole创建一个项目并启用BloggerAPI。2.然后,你需要在你的项目中添加BloggerAPI的客户端库,例如使用Python的`google-api-python-client`库。3.</div> </li> <li><a href="/article/1881168683879952384.htm" title="Idea拉取项目流程及报错解决" target="_blank">Idea拉取项目流程及报错解决</a> <span class="text-muted">暖暖的糖糖</span> <a class="tag" taget="_blank" href="/search/Idea%E5%B7%A5%E5%85%B7/1.htm">Idea工具</a><a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a> <div>1.入职新公司或者开启新项目的时候,需要通过idea引入项目2.首先通过git地址open引入项目,需要Git下载项目:https://blog.csdn.net/shy52134/article/details/121558689?spm=1001.2014.3001.5501获取git账号密码及权限获取git文件路径获取分支地址3.导入项目后来,加载依赖,注意有的公司有自己的私有库一定要求取最</div> </li> <li><a href="/article/1881136526377676800.htm" title="大模型系列-GPT算法" target="_blank">大模型系列-GPT算法</a> <span class="text-muted">樨潮</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>https://blog.csdn.net/None_Pan/article/details/106392965</div> </li> <li><a href="/article/1881125414697496576.htm" title="封装Redis工具类(解决击穿,穿透)" target="_blank">封装Redis工具类(解决击穿,穿透)</a> <span class="text-muted">Li清水</span> <a class="tag" taget="_blank" href="/search/Redis/1.htm">Redis</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a> <div>基于StringRedisTemplate封装一个缓存工具类Redis实战篇|Kyle'sBlog(cyborg2077.github.io)目录方法1:将任意Java对象序列化为JSON,并存储到String类型的Key中,并可以设置TTL过期时间方法2:将任意Java对象序列化为JSON,并存储在String类型的Key中,并可以设置逻辑过期时间,用于处理缓存击穿问题方法3:根据指定的Key查</div> </li> <li><a href="/article/1881115070138740736.htm" title="【Python爬虫实战】深入解析 Scrapy 管道:数据清洗、验证与存储的实战指南" target="_blank">【Python爬虫实战】深入解析 Scrapy 管道:数据清洗、验证与存储的实战指南</a> <span class="text-muted">易辰君</span> <a class="tag" taget="_blank" href="/search/python%E7%88%AC%E8%99%AB/1.htm">python爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/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>个人主页:易辰君-CSDN博客系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html目录前言一、了解ScrapyShell二、配置文件settings.py(一)为什么需要配置文件(二)配置文件的使用方法(三)常用字段及其含义三、管道的深入使用(一)管道的常用方法(二)管道的实现(三)启用管道四、管道的常见应用场景五、管道使用</div> </li> <li><a href="/article/1881114943806304256.htm" title="【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解" target="_blank">【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解</a> <span class="text-muted">易辰君</span> <a class="tag" taget="_blank" href="/search/python%E7%88%AC%E8%99%AB/1.htm">python爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/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>个人主页:易辰君-CSDN博客系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html目录前言一、SessionPage(一)SessionPage模块的基本功能(二)基本使用(三)常用方法(四)页面元素定位和数据提取(五)Cookie和会话管理(六)SessionPage的优点和局限性(七)SessionPage和Driver</div> </li> <li><a href="/article/1881114942380240896.htm" title="【Python爬虫实战】全面解析 DrissionPage:简化 Python 浏览器自动化的三种模式" target="_blank">【Python爬虫实战】全面解析 DrissionPage:简化 Python 浏览器自动化的三种模式</a> <span class="text-muted">易辰君</span> <a class="tag" taget="_blank" href="/search/python%E7%88%AC%E8%99%AB/1.htm">python爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/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>个人主页:易辰君-CSDN博客系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html目录前言一、DrissionPage简介(一)ChromiumPage(二)WebPage(三)SessionPage(四)三大模块总结二、ChromiumPage(一)初始化ChromiumPage(二)基本操作(三)等待元素加载(四)执行J</div> </li> <li><a href="/article/1881104985945600000.htm" title="4.指派问题匈牙利解法以及其优化" target="_blank">4.指派问题匈牙利解法以及其优化</a> <span class="text-muted">HughSylar</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AC%E8%BD%BD/1.htm">转载</a><a class="tag" taget="_blank" href="/search/z/1.htm">z</a> <div>指派问题匈牙利解法以及其优化本人第一次写blog,难免有不足之处,还请大家不吝指正。1、问题的提出简单的说,n个人恰好分别承担n个任务,每个人对于不同的任务效率不同;我们的目的就是为使任务完成效率尽可能的高。例如:有4个工人,要分别指派他们完成4项不同的工作,每人做各项工作所消耗的时间如下表所示,问应如何指派工作,才能使总的消耗时间为最少。若用0-1整数规划问题的常规思路来解,即:解:令xij=1</div> </li> <li><a href="/article/1881100438795776000.htm" title="基于人工智能的Python面试题" target="_blank">基于人工智能的Python面试题</a> <span class="text-muted">请一直在路上</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>基于人工智能的Python面试题1.Python中的元组与列表区别是什么?列表是可变类型,元组不是。列表是引用类型,元组不是。列表使用场景更宽泛,元组更多用于一些数据不可变的场景,例如参数、或者返回值。2.Python中的字典是否有序?python3.6之前字典是无序的,之后是有序的。原因可以参考下这个帖子https://blog.csdn.net/weixin_48629601/article/</div> </li> <li><a href="/article/1881099051177406464.htm" title="基于Damo-YOLO和DyHead检测头的YOLOv8优化:多尺度目标检测的创新方案【YOLOv8】" target="_blank">基于Damo-YOLO和DyHead检测头的YOLOv8优化:多尺度目标检测的创新方案【YOLOv8】</a> <span class="text-muted">步入烟尘</span> <a class="tag" taget="_blank" href="/search/YOLO%E7%B3%BB%E5%88%97%E5%88%9B%E6%96%B0%E6%B6%A8%E7%82%B9%E8%B6%85%E4%B8%93%E6%A0%8F/1.htm">YOLO系列创新涨点超专栏</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/1.htm">目标检测</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/YOLOv8/1.htm">YOLOv8</a> <div>本专栏专为AI视觉领域的爱好者和从业者打造。涵盖分类、检测、分割、追踪等多项技术,带你从入门到精通!后续更有实战项目,助你轻松应对面试挑战!立即订阅,开启你的YOLOv8之旅!专栏订阅地址:https://blog.csdn.net/mrdeam/category_12804295.html文章目录基于Damo-YOLO和DyHead检测头的YOLOv8优化:多尺度目标检测的创新方案【YOLOv8</div> </li> <li><a href="/article/1881099050598592512.htm" title="提升YOLOv8性能:用Swin Transformer替换Backbone的详细实现与分析【YOLOv8】" target="_blank">提升YOLOv8性能:用Swin Transformer替换Backbone的详细实现与分析【YOLOv8】</a> <span class="text-muted">步入烟尘</span> <a class="tag" taget="_blank" href="/search/YOLO%E7%B3%BB%E5%88%97%E5%88%9B%E6%96%B0%E6%B6%A8%E7%82%B9%E8%B6%85%E4%B8%93%E6%A0%8F/1.htm">YOLO系列创新涨点超专栏</a><a class="tag" taget="_blank" href="/search/YOLOv8/1.htm">YOLOv8</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E8%B7%9F%E8%B8%AA/1.htm">目标跟踪</a> <div>本专栏专为AI视觉领域的爱好者和从业者打造。涵盖分类、检测、分割、追踪等多项技术,带你从入门到精通!后续更有实战项目,助你轻松应对面试挑战!立即订阅,开启你的YOLOv8之旅!专栏订阅地址:https://blog.csdn.net/mrdeam/category_12804295.html文章目录YOLOv8改进|主干篇|SwinTransformer替换Backbone(附代码+详细修改步骤+</div> </li> <li><a href="/article/1881087202964860928.htm" title="PHP常用函数总结(180多个)" target="_blank">PHP常用函数总结(180多个)</a> <span class="text-muted">Jim仔</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a> <div>PHP常用函数总结转载自:http://blog.csdn.net/lzuacm数学函数1.abs():求绝对值$abs=abs(-4.2);//4.211输入:数字输出:绝对值数字2.ceil():进一法取整echoceil(9.999);//1011输出:浮点数进一取整3.floor():去尾法取整echofloor(9.999);//911输出:浮点数直接舍去小数部分4.fmod():浮点数</div> </li> <li><a href="/article/1881078748132995072.htm" title="【python基础】python GIL(全局解释器锁) 和 多线程锁" target="_blank">【python基础】python GIL(全局解释器锁) 和 多线程锁</a> <span class="text-muted">shengnan_wsn</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>文章目录什么是GIL?有了GIL还需要线程锁吗?参考资料1:[终于有人把GIL全局解释器说清楚了](https://zhuanlan.zhihu.com/p/311877485)2:[浅谈Python多线程之GIL描述](https://blog.csdn.net/qq_34359754/article/details/115209158)3:[多线程锁机制](https://www.cnblog</div> </li> <li><a href="/article/1880984224564047872.htm" title="java netty长连接_用netty实现长连接" target="_blank">java netty长连接_用netty实现长连接</a> <span class="text-muted">大笨妞</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty%E9%95%BF%E8%BF%9E%E6%8E%A5/1.htm">netty长连接</a> <div>示例代码1:https://github.com/howdyli/netty示例代码2:http://my.oschina.net/bv10000/blog/399388iosasyncsocket示例代码:http://www.superqq.com/blog/2015/04/03/ioskai-fa-zhi-asyncsocketshi-yong-jiao-cheng/长连接服务文章:http</div> </li> <li><a href="/article/1880969841662291968.htm" title="华为ENSP:STP和链路聚合的管理与配置" target="_blank">华为ENSP:STP和链路聚合的管理与配置</a> <span class="text-muted">Lethehong</span> <a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAensp/1.htm">华为ensp</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>这里将不再过度阐述STP和链路聚合的理论知识,不清楚的同学可以去观看Cisco文章中的理论知识理论知识https://blog.csdn.net/2301_76341691/article/details/145166547?fromshare=blogdetail&sharetype=blogdetail&sharerId=145166547&sharerefer=PC&sharesource=</div> </li> <li><a href="/article/1880960263910387712.htm" title="kafka" target="_blank">kafka</a> <span class="text-muted">宋song一</span> <a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/big/1.htm">big</a><a class="tag" taget="_blank" href="/search/data/1.htm">data</a> <div>Kafka学习之路Kafka必知必会kafka核心原理go操作kafka消息队列之-KafkaKafka分区分配策略或(https://blog.csdn.net/u013256816/article/details/81123625)kafka怎么保证消息顺序?StickyAssignor:0.11.x版本引入,消费者尽量不离开分区.即BalanceStrategySticky:重平衡策略,适用</div> </li> <li><a href="/article/79.htm" title="基本数据类型和引用类型的初始值" target="_blank">基本数据类型和引用类型的初始值</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java%E5%9F%BA%E7%A1%80/1.htm">java基础</a> <div>package com.array; /** * @Description 测试初始值 * @author FuJianyong * 2015-1-22上午10:31:53 */ public class ArrayTest { ArrayTest at; String str; byte bt; short s; int i; long</div> </li> <li><a href="/article/206.htm" title="摘抄笔记--《编写高质量代码:改善Java程序的151个建议》" target="_blank">摘抄笔记--《编写高质量代码:改善Java程序的151个建议》</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/%E9%AB%98%E8%B4%A8%E9%87%8F%E4%BB%A3%E7%A0%81/1.htm">高质量代码</a> <div>        记得3年前刚到公司,同桌同事见我无事可做就借我看《编写高质量代码:改善Java程序的151个建议》这本书,当时看了几页没上心就没研究了。到上个月在公司偶然看到,于是乎又找来看看,我的天,真是非常多的干货,对于我这种静不下心的人真是帮助莫大呀。           看完整本书,也记了不少笔记</div> </li> <li><a href="/article/333.htm" title="【备忘】Django 常用命令及最佳实践" target="_blank">【备忘】Django 常用命令及最佳实践</a> <span class="text-muted">dongwei_6688</span> <a class="tag" taget="_blank" href="/search/django/1.htm">django</a> <div>注意:本文基于 Django 1.8.2 版本   生成数据库迁移脚本(python 脚本) python manage.py makemigrations polls  说明:polls 是你的应用名字,运行该命令时需要根据你的应用名字进行调整   查看该次迁移需要执行的 SQL 语句(只查看语句,并不应用到数据库上): python manage.p</div> </li> <li><a href="/article/460.htm" title="阶乘算法之一N! 末尾有多少个零" target="_blank">阶乘算法之一N! 末尾有多少个零</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%98%B6%E4%B9%98/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/%E6%95%88%E7%8E%87/1.htm">效率</a> <div>                                 &n</div> </li> <li><a href="/article/587.htm" title="spring注入servlet" target="_blank">spring注入servlet</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/Spring%E6%B3%A8%E5%85%A5/1.htm">Spring注入</a> <div>传统的配置方法是无法将bean或属性直接注入到servlet中的,配置代理servlet亦比较麻烦,这里其实有比较简单的方法,其实就是在servlet的init()方法中加入要注入的内容: ServletContext application = getServletContext(); WebApplicationContext wac = WebApplicationContextUtil</div> </li> <li><a href="/article/714.htm" title="Jenkins 命令行操作说明文档" target="_blank">Jenkins 命令行操作说明文档</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div> 假设Jenkins的URL为http://22.11.140.38:9080/jenkins/ 基本的格式为 java 基本的格式为 java -jar jenkins-cli.jar [-s JENKINS_URL] command [options][args] 下面具体介绍各个命令的作用及基本使用方法 1. &nb</div> </li> <li><a href="/article/841.htm" title="UnicodeBlock检测中文用法" target="_blank">UnicodeBlock检测中文用法</a> <span class="text-muted">布衣凌宇</span> <a class="tag" taget="_blank" href="/search/UnicodeBlock/1.htm">UnicodeBlock</a> <div>/**  * 判断输入的是汉字  */ public static boolean isChinese(char c) {        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);    </div> </li> <li><a href="/article/968.htm" title="java下实现调用oracle的存储过程和函数" target="_blank">java下实现调用oracle的存储过程和函数</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/orale/1.htm">orale</a> <div> 1.创建表:STOCK_PRICES     2.插入测试数据:     3.建立一个返回游标:  PKG_PUB_UTILS   4.创建和存储过程:P_GET_PRICE     5.创建函数:   6.JAVA调用存储过程返回结果集 JDBCoracle10G_INVO</div> </li> <li><a href="/article/1095.htm" title="Velocity Toolbox" target="_blank">Velocity Toolbox</a> <span class="text-muted">antlove</span> <a class="tag" taget="_blank" href="/search/%E6%A8%A1%E6%9D%BF/1.htm">模板</a><a class="tag" taget="_blank" href="/search/tool/1.htm">tool</a><a class="tag" taget="_blank" href="/search/box/1.htm">box</a><a class="tag" taget="_blank" href="/search/velocity/1.htm">velocity</a> <div>velocity.VelocityUtil package velocity; import org.apache.velocity.Template; import org.apache.velocity.app.Velocity; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.c</div> </li> <li><a href="/article/1222.htm" title="JAVA正则表达式匹配基础" target="_blank">JAVA正则表达式匹配基础</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%8C%B9%E9%85%8D/1.htm">正则表达式的匹配</a> <div>  正则表达式;提高程序的性能,简化代码,提高代码的可读性,简化对字符串的操作   正则表达式的用途; 字符串的匹配 字符串的分割 字符串的查找 字符串的替换       正则表达式的验证语法     [a] //[]表示这个字符只出现一次 ,[a] 表示a只出现一</div> </li> <li><a href="/article/1349.htm" title="是否使用EL表达式的配置" target="_blank">是否使用EL表达式的配置</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/EL/1.htm">EL</a><a class="tag" taget="_blank" href="/search/EasyTemplate/1.htm">EasyTemplate</a> <div>        今天在开发过程中发现一个细节问题,由于前端采用EasyTemplate模板方法实现数据展示,但老是不能正常显示出来。后来发现竟是EL将我的EasyTemplate的${...}解释执行了,导致我的模板不能正常展示后台数据。         网</div> </li> <li><a href="/article/1476.htm" title="精通Oracle10编程SQL(1-3)PLSQL基础" target="_blank">精通Oracle10编程SQL(1-3)PLSQL基础</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a> <div>--只包含执行部分的PL/SQL块 --set serveroutput off begin dbms_output.put_line('Hello,everyone!'); end; select * from emp; --包含定义部分和执行部分的PL/SQL块 declare v_ename varchar2(5); begin select </div> </li> <li><a href="/article/1603.htm" title="【Nginx三】Nginx作为反向代理服务器" target="_blank">【Nginx三】Nginx作为反向代理服务器</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>Nginx一个常用的功能是作为代理服务器。代理服务器通常完成如下的功能:   接受客户端请求 将请求转发给被代理的服务器 从被代理的服务器获得响应结果 把响应结果返回给客户端 实例 本文把Nginx配置成一个简单的代理服务器 对于静态的html和图片,直接从Nginx获取 对于动态的页面,例如JSP或者Servlet,Nginx则将请求转发给Res</div> </li> <li><a href="/article/1730.htm" title="Plugin execution not covered by lifecycle configuration: org.apache.maven.plugin" target="_blank">Plugin execution not covered by lifecycle configuration: org.apache.maven.plugin</a> <span class="text-muted">blackproof</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E9%94%99/1.htm">报错</a> <div>转:http://stackoverflow.com/questions/6352208/how-to-solve-plugin-execution-not-covered-by-lifecycle-configuration-for-sprin   maven报错: Plugin execution not covered by lifecycle configuration: </div> </li> <li><a href="/article/1857.htm" title="发布docker程序到marathon" target="_blank">发布docker程序到marathon</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/docker+%E5%8F%91%E5%B8%83%E5%BA%94%E7%94%A8/1.htm">docker 发布应用</a> <div>1 发布docker程序到marathon 1.1 搭建私有docker registry 1.1.1 安装docker regisry docker pull docker-registry docker run -t -p 5000:5000 docker-registry 下载docker镜像并发布到私有registry docker pull consol/tomcat-8.0 </div> </li> <li><a href="/article/1984.htm" title="java-57-用两个栈实现队列&&用两个队列实现一个栈" target="_blank">java-57-用两个栈实现队列&&用两个队列实现一个栈</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.ArrayList; import java.util.List; import java.util.Stack; /* * Q 57 用两个栈实现队列 */ public class QueueImplementByTwoStacks { private Stack<Integer> stack1; pr</div> </li> <li><a href="/article/2111.htm" title="Nginx配置性能优化" target="_blank">Nginx配置性能优化</a> <span class="text-muted">cfyme</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>转载地址:http://blog.csdn.net/xifeijian/article/details/20956605   大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了。而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了。然而,如果你真的想挤压出Nginx的性能,你必</div> </li> <li><a href="/article/2238.htm" title="[JAVA图形图像]JAVA体系需要稳扎稳打,逐步推进图像图形处理技术" target="_blank">[JAVA图形图像]JAVA体系需要稳扎稳打,逐步推进图像图形处理技术</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>      对图形图像进行精确处理,需要大量的数学工具,即使是从底层硬件模拟层开始设计,也离不开大量的数学工具包,因为我认为,JAVA语言体系在图形图像处理模块上面的研发工作,需要从开发一些基础的,类似实时数学函数构造器和解析器的软件包入手,而不是急于利用第三方代码工具来实现一个不严格的图形图像处理软件......   &nb</div> </li> <li><a href="/article/2365.htm" title="MonkeyRunner的使用" target="_blank">MonkeyRunner的使用</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/MonkeyRunner/1.htm">MonkeyRunner</a> <div>要使用MonkeyRunner,就要学习使用Python,哎 先抄一段官方doc里的代码 作用是启动一个程序(应该是启动程序默认的Activity),然后按MENU键,并截屏 # Imports the monkeyrunner modules used by this program from com.android.monkeyrunner import MonkeyRun</div> </li> <li><a href="/article/2492.htm" title="Hadoop-- 海量文件的分布式计算处理方案" target="_blank">Hadoop-- 海量文件的分布式计算处理方案</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/mapreduce/1.htm">mapreduce</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F%E8%AE%A1%E7%AE%97/1.htm">分布式计算</a> <div>csdn的一个关于hadoop的分布式处理方案,存档。 原帖:http://blog.csdn.net/calvinxiu/article/details/1506112。     Hadoop 是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同ja</div> </li> <li><a href="/article/2619.htm" title="以資料庫驗證登入" target="_blank">以資料庫驗證登入</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a> <div>以資料庫驗證登入 由於 Yii 內定的原始框架程式, 採用綁定在UserIdentity.php 的 demo 與 admin 帳號密碼:    public function authenticate()    {        $users=array( &nbs</div> </li> <li><a href="/article/2746.htm" title="github做webhooks:[2]php版本自动触发更新" target="_blank">github做webhooks:[2]php版本自动触发更新</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/webhooks/1.htm">webhooks</a> <div>上次已经说过了如何在github控制面板做查看url的返回信息了。这次就到了直接贴钩子代码的时候了。 工具/原料 git github 方法/步骤   在github的setting里面的webhooks里把我们的url地址填进去。   钩子更新的代码如下: error_reportin</div> </li> <li><a href="/article/2873.htm" title="Eos开发常用表达式" target="_blank">Eos开发常用表达式</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/Eos%E5%BC%80%E5%8F%91/1.htm">Eos开发</a><a class="tag" taget="_blank" href="/search/Eos%E5%85%A5%E9%97%A8/1.htm">Eos入门</a><a class="tag" taget="_blank" href="/search/Eos%E5%BC%80%E5%8F%91%E5%B8%B8%E7%94%A8%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">Eos开发常用表达式</a> <div>Eos开发常用表达式 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2014年8月18日 15:03:35 星期一     &</div> </li> <li><a href="/article/3000.htm" title="SpringSecurity3.X--SpEL 表达式" target="_blank">SpringSecurity3.X--SpEL 表达式</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/SpringSecurity/1.htm">SpringSecurity</a> <div>使用 Spring 表达式语言配置访问控制,要实现这一功能的直接方式是在<http>配置元素上添加 use-expressions 属性:   <http auto-config="true" use-expressions="true"> 这样就会在投票器中自动增加一个投票器:org.springframework</div> </li> <li><a href="/article/3127.htm" title="Redis vs Memcache" target="_blank">Redis vs Memcache</a> <span class="text-muted">IXHONG</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>1. Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。 2. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。 3. Redis支持数据的备份,即master-slave模式的数据备份。 4. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 Red</div> </li> <li><a href="/article/3254.htm" title="Python - 装饰器使用过程中的误区解读" target="_blank">Python - 装饰器使用过程中的误区解读</a> <span class="text-muted">kvhur</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/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>大家都知道装饰器是一个很著名的设计模式,经常被用于AOP(面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,Web权限校验, Cache等。 原文链接:http://www.gbtags.com/gb/share/5563.htm Python语言本身提供了装饰器语法(@),典型的装饰器实现如下:   @function_wrapper de</div> </li> <li><a href="/article/3381.htm" title="架构师之mybatis-----update 带case when 针对多种情况更新" target="_blank">架构师之mybatis-----update 带case when 针对多种情况更新</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/case+when/1.htm">case when</a> <div>1.前言.    如题. 2. 代码.   <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="list" index=&</div> </li> <li><a href="/article/3508.htm" title="Algorithm算法视频教程" target="_blank">Algorithm算法视频教程</a> <span class="text-muted">栏目记者</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>课程:Algorithm算法视频教程 百度网盘下载地址: http://pan.baidu.com/s/1qWFjjQW 密码: 2mji 程序写的好不好,还得看算法屌不屌!Algorithm算法博大精深。 一、课程内容: 课时1、算法的基本概念 + Sequential search 课时2、Binary search 课时3、Hash table 课时4、Algor</div> </li> <li><a href="/article/3635.htm" title="C语言算法之冒泡排序" target="_blank">C语言算法之冒泡排序</a> <span class="text-muted">qiufeihu</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>任意输入10个数字由小到大进行排序。 代码: #include <stdio.h> int main() { int i,j,t,a[11]; /*定义变量及数组为基本类型*/ for(i = 1;i < 11;i++){ scanf("%d",&a[i]); /*从键盘中输入10个数*/ } for</div> </li> <li><a href="/article/3762.htm" title="JSP异常处理" target="_blank">JSP异常处理</a> <span class="text-muted">wyzuomumu</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a> <div>1.在可能发生异常的网页中通过指令将HTTP请求转发给另一个专门处理异常的网页中: <%@ page errorPage="errors.jsp"%>   2.在处理异常的网页中做如下声明: errors.jsp: <%@ page isErrorPage="true"%>,这样设置完后就可以在网页中直接访问exc</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>