11 Flask mega-tutorial 第11章 美化页面 Facelift

如需转载请注明出处。
win10 64位、Python 3.6.3、Notepad++、Chrome 67.0.3396.99(正式版本)(64 位)
注:作者编写时间2018-02-13,linux、python 3.5.2

以下内容均是加入自己的理解与增删,以记录学习过程。不限于翻译,部分不完全照搬作者Miguel Grinberg的博客,版权属于作者,感谢他提供免费学习的资料。

传送门
00 开篇 01 Hello world 02 模板 03 Web表单
04 数据库 05 用户登录 06 个人资料和头像 07 错误处理
08 关注 09 分页 10 支持QQ邮箱 11 美化页面
12 时间和日期 13 I18n和L10n 翻译成中文 zh-CN 14 Ajax(百度翻译API 15 更好的App结构(蓝图)
16 全文搜索 17 部署到腾讯云Ubuntu 18 部署到Heroku 19 部署到Docker容器
20 JavaScript魔法 21 用户通知 22 后台工作(Redis) 23 应用程序编程接口(API)
本章将学习基于 Bootstrap用户界面框架的模板替换基础的HTML模板。(bootstrap,译作 引导

这个Microblog应用程序已有一段时间了,或许已经注意到,并没有花时间来美化它的页面。所有的模板是使用的基础样式,没有自定义样式。这对于我们来说非常有用,可以专注于应用程序的实际逻辑,不用分心去编写好看的HTML和CSS代码。

目前已经专注于应用程序的后端部分有一段时间了。因此,本章将暂停一下,并花一些时间来学习 如何使应用程序看起来更加精致、专业。

本章将与之前的章节略有不同,因为不会像往常那样详细地关注Python方面。创建漂亮的网页是一个很大的主题,而与Python web后端开发很大程度上无关,因此将讨论一些基本指导和想法,将重新设计应用的外观来研究和学习它。

CSS框架

虽然我们可以说 编码很难,但与网页设计师相比,我们的痛苦还是无足轻重的,毕竟网页设计师必须让网页在所有Web浏览器上呈现良好一致外观的模板。近年来,变得越来越好,但在某些浏览器上仍然存在一些模糊的错误或奇怪的设定,使得设计网页的任务还是很困难。如果还要兼容屏幕限制设备(如平板电脑、智能手机)上的浏览器,则更加困难。

如果你像我一样,只是一个想创建规范网页的开发人员,没有时间或兴趣去学习底层机制,并通过编写原生HTML和CSS来实现它,那么唯一可行的解决方案是使用CSS框架来简化任务。通过这条路径,将失去一些操作自由,但另一方面,我们的网页在所有浏览器中会看起来很不错,而也不需要花费太多精力。CSS框架为普通类型的用户界面元素提供了高级CSS类的集合,其中包含预定义样式。这些框架中的大多数还为 不能使用HTML和CSS严格执行的操作提供JavaScript插件。

介绍Bootstrap

最受欢迎的一个CSS框架是由Twitter建立的Bootstrap。如果想看使用这个框架设计的页面类型,可查看文档中的示例。

使用Bootstrap为网页设置样式的好处:

  1. 在所有主流Web浏览器上看起来相似;
  2. 处理台式机、平板电脑、手机屏幕尺寸;
  3. 可定制布局;
  4. 风格精美的导航栏、表单、按钮、提示、弹出窗口等。

使用Bootstrap最直接方法是在基础模板中导入 bootstrap.min.css文件。可以下载这个文件副本,并将其添加到项目中;也可以直接从CDN导入(这里查看)。然后,可以根据文档开始使用它提供的通用CSS类。还可以导入包含框架JavaScript代码的bootstrap.min.js文件,以便使用更高级的功能。

幸运的是,有一个名为 Flask-Bootstrap的Flask扩展,它提供一个随时可用的基本模板,它安装了Bootstrap框架。安装这个扩展:版本3.3.7.1;附带安装dominate 2.3.1(用于使用优雅的DOM API创建和操作HTML文档)、visitor 0.1.3(一个微型Pythonic访客实现)。

(venv) D:\microblog>pip install flask-bootstrap
Collecting flask-bootstrap
  Using cached https://files.pythonhosted.org/packages/88/53/958ce7c2aa26280b7fd7f3eecbf13053f1302ee2acb1db58ef32e1c23c2a/Flask-Bootstrap-3.3.7.1.tar.gz
Requirement already satisfied: Flask>=0.8 in d:\microblog\venv\lib\site-packages (from flask-bootstrap)
Collecting dominate (from flask-bootstrap)
  Using cached https://files.pythonhosted.org/packages/43/b2/3b7d67dd59dab93ae08569384b254323516e8868b453eea5614a53835baf/dominate-2.3.1.tar.gz
Collecting visitor (from flask-bootstrap)
  Using cached https://files.pythonhosted.org/packages/d7/58/785fcd6de4210049da5fafe62301b197f044f3835393594be368547142b0/visitor-0.1.3.tar.gz
Requirement already satisfied: click>=5.1 in d:\microblog\venv\lib\site-packages (from Flask>=0.8->flask-bootstrap)
Requirement already satisfied: itsdangerous>=0.24 in d:\microblog\venv\lib\site-packages (from Flask>=0.8->flask-bootstrap)
Requirement already satisfied: Werkzeug>=0.14 in d:\microblog\venv\lib\site-packages (from Flask>=0.8->flask-bootstrap)
Requirement already satisfied: Jinja2>=2.10 in d:\microblog\venv\lib\site-packages (from Flask>=0.8->flask-bootstrap)
Requirement already satisfied: MarkupSafe>=0.23 in d:\microblog\venv\lib\site-packages (from Jinja2>=2.10->Flask>=0.8->flask-bootstrap)
Installing collected packages: dominate, visitor, flask-bootstrap
  Running setup.py install for dominate ... done
  Running setup.py install for visitor ... done
  Running setup.py install for flask-bootstrap ... done
Successfully installed dominate-2.3.1 flask-bootstrap-3.3.7.1 visitor-0.1.3

使用Flask-Bootstrap

Flask-Bootstrap和大多数其他Flask扩展一样,需要进行初始化:

app/__init__.py:添加Flask-Bootstrap实例

# ...
from flask_bootstrap import Bootstrap

app = Flask(__name__)
# ...
mail = Mail(app)
bootstrap = Bootstrap(app)

#...

初始化扩展后,bootstrap/base.html模板变为可用,并可以使用extends子句从应用程序模板中引用。

但是记得,我已经使用了extends子句继承自己的基础模板,这允许将页面的公共部分放在一个地方。我的 base.html模板定义了导航栏,其中包含一些链接,还导出了一个content块。目前为止,应用程序中所有其他模板都是从基础模板继承,并为content块提供页面的主要内容。

那么,该如何适应 Bootstrap基础模板呢?想法是使用三级层次结构,而不是两层。bootstrap/base.html模板提供页面的基本结构,其中包含Bootstrap框架文件。这个模板 为了派生模板导出几个块,如titlenavbarcontent(查看完整的 块列表)。我将更改我的base.html模板,让它从bootstrap/base.html模板派生,并为titlenavbarcontent块提供实现。反过来,base.html将为了它派生模板去定义页面内容而导出自己的app_content块。

下方将看到base.html在修改后如何从Bootstrap基础模板继承。
app/templates/base.html:重新设计基础模板

{% extends "bootstrap/base.html" %}

{% block title %}
	{% if title %}
		{{ title }} - Microblog
	{% else %}
		Welcome to Microblog
	{% endif %}
{% endblock %}

{% block navbar %}
	
{% endblock %}

{% block content %}
	
{% with messages = get_flashed_messages() %} {% if messages %} {% for message in messages %} {% endfor %} {% endif %} {% endwith %} {# application content needs to be provided in the app_content block #} {% block app_content %}{% endblock %}
{% endblock %}

在上述代码中,可看到如何从bootstrap/base.html派生这个模板,然后分别实现页面标题、导航栏、页面内容 三个块。

title 块 使用 </code>标签 定义将用于页面标题的文本。对于个块,只是移动了在原始基础模板中<code><title></code>标签内的逻辑。</p> <p><code>navbar 块</code> 是可选块,可用于定义导航栏。对于这个块,在Bootstrap导航栏文档中的改写了这个示例,以便它在左端包含站点标记,接着是 Home 和Explore链接。然后,添加了与页面右边框对齐的Profile和Login或Logout链接。</p> <p>最后,在<code>content块</code>中定义了一个顶级容器,在其中编写了渲染 闪烁消息的逻辑,现在它们显示为Bootstrap警报。接着是一个新的<code>app_content块</code>,它被定义为 只有派生模板才能定义它们自己的内容。</p> <p>所有页面模板的原始版本 都在名为<code>content</code>的块中定义它们的内容。如上所示,名为<code>content</code>的块被Flask-Bootstrap所使用,因此将内容块 重命名为<code>app_content</code>。所以,我们所有的模板都必须重命名才能去使用app_content块 作为它们的内容块。例如,如下是<code>404.html</code>模板 如何修改版本的演示:</p> <pre><code>{% extends "base.html" %} {% block app_content %} <h1>File Not Found</h1> <p> <a href="{{ url_for('index') }}">Back</a> </p> {% endblock %} </code></pre> <p>剩余的所有其他模板一一按上例修改即可。</p> <h1>渲染Bootstarp表单</h1> Flask-Bootstrap有一个很棒的工作是渲染表单。Flask-Bootstrap不用逐一设置表单字段的样式,而是附带一个宏(macro),它接受一个Flask-WTF表单对象作为参数,并使用Bootstrap样式呈现完整的表单。 <p>下方将看到重新设计的<code>register.html</code>模板作为一个示例:<br> <b>app/templates/register.html</b>:</p> <pre><code>{% extends "base.html" %} {% import 'bootstrap/wtf.html' as wtf %} {% block app_content %} <h1>Register</h1> <div class="row"> <div class="col-md-4"> {{ wtf.quick_form(form) }} </div> </div> {% endblock %} </code></pre> <p>上述代码中,在顶部声明的<code>import</code>工作原理与在模板上边的一个Python <code>import</code>类似。这还添加了一个<code>wtf.quick_form()</code>宏,它在一行简单代码中呈现完整的表单,包括支持显示验证错误,并且所有样式都适合Bootstrap框架。</p> <p>以下展示为应用程序中的<code>其他表单</code>所做的更改:<br> <b>app/templates/edit_profile.html</b></p> <pre><code>{% extends "base.html" %} {% import 'bootstrap/wtf.html' as wtf %} {% block app_content %} <h1>Edit Profile</h1> <div class="row"> <div class="col-md-4"> {{ wtf.quick_form(form) }} </div> </div> {% endblock %} </code></pre> <p><b>app/templates/index.html</b></p> <pre><code>{% extends "base.html" %} {% import 'bootstrap/wtf.html' as wtf %} {% block app_content %} <h1>Hello,{{ current_user.username }}!</h1> {% if form %} {{ wtf.quick_form(form) }} <br> {% endif %} {% for post in posts %} {% include '_post.html' %} {% endfor %} <nav aria-label="..."> <ul class="pager"> <li class="previous{% if not prev_url %} disabled{% endif %}"> <a href="{{ prev_url or '#' }}"> <span aria-hidden="true">←</span> Newer posts </a> </li> <li class="next{% if not next_url %} disabled{% endif %}"> <a href="{{ next_url or '#' }}"> Older posts <span aria-hidden="true">→</span> </a> </li> </ul> </nav> {% endblock %} </code></pre> <p><b>app/templates/login.html</b></p> <pre><code>{% extends "base.html" %} {% import 'bootstrap/wtf.html' as wtf %} {% block app_content %} <h1>Sign In</h1> <div class="row"> <div class="col-md-4"> {{ wtf.quick_form(form) }} </div> </div> <br> <p>New User? <a href="{{ url_for('register') }}">Click to Register!</a></p> <p> Forgot Your Password? <a href="{{ url_for('reset_password_request') }}">Click to Reset It</a> </p> {% endblock %} </code></pre> <p><b>app/templates/reset_password.html</b></p> <pre><code>{% extends "base.html" %} {% import 'bootstrap/wtf.html' as wtf %} {% block app_content %} <h1>Reset Your Password</h1> <div class="row"> <div class="col-md-4"> {{ wtf.quick_form(form) }} </div> </div> {% endblock %} </code></pre> <p><b>app/templates/reset_password_request.html</b></p> <pre><code>{% extends "base.html" %} {% import 'bootstrap/wtf.html' as wtf %} {% block app_content %} <h1>Reset Password</h1> <div class="row"> <div class="col-md-4"> {{ wtf.quick_form(form) }} </div> </div> {% endblock %} </code></pre> <p><b>app/templates/user.html</b></p> <pre><code>{% extends "base.html" %} {% block app_content %} <table class="table table-hover"> <tr> <td width="256px"><img src="{{ user.avatar(256) }}"></td> <td> <h1>User:{{ user.username }}</h1> {% if user.about_me %} <p>{{ user.about_me }}</p> {% endif %} {% if user.last_seen %} <p>Last seen on:{{ user.last_seen }}</p> {% endif %} {% if user == current_user %} <p> <a href="{{ url_for('edit_profile') }}">Edit your profile</a> </p> {% elif not current_user.is_following(user) %} <p> <a href="{{ url_for('follow', username=user.username) }}">Follow</a> </p> {% else %} <p> <a href="{{ url_for('unfollow', username=user.username) }}">Unfollow</a> </p> {% endif %} </td> </tr> </table> {% for post in posts %} {% include '_post.html' %} {% endfor%} <nav aria-label="..."> <ul class="pager"> <li class="previous{% if not prev_url %} disabled{% endif %}"> <a href="{{ prev_url or '#' }}"> <span aria-hidden="true">←</span> Newer posts </a> </li> <li class="next{% if not next_url %} disabled{% endif %}"> <a href="{{ next_url or '#' }}"> Older posts <span aria-hidden="true">→</span> </a> </li> </ul> </nav> {% endblock%} </code></pre> <h1>博客帖子的渲染</h1> 呈现单个博客帖子的表示逻辑被抽象为 名为`_post.html`的子模板。对其小调整,以便在Bootstrap下看起来更好。 <b>app/templates/_post.html</b>: <pre><code><table class="table table-hover"> <tr> <td width="70px"> <a href="{{ url_for('user', username=post.author.username) }}"> <img src="{{ post.author.avatar(70) }}" /> </a> </td> <td> <a href="{{ url_for('user', username=post.author.username) }}"> {{ post.author.username }} </a> says: <br> {{ post.body }} </td> </tr> </table> </code></pre> <h1>渲染分页链接</h1> 分页链接是Bootstrap提供支持的另一个领域。为此,再一次参考Bootstrap[文档](https://getbootstrap.com/docs/3.3/components/#optional-disabled-state),并调整其中一个示例。 <b>app/templates/index.html</b>:重新设计的分页链接 ``` ... <nav> <ul class="pager"> <li class="previous{% if not prev_url %} disabled{% endif %}"> ← Newer posts </li> <li><pre><code> <li class="next{% if not next_url %} disabled{% endif %}"> <a href="{{ next_url or '#' }}"> Older posts <span aria-hidden="true">→</span> </a> </li> </ul> </nav> </code></pre> </li> </ul> </nav> <p>{% endblock %}</p> <pre><code>不过注意,在上述实现中,当某个方向没有更多内容时,将运用禁用状态,而不是隐藏下一个或上一个链接,这将使链接显示为灰色。 类似的更改也需要运用于`user.html`,这个更改在上一小节上展示了。 最终效果呈现: ![这里写图片描述](https://img-blog.csdn.net/20180822201005329?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODI1NjQ3NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 目前为止,项目结构: <pre>microblog/ app/ templates/ email/ reset_password.html reset_password.txt _post.html 404.html 500.html base.html edit_profile.html index.html login.html register.html reset_password.html reset_password_request.html user.html __init__.py email.py errors.py forms.py models.py routes.py logs/ microblog.log migrations/ venv/ app.db config.py microblog.py tests.py </pre> 参考: [作者博客](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xi-facelift) <font color=red>如需转载请注明出处。</font> </code></pre> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1590486847476310016"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Python,3.X,flask,Flask,mega-tutorial,Facelift,flask,flask,web,python,web开发)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1898276124958453760.htm" title="python爬虫是什么架构_Python爬虫是什么?常用框架有哪些?" target="_blank">python爬虫是什么架构_Python爬虫是什么?常用框架有哪些?</a> <span class="text-muted">weixin_39596090</span> <a class="tag" taget="_blank" href="/search/python%E7%88%AC%E8%99%AB%E6%98%AF%E4%BB%80%E4%B9%88%E6%9E%B6%E6%9E%84/1.htm">python爬虫是什么架构</a> <div>大家都知道python是一门多岗位编程语言,学习python之后可以从事的岗位有很多,python爬虫便在其中,不过很多人对python不是很了解,所以也不知道python爬虫是什么,接下来带着你的疑问小编为大家介绍一下。Python是一门非常适合开发网络爬虫的编程语言,相比于其他静态编程语言,Python抓取网页文档的接口更简洁;相比于其他动态脚本语言,Python的urllib2包提供了较为完</div> </li> <li><a href="/article/1898271318109908992.htm" title="WebSocket的详解" target="_blank">WebSocket的详解</a> <span class="text-muted">小陆不会敲代码</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>文章目录前言一、WebSocket是什么?二、WebSocket使用示例前端部分(JavaScript)后端部分(Node.js示例)三、WebSocket心跳机制前端心跳示例后端心跳检测示例(Node.js)四、WebSocket常用事件:五、WebSocket使用场景五、总结前言WebSocket是一种网络通信协议,它提供了一个全双工的通信通道,允许服务器与客户端之间进行实时数据交换。与传统的</div> </li> <li><a href="/article/1898271304226762752.htm" title="【深度学习】服务器常见命令" target="_blank">【深度学习】服务器常见命令</a> <span class="text-muted">红烧白开水。</span> <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/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>1、虚拟环境的安装位置先进入虚拟环境whichpython2、升序查看文件内容ls-ltr3、查看服务器主机空间使用情况df-hdf-h.4、查看本地空间使用情况du-sh./*du-sh*|sort-nr5、查找并删除进程#查找psaux#删除kill-KILLpid6、查看服务器配置lscpuuname-alsb_release-acat/etc/*release7、文件和目录操作ls:列出目</div> </li> <li><a href="/article/1898271050169380864.htm" title="Triplet Loss原理及 Python实现" target="_blank">Triplet Loss原理及 Python实现</a> <span class="text-muted">AIGC_ZY</span> <a class="tag" taget="_blank" href="/search/Diffusion/1.htm">Diffusion</a><a class="tag" taget="_blank" href="/search/Models/1.htm">Models</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>Tripletloss最初是谷歌在FaceNet:AUnifiedEmbeddingforFaceRecognitionandClustering论文中提出的,可以学到较好的人脸的embeddingTripletLoss是一种用于训练特征嵌入(featureembedding)的损失函数,广泛应用于人脸识别、图像检索等需要度量相似性的任务。其核心思想是通过学习将同类样本的嵌入距离拉近,不同类样本的</div> </li> <li><a href="/article/1898266209627992064.htm" title="Selenium库打开指定端口(9222、9333等)浏览器【已解决!!!】" target="_blank">Selenium库打开指定端口(9222、9333等)浏览器【已解决!!!】</a> <span class="text-muted">我是神哥</span> <a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E6%8C%87%E5%AE%9A%E7%AB%AF%E5%8F%A3/1.htm">指定端口</a><a class="tag" taget="_blank" href="/search/%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">谷歌浏览器</a> <div>就是在写动态爬虫爬取数据的过程中,如果用selenium的话,有一个缺点,就是当我们去测试一个网站能不能爬取,它都会重新换端口打开一个浏览器,不会使用上一次使用的浏览器,在实际使用过程中这样调试很烦,总是会重新打开而不是就用上一次打开过的调试。所以我就在想,怎么让它每一次都打开同一个浏览器呢?刚开始,借鉴网上都是这种:importtimefromseleniumimportwebdriverfro</div> </li> <li><a href="/article/1898265058362847232.htm" title="Python和C++计算物理光学波形化学结构数学方程" target="_blank">Python和C++计算物理光学波形化学结构数学方程</a> <span class="text-muted">亚图跨际</span> <a class="tag" taget="_blank" href="/search/C%2FC%2B%2B/1.htm">C/C++</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E7%90%86/1.htm">物理</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E7%90%86/1.htm">物理</a><a class="tag" taget="_blank" href="/search/%E5%8C%96%E5%AD%A6/1.htm">化学</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%A6/1.htm">数学</a><a class="tag" taget="_blank" href="/search/%E6%96%B9%E7%A8%8B/1.htm">方程</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%80%BC%E8%AE%A1%E7%AE%97/1.htm">数值计算</a> <div>要点Python|C++代码化排序索引和计算:冒泡排序,升序排序,快速排序,索引排序,基于索引数组的排名,基于直接插入的两个键索引,两个相关数组的索引。数学计算1:数据集升序排列后,生成索引和排名。数学计算2:一定量序列排序后,生成得新索引表,并绘制原始序列。计算3:一定量序列进行冒泡排序,插入排序,快速排序,绘制一张图显示三种排序依赖性,分别定性评估小型和广泛序列的排序算法的性能。Python|</div> </li> <li><a href="/article/1898261783072796672.htm" title="329.大学生HTML期末大作业 —【纪念鲁迅文化主题网页】 Web前端网页制作 html+css" target="_blank">329.大学生HTML期末大作业 —【纪念鲁迅文化主题网页】 Web前端网页制作 html+css</a> <span class="text-muted">一只小小的眠羊</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">大学生期末大作业</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E5%8C%96/1.htm">文化</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</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><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a> <div>目录一、更多推荐二、网页简介三、网页文件四、网页效果五、代码展示1.html2.CSS六、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强一、更多推荐欢迎来到我的CSDN主页!您的支持是我创作的动力!Web前端网页制作、网页完整代码、大学生期末大作业案例模板完整代码、技术交流等,有兴趣的联系我交流学习!更多优质博客文章、网页模板点击以下链接查阅:仙女网页设计-CSDN博客5000+</div> </li> <li><a href="/article/1898257090846191616.htm" title="在 Ubuntu 下通过 Docker 部署 Caddy 和 PHP-FPM 服务器" target="_blank">在 Ubuntu 下通过 Docker 部署 Caddy 和 PHP-FPM 服务器</a> <span class="text-muted">reddingtons</span> <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/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a> <div>大家好,我是Hitch。今天我们来聊聊如何在Ubuntu上通过Docker部署Caddy和PHP-FPM服务器。简单来说,Caddy是一个现代化的web服务器,支持HTTPS,配置简单;而PHP-FPM则是处理PHP请求的高级进程管理器。这两个搭档组合在一起,能让你轻松搭建高效的web环境。软件介绍DockerDocker是一种容器化平台,可以让你将应用及其依赖打包到容器中,确保在不同环境中运行一</div> </li> <li><a href="/article/1898251409992773632.htm" title="python排版word文档 效率,【效率工具】用Python根据excel中数据批量生成word文档(适用劳..." target="_blank">python排版word文档 效率,【效率工具】用Python根据excel中数据批量生成word文档(适用劳...</a> <span class="text-muted">孤傲雕</span> <a class="tag" taget="_blank" href="/search/python%E6%8E%92%E7%89%88word%E6%96%87%E6%A1%A3/1.htm">python排版word文档</a><a class="tag" taget="_blank" href="/search/%E6%95%88%E7%8E%87/1.htm">效率</a> <div>【效率工具】用Python根据excel中数据批量生成word文档(适用劳【效率工具】用Python根据excel中数据批量生成word文档(适用劳动合同、通知书等应用场景)大家在工作中一定经常遇到类似的情况:1、制作劳动合同表,要从excel表格中将每个人的数据导入到docx劳动合同中,重复量很大。2、制作通知书,从excel表格中将每个人的数据分别填入到docx通知书中。3、制作XX方案,Wo</div> </li> <li><a href="/article/1898251283530313728.htm" title="【干货来了】2016年DevExpress资源汇总(示例、视频)" target="_blank">【干货来了】2016年DevExpress资源汇总(示例、视频)</a> <span class="text-muted">weixin_34357928</span> <div>2019独角兽企业重金招聘Python工程师标准>>>在2016年,著名软件界面解决方案专家DevExpress进行了重大升级,EVGET围绕版本升级推出了一系列干货资源,现将2016年所有Dev示例资源和视频资源汇总于此,欢迎收藏转发点赞哦~示例Demo(仍在持续更新……)DevExpressDashboard在线演示:分行业的营收分析DevExpressDashboard在线演示:客户服务管理</div> </li> <li><a href="/article/1898251280426528768.htm" title="python selenium兼容性_Selenium学习整理(Python)" target="_blank">python selenium兼容性_Selenium学习整理(Python)</a> <span class="text-muted">k程</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/selenium%E5%85%BC%E5%AE%B9%E6%80%A7/1.htm">selenium兼容性</a> <div>1准备软件SeleniumIDEfirebug-2.0.19.xpifirepath-0.9.7-fx.xpiFirefox_46.0.1.5966_setup.exe由于火狐浏览器高版本以后就不支持firebug,最好下载安装49版本以下的。selenium_ide-2.9.1.xpiWebDriverpipinstallseleniumchromedriver.exeIEDriverServe</div> </li> <li><a href="/article/1898249507078991872.htm" title="js逆向——webpack扣法" target="_blank">js逆向——webpack扣法</a> <span class="text-muted">sin_0119</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a> <div>01webpack讲解webpack是个静态模块打包工具,目的是为了让前端工程师写的前端代码变成浏览器可以识别的代码,并且可以达到前端项目的模块化,也就是如何更高效地管理和维护项目中的每一个资源。但无疑是对js逆向造成了妨碍。但如果掌握了扣取webpack的一些技巧也是不难的。接下来,说一下我对扣取webpack代码的一些理解。1.1webpack组成一个最基本的webpack组成有两个部分:自执</div> </li> <li><a href="/article/1898245187382079488.htm" title="pytest框架 核心知识的系统复习" target="_blank">pytest框架 核心知识的系统复习</a> <span class="text-muted">双子测试</span> <a class="tag" taget="_blank" href="/search/pytest/1.htm">pytest</a> <div>1.pytest介绍是什么:Python最流行的单元测试框架之一,支持复杂的功能测试和插件扩展。优点:语法简洁(用assert替代self.assertEqual)。自动发现测试用例。丰富的插件生态(如失败重试、并发执行、报告生成)。兼容unittest框架,比自带unittest框架更加简洁高效,在unittest框架迁移到pytest框架时不需要重写代码。适用场景:单元测试、接口测试、UI自动</div> </li> <li><a href="/article/1898244934327136256.htm" title="python:字典根据key排序" target="_blank">python:字典根据key排序</a> <span class="text-muted">双子测试</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>在Python中,字典是无序的,不支持直接按照键排序。但是可以通过以下方法实现字典按照键排序:方法一:使用sorted()函数和字典的items()方法my_dict={'b':2,'c':3,'a':1}sorted_dict={k:vfork,vinsorted(my_dict.items(),key=lambdaitem:item[0])}print(sorted_dict)这种方法使用了s</div> </li> <li><a href="/article/1898244931009441792.htm" title="WebRTC简介及实战应用 — 从0到1实现实时音视频聊天等功能" target="_blank">WebRTC简介及实战应用 — 从0到1实现实时音视频聊天等功能</a> <span class="text-muted">不怕麻烦的鹿丸</span> <a class="tag" taget="_blank" href="/search/HTML5/1.htm">HTML5</a><a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/WebRTC/1.htm">WebRTC</a><a class="tag" taget="_blank" href="/search/webrtc/1.htm">webrtc</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%97%B6%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">实时音视频</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div>一、WebRTC简介WebRTC是由一家名为GobalIPSolutions,简称GIPS的瑞典公司开发的。Google在2011年收购了GIPS,并将其源代码开源。然后又与IETF和W3C的相关标准机构合作,以确保行业达成共识。其中:WebReal-TimeCommunications(WEBRTC)W3C组织:定义浏览器API。Real-TimeCommunicationinWeb-brows</div> </li> <li><a href="/article/1898240129479274496.htm" title="Effective Python:(19)可变数量参数" target="_blank">Effective Python:(19)可变数量参数</a> <span class="text-muted">earthzhang2021</span> <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/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>EffectivePython:(19)可变数量参数EffectivePython本条涉及函数的参数的数量问题,虽然大多数情况下参数的数量和顺序都是预先设计好的,但是仍然有参数可变的函数,比如C语言常用的main函数的argv,这在格式化打印函数上也很常用,所以Python也需要支持。Python函数对于可变数量的参数的支持方式,类似于unpacking用法中的通配方式,即函数参数的最后位置的参数</div> </li> <li><a href="/article/1898240001943072768.htm" title="Python 核心语法解析:with 与 async/await_跟我一起学Python17" target="_blank">Python 核心语法解析:with 与 async/await_跟我一起学Python17</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><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>Python核心语法解析:with与async/await_跟我一起学Python17在Python的宇宙中,with语句与async/await语法成为构建现代化Python应用的基石。本文将从实际场景出发,深入剖析这两个核心语法的工作机制。您将看到with语句如何化身智能管家,通过上下文管理器实现资源的自动回收;领略async/await如何搭建异步编程的高速通道,用同步代码的书写方式达成非阻</div> </li> <li><a href="/article/1898240000378597376.htm" title="基于 Python 对百度热搜 “Manus 推出引发科技圈震动” 的数据分析" target="_blank">基于 Python 对百度热搜 “Manus 推出引发科技圈震动” 的数据分析</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/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a><a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%8A%80/1.htm">科技</a> <div>目录一、案例背景二、代码实现2.1数据收集2.2数据探索性分析2.3数据清洗2.4关键词提取与词频统计2.5情感分析(简单示例,实际可采用更复杂模型)2.6数据可视化三、主要的代码难点解析3.1数据收集3.2数据清洗-文本预处理3.3关键词提取与词频统计3.4情感分析3.5数据可视化四、可能改进的代码4.1数据收集改进4.2文本预处理改进4.3关键词提取改进4.4情感分析改进4.5可视化改进一、案</div> </li> <li><a href="/article/1898236848422055936.htm" title="如何使用 Python+Flask+win32print 实现简易网络打印服务" target="_blank">如何使用 Python+Flask+win32print 实现简易网络打印服务</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/flask/1.htm">flask</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/pytest/1.htm">pytest</a><a class="tag" taget="_blank" href="/search/web3.py/1.htm">web3.py</a><a class="tag" taget="_blank" href="/search/win32/1.htm">win32</a> <div>Python实现网络打印机:Flask+win32print在工作场景中,我们可能需要一个简单的网页接口,供他人上传文档并自动打印到指定打印机。本文将演示如何使用Python+Flask+win32print库来实现这一需求。代码详见:https://github.com/poboll/webprint1.环境准备Windows10/11Python3.8+打印机(已安装并可用)Flaskpywi</div> </li> <li><a href="/article/1898236468971761664.htm" title="解密网易云音乐Web端的请求参数params与encSecKey" target="_blank">解密网易云音乐Web端的请求参数params与encSecKey</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/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a> <div>网易云音乐作为一款功能强大的音乐流媒体平台,为用户提供了丰富的音乐体验和社区互动。然而,当用户希望批量下载音乐资源,尤其是整个歌单或某位歌手的全部歌曲时,受限于版权保护和平台策略,官方渠道通常无法直接实现这一需求。在这种情况下,一些技术爱好者或开发者可能会转向使用爬虫技术来获取所需资源。对于像网易云音乐这样通过加密请求参数(如params和encSecKey)来保护数据的平台,逆向工程成为解析这些</div> </li> <li><a href="/article/1898227896997179392.htm" title="WebRTC简介" target="_blank">WebRTC简介</a> <span class="text-muted">小柒的博客</span> <a class="tag" taget="_blank" href="/search/5.linux/1.htm">5.linux</a><a class="tag" taget="_blank" href="/search/webrtc/1.htm">webrtc</a> <div>WebRTC简介WebRTC(WebReal-TimeCommunication)是一种支持浏览器之间进行实时音视频通信和数据传输的开放标准和技术。它由Google发起,现已成为W3C和IETF的标准。WebRTC允许开发者在不依赖第三方插件或软件的情况下,直接在网页中实现点对点(P2P)的实时通信。直接在浏览器中运行,无需安装额外的插件或软件。WebRTC是开源技术,并且是W3C和IETF的标准</div> </li> <li><a href="/article/1898227393076719616.htm" title="提升Web可访问性的10个关键实践" target="_blank">提升Web可访问性的10个关键实践</a> <span class="text-muted">zsy_1991</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div>在当今互联网时代,确保网站的可访问性(Accessibility)已经成为开发者和设计师的重要任务之一。Web可访问性不仅有助于残障用户更好地访问和使用网站,还能提升整体用户体验。本文将介绍10个关键的Web可访问性实践,帮助你构建更加友好和包容的网站。1.使用语义化的HTML标签语义化的HTML标签不仅有助于搜索引擎优化(SEO),还能提升屏幕阅读器等辅助技术的理解能力。以下是一些常用的语义化标</div> </li> <li><a href="/article/1898227013743865856.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/%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0/1.htm">系统学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>目录文档测试练习小结文档测试如果你经常阅读Python的官方文档,可以看到很多文档都有示例代码。比如re模块就带了很多示例代码:>>>importre>>>m=re.search('(?>>m.group(0)'def'可以把这些示例代码在Python的交互式环境下输入并执行,结果与文档中的示例代码显示的一致。这些代码与其他说明可以写在注释中,然后,由一些工具来自动生成文档。既然这些代码本身就可以</div> </li> <li><a href="/article/1898225744690081792.htm" title="Python Web开发(三):HTTP请求的url路由" target="_blank">Python Web开发(三):HTTP请求的url路由</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/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>本文目录:一、要实现的目标二、创建项目app1.APP介绍2.创建APP三、返回页面内容给浏览器四、url路由1.添加路由记录1.1解决ERROR:Couldnotfindaversionthatsatisfiestherequirementxxx1.2启动web服务2.路由子表`【系列好文推荐】`前言:作者简介:是Dream呀,华为云享专家、CSDN原力计划作者、Python领域优质创作者,专注</div> </li> <li><a href="/article/1898224349119311872.htm" title="基于websocket搭建聊天室" target="_blank">基于websocket搭建聊天室</a> <span class="text-muted">不懂代码的孩子</span> <a class="tag" taget="_blank" href="/search/SpringBoot/1.htm">SpringBoot</a><a class="tag" taget="_blank" href="/search/lc/1.htm">lc</a><a class="tag" taget="_blank" href="/search/Vue/1.htm">Vue</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>基于websocket搭建聊天室1.后端配置1.依赖一个web一个websocketorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-websocket2.configimportorg.springframework.context.annotation.Bean;</div> </li> <li><a href="/article/1898224222614908928.htm" title="深入理解 Python 中的 copy 与 deepcopy 的使用" target="_blank">深入理解 Python 中的 copy 与 deepcopy 的使用</a> <span class="text-muted">web安全工具库</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>各类资料学习下载合集https://pan.quark.cn/s/8c91ccb5a474在Python中,数据的复制是一个重要的操作,尤其是在处理复杂数据结构(如列表、字典、集合等)时。copy和deepcopy是Python标准库copy模块提供的两种复制方法。它们之间有着明显的区别,理解这些区别对于避免潜在的错误和数据问题至关重要。本文将详细介绍copy和deepcopy的用法,包括代码示例</div> </li> <li><a href="/article/1898223590688485376.htm" title="python前景和待遇-Python就业前景怎么样?薪资待遇多少" target="_blank">python前景和待遇-Python就业前景怎么样?薪资待遇多少</a> <span class="text-muted">weixin_37988176</span> <div>Python就业前景怎么样?薪资待遇多少?Python上手容易,入门简单Python是一门面向对象的编程语言,编译速度超快。它具有丰富和强大的库,常被称为"胶水语言”,能够把用其他语言编写的各种模块(尤其是C/C)很轻松地联结在一起。其特点在于灵活运用,因为其拥有大量第三方库,所以开发人员不必重复造轮子,就像搭积木一样,只要擅于利用这些库就可以完成绝大部分工作。如果你想选择一种语言来入门编程,那么</div> </li> <li><a href="/article/1898221948710744064.htm" title="使用curl测试websocket服务是否能正常连入" target="_blank">使用curl测试websocket服务是否能正常连入</a> <span class="text-muted">tiguer</span> <a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a> <div>部分场景,前端连接不上websocket服务,需要从后台验证websocket服务是否能连入,判断防火墙是否开通,反向代理是否配置正确,可以使用curl测试服务器websocket服务是否正常。分行命令curl--include\--no-buffer\--header"Connection:Upgrade"\--header"Upgrade:websocket"\--header"Host:ex</div> </li> <li><a href="/article/1898220422214774784.htm" title="Python开发行业薪资多少?" target="_blank">Python开发行业薪资多少?</a> <span class="text-muted">Java大师兄-威哥</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/IT%E6%8A%80%E6%9C%AF/1.htm">IT技术</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/IT/1.htm">IT</a> <div>大家都知道,人工智能越来越受欢迎了。而Python由于简单易用,是人工智能领域中使用最广泛的编程语言之一,它可以无缝地与数据结构和其他常用的AI算法一起使用。Python开发行业薪资多少?我们看看图片就能知道个大概。无论是国内还是国外对于编程语言的热度调查中,Python都是数得上名的。Python热度的持续升温,自然也引起了开源团队的项目。由于OSI认可的开放源码许可,程序员可以使用Python</div> </li> <li><a href="/article/1898219286938316800.htm" title="UI自动化:Python + Selenium4.6+版本 环境搭建" target="_blank">UI自动化:Python + Selenium4.6+版本 环境搭建</a> <span class="text-muted">双子测试</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/python/1.htm">python</a> <div>以下是Python+Selenium4.12+环境搭建的详细步骤(无需手动下载浏览器驱动,利用SeleniumManager自动管理驱动):1.安装Python1.1下载并安装Python官网下载地址:DownloadPython|Python.org安装时勾选AddPythontoPATH(自动配置环境变量)。1.2验证Python安装bash复制python--version#输出Python</div> </li> <li><a href="/article/25.htm" title="Java实现的简单双向Map,支持重复Value" target="_blank">Java实现的简单双向Map,支持重复Value</a> <span class="text-muted">superlxw1234</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8F%8C%E5%90%91map/1.htm">双向map</a> <div>关键字:Java双向Map、DualHashBidiMap     有个需求,需要根据即时修改Map结构中的Value值,比如,将Map中所有value=V1的记录改成value=V2,key保持不变。   数据量比较大,遍历Map性能太差,这就需要根据Value先找到Key,然后去修改。   即:既要根据Key找Value,又要根据Value</div> </li> <li><a href="/article/152.htm" title="PL/SQL触发器基础及例子" target="_blank">PL/SQL触发器基础及例子</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/oracle%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">oracle数据库</a><a class="tag" taget="_blank" href="/search/%E8%A7%A6%E5%8F%91%E5%99%A8/1.htm">触发器</a><a class="tag" taget="_blank" href="/search/PL%2FSQL%E7%BC%96%E7%A8%8B/1.htm">PL/SQL编程</a> <div>  触发器的简介; 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。触发器和过程函数类似 过程函数必须要调用,   一个表中最多只能有12个触发器类型的,触发器和过程函数相似 触发器不需要调用直接执行, 触发时间:指明触发器何时执行,该值可取: before:表示在数据库动作之前触发</div> </li> <li><a href="/article/279.htm" title="[时空与探索]穿越时空的一些问题" target="_blank">[时空与探索]穿越时空的一些问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98/1.htm">问题</a> <div>       我们还没有进行过任何数学形式上的证明,仅仅是一个猜想.....       这个猜想就是; 任何有质量的物体(哪怕只有一微克)都不可能穿越时空,该物体强行穿越时空的时候,物体的质量会与时空粒子产生反应,物体会变成暗物质,也就是说,任何物体穿越时空会变成暗物质..(暗物质就我的理</div> </li> <li><a href="/article/406.htm" title="easy ui datagrid上移下移一行" target="_blank">easy ui datagrid上移下移一行</a> <span class="text-muted">商人shang</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/%E4%B8%8A%E7%A7%BB%E4%B8%8B%E7%A7%BB/1.htm">上移下移</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/datagrid/1.htm">datagrid</a> <div>/** * 向上移动一行 * * @param dg * @param row */ function moveupRow(dg, row) { var datagrid = $(dg); var index = datagrid.datagrid("getRowIndex", row); if (isFirstRow(dg, row)) {</div> </li> <li><a href="/article/533.htm" title="Java反射" target="_blank">Java反射</a> <span class="text-muted">oloz</span> <a class="tag" taget="_blank" href="/search/%E5%8F%8D%E5%B0%84/1.htm">反射</a> <div>本人菜鸟,今天恰好有时间,写写博客,总结复习一下java反射方面的知识,欢迎大家探讨交流学习指教 首先看看java中的Class package demo; public class ClassTest { /*先了解java中的Class*/ public static void main(String[] args) { //任何一个类都</div> </li> <li><a href="/article/660.htm" title="springMVC 使用JSR-303 Validation验证" target="_blank">springMVC 使用JSR-303 Validation验证</a> <span class="text-muted">杨白白</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a> <div>JSR-303是一个数据验证的规范,但是spring并没有对其进行实现,Hibernate Validator是实现了这一规范的,通过此这个实现来讲SpringMVC对JSR-303的支持。 JSR-303的校验是基于注解的,首先要把这些注解标记在需要验证的实体类的属性上或是其对应的get方法上。 登录需要验证类 public class Login { @NotEmpty</div> </li> <li><a href="/article/787.htm" title="log4j" target="_blank">log4j</a> <span class="text-muted">香水浓</span> <a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a> <div> log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, HTML, DATABASE #log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, ROLLINGFILE, HTML #console log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender log4</div> </li> <li><a href="/article/914.htm" title="使用ajax和history.pushState无刷新改变页面URL" target="_blank">使用ajax和history.pushState无刷新改变页面URL</a> <span class="text-muted">agevs</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</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/chrome/1.htm">chrome</a> <div>表现 如果你使用chrome或者firefox等浏览器访问本博客、github.com、plus.google.com等网站时,细心的你会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变。并且能够很好的支持浏览器前进和后退。 是什么有这么强大的功能呢? HTML5里引用了新的API,history.pushState和history.replaceState,就是通过</div> </li> <li><a href="/article/1041.htm" title="centos中文乱码" target="_blank">centos中文乱码</a> <span class="text-muted">AILIKES</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a> <div>一、CentOS系统访问 g.cn ,发现中文乱码。 于是用以前的方式:yum -y install fonts-chinese CentOS系统安装后,还是不能显示中文字体。我使用 gedit 编辑源码,其中文注释也为乱码。       后来,终于找到以下方法可以解决,需要两个中文支持的包: fonts-chinese-3.02-12.</div> </li> <li><a href="/article/1168.htm" title="触发器" target="_blank">触发器</a> <span class="text-muted">baalwolf</span> <a class="tag" taget="_blank" href="/search/%E8%A7%A6%E5%8F%91%E5%99%A8/1.htm">触发器</a> <div>触发器(trigger):监视某种情况,并触发某种操作。 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 语法: create trigger triggerName after/before </div> </li> <li><a href="/article/1295.htm" title="JS正则表达式的i m g" target="_blank">JS正则表达式的i m g</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</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> <div>        g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止。         i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写。         m:表示</div> </li> <li><a href="/article/1422.htm" title="HTML5模式和Hashbang模式" target="_blank">HTML5模式和Hashbang模式</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/Hashbang%E6%A8%A1%E5%BC%8F/1.htm">Hashbang模式</a><a class="tag" taget="_blank" href="/search/HTML5%E6%A8%A1%E5%BC%8F/1.htm">HTML5模式</a> <div>        我们可以用$locationProvider来配置$location服务(可以采用注入的方式,就像AngularJS中其他所有东西一样)。这里provider的两个参数很有意思,介绍如下。 html5Mode         一个布尔值,标识$location服务是否运行在HTML5模式下。 ha</div> </li> <li><a href="/article/1549.htm" title="[Maven学习笔记六]Maven生命周期" target="_blank">[Maven学习笔记六]Maven生命周期</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>从mvn test的输出开始说起   当我们在user-core中执行mvn test时,执行的输出如下:   /software/devsoftware/jdk1.7.0_55/bin/java -Dmaven.home=/software/devsoftware/apache-maven-3.2.1 -Dclassworlds.conf=/software/devs</div> </li> <li><a href="/article/1676.htm" title="【Hadoop七】基于Yarn的Hadoop Map Reduce容错" target="_blank">【Hadoop七】基于Yarn的Hadoop Map Reduce容错</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>运行于Yarn的Map Reduce作业,可能发生失败的点包括 Task Failure Application Master Failure Node Manager Failure Resource Manager Failure 1. Task Failure 任务执行过程中产生的异常和JVM的意外终止会汇报给Application Master。僵死的任务也会被A</div> </li> <li><a href="/article/1803.htm" title="记一次数据推送的异常解决端口解决" target="_blank">记一次数据推送的异常解决端口解决</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/%E8%AE%B0%E4%B8%80%E6%AC%A1%E6%95%B0%E6%8D%AE%E6%8E%A8%E9%80%81%E7%9A%84%E5%BC%82%E5%B8%B8%E8%A7%A3%E5%86%B3/1.htm">记一次数据推送的异常解决</a> <div>   需求:从db获取数据然后推送到B         程序开发完成,上jboss,刚开始报了很多错,逐一解决,可最后显示连接不到数据库。机房的同事说可以ping 通。     自已画了个图,逐一排除,把linux 防火墙 和 setenforce 设置最低。    service iptables stop </div> </li> <li><a href="/article/1930.htm" title="巧用视错觉-UI更有趣" target="_blank">巧用视错觉-UI更有趣</a> <span class="text-muted">brotherlamp</span> <a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/ui%E8%A7%86%E9%A2%91/1.htm">ui视频</a><a class="tag" taget="_blank" href="/search/ui%E6%95%99%E7%A8%8B/1.htm">ui教程</a><a class="tag" taget="_blank" href="/search/ui%E8%87%AA%E5%AD%A6/1.htm">ui自学</a><a class="tag" taget="_blank" href="/search/ui%E8%B5%84%E6%96%99/1.htm">ui资料</a> <div>我们每个人在生活中都曾感受过视错觉(optical illusion)的魅力。 视错觉现象是双眼跟我们开的一个玩笑,而我们往往还心甘情愿地接受我们看到的假象。其实不止如此,视觉错现象的背后还有一个重要的科学原理——格式塔原理。 格式塔原理解释了人们如何以视觉方式感觉物体,以及图像的结构,视角,大小等要素是如何影响我们的视觉的。 在下面这篇文章中,我们首先会简单介绍一下格式塔原理中的基本概念,</div> </li> <li><a href="/article/2057.htm" title="线段树-poj1177-N个矩形求边长(离散化+扫描线)" target="_blank">线段树-poj1177-N个矩形求边长(离散化+扫描线)</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%AE%B5%E6%A0%91/1.htm">线段树</a> <div>package com.ljn.base; import java.util.Arrays; import java.util.Comparator; import java.util.Set; import java.util.TreeSet; /** * POJ 1177 (线段树+离散化+扫描线),题目链接为http://poj.org/problem?id=1177 </div> </li> <li><a href="/article/2184.htm" title="HTTP协议详解" target="_blank">HTTP协议详解</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/http%E5%8D%8F%E8%AE%AE/1.htm">http协议</a> <div>引言                                 </div> </li> <li><a href="/article/2311.htm" title="Scala设计模式" target="_blank">Scala设计模式</a> <span class="text-muted">chenchao051</span> <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/scala/1.htm">scala</a> <div>Scala设计模式                我的话: 在国外网站上看到一篇文章,里面详细描述了很多设计模式,并且用Java及Scala两种语言描述,清晰的让我们看到各种常规的设计模式,在Scala中是如何在语言特性层面直接支持的。基于文章很nice,我利用今天的空闲时间将其翻译,希望大家能一起学习,讨论。翻译</div> </li> <li><a href="/article/2438.htm" title="安装mysql" target="_blank">安装mysql</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/%E5%AE%89%E8%A3%85/1.htm">安装</a> <div>安装mysql   (1)删除linux上已经安装的mysql相关库信息。rpm  -e  xxxxxxx   --nodeps (强制删除)      执行命令rpm -qa |grep mysql 检查是否删除干净   (2)执行命令  rpm -i MySQL-server-5.5.31-2.el</div> </li> <li><a href="/article/2565.htm" title="HTTP状态码大全" target="_blank">HTTP状态码大全</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/http%E7%8A%B6%E6%80%81%E7%A0%81/1.htm">http状态码</a> <div>完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在线查阅。HTTP 1.1的状态码被标记为新特性,因为许多浏览器只支持 HTTP 1.0。你应只把状态码发送给支持 HTTP 1.1的客户端,支持协议版本可以通过调用request</div> </li> <li><a href="/article/2692.htm" title="asihttprequest上传图片" target="_blank">asihttprequest上传图片</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/ASIHTTPRequest/1.htm">ASIHTTPRequest</a> <div>NSURL *url =@"yourURL"; ASIFormDataRequest*currentRequest =[ASIFormDataRequest requestWithURL:url]; [currentRequest setPostFormat:ASIMultipartFormDataPostFormat];[currentRequest se</div> </li> <li><a href="/article/2819.htm" title="C语言中,关键字static的作用" target="_blank">C语言中,关键字static的作用</a> <span class="text-muted">e200702084</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a> <div>在C语言中,关键字static有三个明显的作用: 1)在函数体,局部的static变量。生存期为程序的整个生命周期,(它存活多长时间);作用域却在函数体内(它在什么地方能被访问(空间))。 一个被声明为静态的变量在这一函数被调用过程中维持其值不变。因为它分配在静态存储区,函数调用结束后并不释放单元,但是在其它的作用域的无法访问。当再次调用这个函数时,这个局部的静态变量还存活,而且用在它的访</div> </li> <li><a href="/article/2946.htm" title="win7/8使用curl" target="_blank">win7/8使用curl</a> <span class="text-muted">geeksun</span> <a class="tag" taget="_blank" href="/search/win7/1.htm">win7</a> <div>1.  WIN7/8下要使用curl,需要下载curl-7.20.0-win64-ssl-sspi.zip和Win64OpenSSL_Light-1_0_2d.exe。 下载地址:  http://curl.haxx.se/download.html 请选择不带SSL的版本,否则还需要安装SSL的支持包   2.  可以给Windows增加c</div> </li> <li><a href="/article/3073.htm" title="Creating a Shared Repository; Users Sharing The Repository" target="_blank">Creating a Shared Repository; Users Sharing The Repository</a> <span class="text-muted">hongtoushizi</span> <a class="tag" taget="_blank" href="/search/git/1.htm">git</a> <div>转载自:   http://www.gitguys.com/topics/creating-a-shared-repository-users-sharing-the-repository/ Commands discussed in this section: git init –bare git clone git remote git pull git p</div> </li> <li><a href="/article/3200.htm" title="Java实现字符串反转的8种或9种方法" target="_blank">Java实现字符串反转的8种或9种方法</a> <span class="text-muted">Josh_Persistence</span> <a class="tag" taget="_blank" href="/search/%E5%BC%82%E6%88%96%E5%8F%8D%E8%BD%AC/1.htm">异或反转</a><a class="tag" taget="_blank" href="/search/%E9%80%92%E5%BD%92%E5%8F%8D%E8%BD%AC/1.htm">递归反转</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%88%86%E4%BA%A4%E6%8D%A2%E5%8F%8D%E8%BD%AC/1.htm">二分交换反转</a><a class="tag" taget="_blank" href="/search/java%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8F%8D%E8%BD%AC/1.htm">java字符串反转</a><a class="tag" taget="_blank" href="/search/%E6%A0%88%E5%8F%8D%E8%BD%AC/1.htm">栈反转</a> <div>注:对于第7种使用异或的方式来实现字符串的反转,如果不太看得明白的,可以参照另一篇博客: http://josh-persistence.iteye.com/blog/2205768   /** * */ package com.wsheng.aggregator.algorithm.string; import java.util.Stack; /** </div> </li> <li><a href="/article/3327.htm" title="代码实现任意容量倒水问题" target="_blank">代码实现任意容量倒水问题</a> <span class="text-muted">home198979</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%80%92%E6%B0%B4/1.htm">倒水</a> <div>形象化设计模式实战             HELLO!架构                     redis命令源码解析   倒水问题:有两个杯子,一个A升,一个B升,水有无限多,现要求利用这两杯子装C</div> </li> <li><a href="/article/3454.htm" title="Druid datasource" target="_blank">Druid datasource</a> <span class="text-muted">zhb8015</span> <a class="tag" taget="_blank" href="/search/druid/1.htm">druid</a> <div>推荐大家使用数据库连接池 DruidDataSource. http://code.alibabatech.com/wiki/display/Druid/DruidDataSource DruidDataSource经过阿里巴巴数百个应用一年多生产环境运行验证,稳定可靠。 它最重要的特点是:监控、扩展和性能。 下载和Maven配置看这里: http</div> </li> <li><a href="/article/3581.htm" title="两种启动监听器ApplicationListener和ServletContextListener" target="_blank">两种启动监听器ApplicationListener和ServletContextListener</a> <span class="text-muted">spjich</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a> <div>引言:有时候需要在项目初始化的时候进行一系列工作,比如初始化一个线程池,初始化配置文件,初始化缓存等等,这时候就需要用到启动监听器,下面分别介绍一下两种常用的项目启动监听器   ServletContextListener  特点: 依赖于sevlet容器,需要配置web.xml 使用方法: public class StartListener implements </div> </li> <li><a href="/article/3708.htm" title="JavaScript Rounding Methods of the Math object" target="_blank">JavaScript Rounding Methods of the Math object</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/Math/1.htm">Math</a> <div>    The next group of methods has to do with rounding decimal values into integers. Three methods — Math.ceil(),  Math.floor(), and  Math.round() — handle rounding in differen</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>