《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/1901891388744724480.htm" title="Ansible自动化运维工具深度研究报告" target="_blank">Ansible自动化运维工具深度研究报告</a> <span class="text-muted">萧十一郎@</span> <a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E7%A7%91%E6%99%AE/1.htm">知识科普</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>目录一、引言1.1研究背景与目的1.2研究方法与数据来源1.3报告结构二、Ansible基础概述2.1Ansible简介2.2发展历程2.3架构与工作原理2.4特点优势三、Ansible安装与配置3.1安装环境准备3.2安装步骤详解3.3配置文件解读3.4密钥对配置与免密登录设置四、Ansible核心功能与模块4.1命令行模块使用4.2Playbook详解4.3常用模块分析4.4模块扩展与自定义五</div> </li> <li><a href="/article/1901891389386452992.htm" title="手把手教你调用API接口,轻松获取淘宝/京东/拼多多商品数据" target="_blank">手把手教你调用API接口,轻松获取淘宝/京东/拼多多商品数据</a> <span class="text-muted">Elijah Laam</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>想要获取淘宝、京东、拼多多等电商平台的商品数据,API接口是你的最佳选择。本文将手把手教你如何调用API接口,轻松获取所需商品数据。一、准备工作注册账号并获取API密钥:访问目标电商平台的开放平台网站(例如:淘宝开放平台、京东开放平台、拼多多开放平台)。注册开发者账号并创建应用,获取API调用所需的AppKey和AppSecret等密钥信息。阅读API文档:仔细阅读目标API接口的文档,了解接口的</div> </li> <li><a href="/article/1901891390023987200.htm" title="GraphQL 是一种现代化的 API 查询语言和运行时" target="_blank">GraphQL 是一种现代化的 API 查询语言和运行时</a> <span class="text-muted">getapi</span> <a class="tag" taget="_blank" href="/search/graphql/1.htm">graphql</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>GraphQL是一种现代化的API查询语言和运行时,由Facebook开发并于2015年开源。它提供了一种更高效、灵活的方式来获取数据,解决了传统RESTfulAPI中的一些痛点(如过度获取或不足获取数据)。GraphQL在全栈开发中越来越受欢迎,特别是在需要复杂数据交互的应用中。以下是关于GraphQL的详细介绍以及如何在项目中使用它的指南。1.GraphQL的核心特点GraphQL的主要优势在</div> </li> <li><a href="/article/1901891261846056960.htm" title="结构化的“问题链”方法如何在复杂问题分析和解决方面发挥作用" target="_blank">结构化的“问题链”方法如何在复杂问题分析和解决方面发挥作用</a> <span class="text-muted">由数入道</span> <a class="tag" taget="_blank" href="/search/AI%E8%BE%85%E5%8A%A9%E6%95%99%E5%AD%A6/1.htm">AI辅助教学</a><a class="tag" taget="_blank" href="/search/%E8%AE%A4%E7%9F%A5%E6%A1%86%E6%9E%B6/1.htm">认知框架</a> <div>它是什么?━━━━━━━━━━━━━━━━━━“问题链”是一种结构化的探究方法,用于系统地挖掘和解析复杂问题。它不仅仅是一系列问题,而是一种思维框架,旨在通过层层递进的提问,从表象深入到问题的本质和根源,并向下延伸至解决方案的细节。核心概念细化:提问链的本质:双向探索:问题链并非单向度的线性思维,而是包含上溯性提问(溯源问题根因)和下延性提问(推演解决方案和细节)的双向过程。上溯(溯源性提问):如</div> </li> <li><a href="/article/1901891262345179136.htm" title="追踪问题链中问题的上溯和下延" target="_blank">追踪问题链中问题的上溯和下延</a> <span class="text-muted">由数入道</span> <a class="tag" taget="_blank" href="/search/AI%E8%BE%85%E5%8A%A9%E6%95%99%E5%AD%A6/1.htm">AI辅助教学</a><a class="tag" taget="_blank" href="/search/%E6%80%9D%E7%BB%B4%E6%A8%A1%E5%9E%8B/1.htm">思维模型</a><a class="tag" taget="_blank" href="/search/%E8%AE%A4%E7%9F%A5%E6%A1%86%E6%9E%B6/1.htm">认知框架</a> <div>一、理解问题链的本质首先,我们需要认识到问题链的本质并非简单的线性关系,而更像是一个复杂的网络或树状结构。向上溯源(RootCauseAnalysis):追溯问题“向上发芽”意味着我们要找到当前问题的根源,即是什么更深层次的问题、假设、前提或信息缺失导致了当前问题的产生。这就像追溯树木的根系,找到滋养它的土壤和水源。向下延展(ConsequenceAnalysis&Exploration):问题“</div> </li> <li><a href="/article/1901889499521150976.htm" title="Java~二叉树进阶练习题:根据先序遍历和中序遍历构建二叉树 与 根据后序遍历和中序遍历构建二叉树" target="_blank">Java~二叉树进阶练习题:根据先序遍历和中序遍历构建二叉树 与 根据后序遍历和中序遍历构建二叉树</a> <span class="text-muted">Java墨言</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</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%AE%97%E6%B3%95/1.htm">算法</a> <div>《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!先序遍历中第一个一定是根结点。中序遍历中根结点左子树的所有结点一定在根结点的左边,右子树的所有结点一定在根结点的右边。所有中序遍历的序列组成可以表示为:左子树结点+根结点+右子树结点。后序遍历中最后一个结点一定是根结点。****根据先序遍历和中序遍历构建二叉树解题细想:**设置变量inedx方便从p</div> </li> <li><a href="/article/1901889372731535360.htm" title="iOS底层原理之Category分类实现原理解析" target="_blank">iOS底层原理之Category分类实现原理解析</a> <span class="text-muted">UaCode</span> <a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E7%B1%BB/1.htm">分类</a><a class="tag" taget="_blank" href="/search/objective-c/1.htm">objective-c</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/1.htm">编译原理</a> <div>Category是Objective-C中一种强大的特性,它允许我们向现有的类中添加新的方法,而无需修改原始类的源代码。在本文中,我们将深入探讨Category的实现原理,并提供相应的源代码示例。在Objective-C中,Category是一种用于扩展现有类的机制。通过Category,我们可以为现有的类添加新的方法,或者重写现有类的方法。使用Category,我们能够在不修改原始类的情况下,为</div> </li> <li><a href="/article/1901889373180325888.htm" title="B站SEO优化:解锁流量密码,让创作之花绽放" target="_blank">B站SEO优化:解锁流量密码,让创作之花绽放</a> <span class="text-muted">ckx666666cky</span> <a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</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/%E5%B0%8F%E7%A8%8B%E5%BA%8F/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>B站已从二次元爱好者的小众天地,蜕变为容纳百川的内容海洋。无数创作者如繁星般闪烁,而B站关键词排名优化(SEO)则是让你的星光更为璀璨的秘术。掌握这门技艺,你的创作便能穿越信息的迷雾,直达知音心间;忽视它,再精彩的内容也可能如珍珠沉入海底,无人问津。ckx666想象B站的算法如同一位严苛而公正的评委,666cky它用冷静的眼光审视每一件作品,通过复杂的评分体系决定内容的命运。了解这位评委的喜好,便</div> </li> <li><a href="/article/1901889120507064320.htm" title="2025 职业革命:AI 重构就业图谱的生存法则" target="_blank">2025 职业革命:AI 重构就业图谱的生存法则</a> <span class="text-muted">RPAdaren</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/%E9%87%8D%E6%9E%84/1.htm">重构</a> <div>一、技术迭代下的产业剧变2025年的春天,全球科技界正在见证人工智能的第三次浪潮。根据麦肯锡最新发布的《全球就业趋势报告》,大模型技术已渗透至83%的行业领域。以医疗行业为例,IBMWatson的诊断准确率已达98.7%,超越资深医师平均水平;金融领域,摩根大通的AI交易系统每日处理超2000万笔订单,效率提升400%。这些数据背后,是AI技术从单一功能向通用智能的跨越式发展。二、职业版图的重构逻</div> </li> <li><a href="/article/1901888740964495360.htm" title="iOS - KVC(Key-Value Coding)初识及实现机制" target="_blank">iOS - KVC(Key-Value Coding)初识及实现机制</a> <span class="text-muted">wahkim</span> <a class="tag" taget="_blank" href="/search/iOS/1.htm">iOS</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91/1.htm">开发</a><a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a> <div>iOS-KVC(Key-ValueCoding)初识及实现机制概念使用符合键值编码的对象KVC提供的API方法KVC设值KVC取值代码事例关联文章参考概念键值编码是一种由NSKeyValueCoding非正式协议启用的机制,对象采用该机制来提供对其属性的间接访问。当对象符合键值编码时,其属性可通过字符串参数通过简洁、统一的消息传递接口进行寻址。这种间接访问机制补充了实例变量及其相关访问器方法提供的</div> </li> <li><a href="/article/1901888741941768192.htm" title="YOLOv8 的简介 及C#中如何简单应用YOLOv8" target="_blank">YOLOv8 的简介 及C#中如何简单应用YOLOv8</a> <span class="text-muted">码上有潜</span> <a class="tag" taget="_blank" href="/search/YOLOv8/1.htm">YOLOv8</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a> <div>YOLOv8是YOLO(YouOnlyLookOnce)系列中的最新版本,是一种用于目标检测和图像分割的深度学习模型。YOLO模型以其快速和准确的目标检测性能而著称,广泛应用于实时应用程序中。主要特点高效性:YOLOv8在保持高检测速度的同时,进一步提高了检测精度。端到端训练:可以直接从图像输入端到分类结果输出,简化了训练和部署过程。改进的架构:包括更深的网络结构、更复杂的特征提取方法以及更高效的</div> </li> <li><a href="/article/1901888742403141632.htm" title="三星机试 一些需要会的数据结构" target="_blank">三星机试 一些需要会的数据结构</a> <span class="text-muted">码农珊珊</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> <div>树structTreeNode{intval;structTreeNode*left;structTreeNode*right;}structTreeNode*createNode(intval){structTreeNode*node=(structTreeNode*)malloc(sizeof(structTreeNode));node->val=val;node->left=node->ri</div> </li> <li><a href="/article/1901888236280672256.htm" title="CSS语言的数论算法" target="_blank">CSS语言的数论算法</a> <span class="text-muted">宇瞳月</span> <a class="tag" taget="_blank" href="/search/%E5%8C%85%E7%BD%97%E4%B8%87%E8%B1%A1/1.htm">包罗万象</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>CSS语言的数论算法引言数论作为数学的一个重要分支,主要研究整数及其性质。数论的基本问题包括素数的性质、最大公约数、最小公倍数、同余等,同时数论在密码学、计算机科学等领域具有广泛的应用。而CSS(层叠样式表)本身是一种样式表语言,用于控制HTML文档的样式和布局,虽然CSS本身并不能直接进行复杂的数论运算,但它可以和JavaScript等编程语言结合使用,实现数论算法的可视化与交互。本文将探讨数论</div> </li> <li><a href="/article/1901887479229771776.htm" title="9、STL中的multimap使用方法" target="_blank">9、STL中的multimap使用方法</a> <span class="text-muted">周Echo周</span> <a class="tag" taget="_blank" href="/search/STL/1.htm">STL</a><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><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/%E5%90%8E%E7%AB%AF/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/%E9%93%BE%E8%A1%A8/1.htm">链表</a> <div>一、了解multimap是一个允许键(key)重复的关联容器。适合用于一对多的更新。允许多个键拥有相同的值。基于红黑树。multimap特性键允许重复:允许多个键有相同的值。无[]运算法:禁止用下标访问,因为键不唯一。排序:默认升序规则,可以自定义。性能:基于红黑树的实现。时间复杂度:插入/删除/查找是O(logn)不支持直接修改键:键是排序好的。直接修改会改变顺序。如果要修改,先删除要修改的键,</div> </li> <li><a href="/article/1901887480634863616.htm" title="【卫星分享】吉林一号卫星介绍" target="_blank">【卫星分享】吉林一号卫星介绍</a> <span class="text-muted">泽奥zeo</span> <a class="tag" taget="_blank" href="/search/%E5%90%89%E6%9E%97%E4%B8%80%E5%8F%B7/1.htm">吉林一号</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86/1.htm">图像处理</a><a class="tag" taget="_blank" href="/search/RS/1.htm">RS</a><a class="tag" taget="_blank" href="/search/%E9%81%A5%E6%84%9F%E5%BD%B1%E5%83%8F/1.htm">遥感影像</a><a class="tag" taget="_blank" href="/search/%E5%8D%AB%E6%98%9F%E7%A7%91%E6%99%AE/1.htm">卫星科普</a> <div>在当今数字化与信息化飞速发展的时代,卫星遥感技术已成为人类探索地球、监测环境、服务社会的重要手段。作为我国自主研发的商用遥感卫星星座,“吉林一号”凭借其卓越的技术性能和广泛的应用场景,成为了我国航天领域的一颗璀璨明珠。它不仅填补了我国在商业遥感领域的空白,还为全球用户提供了高分辨率、高质量的遥感数据服务。接下来,我们将从发展历程、技术特点、成像原理以及数据获取方式四个方面,深入解读“吉林一号”卫星</div> </li> <li><a href="/article/1901887101163597824.htm" title="探索高效查找的艺术:解锁二分查找的神奇力量" target="_blank">探索高效查找的艺术:解锁二分查找的神奇力量</a> <span class="text-muted">孤舟独钓寒江</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>在这个信息爆炸的时代,每一秒都有海量数据在我们指尖穿梭。想象一下,若能在眨眼间从这浩瀚数据中精准捕获所需信息,岂不是如同拥有超能力一般?而这,正是“二分查找”——这一算法界璀璨明珠所赋予我们的力量!文章目录跨越数据海洋的极速之旅:揭秘二分查找的非凡魅力!一、超速直击:二分查找,时间的魔术师!二、简约而不简单:算法之美,尽在掌握!三、解密二分查找的魔法公式向未来进发跨越数据海洋的极速之旅:揭秘二分查</div> </li> <li><a href="/article/1901886597230555136.htm" title="最大公因数/最大公倍数" target="_blank">最大公因数/最大公倍数</a> <span class="text-muted">X_Eartha_815</span> <a class="tag" taget="_blank" href="/search/C%2B%2B%2F%E7%AE%97%E6%B3%95%2F%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">C++/算法/数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>目录一、最大公因数-辗转相除法二、最大公倍数-(有了最大公因数)最多个数的最大公倍数三、实战-L1-009N个数求和思路:代码:一、最大公因数-辗转相除法递归-精简形式intgcd(inta,intb)//求最大公约数{returnb==0?a:gcd(b,a%b);}二、最大公倍数-(有了最大公因数)//最大公倍数intgcm(inta,intb){intgcds=b==0?a:gcd(b,a%</div> </li> <li><a href="/article/1901886219306987520.htm" title="使用 WebP 优化 GPU 纹理占用" target="_blank">使用 WebP 优化 GPU 纹理占用</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>WebP格式相比JPEG/PNG文件更小,可以减少GPU纹理内存占用,提高WebGL/Three.js/3D渲染的性能。为什么WebP能减少GPU内存占用?文件更小→WebP比JPG/PNG压缩率更高,减少纹理上传带宽,提高渲染速度。支持透明度(RGBA)→比PNG更小,适用于UI贴图/透明纹理。减少Mipmaps体积→WebP生成的mipmap纹理占用的GPU内存更少。⚠️但WebP仍然是8-b</div> </li> <li><a href="/article/1901885086119292928.htm" title="09.【C++】list链表(STL中的列表容器,C++封装的带头双向链表,可实现指定类型的增删查改,迭代器操作等功能)" target="_blank">09.【C++】list链表(STL中的列表容器,C++封装的带头双向链表,可实现指定类型的增删查改,迭代器操作等功能)</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/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>目录一.list的介绍及使用1.1list的介绍1.2list的使用1.2.1list的构造1.2.2listiterator迭代器的使用1.2.3listsize&empty大小判空1.2.4listelementaccess头尾引用1.2.5listmodifiers增删查改1.2.6list的迭代器失效1.2.7list排序的使用二.list的模拟实现2.1模拟实现list三.list与ve</div> </li> <li><a href="/article/1901885085544673280.htm" title="【开原宝藏】30天学会CSS - DAY1 第一课" target="_blank">【开原宝藏】30天学会CSS - DAY1 第一课</a> <span class="text-muted">hikktn</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E5%AE%9D%E8%97%8F/1.htm">开源宝藏</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>下面提供一个由浅入深、按步骤拆解的示例教程,让你能从零开始,逐步理解并实现带有旋转及悬停动画的社交图标效果。为了更简单明了,以下示例仅创建四个图标(Facebook、Twitter、Google+、LinkedIn),并在每一步都附带代码展示和讲解。第0步:项目结构说明先准备两个文件:index.htmlHTML的主体结构style.css样式代码,控制图标外观与动画目录结构如下:project/</div> </li> <li><a href="/article/1901884957781979136.htm" title="GraphQL 联邦架构:构建可扩展的分布式 API 生态系统" target="_blank">GraphQL 联邦架构:构建可扩展的分布式 API 生态系统</a> <span class="text-muted">全栈探索者chen</span> <a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%88%86%E4%BA%AB/1.htm">知识分享</a><a class="tag" taget="_blank" href="/search/graphql/1.htm">graphql</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a> <div>GraphQL联邦架构:构建可扩展的分布式API生态系统前言随着微服务架构在企业级应用中的广泛应用,各个服务需要独立演进与部署,API层的设计逐渐成为开发者面临的重要挑战。GraphQL作为一种灵活的数据查询语言,已经在许多项目中取代了传统RESTfulAPI。然而,当业务不断增长、服务拆分越来越细粒度时,单一GraphQL服务往往难以满足扩展性和独立部署的需求。为了解决这一问题,GraphQL联</div> </li> <li><a href="/article/1901884959199653888.htm" title="华为OD机试 - 书籍叠放 - 逻辑分析(Java 2023 B卷 200分)" target="_blank">华为OD机试 - 书籍叠放 - 逻辑分析(Java 2023 B卷 200分)</a> <span class="text-muted">蓝白咖啡</span> <a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAOD/1.htm">华为OD</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E8%AF%95/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/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a> <div>题目描述书籍的长、宽都是整数对应((l,w))。如果书A的长宽度都比B的长宽大时,则允许将B排列放在A上面。现在有一组规格的书籍,书籍叠放时要求书籍不能旋转,请计算最多能有多少个规格书籍能叠放在一起。输入描述输入:books=[[20,16],[15,11],[10,10],[9,10]]说明:总共4本书籍,第一本长度为20宽度为16;第二本书长度为15宽度为11,依次类推,最后一本书长度为9宽度</div> </li> <li><a href="/article/1901884956850843648.htm" title="JVM、MySQL常见面试题(尽力局)" target="_blank">JVM、MySQL常见面试题(尽力局)</a> <span class="text-muted">多敲代码防脱发</span> <a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>JVM篇一.谈一谈JDK、JRE、JVM分别是什么,有什么联系?1.JDK是Java工具包,里面包含了JRE、Javac编译器等。2.JRE是java运行环境,里面包含了JVM、JavaSE标准库类等。3.JVM是Java虚拟机,运行编译后的.class的文件,调用系统API运行。JDK=JRE+Javac编译器JRE=JVM+JavaSE标准库二.JVM运行时数据区由哪几部分构成,分别有什么作用</div> </li> <li><a href="/article/1901884704676704256.htm" title="轻量级模块化前端框架:快速构建强大的Web界面" target="_blank">轻量级模块化前端框架:快速构建强大的Web界面</a> <span class="text-muted">小杰~</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>轻量级模块化前端框架:快速构建强大的Web界面在当今快节奏的Web开发环境中,选择一个高效且灵活的前端框架至关重要。UIkit是一个轻量级的模块化前端框架,旨在帮助开发者快速构建功能强大且响应迅速的Web界面。UIkit提供了丰富的组件和工具,使开发者能够轻松实现现代化的设计效果。无论是构建复杂的用户界面还是简单的网页布局,UIkit都能提供出色的支持。其模块化设计使得开发者可以根据项目需求灵活选</div> </li> <li><a href="/article/1901884703707820032.htm" title="问题链的拓扑学重构" target="_blank">问题链的拓扑学重构</a> <span class="text-muted">由数入道</span> <a class="tag" taget="_blank" href="/search/AI%E8%BE%85%E5%8A%A9%E6%95%99%E5%AD%A6/1.htm">AI辅助教学</a><a class="tag" taget="_blank" href="/search/%E6%8B%93%E6%89%91%E5%AD%A6/1.htm">拓扑学</a><a class="tag" taget="_blank" href="/search/%E9%87%8D%E6%9E%84/1.htm">重构</a> <div>问题链拓扑学重构目录概念框架与理论基础综合知识图谱(Mermaid图示)核心构成要素与参数解析逻辑链条方法论详解与数学模型4.1根源溯源——分形式5Whys与RCA4.2网络建模——系统动力学与贝叶斯网络4.3维度跃迁——第一性原理与跨模态映射4.4时空折叠——历史回溯与未来推演四维操控模型——知识精髓工具、案例及实践方法注意事项、终止机制与系统自适应未来拓展与研究方向总结与战略价值1.概念框架与</div> </li> <li><a href="/article/1901882184411705344.htm" title="Linux缓冲区续集——手撕fopen、fwrite、fflush、fclose等C库函数" target="_blank">Linux缓冲区续集——手撕fopen、fwrite、fflush、fclose等C库函数</a> <span class="text-muted">橙予清的zzz~</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80%E7%9F%A5%E8%AF%86%E7%82%B9/1.htm">C语言知识点</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>目录头文件:接下来就是设计这四个函数:Mystdio.c重点讲一讲_fflush函数的底层实现原理:所以数据内容的经过如下:总结:执行——测试写好的这4个函数:运行结果:修改测试代码:运行结果:回顾上文,我讲述了关于Linux文件系统中关于缓冲区的含义和理解,用一个特殊案例表明了我们所了解到的缓冲区是C语言库函数中特有的,而系统调用函数没有。此外就是C库缓冲区的刷新策略,共有三种:立即刷新、行缓冲</div> </li> <li><a href="/article/1901882185133125632.htm" title="说说你对fiber架构的理解?解决了什么问题" target="_blank">说说你对fiber架构的理解?解决了什么问题</a> <span class="text-muted">谭tan.</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a> <div>Fiber架构是React16中引入的一种新的协调机制,用于解决React在渲染过程中可能出现的阻塞问题,提高用户界面的响应性能。以下是我对Fiber架构的理解以及它所解决的问题:解决长时间阻塞问题:在传统的React同步渲染方式下,当React开始进行组件渲染时,它会一直执行到渲染完成或遇到I/O操作等阻塞任务。这意味着在渲染过程中,React无法中断,会导致页面出现长时间的空白或无响应情况。F</div> </li> <li><a href="/article/1901882185623859200.htm" title="Python中的time模块" target="_blank">Python中的time模块</a> <span class="text-muted">小白的高手之路</span> <a class="tag" taget="_blank" href="/search/python%E5%AD%A6%E4%B9%A0/1.htm">python学习</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%EF%BC%88DL%EF%BC%89/1.htm">深度学习(DL)</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在Python中,importtime这一行代码的作用是导入名为time的标准库模块,这个模块提供了与时间相关的各种函数和工具,用于处理时间戳、时间延迟、时间格式转换等操作。1、time模块的常见用途和核心函数:1.1获取时间戳timestamp=time.time()print(timestamp)#输出如:1717666785.123456time.time()返回当前时间的时间戳(以秒为单位</div> </li> <li><a href="/article/1901882058158960640.htm" title="东隆科技携手PRIMES成立中国校准实验室,开启激光诊断高精度新时代" target="_blank">东隆科技携手PRIMES成立中国校准实验室,开启激光诊断高精度新时代</a> <span class="text-muted">东隆科技</span> <a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%8A%80/1.htm">科技</a> <div>3月12日,上海慕尼黑光博会期间,东隆科技正式宣布与德国PRIMES共同成立“中国校准实验室”。这一重要合作标志着东隆科技在本地化服务领域的优势与PRIMES在激光光束诊断领域的顶尖技术深度融合,旨在为中国客户提供更快速、更高精度的服务以及本地化的技术支持。此次成立的“中国校准实验室”不仅是东隆科技在激光技术服务领域的重要突破,更是激光行业质量保证与创新能力提升的重要里程碑。实验室将专注于测量设备</div> </li> <li><a href="/article/1901881806022569984.htm" title="(LeetCode 热题 100) 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)" target="_blank">(LeetCode 热题 100) 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)</a> <span class="text-muted">岁忧</span> <a class="tag" taget="_blank" href="/search/java%E7%89%88%E5%88%B7%E9%A2%98/1.htm">java版刷题</a><a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/%E7%83%AD%E9%A2%98/1.htm">热题</a><a class="tag" taget="_blank" href="/search/100/1.htm">100</a><a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%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><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>题目:34.在排序数组中查找元素的第一个和最后一个位置思路:二分查找,但需注意数组为空的情况。C++版本:classSolution{public:vectorsearchRange(vector&nums,inttarget){vectorv={-1,-1};intn=nums.size();if(n==0)returnv;intl=0,r=n-1;while(l<r){intmid=(l+r)</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>