简介

欢迎来到本篇博客——"Python编程入门实战:打造你的第一个Web应用"。无论你是一个初学者,还是有一些编程基础的开发者,我相信你都可以在这篇文章中收获知识和启发。

Python是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而著名。其应用领域非常广泛,从数据分析、机器学习,到网络编程、Web开发,再到系统脚本编写,Python都有着重要的应用。Python的语法简洁易读,使其成为初学者的理想选择,同时Python的丰富库和框架也使得专业开发者能够快速高效地开发应用。

在这篇文章中,我们将专注于如何使用Python进行Web开发。我们的目标是创建一个简单但功能完备的Web应用。我们将首先介绍Python的基础知识,然后深入学习如何使用Python的Flask框架创建Web应用。我们还将介绍如何扩展Web应用的功能,包括数据库操作、表单处理、用户验证等内容,最后我们会学习如何测试和部署Web应用。

如果你是Python初学者,不用担心。我们将尽可能详细地解释每一步,以确保你能够理解并跟上。如果你已经有一些Python经验,我相信你也可以通过本文学习到新的知识和技巧。无论你的经验如何,我都建议你亲自动手试一试,因为实践是最好的学习方式。

那么,让我们开始吧!

目录

简介

一 Python基础

1.1 Python安装和环境配置

1.2 Python基础语法

二 Python进阶

2.1 列表、字典和集合

2.2 函数和类

2.3 模块和包

三 Web开发基础

3.1 Web应用的工作原理

3.2 HTTP协议基础

四 使用Flask创建Web应用

4.1 Flask简介和安装

4.2 Hello World应用

4.3 路由和视图函数

4.4 模板和静态文件

五 使用Flask-SQLAlchemy处理数据库

5.1 Flask-SQLAlchemy简介和安装

5.2 配置数据库

5.3 定义模型

5.4 查询数据

5.5 插入、更新和删除数据

六 使用Flask-WTF处理表单

6.1 Flask-WTF简介和安装

6.2 定义表单

6.3 渲染表单

6.4 处理表单

七 使用Flask-Login处理用户验证

7.1 Flask-Login简介和安装

7.2 用户模型

7.3 登录和注销

7.4 保护视图

八 使用Flask-Bootstrap增加Web应用的美观性

8.1 Flask-Bootstrap简介和安装

8.2 使用Bootstrap

8.3 定制Bootstrap

九 部署Flask应用

9.1 Gunicorn简介和安装

9.2 使用Gunicorn运行Flask应用

9.3 Nginx简介和安装

9.4 配置Nginx


一 Python基础

在我们开始创建Web应用之前,让我们先确保你已经安装了Python并设置了合适的环境。下面我们将介绍Python的安装和基本语法。

1.1 Python安装和环境配置

Python的安装过程因操作系统的不同而略有不同。一般来说,你可以从Python官网下载最新版本的Python并进行安装。同时,你也可以使用像Anaconda这样的Python发行版,它包含了Python解释器和一系列常用的库和工具。

在安装完Python之后,你可以通过命令行输入python --version来检查Python是否已经成功安装。如果你看到了Python的版本号,那就说明Python已经成功安装了。

为了管理Python的库和依赖,我们推荐使用虚拟环境。你可以使用Python的内置工具venv,或者使用pipenv等第三方工具来创建和管理虚拟环境。

1.2 Python基础语法

Python的语法非常简洁易读。下面我们将简单介绍Python的变量、数据类型和控制结构。

  • 变量:在Python中,你不需要声明变量的类型。你只需要使用等号=来赋值,Python会自动推断出变量的类型。例如,x = 10y = "Hello, world!"

  • 数据类型:Python有多种内置的数据类型,包括整数(int)、浮点数(float)、字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)等。

  • 控制结构:Python支持常见的控制结构,包括if条件语句,forwhile循环,以及try/except错误处理等。

下面是一些简单的例子:

# 变量和数据类型
x = 10
y = 3.14
z = "Hello, world!"
print(x, y, z)# if条件语句
if x > 0:print("x is positive")# for循环
for i in range(5):print(i)# try/except错误处理
try:print(10 / 0)
except ZeroDivisionError:print("Cannot divide by zero")

以上就是Python的基本知识。接下来,我们将更深入地学习Python,并开始创建我们的Web应用。

二 Python进阶

在我们开始创建Web应用之前,让我们更深入地了解一下Python的高级特性,包括列表、字典、集合、函数、类、模块和包。

2.1 列表、字典和集合

Python有几种内置的数据结构,包括列表(list)、字典(dict)和集合(set)。它们非常强大,可以帮助你有效地组织和处理数据。

  • 列表:列表是一个有序的元素集合,可以包含任何类型的元素,包括其他列表。你可以通过索引来访问列表中的元素,也可以使用appendinsertremove等方法修改列表。

  • 字典:字典是一个键值对集合,其中的键必须是不可变的类型,比如整数、字符串或元组,而值可以是任何类型。你可以使用[key]来访问字典中的值,或者使用get方法来获取一个默认值。

  • 集合:集合是一个无序的、不包含重复元素的集合。你可以使用addremove方法来添加或删除元素,也可以使用集合操作,如并集、交集、差集等。

2.2 函数和类

函数和类是Python中的重要概念,它们是实现代码重用和封装的主要方式。

  • 函数:函数是一段有名字的、可以重复使用的代码。你可以使用def关键字来定义函数,然后使用函数名和括号来调用函数。

  • :类是一种定义新类型的方式。你可以使用class关键字来定义类,然后使用类名和括号来创建类的实例。类可以包含属性和方法,属性是类的状态,方法是类的行为。

2.3 模块和包

模块和包是Python组织代码的方式。一个模块是一个包含Python代码的文件,一个包是一个包含模块和其他包的目录。

  • 模块:你可以使用import关键字来导入一个模块,然后使用模块名和点来访问模块中的函数和类。

  • :包是一种组织模块的方式。一个包是一个包含__init__.py文件的目录,你可以使用包名和点来导入包中的模块。

以上就是Python的高级特性。接下来,我们将开始学习如何使用Python的Flask框架创建Web应用。

三 Web开发基础

在我们开始创建Web应用之前,让我们先了解一下Web应用的工作原理和HTTP协议的基础知识。

3.1 Web应用的工作原理

Web应用是一种客户端-服务器应用。在这种模型中,用户通过浏览器(客户端)发送请求到服务器,服务器处理请求并返回响应给客户端,客户端再将响应显示给用户。

一个Web应用通常包括以下部分:

  1. 客户端:客户端通常是一个浏览器,如Chrome或Firefox。客户端负责发送HTTP请求和接收HTTP响应,然后将响应内容显示给用户。

  2. 服务器:服务器是托管Web应用的计算机。服务器负责接收HTTP请求,处理请求并生成HTTP响应,然后将响应发送回客户端。

  3. 数据库:数据库用于存储Web应用的数据。服务器可以查询数据库来获取或更新数据,然后将数据包含在HTTP响应中。

3.2 HTTP协议基础

HTTP是HyperText Transfer Protocol的缩写,是Web应用使用的主要协议。HTTP协议定义了客户端和服务器之间的通信格式和规则。

HTTP请求包括以下部分:

  1. 请求行:请求行包括请求方法(如GET、POST)、请求URI和HTTP版本。

  2. 请求头:请求头包括一些描述请求的元数据,如Host、User-Agent、Accept、Cookie等。

  3. 请求体:请求体包含请求的内容,如表单数据、文件等。不是所有的请求都有请求体。

HTTP响应包括以下部分:

  1. 状态行:状态行包括HTTP版本、状态码和状态文本。

  2. 响应头:响应头包括一些描述响应的元数据,如Content-Type、Content-Length、Set-Cookie等。

  3. 响应体:响应体包含响应的内容,如HTML、JSON、图片等。

以上就是Web开发的基础知识。接下来,我们将开始学习如何使用Python的Flask框架创建Web应用。

四 使用Flask创建Web应用

Flask是一个轻量级的Python Web框架,它简单易用,但也强大灵活。接下来,我们将介绍如何使用Flask创建一个简单的Web应用。

4.1 Flask简介和安装

Flask的设计哲学是"微核心":它本身只包含最基础的Web功能,如路由和请求响应处理,其他功能如数据库操作、表单处理、用户验证等则通过扩展来实现。这使得Flask非常灵活,你可以根据需要选择和组合不同的扩展。

你可以使用pip来安装Flask:

pip install flask

4.2 Hello World应用

创建一个Flask应用非常简单。首先,你需要导入Flask类,然后创建一个Flask应用实例。然后,你可以使用装饰器来定义路由和视图函数。最后,你可以使用run方法来启动Flask应用。

下面是一个"Hello, World!"应用的例子:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return "Hello, World!"if __name__ == '__main__':app.run()

在这个例子中,我们定义了一个路由/,当用户访问这个URL时,Flask会调用hello函数并将其返回值作为HTTP响应的内容。

4.3 路由和视图函数

在Flask中,路由是URL模式到视图函数的映射。你可以使用@app.route装饰器来定义路由。

视图函数是处理HTTP请求并生成HTTP响应的函数。视图函数可以返回一个字符串,Flask会将其转换为一个HTTP响应,并设置合适的Content-Type头。

你可以定义多个路由和视图函数,每个路由都可以对应一个或多个HTTP方法(如GET、POST)。

4.4 模板和静态文件

虽然视图函数可以直接返回字符串,但在实际的Web应用中,我们通常需要返回更复杂的HTML页面。为了更方便地生成HTML,Flask支持使用Jinja2模板。

模板是包含特殊语法的HTML文件,你可以在模板中使用变量、循环、条件等语句。你可以使用render_template函数来渲染模板并生成HTML。

静态文件是Web应用中不需要动态生成的文件,如CSS、JavaScript、图片等。你可以将静态文件放在应用的static目录下,然后使用url_for函数来生成静态文件的URL。

以上就是使用Flask创建Web应用的基本步骤。接下来,我们将学习如何扩展Web应用的功能,包括数据库操作、表单处理、用户验证等内容。

五 使用Flask-SQLAlchemy处理数据库

在Web应用中,我们通常需要存储和操作数据,比如用户信息、商品信息等。这些数据通常存储在数据库中。Flask-SQLAlchemy是一个提供高级SQLAlchemy支持的Flask扩展,可以让我们更方便地在Flask应用中操作数据库。

5.1 Flask-SQLAlchemy简介和安装

Flask-SQLAlchemy是一个为Flask提供SQLAlchemy支持的扩展。SQLAlchemy是一个Python的ORM框架,它将低级的SQL操作抽象为高级的Python类和对象操作,让我们可以使用Pythonic的方式来操作数据库。

你可以使用pip来安装Flask-SQLAlchemy:

pip install flask_sqlalchemy

5.2 配置数据库

在创建Flask-SQLAlchemy实例之前,你需要在Flask应用的配置中设置数据库的URL。数据库URL的格式如下:

dialect+driver://username:password@host:port/database

例如,如果你使用PostgreSQL数据库,并且数据库运行在本地的5432端口,用户名和密码都是postgres,数据库名是myapp,那么数据库URL就是:

postgresql://postgres:postgres@localhost:5432/myapp

5.3 定义模型

在Flask-SQLAlchemy中,数据库的表是通过Python的类来定义的,这种类称为模型类。模型类继承自db.Model,每个属性都对应一个表的列。

以下是一个模型类的例子:

from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy()class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(64), unique=True, nullable=False)email = db.Column(db.String(120), unique=True, nullable=False)

5.4 查询数据

你可以使用SQLAlchemy的查询API来查询数据。查询API提供了一种Pythonic的方式来写SQL查询。

以下是一些查询API的例子:

# 查询所有用户
users = User.query.all()# 查询第一个用户
user = User.query.first()# 根据ID查询用户
user = User.query.get(1)# 根据用户名查询用户
user = User.query.filter_by(username='john').first()

5.5 插入、更新和删除数据

你可以创建模型类的实例来插入数据,修改实例的属性来更新数据,调用db.session.delete方法来删除数据。所有的改变都需要通过调用db.session.commit方法来提交到数据库。

以下是一些插入、更新和删除数据的例子:

# 插入数据
user = User(username='john', email='john@example.com')
db.session.add(user)
db.session.commit()# 更新数据
user.username = 'johnny'
db.session.commit()# 删除数据
db.session.delete(user)
db.session.commit()

以上就是使用Flask-SQLAlchemy处理数据库的基本步骤。接下来,我们将学习如何使用Flask-WTForms处理表单。

六 使用Flask-WTF处理表单

在Web应用中,我们经常需要处理表单,比如登录表单、注册表单、搜索表单等。Flask-WTF是一个为Flask提供WTForms支持的扩展,可以让我们更方便地在Flask应用中处理表单。

6.1 Flask-WTF简介和安装

Flask-WTF是一个为Flask提供WTForms支持的扩展。WTForms是一个Python的表单库,它可以帮助我们生成和验证表单。

你可以使用pip来安装Flask-WTF:

pip install flask_wtf

6.2 定义表单

在Flask-WTF中,表单是通过Python的类来定义的,这种类称为表单类。表单类继承自flask_wtf.FlaskForm,每个属性都对应一个表单字段。

以下是一个表单类的例子:

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email, Lengthclass LoginForm(FlaskForm):username = StringField('Username', validators=[DataRequired()])password = PasswordField('Password', validators=[DataRequired()])submit = SubmitField('Log In')

6.3 渲染表单

你可以在模板中使用WTForms提供的宏来渲染表单。这可以帮助你快速生成表单的HTML。

以下是一个模板的例子:

{% from "_formhelpers.html" import render_field %}<form method="POST">{{ form.hidden_tag() }}{{ render_field(form.username) }}{{ render_field(form.password) }}{{ render_field(form.submit) }}
</form>

6.4 处理表单

在视图函数中,你可以使用form.validate_on_submit()方法来检查表单是否被提交和验证。如果表单被提交并且所有字段都通过了验证,那么这个方法会返回True,否则返回False。

以下是一个视图函数的例子:

@app.route('/login', methods=['GET', 'POST'])
def login():form = LoginForm()if form.validate_on_submit():# TODO: 登录用户return redirect(url_for('index'))return render_template('login.html', form=form)

以上就是使用Flask-WTF处理表单的基本步骤。接下来,我们将学习如何使用Flask-Login处理用户验证。

七 使用Flask-Login处理用户验证

用户验证是Web应用中的一个重要功能,它可以让用户登录到应用,并保持登录状态。Flask-Login是一个为Flask提供用户验证支持的扩展,可以让我们更方便地在Flask应用中处理用户验证。

7.1 Flask-Login简介和安装

Flask-Login提供了一种友好的方式来管理用户会话,它可以帮助我们实现用户登录、注销、记住我等功能。

你可以使用pip来安装Flask-Login:

pip install flask_login

7.2 用户模型

在使用Flask-Login之前,你需要在你的用户模型中实现一些方法,包括is_authenticatedis_activeis_anonymousget_id

以下是一个用户模型的例子:

from flask_login import UserMixinclass User(UserMixin, db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(64), unique=True, nullable=False)password_hash = db.Column(db.String(128))def set_password(self, password):self.password_hash = generate_password_hash(password)def check_password(self, password):return check_password_hash(self.password_hash, password)

7.3 登录和注销

你可以使用login_user函数来登录用户,使用logout_user函数来注销用户。

以下是登录和注销视图函数的例子:

from flask_login import login_user, logout_user@app.route('/login', methods=['GET', 'POST'])
def login():form = LoginForm()if form.validate_on_submit():user = User.query.filter_by(username=form.username.data).first()if user is None or not user.check_password(form.password.data):flash('Invalid username or password')return redirect(url_for('login'))login_user(user, remember=form.remember_me.data)return redirect(url_for('index'))return render_template('login.html', form=form)@app.route('/logout')
def logout():logout_user()return redirect(url_for('index'))

7.4 保护视图

你可以使用login_required装饰器来保护视图,只有登录的用户才能访问这些视图。

以下是一个受保护的视图函数的例子:

from flask_login import login_required@app.route('/edit_profile')
@login_required
def edit_profile():# ...

以上就是使用Flask-Login处理用户验证的基本步骤。接下来,我们将学习如何使用Flask-Bootstrap增加Web应用的美观性。

八 使用Flask-Bootstrap增加Web应用的美观性

Bootstrap是一种流行的前端框架,它包含了各种预制的CSS样式和JavaScript插件,可以帮助我们快速建立美观的Web界面。Flask-Bootstrap是一个为Flask提供Bootstrap支持的扩展,它将Bootstrap的所有静态文件都嵌入到了Flask应用中。

8.1 Flask-Bootstrap简介和安装

Flask-Bootstrap可以让你轻松地在Flask应用中使用Bootstrap。它不仅提供了Bootstrap的所有静态文件,还提供了一些Jinja2模板宏,可以帮助你快速生成Bootstrap的HTML。

你可以使用pip来安装Flask-Bootstrap:

pip install flask_bootstrap

8.2 使用Bootstrap

在安装了Flask-Bootstrap后,你可以在模板中使用bootstrap.load_css()bootstrap.load_js()来加载Bootstrap的CSS和JavaScript。你还可以使用bootstrap.quick_form()宏来快速生成Bootstrap样式的表单。

以下是一个使用Bootstrap的模板的例子:

{% extends "bootstrap/base.html" %}{% block title %}My App{% endblock %}{% block navbar %}
<div class="navbar navbar-inverse" role="navigation"><div class="container"><div class="navbar-header"><a class="navbar-brand" href="{{ url_for('index') }}">My App</a></div></div>
</div>
{% endblock %}{% block content %}
<div class="container"><h1>Welcome to My App!</h1><form method="POST">{{ bootstrap.quick_form(form) }}</form>
</div>
{% endblock %}

8.3 定制Bootstrap

虽然Bootstrap提供了预设的样式,但你可能还需要定制一些样式来满足你的需求。你可以创建自己的CSS文件,然后在模板中加载这个CSS文件。

你可以使用url_for函数来生成静态文件的URL。例如,如果你的CSS文件位于static/css目录下,你可以这样生成CSS文件的URL:

<link rel="stylesheet" href="{{ url_for('static', filename='css/my.css') }}">

以上就是使用Flask-Bootstrap增加Web应用美观性的基本步骤。接下来,我们将学习如何部署Flask应用。

九 部署Flask应用

到目前为止,我们已经完成了Web应用的开发,下一步就是将它部署到服务器上,让更多的用户能够访问。在这个部分,我们将简单介绍如何使用Gunicorn和Nginx来部署Flask应用。

9.1 Gunicorn简介和安装

Gunicorn是一个Python的WSGI HTTP服务器,它有着优秀的并发能力,非常适合用来托管Python的Web应用。

你可以使用pip来安装Gunicorn:

pip install gunicorn

9.2 使用Gunicorn运行Flask应用

你可以使用Gunicorn的命令行接口来运行你的Flask应用。你需要提供应用的导入路径和端口号。

以下是一个运行Flask应用的例子:

gunicorn -w 4 -b 127.0.0.1:5000 myapp:app

在这个例子中,-w 4表示使用4个工作进程,-b 127.0.0.1:5000表示监听本地的5000端口,myapp:app是应用的导入路径。

9.3 Nginx简介和安装

Nginx是一个高性能的HTTP和反向代理服务器,它可以作为负载均衡器和HTTP缓存。在这里,我们使用Nginx作为反向代理服务器,将用户的请求转发给Gunicorn。

你可以使用你的包管理器来安装Nginx,例如在Ubuntu上,你可以使用apt来安装Nginx:

sudo apt update
sudo apt install nginx

9.4 配置Nginx

你需要创建一个Nginx的配置文件,告诉Nginx如何转发请求。以下是一个配置文件的例子:

server {listen 80;server_name example.com;location / {proxy_pass http://127.0.0.1:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}

在这个配置文件中,listen 80;表示监听80端口,server_name example.com;表示服务器的名字是example.comproxy_pass http://127.0.0.1:5000;表示将请求转发到本地的5000端口。

以上就是使用Gunicorn和Nginx部署Flask应用的基本步骤。在实际的生产环境中,你可能还需要配置HTTPS、使用进程管理器来管理Gunicorn进程等等。

到此为止,我们已经完成了从开发到部署的全过程。

Python编程入门实战:打造你的第一个Web应用相关推荐

  1. 《树莓派Python编程入门与实战》——3.5 关于Python交互式shell

    本节书摘来异步社区<树莓派Python编程入门与实战>一书中的第3章,第3.5节,作者:[美]Richard Blum,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  2. 《树莓派Python编程入门与实战(第2版)》——3.9 小结

    本节书摘来自异步社区<树莓派Python编程入门与实战(第2版)>一书中的第3章,第3.9节,作者[美] Richard Blum Christine Bresnahan,陈晓明 马立新 ...

  3. 《树莓派Python编程入门与实战(第2版)》——1.7 排除树莓派的故障

    本节书摘来自异步社区<树莓派Python编程入门与实战(第2版)>一书中的第1章,第1.7节,作者[美] Richard Blum Christine Bresnahan,陈晓明 马立新 ...

  4. 《树莓派Python编程入门与实战(第2版)》——3.4 关于Python解释器

    本节书摘来自异步社区<树莓派Python编程入门与实战(第2版)>一书中的第3章,第3.4节,作者[美] Richard Blum Christine Bresnahan,陈晓明 马立新 ...

  5. 《树莓派Python编程入门与实战》——1.7 排除树莓派的故障

    本节书摘来异步社区<树莓派Python编程入门与实战>一书中的第1章,第1.7节,作者:[美]Richard Blum,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  6. 《树莓派Python编程入门与实战》——2.1 了解Linux

    本节书摘来异步社区<树莓派Python编程入门与实战>一书中的第2章,第2.1节,作者:[美]Richard Blum,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  7. 《树莓派Python编程入门与实战》——2.3 使用Raspbian图形用户界面

    本节书摘来异步社区<树莓派Python编程入门与实战>一书中的第2章,第2.3节,作者:[美]Richard Blum,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  8. 树莓派python编程入门先学什么_树莓派Python编程入门与实战

    树莓派Python编程入门与实战 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 树莓派是一个只有信用卡大小的裸露电路板,它也是一个运行开源Lin ...

  9. python编程入门电子书下载-最经典的25本Python编程开发电子书(附下载地址)!...

    如果,有人想转行程序猿,而让给出"如何切入编程"的建议的话,许多人一定毫不犹豫地向他推荐"Python"! 没错,就是这样一只Python,它让众多程序开发者, ...

最新文章

  1. 超级猩猩获 3.6 亿元 D 轮融资,计划今年新开100家门店
  2. 个人的关于c++运算符重载的总结
  3. 学习webpack记录(一)
  4. uva673 Parentheses Balance
  5. 最全的C#图片处理类ImageHelper.cs
  6. 【OS学习笔记】十一 实模式:中断-软中断和硬中断基本原理
  7. MacBook设置终端命令行的颜色高亮显示
  8. 今天,Java 12 正式发布了!
  9. cad字体安装_如何安装CAD字体库【AutoCAD教程】
  10. 系统学习Java语言的15个网站
  11. ERP原理及应用教程-第三章
  12. 使用arecord、aplay命令实现音频的采集和播放
  13. eclipse 导入项目后,在工程图标上出现红叉,但是工程中的文件并没有提示错误的解决方法
  14. notes on Scaling Ethereum with Raul Jordan and Preston Van Loon
  15. SAP那些事-职业篇-25-顾问的价值
  16. 用友U9 查看功能页面实体
  17. Scratch(图形化编程工具)绘制3D六面体,3D作品的制作过程!
  18. gsoap初始化释放_gSOAP中文文档
  19. 剪辑必备神器,视频片段搜索工具!
  20. 【机房合作】策略+职责链在下机中的应用

热门文章

  1. Intellij 插件 Mybatis log plugin
  2. 如何同时打开Microsoft Visual C++ 6.0 多个实例。
  3. 同步电机matlab模型,同步电机模型的MATLAB仿真
  4. oracle关闭的四种模式
  5. 《精益企业》在线分享总结-精彩全展示
  6. 服务器系统叹号灯,叹号故障灯是指什么意思
  7. SuperMap iServer发布ArcGIS瓦片
  8. html5 th左对齐,HTML5 th 标签
  9. 利用post-data来构造信息抓取艺龙酒店
  10. 雷神笔记本一格E1开箱