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

搭建基于火灾风险预测与防范的消防安全科普小程序

基于微信小程序的消防安全科普互动平台的设计与实现,是关于微信小程序的,知识课程学习,包括学习后答题。

技术栈主要采用微信小程序云开发,有下面的模块:

1.课程学习模块

2.资讯模块

3.答题模块

4.我的模块

还需要有创新点,后面加了一个 火灾风险预测:根据用户输入的场所信息(面积、人员密度、消防设施配备等),运用算法计算火灾风险等级,并针对性地给出预防措施和应急预案建议。

然后我进行了梳理,并整理出两个版本,提供选择,并给出了我的个人建议。

需求梳理版本1:

1.学习模块:分为两大类,分别是:视频学习和图文学习。(学习完成后可以获得积分,可进行分享、收藏,评论)

2.资讯模块:分为政策法规,事故报道

3.答题模块:专项答题(可以获得积分)

4.我的模块:积分统计,我的错题集,我的收藏

5.关于各种灭火器的使用。

灭火器的图片上有1、2、3、4的数字按钮,代表灭火器的使用步骤。按到哪个按钮会有语言,告诉具体应该怎么做以及注意事项

火灾风险预测:根据用户输入的场所信息(面积、人员密度、消防设施配备等),运用算法计算火灾风险等级,并针对性地给出预防措施和应急预案建议。

需求梳理版本2:

1.学习模块:视频学习(学习完成后可以获得积分,可进行分享、收藏,评论)

2.答题模块:专项答题(可以获得积分)

3.我的模块:积分统计,我的错题集,我的收藏

4.关于各种灭火器的使用。

灭火器的图片上有1、2、3、4的数字按钮,代表灭火器的使用步骤。按到哪个按钮会有语言,告诉具体应该怎么做以及注意事项

火灾风险预测:根据用户输入的场所信息(面积、人员密度、消防设施配备等),运用算法计算火灾风险等级,并针对性地给出预防措施和应急预案建议。

然后,视频学习是分专题,专题里面分目录。

根据人员的学习情况,答题情况,和火灾情况,展示在一个统计图表上。

如果用统计图表分析往年的各类火灾发生情况可以怎么实现,效果是怎样的(火灾发生的月份、火灾原因占比以及不同区域的火灾发生次数)

画了个草图:

实现之后的界面效果

首页

轮播图,支持左右滑动切换,支持自动切换。

自动播报通告栏目的通知内容。

火灾风险预测和灭火器的使用要拆成两个模块。

课程专场以列表的形式展示。

页面布局


<view class="mw-page"><swiper class="screen-swiper" indicator-dots="true" circular="true"  autoplay="true" interval="5000" duration="500"><swiper-item wx:for="{{banner}}" wx:key="index"><image src="{{item}}" mode='aspectFill'></image></swiper-item></swiper><van-notice-bartext="欢迎使用“火灾风险防范知识科普”小程序!加强火灾风险防范意识!"backgroundColor="#FEFCED"color="#B77F49"/><view class="padding-top"><view class='nav-list'><view class="nav-li padding-sm bg-gradual-orange" catchtap="goToUsageGuide"><view class="nav-title">灭火器使用指引</view><view class="nav-name">fire extinguisher</view></view><view class="nav-li padding-sm bg-gradual-sky" catchtap="goToFireRiskPrediction"><view class="nav-title">火灾风险预测</view><view class="nav-name">risk prediction</view></view></view>
</view><view class="mw-content"><view class="cu-bar justify-center"><view class='action border-title'><text class='text-xl text-bold text-yellow'>课程专场</text><text class='bg-yellow' style='width:2rem'></text></view></view><view class="margin-top nav-list"><view class="radius shadow ke-cheng nav-li" wx:for="{{list}}" wx:key="index" catchtap="goToDetail" data-id="{{item._id}}"><view class="pic-box"><image src="{{item.thumb}}" mode="widthFix" class="thumb"></image></view><van-tag type="primary" color="#e4e8ff" text-color="#6676EF" class="tag"><text style="padding: 6rpx 4rpx;">{{item.mediatext}}</text></van-tag><view class="padding"><view class="text-bold padding-bottom-xs">{{item.menuname}}</view><view class="text-gray">共{{item.ksnum}}课时 | {{item.viewnum}}人已学</view></view></view></view></view>
</view>

层叠样式

page{background-color: #fff;
}
.mw-bg {position: absolute;top: 0;left: 0;width: 750rpx;height: 100vh;
}
.mw-btn {position: absolute;bottom: 10rpx;left: 0;width: 750rpx;z-index: 2;
}
.mw-answer {padding: 100rpx 150rpx 30rpx;
}
.mw-content {padding-bottom: 20rpx;
}
.mw-banner {width: 100%;
}
.thumb {width: 100%;
}
.ke-cheng {position: relative;overflow: hidden;
}
.tag {position: absolute;top: 0;right: 0;
}
.pic-box {height: 180rpx;overflow: hidden;
}.nav-list {display: flex;flex-wrap: wrap;justify-content: space-between;
}.nav-li {border-radius: 12rpx;width: 45%;margin: 0 2.5% 40rpx;position: relative;z-index: 1;
}.nav-li::after {content: "";position: absolute;z-index: -1;background-color: inherit;width: 100%;height: 100%;left: 0;bottom: -10%;border-radius: 10rpx;opacity: 0.2;transform: scale(0.9, 0.9);
}.nav-title {font-size: 32rpx;
}.nav-name {font-size: 22rpx;text-transform: Capitalize;margin-top: 20rpx;position: relative;opacity: .5;
}.nav-name::before {content: "";position: absolute;display: block;width: 40rpx;height: 6rpx;background: #fff;bottom: 0;right: 0;opacity: 0.5;
}.nav-name::after {content: "";position: absolute;display: block;width: 100rpx;height: 1px;background: #fff;bottom: 0;right: 40rpx;opacity: 0.3;
}.nav-name::first-letter {font-weight: bold;font-size: 26rpx;margin-right: 1px;
}

灭火器的使用指引

包括使用步骤,以及TTS语音播报功能。

页面布局


<view class="mw-page">  <view class="mw-content"><view class="cu-bar justify-center"><view class='action border-title'><text class='text-xl text-bold text-yellow'>手提式干粉灭火器</text><text class='bg-yellow' style='width:2rem'></text></view></view><view class="padding radius"><view>灭火器的使用步骤通常包括以下几个关键环节,以下是基于常见灭火器操作流程的说明:</view></view><view class="padding radius shadow margin" catchtap="playFunc" data-index="{{0}}"><view class="step1-box"><view class="text-bold padding-bottom-xs">{{list[0].name}}</view><van-button class="step1" round type="info" color="#6676EF" size="small"><text class="icon-notification lg"></text>步骤1</van-button></view></view><view class="pic-box"><image src="/image/f1.jpg" mode='widthFix' class="mw-banner"></image><van-button class="step2" round type="info" color="#6676EF" size="small" catchtap="playFunc" data-index="{{1}}"><text class="icon-notification lg"></text>步骤2</van-button><van-button class="step3" round type="info" color="#6676EF" size="small" catchtap="playFunc" data-index="{{2}}"><text class="icon-notification lg"></text>步骤3</van-button><van-button class="step4" round type="info" color="#6676EF" size="small" catchtap="playFunc" data-index="{{3}}"><text class="icon-notification lg"></text>步骤4</van-button></view></view>
</view>

层叠样式

page{background-color: #fff;
}
.mw-bg {position: absolute;top: 0;left: 0;width: 750rpx;height: 100vh;
}
.mw-btn {position: absolute;bottom: 10rpx;left: 0;width: 750rpx;z-index: 2;
}
.mw-answer {padding: 100rpx 150rpx 30rpx;
}
.mw-content {padding-bottom: 10rpx;
}
.mw-banner {width: 100%;
}
.pic-box {position: relative;
}
.step2 {position: absolute;top: 360rpx;right: 20rpx;z-index: 2;animation: scaleDrew 1s ease-in-out infinite;
}
.step3 {position: absolute;bottom: 430rpx;left: 230rpx;z-index: 2;animation: scaleDrew 1s ease-in-out infinite;
}
.step4 {position: absolute;top: 30rpx;right: 50rpx;z-index: 2;animation: scaleDrew 1s ease-in-out infinite;
}
.step1-box {position: relative;
}
.step1 {position: absolute;top: -6rpx;right: 0rpx;z-index: 2;animation: scaleDrew 1s ease-in-out infinite;
}
@keyframes scaleDrew {0% {transform: scale(1);}25% {transform: scale(1.05);}50% {transform: scale(1);}75% {transform: scale(1.05);}
}

火灾风险预测

页面布局

<view class="fire-risk-prediction-container"><view class="form-item"><text>场所面积(平方米):</text><input type="number" placeholder="请输入面积" bindinput="onAreaInput" /></view><view class="form-item"><text>人员密度(人/平方米):</text><input type="number" placeholder="请输入人员密度" bindinput="onDensityInput" /></view><view class="form-item"><text>消防设施配备(0-100分,越高越完善):</text><input type="number" placeholder="请输入消防设施评分" bindinput="onFireFacilitiesInput" /></view><view class="form-item"><text>建筑材料易燃性(0-100分,越高越易燃):</text><input type="number" placeholder="请输入建筑材料评分" bindinput="onMaterialsInput" /></view><view class="form-item"><text>电气设备老化程度(0-100分,越高越老化):</text><input type="number" placeholder="请输入电气设备评分" bindinput="onElectricalInput" /></view><view class="form-item"><text>易燃物存储情况(0-100分,越高越危险):</text><input type="number" placeholder="请输入易燃物存储评分" bindinput="onFlammableInput" /></view><view class="padding"><van-button round block type="info" color="#6676EF" bindtap="calculateRisk">计算风险等级</van-button></view>
</view>

层叠样式

page{background-color: #fff;
}
.fire-risk-prediction-container {padding: 20px;
}.form-item {margin-bottom: 15px;
}input {border: 1px solid #ddd;padding: 0 20rpx;height: 66rpx;width: 100%;border-radius: 10rpx;margin-top: 10rpx;
}button {margin-top: 20px;background-color: #007BFF;color: white;
}.result {margin-top: 20px;padding: 15px;background-color: #f9f9f9;border: 1px solid #ddd;
}

风险预测结果

页面布局

<view class="padding"><view class='grid col-2'><view class='padding-sm'><view class="bg-{{riskLevel == '高风险'?'red':riskLevel == '中风险'?'orange':'green'}} padding radius text-center shadow-blur"><view class="text-df">火灾风险等级:</view><view class='margin-top-sm text-xl text-bold'>{{riskLevel}}</view></view></view><view class='padding-sm'><view class="bg-{{riskLevel == '高风险'?'red':riskLevel == '中风险'?'orange':'green'}} padding radius text-center shadow-blur"><view class="text-df">风险评分:</view><view class='margin-top-sm text-xl text-bold'>{{riskScore}}</view></view></view></view><view class="result"><view class="cu-bar"><view class='action'><text class='icon-title text-blue'></text>预防措施:</view></view><view class="text-content">{{preventionMeasures}}</view><view class="solids-top margin-top"><view class="cu-bar"><view class='action'><text class='icon-title text-blue'></text>应急预案:</view></view><view class="text-content">{{emergencyPlan}}</view></view></view>
</view>

层叠样式

page{background-color: #f1f1f1;
}
.result {margin-top: 20rpx;padding: 6rpx 30rpx 30rpx;background-color: #f9f9f9;border: 2rpx solid #ddd;border-radius: 10rpx;
}

课程详情

支持目录分类

支持收藏、分享功能

看完视频得积分

支持评论功能

页面布局


<view class="mw-page"><video wx:if="{{ currentSectionurl }}" src="{{ currentSectionurl }}" autoplay="{{ true }}" class="video-self" bindended="onEnded" /><image wx:else src="{{detailInfo.thumb}}" mode='widthFix' class="mw-banner"></image><view class="padding"><view class="padding-bottom-xs"><text class="text-bold text-lg">{{detailInfo.menuname}}</text><button class="cu-btn sm round line-sky fr" open-type="share"> <text class="icon-share"></text> 分享</button><view class="collect-btn" bindtap="collectFunc" data-collect-id="{{detailInfo._id}}" data-index="{{index}}"><text class="icon-favorfill lg text-yellow" wx:if="{{detailInfo.isCollected}}"></text><text class="icon-favor lg text-yellow" wx:if="{{!detailInfo.isCollected}}"></text></view></view><view class="padding-bottom-xs">视频观看满1分钟得1积分,每天上限20积分。</view><view class="text-gray">共{{detailInfo.ksnum}}课时 | {{detailInfo.viewnum}}人已学</view></view><view class="mw-content"><van-tabs active="{{ active }}" color="#000"><van-tab title="目录"><view class="padding-tb-sm padding-lr-xs margin-lr solids-bottom" wx:for="{{detailInfo.directory}}" wx:key="index" catchtap="playFunc" data-sectionurl="{{item.sectionurl}}"><view class="padding-bottom-xs"><van-tag type="primary" color="#e4e8ff" text-color="#6676EF" class="tag margin-right-xs"><text class="icon-video lg"></text><text style="padding: 6rpx 4rpx;">{{detailInfo.mediatext}}</text></van-tag><text class="{{ currentSectionurl == item.sectionurl ? 'text-sky':'' }}">{{item.sectionname}}</text></view></view></van-tab><van-tab title="简介"><view class="padding text-black">视频观看满1分钟得1积分,每天上限20积分。</view></van-tab></van-tabs></view><view class="comments-box"><view class="comments"><view class="infoTitle">评论</view><view wx:if="{{comments.length == 0}}" class="noComment"> 暂无评论 快来抢沙发吧~</view><block wx:for="{{comments}}" wx:key="index"><view class="comment"><view class="comment_nickName">{{item.nickName}}</view><view class="comment_time">{{item.time}}</view><view class="comment_text">{{item.comment}}</view></view></block></view><view class="text-right padding"><van-button type="primary" square size="small" bind:click="onClickComment">去评论</van-button></view><van-dialog use-slot title="评论" show="{{ showCommentDialog }}" show-cancel-button bind:confirm="submitComment" bind:cancel="cancelComment"><view style="padding:20rpx !important"><van-cell-group><van-field input-class="commentContent" value="{{ comment_input }}" type="textarea" placeholder="分享你的想法吧..." autosizebind:change="onChangeComment" border="{{ false }}" /></van-cell-group></view></van-dialog></view>
</view>

层叠样式

page{background-color: #fff;
}
.mw-bg {position: absolute;top: 0;left: 0;width: 750rpx;height: 100vh;
}
.mw-btn {position: absolute;bottom: 10rpx;left: 0;width: 750rpx;z-index: 2;
}
.mw-answer {padding: 100rpx 150rpx 30rpx;
}
.mw-content {padding-bottom: 10rpx;border-top: 10rpx solid #eee;
}
.mw-banner {width: 100%;
}
.video-self {width: 100%;
}.comments-box {border-top: 10rpx solid #eee;padding: 30rpx 20rpx 10rpx;
}
.collect-btn {float:right;padding-right: 20rpx;
}.collect-btn .lg {font-size: 36rpx;
}/* 评论区 */
.infoTitle{font-size: var(--font-size-M);font-weight: 600;color: #000;margin-bottom: 20rpx;
}
.van-cell{padding: 10rpx 0 10rpx 0 !important;/* position: relative;left: -26rpx; *//* font-size: var(--font-size-S); */
}.noComment{/* text-align: center; */color: #868688;margin-top: 50rpx;margin-bottom: 50rpx;
}.comment{background-color: #F2F1F6;margin-top: var(--font-size-M);padding: var(--font-size-S);border-radius: var(--font-size-S);
}.comment_time{color: #868688;display: inline-block;float: right;
}.comment_nickName{display: inline-block;color: #868688;
}.comment_text{font-size: 25rpx;color: #454547;
}.commentShell {margin-top: 50rpx;height: var(--font-size-M);margin-bottom: 100rpx;
}.inputComment{border: var(--color-theme) 1px solid;border-radius: var(--font-size-S);overflow: hidden;width: 95%;
}/* 评论按钮 */
.submitComment{display: inline-block;
}

考试列表

消防知识科普,按照题型分类考试,支持单选、多选、判断和综合题型

页面布局


<view class="mw-page"><image src="/image/1.png" mode='widthFix' class="mw-banner"></image><view class="mw-content"><view class="cu-bar justify-center"><view class='action border-title'><text class='text-xl text-bold text-yellow'>在线考试</text><text class='bg-yellow' style='width:2rem'></text></view></view><view class="padding radius shadow margin" wx:for="{{list}}" wx:key="index" catchtap="goToAnswer" data-id="{{item._id}}" data-status="{{item.status}}"><van-row><van-col span="20"><view class="text-bold padding-bottom-xs">{{item.name}}</view><view class="text-gray">{{item.startDateStr}} - {{item.endDateStr}}</view></van-col><van-col span="4" class="text-right"><van-tag plain type="primary" color="#6676EF"><text class="icon-edit lg"></text><text style="padding: 6rpx 4rpx;">考试</text></van-tag></van-col></van-row><view class="padding-top-sm"><van-button round type="info" color="{{item.status == '已结束'?'#cccccc':'#6676EF'}}" size="small" plain="{{item.status == '未开始'?true:false}}">{{item.status === '进行中'? '开始考试':item.status}}</van-button><view class="fr text-sm">限时<text class="text-sky">{{item.time}}</text>分钟</view></view></view></view>
</view>

层叠样式

page{background-color: #fff;
}
.mw-bg {position: absolute;top: 0;left: 0;width: 750rpx;height: 100vh;
}
.mw-btn {position: absolute;bottom: 10rpx;left: 0;width: 750rpx;z-index: 2;
}
.mw-answer {padding: 100rpx 150rpx 30rpx;
}
.mw-content {padding-bottom: 10rpx;
}
.mw-banner {width: 100%;
}

考试规则

考题数量:共10题;考试时间:2分钟;

判分标准:满分100分,每题10分;组题方式:题库随机出题;

考试规则:

(1)答题时间内作答完毕可点击"提交并查看结果";

(2)答题时间到但未手动提交的,则系统强制结束答题;

(3)答题成绩90分及以上,可获得5积分;答题成绩80~89分,可获得3积分;答题成绩60~79分,可获得1积分;答题成绩59分及以下,不获得积分;

页面布局

<view class="mw-rules-page padding text-lg"><view class="padding-top text-black">考试名称:{{ detailInfo.name }};<view class="ranking-head" bindtap="showRanking"><view style="font-size: 22px;">5积分</view></view></view><view class="padding-top text-black">考题数量:共10题;</view><view class="padding-top text-black">考试时间:2分钟;</view><view class="padding-top text-black">判分标准:满分100分,每题10分;</view><view class="padding-top-sm text-black">组题方式:题库随机出题;</view><view class="padding-top text-black">考试规则:</view><view class="padding-top-sm text-black">(1)答题时间内作答完毕可点击“提交并查看结果”;</view><view class="padding-top-sm text-black padding-bottom">(2)答题时间到但未手动提交的,则系统强制结束答题;</view><view class="padding-top-sm text-black padding-bottom">(3)答题成绩90分及以上,可获得5积分;答题成绩80~89分,可获得3积分;答题成绩60~79分,可获得1积分;答题成绩59分及以下,不获得积分;</view><view class="text-center padding-top" wx:if="{{status === '进行中'}}"><view class="padding"><van-button round block type="info" color="#6676EF" bindtap="beginAnswer">立即开始</van-button></view></view>
</view>

层叠样式

page {background-color: #fff;}
.mw-rules-page {padding-left: 30rpx;
}
.ranking-head {float: right;text-align: center;color: #FFB900;font-size: 24rpx;
}

考试模式

答题倒计时,限时交卷

页面布局

<!--pages/test/test.wxml-->
<view class="page"><view class="flex justify-between padding radius shadow margin-bottom"><view class='text-grey'>答题倒计时:</view><view class='text-orange'><text class="icon-remind lg"></text><text class="text-xl margin-left-xs">{{seconds}}秒</text></view></view><view class="padding radius shadow"><view class="flex justify-between padding-bottom-sm solids-bottom"><view><text class="text-bold">{{questionList[index].type == 1?"单选题":questionList[index].type == 2?"多选题":"判断题"}}</text></view><view><text class="text-xl text-bold text-sky">{{index+1}}</text>/<text class="text-lg">{{questionList.length}}</text></view></view><view class='padding page-hd'><view class="page-title">{{questionList[index].question}}</view></view><view class="page-bd"><radio-group class="radio-group" bindchange="radioChange" wx:if="{{questionList[index].type == 1 || questionList[index].type == 3}}"><label class="radio my-choosebox {{chooseValue[index].indexOf(key) > -1?'checked':''}}" wx:for="{{currQuestionOp}}" wx:for-index="key" wx:for-item="value" wx:key="index"><radio value="{{key}}" checked="{{questionList[index].checked}}" /><text class="margin-left-xs">{{key}}、{{value}}</text></label></radio-group><checkbox-group class="checkbox-group" bindchange="checkboxChange" wx:elif="{{questionList[index].type == 2}}"><label class="checkbox my-choosebox {{chooseValue[index].indexOf(key) > -1?'checked':''}}" wx:for="{{questionList[index].option}}" wx:for-index="key"  wx:for-item="value" wx:key="index"><checkbox value="{{key}}" checked="{{questionList[index].checked}}" /><text class="margin-left-xs">{{key}}、{{value}}</text></label></checkbox-group></view><view class='page-ft flex flex-direction padding padding-bottom-xl'><button bindtap='okFunc' class="cu-btn lg round bg-sky" wx:if="{{index == questionList.length-1}}">提交并查看结果</button><button bindtap='okFunc' class="cu-btn lg round bg-sky" wx:else>下一题</button></view></view></view>

层叠样式

/* pages/test/test.wxss */
page {background-color: #fff;
}
.page {padding: 20rpx;
}
.page-hd {padding: 20rpx 10rpx;
}
.page-bd {padding: 20rpx;
}
.page .radio-group, .page .checkbox-group {display: block;
}
.my-choosebox {display: block;margin-bottom: 20rpx;border: 2rpx solid #ddd;padding: 20rpx;border-radius: 10rpx;line-height: 1;
}
.my-choosebox.checked {border-color: #0760E3;background-color: #438FFF;color: #fff;
}
.toindex-btn {margin-top: 20rpx;display:inline-block;line-height:2.3;font-size:13px;padding:0 1.34em;color: red;float: right;
}.yi-zuo-da, .wei-zuo-da, .yi-da, .wei-da {display: inline-block;width: 26rpx;height: 26rpx;border-radius: 50%;margin-right: 6rpx;
}
.yi-zuo-da, .yi-da {background-color: #4685FF;color: #fff;
}
.wei-zuo-da, .wei-da {border: 1px solid #ddd;
}
.yi-da, .wei-da {width: 66rpx;height: 66rpx;line-height: 66rpx;
}.collect {float:right;padding-right: 20rpx;
}.collect .lg {font-size: 36rpx;
}/* 评论区 */
.infoTitle{font-size: var(--font-size-M);font-weight: 600;color: #000;margin-bottom: 20rpx;
}
.van-cell{padding: 10rpx 0 10rpx 0 !important;/* position: relative;left: -26rpx; *//* font-size: var(--font-size-S); */
}.noComment{/* text-align: center; */color: #868688;margin-top: 50rpx;margin-bottom: 50rpx;
}.comment{background-color: #F2F1F6;margin-top: var(--font-size-M);padding: var(--font-size-S);border-radius: var(--font-size-S);
}.comment_time{color: #868688;display: inline-block;float: right;
}.comment_nickName{display: inline-block;color: #868688;
}.comment_text{font-size: 25rpx;color: #454547;
}.commentShell {margin-top: 50rpx;height: var(--font-size-M);margin-bottom: 100rpx;
}.inputComment{/* display: inline-block; *//* background-color: aqua; */border: var(--color-theme) 1px solid;border-radius: var(--font-size-S);overflow: hidden;width: 95%;
}/* 评论按钮 */
.submitComment{display: inline-block;/* align-items : center; *//* display: flex; *//* float: right; */ 
}

考试结果页

页面布局

<view class="page"><view class="padding radius shadow"><view class="flex justify-between align-center padding-bottom-sm solids-bottom"><view><view class="text-bold text-lg text-black">{{examName}}</view></view><view><view class="ranking-head" bindtap="showRanking"><!-- <text class="icon-upstagefill lg" style="font-size: 22px;"></text> --><view style="font-size: 22px;">获得{{points}}积分</view></view></view></view><view class="flex justify-between align-center padding-top-xl"><view class="flex align-center"><view class="cu-avatar round lg"><image class="avatar" src="{{userInfo.avatarUrl}}" mode="widthFix"></image></view><view class="text-bold text-black padding-left-sm">{{userInfo.nickName}}</view></view><view class='page-head'><view class='page-score'><text class="score-num text-bold text-sky">{{totalScore}}分</text></view></view></view><view class='page-footer'><view class='flex text-grey text-center margin-bottom padding bg-white radius solids'><view class='solid-right flex flex-direction flex-sub'><view class="text-purple text-xxl">{{totalTime}}秒</view><view class="margin-top-sm">用时</view></view><view class='solid-right flex flex-direction flex-sub'><view class="text-orange text-xxl">{{wrong}}题</view><view class="margin-top-sm">错题</view></view><view class='flex flex-direction flex-sub'><view class="text-xxl text-green">{{zql}}%</view><view class="margin-top-sm">正确率</view></view></view></view></view><view class="padding"><view class="padding flex flex-direction"><button bindtap="toAnalysis" class="cu-btn lg round bg-sky"> 查看错题集 </button><button bindtap="toIndex" class="cu-btn lg round line-sky margin-top"> 返回考试列表页 </button></view></view>
</view>

层叠样式

/* pages/results/results.wxss */
page {background-color: #fff;
}
.page {padding: 30rpx;
}
.page-score {display: flex;justify-content: center;align-items: flex-end;padding-top:20rpx;
}
.mw-avatar {width: 128rpx;height: 128rpx;border-radius: 50%;overflow: hidden;
}
.page-footer {margin-top:30rpx;text-align: center;
}
.score-num {font-size:60rpx;
}
.ranking-head {text-align: center;color: #FFB900;font-size: 24rpx;
}

错题集

温故而知新

页面布局

<view class="page"><view class="padding radius shadow margin-bottom" wx:for="{{wrongQuestionList}}" wx:key="index"><view class='padding-bottom page-hd'><view class="page-title">{{index+1}}、<text class="text-bold">【{{item.type == 1?"单选题":item.type == 2?"多选题":"判断题"}}】</text>{{item.question}}</view></view><view class="page-bd"><view class="my-choosebox" wx:for="{{item.option}}" wx:for-index="key" wx:for-item="value" wx:key="index"><text class="margin-left-xs">{{key}}、{{value}}</text></view></view><view><view class='padding-bottom page-hd padding-top solids-top flex justify-between align-center'><view class="page-title"><text class="text-bold">【正确答案】</text>{{item['true']}}</view></view></view></view>
</view>

层叠样式

page {background-color: #fff;
}
.page {padding: 20rpx;
}
.page-bd {padding: 20rpx;
}
.page .radio-group, .page .checkbox-group {display: block;
}
.my-choosebox {display: block;margin-bottom: 20rpx;border: 2rpx solid #ddd;padding: 20rpx;border-radius: 10rpx;line-height: 1;
}
.my-choosebox.checked {border-color: #0760E3;background-color: #438FFF;color: #fff;
}
.toindex-btn {margin-top: 20rpx;display:inline-block;line-height:2.3;font-size:13px;padding:0 1.34em;color: red;float: right;
}.yi-zuo-da, .wei-zuo-da, .yi-da, .wei-da {display: inline-block;width: 26rpx;height: 26rpx;border-radius: 50%;margin-right: 6rpx;
}
.yi-zuo-da, .yi-da {background-color: #4685FF;color: #fff;
}
.wei-zuo-da, .wei-da {border: 1px solid #ddd;
}
.yi-da, .wei-da {width: 66rpx;height: 66rpx;line-height: 66rpx;
}.collect {float:right;padding-right: 20rpx;
}.collect .lg {font-size: 36rpx;
}/* 评论区 */
.infoTitle{font-size: var(--font-size-M);font-weight: 600;color: #000;margin-bottom: 20rpx;
}
.van-cell{padding: 10rpx 0 10rpx 0 !important;/* position: relative;left: -26rpx; *//* font-size: var(--font-size-S); */
}.noComment{/* text-align: center; */color: #868688;margin-top: 50rpx;margin-bottom: 50rpx;
}.comment{background-color: #F2F1F6;margin-top: var(--font-size-M);padding: var(--font-size-S);border-radius: var(--font-size-S);
}.comment_time{color: #868688;display: inline-block;float: right;
}.comment_nickName{display: inline-block;color: #868688;
}.comment_text{font-size: 25rpx;color: #454547;
}.commentShell {margin-top: 50rpx;height: var(--font-size-M);margin-bottom: 100rpx;
}.inputComment{/* display: inline-block; *//* background-color: aqua; */border: var(--color-theme) 1px solid;border-radius: var(--font-size-S);overflow: hidden;width: 95%;
}/* 评论按钮 */
.submitComment{display: inline-block;/* align-items : center; *//* display: flex; *//* float: right; */ 
}

个人中心页

页面布局

<view class='mw-page'><view class='UCenter-bg'><view class="margin-bottom"><view class="cu-avatar xl round"><image class="avatar" src="{{userInfo.avatarUrl}}" mode="widthFix"></image></view></view><view class='text-xl'>{{userInfo.nickName}}</view><view class='margin-top-sm'><text class="cu-tag bg-yellow">{{ totalPoints }}积分</text></view></view><view class="cu-list menu card-menu margin-top-xl"><view class="cu-item arrow"><navigator class='content' url='../rank/rank' hover-class='none'><text class='icon-rankfill text-sky'></text><text class='text-grey'>积分排名</text></navigator></view><view class="cu-item arrow"><navigator class='content' url='../history/history' hover-class='none'><text class='icon-formfill text-sky'></text><text class='text-grey'>考试记录</text></navigator></view><view class="cu-item arrow"><navigator class='content' url='../myCollection/myCollection' hover-class='none'><text class='icon-favorfill text-sky'></text><text class='text-grey'>我的收藏</text></navigator></view><view class="cu-item arrow"><button class='cu-btn content' open-type='share'><text class='icon-appreciatefill text-sky'></text><text class='text-grey'>推荐给好友</text></button></view></view>
</view>

层叠样式

page {background-color: #f1f1f1;
}
.UCenter-bg {background: url(https://a.jpg?) no-repeat center center;background-size: cover;height: 450rpx;display: flex;justify-content: center;padding-top: 40rpx;overflow: hidden;position: relative;flex-direction: column;align-items: center;color: #fff;font-weight: 300;text-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
}.UCenter-bg text {opacity: 0.8;
}.UCenter-bg image {width: 200rpx;height: 200rpx;
}.UCenter-bg .gif-wave{position: absolute;width: 100%;bottom: 0;left: 0;z-index: 99;mix-blend-mode: screen;  height: 100rpx;   
}map,.mapBox{left: 0;z-index: 99;mix-blend-mode: screen;  height: 100rpx;   
}map,.mapBox{width: 750rpx;height: 300rpx;
}.mw-weixin.text-center {color: rgb(230, 230, 230);padding: 30rpx 0 0;
}

积分排行榜

积分由高到低进行排名

页面布局

<view class="mw-page"><view><image class="rank-banner" src="/image/rank-banner.png" mode="widthFix"></image></view><view class="name">{{ name }}</view><view class="menu menu-avatar cu-list"><view class="cu-item" wx:for="{{rankList}}" wx:key="index" style="padding-left:30rpx;"><view class='text-gray'><text class="{{index+1 <= 3?'icon-upstagefill text-yellow':'icon-medalfill text-gray'}}"></text> No.<text class="{{index+1 <= 3?'text-yellow':'text-gray'}} text-xl">{{index+1}}</text></view><view class='content flex align-center'><view class="cu-avatar lg round"><image class="avatar" src="{{item.avatarUrl}}" mode="widthFix"></image></view><view class='text-df text-grey nick-name'>{{item.nickName}}</view></view><view class='action'><view class='text-xl text-sky'>{{item.totalPoints}}积分</view></view></view></view>
</view>

层叠样式

page{background-color: #fff;
}
.name {position: absolute;top: 150rpx;left: 50rpx;z-index: 1;color: #fff;
}
.rank-banner {width: 100%;
}
.nick-name {padding-left: 50rpx;
}
.text-xl {font-size: 50rpx;
}

考试记录页

页面布局

<view class="mw-history-page padding"><view class="padding radius shadow margin-bottom" wx:for="{{historyList}}" wx:key="index"><view class="flex justify-between align-center padding-bottom-sm solids-bottom"><view><view class="text-bold text-lg text-black">{{item.examName}}</view></view><view><view class="ranking-head"><view style="font-size: 22px;">获得{{item.points}}积分</view></view></view></view><view class='page-footer margin-top' data-id="{{item._id}}" bindtap="goToResult"><view class='flex text-grey text-center margin-bottom padding bg-white radius solids'><view class='solid-right flex flex-direction flex-sub'><view class="text-sky text-xxl">{{item.totalScore}}分</view><view class="margin-top-sm">得分</view></view><view class='solid-right flex flex-direction flex-sub'><view class="text-purple text-xxl">{{item.totalTime}}秒</view><view class="margin-top-sm">用时</view></view><view class='solid-right flex flex-direction flex-sub'><view class="text-orange text-xxl">{{item.wrong}}题</view><view class="margin-top-sm">错题</view></view><view class='flex flex-direction flex-sub'><view class="text-xxl text-green">{{item.zql}}%</view><view class="margin-top-sm">正确率</view></view></view></view><view class="text-gray">交卷时间:{{item.date}}</view></view>
</view>

层叠样式

page{background-color: #fff;
}
.ranking-head {text-align: center;color: #FFB900;font-size: 24rpx;
}

我的收藏

页面布局

<view class="page"><view class="nav-list"><view class="radius shadow ke-cheng nav-li margin-bottom-sm" wx:for="{{list}}" wx:key="index" catchtap="goToDetail" data-id="{{item.cid}}"><view class="pic-box"><image src="{{item.thumb}}" mode="widthFix" class="thumb"></image></view><van-tag type="primary" color="#ffe1e1" text-color="#ad0000" class="tag"><text style="padding: 6rpx 4rpx;">{{item.mediatext}}</text></van-tag><view class="padding"><view class="text-bold padding-bottom-xs">{{item.menuname}}</view><view class="text-gray">共{{item.ksnum}}课时</view></view></view></view>
</view>

层叠样式

page {background-color: #fff;
}
.page {padding: 20rpx;
}
.page-bd {padding: 20rpx;
}
.page .radio-group, .page .checkbox-group {display: block;
}
.my-choosebox {display: block;margin-bottom: 20rpx;border: 2rpx solid #ddd;padding: 20rpx;border-radius: 10rpx;line-height: 1;
}
.my-choosebox.checked {border-color: #0760E3;background-color: #438FFF;color: #fff;
}
.toindex-btn {margin-top: 20rpx;display:inline-block;line-height:2.3;font-size:13px;padding:0 1.34em;color: red;float: right;
}.yi-zuo-da, .wei-zuo-da, .yi-da, .wei-da {display: inline-block;width: 26rpx;height: 26rpx;border-radius: 50%;margin-right: 6rpx;
}
.yi-zuo-da, .yi-da {background-color: #4685FF;color: #fff;
}
.wei-zuo-da, .wei-da {border: 1px solid #ddd;
}
.yi-da, .wei-da {width: 66rpx;height: 66rpx;line-height: 66rpx;
}.collect {float:right;padding-right: 20rpx;
}.collect .lg {font-size: 36rpx;
}/* 评论区 */
.infoTitle{font-size: var(--font-size-M);font-weight: 600;color: #000;margin-bottom: 20rpx;
}
.van-cell{padding: 10rpx 0 10rpx 0 !important;/* position: relative;left: -26rpx; *//* font-size: var(--font-size-S); */
}.noComment{/* text-align: center; */color: #868688;margin-top: 50rpx;margin-bottom: 50rpx;
}.comment{background-color: #F2F1F6;margin-top: var(--font-size-M);padding: var(--font-size-S);border-radius: var(--font-size-S);
}.comment_time{color: #868688;display: inline-block;float: right;
}.comment_nickName{display: inline-block;color: #868688;
}.comment_text{font-size: 25rpx;color: #454547;
}.commentShell {margin-top: 50rpx;height: var(--font-size-M);margin-bottom: 100rpx;
}.inputComment{/* display: inline-block; *//* background-color: aqua; */border: var(--color-theme) 1px solid;border-radius: var(--font-size-S);overflow: hidden;width: 95%;
}/* 评论按钮 */
.submitComment{display: inline-block;/* align-items : center; *//* display: flex; *//* float: right; */ 
}.thumb {width: 100%;
}
.ke-cheng {position: relative;overflow: hidden;
}
.tag {position: absolute;top: 0;right: 0;
}

相关文章:

搭建基于火灾风险预测与防范的消防安全科普小程序

基于微信小程序的消防安全科普互动平台的设计与实现&#xff0c;是关于微信小程序的&#xff0c;知识课程学习&#xff0c;包括学习后答题。 技术栈主要采用微信小程序云开发&#xff0c;有下面的模块&#xff1a; 1.课程学习模块 2.资讯模块 3.答题模块 4.我的模块 还需…...

05--Altium Designer(AD)的详细安装

一、软件的下载 Altium Designer官网下载 1、临近五一的假期&#xff0c;想着搞个项目&#xff0c;且这个项目与PCB有关系&#xff0c;所以就下这个软件来玩玩。下面保姆级教大家安装。 2、选择适合自己的版本下载&#xff08;我安装的是24的&#xff09; 3、软件安装 1.下…...

药监平台上传数据报资源码不存在

问题&#xff1a;电子监管码上传药监平台提示“导入的资源码不存在” 现象&#xff1a;从生产系统导出的关联关系数据包上传到药监平台时显示&#xff1a; 原因&#xff1a;上传数据包的通道的资源码与数据包的资源码不匹配。 解决方法&#xff1a;检查药监平台和生产系统的药…...

DeepSeek预训练追求极致的训练效率的做法

DeepSeek在预训练阶段通过多种技术手段实现了极致的训练效率,其中包括采用FP8混合精度训练框架以降低计算和内存需求 ,创新性地引入Multi-head Latent Attention(MLA)压缩KV缓存以提升推理效率,以及基于Mixture-of-Experts(MoE)的稀疏计算架构以在保证性能的同时显著降低…...

Windows11系统中GIT下载

Windows11系统中GIT下载 0、GIT背景介绍0.0 GIT概述0.1 GIT诞生背景0.2 Linus Torvalds 的设计目标0.3 Git 的诞生&#xff08;2005 年&#xff09;0.4 Git 的后续发展0.5 为什么 Git 能成功&#xff1f; 1、资源下载地址1.1 官网资源1.2 站内资源 2、安装指导3、验证是否下载完…...

Maven的概念与初识Maven

目录 一、Maven的概念 1. 什么是Maven 2. 项目构建&#xff1a;从代码到部署的标准化流程 2.1 Maven构建生命周期 2.2 传统构建 vs Maven构建 3. 依赖管理&#xff1a;解决“JAR地狱”的利器 3.1 依赖声明 3.2 依赖传递与冲突解决 4. Maven仓库&#xff1a;依赖的存储…...

【Android】app调用wallpaperManager.setBitmap的隐藏权限

这是一个杞人忧天的问题&#xff0c;app中&#xff0c;可以通过wallpaperManager.setBitmap来设置壁纸&#xff0c; private void setWallpaper() {// 获取 WallpaperManager 实例WallpaperManager wallpaperManager WallpaperManager.getInstance(getApplicationContext());t…...

ORACLE数据库备份入门:第四部分:2-备份场景举例

下面以4个常见的场景为例&#xff0c;介绍如何规划备份方案。备份方案没有标准答案&#xff0c;需要根据实现情况来制定&#xff0c;也和管理员的个人使用习惯有很大相关性。 1 交易型数据库备份 以银行的交易系统为例&#xff0c;除了前一章节提到的关于RPO和RTO的指标外&am…...

STL中emplace实现原理是什么?

template <class... Args>void emplace_back (Args&&... args);这个是vector的emplace_back方法&#xff0c;用到的c11的语法有三个&#xff0c;分别是万能引用、完美转发、参数包。 参数包中的参数是用来构造vector<T>中的T对象。 假如我直接传的就是一个…...

血泪之arduino库文件找不到ArduinoJSON.h: No such file or directory错误原因

#include <ArduinoJson.h> 始终报这个错误&#xff0c; C:\techxixi_project\Arduino\test\camer\camertoserver\camertoserver.ino:6:10: fatal error: ArduinoJSON.h: No such file or directory 6 | #include <ArduinoJSON.h> | ^~~~~~~~~…...

通过门店销售明细表用PySpark得到每月每个门店的销冠和按月的同比环比数据

假设我在Amazon S3上有销售表的Parquet数据文件的路径&#xff0c;包含ID主键、门店ID、日期、销售员姓名和销售额&#xff0c;需要分别用PySpark的SparkSQL和Dataframe API统计出每个月所有门店和各门店销售额最高的人&#xff0c;不一定是一个人&#xff0c;以及他所在的门店…...

【前后端分离项目】Vue+Springboot+MySQL

文章目录 1.安装 Node.js2.配置 Node.js 环境3.安装 Node.js 国内镜像4.创建 Vue 项目5.运行 Vue 项目6.访问 Vue 项目7.创建 Spring Boot 项目8.运行 Spring Boot 项目9.访问 Spring Boot 项目10.实现 Vue 与 Spring Boot 联动11.安装 axios12.编写请求13.调用函数请求接口14.…...

图解 Redis 事务 ACID特性 |源码解析|EXEC、WATCH、QUEUE

写在前面 Redis 通过 MULTI、EXEC、WATCH 等命令来实现事务功能。Redis的事务是将多个命令请求打包&#xff0c;然后一次性、按照顺序的执行多个命令的机制&#xff0c;并且在事务执行期间&#xff0c;服务器不会中断事务而该去执行其他客户端的命令请求。 就像下面这样&#…...

w~嵌入式C语言~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/13870307 一、单片机多任务事件驱动 单片机的ROM与RAM存贮空间有限&#xff0c;一般没有多线程可用&#xff0c;给复杂的单片机项目带来困扰。 经过多年的单片机项目实践&#xff0c;借鉴windows消息机制的思想&#xff…...

CMCC RAX3000M CH EC 算力版刷机(中国移动 RAX3000M 算力版)刷机

刷机前面的工作参考&#xff1a; https://blog.csdn.net/asdcls/article/details/147434218 刷机 eMMC Flash instructions: 1. SSH to RAX3000M, and backup everything, especially factory part. (data partition can be ignored, its useless.) 2. Write new GPT tabl…...

cron定时任务

cron定时任务 一、Cron表达式的定义 基础结构 Cron表达式是由空格分隔的6或7个字段组成的字符串&#xff0c;格式为&#xff1a; 秒 分 时 日 月 星期 [年]其中&#xff0c;年通常可以被省略 字段说明&#xff1a; 秒&#xff08;0-59&#xff09; 秒字段表示每分钟的哪一…...

1.4 大模型应用产品与技术架构

目录 一&#xff0c;产品架构 1.1 AI Embedded产品架构 1.2 AI Copilot产品架构 1.3 AI Agent产品架构 二&#xff0c;技术架构 2.1 纯Prompt 2.2 Agent Function Calling 2.3 RAG &#xff08;Retrieval-Augmented Generation 检索增强生成&#xff09; 2.4 Fine-tu…...

Android HAL HIDL

1 Android HAL HIDL 1.1 Android中查看有哪些HIDL HAL HIDL是Treble Interface的一部分。 adb root adb shell # lshal 1.2 Android打印C调用栈 #include <utils/CallStack.h> 在需要打印的地方加如下的定义。 android::CallStack stack("oem"); logcat | g…...

std::mutex底层实现原理

std::mutex是一个用于实现互斥访问的类&#xff0c;其具备两个成员函数——lock和unlock 锁的底层实现原理 锁的底层实现是基于原子操作的&#xff0c;这些原子操作是由指令支持的&#xff0c;因为单个指令是不能被中断的 一些与锁的实现有关的原子指令为&#xff1a; 待补充…...

性能提升手段--池化技术

看到hadoop代码里有ByteBufferPool,使用池子来避免频繁创建、销毁ByteBuffer,减轻GC压力,提高性能。 顺便总结一下池化技术 一、什么是池化技术?​​ ​​池化(Pooling)​​ 是一种资源管理策略,通过​​预先创建并复用资源​​(如数据库连接、线程、内存对象等)来提…...

精益数据分析(28/126):解读商业模式拼图与关键指标

精益数据分析&#xff08;28/126&#xff09;&#xff1a;解读商业模式拼图与关键指标 在创业和数据分析的探索旅程中&#xff0c;每一次深入研究都可能带来新的启发和突破。今天&#xff0c;我们依旧带着共同进步的初心&#xff0c;深入解读《精益数据分析》中关于商业模式的…...

QT6 源(52)篇二:存储 c 语言字符串的类 QByteArray 的使用举例,

&#xff08;3&#xff09; &#xff08;4&#xff09; 谢谢...

工业摄像头通过USB接口实现图像

工业摄像头系列概览&#xff1a;类型与应用 工业摄像头系列涵盖了多种类型&#xff0c;以满足不同行业和应用的需求。以下是对工业摄像头系列的一些介绍&#xff1a; 一、主要类型与特点 USB工业摄像头 &#xff1a;这类摄像头通常通过USB接口与计算机连接&#xff0c;适用于…...

【BBDM】main.py -- notes

命令行接口 python main.py [OPTIONS]参数 参数类型默认值说明-c, --configstr"BBDM_base.yml"配置文件路径-s, --seedint1234随机种子&#xff0c;用于结果复现-r, --result_pathstr"results"结果保存目录-t, --trainflagFalse训练模式开关&#xff1a;…...

X86物理机安装iStoreOS软路由

目录 安装前准备 制作启动盘 安装系统到硬盘 启动与初始配置 常见问题与注意事项 参考资料 安装前准备 硬件设备 X86物理机&#xff08;如普通电脑、J4125/N5105等小主机&#xff09; U盘&#xff08;建议容量≥2GB&#xff09; 显示器、键盘&#xff08;用于初始配置…...

QML Date:日期处理示例

目录 引言相关阅读QML Date对象知识概要格式化选项 DateExamples示例解析代码解析示例1&#xff1a;日期格式化示例2&#xff1a;不同地区的日期显示示例3&#xff1a;日期解析示例4&#xff1a;自定义格式示例5&#xff1a;日期与时间戳转换 运行效果总结下载链接 引言 在Qt …...

python 与Redis操作整理

以下是使用 Python 操作 Redis 的完整整理&#xff0c;涵盖基础操作、高级功能及最佳实践&#xff1a; 1. 安装与连接 (1) 安装库 pip install redis(2) 基础连接 import redis# 创建连接池&#xff08;推荐复用连接&#xff09; pool redis.ConnectionPool(hostlocalhost, …...

【Linux】环境监控系统软件框架

目录 tasks.h type.h main.c tasks.c makefile 运行结果 调用多线程框架&#xff0c;在主函数写好环境监控文件的函数&#xff0c;使用结构体封装环境指标的参数 最后使用makefile管理工程文件 tasks.h #include<pthread.h>#ifndef __TASK_H__ #define __TASK_H_…...

WPF实现数字孪生示例

WPF 数字孪生系统实现示例 数字孪生(Digital Twin)是通过数字化手段在虚拟空间中构建物理实体的精确数字模型,并实现虚实映射、实时交互和智能决策的技术。本文将展示如何使用WPF实现一个基础的数字孪生系统示例。 一、系统架构设计 1. 整体架构 +-------------------+ | …...

对卡尔曼滤波的理解和简单示例实现

目录 一、概述 二、基本公式解释 1&#xff09;状态转移方程 2&#xff09;状态更新方程 3&#xff09;卡尔曼系数更新方程 4&#xff09;误差协方差估计方程 三、一个简单示例 一、概述 经典卡尔曼滤波算法在线性系统中运用非常广泛&#xff0c;可以对数据实现很好的平…...

Linux基础命令总结

Linux系统命令 1. systemctl 1. 基本语法 systemctl start | stop | restart | status 服务名 2. 经验技巧查看服务的方法:/usr/lib/systemd/system 3. 案例实操 (1)查看防火墙服务的状态 systemctl status firewalld (2)停止防火墙服务 systemctl stop firewalld (…...

视觉大模型专栏导航

关于视觉大模型专栏&#xff0c;暂时还没有比较明确的更新计划&#xff0c;最近会在本专栏上更新关于Sam模型的基本原理&#xff0c;包括Image Encoder、Prompt Encoder及Mask Decoder等模块的实现&#xff1b;还有记录下如何利用Sam代码跑通一个demo。 后期接触了其他视觉大模…...

Eigen的主要类及其功能

Eigen 是一个高性能的 C 模板库&#xff0c;主要用于线性代数、矩阵和向量运算。它提供了许多类来支持各种数学运算&#xff0c;以下是 Eigen 的主要类及其功能分类。 1. 核心矩阵和向量类 这些是 Eigen 中最常用的类&#xff0c;用于表示矩阵和向量&#xff1a; Matrix - 通用…...

深入理解TransmittableThreadLocal:原理、使用与避坑指南

一、ThreadLocal与InheritableThreadLocal回顾 在介绍TransmittableThreadLocal之前&#xff0c;我们先回顾一下Java中的ThreadLocal和InheritableThreadLocal。 1. ThreadLocal ThreadLocal提供了线程局部变量&#xff0c;每个线程都可以通过get/set访问自己独立的变量副本…...

大模型奖励建模新突破!Inference-Time Scaling for Generalist Reward Modeling

传统的RM在通用领域面临准确性和灵活性挑战&#xff0c;而DeepSeek-GRM通过动态生成principle和critic&#xff0c;结合并行采样与meta RM引导的投票机制&#xff0c;实现了更高质量的奖励信号生成。论文通过Self-Principled Critique Tuning (SPCT)方法&#xff0c;显著提升了…...

C++:string 1

练习题&#xff1a; 这个题的思路是从前往后&#xff0c;从后往前同时找&#xff0c;不是字母的话就继续&#xff0c;是的话就交换。 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <string> using namespace std; //1、4个…...

C语言学习之调试

在C语言的编程学习中&#xff0c;我们能不可避免的要遇到bug。通常我们面对编译错误等问题是很容易发现的&#xff0c;但是当我们面对代码结果不满足预期等情况下是很难去改的&#xff0c;因此我们就要学习如何调试代码。 bug与调试 什么是bug&#xff1f; bug本意是“昆虫”和…...

【project】--模拟搭建一个中小型校园网的网络平台

文章目录 项目介绍设备及IP地址分配node01配置网卡配置DHCP配置路由转发 node02配置网卡配置安装并配置授权 Unbound DNS node03配置网卡配置安装防火墙SNAT配置DNAT配置(端口转发)纯缓存 Unbound DNS 配置 node04配置node05配置node06配置 项目介绍 本项目通过1台物理机和VMw…...

DeepSeek 的长上下文扩展机制

DeepSeek 在基础预训练完成后,引入 YaRN(Yet another RoPE extensioN method)技术,通过额外的训练阶段将模型的上下文窗口从默认的 4K 逐步扩展至 128K。整个过程分为两个阶段:第一阶段将上下文窗口从 4K 扩展到 32K;第二阶段则进一步从 32K 扩展到 128K。每个阶段均采用…...

AQS条件队列源码详细剖析

AQS条件队列源码详细剖析 0.简介 欢迎来到我的博客&#xff1a;TWind的博客 最好先看过我博客中的 ReentrantLock的超详细源码解析 &#xff0c;不然想要理解条件队列的源码会非常困难。 AQS中的条件队列相比同步队列略显简单&#xff0c;但依然优异且高效&#xff0c;复杂而…...

LeetCode --- 446 周赛

题目列表 3522. 执行指令后的得分 3523. 非递减数组的最大长度 3524. 求出数组的 X 值 I 3525. 求出数组的 X 值 II 一、执行指令后的得分 照着题目要求进行模拟即可&#xff0c;代码如下 // C class Solution { public:long long calculateScore(vector<string>&…...

ngrok 内网穿透技术系统性文档

ngrok 内网穿透技术系统性文档—目录 1. 概述与背景1.1 内网穿透的需求背景1.2 ngrok的核心定义1.3 定位与核心价值 2. 核心原理与技术架构2.1 技术架构图2.2 核心原理详解2.2.1 隧道建立流程2.2.2 多协议支持机制2.2.3 动态DNS与路由 3. 功能体系与配置详解3.1 基础功能3.1.1 …...

C++ 为什么建议类模板定义在头文件中,而不定义在源文件中

类模板 XXXX 模板的编译模式模板不是实际的代码&#xff0c;而是一个“代码生成模板” 分离定义会导致链接错误补充为什么普通类可以分离定义&#xff1f;对比C11的export关键字&#xff08;已弃用&#xff09; 模板的编译模式 C模板采用两阶段编译&#xff08;Two-Phase Tran…...

Android studio学习之路(八)---Fragment碎片化页面的使用

fragment的用法很常见&#xff0c;你可能经常看见这样的画面&#xff1a; 通过滑动来进行切换页面&#xff0c;今天我们就来实现这样的形式 介绍 使用 Fragment 的核心价值在于 ​​模块化设计​​ 和 ​​动态适配能力​​&#xff0c;尤其适合以下场景&#xff1a; 需要…...

数据结构和算法(九)--红黑树

一、红黑树 1、红黑树 前面介绍了2-3树&#xff0c;可以看到2-3树能保证在插入元素之后&#xff0c;树依然保持平衡状态&#xff0c;它的最坏情况下所有子结点都是2-结点&#xff0c;树的高度为IgN&#xff0c;相比于我们普通的二叉查找树&#xff0c;最坏情况下树的高度为N,确…...

字节跳动开源数字人模型latentsync1.5,性能、质量进一步优化~

项目背景 LatentSync1.5 是由 ByteDance 开发的一款先进的 AI 模型&#xff0c;专门针对视频唇同步&#xff08;lip synchronization&#xff09;任务设计&#xff0c;旨在实现音频与视频唇部动作的高质量、自然匹配。随着 AI 技术的快速发展&#xff0c;视频生成和编辑的需求…...

Pygame入门:零基础打造你的第一个游戏窗口

Pygame入门:零基础打造你的第一个游戏窗口 大家好,欢迎来到本期的技术分享!今天,我们将一起探索如何使用Python中的Pygame库来创建一个简单的游戏窗口。无论你是编程新手,还是对游戏开发感兴趣的朋友,这篇文章都将帮助你迈出第一步。让我们开始吧! 什么是Pygame? 在…...

《ATPL地面培训教材13:飞行原理》——第13章:高速飞行

翻译&#xff1a;刘远贺&#xff1b;工具&#xff1a;Cursor & Cluade 3.7&#xff1b;过程稿 第13章&#xff1a;高速飞行 目录 引言声速马赫数恒定指示空速爬升对马赫数的影响恒定马赫数下真空速随高度的变化恒定飞行高度和指示空速下温度对马赫数的影响气动流动的细分…...

【C语言练习】004. 使用各种运算符进行计算

【C语言练习】004. 使用各种运算符进行计算 004. 使用各种运算符进行计算1. 算术运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 逗号运算符综合示例输出结果004. 使用各种运算符进行计算 在C语言中,运算符用于执行各种数学和逻辑运算。以下是一些常见的运算符…...

Pygame事件处理详解:键盘、鼠标与自定义事件

Pygame事件处理详解:键盘、鼠标与自定义事件 在游戏开发中,玩家的交互是至关重要的。无论是移动角色、触发动作还是暂停游戏,都需要通过各种输入来实现。Pygame作为一个功能强大的Python库,提供了丰富的API来处理这些输入,包括键盘、鼠标以及自定义事件。本文将详细介绍如…...