当前位置: 首页 > news >正文

python之flask安装以及使用

1 flask介绍

Flask是一个非常小的Python Web框架,被称为微型框架;只提供了一个稳健的核心,其他功能全部是通过扩展实现的;意思就是我们可以根据项目的需要量身定制,也意味着我们需要学习各种扩展库的使用。

2 python虚拟环境搭建

python虚拟环境管理方法:
​
1.virtualenv
2.Virtualenvwrapper
3.conda
4.pipenv

3 pipenv使用

┌──(kali㉿kali)-[~/Desktop/python_code]
└─$ ls       
flask1    
┌──(kali㉿kali)-[~/Desktop/python_code]
└─$ cd flask1                                         
┌──(kali㉿kali)-[~/Desktop/python_code/flask1]
└─$ pipenv shell    

┌──(flask1-l5Pm-i-x)─(kali㉿kali)-[~/Desktop/python_code/flask1]
└─$ ls
Pipfile
#Pipfile 等于安装的插件包名
┌──(flask1-l5Pm-i-x)─(kali㉿kali)-[~/Desktop/python_code/flask1]
└─$ cat Pipfile 
安装 flask
┌──(flask1-l5Pm-i-x)─(kali㉿kali)-[~/Desktop/python_code/flask1]
└─$ pipenv install flask
​

4 flask第一个应用

新建app.py

#!/usr/bin/env python3
​
from flask import Flask
​
#初始化
app =Flask(__name__)
​
@app.route('/')
def index():return  'Hello World!'
​
if __name__ == '__main__':app.run()

执行app.py

游览器效果

5 路由和视图函数

#!/usr/bin/env python3  
# 这一行告诉系统使用哪个解释器来执行脚本,这里指定为 python3  from flask import Flask  
# 从flask模块中导入Flask类,用于创建Flask web应用程序实例  # 初始化  
app = Flask(__name__)  
# 创建一个Flask应用程序实例,并赋值给变量app。__name__是当前模块的名字,代表应用程序的根路径  # 设置多个路由  
@app.route('/')  
# 定义一个路由装饰器,当访问根路径'/'时,会调用下面的index函数  
def index():  return 'Hello World!'  
# 定义一个视图函数index,当访问'/'路径时,返回'Hello World!'字符串  @app.route('/a')  
# 定义另一个路由装饰器,当访问'/a'路径时,会调用下面的add函数  
def add():  return '1+1=2'  
# 定义一个视图函数add,当访问'/a'路径时,返回'1+1=2'字符串  @app.route('/user/<username>')  
# 定义一个带有动态部分的路由装饰器,'<username>'是一个动态部分,可以匹配任何字符串  
def user_index(username):  # 在函数中指明变量名称username,就能获取到通过路由传入的变量username  return 'Hello {} '.format(username)  
# 定义一个视图函数user_index,该函数接受一个参数username,这是从路由动态部分获取的。函数返回'Hello '加上用户名  @app.route('/post/<int:post_id>')  
# 定义一个带有动态部分且类型指定的路由装饰器,'<int:post_id>'表示动态部分必须是整数类型  
def show_post(post_id):  return 'Post {} '.format(post_id)  
# 定义一个视图函数show_post,该函数接受一个整数类型的参数post_id,这是从路由动态部分获取的。函数返回'Post '加上文章ID  if __name__ == '__main__':  # 判断当前脚本是否作为主程序运行  app.run(debug=True)  
​

6URL重定向

#!/usr/bin/env python3  # 导入 Flask 框架  
from flask import Flask  
from flask import url_for  
from flask import redirect  # 初始化 Flask 应用  
app = Flask(__name__)  # 设置路由到根路径 '/'  
@app.route('/')  
def index():  return 'Hello World!'  # 返回欢迎信息  # 设置路由到 '/a'  
@app.route('/a')  
def add():  return '1+1=2'  # 返回加法运算结果  # 设置路由到 '/user/<username>',其中 <username> 是一个动态部分  
@app.route('/user/<username>')  
def user_index(username):  # 在视图函数中通过参数获取路由中的动态部分 username  return 'Hello {} '.format(username)  # 返回包含用户名的欢迎信息  # 设置路由到 '/post/<int:post_id>',其中 <int:post_id> 是一个整数类型的动态部分  
@app.route('/post/<int:post_id>')  
def show_post(post_id):  return 'Post {} '.format(post_id)  # 返回包含帖子ID的字符串  # 设置路由到 '/test'  
@app.route('/test')  
def test():  # 使用 url_for 函数生成路由的 URL,并打印出来  print(url_for('index'))  # 打印根路径的 URL  print(url_for('user_index', username='scj'))  # 打印用户路径的 URL,传入用户名 'scj'  print(url_for('show_post', post_id=1))  # 打印帖子路径的 URL,传入帖子ID 1  return 'test'  # 返回测试字符串  # 设置路由到 '/<username>',其中 <username> 是一个动态部分  
@app.route('/<username>')  
def hello(username):  if username == 'handsomescj':  return 'Hello {}' .format(username)  # 如果用户名是 'handsomescj',则返回欢迎信息  else:  return redirect(url_for('index'))  # 否则重定向到根路径  # 主程序入口  
if __name__ == '__main__':  app.run(debug=True)  # 运行 Flask 应用,并开启调试模式
​
请注意,代码中有个小的错误,app =Flask(__name__) 这一行应该去掉变量名 app 前的空格,修改为 app = Flask(__name__)。
​
在 Flask 应用中,注释是一个很好的习惯,它们可以帮助你和其他开发者理解代码的功能和逻辑。在编写代码时,记得添加足够的注释,尤其是在复杂的逻辑部分。

7模板渲染

python
#!/usr/bin/env python3  # 导入 Flask 框架  
from flask import Flask  
from flask import url_for  
from flask import redirect  
from flask import render_template  # 初始化 Flask 应用  
app = Flask(__name__)  # 设置路由到根路径 '/'  
@app.route('/')  
def index():  return 'Hello World!'  # 返回欢迎信息  # 设置路由到 '/a'  
@app.route('/a')  
def add():  return '1+1=2'  # 返回加法运算结果  # 设置路由到 '/user/<username>',其中 <username> 是一个动态部分  
@app.route('/user/<username>')  
def user_index(username):  # 使用 render_template 函数渲染 'user_index.html' 模板,并传入变量 username  return render_template('user_index.html', username=username)  # 返回渲染后的页面  # 设置路由到 '/post/<int:post_id>',其中 <int:post_id> 是一个整数类型的动态部分  
@app.route('/post/<int:post_id>')  
def show_post(post_id):  return 'Post {} '.format(post_id)  # 返回包含帖子ID的字符串  # 设置路由到 '/test'  
@app.route('/test')  
def test():  # 使用 url_for 函数生成路由的 URL,并打印出来  print(url_for('index'))  # 打印根路径的 URL  print(url_for('user_index', username='scj'))  # 打印用户路径的 URL,传入用户名 'scj'  print(url_for('show_post', post_id=1))  # 打印帖子路径的 URL,传入帖子ID 1  return 'test'  # 返回测试字符串  # 设置路由到 '/<username>',其中 <username> 是一个动态部分  
@app.route('/<username>')  
def hello(username):  if username == 'handsomescj':  return 'Hello {}' .format(username)  # 如果用户名是 'handsomescj',则返回欢迎信息  else:  return redirect(url_for('index'))  # 否则重定向到根路径  # 主程序入口  
if __name__ == '__main__':  app.run(debug=True)  # 运行 Flask 应用,并开启调试模式
​

新建templates 文件夹

以及在templates 文件中新建user_index.html

<h1>hello,{{ username }}!</h1>

8 get与post请求

get请求

#!/usr/bin/env python3
​
from flask import Flask
from flask import url_for
from flask import redirect
from flask import render_template
​
#初始化
app =Flask(__name__)
​
#设置多个路由
@app.route('/')
def index():return  'Hello World!'
​
@app.route('/a')
def add():return  '1+1=2'
​
@app.route('/user/<username>')
def user_index(username):#在函数中指明变量名称username,就能获取到通过路由传入的变量usernamereturn render_template('user_index.html',username=username)
​
@app.route(' /user/<password>' )
def user_password(password) :print( 'User-Agent :' , request.headers.get ( 'User-Agent ' ))print( 'time: ' , request.args. get( 'time'))print( 'q: ' , request.args. get( 'q'))print ( 'issinge : ' , request.args.get( ' issinge ' ))return ' password is{} '.format(password)
​
@app.route('/post/<int:post_id>')
def show_post(post_id):return 'Post {} '.format(post_id)
​
@app.route('/test')
def test():print(url_for('index'))print(url_for('user_index',username='scj'))print(url_for('show_post',post_id=1))return 'test'
​
@app.route('/<username>')
def hello(username):if username =='handsomescj':return 'Hello {}' .format(username)else:return redirect(url_for('index'))
​
if __name__ == '__main__':app.run(debug=True)
​

post请求

#!/usr/bin/env python3  from flask import Flask, request, render_template, redirect, url_for  # 初始化  
app = Flask(__name__)  # 设置多个路由  
@app.route('/')  
def index():  return 'Hello World!'  @app.route('/a')  
def add():  return '1+1=2'  @app.route('/user/<username>')  
def user_index(username):  # 在函数中指明变量名称username,就能获取到通过路由传入的变量username  return render_template('user_index.html', username=username)  @app.route('/user/<password>')  
def user_password(password):  print('User-Agent:', request.headers.get('User-Agent'))  print('time:', request.args.get('time'))  print('q:', request.args.get('q'))  print('issinge:', request.args.get('issinge'))  return 'password is {}'.format(password)  @app.route('/post/<int:post_id>')  
def show_post(post_id):  return 'Post {}'.format(post_id)  @app.route('/test')  
def test():  print(url_for('index'))  print(url_for('user_index', username='scj'))  print(url_for('show_post', post_id=1))  return 'test'  @app.route('/<username>')  
def hello(username):  if username == 'handsomescj':  return 'Hello {}'.format(username)  else:  return redirect(url_for('index'))  @app.route('/register', methods=['GET', 'POST'])  
def register():  print('method:', request.method)  print('name:', request.form['name'])  print('password:', request.form.get('password'))  print('hobbies:', request.form.getlist('hobbies'))  print('age:', request.form.get('age', default=18))  return 'register success!'  if __name__ == '__main__':  app.run(debug=True)
​

新建client.py

#!/usr/bin/env python3  import requests  # 设置需要发送的数据  
user_info = {  'name': 'scj',  # 去掉键和值之间的空格  'password': '123456',  # 去掉键和值之间的空格  'hobbies': ['code', 'run']  # 列表中的字符串去掉空格  
}  # 向url发送post请求  
r = requests.post("http://127.0.0.1:5000/register", data=user_info)  print(r.status_code)  # 打印请求返回的状态码

9session与cookie

#!/usr/bin/env python3  from flask import Flask
from flask import url_for
from flask import redirect
from flask import render_template
from flask import request
from flask import session
from flask import make_response# 初始化  
app = Flask(__name__)  app.secret_key='kdjklfjkd87384hjdhjh'# 设置多个路由  
@app.route('/')  
def index():  return 'Hello World!'  @app.route('/a')  
def add():  return '1+1=2'  #@app.route('/user/<username>')  
#def user_index(username):  # 在函数中指明变量名称username,就能获取到通过路由传入的变量username  #return render_template('user_index.html', username=username)  @app.route('/user/<password>')  
def user_password(password):  print('User-Agent:', request.headers.get('User-Agent'))  print('time:', request.args.get('time'))  print('q:', request.args.get('q'))  print('issinge:', request.args.get('issinge'))  return 'password is {}'.format(password)  @app.route('/post/<int:post_id>')  
def show_post(post_id):  return 'Post {}'.format(post_id)  @app.route('/test')  
def test():  print(url_for('index'))  print(url_for('user_index', username='scj'))  print(url_for('show_post', post_id=1))  return 'test'  @app.route('/<username>')  
def hello(username):  if username == 'handsomescj':  return 'Hello {}'.format(username)  else:  return redirect(url_for('index'))  @app.route('/register', methods=['GET', 'POST'])  
def register():  print('method:', request.method)  print('name:', request.form['name'])  print('password:', request.form.get('password'))  print('hobbies:', request.form.getlist('hobbies'))  print('age:', request.form.get('age', default=18))  return 'register success!'  @app.route('/set_session')  
def set_session():  # 设置session的持久化  session.permanent = True  session['username'] = 'scj' return '成功设置session'  @app.route('/get_session')  
def get_session():  value = session.get('username')    return '成功获取session值为:{}'.format(value)@app.route('/set_cookie/<username>')  
def set_cookie(username):  resp = make_response(render_template('user_index.html', username=username))  resp.set_cookie('user', username)  # 使用'user'作为cookie的名字  return resp  @app.route('/get_cookie')  
def get_cookie():  username = request.cookies.get('username')  # 使用'user'来检索cookie的值  return 'Hello {}'.format(username)  # 修正格式化字符串的语法  if __name__ == '__main__':  app.run(debug=True)

10 errot404

#!/usr/bin/env python3  from flask import Flask
from flask import url_for
from flask import redirect
from flask import render_template
from flask import request
from flask import session
from flask import make_response# 初始化  
app = Flask(__name__)  app.secret_key='kdjklfjkd87384hjdhjh'# 设置多个路由  
@app.route('/')  
def index():  return 'Hello World!'  @app.route('/a')  
def add():  return '1+1=2'  @app.route('/user/<username>')  
def user_index(username):  if username == 'invalid'abort(404)return render_template('user_index.html',username=username)@app.route('/user/<password>')  
def user_password(password):  print('User-Agent:', request.headers.get('User-Agent'))  print('time:', request.args.get('time'))  print('q:', request.args.get('q'))  print('issinge:', request.args.get('issinge'))  return 'password is {}'.format(password)  @app.route('/post/<int:post_id>')  
def show_post(post_id):  return 'Post {}'.format(post_id)  @app.route('/test')  
def test():  print(url_for('index'))  print(url_for('user_index', username='scj'))  print(url_for('show_post', post_id=1))  return 'test'  #@app.route('/<username>')  
#def hello(username):  
#    if username == 'handsomescj':  
#        return 'Hello {}'.format(username)  #   else:  
#        return redirect(url_for('index'))  @app.route('/register', methods=['GET', 'POST'])  
def register():  print('method:', request.method)  print('name:', request.form['name'])  print('password:', request.form.get('password'))  print('hobbies:', request.form.getlist('hobbies'))  print('age:', request.form.get('age', default=18))  return 'register success!'  @app.route('/set_session')  
def set_session():  # 设置session的持久化  session.permanent = True  session['username'] = 'scj' return '成功设置session'  @app.route('/get_session')  
def get_session():  value = session.get('username')    return '成功获取session值为:{}'.format(value)@app.route('/set_cookie/<username>')  
def set_cookie(username):  resp = make_response(render_template('user_index.html', username=username))  resp.set_cookie('user', username)  # 使用'user'作为cookie的名字  return resp  @app.route('/get_cookie')  
def get_cookie():  username = request.cookies.get('username')  # 使用'user'来检索cookie的值  return 'Hello {}'.format(username)  # 修正格式化字符串的语法  @app.route(404)
def not_found(error):return render_template('404.html'),404if __name__ == '__main__':  app.run(debug=True)

404.html

错了,sb

相关文章:

python之flask安装以及使用

1 flask介绍 Flask是一个非常小的Python Web框架&#xff0c;被称为微型框架&#xff1b;只提供了一个稳健的核心&#xff0c;其他功能全部是通过扩展实现的&#xff1b;意思就是我们可以根据项目的需要量身定制&#xff0c;也意味着我们需要学习各种扩展库的使用。 2 python…...

汽车笔记-保险

保险 1.交强险 上路必须买的&#xff0c; 国家规定必须要买。交强险不管你是有责还是无责&#xff0c;它都是可以赔偿的。交强险还有一个18000的垫付功能&#xff0c;比如说我们出了交通事故后&#xff0c;对方住院治疗需要你垫付钱&#xff0c;那么这个时候就可以用到交强险…...

人工智能时代的图像识别:机遇与挑战并存

人工智能&#xff08;AI&#xff09;时代为图像识别领域带来了前所未有的机遇&#xff0c;同时也伴随着一系列挑战。这一领域的发展不仅深刻影响了科技、医疗、教育、娱乐等多个行业&#xff0c;还在一定程度上改变了人们的生活方式。 机遇&#xff1a; 技术突破与创新&#…...

工作 9 年后,回老家当计算机老师的真实感受

北京某程序员发帖&#xff0c;他说自己工作了整整 9 年后&#xff0c;今年六月就告别了北京这个大都市&#xff0c;安安心心地回老家当起了计算机老师。 工作日&#xff0c;每天早上 8 点就得按点上班儿&#xff0c;到了下午 4 点半&#xff0c;下班儿的铃声一响&#xff0c;就…...

二叉树的镜像【c++】

#include <iostream> #include <vector> using namespace std;//双链表节点结构 typedef struct treeNode {int value;struct treeNode* left;struct treeNode* right;treeNode(int x) : value(x), left(nullptr), right(nullptr) {} } TreeNode;void mirrorTree(T…...

记录Python的pandas库详解

如何生成一个pd import pandas as pd df pd.DataFrame([[1,2,3],[4,5,6]],index[A,B],columns[C1,C2,C3])df ---------------------------------------------------------------------------C1 C2 C3 A 1 2 3 B 4 5 6df.T -------------------------------------------------…...

阻碍团队使用工具的原因竟然是……

本文首发于个人网站「BY林子」&#xff0c;转载请参考版权声明。 工具化、自动化、数字化&#xff0c;这些都是逐步改善工作的质量和效率的方式&#xff0c;是时代不断进步的表现。然而&#xff0c;还是有很多软件开发团队的工作还处于手工阶段&#xff0c;这是为什么呢&#x…...

【并发】第九篇 Atomic原子操作类 - 字段更新器类详解

导航 简介AtomicIntegerFieldUpdater简介 Atomic的字段更新器类是Java中一种用于实现线程安全的字段更新操作的类。它提供了一组原子操作,可以对字段进行原子性的更新。在并发环境中,多个线程同时更新一个字段可能会出现竞态条件(Race Condition)导致数据不一致的问题。At…...

FFmpeg: 自实现ijkplayer播放器--03UI界面设计

文章目录 UI设计流程图UI设计界面点击播放功能实现 UI设计流程图 UI设计界面 主界面 控制条 播放列表 画面显示 标题栏 设置界面 提示框 点击播放功能实现 槽函数实现&#xff1a; connect(ui->ctrlBarWind, &CtrlBar::SigPlayOrPause, this, &Main…...

【安装部署】Apache SeaTunnel 和 Web快速安装详解

版本说明 由于作者目前接触当前最新版本为2.3.4 但是官方提供的web版本未1.0.0&#xff0c;不兼容2.3.4&#xff0c;因此这里仍然使用2.3.3版本。 可以自定义兼容处理&#xff0c;官方提供了文档&#xff1a;https://mp.weixin.qq.com/s/Al1VmBoOKu2P02sBOTB6DQ 因为大部分用…...

泰迪智能科技携手洛阳理工学院共建“泰迪·洛阳理工数据智能工作室”

为深化校企合作&#xff0c;实现应用型人才培养目标&#xff0c;4月11日&#xff0c;洛阳理工学院携手广东泰迪智能科技股份有限公司举行“泰迪洛阳理工数据智能工作室”揭牌仪式暨工作室成员动员会在洛阳理工学院举行。洛阳理工学院计算机与信息工程学院院长石念峰、副院长李明…...

jenkins构建微信小程序并展示二维码

测试小程序的过程中&#xff0c;很多都是在回头和前端开发说一句&#xff0c;兄弟帮我打一个测试版本的测试码&#xff0c;开发有时间的情况下还好&#xff0c;就直接协助了&#xff0c;但是很多时候他们只修复了其中几个bug&#xff0c;其他需要修复的bug代码正在编写&#xf…...

阿里云大学考试python中级题目及解析-python中级

阿里云大学考试python中级题目及解析 1.WEB开发中&#xff0c;下列选项中能够实现客户端重定向的设置是&#xff08;&#xff09; A.响应头设置Location状态码200 B.响应头设置Location状态码302 C.响应头设置Accept-Location状态码301 D.响应头设置Accept-Location状态码…...

攻防演练作为红方,怎么绕过Web应用防火墙

在攻防演练中&#xff0c;作为红方尝试绕过Web应用防火墙&#xff08;WAF&#xff09;是一项常见且具有挑战性的任务。这要求你对WAF的工作原理有深入的理解&#xff0c;并且能够创造性地应用各种技术来测试WAF的防御限制。以下是一些更专业且可操作的策略&#xff0c;用于尝试…...

AI音乐,8大变现方式——Suno:音乐版的ChatGPT - 第505篇

悟纤之歌 这是利用AI为自己制作的一首歌&#xff0c;如果你也感兴趣&#xff0c;可以花点时间阅读下本篇文章。 ​ 导读 随着新一代AI音乐创作工具Suno V3、Stable audio2.0、天工SkyMusic的发布&#xff0c;大家玩自创音乐歌曲&#xff0c;玩的不亦乐乎。而有创业头脑的朋友…...

【C++】模拟list

list的模拟真的很震撼&#xff0c;第一次学习时给我幼小的心灵留下了极大地冲击 接下来我们一起看看list模拟究竟是怎样一回事 目录 节点的封装&#xff1a;list类的实现&#xff1a;私有成员变量&#xff1a;构造函数&#xff1a;push_back && pop_back: 迭代器类的实…...

SAP项目任务一览表

根据SAP Activate项目管理方法论的主要精神&#xff0c;浓缩到一些主要的团队和任务。 主要的团队有&#xff1a; 项目管理(办公室)Project Management(office)&#xff1a;项目经理团队&#xff0c;包括项目办公室。负责项目整体运行和监控&#xff0c;项目办公室负责项目的…...

130个学术网站和26个科研工具

我们平时可以见到不少学术资源&#xff0c;但是很多信息里会有一些重叠网站、无效网站&#xff0c;导致我们虽然收藏了很多网址&#xff0c;但是却并不都能用&#xff0c;学妹特地整合了130个学术资源网站和26个科研工具&#xff0c;每一个都是亲自试过有效的&#xff0c;希望能…...

《一键搞定!揭秘微信公众号文章批量下载的终极神器》

大家好&#xff01;今天我要给大家介绍一个超级好用的小工具&#xff0c;能帮你轻松批量下载微信公众号的文章&#xff0c;还不需要安装任何证书哦&#xff01;无论你是学生还是普通爱好者&#xff0c;只要你想保存一些精彩的公众号内容&#xff0c;这个工具都能帮到你。 概览 …...

鸿蒙入门02-首次安装和配置

注&#xff1a;还没有安装编辑器&#xff08; deveco studio &#xff09;的小伙伴请看鸿蒙入门01-下载和安装-CSDN博客 首次安装配置 编辑器&#xff08; deveco studio &#xff09;安装完毕以后需要进入配置界面进行相关配置配置完毕以后才可以正常使用 环境配置&#xf…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...

数据挖掘是什么?数据挖掘技术有哪些?

目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...

【Qt】控件 QWidget

控件 QWidget 一. 控件概述二. QWidget 的核心属性可用状态&#xff1a;enabled几何&#xff1a;geometrywindows frame 窗口框架的影响 窗口标题&#xff1a;windowTitle窗口图标&#xff1a;windowIconqrc 机制 窗口不透明度&#xff1a;windowOpacity光标&#xff1a;cursor…...