Flask 教程 第十一章:美化

本文翻译自The Flask Mega-Tutorial Part XI: Facelift

这是Flask Mega-Tutorial系列的第十一部分,我将告诉你如何用基于Bootstrap用户界面框架的新模板替换基础的HTML模板。

你把玩Microblog应用也有一段时间了,所以我相信你已经注意到,我没有花太多时间来美化它,说得更具体点,我根本没有花时间。 所有的模板只使用了基础样式,没有任何自定义的展现。 这对于我来说却非常有用,因为我可以专注于应用的实际逻辑,不用分心于编写好看的HTML和CSS代码。

但是我已经长期关注应用的后端部分一段时间了。 因此在本章中,我暂停一下后端的工作,并花点时间向你展示如何使应用看起来更加优雅和专业。

本章将与之前的章节略有不同,因为我不会像平常解说Python那样,事无巨细,一一道来,毕竟Python才是本教程的主要内容。 创建漂亮的网页是一个很广泛的话题,而与Python Web的后端开发很大程度上无关,因此我将讨论一些基本的指导方针和想法,你可以通过重新设计应用的外观来研究和学习它。

本章的GitHub链接为:Browse, Zip, Diff.

CSS框架

虽然我们可以争辩说写代码不容易,但是与那些必须让网页在所有Web浏览器上具有良好一致外观的网页设计师相比,我们的痛苦不值一提。 虽然近年来这种情况得到一定程度的缓解,但是在一些浏览器中仍然存在着晦涩的错误或奇怪的设定,这使得设计网页的任务变得非常困难。 如果还需要兼容屏幕限制设备(诸如平板电脑和智能手机)的浏览器,则更加困难。

如果你和我一样,只是一个想创建出规范网页的开发人员,没有时间或兴趣去学习底层机制并通过编写原生HTML和CSS来实现它,那么唯一可行的解决方案是使用CSS框架来简化任务。 通过这种方式,你会失去一些创造性的自由,但另一方面,无需通过太多的功夫就可以让网页在所有浏览器中看起来都不错。 CSS框架为普通类型的用户界面元素提供了高级CSS类的集合,其中包含预定义样式。 大多数这样的框架还提供JavaScript插件,以实现不能纯粹使用HTML和CSS来完成的功能。

Bootstrap简介

最受欢迎的CSS框架之一是由Twitter推出的Bootstrap。 如果你想看看这个框架可以设计的页面类型,文档有一些示例。

这些是使用Bootstrap来设置网页风格的一些好处:

  • 在所有主流网页浏览器中都有相似的外观
  • 自动处理PC桌面,平板电脑和手机屏幕尺寸
  • 可定制的布局
  • 精心设计的导航栏,表单,按钮,警示,弹出窗口等

使用Bootstrap最直接的方法是简单地在你的基本模板中导入bootstrap.min.css文件。 可以下载此文件并将其添加到你的项目中,或直接从CDN导入。 然后,你可以根据其文档开始使用它提供的通用CSS类,实在是太棒了。 你可能还需要导入包含框架JavaScript代码的bootstrap.min.js文件,以便使用最先进的功能。

幸运的是,有一个名为Flask-Bootstrap的Flask插件,它提供了一个已准备好的基础模板,该模板引入了Bootstrap框架。 让我们来安装这个扩展:

1 (venv) $ pip install flask-bootstrap

使用Flask-Bootstrap

Flask-Bootstrap需要像大多数其他Flask插件一样被初始化:

app/init.py: Flask-Bootstrap实例。

1 # ...
2 from flask_bootstrap import Bootstrap
3 
4 app = Flask(__name__)
5 # ...
6 bootstrap = Bootstrap(app)

在初始化插件之后,bootstrap/base.html模板就会变为可用状态,你可以使用extends子句从应用模板中引用。

但是,回顾一下,我已经使用了extends子句来继承我的基础模板,这使我可以将页面的公共部分放在一个地方。 base.html模板定义了导航栏,其中包含几个链接,并且还导出了一个content块。 应用中的所有其他模板都从基础模板继承,并为内容块提供页面的主要内容。

那么我怎样才能适配Bootstrap基础模板呢? 解决方案是从使用两个层级到使用三个层级。 bootstrap/base.html模板提供页面的基本结构,其中引入了Bootstrap框架文件。 这个模板为派生的模板定义了一些块,例如titlenavbarcontent(参见块的完整列表)。 我将更改base.html模板以从bootstrap/base.html派生,并提供titlenavbarcontent块的实现。 反过来,base.html将为从其派生的模板导出app_content块以定义页面内容。

下面你可以看到从Bootstrap基础模板派生的base.html的代码。 请注意,此列表不包含导航栏的整个HTML,但你可以在GitHub上或下载本章的代码来查看完整的实现。

app/templates/base.html:重新设计后的基础模板。

 1 {% extends 'bootstrap/base.html' %}
 2 
 3 {% block title %}
 4     {% if title %}{{ title }} - Microblog{% else %}Welcome to Microblog{% endif %}
 5 {% endblock %}
 6 
 7 {% block navbar %}
 8     
11 {% endblock %}
12 
13 {% block content %}
14     
class="container"> 15 {% with messages = get_flashed_messages() %} 16 {% if messages %} 17 {% for message in messages %} 18
class="alert alert-info" role="alert">{{ message }}
19 {% endfor %} 20 {% endif %} 21 {% endwith %} 22 23 {# application content needs to be provided in the app_content block #} 24 {% block app_content %}{% endblock %} 25
26 {% endblock %}

从中你可以看到我如何从bootstrap/base.html派生此模板,接下来分别实现了页面标题、导航栏和页面内容的这三个模块。

title块需要使用</code>标签来定义用于页面标题的文本。 对于这个块我简单地挪用了原始基本模板中<code><title></code>标签内部的逻辑。</p> <p><code>navbar</code>块是一个可选块,用于定义导航栏。 对于此块,我调整了Bootstrap导航栏文档中的示例,以便它在左侧展示网站品牌,跟着是Home和Explore的链接。 然后我添加了个人主页和登录或注销链接并使其与页面的右边界对齐。 正如我上面提到的,我在上面的例子中省略了HTML,但是你可以从本章的下载包中获得完整的<em>base.html</em>模板。</p> <p>最后,在<code>content</code>块中,我定义了一个顶级容器,并在其中设定了呈现闪现消息的逻辑,这些消息现在将显示为Bootstrap警示的样式。 接下来是一个新的<code>app_content</code>块,这个块用于从其派生的模板来定义他们自己的内容。</p> <p>所有页面模板的原始版本在名为<code>content</code>的块中定义了它们的内容。 正如你在上面看到的,Flask-Bootstrap使用名为<code>content</code>的块,所以我将我的内容块重命名为<code>app_content</code>。 所以我所有的模板都必须重命名为使用<code>app_content</code>作为它们的内容块。 例如,这是<em>404.html</em>模板的修改后版本的展示:</p> <p><em>app/templates/404.html</em>:重新设计后的404错误模板。</p> <div class="cnblogs_code"> <pre><span style="color: #008080;">1</span> {% extends <span style="color: #800000;">"</span><span style="color: #800000;">base.html</span><span style="color: #800000;">"</span> %<span style="color: #000000;">} </span><span style="color: #008080;">2</span> <span style="color: #008080;">3</span> {% block app_content %<span style="color: #000000;">} </span><span style="color: #008080;">4</span> <h1>File Not Found</h1> <span style="color: #008080;">5</span> <p><a href=<span style="color: #800000;">"</span><span style="color: #800000;">{{ url_for('index') }}</span><span style="color: #800000;">"</span>>Back</a></p> <span style="color: #008080;">6</span> {% endblock %}</pre> </div> <h2 id="渲染bootstrap表单">渲染Bootstrap表单</h2> <p>Flask-Bootstrap在渲染表单这方面做得非常出色。 Flask-Bootstrap不需要逐个设置表单字段,而是使用一个接受Flask-WTF表单对象作为参数的宏,并以Bootstrap样式渲染出完整的表单。</p> <p>下面你可以看到重新设计后的<em>register.html</em>模板:</p> <p><em>app/templates/register.html</em>::用户注册模板。</p> <div class="cnblogs_code"> <pre>{% extends <span style="color: #800000;">"</span><span style="color: #800000;">base.html</span><span style="color: #800000;">"</span> %<span style="color: #000000;">} {</span>% <span style="color: #0000ff;">import</span> <span style="color: #800000;">'</span><span style="color: #800000;">bootstrap/wtf.html</span><span style="color: #800000;">'</span> as wtf %<span style="color: #000000;">} {</span>% block app_content %<span style="color: #000000;">} </span><h1>Register</h1> <div <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">row</span><span style="color: #800000;">"</span>> <div <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">col-md-4</span><span style="color: #800000;">"</span>><span style="color: #000000;"> {{ wtf.quick_form(form) }} </span></div> </div><span style="color: #000000;"> {</span>% endblock %}</pre> </div> <p>是不是很棒? 顶端附近的<code>import</code>语句与Python导入类似。 这增加了一个<code>wtf.quick_form()</code>宏,它在单行代码中渲染完整的表单,包括对显示验证错误的支持,并且适配Bootstrap框架的所有样式。</p> <p>再一次地,我不会向你展示我为应用中的其他表单所做的所有更改,但这些更改都是可以在GitHub上下载或检查到的。</p> <h2 id="渲染用户动态">渲染用户动态</h2> <p>单条用户动态的渲染逻辑被提取到名为<em>_post.html</em>的子模板中。 我只需要在这个模板上做一些很小的调整,就可以使其在Bootstrap下看起来很棒了。</p> <p><em>app/templates/_post.html</em>: 重新设计后的用户动态子模板。</p> <div class="cnblogs_code"> <pre><span style="color: #008080;"> 1</span> <table <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">table table-hover</span><span style="color: #800000;">"</span>> <span style="color: #008080;"> 2</span> <tr> <span style="color: #008080;"> 3</span> <td width=<span style="color: #800000;">"</span><span style="color: #800000;">70px</span><span style="color: #800000;">"</span>> <span style="color: #008080;"> 4</span> <a href=<span style="color: #800000;">"</span><span style="color: #800000;">{{ url_for('user', username=post.author.username) }}</span><span style="color: #800000;">"</span>> <span style="color: #008080;"> 5</span> <img src=<span style="color: #800000;">"</span><span style="color: #800000;">{{ post.author.avatar(70) }}</span><span style="color: #800000;">"</span> /> <span style="color: #008080;"> 6</span> </a> <span style="color: #008080;"> 7</span> </td> <span style="color: #008080;"> 8</span> <td> <span style="color: #008080;"> 9</span> <a href=<span style="color: #800000;">"</span><span style="color: #800000;">{{ url_for('user', username=post.author.username) }}</span><span style="color: #800000;">"</span>> <span style="color: #008080;">10</span> <span style="color: #000000;"> {{ post.author.username }} </span><span style="color: #008080;">11</span> </a> <span style="color: #008080;">12</span> <span style="color: #000000;"> says: </span><span style="color: #008080;">13</span> <br> <span style="color: #008080;">14</span> <span style="color: #000000;"> {{ post.body }} </span><span style="color: #008080;">15</span> </td> <span style="color: #008080;">16</span> </tr> <span style="color: #008080;">17</span> </table></pre> </div> <h2 id="渲染分页链接">渲染分页链接</h2> <p>分页链接是Bootstrap提供直接支持的另一个方面。 为此,我再一次访问Bootstrap 文档,并修改了其中的一个示例。 以下是在<em>index.html</em>页面中的分页链接的代码:</p> <p><em>app/templates/index.html</em>: 重新设计后的分页链接。</p> <div class="cnblogs_code"> <pre><span style="color: #008080;"> 1</span> <span style="color: #000000;"> ... </span><span style="color: #008080;"> 2</span> <nav aria-label=<span style="color: #800000;">"</span><span style="color: #800000;">...</span><span style="color: #800000;">"</span>> <span style="color: #008080;"> 3</span> <ul <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">pager</span><span style="color: #800000;">"</span>> <span style="color: #008080;"> 4</span> <li <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">previous{% if not prev_url %} disabled{% endif %}</span><span style="color: #800000;">"</span>> <span style="color: #008080;"> 5</span> <a href=<span style="color: #800000;">"</span><span style="color: #800000;">{{ prev_url or '#' }}</span><span style="color: #800000;">"</span>> <span style="color: #008080;"> 6</span> <span aria-hidden=<span style="color: #800000;">"</span><span style="color: #800000;">true</span><span style="color: #800000;">"</span>>←</span><span style="color: #000000;"> Newer posts </span><span style="color: #008080;"> 7</span> </a> <span style="color: #008080;"> 8</span> </li> <span style="color: #008080;"> 9</span> <li <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">next{% if not next_url %} disabled{% endif %}</span><span style="color: #800000;">"</span>> <span style="color: #008080;">10</span> <a href=<span style="color: #800000;">"</span><span style="color: #800000;">{{ next_url or '#' }}</span><span style="color: #800000;">"</span>> <span style="color: #008080;">11</span> Older posts <span aria-hidden=<span style="color: #800000;">"</span><span style="color: #800000;">true</span><span style="color: #800000;">"</span>>→</span> <span style="color: #008080;">12</span> </a> <span style="color: #008080;">13</span> </li> <span style="color: #008080;">14</span> </ul> <span style="color: #008080;">15</span> </nav></pre> </div> <p>请注意,在分页链接的实现中,当某个方向没有更多内容时,不是隐藏该链接,而是使用禁用状态,这会使该链接显示为灰色。</p> <p>类似的更改需要应用于<em>user.html</em>,但我不打算展示在此处。 本章的下载包中包含这些更改。</p> <h2 id="对比">对比</h2> <p>请下载本章的zip文件并更新应用。</p> <p>下面你可以对照几张美化前后的图片来观察转变情况。 请记住,这种转变是在不改变一行应用逻辑代码的情况下实现的!</p> <p><a href="http://img.e-com-net.com/image/info8/526bc4a46ed049d899fac636dea9513c.jpg" target="_blank"><img title="" src="http://img.e-com-net.com/image/info8/526bc4a46ed049d899fac636dea9513c.jpg" alt="Flask 教程 第十一章:美化_第1张图片" width="650" height="305" style="border:1px solid black;"></a></p> <p><a href="http://img.e-com-net.com/image/info8/34c4b1c3eed84fbba35e57b5dfe0ef39.jpg" target="_blank"><img title="" src="http://img.e-com-net.com/image/info8/34c4b1c3eed84fbba35e57b5dfe0ef39.jpg" alt="Flask 教程 第十一章:美化_第2张图片" width="650" height="302" style="border:1px solid black;"></a></p> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1207832389657661440"></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">你可能感兴趣的:(Flask 教程 第十一章:美化)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1892372953400668160.htm" title="Flask 发送邮件" target="_blank">Flask 发送邮件</a> <span class="text-muted">larance</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>下载pipinstallflask-mailconfig.pyMAIL_SERVER="smtp.qq.com"MAIL_USE_SSL=TrueMAIL_PORT=465MAIL_USERNAME="xxxx@qq.com"MAIL_PASSWORD="xxxxx"MAIL_DEFAULT_SENDER="xxxx@qq.com"引入flask_mailexts.pyfromflask_sqla</div> </li> <li><a href="/article/1892362734704586752.htm" title="【人工智能】提升编程效率的6种GPT实用应用技巧!保姆级讲解!" target="_blank">【人工智能】提升编程效率的6种GPT实用应用技巧!保姆级讲解!</a> <span class="text-muted">ChatGPT-千鑫</span> <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/AI%E9%A2%86%E5%9F%9F/1.htm">AI领域</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/gpt/1.htm">gpt</a><a class="tag" taget="_blank" href="/search/AI%E7%BC%96%E7%A8%8B/1.htm">AI编程</a> <div>文章目录实用教程:六大AI编程技巧解锁效率提升技巧1:快速实现需求demo操作步骤技巧2:代码审查——AI帮你提升代码质量操作步骤技巧3:错误排查——AI助你快速定位问题操作步骤技巧4:代码注释——AI帮你理解复杂逻辑操作步骤技巧5:数据整理——AI帮你高效准备测试数据操作步骤技巧6:学习未知代码库——AI助你快速掌握新工具操作步骤使用教程:全面掌握CodeMoss的高效编程工具(1)VSCode</div> </li> <li><a href="/article/1892348234601394176.htm" title="【Python】email:发送纯文本邮件" target="_blank">【Python】email:发送纯文本邮件</a> <span class="text-muted">T0uken</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a> <div>在这篇教程中,我们将一步步解析如何使用Python发送电子邮件。我们将用到Python中的smtplib和email库,它们为我们提供了与邮件服务器互动的功能。我们将逐步解释代码的每个部分,帮助你理解如何通过Python发送邮件。导入必要的库首先,我们需要导入一些Python库来处理邮件的发送过程。importsmtplibfromemail.mime.multipartimportMIMEMul</div> </li> <li><a href="/article/1892346093363064832.htm" title="Python Web开发新选择:FastAPI框架详细教程" target="_blank">Python Web开发新选择:FastAPI框架详细教程</a> <span class="text-muted">车载testing</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%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a> <div>PythonWeb开发新选择:FastAPI框架详细教程简介FastAPI是一个用于构建API的现代、快速(高性能)的Web框架,它基于Python3.6+的类型提示。本文将通过具体的示例,详细介绍如何使用FastAPI进行Web开发。一、FastAPI简介1.FastAPI能做什么?FastAPI适用于构建:Web站点WebAPI测试平台持续集成工具自动生成API文档2.为什么要学习FastAP</div> </li> <li><a href="/article/1892341428651094016.htm" title="教程分享:手机应用自动化" target="_blank">教程分享:手机应用自动化</a> <span class="text-muted">QH_ShareHub</span> <a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>手机应用程序的自动化通常涉及使用专门设计的自动化框架和工具。对于Android和iOS平台,以下是一些常用的自动化工具:Android:Espresso:Espresso是谷歌官方支持的自动化测试框架。它适用于写UI测试来模拟用户对Android应用的交云。Espresso工作在应用程序的内存中,因此能够快速执行。UIAutomator:这个框架允许测试者创建自动化脚本来检测和操作用户界面元素。它</div> </li> <li><a href="/article/1892332855879593984.htm" title="AScript自动化脚本游戏辅助系列教程" target="_blank">AScript自动化脚本游戏辅助系列教程</a> <span class="text-muted">jinglong.zha</span> <a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E8%84%9A%E6%9C%AC/1.htm">自动化脚本</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/ascript/1.htm">ascript</a><a class="tag" taget="_blank" href="/search/%E6%87%92%E4%BA%BA%E7%B2%BE%E7%81%B5/1.htm">懒人精灵</a><a class="tag" taget="_blank" href="/search/easyclick/1.htm">easyclick</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E8%BE%85%E5%8A%A9%E5%BC%80%E5%8F%91/1.htm">游戏辅助开发</a> <div>Python自动化脚本开发,AScript零基础从入门到精通,游戏脚本,自动化脚本,python核心与进阶实战教程AScript基础-python核心与进阶课程简介_哔哩哔哩_bilibiliAScript基础-python核心与进阶课程简介是Python自动化脚本开发,AScript零基础从入门到精通,游戏脚本,自动化脚本,python核心与进阶实战教程的第1集视频,该合集共计35集,视频收藏或</div> </li> <li><a href="/article/1892324283884040192.htm" title="mysql 删表卡死_如何解决mysql 删表卡住的问题" target="_blank">mysql 删表卡死_如何解决mysql 删表卡住的问题</a> <span class="text-muted">霍冉</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E5%88%A0%E8%A1%A8%E5%8D%A1%E6%AD%BB/1.htm">删表卡死</a> <div>如何解决mysql删表卡住的问题mysql删表卡住的解决办法:首先执行“showfullprocesslist;”语句;然后执行“killprocessid;”语句;最后使用kill语句将所有的id杀死,并重启MySQL即可。推荐:《mysql视频教程》MySQL表不能修改、删除等操作,卡死、锁死情况的处理办法。MySQL如果频繁的修改一个表的数据,那么这么表会被锁死。造成假死现象。比如用Navi</div> </li> <li><a href="/article/1892317478340587520.htm" title="什么是网关,网关的作用是什么?网络安全零基础入门到精通实战教程!" target="_blank">什么是网关,网关的作用是什么?网络安全零基础入门到精通实战教程!</a> <span class="text-muted">黑客demon</span> <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/%E6%9C%8D%E5%8A%A1%E5%99%A8/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/%E7%BD%91%E5%85%B3/1.htm">网关</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a> <div>1.什么是网关网关又称网间连接器、协议转换器,也就是网段(局域网、广域网)关卡,不同网段中的主机不能直接通信,需要通过关卡才能进行互访,比如IP地址为192.168.31.9(子网掩码:255.255.255.0)和192.168.7.13(子网掩码:255.255.255.0)的两个主机不是同一网段,想要进行互访就得需要网关。就像古代想要出城的唯一路径就是过城门下的关卡。网关在传输层上实现不同网</div> </li> <li><a href="/article/1892314076684546048.htm" title="阿里云部署Django项目(超详细图文教程)—— Part3. Django settings修改、PostgreSQL配置" target="_blank">阿里云部署Django项目(超详细图文教程)—— Part3. Django settings修改、PostgreSQL配置</a> <span class="text-muted">马志峰的编程笔记</span> <a class="tag" taget="_blank" href="/search/Django%E9%83%A8%E7%BD%B2/1.htm">Django部署</a><a class="tag" taget="_blank" href="/search/postgresql/1.htm">postgresql</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E4%BA%91/1.htm">阿里云</a> <div>阿里云部署Django项目(超详细图文教程)Part3.Djangosettings修改、PostgreSQL配置前言:花了一个月的空闲时间,终于成功把Django网站部署到了阿里云ECS上,包含以下功能:不使用任何第三方工具,直接用网页连接阿里云ECS使用GIT进行源码控制和上传到服务器使用githooks实现自动部署用的是时下比较流行的一套部署方案——Nginx,Gunicorn,virtua</div> </li> <li><a href="/article/1892310040220594176.htm" title="Java零基础入门笔记:(3)程序控制" target="_blank">Java零基础入门笔记:(3)程序控制</a> <span class="text-muted">Sherlock Ma</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Java%E5%85%A5%E9%97%A8/1.htm">Java入门</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">学习方法</a><a class="tag" taget="_blank" href="/search/%E6%94%B9%E8%A1%8C%E5%AD%A6it/1.htm">改行学it</a><a class="tag" taget="_blank" href="/search/%E8%B7%B3%E6%A7%BD/1.htm">跳槽</a> <div>前言本笔记是学习狂神的java教程,建议配合视频,学习体验更佳。【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibiliScanner对象之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。Scanner类是Java中的一个实用工具类,位于java.util包中,主要用于从用户输入、文件或其他输入源中读取数据。它提</div> </li> <li><a href="/article/1892310042296774656.htm" title="Java零基础入门笔记:(4)方法" target="_blank">Java零基础入门笔记:(4)方法</a> <span class="text-muted">Sherlock Ma</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Java%E5%85%A5%E9%97%A8/1.htm">Java入门</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">学习方法</a><a class="tag" taget="_blank" href="/search/%E6%94%B9%E8%A1%8C%E5%AD%A6it/1.htm">改行学it</a><a class="tag" taget="_blank" href="/search/%E8%B7%B3%E6%A7%BD/1.htm">跳槽</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a> <div>前言本笔记是学习狂神的java教程,建议配合视频,学习体验更佳。【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili第1-2章:Java零基础入门笔记:(1-2)入门(简介、基础知识)-CSDN博客第3章:Java零基础入门笔记:(3)程序控制-CSDN博客--方法何谓方法Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象</div> </li> <li><a href="/article/1892303334145060864.htm" title="Java Pjsip (Pjsua2 api ) 2.10 windows sip语音呼叫教程" target="_blank">Java Pjsip (Pjsua2 api ) 2.10 windows sip语音呼叫教程</a> <span class="text-muted">java_lilin</span> <a class="tag" taget="_blank" href="/search/pjsip/1.htm">pjsip</a><a class="tag" taget="_blank" href="/search/pjsip/1.htm">pjsip</a><a class="tag" taget="_blank" href="/search/sip/1.htm">sip</a><a class="tag" taget="_blank" href="/search/pjsua2/1.htm">pjsua2</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/sip/1.htm">sip</a> <div>1.安装swigwin-4.0.1下载地址http://www.swig.org/download.html注意是swigwinWindowsusersshoulddownloadswigwin-4.0.1whichincludesaprebuiltexecutable.配置目录到winpath2.下载pjproject-2.10.zip(如果有python错误请安装py2.7及环境path配置)</div> </li> <li><a href="/article/1892290846301155328.htm" title="Steamworks:Steamworks数字版权管理(DRM)技术教程_2024-07-25_01-07-07.Tex" target="_blank">Steamworks:Steamworks数字版权管理(DRM)技术教程_2024-07-25_01-07-07.Tex</a> <span class="text-muted">chenjj4003</span> <a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%912/1.htm">游戏开发2</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E5%8F%B7%E5%A4%84%E7%90%86/1.htm">信号处理</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a> <div>Steamworks:Steamworks数字版权管理(DRM)技术教程Steamworks数字版权管理(DRM)教程1.1SteamworksDRM概述SteamworksDRM,或称为数字版权管理,是Steam平台提供的一项服务,旨在保护游戏开发者的作品不被非法复制和分发。通过使用SteamworksDRM,开发者可以确保他们的游戏只能在通过Steam合法购买的用户中运行,从而维护了游戏的版权</div> </li> <li><a href="/article/1892290591388135424.htm" title="Oculus SDK:Oculus集成Unity开发环境_2024-07-26_05-43-25.Tex" target="_blank">Oculus SDK:Oculus集成Unity开发环境_2024-07-26_05-43-25.Tex</a> <span class="text-muted">chenjj4003</span> <a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/1.htm">游戏开发</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/1.htm">游戏引擎</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a><a class="tag" taget="_blank" href="/search/mr/1.htm">mr</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>OculusSDK:Oculus集成Unity开发环境OculusSDK:Oculus集成Unity开发环境环境准备Unity版本选择在开始集成OculusSDK到Unity开发环境之前,选择正确的Unity版本至关重要。OculusSDK支持特定版本的Unity,因此确保你的Unity版本与OculusSDK兼容是必要的。截至撰写本教程时,Oculus建议使用Unity2020.3.14f1或更</div> </li> <li><a href="/article/1892279125322821632.htm" title="(01)ES6 教程——let与const、解构赋值、Symbol" target="_blank">(01)ES6 教程——let与const、解构赋值、Symbol</a> <span class="text-muted">欲游山河十万里</span> <a class="tag" taget="_blank" href="/search/web%E6%A1%86%E6%9E%B6%E5%AD%A6%E4%B9%A0/1.htm">web框架学习</a><a class="tag" taget="_blank" href="/search/es6/1.htm">es6</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>前言ES6,全称ECMAScript6.0,是JavaScript的下一个版本标准,2015.06发版。ES6主要是为了解决ES5的先天不足,比如JavaScript里并没有类的概念,但是目前浏览器的JavaScript是ES5版本,大多数高版本的浏览器也支持ES6,不过只实现了ES6的部分特性和功能。ECMAScript的背景JavaScript是大家所了解的语言名称,但是这个语言名称是商标(O</div> </li> <li><a href="/article/1892266139636002816.htm" title="autojs使用nodejs调用sqlite数据库" target="_blank">autojs使用nodejs调用sqlite数据库</a> <span class="text-muted">牙叔教程</span> <a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a><a class="tag" taget="_blank" href="/search/autojs/1.htm">autojs</a><a class="tag" taget="_blank" href="/search/sqlite/1.htm">sqlite</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>牙叔教程简单易懂依赖"nodejs";require("rhino").install();const{device}=require("device");constpath=require("path");constfs=require("fs");constutil=require("util");constSQLiteDatabase=android.database.sqlite.SQLi</div> </li> <li><a href="/article/1892257438686572544.htm" title="【开源免费】基于Vue和SpringBoot的医院后台管理系统(附论文)" target="_blank">【开源免费】基于Vue和SpringBoot的医院后台管理系统(附论文)</a> <span class="text-muted">杨荧</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>本文项目编号T170,文末自助获取源码\color{red}{T170,文末自助获取源码}T170,文末自助获取源码目录一、系统介绍二、数据库设计三、配套教程3.1启动教程3.2讲解视频3.3二次开发教程四、功能截图五、文案资料5.1选题背景5.2国内外研究现状六、核心代码6.1查询数据6.2新增数据6.3删除数据一、系统介绍在管理员功能模块确定下来的基础上,对管理员各个功能进行设计,确定管理员功</div> </li> <li><a href="/article/1892256428417150976.htm" title="Python从0到100(四):Python中的运算符介绍(补充)" target="_blank">Python从0到100(四):Python中的运算符介绍(补充)</a> <span class="text-muted">是Dream呀</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0到100最新</div> </li> <li><a href="/article/1892256429172125696.htm" title="Python从0到100(三十五):beautifulsoup的学习" target="_blank">Python从0到100(三十五):beautifulsoup的学习</a> <span class="text-muted">是Dream呀</span> <a class="tag" taget="_blank" href="/search/Dream%E7%9A%84%E8%8C%B6%E8%AF%9D%E4%BC%9A/1.htm">Dream的茶话会</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/beautifulsoup/1.htm">beautifulsoup</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0到100最新</div> </li> <li><a href="/article/1892255923271954432.htm" title="教程 | Ventoy全攻略:2025最新安装与使用教程,打造万能多系统启动盘" target="_blank">教程 | Ventoy全攻略:2025最新安装与使用教程,打造万能多系统启动盘</a> <span class="text-muted">The god of big data</span> <a class="tag" taget="_blank" href="/search/%E6%95%99%E7%A8%8B/1.htm">教程</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E5%99%A8%EF%BC%9F%E4%B8%89%E5%8F%89%E6%88%9F%EF%BC%9F/1.htm">神器?三叉戟?</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E7%B3%BB%E7%BB%9F/1.htm">虚拟系统</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a> <div>一、Ventoy简介与核心优势Ventoy是一款开源免费的多系统启动盘工具,支持Windows、Linux、macOS等操作系统及各类维护工具。其最大特点是无需反复格式化U盘,只需将ISO/WIM/IMG等镜像文件直接拷贝至U盘即可启动,且支持LegacyBIOS与UEFI双模式。相较于传统工具,Ventoy的优势包括:多系统兼容性:支持超1000种ISO镜像,涵盖主流操作系统及工具(如Windo</div> </li> <li><a href="/article/1892255924115009536.htm" title="软路由折腾 | OpenWrt安装后基础配置指南:联网设置与DNS优化" target="_blank">软路由折腾 | OpenWrt安装后基础配置指南:联网设置与DNS优化</a> <span class="text-muted">The god of big data</span> <a class="tag" taget="_blank" href="/search/%E6%95%99%E7%A8%8B/1.htm">教程</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E7%B3%BB%E7%BB%9F/1.htm">虚拟系统</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8F%AF%E4%BB%A5%E6%98%AF%E9%AD%94%E6%B3%95%E4%B9%8B%E5%9C%B0/1.htm">网络可以是魔法之地</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>在PVE中安装OpenWrt教程一、网络基础配置1.确认网络接口角色OpenWrt旁路由通常仅需配置LAN口,无需WAN口。其流量通过主路由转发,因此需确保:物理连接:OpenWrt的LAN口(如eth0)桥接到主路由的局域网(通过PVE的vmbr1)IP规划:旁路由IP需与主路由同网段(如主路由192.168.1.1,旁路由设为192.168.1.2)2.验证初始网络连通性登录OpenWrt管理</div> </li> <li><a href="/article/1892235849773412352.htm" title="怎么使用DeepSeek?DeepSeek使用教程" target="_blank">怎么使用DeepSeek?DeepSeek使用教程</a> <span class="text-muted">轻创思维</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>1.简介DeepSeek是一款基于人工智能技术的智能搜索引擎和信息检索工具。它能够通过自然语言处理技术理解用户的查询需求,并提供精准、全面的搜索结果。无论您是想查找信息、解答问题还是进行创意写作,DeepSeek都能为您提供高效的支持。2.主要功能智能搜索:支持自然语言输入,快速获取精准结果。多语言支持:支持中文、英文及其他多种语言的输入和输出。知识库覆盖:整合海量互联网信息,覆盖百科、新闻、学术</div> </li> <li><a href="/article/1892197899433996288.htm" title="macOS M2 安装 Jax (jax-metal)" target="_blank">macOS M2 安装 Jax (jax-metal)</a> <span class="text-muted">丽英y</span> <a class="tag" taget="_blank" href="/search/%E5%AE%9E%E8%B7%B5%E7%AC%94%E8%AE%B0/1.htm">实践笔记</a><a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/jax/1.htm">jax</a><a class="tag" taget="_blank" href="/search/jax-metal/1.htm">jax-metal</a><a class="tag" taget="_blank" href="/search/mac/1.htm">mac</a><a class="tag" taget="_blank" href="/search/metal/1.htm">metal</a><a class="tag" taget="_blank" href="/search/sonama/1.htm">sonama</a><a class="tag" taget="_blank" href="/search/mps/1.htm">mps</a> <div>Apple官方教程:AcceleratedJAXonMachttps://developer.apple.com/metal/jax/使用pipinstalljax或pipinstalljax-metal安装Jax后,运行验证代码:python-c'importjax;print(jax.numpy.arange(10))'会提示loc("-":0:0):error:currentmpsdiale</div> </li> <li><a href="/article/1892194370057203712.htm" title="使用 Docker 部署 Apache Spark 集群教程" target="_blank">使用 Docker 部署 Apache Spark 集群教程</a> <span class="text-muted">努力的小T</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>简介ApacheSpark是一个强大的统一分析引擎,用于大规模数据处理。本文将详细介绍如何使用Docker和DockerCompose快速部署一个包含一个Master节点和两个Worker节点的Spark集群。这种方法不仅简化了集群的搭建过程,还提供了资源隔离、易于扩展等优势。前置条件在开始之前,请确保你的环境中已经准备好了以下组件:安装并运行DockerEngine。安装DockerCompos</div> </li> <li><a href="/article/1892194371290329088.htm" title="Vue学习教程-11数组变化监测" target="_blank">Vue学习教程-11数组变化监测</a> <span class="text-muted">番茄番茄君</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>文章目录前言一、vue侦听响应数组变更方法二、使用Vue.set或者this.$set三、替换数组总结前言在Vue中,数组变化监测是其响应式系统的一个重要特性。Vue2.x版本中,当使用Vue.set或者this.$set,或者在初始化时就声明好数组的每个元素或者调用数组方法,可以确保数组的变更能够被Vue检测到并触发视图的更新。然而,在某些情况下,直接通过索引修改数组元素,例如array[ind</div> </li> <li><a href="/article/1892189831174352896.htm" title="如何让C++程序自动生成dump文件?以及如何分析dump文件?" target="_blank">如何让C++程序自动生成dump文件?以及如何分析dump文件?</a> <span class="text-muted">dvlinker</span> <a class="tag" taget="_blank" href="/search/C%2FC%2B%2B%E5%AE%9E%E6%88%98%E4%B8%93%E6%A0%8F/1.htm">C/C++实战专栏</a><a class="tag" taget="_blank" href="/search/C%2FC%2B%2B%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%AE%9E%E6%88%98/1.htm">C/C++软件开发从入门到实战</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%88%90dump%E6%96%87%E4%BB%B6/1.htm">生成dump文件</a><a class="tag" taget="_blank" href="/search/windbg/1.htm">windbg</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E6%9E%90dump%E6%96%87%E4%BB%B6/1.htm">分析dump文件</a> <div>目录1、API函数SetUnhandledExceptionFilter介绍2、调用SetUnhandledExceptionFilter设置异常处理函数3、调用MiniDumpWriteDump函数导出包含异常上下文的dump文件4、dump文件的多种生成方式5、使用Windbg分析dump文件6、最后C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https:/</div> </li> <li><a href="/article/1892185803124174848.htm" title="【TVM教程】为 x86 CPU 自动调优卷积网络" target="_blank">【TVM教程】为 x86 CPU 自动调优卷积网络</a> <span class="text-muted"></span> <div>ApacheTVM是一个深度的深度学习编译框架,适用于CPU、GPU和各种机器学习加速芯片。更多TVM中文文档可访问→https://tvm.hyper.ai/作者:YaoWang,EddieYan本文介绍如何为x86CPU调优卷积神经网络。注意,本教程不会在Windows或最新版本的macOS上运行。如需运行,请将本教程的主体放在if__name__=="__main__":代码块中。impor</div> </li> <li><a href="/article/1892181506210721792.htm" title="瑞_23种设计模式_中介者模式" target="_blank">瑞_23种设计模式_中介者模式</a> <span class="text-muted">瑞486</span> <a class="tag" taget="_blank" href="/search/23%E7%A7%8D%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">23种设计模式</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E4%BB%8B%E8%80%85%E6%A8%A1%E5%BC%8F/1.htm">中介者模式</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>文章目录1中介者模式(MediatorPattern)1.1介绍1.2概述1.3中介者模式的结构1.4中介者模式的优缺点1.5中介者模式的使用场景2案例一2.1需求2.2代码实现3案例二3.1需求3.2代码实现前言:本文章为瑞_系列专栏之《23种设计模式》的中介者模式篇。本文中的部分图和概念等资料,来源于博主学习设计模式的相关网站《菜鸟教程|设计模式》和《黑马程序员Java设计模式详解》,特此注明</div> </li> <li><a href="/article/1892181126005452800.htm" title="Java(JavaEE)学习线路图" target="_blank">Java(JavaEE)学习线路图</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/JAVA/1.htm">JAVA</a> <div>Java学习线路图Java教程Java教程Java简介Java开发环境配置Java基础语法Java对象和类Java基本数据类型Java变量类型Java修饰符Java运算符Java循环结构Java分支结构JavaNumber类JavaCharacter类JavaString类JavaStringBuffer和StringBuilder类Java数组Java日期和时间Java正则表达式Java方法Ja</div> </li> <li><a href="/article/1892178351330750464.htm" title="Python编程基础教程:量化交易入门" target="_blank">Python编程基础教程:量化交易入门</a> <span class="text-muted">AI天才研究院</span> <a class="tag" taget="_blank" href="/search/AI%E5%AE%9E%E6%88%98/1.htm">AI实战</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">AI大模型企业级应用开发实战</a><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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/RPA/1.htm">RPA</a> <div>1.背景介绍市场数据信息是每天都在更新,人们对市场变化的快速反应、精准把握、及时行动和判断将成为未来金融领域的一项重要任务。而传统的方式仍然是依赖于传统的报表分析和定期股票投资策略。如何用程序实现量化交易,并且实时跟踪和分析市场数据是本文将要讨论的重点。一般来说,以下五种程序语言被认为是最适合进行量化交易的语言:Python:是一个通用的高级编程语言,具有简单、易学习、可读性强等特点。其中有很多成</div> </li> <li><a href="/article/60.htm" title="Dom" target="_blank">Dom</a> <span class="text-muted">周华华</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&q</div> </li> <li><a href="/article/187.htm" title="【Spark九十六】RDD API之combineByKey" target="_blank">【Spark九十六】RDD API之combineByKey</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a> <div>1. combineByKey函数的运行机制   RDD提供了很多针对元素类型为(K,V)的API,这些API封装在PairRDDFunctions类中,通过Scala隐式转换使用。这些API实现上是借助于combineByKey实现的。combineByKey函数本身也是RDD开放给Spark开发人员使用的API之一   首先看一下combineByKey的方法说明:</div> </li> <li><a href="/article/314.htm" title="msyql设置密码报错:ERROR 1372 (HY000): 解决方法详解" target="_blank">msyql设置密码报错:ERROR 1372 (HY000): 解决方法详解</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E7%BD%AE%E5%AF%86%E7%A0%81/1.htm">设置密码</a> <div>MySql给用户设置权限同时指定访问密码时,会提示如下错误: ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number;   问题原因:你输入的密码是明文。不允许这么输入。   解决办法:用select password('你想输入的密码');查询出你的密码对应的字符串, 然后</div> </li> <li><a href="/article/441.htm" title="路漫漫其修远兮 吾将上下而求索" target="_blank">路漫漫其修远兮 吾将上下而求索</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0+%E6%80%9D%E7%B4%A2/1.htm">学习 思索</a> <div>王国维在他的《人间词话》中曾经概括了为学的三种境界古今之成大事业、大学问者,罔不经过三种之境界。“昨夜西风凋碧树。独上高楼,望尽天涯路。”此第一境界也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境界也。“众里寻他千百度,蓦然回首,那人却在灯火阑珊处。”此第三境界也。学习技术,这也是你必须经历的三种境界。第一层境界是说,学习的路是漫漫的,你必须做好充分的思想准备,如果半途而废还不如不要开始。这里,注</div> </li> <li><a href="/article/568.htm" title="Hadoop(二)对话单的操作" target="_blank">Hadoop(二)对话单的操作</a> <span class="text-muted">朱辉辉33</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>Debug: 1、 A = LOAD '/user/hue/task.txt' USING PigStorage(' ') AS (col1,col2,col3); DUMP A; //输出结果前几行示例: (>ggsnPDPRecord(21),,) (-->recordType(0),,) (-->networkInitiation(1),,) </div> </li> <li><a href="/article/695.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/%E6%8A%A5%E8%A1%A8%E5%B7%A5%E5%85%B7/1.htm">报表工具</a><a class="tag" taget="_blank" href="/search/web%E5%BC%80%E5%8F%91/1.htm">web开发</a> <div>web报表工具FineReport常用函数的用法总结(日期和时间函数)   说明:凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd。而且必须用英文环境下双引号(" ")引用。   DATE DATE(year,month,day):返回一个表示某一特定日期的系列数。 Year:代表年,可为一到四位数。 Month:代表月份。</div> </li> <li><a href="/article/822.htm" title="c++ 宏定义中的##操作符" target="_blank">c++ 宏定义中的##操作符</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a> <div>#与##在宏定义中的--宏展开 #include <stdio.h> #define f(a,b) a##b #define g(a)   #a #define h(a) g(a) int main() {       &nbs</div> </li> <li><a href="/article/949.htm" title="分析Spring源代码之,DI的实现" target="_blank">分析Spring源代码之,DI的实现</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/DI/1.htm">DI</a><a class="tag" taget="_blank" href="/search/%E7%8E%B0/1.htm">现</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E4%BB%A3%E7%A0%81/1.htm">源代码</a> <div>(转) 分析Spring源代码之,DI的实现 2012/1/3 by tony                 接着上次的讲,以下这个sample [java]  view plain copy print </div> </li> <li><a href="/article/1076.htm" title="for循环的进化" target="_blank">for循环的进化</a> <span class="text-muted">alxw4616</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>// for循环的进化 // 菜鸟 for (var i = 0; i < Things.length ; i++) { // Things[i] } // 老鸟 for (var i = 0, len = Things.length; i < len; i++) { // Things[i] } // 大师 for (var i = Things.le</div> </li> <li><a href="/article/1203.htm" title="网络编程Socket和ServerSocket简单的使用" target="_blank">网络编程Socket和ServerSocket简单的使用</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80/1.htm">网络编程基础</a><a class="tag" taget="_blank" href="/search/IP%E5%9C%B0%E5%9D%80%E7%AB%AF%E5%8F%A3/1.htm">IP地址端口</a> <div>  网络编程;TCP/IP协议   网络:实现计算机之间的信息共享,数据资源的交换   协议:数据交换需要遵守的一种协议,按照约定的数据格式等写出去   端口:用于计算机之间的通信      每运行一个程序,系统会分配一个编号给该程序,作为和外界交换数据的唯一标识 0~65535   查看被使用的</div> </li> <li><a href="/article/1330.htm" title="JDK1.5 生产消费者" target="_blank">JDK1.5 生产消费者</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/%E7%94%9F%E4%BA%A7%E6%B6%88%E8%B4%B9%E8%80%85/1.htm">生产消费者</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a> <div>ArrayBlockingQueue:        一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列检索操作则是从队列头部开始获得元素。 ArrayBlockingQueue的常用方法: </div> </li> <li><a href="/article/1457.htm" title="JAVA版身份证获取性别、出生日期及年龄" target="_blank">JAVA版身份证获取性别、出生日期及年龄</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/%E6%80%A7%E5%88%AB/1.htm">性别</a><a class="tag" taget="_blank" href="/search/%E5%87%BA%E7%94%9F%E6%97%A5%E6%9C%9F/1.htm">出生日期</a><a class="tag" taget="_blank" href="/search/%E5%B9%B4%E9%BE%84/1.htm">年龄</a> <div>        工作中需要根据身份证获取性别、出生日期及年龄,且要还要支持15位长度的身份证号码,网上搜索了一下,经过测试好像多少存在点问题,干脆自已写一个。 CertificateNo.java package com.bijian.study; import java.util.Calendar; import </div> </li> <li><a href="/article/1584.htm" title="【Java范型六】范型与枚举" target="_blank">【Java范型六】范型与枚举</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>首先,枚举类型的定义不能带有类型参数,所以,不能把枚举类型定义为范型枚举类,例如下面的枚举类定义是有编译错的   public enum EnumGenerics<T> { //编译错,提示枚举不能带有范型参数 OK, ERROR; public <T> T get(T type) { return null; </div> </li> <li><a href="/article/1711.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>1. log_format 1.1 log_format指令用于指定日志的格式,格式:   log_format name(格式名称) type(格式样式)   1.2 如下是一个常用的Nginx日志格式:   log_format main '[$time_local]|$request_time|$status|$body_bytes</div> </li> <li><a href="/article/1838.htm" title="Lua 语言 15 分钟快速入门" target="_blank">Lua 语言 15 分钟快速入门</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/lua+%E5%9F%BA%E7%A1%80/1.htm">lua 基础</a> <div>- - 单行注释 - - [[      [多行注释] - - ]]   - - - - - - - - - - - 1. 变量 & 控制流 - - - - - - - - - - num = 23 - - 数字都是双精度 str = 'aspythonstring' </div> </li> <li><a href="/article/1965.htm" title="java-35.求一个矩阵中最大的二维矩阵 ( 元素和最大 )" target="_blank">java-35.求一个矩阵中最大的二维矩阵 ( 元素和最大 )</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>the idea is from: http://blog.csdn.net/zhanxinhang/article/details/6731134 public class MaxSubMatrix { /**see http://blog.csdn.net/zhanxinhang/article/details/6731134 * Q35 求一个矩阵中最大的二维</div> </li> <li><a href="/article/2092.htm" title="mongoDB文档型数据库特点" target="_blank">mongoDB文档型数据库特点</a> <span class="text-muted">开窍的石头</span> <a class="tag" taget="_blank" href="/search/mongoDB%E6%96%87%E6%A1%A3%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93%E7%89%B9%E7%82%B9/1.htm">mongoDB文档型数据库特点</a> <div>MongoDD: 文档型数据库存储的是Bson文档-->json的二进制 特点:内部是执行引擎是js解释器,把文档转成Bson结构,在查询时转换成js对象。 mongoDB传统型数据库对比    传统类型数据库:结构化数据,定好了表结构后每一个内容符合表结构的。也就是说每一行每一列的数据都是一样的    文档型数据库:不用定好数据结构,</div> </li> <li><a href="/article/2219.htm" title="[毕业季节]欢迎广大毕业生加入JAVA程序员的行列" target="_blank">[毕业季节]欢迎广大毕业生加入JAVA程序员的行列</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>     一年一度的毕业季来临了。。。。。。。。      正在投简历的学弟学妹们。。。如果觉得学校推荐的单位和公司不适合自己的兴趣和专业,可以考虑来我们软件行业,做一名职业程序员。。。      软件行业的开发工具中,对初学者最友好的就是JAVA语言了,网络上不仅仅有大量的</div> </li> <li><a href="/article/2346.htm" title="PHP操作Excel – PHPExcel 基本用法详解" target="_blank">PHP操作Excel – PHPExcel 基本用法详解</a> <span class="text-muted">cuiyadll</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/Excel/1.htm">Excel</a> <div>导出excel属性设置//Include classrequire_once('Classes/PHPExcel.php');require_once('Classes/PHPExcel/Writer/Excel2007.php');$objPHPExcel = new PHPExcel();//Set properties 设置文件属性$objPHPExcel->getProperties</div> </li> <li><a href="/article/2473.htm" title="IBM Webshpere MQ Client User Issue (MCAUSER)" target="_blank">IBM Webshpere MQ Client User Issue (MCAUSER)</a> <span class="text-muted">darrenzhu</span> <a class="tag" taget="_blank" href="/search/IBM/1.htm">IBM</a><a class="tag" taget="_blank" href="/search/jms/1.htm">jms</a><a class="tag" taget="_blank" href="/search/user/1.htm">user</a><a class="tag" taget="_blank" href="/search/MQ/1.htm">MQ</a><a class="tag" taget="_blank" href="/search/MCAUSER/1.htm">MCAUSER</a> <div>IBM MQ JMS Client去连接远端MQ Server的时候,需要提供User和Password吗? 答案是根据情况而定,取决于所定义的Channel里面的属性Message channel agent user identifier (MCAUSER)的设置。 http://stackoverflow.com/questions/20209429/how-mca-user-i</div> </li> <li><a href="/article/2600.htm" title="网线的接法" target="_blank">网线的接法</a> <span class="text-muted">dcj3sjt126com</span> <div>一、PC连HUB (直连线)A端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。 B端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。 二、PC连PC (交叉线)A端:(568A): 白绿,绿,白橙,蓝,白蓝,橙,白棕,棕; B端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。 三、HUB连HUB&nb</div> </li> <li><a href="/article/2727.htm" title="Vimium插件让键盘党像操作Vim一样操作Chrome" target="_blank">Vimium插件让键盘党像操作Vim一样操作Chrome</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a> <div>什么是键盘党? 键盘党是指尽可能将所有电脑操作用键盘来完成,而不去动鼠标的人。鼠标应该说是新手们的最爱,很直观,指哪点哪,很听话!不过常常使用电脑的人,如果一直使用鼠标的话,手会发酸,因为操作鼠标的时候,手臂不是在一个自然的状态,臂肌会处于绷紧状态。而使用键盘则双手是放松状态,只有手指在动。而且尽量少的从鼠标移动到键盘来回操作,也省不少事。 在chrome里安装 vimium 插件 </div> </li> <li><a href="/article/2854.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%E6%9F%A5%E8%AF%A2%E6%95%B0%E7%BB%84/1.htm">MongoDB查询数组</a> <div>MongoDB查询数组 转载请出自出处:http://eksliang.iteye.com/blog/2177292 一、概述  MongoDB查询数组与查询标量值是一样的,例如,有一个水果列表,如下所示: > db.food.find() { "_id" : "001", "fruits" : [ "苹</div> </li> <li><a href="/article/2981.htm" title="cordova读写文件(1)" target="_blank">cordova读写文件(1)</a> <span class="text-muted">gundumw100</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Cordova/1.htm">Cordova</a> <div>使用cordova可以很方便的在手机sdcard中读写文件。 首先需要安装cordova插件:file 命令为: cordova plugin add org.apache.cordova.file 然后就可以读写文件了,这里我先是写入一个文件,具体的JS代码为: var datas=null;//datas need write var directory=&</div> </li> <li><a href="/article/3108.htm" title="HTML5 FormData 进行文件jquery ajax 上传 到又拍云" target="_blank">HTML5 FormData 进行文件jquery ajax 上传 到又拍云</a> <span class="text-muted">ileson</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/FormData/1.htm">FormData</a> <div>html5 新东西:FormData  可以提交二进制数据。 页面test.html <!DOCTYPE> <html> <head> <title> formdata file jquery ajax upload</title> </head> <body> <</div> </li> <li><a href="/article/3235.htm" title="swift appearanceWhenContainedIn:(version1.2 xcode6.4)" target="_blank">swift appearanceWhenContainedIn:(version1.2 xcode6.4)</a> <span class="text-muted">啸笑天</span> <a class="tag" taget="_blank" href="/search/version/1.htm">version</a> <div>  swift1.2中没有oc中对应的方法: + (instancetype)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass, ... NS_REQUIRES_NIL_TERMINATION;  解决方法: 在swift项目中新建oc类如下: #import &</div> </li> <li><a href="/article/3362.htm" title="java实现SMTP邮件服务器" target="_blank">java实现SMTP邮件服务器</a> <span class="text-muted">macroli</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a> <div>电子邮件传递可以由多种协议来实现。目前,在Internet 网上最流行的三种电子邮件协议是SMTP、POP3 和 IMAP,下面分别简单介绍。   ◆ SMTP 协议   简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是一个运行在TCP/IP之上的协议,用它发送和接收电子邮件。SMTP 服务器在默认端口25上监听。SMTP客户使用一组简单的、基于文本的</div> </li> <li><a href="/article/3489.htm" title="mongodb group by having where 查询sql" target="_blank">mongodb group by having where 查询sql</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/mongo/1.htm">mongo</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a> <div>SELECT cust_id, SUM(price) as total FROM orders WHERE status = 'A' GROUP BY cust_id HAVING total > 250 db.orders.aggregate( [ { $match: { status: 'A' } }, { $group: { </div> </li> <li><a href="/article/3616.htm" title="Struts2 Pojo(六)" target="_blank">Struts2 Pojo(六)</a> <span class="text-muted">Luob.</span> <a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/strust2/1.htm">strust2</a> <div>注意:附件中有完整案例 1.采用POJO对象的方法进行赋值和传值 2.web配置 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee&q</div> </li> <li><a href="/article/3743.htm" title="struts2步骤" target="_blank">struts2步骤</a> <span class="text-muted">wuai</span> <a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a> <div>1、添加jar包 2、在web.xml中配置过滤器 <filter>        <filter-name>struts2</filter-name>        <filter-class>org.apache.st</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>