Flask开发系列之模板

Flask开发系列之模板

本文对《FlaskWeb开发:基于python的Web应用开发实战》模板一节做的总结。

Jinja2模板引擎

模板

模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请求的上下文中才能知道。使用真实值替代变量,再返回最终得到的响应字符串,这一过程成为渲染。

Jinja2模板引擎

官网地址

Jinja2是纯python编写的模板引擎,它和Django类似提供non-XML语法,除此之外还支持内联表达式和一个可选的沙箱环境。Jinja2遵守BSD开源协议。

Flask渲染模板使用的是Jinja2模板引擎,所以需要安装Jinja2,pip install Jinja2。

 

渲染模板

from flask import Flask,render_template

app = Flask(__name__)
@app.route('/')
def index():
    return render_template('index.html')

@app.route('/user/', methods=['GET'])
def reponse(name):
    print(name)
    return render_template('user.html', name=name)

if __name__ == '__main__':
    app.run(debug=True)
    # Flask提供的render_template函数把Jinja2模板引擎集成到了程序中。
    # render_template函数的第一个参数是模板的文件名。
    # 随后的参数都是键值对,表示模板中变量对应的真实值。

 

变量

模板中使用的{{ name }}结构表示一个变量,它是一种特殊的占位符,告诉模块引擎这个位置的值从渲染模板时使用的数据中获取。

Jinja2 能识别所有类型的变量,甚至是一些复杂的类型,例如列表、字典和对象。示例:

A value from a dictionary:{{ mydict['key']}}.

A value from a list:{{ mylist[3]}}.

A value from a list,with a variable index:{{ mylist[myintvar] }}.

A value from an object's method: {{ myobj.somemethod() }}.

Jinja2变量过滤器

过滤器名添加在变量之后,中间使用竖线分隔。
hello, {{ name|capitalize }}

完整过滤器列表

常用过滤器

过滤器名 说明
safe 渲染值时不转义
capitalize 把值得首字母转换成大写,其他字母转换成小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母都换成大写
trim 把值的首位空格去掉
striptags 渲染之前把值中所有的HTML标签都删掉

 

 

控制结构

条件控制结构

{% if user %}
    Hello,{{ user }}!
{% else %}
    Hello, Stranger!
{% endif %}
 

渲染一组元素

    {% for comment in comments %}
  • {{ comment }}
  • {% endfor %}

{{% macro render_comment(comment)%}}
    
  • {{ comment }}
  • {{ endmacro }}
      {% for comment in comments %} {{ render_comment(comment) }} {% endfor %}
    为了重复使用宏,保存在单独文件中,再在需要的模板中导入。 {% import 'macro.html' as macros %}
      {% for comment in comments%} {{ macros.render_comment(comment)}} {% endfor%}

    复用代码片段

    {% include 'common.html' %}

    模板继承

    - 建一个名为base.html的基模板
    
    
        {% block head %}
        {% block title %}{% endblock %} - My Application
        {% endblock %}
    
    
        {% block body %}
        {% endblock %}
    
    
     
    - 衍生模板中修改block标签定义的元素
    {% extends "base.html" %} #定义基模板
    {% block title%}Index{% endblock %} #修改title块内容
    {% block head %} #修改head块内容
        {{ super() }} #原来head中有内容,用super()获取原来的内容
        
    {% endblock %}
    {% block body %} #修改body块内容
    

    Hello, World!

    {% endblock %}

     

    使用Flask-Bootstrap集成Twitter Bootstrap

    Bootstrap(http://getbootstrap.com/)是 Twitter 开发的一个开源框架,它提供的用户界面组
    件可用于创建整洁且具有吸引力的网页,而且这些网页还能兼容所有现代 Web 浏览器。
    Bootstrap 是客户端框架,因此不会直接涉及服务器。服务器需要做的只是提供引用了
    Bootstrap 层 叠 样 式 表(CSS) 和 JavaScript 文 件 的 HTML 响 应, 并 在 HTML、CSS 和
    JavaScript 代码中实例化所需组件。这些操作最理想的执行场所就是模板。
    要想在程序中集成 Bootstrap,显然要对模板做所有必要的改动。不过,更简单的方法是
    使用一个名为 Flask-Bootstrap 的 Flask 扩展,简化集成的过程。Flask-Bootstrap 使用 pip
    安装:
    (venv) $ pip install flask-bootstrap

    Flask 扩展一般都在创建程序实例时初始化

    Flask-Bootstrap 的初始化方法

    from flask.ext.bootstrap import Bootstrap
    # ...
    bootstrap = Bootstrap(app)

    使用Flask-Bootstrap的模板

    初始化 Flask-Bootstrap 之后,就可以在程序中使用一个包含所有 Bootstrap 文件的基模板。
    这个模板利用 Jinja2 的模板继承机制,让程序扩展一个具有基本页面结构的基模板,其中
    就有用来引入 Bootstrap 的元素。
    {% extends "bootstrap/base.html" %}
     
    {% block title%}Flasky{% endblock %}
     
    {% block navbar %}
    
    class="navbar navbar-inverse" role="navigation">
    class='container'>
    class="navbar-header"> class="navbar-brand" href="/">Flasky
    class="navbar-collapse collapse">
      class="nav navbar-nav">
    • "/">
    {% endblock %} {% block content %}
    class="container">
    class="page-header">

    Hello,{{ name }}!

    {% endblock %} # 模板利用Bootstrap中的样式进行了修改
    Jinja2 中的 extends 指令从 Flask-Bootstrap 中导入 bootstrap/base.html,从而实现模板继
    承。Flask-Bootstrap 中的基模板提供了一个网页框架,引入了 Bootstrap 中的所有 CSS 和
    模板 | 25
    JavaScript 文件。
    基模板中定义了可在衍生模板中重定义的块。 block 和 endblock 指令定义的块中的内容可
    添加到基模板中。
    上面这个 user.html 模板定义了 3 个块,分别名为 title 、 navbar 和 content 。这些块都是
    基模板提供的,可在衍生模板中重新定义。 title 块的作用很明显,其中的内容会出现在
    渲染后的 HTML 文档头部,放在 <span style="color: #000000;"> 标签中。 navbar 和 content 这两个块分别表示页
    面中的导航条和主体内容。
    在这个模板中, navbar 块使用 Bootstrap 组件定义了一个简单的导航条。 content 块中有个
    </span><div><span style="color: #000000;"> 容器,其中包含一个页面头部。之前版本的模板中的欢迎信息,现在就放在这个页
    面头部。改动之后的程序如图 </span>3-1 所示。</pre> 
      </div> 
      <span class="cnblogs_code_collapse">详解</span> 
     </div> 
     <p><strong>Flask-Bootstrap基模板中定义的块</strong></p> 
     <table> 
      <thead> 
       <tr> 
        <th>块名</th> 
        <th>说明</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td>doc</td> 
        <td>整个HTML文档</td> 
       </tr> 
       <tr> 
        <td>html_attribs</td> 
        <td><html>标签的属性</td> 
       </tr> 
       <tr> 
        <td>html</td> 
        <td><html>标签中的内容</td> 
       </tr> 
       <tr> 
        <td>head</td> 
        <td><head>标签中的内容</td> 
       </tr> 
       <tr> 
        <td>title</td> 
        <td><title>标签中的内容</td> 
       </tr> 
       <tr> 
        <td>metas</td> 
        <td>一组标签</td> 
       </tr> 
       <tr> 
        <td>styles</td> 
        <td>层叠样式表定义</td> 
       </tr> 
       <tr> 
        <td>body_attribs</td> 
        <td><body>标签的属性</td> 
       </tr> 
       <tr> 
        <td>body</td> 
        <td><body>标签中的内容</td> 
       </tr> 
       <tr> 
        <td>navbar</td> 
        <td>用户定义的导航条</td> 
       </tr> 
       <tr> 
        <td>content</td> 
        <td>用户定义的页面内容</td> 
       </tr> 
       <tr> 
        <td>scripts</td> 
        <td>文档底部的JavaScript声明</td> 
       </tr> 
      </tbody> 
     </table> 
     <p> </p> 
     <p> </p> 
     <h1>自定义错误页面</h1> 
     <div class="cnblogs_code"> 
      <pre>利用Jinja2的模板继承机制可以让templates/base.html继承自bootstrap/base.html。</pre> 
     </div> 
     <div class="cnblogs_code"> 
      <pre>{% extends <span style="color: #800000;">"</span><span style="color: #800000;">bootstrap/base.html</span><span style="color: #800000;">"</span> %<span style="color: #000000;">}
     
    {</span>% block title %}Flasky{% endblock %<span style="color: #000000;">}
     
    {</span>% block navbar %<span style="color: #000000;">}
    </span><div <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">navbar navbar-inverse</span><span style="color: #800000;">"</span> role=<span style="color: #800000;">"</span><span style="color: #800000;">navigation</span><span style="color: #800000;">"</span>>
        <div <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">container</span><span style="color: #800000;">"</span>>
            <div <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">navbar-header</span><span style="color: #800000;">"</span>>
                <button type=<span style="color: #800000;">"</span><span style="color: #800000;">button</span><span style="color: #800000;">"</span> <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">navbar-toggle</span><span style="color: #800000;">"</span> data-toggle=<span style="color: #800000;">"</span><span style="color: #800000;">collapse</span><span style="color: #800000;">"</span> data-target=<span style="color: #800000;">"</span><span style="color: #800000;">.navbar-collapse</span><span style="color: #800000;">"</span>>
                    <span <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">sr-only</span><span style="color: #800000;">"</span>>Toggle navigation</span>
                    <span <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">icon-bar</span><span style="color: #800000;">"</span>></span>
                    <span <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">icon-bar</span><span style="color: #800000;">"</span>></span>
                    <span <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">icon-bar</span><span style="color: #800000;">"</span>></span>
                </button>
                <a <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">navbar-brand</span><span style="color: #800000;">"</span> href=<span style="color: #800000;">"</span><span style="color: #800000;">/</span><span style="color: #800000;">"</span>>Flasky</a>
            </div>
            <div <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">navbar-collapse collapse</span><span style="color: #800000;">"</span>>
                <ul <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">nav navbar-nav</span><span style="color: #800000;">"</span>>
                    <li><a href=<span style="color: #800000;">"</span><span style="color: #800000;">/</span><span style="color: #800000;">"</span>>Home</a></li>
                </ul>
            </div>
        </div>
    </div><span style="color: #000000;">
    {</span>% endblock %<span style="color: #000000;">}
     
    {</span>% block content %<span style="color: #000000;">}
    </span><div <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">container</span><span style="color: #800000;">"</span>><span style="color: #000000;">
        {</span>% block page_content %}{% endblock %<span style="color: #000000;">}
    </span></div><span style="color: #000000;">
    {</span>% endblock %<span style="color: #000000;">}
    程序现在使用的模板继承自templates</span>/base.html不是直接继承自Flask-Bootstrap的基模板。</pre> 
     </div> 
     <p> </p> 
     <div class="cnblogs_code"> 
      <pre>404错误页面:继承自templates/<span style="color: #000000;">base.html
    {</span>% extends <span style="color: #800000;">"</span><span style="color: #800000;">base.html</span><span style="color: #800000;">"</span> %<span style="color: #000000;">}
     
    {</span>% block title %}Flasky - Page Not Found{% endblock %<span style="color: #000000;">}
     
    {</span>% block page_content %<span style="color: #000000;">}
    </span><div <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">page-header</span><span style="color: #800000;">"</span>>
        <h1>Not Found</h1>
    </div><span style="color: #000000;">
    {</span>% endblock %<span style="color: #000000;">}
     
    user页面:继承自templates</span>/<span style="color: #000000;">base.html
    {</span>% extends <span style="color: #800000;">"</span><span style="color: #800000;">base.html</span><span style="color: #800000;">"</span> %<span style="color: #000000;">}
     
    {</span>% block title %}Flasky{% endblock %<span style="color: #000000;">}
     
    {</span>% block page_content %<span style="color: #000000;">}
    </span><div <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">page-header</span><span style="color: #800000;">"</span>>
        <h1>Hello, {{ name }}!</h1>
    </div><span style="color: #000000;">
    {</span>% endblock %}</pre> 
     </div> 
     <p> </p> 
     <h2>链接</h2> 
     <div class="cnblogs_code"> 
      <pre><span style="color: #000000;">Flask提供了url_for()辅助函数,它可以使用程序URL映射中保存的信息生成URL。
    url_for函数最简单的用法:以视图函数名作为参数,返回对应的URL。url_for(‘index’)得到的结果是’</span>/<span style="color: #000000;">’
    使用url_for生成动态地址时,将动态部分作为关键字参数传入。
    url_for(‘user’,name</span>=’john’,_external=<span style="color: #000000;">True)
    函数能将任何额外参数添加到查询字符串中。</span></pre> 
     </div> 
     <p> </p> 
     <p> </p> 
     <h2>静态文件</h2> 
     <div class="cnblogs_code"> 
      <pre><span style="color: #000000;">Web 程序不是仅由 Python 代码和模板组成。大多数程序还会使用静态文件,例如 HTML
    代码中引用的图片、JavaScript 源码文件和 CSS。</span></pre> 
     </div> 
     <div class="cnblogs_code"> 
      <pre><span style="color: #000000;">例如,调用
    url_for(</span><span style="color: #800000;">'</span><span style="color: #800000;">static</span><span style="color: #800000;">'</span>, filename=<span style="color: #800000;">'</span><span style="color: #800000;">css/styles.css</span><span style="color: #800000;">'</span>, _external=True) 得 到 的 结 果 是 http://<span style="color: #000000;">
    localhost:</span>5000/static/css/<span style="color: #000000;">styles.css。
    默认设置下,Flask 在程序根目录中名为 static 的子目录中寻找静态文件。如果需要,可在
    static 文件夹中使用子文件夹存放文件。服务器收到前面那个 URL 后,会生成一个响应,
    包含文件系统中 static</span>/css/styles.css 文件的内容。</pre> 
     </div> 
     <p>示例 展示了如何在程序的基模板中放置 favicon.ico 图标。这个图标会显示在浏览器的<br>地址栏中。</p> 
     <div class="cnblogs_code"> 
      <pre>{% block head %<span style="color: #000000;">}
    {{ super() }}
    </span><link rel=<span style="color: #800000;">"</span><span style="color: #800000;">shortcut icon</span><span style="color: #800000;">"</span> href=<span style="color: #800000;">"</span><span style="color: #800000;">{{ url_for('static', filename = 'favicon.ico') }}</span><span style="color: #800000;">"</span><span style="color: #000000;">
    type</span>=<span style="color: #800000;">"</span><span style="color: #800000;">image/x-icon</span><span style="color: #800000;">"</span>>
    <link rel=<span style="color: #800000;">"</span><span style="color: #800000;">icon</span><span style="color: #800000;">"</span> href=<span style="color: #800000;">"</span><span style="color: #800000;">{{ url_for('static', filename = 'favicon.ico') }}</span><span style="color: #800000;">"</span><span style="color: #000000;">
    type</span>=<span style="color: #800000;">"</span><span style="color: #800000;">image/x-icon</span><span style="color: #800000;">"</span>><span style="color: #000000;">
    {</span>% endblock %}</pre> 
     </div> 
     <p>图标的声明会插入 head 块的末尾。注意如何使用 super() 保留基模板中定义的块的原始<br>内容。</p> 
     <p> </p> 
    </div>
                                </div>
                            </div>
                        </div>
                        <!--PC和WAP自适应版-->
                        <div id="SOHUCS" sid="1177016737124659200"></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/1899349626687909888.htm"
                               title="ES6语法详解" target="_blank">ES6语法详解</a>
                            <span class="text-muted">八月五</span>
    <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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/es6/1.htm">es6</a>
                            <div>ES的全称是ECMAScript,它是由ECMA国际标准化组织,制定的一项脚本语言的标准化规范。ES6实际上是一个泛指,泛指ES2015及后续的版本。目录1.let关键字和const关键字let关键字const关键字2.解构赋值数组解构赋值对象解构赋值解构赋值用于传参3.字符串新增特性模板字符串字符串实例新增方法4.数值新增特性新增二进制和八进制表示方法Number构造函数本身新增方法和属性安全整</div>
                        </li>
                        <li><a href="/article/1899349242577743872.htm"
                               title="公务员行测之速算分数记忆检验-无答案版本" target="_blank">公务员行测之速算分数记忆检验-无答案版本</a>
                            <span class="text-muted">Lemon爱吃苹果</span>
    <a class="tag" taget="_blank" href="/search/%E5%85%AC%E5%8A%A1%E5%91%98/1.htm">公务员</a><a class="tag" taget="_blank" href="/search/%E5%85%AC%E5%8A%A1%E5%91%98/1.htm">公务员</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA/1.htm">计算机</a>
                            <div>前言为了提高速算速度,有一些分数是必须要记忆的,这个博客是为了检验自己记忆效果的,答案在下一篇博客上面,自己查看哟!!!速算之分数记忆检验12=%\frac{1}{2}=\%21=%13=%\frac{1}{3}=\%31=%14=%\frac{1}{4}=\%41=%15=%\frac{1}{5}=\%51=%16=%\frac{1}{6}=\%61=%17=%\frac{1}{7}=\%71=</div>
                        </li>
                        <li><a href="/article/1899338906982215680.htm"
                               title="vue脚手架" target="_blank">vue脚手架</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%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                            <div>Vue脚手架脚手架是官方提供的标准化开发工具。下载配置//全局安装vue的脚手架npminstall@vue/cli-g//在项目目录下开启一个脚手架vuecreate‘项目名’//进入项目目录,直接运行npmrunserve1.vue.js与vue.runtime.xxx.js的区别:(1).vue.js是完整版的Vue,包含:核心功能+模板解析器。(2).vue.runtime.xxx.js是</div>
                        </li>
                        <li><a href="/article/1899330208956215296.htm"
                               title="Python:每日一题之错误票据" target="_blank">Python:每日一题之错误票据</a>
                            <span class="text-muted">努力的敲码工</span>
    <a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a><a class="tag" taget="_blank" href="/search/%E6%AF%8F%E6%97%A5%E4%B8%80%E9%A2%98/1.htm">每日一题</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a>
                            <div>题目描述某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。假设断号不可能发生在最大和最小号。输入描述输入描述要求程序首先输入一个整数N(N<100)表示后面数据行数。接着读入N行数据</div>
                        </li>
                        <li><a href="/article/1899321628987289600.htm"
                               title="【春招笔试真题】饿了么2025.03.07-开发岗真题" target="_blank">【春招笔试真题】饿了么2025.03.07-开发岗真题</a>
                            <span class="text-muted">春秋招笔试突围</span>
    <a class="tag" taget="_blank" href="/search/%E6%9C%80%E6%96%B0%E4%BA%92%E8%81%94%E7%BD%91%E6%98%A5%E7%A7%8B%E6%8B%9B%E8%AF%95%E9%A2%98%E5%90%88%E9%9B%86/1.htm">最新互联网春秋招试题合集</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                            <div>饿了么2025.03.07-开发岗题目1️⃣:统计01串中0和1的个数,通过计算可能的交换方式确定不同字符串数量2️⃣:使用模板匹配技术识别验证码图片中的"#"符号分布模式3️⃣:构建字典树(Trie)优化异或查询,实现高效的数字黑板游戏整体难度这套题目整体难度适中,由简到难逐步递进:第一题是基础的计数问题,需要理解交换操作的特性第二题是模式识别问题,需要实现模板匹配第三题是高级数据结构应用,需要</div>
                        </li>
                        <li><a href="/article/1899300188355358720.htm"
                               title="本地部署AI大模型之并行计算:什么是可重入互斥锁/递归锁" target="_blank">本地部署AI大模型之并行计算:什么是可重入互斥锁/递归锁</a>
                            <span class="text-muted">杰瑞学AI</span>
    <a class="tag" taget="_blank" href="/search/Devops/1.htm">Devops</a><a class="tag" taget="_blank" href="/search/Computer/1.htm">Computer</a><a class="tag" taget="_blank" href="/search/knowledge/1.htm">knowledge</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/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/1.htm">软件工程</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a>
                            <div>目录1.普通互斥锁的局限性2.可重入互斥锁的工作原理3.使用场景4.代码示例5.实现关键6.注意事项可重入互斥锁(ReentrantMutex,或称为递归锁)是一种特殊类型的互斥锁,允许同一线程多次获取同一把锁而不会导致死锁。以下是其核心要点:1.普通互斥锁的局限性普通互斥锁(Mutex)在同一个线程中只能被获取一次。若线程尝试重复获取已持有的锁,会导致自死锁(线程无限等待自己释放锁)。2.可重入</div>
                        </li>
                        <li><a href="/article/1899299935652737024.htm"
                               title="flask实现mvc模式" target="_blank">flask实现mvc模式</a>
                            <span class="text-muted">dev.null</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/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                            <div>Flask默认是一个轻量级框架,并不强制使用MVC模式,但我们可以按照MVC结构来组织代码,使项目更加清晰和可维护。Flask实现MVC模式Flask本身并没有严格的Controller层,但我们可以通过视图函数(ViewFunctions)充当Controller,使其符合MVC模式。目录结构flask_mvc_app/│──app/│├──models.py#Model(数据库模型)│├──v</div>
                        </li>
                        <li><a href="/article/1899298673951567872.htm"
                               title="Python Flask 在网页应用程序中处理错误和异常" target="_blank">Python Flask 在网页应用程序中处理错误和异常</a>
                            <span class="text-muted">dowhileprogramming</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>
                            <div>PythonFlask在网页应用程序中处理错误和异常PythonFlask在网页应用程序中处理错误和异常PythonFlask在网页应用程序中处理错误和异常在我们所有的代码示例中,我们没有注意如何处理用户在浏览器中输入错误的URL或向我们的应用程序发送错误的参数集的情况。这不是设计意图,但目的是首先关注网页应用程序的关键组件。网页框架的美妙之处在于,它们通常默认支持错误处理。如果发生任何错误,将自</div>
                        </li>
                        <li><a href="/article/1899295143823994880.htm"
                               title="PyTorch实现CNN:CIFAR-10图像分类实战教程" target="_blank">PyTorch实现CNN:CIFAR-10图像分类实战教程</a>
                            <span class="text-muted">吴师兄大模型</span>
    <a class="tag" taget="_blank" href="/search/PyTorch/1.htm">PyTorch</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/cnn/1.htm">cnn</a><a class="tag" taget="_blank" href="/search/CIFAR-10%E5%9B%BE%E5%83%8F%E5%88%86%E7%B1%BB/1.htm">CIFAR-10图像分类</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/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">卷积神经网络</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>Langchain系列文章目录01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南02-玩转LangChainMemory模块:四种记忆类型详解及应用场景全覆盖03-全面掌握LangChain:从核心链条构建到动态任务分配的实战指南04-玩转LangChain:从文档加载到高效问答系统构建的全程实战05-玩转LangChain:深度评估问答系统的三种高效方法(示例生成、手</div>
                        </li>
                        <li><a href="/article/1899294639756734464.htm"
                               title="【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JavaWeb 项目的部署:从开发环境到生产环境" target="_blank">【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JavaWeb 项目的部署:从开发环境到生产环境</a>
                            <span class="text-muted">Foyo Designer</span>
    <a class="tag" taget="_blank" href="/search/firefox/1.htm">firefox</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/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/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a>
                            <div>点击此处查看合集https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link一、开发环境:写代码的“温床”在</div>
                        </li>
                        <li><a href="/article/1899292244263890944.htm"
                               title="QT之QComboBox详细介绍" target="_blank">QT之QComboBox详细介绍</a>
                            <span class="text-muted">小小怪同学の</span>
    <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>此篇文章来源于自己在使用QComboBox类的时候相对其重写而总结的其成员函数知识点,本人能力有限,欢迎大家评论区评论,共同学习一、QComboBox介绍QComboBox是QtGUI库中的一个核心组件,它是一个复合型图形用户界面控件,常用于提供一种紧凑的方式来展示可选项列表。QComboBox通常表现为一个下拉列表框,包含一个文本标签区域和一个下拉箭头按钮,点击箭头时会显示出可供选择的项目列表。</div>
                        </li>
                        <li><a href="/article/1899280778282463232.htm"
                               title="面试题之webpack file-loader和url-loader" target="_blank">面试题之webpack file-loader和url-loader</a>
                            <span class="text-muted">阿丽塔~</span>
    <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/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                            <div>在面试中,关于Webpack中file-loader和url-loader的区别是一个常见的问题。file-loader和url-loader的区别1.功能定义file-loader:主要用于处理静态资源文件(如图片、字体等),将其复制到输出目录,并返回文件的URL。适用于较大文件或需要单独存储的资源。url-loader:是file-loader的扩展,它在处理文件时会先判断文件大小。如果文件大</div>
                        </li>
                        <li><a href="/article/1899277119964377088.htm"
                               title="机器学习之KMeans算法" target="_blank">机器学习之KMeans算法</a>
                            <span class="text-muted">Mr终游</span>
    <a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%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><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/kmeans/1.htm">kmeans</a>
                            <div>目录一、KMeans的核心思想二、KMeans算法流程三、KMeans的关键点1.优点:2.缺点:四、如何确定最佳k值1.肘部法则2.轮廓系数五、Kmeans的典型应用场景六、代码示例KMeans是一种广泛使用的无监督学习算法,主要用于聚类分析(Clustering)。它的目标是将数据集划分为K个互不重叠的子集(簇,Cluster),使得同一簇内的数据点尽可能相似,不同簇之间的数据点尽可能差异显著</div>
                        </li>
                        <li><a href="/article/1899270812356112384.htm"
                               title="动态规划双剑合璧:C++与Python征服洛谷三大经典DP问题" target="_blank">动态规划双剑合璧:C++与Python征服洛谷三大经典DP问题</a>
                            <span class="text-muted">三流搬砖艺术家</span>
    <a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                            <div>动态规划核心思想状态定义→转移方程→边界处理→时空优化本文精选洛谷动态规划题单中三大经典问题,通过C++与Python双语言对比实现,彻底掌握DP精髓!题目一:P1048采药(01背包模板)题目描述在限定时间T内采集草药,每株草药有采集时间time[i]和价值value[i],求最大总价值。解题思路状态定义:dp[j]表示时间j能获得的最大价值转移方程:dp[j]=max(dp[j],dp[j-t</div>
                        </li>
                        <li><a href="/article/1899269929731944448.htm"
                               title="面试题之react useMemo和uesCallback" target="_blank">面试题之react useMemo和uesCallback</a>
                            <span class="text-muted">阿丽塔~</span>
    <a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</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%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a>
                            <div>在面试中,关于React中的useMemo和useCallback的区别是一个常见的问题。useMemo和useCallback的区别1.功能定义useMemo:用于缓存计算结果,避免在每次组件渲染时重新计算复杂的值。它接受一个计算函数和一个依赖数组,只有当依赖项发生变化时,才会重新计算。useCallback:用于缓存函数实例,避免在每次组件渲染时创建新的函数。它接受一个函数和一个依赖数组,只有</div>
                        </li>
                        <li><a href="/article/1899267281309986816.htm"
                               title="深入解析Java记录类:简洁高效的数据建模利器" target="_blank">深入解析Java记录类:简洁高效的数据建模利器</a>
                            <span class="text-muted">小志开发</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>一、记录类核心概念1.1设计背景与定位记录类(Record)是Java16正式引入的标准特性,旨在简化不可变数据载体的创建。其设计目标包括:减少模板代码(Boilerplate)增强数据透明度支持模式匹配(未来特性)替代简单DTO和值对象1.2与普通类对比特性普通类记录类默认修饰符无限制隐式final继承支持继承不可继承其他类可变性可自由设计隐式不可变方法生成手动实现自动生成规范方法构造器显式定义</div>
                        </li>
                        <li><a href="/article/1899267155027881984.htm"
                               title="Spring Cloud之远程调用OpenFeign参数传递" target="_blank">Spring Cloud之远程调用OpenFeign参数传递</a>
                            <span class="text-muted">新绿MEHO</span>
    <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/JAVA/1.htm">JAVA</a><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/cloud/1.htm">cloud</a>
                            <div>目录OpenFeign参数传递传递单个参数传递多个参数传递对象传递JSONOpenFeign参数传递传递单个参数服务提供方product-service@RequestMapping("/product")@RestControllerpublicclassProductController{@AutowiredprivateProductServiceproductService;@Reques</div>
                        </li>
                        <li><a href="/article/1899266902480449536.htm"
                               title="Apache POI详解" target="_blank">Apache POI详解</a>
                            <span class="text-muted">波波有料</span>
    <a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>目录前言ApachePOI是一个强大的Java库,广泛用于处理MicrosoftOffice文档,包括Word、Excel和PowerPoint等。本文将详细介绍如何使用ApachePOI库操作Word模板(包括替换占位符、操作表格)、将Word文档转换为PDF,以及如何处理PowerPoint文档。我们将通过代码示例逐步演示这些操作。1.ApachePOI简介依赖配置2.操作Word模板中的占位</div>
                        </li>
                        <li><a href="/article/1899259589510098944.htm"
                               title="Unity数据持久化之PlayerPrefs" target="_blank">Unity数据持久化之PlayerPrefs</a>
                            <span class="text-muted">FAREWELL00075</span>
    <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/c%23/1.htm">c#</a>
                            <div>一、什么是数据持久化大家都玩过游戏吧,大家玩完游戏之后肯定希望自己的游戏数据得以保存。那么就需要用到数据持久化,数据并不仅仅只是在内存中,更要存储在硬盘上,才能保证游戏数据不丢失。在Unity中,数据持久化是指在游戏运行结束后,某些数据(如玩家的游戏进度、设置、或统计信息)能够被保存下来,并在下次启动游戏时仍然可用。数据持久化是游戏开发中的常见需求,用于确保玩家的游戏体验不会因为退出游戏而丢失重要</div>
                        </li>
                        <li><a href="/article/1899256563449786368.htm"
                               title="vue中为组建添加样式的方式" target="_blank">vue中为组建添加样式的方式</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>
                            <div>在Vue中,可以通过多种方式为view添加样式,并且支持动态绑定样式。以下是几种常见的方式:1.内联样式直接在模板中使用style属性来添加样式。这是一个内联样式的示例2.使用:style动态绑定样式可以通过:style动态绑定样式对象或数组。2.1绑定样式对象这是一个动态绑定样式对象的示例exportdefault{data(){return{styleObject:{color:'red',f</div>
                        </li>
                        <li><a href="/article/1899253285739622400.htm"
                               title="Spring Cloud Alibaba微服务架构实战教程—17分布式缓存下Redis设计" target="_blank">Spring Cloud Alibaba微服务架构实战教程—17分布式缓存下Redis设计</a>
                            <span class="text-muted">江湖一点雨</span>
    <a class="tag" taget="_blank" href="/search/%E6%9C%80%E6%96%B0SpringCloud/1.htm">最新SpringCloud</a><a class="tag" taget="_blank" href="/search/Alibaba%E5%AE%9E%E6%88%98%E5%BC%80%E5%8F%91/1.htm">Alibaba实战开发</a><a class="tag" taget="_blank" href="/search/redis%E7%BC%93%E5%AD%98%E8%AE%BE%E8%AE%A1/1.htm">redis缓存设计</a><a class="tag" taget="_blank" href="/search/springcloud/1.htm">springcloud</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E5%AE%9E%E6%88%98/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/alibaba/1.htm">alibaba</a><a class="tag" taget="_blank" href="/search/java%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">java开发实战</a>
                            <div>前言大多数的文章,开头就是告诉你使用redis做缓存,怎么怎么样,而本系列,不打算采用这样无趣的写法,这和直接搬运有什么区别?笔者力求读者能得到更大程度的系统学习,会从为什么使用缓存来给大家进行学习。问问大家,当系统的执行速度慢怎么办?对于更新速度不是很快的站点,可以采用静态化来避免过多的数据查询。通常前端使用Freemaker或Velocity、thymeleaf等模板引擎来实现页面的静态化。对</div>
                        </li>
                        <li><a href="/article/1899250513514393600.htm"
                               title="【实战ES】实战 Elasticsearch:快速上手与深度实践-6.2.2GDPR数据脱敏处理" target="_blank">【实战ES】实战 Elasticsearch:快速上手与深度实践-6.2.2GDPR数据脱敏处理</a>
                            <span class="text-muted">言析数智</span>
    <a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98/1.htm">实战</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</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/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a>
                            <div>点击关注不迷路点击关注不迷路点击关注不迷路文章大纲6.2.2GDPR数据脱敏处理深度实践指南1.GDPR核心要求映射1.1关键条款与技术要求1.2`数据类型与脱敏策略`2.全链路脱敏配置2.1`动态脱敏管道`2.2静态脱敏模板3.`脱敏算法性能对比`3.1算法性能矩阵3.2存储成本分析4.企业级合规方案4.1金融行业案例4.2医疗行业方案5.合规性验证方案5.1自动化检查脚本5.2审计检查清单6.</div>
                        </li>
                        <li><a href="/article/1899244337930235904.htm"
                               title="Java函数式接口四部曲之Consumer" target="_blank">Java函数式接口四部曲之Consumer</a>
                            <span class="text-muted">sundawei2016</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</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%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>Consumer是一个函数式接口,位于java.util.function包中。它表示一个接受单个输入参数并且不返回任何结果的操作。Consumer通常用于需要对输入参数执行某些操作但不产生返回值的场景。Consumer接口定义了一个抽象方法:accept(Tt):接受一个类型为T的参数,并对其执行操作。Consumerdisplay=System.out::println;display.acc</div>
                        </li>
                        <li><a href="/article/1899237400308150272.htm"
                               title="领域大模型之微调技术和最佳实践" target="_blank">领域大模型之微调技术和最佳实践</a>
                            <span class="text-muted">程序员莫玛</span>
    <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><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/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/%E9%87%91%E8%9E%8D/1.htm">金融</a>
                            <div>BERT和GPT-3等语言模型针对语言任务进行了预训练。微调使它们适应特定领域,如营销、医疗保健、金融。在本指南中,您将了解LLM架构、微调过程以及如何为NLP任务微调自己的预训练模型。-介绍-大型语言模型(LLM)的特别之处可以概括为两个关键词——大型和通用。“大”是指它们训练的海量数据集及其参数的大小,即模型在训练过程中学习的记忆和知识;“通用”意味着他们具有广泛的语言任务能力。更明确地说,L</div>
                        </li>
                        <li><a href="/article/1899237401096679424.htm"
                               title="从青铜巨人到硅基生命:机器人文明的意识觉醒之路--三千年人类想象与科技突破的双螺旋演进)" target="_blank">从青铜巨人到硅基生命:机器人文明的意识觉醒之路--三千年人类想象与科技突破的双螺旋演进)</a>
                            <span class="text-muted">109702008</span>
    <a class="tag" taget="_blank" href="/search/%E6%9D%82%E8%B0%88/1.htm">杂谈</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">机器人</a><a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%8A%80/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>
                            <div>一、神话时代的机械启蒙:人类意识的原始投射公元前3世纪的地中海沿岸,克里特岛民仰望青铜巨人塔罗斯巡视海岸的传说,折射出人类最早的机器人想象。这个由赫菲斯托斯铸造的自动守卫,体内流淌着神秘"ichor"(神之血液),实则是对液压传动原理的原始隐喻。在中国战国时期,《列子》记载的偃师献艺故事中,歌舞机械人"瞬其目而招王之左右侍妾",揭示了人类对仿生智能的本能向往。考古学家在亚历山大港发现的希罗自动剧场</div>
                        </li>
                        <li><a href="/article/1899221513115070464.htm"
                               title="设计模式之简单工厂模式" target="_blank">设计模式之简单工厂模式</a>
                            <span class="text-muted">Absinthe_苦艾酒</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/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E7%AE%80%E5%8D%95%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F/1.htm">简单工厂模式</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                            <div>首先我们来看看代码实现1.创建接口//动物接口interfaceAnimal{voidspeak();//每种动物都会叫}//猫类classCatimplementsAnimal{publicvoidspeak(){System.out.println("喵喵喵!");}}//狗类classDogimplementsAnimal{publicvoidspeak(){System.out.print</div>
                        </li>
                        <li><a href="/article/1899214071660605440.htm"
                               title="Nginx如何实现 TCP和UDP代理?" target="_blank">Nginx如何实现 TCP和UDP代理?</a>
                            <span class="text-muted">m0_74824755</span>
    <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/udp/1.htm">udp</a>
                            <div>文章目录前言Nginx之TCP和UDP代理工作原理示意图配置文件和命令参数注释基本命令配置实例说明TCP代理实例UDP代理实例总结前言Nginx是一个高性能的HTTP和反向代理服务器,同时也支持TCP/UDP代理。在1.9.13版本后,Nginx已经支持端口转发,包括TCP和UDP协议。Nginx的TCP/UDP代理功能允许它作为一个中间人,接收来自客户端的TCP或UDP请求,并将这些请求转发到指</div>
                        </li>
                        <li><a href="/article/1899209271401312256.htm"
                               title="CICD系列之k8s" target="_blank">CICD系列之k8s</a>
                            <span class="text-muted">john137724</span>
    <a class="tag" taget="_blank" href="/search/DEV-OPS/1.htm">DEV-OPS</a><a class="tag" taget="_blank" href="/search/k8s/1.htm">k8s</a>
                            <div>k8s安装操作系统配置主机规划hosts配置(所有主机都要配置)防火墙配置(所有主机都要配置)内核配置参数(所有主机都要配置)selinux和swap配置(所有主机都要配置)ipvs配置(所有主机都要配置)安装docker安装k8s组件配置k8s组件安装yum源安装kubelet,kubeadm,kubectl(所有节点都要安装,工作节点不用安装kubectl)设置kubelet开机自启动初始化集</div>
                        </li>
                        <li><a href="/article/1899209270772166656.htm"
                               title="CICD系列之jenkins" target="_blank">CICD系列之jenkins</a>
                            <span class="text-muted">john137724</span>
    <a class="tag" taget="_blank" href="/search/DEV-OPS/1.htm">DEV-OPS</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/jenkins/1.htm">jenkins</a>
                            <div>jenkins专题安装docker&docker-compose安装jenkins编写docker-compose.yml脚本配置jenkins安装常用插件记录jenkins安装、配置、使用的常用操作linux物理机安装安装docker&docker-composedocker安装与配置安装jenkins#创建docker桥接网络dockernetworkcreatejohn-net#新建数据目录</div>
                        </li>
                        <li><a href="/article/1899209270356930560.htm"
                               title="CICD系列之harbor" target="_blank">CICD系列之harbor</a>
                            <span class="text-muted">john137724</span>
    <a class="tag" taget="_blank" href="/search/DEV-OPS/1.htm">DEV-OPS</a><a class="tag" taget="_blank" href="/search/harbor/1.htm">harbor</a>
                            <div>镜像仓库专题安装docker&docker-compose安装harbor下载并解压安装文件修改配置文件安装、管理harbor访问harbor重点提示记录镜像仓库的常用操作。安装docker&docker-composedocker&docker-compose安装与配置安装harbor下载并解压安装文件#下载到指定目录并进入该目录wgethttps://github.com/goharbor/h</div>
                        </li>
                                    <li><a href="/article/22.htm"
                                           title="redis学习笔记——不仅仅是存取数据" target="_blank">redis学习笔记——不仅仅是存取数据</a>
                                        <span class="text-muted">Everyday都不同</span>
    <a class="tag" taget="_blank" href="/search/returnSource/1.htm">returnSource</a><a class="tag" taget="_blank" href="/search/expire%2Fdel/1.htm">expire/del</a><a class="tag" taget="_blank" href="/search/incr%2Flpush/1.htm">incr/lpush</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%86%E5%8C%BA/1.htm">数据库分区</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                        <div>最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷) 
      
    1、关于JedisPool.returnSource(Jedis jeids) 
      
    这个方法是从red</div>
                                    </li>
                                    <li><a href="/article/149.htm"
                                           title="SQL性能优化-持续更新中。。。。。。" target="_blank">SQL性能优化-持续更新中。。。。。。</a>
                                        <span class="text-muted">atongyeye</span>
    <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                        <div>1 通过ROWID访问表--索引 
    你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高. 
     
    2 共享SQL语句--相同的sql放入缓存 
     
    3 选择最有效率的表</div>
                                    </li>
                                    <li><a href="/article/276.htm"
                                           title="[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善" target="_blank">[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善</a>
                                        <span class="text-muted">comsci</span>
    <a class="tag" taget="_blank" href="/search/JAVA%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">JAVA虚拟机</a>
                                        <div> 
         如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢? 
     
    &n</div>
                                    </li>
                                    <li><a href="/article/403.htm"
                                           title="lvs- real" target="_blank">lvs- real</a>
                                        <span class="text-muted">男人50</span>
    <a class="tag" taget="_blank" href="/search/LVS/1.htm">LVS</a>
                                        <div>#!/bin/bash 
    # 
    # Script to start LVS DR real server. 
    # description: LVS DR real server 
    # 
    #.  /etc/rc.d/init.d/functions 
     
    VIP=10.10.6.252 
    host='/bin/hostname' 
     
    case "$1" in 
    sta</div>
                                    </li>
                                    <li><a href="/article/530.htm"
                                           title="生成公钥和私钥" target="_blank">生成公钥和私钥</a>
                                        <span class="text-muted">oloz</span>
    <a class="tag" taget="_blank" href="/search/DSA/1.htm">DSA</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E5%8A%A0%E5%AF%86/1.htm">安全加密</a>
                                        <div>package com.msserver.core.util;
    
    import java.security.KeyPair;
    import java.security.PrivateKey;
    import java.security.PublicKey;
    import java.security.SecureRandom;
    
    public class SecurityUtil {
    </div>
                                    </li>
                                    <li><a href="/article/657.htm"
                                           title="UIView 中加入的cocos2d,背景透明" target="_blank">UIView 中加入的cocos2d,背景透明</a>
                                        <span class="text-muted">374016526</span>
    <a class="tag" taget="_blank" href="/search/cocos2d/1.htm">cocos2d</a><a class="tag" taget="_blank" href="/search/glClearColor/1.htm">glClearColor</a>
                                        <div>要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll</div>
                                    </li>
                                    <li><a href="/article/784.htm"
                                           title="mysql常用命令" target="_blank">mysql常用命令</a>
                                        <span class="text-muted">香水浓</span>
    <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                        <div>连接数据库 
    mysql -u troy -ptroy 
     
    备份表 
    mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql 
     
    恢复表(与恢复数据库命令相同) 
    mysql -u troy -ptroy mm_database < user.sql 
     
    备份数据库 
    mysqldump -u troy -ptroy</div>
                                    </li>
                                    <li><a href="/article/911.htm"
                                           title="我的架构经验系列文章 - 后端架构 - 系统层面" target="_blank">我的架构经验系列文章 - 后端架构 - 系统层面</a>
                                        <span class="text-muted">agevs</span>
    <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                                        <div>系统层面:
    高可用性
    
    所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速</div>
                                    </li>
                                    <li><a href="/article/1038.htm"
                                           title="利用ant进行远程tomcat部署" target="_blank">利用ant进行远程tomcat部署</a>
                                        <span class="text-muted">aijuans</span>
    <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                                        <div>在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下: 
    1.配置tomcat的用户角色</div>
                                    </li>
                                    <li><a href="/article/1165.htm"
                                           title="获取复利总收入" target="_blank">获取复利总收入</a>
                                        <span class="text-muted">baalwolf</span>
    <a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96/1.htm">获取</a>
                                        <div>       public static void main(String args[]){ 
            int money=200; 
            int year=1; 
            double rate=0.1; 
    &</div>
                                    </li>
                                    <li><a href="/article/1292.htm"
                                           title="eclipse.ini解释" target="_blank">eclipse.ini解释</a>
                                        <span class="text-muted">BigBird2012</span>
    <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                        <div>大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。 
    Overview 
    1、Eclipse.ini的作用 
    Eclipse startup is controlled by th</div>
                                    </li>
                                    <li><a href="/article/1419.htm"
                                           title="AngularJS实现分页功能" target="_blank">AngularJS实现分页功能</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/%E5%88%86%E9%A1%B5/1.htm">分页</a>
                                        <div>        对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。 
      &nbs</div>
                                    </li>
                                    <li><a href="/article/1546.htm"
                                           title="[Maven学习笔记三]Maven archetype" target="_blank">[Maven学习笔记三]Maven archetype</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/ArcheType/1.htm">ArcheType</a>
                                        <div>archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等. 
      
    mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式, 
      
    mvn archetype 
      
    1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener</div>
                                    </li>
                                    <li><a href="/article/1673.htm"
                                           title="【Java命令三】jps" target="_blank">【Java命令三】jps</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/Java%E5%91%BD%E4%BB%A4/1.htm">Java命令</a>
                                        <div>jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看 
      
    [hadoop@hadoop bin]$ jps -help
    usage: jps [-help]
           jps [-q] [-mlvV] [<hostid>]
    
    Definitions:
        <hostid>:      <hostname>[:</div>
                                    </li>
                                    <li><a href="/article/1800.htm"
                                           title="ZABBIX2.2 2.4 等各版本之间的兼容性" target="_blank">ZABBIX2.2 2.4 等各版本之间的兼容性</a>
                                        <span class="text-muted">ronin47</span>
    
                                        <div>zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容 
    zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p</div>
                                    </li>
                                    <li><a href="/article/1927.htm"
                                           title="unity 3d还是cocos2dx哪个适合游戏?" target="_blank">unity 3d还是cocos2dx哪个适合游戏?</a>
                                        <span class="text-muted">brotherlamp</span>
    <a class="tag" taget="_blank" href="/search/unity%E8%87%AA%E5%AD%A6/1.htm">unity自学</a><a class="tag" taget="_blank" href="/search/unity%E6%95%99%E7%A8%8B/1.htm">unity教程</a><a class="tag" taget="_blank" href="/search/unity%E8%A7%86%E9%A2%91/1.htm">unity视频</a><a class="tag" taget="_blank" href="/search/unity%E8%B5%84%E6%96%99/1.htm">unity资料</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a>
                                        <div>unity 3d还是cocos2dx哪个适合游戏? 
    问:unity 3d还是cocos2dx哪个适合游戏? 
    答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2, 
    </div>
                                    </li>
                                    <li><a href="/article/2054.htm"
                                           title="百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序" target="_blank">百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序</a>
                                        <span class="text-muted">bylijinnan</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a><a class="tag" taget="_blank" href="/search/%E6%8B%9B%E8%81%98/1.htm">招聘</a>
                                        <div>
    
    import java.util.Arrays;
    
    /**
     * 最早是在陈利人老师的微博看到这道题:
     * #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K
     * 设计一个排序算法。It should be faster than O(n*lgn)。</div>
                                    </li>
                                    <li><a href="/article/2181.htm"
                                           title="获取checkbox复选框的值" target="_blank">获取checkbox复选框的值</a>
                                        <span class="text-muted">chiangfai</span>
    <a class="tag" taget="_blank" href="/search/checkbox/1.htm">checkbox</a>
                                        <div><title>CheckBox</title>
      <script type = "text/javascript">
    	doGetVal: function  doGetVal()
    	{
    		//var fruitName = document.getElementById("apple").value;//根据</div>
                                    </li>
                                    <li><a href="/article/2308.htm"
                                           title="MySQLdb用户指南" target="_blank">MySQLdb用户指南</a>
                                        <span class="text-muted">chenchao051</span>
    <a class="tag" taget="_blank" href="/search/mysqldb/1.htm">mysqldb</a>
                                        <div>原网页被墙,放这里备用。  MySQLdb User's Guide  
    Contents 
     
     Introduction 
     Installation 
      _mysql 
       
       MySQL C API translation 
       MySQL C API function mapping 
       Some _mysql examples 
        
      MySQLdb 
       
     </div>
                                    </li>
                                    <li><a href="/article/2435.htm"
                                           title="HIVE 窗口及分析函数" target="_blank">HIVE 窗口及分析函数</a>
                                        <span class="text-muted">daizj</span>
    <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0/1.htm">窗口函数</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E6%9E%90%E5%87%BD%E6%95%B0/1.htm">分析函数</a>
                                        <div>窗口函数应用场景: 
    (1)用于分区排序 
    (2)动态Group By 
    (3)Top N 
    (4)累计计算 
    (5)层次查询 
     
    一、分析函数 
    用于等级、百分点、n分片等。 
    函数             说明 
    RANK()     &nbs</div>
                                    </li>
                                    <li><a href="/article/2562.htm"
                                           title="PHP ZipArchive 实现压缩解压Zip文件" target="_blank">PHP ZipArchive 实现压缩解压Zip文件</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/zip/1.htm">zip</a>
                                        <div>  
    PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。 
    一、解压缩zip文件        01   02   03   04   05   06   07   08   09   10   11   </div>
                                    </li>
                                    <li><a href="/article/2689.htm"
                                           title="精彩英语贺词" target="_blank">精彩英语贺词</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD/1.htm">英语</a>
                                        <div>I'm always here  
                我会一直在这里支持你  
                  &nb</div>
                                    </li>
                                    <li><a href="/article/2816.htm"
                                           title="基于Java注解的Spring的IoC功能" target="_blank">基于Java注解的Spring的IoC功能</a>
                                        <span class="text-muted">e200702084</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/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a><a class="tag" taget="_blank" href="/search/Office/1.htm">Office</a>
                                        <div>                                
      </div>
                                    </li>
                                    <li><a href="/article/2943.htm"
                                           title="java模拟post请求" target="_blank">java模拟post请求</a>
                                        <span class="text-muted">geeksun</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                        <div>一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。  此处用HttpComponents的httpclient来完成使命。   
    import org.apache.http.HttpEntity ;
    import org.apache.http.HttpRespon</div>
                                    </li>
                                    <li><a href="/article/3070.htm"
                                           title="Swift语法之 ---- ?和!区别" target="_blank">Swift语法之 ---- ?和!区别</a>
                                        <span class="text-muted">hongtoushizi</span>
    <a class="tag" taget="_blank" href="/search/%3F/1.htm">?</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a><a class="tag" taget="_blank" href="/search/%21/1.htm">!</a>
                                        <div>转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html 
      
    Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:  
    var stringValue : String 
    //</div>
                                    </li>
                                    <li><a href="/article/3197.htm"
                                           title="centos7安装jdk1.7" target="_blank">centos7安装jdk1.7</a>
                                        <span class="text-muted">jisonami</span>
    <a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                        <div>安装JDK1.7 
    步骤1、解压tar包在当前目录 
    [root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz 
    步骤2:配置环境变量 
    在etc/profile文件下添加 
    export JAVA_HOME=/usr/java/jdk1.7.0_75 
    export CLASSPATH=/usr/java/jdk1.7.0_75/lib 
    </div>
                                    </li>
                                    <li><a href="/article/3324.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/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%98%A0%E5%B0%84%E5%99%A8/1.htm">数据映射器</a><a class="tag" taget="_blank" href="/search/datamapper/1.htm">datamapper</a>
                                        <div>前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。 
      
    一、概念 
    数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。 
    &nb</div>
                                    </li>
                                    <li><a href="/article/3451.htm"
                                           title="在Python中使用MYSQL" target="_blank">在Python中使用MYSQL</a>
                                        <span class="text-muted">pda158</span>
    <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                                        <div>缘由     近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到 
    数据库中。     了解到 
    Python在这方面有优势,便选用之。     由于我有台 
    server上面安装有 
    mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里 
    记录一下,大家共勉。      
    python中mysql的调用      
    百度之后能够通过MySQLdb进行数据库操作。</div>
                                    </li>
                                    <li><a href="/article/3578.htm"
                                           title="单例模式" target="_blank">单例模式</a>
                                        <span class="text-muted">hxl1988_0311</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</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/%E5%8D%95%E4%BB%B6/1.htm">单件</a>
                                        <div>package com.sosop.designpattern.singleton;
    
    /*
     * 单件模式:保证一个类必须只有一个实例,并提供全局的访问点
     * 
     * 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件
     * 
     * 必须考虑到并发情况下创建了多个实例对象
     * */
    
    /**
     * 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率</div>
                                    </li>
                                    <li><a href="/article/3705.htm"
                                           title="27种迹象显示你应该辞掉程序员的工作" target="_blank">27种迹象显示你应该辞掉程序员的工作</a>
                                        <span class="text-muted">vipshichg</span>
    <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a>
                                        <div>1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。</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>