python实现可视化大屏(django+pyechars)

1.实现效果图

2.对数据库进行迁移

python manage.py makemigrations

python manage.py migrate

3.登录页面

{% load static%}
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登录</title><style>/* 清除浏览器默认边距,
使边框和内边距的值包含在元素的width和height内 */* {margin: 0;padding: 0;box-sizing: border-box;
}/* 使用flex布局,让内容垂直和水平居中 */section {/* 相对定位 */position: relative;overflow: hidden;display: flex;justify-content: center;align-items: center;min-height: 100vh;/* linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片 */background: linear-gradient(to bottom, #f1f4f9, #dff1ff);
}/* 背景颜色 */section .color {/* 绝对定位 */position: absolute;/* 使用filter(滤镜) 属性,给图像设置高斯模糊*/filter: blur(200px);
}/* :nth-child(n) 选择器匹配父元素中的第 n 个子元素 */section .color:nth-child(1) {top: -350px;width: 600px;height: 600px;background: #ff359b;
}section .color:nth-child(2) {bottom: -150px;left: 100px;width: 500px;height: 500px;background: #fffd87;
}section .color:nth-child(3) {bottom: 50px;right: 100px;width: 500px;height: 500px;background: #00d2ff;
}.box {position: relative;
}/* 背景圆样式 */.box .circle {position: absolute;background: rgba(255, 255, 255, 0.1);backdrop-filter: blur(5px);box-shadow: 0 25px 45px rgba(0, 0, 0, 0.1);border: 1px solid rgba(255, 255, 255, 0.5);border-right: 1px solid rgba(255, 255, 255, 0.2);border-bottom: 1px solid rgba(255, 255, 255, 0.2);border-radius: 50%;animation-delay: calc(var(--x) * -1s);
}@keyframes animate {0%, 100%, {transform: translateY(-50px);}50% {transform: translateY(50px);}
}.box .circle:nth-child(1) {top: -50px;right: -60px;width: 100px;height: 100px;
}.box .circle:nth-child(2) {top: 150px;left: -100px;width: 120px;height: 120px;z-index: 2;
}.box .circle:nth-child(3) {bottom: 50px;right: -60px;width: 80px;height: 80px;z-index: 2;
}.box .circle:nth-child(4) {bottom: -80px;left: 100px;width: 60px;height: 60px;
}.box .circle:nth-child(5) {top: -80px;left: 140px;width: 60px;height: 60px;
}/* 登录框样式 */.container {position: relative;width: 400px;min-height: 400px;background: rgba(255, 255, 255, 0.1);display: flex;justify-content: center;align-items: center;backdrop-filter: blur(5px);box-shadow: 0 25px 45px rgba(0, 0, 0, 0.1);border: 1px solid rgba(255, 255, 255, 0.5);border-right: 1px solid rgba(255, 255, 255, 0.2);border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}.form {position: relative;width: 100%;height: 100%;padding: 50px;
}.form h2 {position: relative;color: #fff;font-size: 24px;font-weight: 600;letter-spacing: 5px;margin-bottom: 30px;cursor: pointer;
}/* 登录标题的下划线样式 */.form h2::before {content: "";position: absolute;left: 0;bottom: -10px;width: 0px;height: 3px;background: #fff;transition: 0.5s;
}.form h2:hover:before {width: 53px;
}.form .inputBox {width: 100%;margin-top: 20px;
}.form .inputBox input {width: 100%;padding: 10px 20px;background: rgba(255, 255, 255, 0.2);outline: none;border: none;border-radius: 30px;border: 1px solid rgba(255, 255, 255, 0.5);border-right: 1px solid rgba(255, 255, 255, 0.2);border-bottom: 1px solid rgba(255, 255, 255, 0.2);font-size: 16px;letter-spacing: 1px;color: #fff;box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
}.form .inputBox input::placeholder {color: #fff;
}.form .inputBox input[type="submit"] {background: #fff;color: #666;max-width: 100px;margin-bottom: 20px;font-weight: 600;cursor: pointer;
}.forget {margin-top: 6px;color: #fff;letter-spacing: 1px;
}.forget a {color: #fff;font-weight: 600;text-decoration: none;
}</style>
</head><body><section><div class="color"></div><div class="color"></div><div class="color"></div><div class="box"><div class="circle" style="--x:0"></div><div class="circle" style="--x:1"></div><div class="circle" style="--x:2"></div><div class="circle" style="--x:3"></div><div class="circle" style="--x:4"></div><div class="container"><div class="form"><h2>登录页面</h2><form action="{% url 'pic:login' %}" method="post">{% csrf_token %}<div class="inputBox"><input type="text" placeholder="姓名" name="username"></div><div class="inputBox"><input type="password" placeholder="密码" name="password"></div><div class="inputBox"><input type="submit" value="登录"></div></form></div></div></div></section>
</body></html>

4.设置路由

主路由

子路由

5.登录接口完整代码

def login(request):if request.method == "GET":return render(request, 'login.html')if request.method == "POST":username = request.POST.get("username")password = request.POST.get("password")print(username, password)try:# 使用 Django 自带的 authenticate 方法验证用户身份user = authenticate(request, username=username, password=password)if user:request.session["user"] = user.pkreturn redirect('pic:page')else:return redirect('pic:login')except User.DoesNotExist:messages.add_message(request, messages.WARNING, "用户名或密码错误!")return render(request, "login.html", {})

6.其他接口的完整代码


def line_1(request):area_color_js = ("new echarts.graphic.LinearGradient(0, 0, 0, 1, ""[{offset: 0, color: '#eb64fb'}, {offset: 1, color: '#3fbbff0d'}], false)")l1 = (Line().add_xaxis(xaxis_data=data['日期'].dt.strftime('%Y-%m-%d').tolist()).add_yaxis(series_name="涨跌幅",y_axis=data['涨跌幅'].tolist(),symbol_size=8,is_hover_animation=False,label_opts=opts.LabelOpts(is_show=True),linestyle_opts=opts.LineStyleOpts(width=1.5, color='#D14A61'),is_smooth=True,areastyle_opts=opts.AreaStyleOpts(color=JsCode(area_color_js), opacity=1),).set_global_opts(title_opts=opts.TitleOpts(title="涨跌幅及涨跌额趋势", pos_left="center",title_textstyle_opts=opts.TextStyleOpts(color='#ededed')),tooltip_opts=opts.TooltipOpts(trigger="axis"),axispointer_opts=opts.AxisPointerOpts(is_show=True, link=[{"xAxisIndex": "all"}]),datazoom_opts=[opts.DataZoomOpts(is_show=True,is_realtime=True,start_value=30,end_value=70,xaxis_index=[0, 1],)],xaxis_opts=opts.AxisOpts(type_="category",boundary_gap=False,axisline_opts=opts.AxisLineOpts(is_on_zero=True, linestyle_opts=opts.LineStyleOpts(color='#FFF')),axislabel_opts=opts.LabelOpts(color='#FFF')),yaxis_opts=opts.AxisOpts(name="幅度", axislabel_opts=opts.LabelOpts(color='#FFF'),axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color='#fff'))),legend_opts=opts.LegendOpts(pos_left="center", pos_top='6%', orient='horizontal', is_show=True,textstyle_opts=opts.TextStyleOpts(color='#ffffff')),toolbox_opts=opts.ToolboxOpts(is_show=True,feature={"dataZoom": {"yAxisIndex": "none"},"restore": {},"saveAsImage": {},},),))l2 = (Line().add_xaxis(xaxis_data=data['日期'].dt.strftime('%Y-%m-%d').tolist()).add_yaxis(series_name="涨跌额",y_axis=data['涨跌额'].tolist(),xaxis_index=1,yaxis_index=1,symbol_size=8,is_hover_animation=False,label_opts=opts.LabelOpts(is_show=True, color="#6E9EF1", position='bottom'),linestyle_opts=opts.LineStyleOpts(width=1.5, color="#6E9EF1"),is_smooth=True,areastyle_opts=opts.AreaStyleOpts(color=JsCode(area_color_js), opacity=1),).set_global_opts(axispointer_opts=opts.AxisPointerOpts(is_show=True, link=[{"xAxisIndex": "all"}]),tooltip_opts=opts.TooltipOpts(trigger="axis"),xaxis_opts=opts.AxisOpts(grid_index=1,type_="category",boundary_gap=False,axisline_opts=opts.AxisLineOpts(is_on_zero=True, linestyle_opts=opts.LineStyleOpts(color='#FFF')),position="top",axislabel_opts=opts.LabelOpts(color='#FFF'),),datazoom_opts=[opts.DataZoomOpts(is_realtime=True,type_="inside",start_value=30,end_value=70,xaxis_index=[0, 1],)],yaxis_opts=opts.AxisOpts(is_inverse=True, name="额度", axislabel_opts=opts.LabelOpts(color='#FFF'),axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color='#fff'))),legend_opts=opts.LegendOpts(pos_left="center", pos_top='9%',textstyle_opts=opts.TextStyleOpts(color='#ffffff')),))c = (Grid(init_opts=opts.InitOpts(width="540px", height="710px", bg_color='#0256B6')).add(chart=l1, grid_opts=opts.GridOpts(pos_left=50, pos_right=50, height="35%")).add(chart=l2,grid_opts=opts.GridOpts(pos_left=50, pos_right=50, pos_top="55%", height="35%")))# return HttpResponse(c.render_embed())return cdef pie_1(request):# 转换日期列为日期时间格式并排序data['日期'] = pd.to_datetime(data['日期'])data.sort_values(by='日期', inplace=True)# 将日期列转换为年月格式data['年月'] = data['日期'].dt.to_period('M').astype(str)# 将成交量列除以10000data['成交量'] = round(data['成交量'] / 10000, 2)# 按年月分组,并计算平均成交量grouped_data = data.groupby('年月', as_index=False).agg({'成交量': 'mean'})tl = Timeline(init_opts=opts.InitOpts(width='450px', height='710px', bg_color='#0256B6'))for year in range(2023, 2025):# 获取当前年份的数据current_year_data = grouped_data[grouped_data['年月'].str.startswith(str(year))]pie = (Pie(init_opts=opts.InitOpts(bg_color='#0256B6')).add("商家A",[list(z) for z in zip(current_year_data['年月'], current_year_data['成交量'].round(2))],rosetype="radius",radius=["30%", "55%"],).set_global_opts(title_opts=opts.TitleOpts(title="{}年成交量(万)".format(year),title_textstyle_opts=opts.TextStyleOpts(color='#FFF'),pos_top='top', pos_right='center'),legend_opts=opts.LegendOpts(pos_top='10%',textstyle_opts=opts.TextStyleOpts(color='#FFF'))))pie.set_colors(["#91CC75", "#EE6666", "#EEC85B", "#64B5CD", "#FF69B4", "#BA55D3", "#CD5C5C", "#FFA500","#40E0D0"])tl.add_schema(play_interval=1500,  # 表示播放的速度(跳动的间隔),单位毫秒(ms)is_auto_play=True,  # 设置自动播放# is_timeline_show=False,  # 不展示时间组件的轴pos_bottom='5%',is_loop_play=True,  # 是否循环播放width='300px',pos_left='center',label_opts=opts.LabelOpts(color='#FFF'),)tl.add(pie, "{}年".format(year))return tldef heatmap_1(request):# 转换日期列为日期时间格式并排序data['日期'] = pd.to_datetime(data['日期'])data.sort_values(by='日期', inplace=True)# 创建年月列data['年月'] = data['日期'].dt.to_period('M').astype(str)  # 这将把日期转换为年月格式,例如 2024-03# 按年月分组grouped_data = data.groupby('年月')# 计算每个月的平均交易量(除以1000000以便缩小范围)avg = round(grouped_data['成交额'].mean() / 10000000, 2)value = [[i, j, avg[i]] for i in range(len(grouped_data['年月'])) for j in range(1)]# 创建热力图heatmap = (HeatMap(init_opts=opts.InitOpts(height='200px', width='300px', bg_color='#0256B6')).add_xaxis(avg.index.tolist()).add_yaxis("", [''], value,label_opts=opts.LabelOpts(is_show=True, color='#FFF', position='inside', font_size=10)).set_global_opts(visualmap_opts=opts.VisualMapOpts(min_=min(avg.values.tolist()),max_=max(avg.values.tolist()),range_text=["High", "Low"],textstyle_opts=opts.TextStyleOpts(color='#EDEDED'),orient="vertical",pos_left="left",item_height=280,item_width=10,pos_bottom='20px'),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(color='#FFF'), is_show=False),yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(color='#FFF'), is_show=False),))return heatmapdef scatter_1(request):# 转换日期列为日期时间格式并排序data['日期'] = pd.to_datetime(data['日期'])data.sort_values(by='日期', inplace=True)# 创建年月列data['年月'] = data['日期'].dt.to_period('M').astype(str)  # 这将把日期转换为年月格式,例如 2024-03# 按年月分组并计算每月的最高和最低平均值grouped_data = data.groupby('年月', as_index=False).agg({'最高': 'mean', '最低': 'mean'})# 将平均值转换为万美元grouped_data['最高平均'] = round(grouped_data['最高'] / 1, 0)grouped_data['最低平均'] = round(grouped_data['最低'] / 1, 0)# 获取最低值和最高值min_value = grouped_data['最低平均'].min()s = (EffectScatter(init_opts=opts.InitOpts(width='430px')).add_xaxis(grouped_data['年月'].tolist()).add_yaxis("最高平均", grouped_data['最高平均'].tolist(), symbol=SymbolType.ARROW).add_yaxis("最低平均", grouped_data['最低平均'].tolist(), symbol=SymbolType.DIAMOND).set_global_opts(title_opts=opts.TitleOpts(title="每月平均的最高开盘、最低开盘及成交额(百万)",title_textstyle_opts=opts.TextStyleOpts(color='#ededed')),# visualmap_opts=opts.VisualMapOpts(max_=2100, min_=1000, is_show=True),yaxis_opts=opts.AxisOpts(min_=1600, max_=min_value, axislabel_opts=opts.LabelOpts(interval=100),axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color='#fff')),splitline_opts=opts.SplitLineOpts(is_show=True)),legend_opts=opts.LegendOpts(orient='vertical', pos_right='3%', legend_icon='pin', pos_top='5%',textstyle_opts=opts.TextStyleOpts(color='#ededed')),xaxis_opts=opts.AxisOpts(axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color='#FFF'))),).set_series_opts(label_opts=opts.LabelOpts(color='pink')))c = (Grid(init_opts=opts.InitOpts(width="470px", height="710px", bg_color='#0256B6')).add(chart=s, grid_opts=opts.GridOpts(pos_left=50, pos_right=50, height="35%")).add(chart=heatmap_1(request),grid_opts=opts.GridOpts(pos_left=50, pos_right=50, pos_top="55%", height="35%")))return cdef page(request):page2 = Page(layout=Page.SimplePageLayout)page2.add(line_1(request),pie_1(request),scatter_1(request),)return HttpResponse(page2.render_embed())

7.排版(将可视化图表的位置进行排版)

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>#currentTime {position: fixed;bottom: 25px;left: 20px;color: white;font-size: 15px;z-index: 999;}body {overflow-y: hidden;}</style>
</head>
<body style="background-color: #0D325F">
<div style="display: flex; justify-content: space-between;"><span id="currentTime"></span><div style="width:calc(25%); height: 900px; margin-top: 20px"><iframe src="{% url 'pic:line' %}" width="100%" height="72%" frameborder="0" scrolling="no"style="background-color: rgba(128, 128, 128, 0.2);"></iframe></div><div style="width:calc(50%); height: 900px; display: flex; flex-direction: column; justify-content: center; align-items: center;">
{#        <iframe src="{% url 'pic:' %}" width="100%" height="100%" frameborder="0" scrolling="no"></iframe>#}<iframe src="{% url 'pic:polar' %}" width="100%" height="100%" frameborder="0" scrolling="no"style="margin-left: 28%"></iframe></div><div style="width:calc(25%); height: 800px; display: flex; justify-content: center; flex-direction: column; align-items: center;"><iframe src="{% url 'pic:heat' %}" width="100%" height="100%" frameborder="0" scrolling="no"style="background-color: rgba(128, 128, 128, 0);"></iframe><iframe src="{% url 'pic:graph' %}" width="100%" height="100%" frameborder="0" scrolling="no"style=" background-color: rgba(128, 128, 128, 0); margin-top: 10%"></iframe></div></div><script>function updateTime() {var now = new Date();var weekdays = ["日", "一", "二", "三", "四", "五", "六"]; // 中文星期var year = now.getFullYear();var month = now.getMonth() + 1; // getMonth() returns 0-based monthvar day = now.getDate();var dayOfWeek = weekdays[now.getDay()];var hours = now.getHours();var minutes = now.getMinutes();var seconds = now.getSeconds();// Add leading zero if the number is less than 10month = month < 10 ? '0' + month : month;day = day < 10 ? '0' + day : day;hours = hours < 10 ? '0' + hours : hours;minutes = minutes < 10 ? '0' + minutes : minutes;seconds = seconds < 10 ? '0' + seconds : seconds;var currentTimeString = year + '-' + month + '-' + day + ' 星期' + dayOfWeek + ' ' + hours + ':' + minutes + ':' + seconds;document.getElementById('currentTime').textContent = currentTimeString;}updateTime(); // Call the function initially to display time without delay// Update time every secondsetInterval(updateTime, 1000);
</script></body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/35704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【回溯算法题记录】组合总和题汇总

组合总和 39. 组合总和题目描述初始思路后续分析 40. 组合总和 II题目描述思路&#xff08;参考代码随想录&#xff09; 39. 组合总和 题目&#x1f517; 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数…

3d渲染软件有哪些(2),渲染100邀请码1a12

3D渲染软件有很多&#xff0c;上次我们介绍了几个&#xff0c;这次我们接着介绍。 1、Arnold Arnold渲染器是一款基于物理算法的电影级渲染引擎&#xff0c;它具有渲染质量高、材质系统丰富、渲染速度快等特点&#xff0c;是3D设计师的极佳选择。2、Octane Render Octane Ren…

【全网最完整】Open CASCADE Technology (OCCT) 构建项目,QT可视化操作,添加自定义测试内容

前言 本文为了记录自己在实习的过程中&#xff0c;学习到的有关OCCT开源项目的搭建工作&#xff0c;旨在教会小白从0开始下载开源项目及环境搭配&#xff0c;以及如何添加自定义测试内容&#xff0c;最终结果展示如下&#xff1a; 1、项目下载 本项目共需要使用四个工具&#…

如何快速解决验证码图像问题 | 最佳图像(OCR)验证码解决工具

你是否曾经遇到过陷入一个看似无尽的 CAPTCHA 挑战中&#xff0c;努力识别扭曲的字符或数字&#xff1f;这些令人抓狂的 CAPTCHA 是为了确保你是人类而不是机器人&#xff0c;但它们也给真正的用户带来了头痛。那么&#xff0c;有没有快速解决这些 CAPTCHA 图像的方法&#xff…

2021年12月电子学会青少年软件编程 中小学生Python编程等级考试三级真题解析(判断题)

2021年12月Python编程等级考试三级真题解析 判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 26、在Python中&#xff0c;0x100010表示十六进制数100010 答案&#xff1a;对 考点分析&#xff1a;考查进制转换&#xff0c;十六进制数1️⃣0x开头…

Flask之数据库

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、数据库的分类 1.1、SQL 1.2、NoSQL 1.3、如何选择&#xff1f; 二、ORM魔法 三、使用Flask-SQLALchemy管理数据库 3.1、连接数据库服…

宠物领养救助管理系带万字文档java项目基于springboot+vue的宠物管理系统java课程设计java毕业设计

文章目录 宠物领养救助管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 宠物领养救助管理系统 一、项目演示 宠物领养救助系统 二、项目介绍 基于springbootv…

一站式BI解决方案:从数据采集到处理分析,全面满足决策支持需求

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业决策的核心驱动力。然而&#xff0c;面对海量的数据和复杂的分析需求&#xff0c;企业如何高效地收集、整理、分析和利用这些数据&#xff0c;以支持战略决策和业务优化&#xff0c;成为了一个亟待解决的问题。为了解决这…

AI大模型日报#0626:首款大模型芯片挑战英伟达、面壁智能李大海专访、大模型测试题爆火LeCun点赞

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xff01;《AI大模型日报》今日要点&#xf…

上古世纪台服怎么注册账号 上古世纪台服怎么下载游戏教程

6月27日&#xff0c;上古世纪战争台服新服公测&#xff0c;一款由虚幻4引擎打造的mmorpg游戏&#xff0c;画面还是非常精美的&#xff0c;并且游戏玩起来也比较轻松&#xff0c;自动战斗&#xff0c;自动寻路这些功能都有。游戏的新玩法主要是海战&#xff0c;驾驶舰船在海上作…

Java医院绩效考核系统源码 :3分钟带你了解(医院绩效考核系统有哪些应用场景)三级公立医院绩效考核系统源码

Java医院绩效考核系统源码 &#xff1a;3分钟带你了解&#xff08;医院绩效考核系统有哪些应用场景&#xff09;三级公立医院绩效考核系统源码 作为医院用综合绩效核算系统&#xff0c;系统需要和his系统进行对接&#xff0c;按照设定周期&#xff0c;从his系统获取医院科室和…

可持续性是 Elastic: 进步与新机遇的一年

作者&#xff1a;来自 Elastic Keith Littlejohns 我们最新的可持续发展报告&#xff08;Sustainability Report&#xff09;总结了 Elastic 又一个令人兴奋的进步年&#xff0c;我们的项目继续揭示新的机遇。过去的一年对于我们与主要利益相关者群体合作以更好地了解他们的目标…

[解决方案]使用微软拼音打中文卡顿到离谱

去这里看&#xff0c;发现有65535个文件&#xff0c;基本都是临时文件。删除后测试了一下&#xff0c;不会卡顿了但是只要打中文还是会疯狂生成tmp临时文件。 问题&#xff1a;输入法不兼容 解决方案 先把上面那个文件夹里的tmp文件全删了 直接点是&#xff0c;其他的文件会…

【ajax实战02】数据管理网站—验证码登录

一&#xff1a;数据提交&#xff08;提交手机验证码&#xff09; 核心思路整理 利用form-serialize插件&#xff0c;收集对象形式的表单数据后&#xff0c;一并提交给服务器。后得到返回值&#xff0c;进一步操作 基地址&#xff1a; axios.defaults.baseURL http://geek.…

制作一个智能体:抖音热点话题文案制作助手

文章目录 第一步&#xff0c;添加助手第二步&#xff0c;选择语聚GPT第三步&#xff0c;填写相关信息第四步&#xff0c;工具中选择抖音(普通号)第五步&#xff0c;选择“查询热门视频数据”第六步&#xff0c;测试总结 这篇文章&#xff0c;我们手把手的演示开发一个智能体&am…

leetcode119 杨辉三角②

给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1] pub…

宠物空气净化器热卖爆款,希喂、小米、352猫用空气净化器真实PK

相信大漫天多数养猫家庭都会有一个烦恼&#xff1a;猫咪们的猫实在是太多了&#xff0c;无法忍受家里面漫天飞舞的浮毛和难闻的猫猫便臭。作为养猫多年的过来人我尝试过很多种方法清理这些猫浮毛和异味&#xff0c;但都以失败告终。 直到后面看到一个宠物博主推荐的宠物空气净…

环路滤波器

块效应产生的原因 块效应指视频边界不连续的变化,我们在观看视频的时候,在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果(如下图),这种现象被称为块效应(blocking artifact)。 造成这种现象的主要原因有两点: DCT量化误差导致运动补偿导致…

使用SpringBoot整合Servlet

一、SpringBoot和Servlet的整合 1、用注解WebServlet配置Servlet映射 创建一个SpringBoot的web工程&#xff0c;在工程用创建一个Servlet 2、在SpringBoot的启动类上加注解ServletComponentScan 二、额外的方式 1、不使用WebServlet配置Servlet映射 创建一个SpringBoot工…

RabbitMQ延时队列(实现定时任务)

消息的TTL(Time To Live)就是消息的存活时间。 RabbitMQ可以对队列和消息分别设置TTL。 对队列设置存活时间&#xff0c;就是队列没有消费者连着的保留时间。 对每一个单独的消息单独的设置存活时间。超过了这个时间&#xff0c;我们认为这个消息就死了&#xff0c;称之为死…