【微信小程序】实现投票功能(附源码)

一、Vant Weapp介绍

  1.         Vant Weapp 是一个基于微信小程序的组件库,它提供了丰富的 UI 组件和交互功能,能够帮助开发者快速构建出现代化的小程序应用。Vant Weapp 的设计理念注重简洁、易用和高效,同时提供灵活的定制化选项,以满足开发者不同的需求。
  2.         Vant Weapp 包含了多个常用的组件,如按钮、导航栏、标签、列表、卡片、表单等,这些组件都经过精心设计和优化,可以帮助开发者快速构建出具有良好交互效果和用户体验的小程序页面。此外,Vant Weapp 还提供了常用的功能组件,例如加载提示、弹出框、下拉刷新、上拉加载等,方便开发者实现各种常用的交互功能。
  3.         Vant Weapp 采用了模块化的设计思路,每个组件都是独立的,不会对页面的其他部分产生影响,这样可以更加灵活地使用和维护组件库。同时,Vant Weapp 还提供了详细的文档和示例代码,方便开发者学习和使用。
  4.         Vant Weapp 是一个功能强大、易用性高的微信小程序组件库,它可以帮助开发者快速构建出现代化、具有良好用户体验的小程序应用。Vant Weapp - 轻量、可靠的小程序 UI 组件库 (youzan.github.io)icon-default.png?t=N7T8https://youzan.github.io/vant-weapp/#/dialog

二、后端

1、实体

编写会议实体和投票实体

会议实体

package com.zking.ssm.model;import java.util.Date;public class Info {private Long id;private String title;private String content;private String canyuze;private String liexize;private String zhuchiren;private String location;private Date starttime;private Date endtime;private String fujian;private Integer state;private String auditperson;private Date audittime;private String seatpic;private String remark;public Info(Long id, String title, String content, String canyuze, String liexize, String zhuchiren, String location, Date starttime, Date endtime, String fujian, Integer state, String auditperson, Date audittime, String seatpic, String remark) {this.id = id;this.title = title;this.content = content;this.canyuze = canyuze;this.liexize = liexize;this.zhuchiren = zhuchiren;this.location = location;this.starttime = starttime;this.endtime = endtime;this.fujian = fujian;this.state = state;this.auditperson = auditperson;this.audittime = audittime;this.seatpic = seatpic;this.remark = remark;}public Info() {super();}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getCanyuze() {return canyuze;}public void setCanyuze(String canyuze) {this.canyuze = canyuze;}public String getLiexize() {return liexize;}public void setLiexize(String liexize) {this.liexize = liexize;}public String getZhuchiren() {return zhuchiren;}public void setZhuchiren(String zhuchiren) {this.zhuchiren = zhuchiren;}public String getLocation() {return location;}public void setLocation(String location) {this.location = location;}public Date getStarttime() {return starttime;}public void setStarttime(Date starttime) {this.starttime = starttime;}public Date getEndtime() {return endtime;}public void setEndtime(Date endtime) {this.endtime = endtime;}public String getFujian() {return fujian;}public void setFujian(String fujian) {this.fujian = fujian;}public Integer getState() {return state;}public void setState(Integer state) {this.state = state;}public String getAuditperson() {return auditperson;}public void setAuditperson(String auditperson) {this.auditperson = auditperson;}public Date getAudittime() {return audittime;}public void setAudittime(Date audittime) {this.audittime = audittime;}public String getSeatpic() {return seatpic;}public void setSeatpic(String seatpic) {this.seatpic = seatpic;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}
}

投票实体

package com.zking.ssm.model;public class Option {private Long id;private Long meetingId;private String optionValue;private String optionText;public Option(Long id, Long meetingId, String optionValue, String optionText) {this.id = id;this.meetingId = meetingId;this.optionValue = optionValue;this.optionText = optionText;}public Option() {super();}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public Long getmeetingId() {return meetingId;}public void setmeetingId(Long meetingId) {this.meetingId = meetingId;}public String getoptionValue() {return optionValue;}public void setoptionValue(String optionValue) {this.optionValue = optionValue;}public String getoptionText() {return optionText;}public void setoptionText(String optionText) {this.optionText = optionText;}
}

2、xmlsql

用来访问数据库的数据进行数据的访问,一个访问会议数据,一个访问投票数据。

<select id="voteList" resultMap="BaseResultMap" >select<include refid="Base_Column_List" />from t_oa_meeting_infowhere 1=1<if test="state!=null">and state=#{state}</if><if test="title!=null">and title like concat('%',#{title},'%')</if></select>

<insert id="insertSelective" parameterType="com.zking.ssm.model.Option" >insert into t_oa_meeting_option<trim prefix="(" suffix=")" suffixOverrides="," ><if test="id != null" >id,</if><if test="meetingId != null" >meetingId,</if><if test="optionValue != null" >optionValue,</if><if test="optionText != null" >optionText</if></trim><trim prefix="values (" suffix=")" suffixOverrides="," ><if test="id != null" >#{id,jdbcType=BIGINT},</if><if test="meetingId != null" >#{meetingId,jdbcType=BIGINT},</if><if test="optionValue != null" >#{optionValue,jdbcType=VARCHAR},</if><if test="optionText != null" >#{optionText,jdbcType=VARCHAR}</if></trim></insert>

3、实现接口

编写方法调用xml里面的sql命令,以便更好的操作数据库里面的数据

编写接口方法

会议

package com.zking.ssm.mapper;import com.zking.ssm.model.Info;import java.util.List;public interface InfoMapper {int deleteByPrimaryKey(Long id);int insert(Info record);int insertSelective(Info record);Info selectByPrimaryKey(Long id);int updateByPrimaryKeySelective(Info record);int updateByPrimaryKey(Info record);List<Info> list(Info info);List<Info> voteList(Info info);
}

投票

package com.zking.ssm.mapper;import com.zking.ssm.model.Option;public interface OptionMapper {int deleteByPrimaryKey(String id);int insert(Option record);int insertSelective(Option record);Option selectByPrimaryKey(String id);int updateByPrimaryKeySelective(Option record);int updateByPrimaryKey(Option record);
}

实现接口

实现会议的接口和投票的接口,需要进行数据的交互。

会议

package com.zking.ssm.service.impl;import com.zking.ssm.mapper.InfoMapper;
import com.zking.ssm.mapper.WxUserMapper;
import com.zking.ssm.model.Info;
import com.zking.ssm.service.InfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** @软件包名 com.zking.ssm.service.impl* @用户 tgq* @create 2023-10-24 上午11:24* @注释说明:*/
@Service
public class InfoServiceImpl implements InfoService {@Autowiredprivate InfoMapper infoMapper;@Overridepublic int updateByPrimaryKeySelective(Info record) {return infoMapper.updateByPrimaryKeySelective(record);}@Overridepublic List<Info> voteList(Info info) {return infoMapper.voteList(info);}
}

投票

package com.zking.ssm.service.impl;import com.zking.ssm.mapper.OptionMapper;
import com.zking.ssm.model.Option;
import com.zking.ssm.service.OptionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @软件包名 com.zking.ssm.service.impl* @用户 tgq* @create 2023-10-24 下午9:57* @注释说明:*/
@Service
public class OptionServiceImpl implements OptionService {@Autowiredprivate OptionMapper om;@Overridepublic int insertSelective(Option record) {return om.insertSelective(record);}
}

4、编写Controller

Controller类进行一个前端和后端的一个数据的交互。

会议

package com.zking.ssm.wxcontroller;import com.zking.ssm.mapper.InfoMapper;
import com.zking.ssm.model.Info;
import com.zking.ssm.util.ResponseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** */
@SuppressWarnings("all")
@RestController
@RequestMapping("/wx/info")
public class WxInfoController {@Autowiredprivate InfoMapper infoMapper;@RequestMapping("/list")public Object list (Info info){List<Info> list = infoMapper.list(info);Map<Object, Object> data = new HashMap<Object, Object>();data.put("infoList",list);return ResponseUtil.ok(data);}@RequestMapping("/votelist")public Object voteList (Info info){List<Info> list = infoMapper.voteList(info);Map<Object, Object> data = new HashMap<Object, Object>();data.put("voteList",list);return ResponseUtil.ok(data);}@RequestMapping("/update")public Object update (Info info){int i = infoMapper.updateByPrimaryKeySelective(info);return ResponseUtil.ok(i);}
}

投票

package com.zking.ssm.wxcontroller;import com.zking.ssm.mapper.InfoMapper;
import com.zking.ssm.mapper.OptionMapper;
import com.zking.ssm.model.Info;
import com.zking.ssm.model.Option;
import com.zking.ssm.util.ResponseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @Autho donkee* @Since 2022/7/29*/
@SuppressWarnings("all")
@RestController
@RequestMapping("/wx/option")
public class WxOptionController {@Autowiredprivate OptionMapper optionMapper;@RequestMapping("/insert")public Object insertSelective(Option option) {int i = optionMapper.insertSelective(option);return ResponseUtil.ok(i);}}

三、前端

里面有一些技术这里就不多做讲解了,可以查看我的专栏微信小程序_无法自律的人的博客-CSDN博客。

在这里面运用到了一个小程序的插件Dialog 弹出框 - Vant Weapp (youzan.github.io)。在Vant Weapp里面有很多使用的插件,可以更便捷使用起来,主要引用需要自己查看官方文档了。

1、页面布置

编写主页面的页面布置,里面使用了外部插件的一个弹窗组件。

里面利用到了一个wxs的使用。

wxml

<tabs tabList="{{tabs}}" bindtabsItemChange="tabsItemChange"><view class="search-container"><input class="search-input" bindblur="ontitle" bindblur="onBlur" placeholder="会议标题" /><!-- <input class="search-input" bindinput="searchInputTwo" placeholder="投票标题" /> --><button type="primary" plain="true" size="mini" bindtap="likelist">搜索</button></view>
</tabs>
<view><view class="list" data-id=""><view class="list-img al-center"><image class="video-img" mode="scaleToFill" src=""></image></view><view class="list-detail"><view class="list-title"><text><text style="margin-right: 13rpx;"></text></text></view><view class="list-title"><text></text></view><view class="list-tag"><view class="state al-center"></view><view class="join al-center"><text class="list-count"></text></view></view><view class="list-info"><text style="font-weight: bold;"></text><text></text> <text style="float: right;"></text> </view><view><button class="btn"></button></view></view></view><wxs src="/utils/capture.wxs" module="tools" /><block wx:for-items="{{lists}}" wx:for-item="item" wx:key="item.id"><view class="list" data-id="{{item.id}}"><view class="list-img al-center"><image class="video-img" mode="scaleToFill" src="/static/persons/7.jpg"></image></view><view class="list-detail"><view class="list-title"><text><text style="margin-right: 13rpx;"> 发 起 人</text> : {{item.zhuchiren}}</text></view><view class="list-title"><text>会议名称 : {{item.title}}</text></view><!-- <view class="list-title"><text>投票标题 : [ {{item.vote}} ]</text></view> --><view class="list-tag"><view class="state al-center">{{tools.getState(item.state)}}</view><view class="join al-center"><text class="list-count">{{tools.getNumber(item.canyuze,item.liexize,item.zhuzhiren)}}</text>人参与会议</view></view><view class="list-info"><text style="font-weight: bold;">地址:</text><text>{{item.location}}</text> <text style="float: right;">开始时间:{{tools.formatDate(item.starttime,'YY-MM-DD hh-mm-ss')}}结束时间:{{tools.formatDate(item.endTime,'YY-MM-DD hh-mm-ss')}}</text> </view><view data-id="{{item.id}}" bindtap="{{data.state == 5 ? 'show1' : 'showPopup'}}"><button class="btn">{{data.state == 5? '开启投票' : '参与投票'}}</button><!-- <button wx:if="{{data.state == 5}}"  class="btn" bindtap="show1">开启投票</button><button wx:else="{{data.state == 6}}" class="btn" bindtap="showPopup">参与投票</button> --></view></view></view></block><view class="section bottom-line"><text>到底啦</text></view>
</view><!-- 开启投票 弹窗-->
<van-dialog use-slot title="请添加投票选项" show="{{ show1 }}" show-cancel-button bind:close="onClose1" bind:confirm="getVoteState"><view class="container"><view class="input-box"><input placeholder="请输入投票选项" bindblur="onOptionValue" bindinput="bindInput"></input></view><view class="checkbox-group"><view class="checkbox-item" data-id="1" bindtap="toggleCheckbox">同意</view><view class="checkbox-item" data-id="2" bindtap="toggleCheckbox">不同意</view><view class="checkbox-item" data-id="3" bindtap="toggleCheckbox">保留意见</view><view class="checkbox-item" data-id="4" bindtap="toggleCheckbox">弃票</view></view></view>
</van-dialog>
<!-- 选择投票选项 弹窗 -->
<van-dialog use-slot title="选择投票" show="{{ show }}" show-cancel-button bind:close="onClose" bind:confirm="getVoteOption"><view class="container"><view class="input-box"><!-- <input placeholder="请输入投票选项" bindinput="bindInput"></input> --></view><view class="checkbox-group"><view class="checkbox-item {{ checkbox1 ? 'active' : '' }}" data-id="1" bindtap="toggleCheckbox">同意</view><view class="checkbox-item {{ checkbox2 ? 'active' : '' }}" data-id="2" bindtap="toggleCheckbox">不同意</view><view class="checkbox-item {{ checkbox3 ? 'active' : '' }}" data-id="3" bindtap="toggleCheckbox">保留意见</view><view class="checkbox-item {{ checkbox4 ? 'active' : '' }}" data-id="4" bindtap="toggleCheckbox">弃票</view></view></view>
</van-dialog>

2、功能实现

调用到了以上页面的功能、方法的使用,后台数据的交互。

js

// pages/vote/list/list.js ../../config/api.js
const api = require('../../../config/api.js');
const util = require('../../../utils/util.js');
const app = getApp();
Page({/*** 页面的初始数据*/data: {show: false,show1: false,tabs: ['未开启投票', '已开启投票'],lists: [],inputValue: '',//输入框内容data: {id: 0,state: 5,title: ''},option: {meetingId: 0,optionValue: ''},checkbox1: false,checkbox2: false,checkbox3: false,checkbox4: false},onBlur: function (e) {//输入框获取事件this.setData({inputValue: e.detail.value});},onOptionValue: function (e) {//弹窗1输入框获取this.setData({option: { optionValue: e.detail.value }});},likelist() {//搜索事件// console.log(this.data.inputValue);this.data.data.title = this.data.inputValuethis.InfoVote();},tabsItemChange(e) {//是否投票var tolists;if (e.detail.index == 0) {tolists = 5;this.data.data.state = 5// tolists = this.data.lists;} else if (e.detail.index == 1) {// tolists = this.data.lists;tolists = 6;this.data.data.state = 6}this.setData({data: {state: tolists}})console.log(e.detail, this.data.Profile, this.data.data, tolists);this.InfoVote();},InfoVote() {//初始化数据util.request(api.MettingInfoVote, this.data.data).then(res => {// console.log(res)this.setData({lists: res.data.voteList})}).catch(res => {console.log('服器没有开启,使用模拟数据!')})},toggleCheckbox: function (e) {var checkboxId = e.currentTarget.dataset.id;var data = {}; // 更新的状态数据// 遍历每个复选框的状态变量,根据点击的复选框的id确定是否选中Object.keys(this.data).forEach(key => {if (key.includes('checkbox') && key !== `checkbox${checkboxId}` && this.data[key]) {data[key] = false; // 将其他复选框的状态设为false}});// 切换当前复选框的选中状态data[`checkbox${checkboxId}`] = !this.data[`checkbox${checkboxId}`];this.setData(data);},// 1弹窗show1(e) {// console.log(e, e.currentTarget.dataset.id)this.setData({data: {id: e.currentTarget.dataset.id},})this.setData({show1: true})// console.log(e.currentTarget.dataset.id, this.data.data)},getVoteState(e) {//开启投票确认事件console.log(e, this.data.data, this.data.option.meetingId);var optiondata = {meetingId: this.data.data.id,optionValue: this.data.option.optionValue}// console.log(optiondata)util.request(api.MettingOptionInsert, optiondata).then(res => {//添加投票选项// console.log(api.MettingOptionInsert);if (res.errno == 0) {wx.showToast({title: '开启投票成功',icon: 'none',duration: 1500//持续的时间})util.request(api.MettingInfoupdate, { id: optiondata.meetingId, state: 6 }).then(r => {//更改会议状态// console.log(api.MettingInfoupdate);// this.InfoVote('');if (res.errno == 0) {this.data.data.state = 5this.InfoVote('');}}).catch(res => {console.log('服器没有开启,使用模拟数据!')})}}).catch(res => {console.log('服器没有开启,使用模拟数据!')})// console.log(123,i)},onClose1() {this.setData({ show1: false });},// 2弹窗showPopup(e) {this.setData({show: true,data: {id: e.currentTarget.dataset.id}})},getVoteOption(e) {//参与投票确认事件console.log(2, e.detail);},onClose() {this.setData({ show: false });},/*** 生命周期函数--监听页面加载*/onLoad(options) {// this.data.Profile=truethis.InfoVote('');}
})

3、页面美化

美化了页面的布局与美化,还有弹窗的美化,弹窗的布局美化,可以更好的操作。

wxss

/* pages/vote/list/list.wxss */.search-container {display: flex;justify-content: space-between;align-items: center;padding: 10px;background-color: #ffffff;border: cornsilk;
}.search-input {width: 45%;padding: 8px;border-radius: 20px;border: 1px solid rgb(255, 255, 255);font-size: 14px;transition: border-color 0.3s;border: cornsilk;
}.search-input:focus {outline: none;border-color: #51a7f9;
}.search-input::placeholder {color: #999;
}.search-input::-webkit-input-placeholder {color: #999;
}.search-input::-moz-placeholder {color: #999;
}.search-input:-ms-input-placeholder {color: #999;
}
.list {display: flex;flex-direction: row;width: 100%;padding: 0 20rpx 0 0;background-color: seashell;border-bottom: 1px solid #cecece;margin-bottom: 5rpx;height: 350rpx;
}.list-img {display: flex;margin: 10rpx 10rpx;width: 160rpx;height: 250rpx;justify-content: center;align-items: center;flex-direction: column;
}.list-img .video-img {width: 140rpx;height: 160rpx;border-radius: 6px;
}.list-detail {margin: 10rpx 10rpx;display: flex;flex-direction: column;width: 600rpx;height: 300rpx;
}.list-title text {font-size: 9pt;color: #333;font-weight: bold;
}.list-detail {display: flex;height: 100rpx;
}.list-tag {display: flex;
}.state {font-size: 9pt;color: blue;width: 120rpx;height: 40rpx;border: 1px solid blue;border-radius: 2px;margin: 10rpx 0rpx;display: flex;justify-content: center;align-items: center;
}.join {font-size: 11pt;color: #bbb;margin-left: 20rpx;display: flex;justify-content: center;align-items: center;
}.list-count {margin-right: 10rpx;font-size: 11pt;color: red;
}.list-info {font-size: 9pt;color: #bbb;
}.btn {background-color: #3388ff;color: #fff;border-radius: 4rpx;font-size: 16rpx;padding: 10rpx 20rpx;
}.bottom-line {display: flex;height: 60rpx;justify-content: center;align-items: center;background-color: #f3f3f3;
}.bottom-line text {font-size: 9pt;color: #666;
}/* 弹窗 */
.container {display: flex;flex-direction: column;justify-content: center;align-items: center;
}.input-box {margin-top: 20px;
}.checkbox-group {display: flex;flex-direction: column;margin-top: 15px;
}.checkbox-item {width: 100px;height: 40px;background-color: #eaf0f4;margin-bottom: 10px;display: flex;justify-content: center;align-items: center;
}
.container {display: flex;flex-direction: column;justify-content: center;align-items: center;}.input-box {margin-top: 20px;}.checkbox-group {display: flex;flex-direction: column;margin-top: 15px;}.checkbox-item {width: 100px;height: 40px;background-color: #eaf0f4;margin-bottom: 10px;display: flex;justify-content: center;align-items: center;border: 1px solid #ccc;}.checkbox-item.active {background-color: #4285f4;color: white;border-color: #4285f4;}

4、效果演示

演示效果较长,请耐心观看等待.....

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

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

相关文章

如何使用gpt提高效率

如何使用gpt提高效率 自动化替代人力工作减少创意工作需求技术依赖风险实际应用领域内容生成自动回答问题自动化编程个性化推荐 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试题大全》 &#x1f369;惟余辈才疏学浅&…

[量化投资-学习笔记002]Python+TDengine从零开始搭建量化分析平台-MA均线的多种实现方式

MA 均线时最基本的技术指标&#xff0c;也是最简单&#xff0c;最不常用的&#xff08;通常使用EMA、SMA&#xff09;。 以下用两种不同的计算方法和两种不同的画图方法进行展示和说明。 MA 均线指标公式 MA (N)(C1 C2 C3 …C N )/N目录 方式一1.SQL 直接查询均值2.使用 pyp…

Unity游戏开发中打造游戏攻击技能架构与设计

一、技能系统的设计 在 MOBA 游戏中&#xff0c;每个英雄角色都会有多个技能&#xff0c;这些技能可以分为普通攻击和技能攻击两种。普通攻击是英雄角色的基本攻击方式&#xff0c;而技能攻击则需要消耗一定的资源&#xff08;如蓝量&#xff09;才能使用。在设计技能系统时&a…

TensorFlow学习:使用官方模型和自己的训练数据进行图片分类

前言 教程来源&#xff1a;清华大佬重讲机器视觉&#xff01;TensorFlowOpencv&#xff1a;深度学习机器视觉图像处理实战教程&#xff0c;物体检测/缺陷检测/图像识别 注&#xff1a; 这个教程与官网教程有些区别&#xff0c;教程里的api比较旧&#xff0c;核心思想是没有变…

GoLong的学习之路(八)语法之Map

文章目录 Map初始化方式判断某个键是否存在map的遍历对value值遍历。对key值遍历 使用delete()函数删除键值对按照指定顺序遍历map元素为map的切片值为切片类型的map 做个题吧 Map 哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合&#xff0c;其中所有的…

Python环境下LaTeX数学公式转图像方案调研与探讨

目录 引言方案一&#xff1a;基于LaTeX环境方案二&#xff1a;基于KaTeX(推荐) 方案三&#xff1a;基于Matplotlib写在最后 引言 近来&#xff0c;涉及到一些公式识别的项目&#xff0c;输入是公式的图像&#xff0c;输出是LaTeX格式的数学公式字符串。 这类项目一般都采用深…

Powershell脚本自动备份dhcp数据库

文章目录 为什么要备份DHCP数据库呢&#xff1f;在PowerShell中自动备份DHCP数据库1&#xff0c;创建备份目录2&#xff0c;判断备份路径是否存在3&#xff0c;备份DHCP数据库4&#xff0c;完整自动备份脚本5&#xff0c;安排定期备份 推荐阅读 为什么要备份DHCP数据库呢&#…

国密 SM2 SSL 证书 Nginx 安装指南 linux版

一、获取国密证书 1、在您完成申请西部GDCA服务器证书的流程后&#xff0c;下载证书将获取一个证书包&#xff0c;有以下 *.***.com_sign.crt&#xff1a;签名证书 *.***.com_sign.key&#xff1a;签名证书私钥 *.***.com_encrypt.crt&#xff1a;加密证书 *.***.com_encr…

基于鸡群算法的无人机航迹规划-附代码

基于鸡群算法的无人机航迹规划 文章目录 基于鸡群算法的无人机航迹规划1.鸡群搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用鸡群算法来优化无人机航迹规划。 1.鸡群搜索算法 …

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远控介绍及界面编写

红队专题 招募六边形战士队员[1]远控介绍及界面编写1.远程控制软件演示及教程简要说明主程序可执行程序 服务端生成器主机上线服务端程序 和 服务文件管理CMD进程服务自启动主程序主对话框操作菜单列表框配置信息 多线程操作非模式对话框 2.环境&#xff1a;3.界面编程新建项目…

JavaScript_Pig Game切换当前玩家

const current0El document.getElementById(current--0); const current1El document.getElementById(current--1); if (dice ! 1) {currentScore dice;current0El.textContent currentScore;} else {} });这是我们上个文章写的代码&#xff0c;这个代码明显是有问题的&…

[量化投资-学习笔记003]Python+TDengine从零开始搭建量化分析平台-Grafana画K线图

在前面两个笔记&#xff1a; PythonTDengine从零开始搭建量化分析平台-数据存储 PythonTDengine从零开始搭建量化分析平台-MA均线的多种实现方式 中有提到使用 Grafana 画图&#xff0c;不过画的都是均线。除了均线&#xff0c;Grafana 非常人性的提供了 K线图模块 搭配 TDeng…

VScode 调试 linux内核

VScode 调试 linux内核 这里调试的 linux 内核是通过 LinuxSD卡(rootfs)运行的内核 gdb 命令行调试 编辑 /home/tyustli/.gdbinit 文件&#xff0c;参考 【GDB】 .gdbinit 文件 set auto-load safe-path /home/tyustli/code/open_source/kernel/linux-6.5.7/.gdbinit在 lin…

Cross Site Scripting (XSS)

攻击者会给网站发送可疑的脚本&#xff0c;可以获取浏览器保存的网站cookie&#xff0c; session tokens, 或者其他敏感的信息&#xff0c;甚至可以重写HTML页面的内容。 背景 XSS漏洞有不同类型&#xff0c;最开始发现的是存储型XSS和反射型XSS&#xff0c;2005&#xff0c;Am…

Linux中shell脚本中的运算

目录 一、运算符号 二、运算指令 三、练习 一、运算符号 加法-减法*乘法/除法%除法后的余数**乘方自加一--自减一 <小于<小于等于>大于>大于等于等于ji&#xff0c;jji*jj*i/jj/i%jj%i 二、运算指令 (()) ##((a12)) let ##let a12 expr ##expr 1 2 …

【数据结构】交换排序

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 冒泡、快速排序 1. 冒泡排序2. 快速…

城市群(Megalopolis)/城际(inter-city)OD相关研究即Open Access数据集调研

文章目录 1 城市群/城际OD定义2 理论模型与分析方法2.1 重力模型 Gravity Model2.2 干预机会模型 Intervening Opportunities Model2.3 辐射模型 Radiation Model 3 Issues related to OD flows3.1 OD Prediction3.2 OD Forecasting3.3 OD Construction3.4 OD Estimation 4 OD …

基于单片机的智能电子鼻的设计

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、智能电子鼻系统的设计方案1.1智能电子鼻系统的设计思路1.2智能电子鼻系统的设计流程图1.3智能电子鼻系统的硬件数…

source insight4菜单工具按钮变乱恢复

目录 1&#xff1a;问题现象2&#xff1a;修改方式2.1 找到config_all.xml2.2 修改config_all.xml 1&#xff1a;问题现象 在source insight4点击工具按钮的时候&#xff0c;把工具全部都折叠了&#xff0c;然后手动拉出来的时候就乱了。 2&#xff1a;修改方式 2.1 找到con…

【多线程面试题 三】、 run()和start()有什么区别?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; run()和start()有什么区…