《Flask Web开发:基于Python的Web应用开发实战》笔记二、

第三章、模板

 视图函数作用即生成请求的响应,如果把业务逻辑和表现逻辑混在一起会导致代码难以理解和维护。吧表现逻辑转移到模板中能够提升程序的可维护性。
 模板是一个响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请求的上下文才能知道。
 使用真实值替换变量,在返回最终得到的响应字符串,这一过程称为渲染。

3.1、Jinja2模板引擎

3.1.1、渲染模板

 在默认情况下,Flask程序会在templates子文件夹中寻找模板。在下一个hello.py版本中,要把前面定义的模板保存在templates文件夹中,并分别命名为index.html和user.html。

from flask import Flask,render_template
from flask_script import Manager

app = Flask(__name__)
manager = Manager( app )

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

@app.route('/user/')
def user(name):
    return render_template('user.html',name=name)

if __name__ == "__main__":
   manager.run()
  •  代码详解:Flask提供的render_template函数吧Jinja2模板引擎集成到程序中。render_template函数的第一个参数是模板的文件名,随后的参数都是键值对,表示模板中变量对应的真实值。

3.1.2、变量

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

    DICT {{ mydict['key'] }}

    LIST {{ mylist[3] }}

    list with a variable index: {{ mylist[myintvar]}}

    object's method: {{ myobj.somemethod() }}

  • 常用Jinja2 变量过滤器
  1. safe 渲染值时不转义
  2. capitalize 把值的首字母转换成大写,其他字母转换成小写
  3. lower 把值转换成小写形式
  4. upper 把值转换成大写形式
  5. title 把值中每个单词的首字母都转换成大写
  6. trim 把值的首尾空格去掉
  7. striptags 渲染之前把值中所有的HTML标签都删掉

3.1.3、控制结构

条件控制语句
{% if user %}
{% else %}
{% endif %}
for循环语句
{% for comment in comments %}
{% endfor %}
支持宏
{% marco render_comment(comment) %}
多处重复使用的模板代码片段可以写入单独的文件,再包含在所有的模板中,以避免重复:
{ % include 'comment.html' %}

  •  另外一中重复使用代码的强大方式是模板继承,他类似于Python代码中的类继承。继承方式如下:首先创建一个名为base.html的基础模板:
    
    
    {% block head %}
    
    {% block title %}
    {% endblock %}
    - My Application
    
    {% endblock %}
    
    
    {% block body %}
    {% endblock %}
    
        
  •  block标签定义的元素可在衍生的模板中年修改。在本例中,我们定义了名为head,title,body的块元素。注意,title包含在head中。下面就是基于基础模板的衍生模板:
    {% extends bash.html %}
    {% block title %}
    Index
    {% endblock%}
    {% block head%}
    {{ super() }}
    
    {% endblock %}
    {% block body %}
    

    hello,world

    {% endblock %}
  •  extends指令声明这个模板衍生自base.htmk,在extends指令之后,基础模板中的3个板块重新定义,模板引擎会贾汪其插入适当的位置。注意新定义head块,在基础模板中内容是空的,所以使用super()获取原来的内容。

3.2、使用Flask-Bootstrap集成Twitter Bootstrap

  Bootstrap是Twitter开发的一个开源框架,它提供的用户界面组件可用于创建整洁且具有吸引力的网页,并且这些网页还能兼容所有现代的Web浏览器。
 Bootstrap是客户端框架,不会直接涉及服务器。要下在程序中继承Bootstrap,显然需要对模板做所有必要的改动,更简单的方法就是安装Flask-Bootstrap的Flask扩展,简化集成的过程。

  • Flask-Bootstrap使用pip方式安装
    pip install flask-bootstrap
  • Flask扩展一般在创建程序实例时初始化。

    from flask.ext.bootstrap import Bootstrap
    bootstrap = Bootstrap(app)
  • templates/user.html,使用的就是Flask-Bootstrap的模板
    {% extends "bootstrap/base.html" %}
    {% block title %}Flasky{% endblock %}
    {% block navbar %}
    
    {% endblock %}
    {% block content %}
    
    {% endblock %}

代码详解:

  •  Jinja2中的extends指令从Flask-Bootstrap中导入bootstrap/base.html,从而实现模板继承。Flask-Bootstrap中的基础模板提供了一个网页框架,引入了Bootstrap中的所有CSS和JavaScript文件。
  •   基础模板中定义了可在衍生模板中重新定义的块。block和endblock指令定义块中的内容可添加到基模板中。

Flaks-Bootstrap基模板中定义的块:
块名 说明

  1. doc 整个HTML文档
  2. html_attribs 标签的属性
  3. html 标签的内容
  4. head 标签中的内容
  5. title 标签中的内容</li> <li>metas 一组<meta>标签</li> <li>styles 层叠样式表定义</li> <li>body_attribs <body>标签的属性</li> <li>body <body>标签中的内容</li> <li>navbar 用户定义的导航条</li> <li>content 用户定义的页面内容</li> <li>scripts 文档底部的JavaScript声明</li> </ol> </blockquote> <h2>3.3、自定义错误页面</h2> <blockquote> <p>Flask允许程序使用基于模板的自定义错误页面,最常见的错误代码有两个:<br>404,客户端请求未知页面或路由时显示。<br>500,有未处理的异常时显示。</p> </blockquote> <ul> <li>自定义错误页面:</li> </ul> <pre><code>@app.errorhandler(404) def page_not_found(e): return render_template('404.html'),404 @app.errorhandler(500) def internal_server_error(e): return render_templte('500.html'),500 </code></pre> <ul> <li>  和视图函数一样,错误处理程序也返回响应,它们还返回与该错误对应的数字状态码。</li> <li>  如果从Github上克隆了这个程序的Git仓库,执行git checkout 3c签出这个程序的这个版本。</li> </ul> <h2>3.4、链接</h2> <blockquote> <p> 在模板中直接编写简单路由的URL连接不难,但对于包含可变部分的动态路由,在模板中构建正确的URL就很困难;并且直接编写URL会对代码中定义的路由产生不必要的依赖。<br> Flask提供了url_for()辅助函数,可以使用程序URL映射中保存的信息生成URL。<br> url_for()函数最简单的用法是以视图函数名(后者app.add_url_route()定义路由时使用的端点名)作为参数,返回对应的URL。<br> 使用<strong>url_for()</strong>生成动态地址时,将动态部分作为关键字参数传入。例如,url_for('user',name='john',_external=True)的返回结果是http://localhost:5000/user/john<br> <strong>传入url_for()的关键字参数不仅限于动态路由中的参数。函数能将任何额外参数添加到查询字符串中。</strong>例如,url_for('index',page=2)的返回结果是/?page=2</p> </blockquote> <h2>3.5、静态文件</h2> <blockquote> <p> 默认设置下,Flask在程序根目录中名为static的子目录中寻找静态文件。如果需要,可在static文件夹中使用子文件夹存放文件。</p> </blockquote> <h2>3.6、使用Flask-Monment本地化日期和时间</h2> <blockquote> <p> 问题背景:如果Web程序的用户来自世界各地,那么处理日期和时间就不是一个简单的任务。<br> 解决方法:通过使用JavaScript开发的优秀客户端开源代码库,名为moment.js,可以在浏览器中渲染日期和时间。Flask-Monment是一个Flask程序扩展。能把moment.js集成到Jinja2模板中。</p> </blockquote> <ul> <li> <p>Flask-Moment可以通过pip安装:</p> <pre><code>pip install flask-moment</code></pre> </li> <li>初始化Flask-Moment: <pre><code>from flask.ext.moment import Moment moment = Moment(app)</code></pre></li> <li>除了moment.js,Flask-Moment还依赖jquery.js.Bootstrap已经引入了jquery.js,因此只需引入moment.js即可。 <pre><code>{% block scripts %} {{ super() }} {{ moment.include_moment() }} {% endblcok %}</code></pre></li> <li>为了处理时间戳,Flask-Moment想模板开放了moment类,后台可以将utc时间传到前台进行渲染。 <pre><code>from datetime improt datetime @app.route('/') def index(): return render_template('index.html',current_time=datetime.utcnow())</code></pre></li> <li>在模板中渲染current_time <pre><code><p>The local date and time is {{ moment(current_time).format('LLL) }}</p> <p>That was {{ moment(current_time).fromNow(refresh=True) }}</p></code></pre></li> </ul> <blockquote> <p>更多moment.js用法:http://momentjs.com/docs/#/displaying/<br>Flask-Moment假定服务器端程序处理的时间是“纯正的”datetime对象,且使用UTC表示。</p> </blockquote> <h1>第四章、Web表单</h1> <blockquote> <p> 对于一些重复操作(生成表单的HTML代码和验证提交的表单数据),Flask-WTF扩展可以把处理Web表单的过程变成一种愉悦的体验。这个扩展对独立的WTForms包进行了包装,方便集成到Flask程序中。<br>WTForms官网:http://wtforms.simplecodes.com</p> </blockquote> <ul> <li>Flask-WTF及其依赖可使用pip安装: <pre><code>pip install flaks-wtf</code></pre></li> </ul> <h2>4.1、跨站请求伪造保护</h2> <blockquote> <p> 默认情况,Flask-WTF能保护所有表单面授跨站请求伪造(CSRF)的***。为了实现CSRF保护,Flask-WTF需要程序设置一个密钥。Flask-WTF使用这个密钥生成加密令牌,再用令牌验证请求中表单数据的真伪。</p> </blockquote> <p><strong>示例代码(设置Flask-WTF):</strong></p> <pre><code>app = Flask(__name__) app.config['SECRET_KEY'] = 'hard to guess string'</code></pre> <ul> <li> 代码详解:app.config字典可用来存储框架、扩展和程序本身的配置变量</li> <li> SECRET_KEY配置变量是通用密钥,可在Flask和多个第三方扩展中使用。</li> </ul> <h2>4.2、表单类</h2> <blockquote> <p>使用Flask-WTF时,每个Web表单都由一个继承自Form的类表示。</p> </blockquote> <p><strong>示例代码(一个简单的Web表单,包含一个文本字段和一个提交按钮):</strong></p> <pre><code>from flaks.ext.wtf import Form from wtforms import StringField,SubmitField from wtforms.validators import Required class NameForm(Form): name = StringField("What's your name?",validators=[Required()]) submit = SubmitField('Submit')</code></pre> <ul> <li> 代码详解:StringField类表示属性为type="text"的<input>元素;SubmitField类表示属性为type="submit"的<input>元素。StringField构造函数中的可选参数validators指定一个由验证函数组成的列表,在接收用户提交的数据之前验证数据。验证函数Required()确保提交的字段不为空</li> <li> Form基类由Flask-WTF扩展定义,从falsk.ext.wtf中导入。字段和验证函数可以直接从WTForms包中导入。</li> </ul> <blockquote> <p><strong>WTForms支持的HTML标准字段</strong></p> <ol> <li>StringField 文本字段</li> <li>TextAreaField 多行文本字段</li> <li>PasswordField 密码文本字段</li> <li>HiddenField 隐藏文本字段</li> <li>DateField 文本字段,值为 datetime.date 格式</li> <li>DateTimeField 文本字段,值为 datetime.datetime 格式</li> <li>IntegerField 文本字段,值为整数</li> <li>DecimalField 文本字段,值为 decimal.Decimal</li> <li>FloatField 文本字段,值为浮点数</li> <li>BooleanField 复选框,值为 True 和 False</li> <li>RadioField 一组单选框</li> <li>SelectField 下拉列表</li> <li>SelectMultipleField 下拉列表,可选择多个值</li> <li>FileField 文件上传字段</li> <li>SubmitField 表单提交按钮</li> <li>FormField 把表单作为字段嵌入另一个表单</li> <li>FieldList 一组指定类型的字段</li> </ol> <p><strong> WTForms验证函数</strong></p> <ol> <li>Email 验证电子邮件地址</li> <li>EqualTo 比较两个字段的值;常用于要求输入两次密码进行确认的情况</li> <li>IPAddress 验证 IPv4 网络地址</li> <li>Length 验证输入字符串的长度</li> <li>NumberRange 验证输入的值在数字范围内</li> <li>Optional 无输入值时跳过其他验证函数</li> <li>Required 确保字段中有数据</li> <li>Regexp 使用正则表达式验证输入值</li> <li>URL 验证 URL</li> <li>AnyOf 确保输入值在可选值列表中</li> <li>NoneOf 确保输入值不在可选值列表中</li> </ol> </blockquote> <h2>4.3、把表单渲染成HTML</h2> <p><strong>示例代码:(使用Flask-WTF和Flask-Bootstrap渲染表单)</strong></p> <pre><code>{% extends 'base.html' %} {% import "bootstrap/wtf.html" as wtf %} {% block title %}Flasky{% endblock %} {% block page_content %} <div class="page-header"> <h1>hello,{% if name %}{{ name }}{% else %}Stranger{% endif%}</h1> </div> {{ wtf.quick_form(form)}} {% endblock %}</code></pre> <ul> <li>  代码详解:导入的bootstrap/wtf.html文件定义了一个使用Bootstrap渲染Flask-WTF表单对象的辅助函数。wtf.quick_form()函数的参数为Flask_WTF表单对象,使用Bootstrap的默认样式渲染传入表单。</li> </ul> <h2>4.4、在视图函数中处理表单</h2> <p><strong>示例代码:(视图函数index()不仅要渲染表单,还要接受表单中的数据。)</strong></p> <pre><code>@app.route('/',methods=['GET','POST']) def index(): name = None form = NameForm() if form.validate_on_submit(): name = form.name.data form.name.data = '' return render_template('index.html',form=form,name=name) </code></pre> <ul> <li>代码详解:app.route修饰器中添加的methods参数告诉Flask在URL映射中把这个视图函数注册为GET和POST请求的处理程序。如果没指定methods参数,则默认把视图函数注册为GET请求的处理程序。</li> <li> 用户提交表单后,服务器会收到一个POST请求。validate_on_submit()会调用name字段上附属的Required()验证函数。如果名字不为空,就能通过验证,validate_on_submit()返回True。</li> </ul> <h2>4.5、重定向和用户会话</h2> <blockquote> <p> 问题背景:当用户输入名字后提交表单,再点击浏览器的刷新按钮,会看到一个警告,关于要求再次提交表单之前进行确认。之所以会出这种问题,是因为刷新页面时浏览器会重新发送之前已经发送过的最后一个请求。<br> 解决方案:<strong>使用重定向作为POST请求的响应</strong>,而不是使用常规响应。重定向是一种特殊的响应,响应内容是URL,而不是包含HTML代码的字符串。浏览器收到这种响应,<strong>会向重定向的URL发起GET请求</strong>,显示页面的内容。<br> 另一问题:如果使用上面的解决方案,程序在处理POST请求时,使用from.name.data获取用户输入的名字,一旦请求结束,数据也就丢失了。所以需要程序将数据存储到用户会话中,在请求之间“记住”数据。用户是一种私有存储,存在每个连接到服务器的客户端中。</p> </blockquote> <p><strong>示例代码:</strong></p> <pre><code>from flask import Flask,render_template,session,redirect,url_for @app.route('/',methods=['GET','POST']) def index(): form = NameForm() if form.validate_on_submit(): session['name'] = form.name.data return redirect(url_for('index')) return render_template('index.html',form=form,name=session.get('name'))) </code></pre> <ul> <li> 代码详解:合法表单数据的请求最后会调用redirect()函数。<strong>redirect()是个辅助函数</strong>,用来生成HTTP重定向响应。redirect()函数参数是重定向的URL。<strong>url_for()生成URL</strong>,因为这个函数使用URL映射生成URL,从而保证URL和定义的路由兼容,并且修改路由名字后依然可用。</li> </ul> <h2>4.6、Flash消息</h2> <blockquote> <p> 问题背景:用户提交了有一项错误的登录表单,服务器发回的响应重新渲染了登录表单,并在表单上面显示信息,提示用户名或密码错误。</p> </blockquote> <p><strong>示例代码:</strong></p> <pre><code>from flask ipmort Flask,render_template,session,redirect,url_for,flash @app.route('/',methods=['GET','POST']) def index(): form = NameForm() if form.validate_on_submit(): old_name = session.get('name') if old_name is not None and old_name != form.name.data: flash("Looks like you have changed your name") session['name'] = olde_name return redirect(url_for('index')) return render_template('index.html',name=session.get('name'),form=form) ``` *  代码详解:代码会将每一次提交的名字与上一次**存储在会话中的名字**进行比较,如果两者不一样则会发给客户端下一个响应中显示一个信息。 *  仅调用flash()函数并不能把消息显示出来,程序使用的模板要渲染这些信息,最好在基础模板中渲染Flash消息,因为这样所有页面都能使用这些消息。Flask把**get_flashed_messages()函数**开放给模板,用来获取并渲染消息。</code></pre> <p>{% block content %}<br><div class="container"><br>{% for message in get_flashed_messages() %}<br><div class="alert alert-warning"><br><button type="button" class="close" data-dismiss="alert"><br>×<br></button><br>{{ message }}<br></div><br>{% endfor %}<br>{% block page_content %}<br>{% endblock %}<br></div><br>{% endblock %} </p> <pre><code></code></pre> </div> <p>转载于:https://blog.51cto.com/mbb97/2353647</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1292345820095520768"></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 Web开发:基于Python的Web应用开发实战》笔记二、)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1947461456085708800.htm" title="看电影" target="_blank">看电影</a> <span class="text-muted">卜悠悠</span> <div>朋友约看电影,最好时间段的几乎全满座了。不知道是不是跟我们一样,因为刘若英而去。劳累的一周。身心俱疲。</div> </li> <li><a href="/article/1947461453564932096.htm" title="2018-11-15 面对误解和仇恨 ,一笑而过是一种坦然宽容" target="_blank">2018-11-15 面对误解和仇恨 ,一笑而过是一种坦然宽容</a> <span class="text-muted">騎車攆曹操</span> <div>No.1不能强迫别人来爱自己,只能努力让自己成为值得爱的人,其余的事情则靠缘分。No.2面对误解和仇恨,一笑而过是一种坦然宽容,然后保持本色,这是一种达观。No.3敢于尝试,就等于你已经卖出了成功的第一步,人生就是不停的战斗,直到生命尽头。No.4不去拼你不会知道未来多么辉煌,你可以一败涂地,但必须东山再起。No.5一直一直向前冲,永不回头,你还未一无所有,因此你没有资本说放弃。No.6生活总是让</div> </li> <li><a href="/article/1947461446212317184.htm" title="数据可视化——折线图" target="_blank">数据可视化——折线图</a> <span class="text-muted">殇城碎梦.</span> <a class="tag" taget="_blank" href="/search/python%E5%9F%BA%E7%A1%80%E5%AD%A6%E4%B9%A0/1.htm">python基础学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>#导入所需要的包importmatplotlib.pyplotasplt#设置图表样式plt.style.use('seaborn-v0_8')#增强中文字体配置-添加更多系统字体确保兼容性#增强中文字体配置-优先Windows系统常用字体plt.rcParams["font.family"]=["sans-serif"]plt.rcParams["font.sans-serif"]=["SimH</div> </li> <li><a href="/article/1947461445448953856.htm" title="本科大学生未雨绸缪:破解 Java 开发 35 岁中年危机的全程攻略" target="_blank">本科大学生未雨绸缪:破解 Java 开发 35 岁中年危机的全程攻略</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/%E8%A7%A3%E5%BF%A7%E6%9D%82%E8%B0%88/1.htm">解忧杂谈</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>在当今竞争激烈且技术迭代迅速的IT行业,“35岁中年危机”似乎成为了悬在Java开发人员头上的一把达摩克利斯之剑。根据最新的行业报告,40%的IT从业者在35岁左右面临职业瓶颈,而Java开发领域由于其普及性和竞争激烈程度,更是成为重灾区。对于本科大学生而言,虽然距离35岁尚有一段时日,但提前规划,未雨绸缪,才能在未来的职业生涯中更好地应对可能出现的危机。本文将从多个维度为本科大学生提供Java开</div> </li> <li><a href="/article/1947461066996903936.htm" title="Git - 配置并使用多个SSH KEY(2)" target="_blank">Git - 配置并使用多个SSH KEY(2)</a> <span class="text-muted"></span> <div>4.http协议http/s协议:超文本传输协议优点:简便缺点:效率更低$gitclonehttps://gitlab.com/xxxxxxxx/text.git从上面的对比结果来看,用ssh协议确实更有优势。当然,这并不是本文想要重点阐述的问题。我们在使用ssh协议的时候,需要生成sshkey,如果多个平台(例如同时使用GitHub和Gitlab)都要使用ssh,那么就要生成多组sshkey并进</div> </li> <li><a href="/article/1947461067483443200.htm" title="基于Python+Vue的个性化教学可视化系统设计与实现django" target="_blank">基于Python+Vue的个性化教学可视化系统设计与实现django</a> <span class="text-muted">源码哆哆*V+ymhydo</span> <a class="tag" taget="_blank" href="/search/%E6%AF%95%E8%AE%BE/1.htm">毕设</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a> <div>文章目录前言系统实现效果前台用户功能模块后台管理功能模块Python技术介绍Django框架介绍预期达到的目标设计思路详细视频演示技术路线解决的思路性能/安全/负载方面可行性分析论证为什么选择我们</div> </li> <li><a href="/article/1947460821697228800.htm" title="记忆最后三个月,妻子在外风花雪月(傅初雪江黎)已完结小说全集_记忆最后三个月,妻子在外风花雪月(傅初雪江黎)都市言情必读_记忆最后三个月,妻子在外风花雪月(傅初雪江黎)" target="_blank">记忆最后三个月,妻子在外风花雪月(傅初雪江黎)已完结小说全集_记忆最后三个月,妻子在外风花雪月(傅初雪江黎)都市言情必读_记忆最后三个月,妻子在外风花雪月(傅初雪江黎)</a> <span class="text-muted">神书阁</span> <div>记忆最后三个月,妻子在外风花雪月(傅初雪江黎)已完结小说全集_记忆最后三个月,妻子在外风花雪月(傅初雪江黎)都市言情必读_记忆最后三个月,妻子在外风花雪月(傅初雪江黎)主角:傅初雪江黎简介:暗恋校花的第三年,我洒脱的放弃了,跟一直追在我身后的傅初雪结了婚。五年婚姻,我为她掏心掏肺,她却开始夜不归宿,直到我在她的电脑里发现一段视频。“我根本不爱江黎,追他不过是为了证明校花再漂亮也抢不过我,嫁他更是因</div> </li> <li><a href="/article/1947460818027212800.htm" title="0基础学画画(稀疏草原),连载75/100天" target="_blank">0基础学画画(稀疏草原),连载75/100天</a> <span class="text-muted">大鱼漫说</span> <div>大家好,我是大鱼漫说,你们可以叫我大鱼,我现在是一位零基础学习绘画的程序员。每日一问~小鱼问:procreate有哪些好用的快捷键吗?我每次都是去一个一个点击选择。大鱼答:有,最常用的就是撤退和前进,两个手指单击就是撤退,三个手指单击就是快进;再有就是三指上划,可以打开设置键,选择复制、粘贴、剪切等;四指点击屏幕是全屏,两指捏合可以快速放大缩小。这些差不多就够用了,其他的大鱼用的也比较少。打卡画画</div> </li> <li><a href="/article/1947460819205812224.htm" title="2024《逃脱 탈주》韩国电影【1080p韩语中字】免费在线观看完整未删减版夸克网盘高清迅雷百度云网盘资源" target="_blank">2024《逃脱 탈주》韩国电影【1080p韩语中字】免费在线观看完整未删减版夸克网盘高清迅雷百度云网盘资源</a> <span class="text-muted">优惠攻略官</span> <div>《逃脱》(韩语:탈주,英语:Escape)是一部2024年上映的韩国动作电影,由李宗弼执导,李帝勋和具教焕主演。这部电影讲述了朝鲜士兵圭南(由李帝勋饰演)梦想着越过铁栏杆,逃离朝鲜追求自由的故事。在逃亡过程中,他与决心阻止他的朝鲜保卫部军官贤尚(由具教焕饰演)之间展开了一场紧张的逃亡与追击战。提示:文章排版原因,观影资源链接地址放在文章结尾,往下翻就行提示:文章排版原因,观影资源链接地址放在文章结</div> </li> <li><a href="/article/1947460820455714816.htm" title="警察蜀黍没教过你的这条反诈秘籍" target="_blank">警察蜀黍没教过你的这条反诈秘籍</a> <span class="text-muted">木门_</span> <div>不少人心里都充满着这样的疑问:为什么街头巷尾都是宣传防骗的海报、标语?为什么社区民警整天不厌其烦的,像保险推销员一样上门发小传单?为什么要让我们装各种App、小程序,关注各种反诈公众号、视频号?诈骗案件真的那么多吗?而且,这些骗术太容易识别了吧?怎么会有那么多傻子?在宣传防诈骗的工作中,我听到群众说的最多的三种回应是:①不贪心不就不会被骗了吗?这些人,就是爱贪小便宜,活该!②我没钱可骗,怕什么?你</div> </li> <li><a href="/article/1947460814973759488.htm" title="每日面试题08:wait()和sleep()的区别" target="_blank">每日面试题08:wait()和sleep()的区别</a> <span class="text-muted"></span> <div>Java多线程核心:wait()与sleep()的区别与应用场景详解在Java多线程编程中,wait()和sleep()是两个控制线程执行流程的重要方法,但它们的设计定位和使用场景截然不同。本文将从底层机制、调用条件、锁行为、异常处理等维度深入解析两者的差异,并结合实际场景说明如何选择使用。一、前置知识:线程的状态与同步机制在理解wait()和sleep()前,需要明确两个基础概念:线程状态:Ja</div> </li> <li><a href="/article/1947460562879311872.htm" title="【iOS】锁[特殊字符]" target="_blank">【iOS】锁[特殊字符]</a> <span class="text-muted"></span> <div>文章目录前言1️⃣什么是锁?1.1基本概念1.2锁的分类2️⃣OC中的常用锁2.1OSSpinLock(已弃用):“自旋锁”的经典代表为什么尽量在开发中不使用自旋锁自旋锁的本质缺陷:忙等待(BusyWaiting)os_unfair_lock的局限性:不适用于复杂场景苹果的官方建议:优先使用更高效的锁2.2dispatch_semaphore_t(GCD信号量):“高性能通用锁”2.3pthrea</div> </li> <li><a href="/article/1947460436496543744.htm" title="C++之constexpr和常量表达式" target="_blank">C++之constexpr和常量表达式</a> <span class="text-muted">掘根</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>常量表达式常量表达式(constexpression)是指值不会改变并且在编译过程就能得到计算结果的表达式。显然,字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。后面将会提到,C++语言中有几种情况下是要用到常量表达式的。一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定,例如:constintmax_files=20;//max_files是常量表达式co</div> </li> <li><a href="/article/1947460437868081152.htm" title="天呐!创投杯量化私募周一丰马建军不能提现大揭秘!投资被骗可追回" target="_blank">天呐!创投杯量化私募周一丰马建军不能提现大揭秘!投资被骗可追回</a> <span class="text-muted">公正公平</span> <div>我们接到多起投资者举报,称有人冒充知名财经分析师(知名人物大学教授经济学家,上市企业公司及项目和高管)【创投杯量化私募周一丰马建军】,利用【创投杯量化私募周一丰马建军】的声誉和影响力进行诈骗活动。当你看到这篇文章的时候说明你正深陷一场精心准备的騙局之中!如果是还没有投资,千万不要抱有侥幸心理,一定要及时远离!一定不要打草惊蛇一旦遭遇下述相关投资交易资金出不来及时求助文章最下方联系电话!骗子冒充银龙</div> </li> <li><a href="/article/1947460184695697408.htm" title="今年的List又可以划掉一项了" target="_blank">今年的List又可以划掉一项了</a> <span class="text-muted">爱做梦的水瓶座怪小孩</span> <div>2018.10.20乌镇西栅游客中心年华似水匆匆一瞥,多少岁月轻描淡写。今天的乌镇好是热闹,当乌镇遇到戏剧节,一些都变得沸腾起来了。</div> </li> <li><a href="/article/1947460184297238528.htm" title="【考公资料】最新2026公考资料大汇总,公考背诵材料,岗位面试题合集,持续更新。" target="_blank">【考公资料】最新2026公考资料大汇总,公考背诵材料,岗位面试题合集,持续更新。</a> <span class="text-muted">xiaopengbc</span> <a class="tag" taget="_blank" href="/search/%E8%80%83%E5%85%AC/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/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a> <div>我觉得主要是因为复习对应着考试吧。一般预习是在正式学知识前,大致了解一下,有利于正式学的时候心中有数。复习就是为了这个考试而看书学习,目的是为了参加考试,而不是大致了解。不过放心吧,大多数人都是提前几个月看书,不会把战线拉的特别久,你现在开始准备复习就好啦。因为很网盘内容太多了文件太大了,需要开通网盘会员才能存储,所以我这里分享了非会员的领取方式,可以扩大网盘空间。【必需使用手机转存】,才可以领取</div> </li> <li><a href="/article/1947460179641561088.htm" title="他居然把红色用活了,果然是大师,王沂东画的女人姿态妖娆不艳俗" target="_blank">他居然把红色用活了,果然是大师,王沂东画的女人姿态妖娆不艳俗</a> <span class="text-muted">净心斋书画馆</span> <div>他居然把红色用活了,果然是大师,王沂东画的女人姿态妖娆不艳俗!独立思考,这是近代很多画家都提倡的,他也是一些前辈们,他们再油画领域做出了巨大贡献,是我国近代油画发展的前驱人物,卡门经常关注的话题就是如何独立思考。这是一个画家应该考虑的问题,还有一个问题就是作为画家如何才能画出一副优秀的作品,能引导后世画家的优秀作品,然而油画创作即使很简单,根本不需要花费太大的心思,很多人之所以创作出不来,大多眼高</div> </li> <li><a href="/article/1947460182158143488.htm" title="冷门生意有哪些?十大冷门生意利润高推荐_" target="_blank">冷门生意有哪些?十大冷门生意利润高推荐_</a> <span class="text-muted">测评君高省</span> <div>时代飞速发展,难免导致现代人生活节奏较快,物价不断地上涨,成年人为了改善生活、为了养家糊口,不得不工作挣钱。如果想时间自由支配,收入高且不用那么劳累,可以尝试一些低成本但利润高的小生意。高省APP佣金更高,模式更好,终端用户不流失。【高省】是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,也期待你的加入。古楼导师高省邀请码518518,注册送2皇冠会员,送万元推广大礼包,教你如何1年</div> </li> <li><a href="/article/1947460178387464192.htm" title="宗毅说 | 乌卡瑟时代的生存思考" target="_blank">宗毅说 | 乌卡瑟时代的生存思考</a> <span class="text-muted">裂变学院</span> <div>今天,互联网经济、人工智能、全球化发展对我们的影响,要比我们想象得大得多。在多股合力的相互作用下,这个时代的社会特征、商业特征与之前相比显著不同,我称之为乌卡瑟“VUCASE”。备注:乌卡瑟(VUCASE)这个术语是我自创的,来自于乌卡(VUKA)。VUCA是Volatility(易变性),Uncertainty(不确定性),Complexity(复杂性)、Ambiguity(模糊性)这四个英文单</div> </li> <li><a href="/article/1947460051157446656.htm" title="钱的故事" target="_blank">钱的故事</a> <span class="text-muted">蟹先生的咖啡屋</span> <div>钱的故事picturefromwww.pexels.com昨天看到一句话,大意是“钱在不断地流通,遇到过许多人,许多事。”一百的人民币肯定没有一元硬币的经历有趣,即使它的价值是百元的百分之一。坐公交,坐地铁,常常会用到一元硬币;足球比赛开球的优先权,也会用到一元人硬币;就算在街角,乞丐的碗里,也会有许多一元硬币。在不知名的小乡村,买菜用的大都是一元一角;在许愿池子里,也有许多一元硬币。孩子常常玩一</div> </li> <li><a href="/article/1947459920232247296.htm" title="#感恩手记#16/365" target="_blank">#感恩手记#16/365</a> <span class="text-muted">斯黛拉世界</span> <div>#PhotoReading超速阅读课#PR学习的最后一天,完成了一个不可思议的学习,一天阅读4本书。你相信吗?我真的相信,看到自己画出的思维导图更加确信自己真真正正的看完4本书并找到自己读这4本书的目的和答案。三天前的我还抱着一个怀疑的态度,现在的我是全然相信自己已经拥有这个不可思议的阅读能力。我相信这个阅读能力对我未来的规划发展起到一个重要的作用。谢谢这三天以来石森老师的教导,张銘老师接地气的翻</div> </li> <li><a href="/article/1947459921490538496.htm" title="心存善意,积极面对每一天" target="_blank">心存善意,积极面对每一天</a> <span class="text-muted">悦耳he</span> <div>昨晚去看了《哪吒》,感动于哪吒的那句“我命由我不由天,是仙是魔,我自己说了算”。一个人的出身是命,后面的发展全凭个人努力。哪吒一出生,就发生了那些幺蛾子事,大家都认为他是妖怪。在他很小的时候,只要出了自己家的大门,就不被善待,大家见他就朝他扔东西,连外面唯一想和他踢毽子的小女孩也被大人抱走。于是他开始变得坚强,变得顽皮,来伪装自己,不被别人欺负,让人人都怕他。如果可以的话,没有人会选择活得这样累。</div> </li> <li><a href="/article/1947459922753024000.htm" title="领悟放下" target="_blank">领悟放下</a> <span class="text-muted">梦缘妞</span> <div>近日突然感受到累与不累只是一种感觉,压力的大小,主要取决于自己的心态,快乐与不快乐,就看你是否学会了放下。放下,是一种生活的大智慧。放下,是一门心灵的学问。放下压力,活得轻松;放下烦恼,活得幸福;放下自卑,活得自信;放下懒惰,活得充实;放下消极,活得成功;放下抱怨,活得舒坦;放下犹豫,活得潇洒;放下狭隘,活得自在人生在世,有些事情是不必在乎的,有些东西是必须清空的,因此只有该放下时放下,你才能够腾</div> </li> <li><a href="/article/1947459806067486720.htm" title="网络大提速,RDMA,IB,iWrap" target="_blank">网络大提速,RDMA,IB,iWrap</a> <span class="text-muted">数据存储张</span> <a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8%E6%8A%80%E6%9C%AF%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">存储技术从入门到精通</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</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%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>本章第一节介绍的存储设备方面的创新解决了CPU访问存储设备的性能问题。但在实际的业务当中,数据的传输除了在节点内部的CPU与存储设备间外,节点之间也存在数据传输的需求。本节我们就介绍在网络传输方面是如何提速的。在介绍新的网络技术之前,我们看看传统网络是如何传输数据的,比如我们常见的以太网。当节点0向节点1发送数据时,其整个数据处理的流程如下图所示,可以看到其过程还是比较复杂的。在节点0,应用程序首</div> </li> <li><a href="/article/1947459793065144320.htm" title="这些潜规则应该知道:领导心目中,提拔一个人的五大标准" target="_blank">这些潜规则应该知道:领导心目中,提拔一个人的五大标准</a> <span class="text-muted">梓树花开</span> <div>文/马梓开郑重声明:本文为作者原创发布,全网维权,侵权必究。在企业中也好,在事业单位中也好,想获得升职,就要善于揣摩领导提拔下属的标准,就要明白自己怎么做才可能获得升职机会。虽然每个单位不同领导提拔人的标准有所不同,但是这不妨碍我们找出领导提拔人的共同标准。知道了领导们的提拔标准,自己怎么做才是合适的,怎么做才是有效的,我们就一清二楚了。如果一个人很想往上爬,只知道干好自己的工作,却不懂领导的提拔</div> </li> <li><a href="/article/1947459665998704640.htm" title="遗落的光阴" target="_blank">遗落的光阴</a> <span class="text-muted">古诗风光</span> <div>第七篇,小明的学生时代。那时候小明还没有手机,导航去哪里是不太可能实现的,所以去哪里一般是靠询问路边小店的老板,不过有的时候他还根据路标去寻找。他之前也有过几次的独自一个人溜达半个城的经历,所以从心里上来说问题不大。小明自信的从学校出发了,他出发前就询问了二中的大概位置,于是就沿着大陆出发了,因为他也不清楚学校得具体位置所以就一股劲的向前走去。他的学校和二中之间还是比较好走的,走到头右转走个100</div> </li> <li><a href="/article/1947459553469722624.htm" title="数据呈现高阶技巧:散点图与桑基图的独特价值" target="_blank">数据呈现高阶技巧:散点图与桑基图的独特价值</a> <span class="text-muted"></span> <div>在数据可视化的工具箱中,有些图表看似小众,却能解决特定场景的分析难题。当你需要探索两个变量的关联,或追踪复杂的流量路径时,散点图和桑基图会成为强大的武器。本文将深入解析这两种图表的适用场景、分析逻辑和实战案例,帮你突破传统图表的局限,挖掘更深入的业务洞察。一、散点图:探索变量关系,发现群体特征散点图的核心价值在于展示大样本中两个变量的分布关系。它不像柱状图那样聚焦分类对比,也不像折线图那样追踪时间</div> </li> <li><a href="/article/1947459301203308544.htm" title="实时数据可视化的“心跳”设计:毫秒级延迟下的动态图表抗闪烁优化方案" target="_blank">实时数据可视化的“心跳”设计:毫秒级延迟下的动态图表抗闪烁优化方案</a> <span class="text-muted">大美工控设计师</span> <a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a> <div>内容摘要在实时数据可视化中,动态图表的抗闪烁优化是一个关键问题。毫秒级的数据更新频率虽然能提供极高的实时性,但也容易导致图表闪烁,严重影响用户体验。这种闪烁不仅让人眼花缭乱,还可能掩盖重要的数据变化。那么,如何在保持毫秒级更新的同时,有效减少图表闪烁呢?本文将深入探讨动态图表抗闪烁的优化方案,从技术原理到实际应用,为你揭示如何打造平滑、流畅的实时数据可视化效果。第一章:实时数据可视化的“心跳”现象</div> </li> <li><a href="/article/1947459158739578880.htm" title="疑华为Mate30曝光:五摄/麒麟990/液冷或地表最强" target="_blank">疑华为Mate30曝光:五摄/麒麟990/液冷或地表最强</a> <span class="text-muted">f5098972f08d</span> <div>自从华为MateX折叠屏5G手机惊艳登场之后,关于华为下一代新手机的传闻也不绝于耳。近日,就有不少关于疑似华为Mate30新5G手机曝光的消息,如采用后置五摄+麒麟990+液冷散热+5200mAh电池的强悍配置,堪称最强5G拍照手机。图片发自App疑华为Mate30曝光(图片:author.baidu)从不少曝光的资料和渲染图猜测,华为这款新机正面配备了6.4英寸1080X2340像素的AMOLE</div> </li> <li><a href="/article/1947459159993675776.htm" title="2018-11-26" target="_blank">2018-11-26</a> <span class="text-muted">杰哥大宁</span> <div>1.付出不亚于任何人的努力2.要谦虚,不要骄傲3.要每天反省4.活着,就要感谢5.积善行,思利他6.不要有感性的烦恼今日分享,今日组里来了三单,一波三折终于批了两单,一单等补产调进件,虽然单子不大,但是很开心,tangyan学完六项精进后进步了不少,做单对待客户耐心十足,本月最后几天加油</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>