2025 后端自学UNIAPP【项目实战:旅游项目】5、个人中心页面:微信登录,同意授权,获取用户信息
一、框架以及准备工作
1、前端项目文件结构展示 2、后端项目文件结构展示
3、登录微信公众平台,注册一个个人的程序,获取大appid(前端后端都需要)和密钥(后端需要)
微信公众平台微信公众平台,给个人、企业和组织提供业务服务与用户管理能力的全新服务平台。https://mp.weixin.qq.com/
4、后端代码配置上自己的appid和密钥以及相关文件
我的是 application.properties,
后端代码逻辑可以从这里获取,自己编写到自己的java后端业务代码中2025 Java 微信小程序根据code获取openid,二次code获取手机号【工具类】拿来就用-CSDN博客文章浏览阅读4次。Spring Boot实现微信小程序登录,含session_key获取和手机号解密功能。https://blog.csdn.net/m0_47484034/article/details/147993148?spm=1001.2014.3001.5501
#wechat
wx.open.applet.app_id=自己的
wx.open.applet.secret=自己的
5、前端配置上自己的appid
二、前端页面源码
1、页面源码personal_center.vue
微信登录重点是:弹出框的相关逻辑
<template><view class="container"><!-- 个人信息 --><view class="info-box"><!-- 签到、设置、聊天一行 --><view class="info-header"><!-- 签到 --><view class="sign-in"><up-icon name="calendar" color="#fff" size="30"></up-icon><view class="sign-text">签到</view></view><!-- 设置和聊天 --><view class="action-icons"><up-icon name="chat" color="#fff" size="30"></up-icon><up-icon name="setting" color="#fff" size="30" style="margin-left: 20rpx;"></up-icon></view></view><!-- 个人信息卡片 --><view class="profile-card" @click="toGetUserInfo"><!-- 个人信息卡片 信息主体 --><view class="profile-main"><!-- 如果未登录/未注册显示默认头像并提示注册/登录 --><template v-if="!userInfo.nickName"><!-- 默认头像 --><image class="avatar" src="../../static/logo.png" mode="aspectFill"></image><!-- 去注册/登录 --><view class="nikename">注册 / 登录</view></template><!-- 如果登录后,显示出头像和昵称 --><template v-else><!-- 获取头像 --><image class="avatar" image :src="userInfo.avatar" mode="aspectFill"></image><!-- 昵称 --><view class="nikename">{{userInfo.nickName}}</view></template></view><view class="profile-other"><view class="profile-other-item favourite"><view class="profile-other-item-num favourite—num">5</view><view class="profile-other-item-text favourite-text">最爱</view></view><view class="profile-other-item browse"><view class="profile-other-item-num browse-num">100</view><view class="profile-other-item-text browse-text">浏览</view></view></view></view></view><!-- 功能列表 --><view class="list-box"><view class="list"><uni-list><uni-list-item title="个人信息" showArrow thumb="/static/user-menu/个人信息.png" thumb-size="sm"clickable /><uni-list-item title="我的购物车" showArrow thumb="/static/user-menu/我的购物车.png" thumb-size="sm"clickable /><uni-list-item title="用户反馈" showArrow thumb="/static/user-menu/用户反馈.png" thumb-size="sm"clickable /><uni-list-item title="我的邮件" showArrow thumb="/static/user-menu/我的邮件.png" thumb-size="sm"clickable /><uni-list-item title="分享有礼" showArrow thumb="/static/user-menu/分享有礼.png" thumb-size="sm"clickable /></uni-list></view></view><!-- 弹出层 --><up-popup :show="show" @close="close"><view class="popup"><view class="popup-title">获取您的昵称、头像</view><!-- 头像选择 --><view class="popup-child-box"><view class="label">获取用户头像</view><button class="avatar-btn" open-type="chooseAvatar" @chooseavatar="onChooseAvatar"><image class="avatar-img" :src="userInfo.avatar || '/static/default-avatar.png'"></image></button></view><!-- 昵称输入 --><view class="popup-child-box"><view class="label">获取用户昵称</view><input class="nickname-input" type="nickname" @input="changeName" /></view><button size="default" type="primary" @click="userSubmit">确认</button></view></up-popup></view>
</template><script setup>import {ref,reactive} from 'vue'// 生命周期,进来就加载import {onLoad} from '@dcloudio/uni-app'// 生命周期,进来就加载import {login} from '../../api/my_api'import avatar from '../../uni_modules/uview-plus/components/u-avatar/avatar';onLoad(() => {// 尝试从本地存储获取用户信息const storedUserInfo = uni.getStorageSync('userInfo');if (storedUserInfo) {userInfo.nickName = storedUserInfo.nickName;userInfo.avatar = storedUserInfo.avatar;}})const userInfo = reactive({nickName: "",avatar: ""})// 控制弹出层的显示const show = ref(false)//关闭弹出层的显示const close = () => {show.value = false}const onChooseAvatar = (e) => {userInfo.avatar = e.detail.avatarUrl}const changeName = (e) => {userInfo.nickName = e.detail.value}// 用户提交信息const userSubmit = async () => {if (!userInfo.nickName || !userInfo.avatar) {uni.showToast({title: '请填写完整信息',icon: 'none'});return;}try {// 保存用户信息到本地存储uni.setStorageSync('userInfo', {nickName: userInfo.nickName,avatar: userInfo.avatar});uni.showToast({title: '信息保存成功',icon: 'success'});show.value = false} catch (e) {uni.showToast({title: '保存失败,请重试',icon: 'none'});}}//微信授权登录,获取微信用户相关信息const toGetUserInfo = () => {// 如果已经有用户信息,直接显示弹窗if (userInfo.nickName && userInfo.avatar) {show.value = true;return;}uni.showModal({title: "温馨提示",content: "授权登录才可以正常使用小程序",success(res) {if (res.confirm) {uni.login({success: async (data) => {uni.getUserInfo({provider: 'weixin',success: async function(infoRes) {const user = await login(data.code, infoRes.userInfo.avatarUrl)userInfo.nickName = infoRes.userInfo.nickNameuserInfo.avatar = infoRes.userInfo.avatarUrl// 保存用户信息到本地存储uni.setStorageSync('userInfo', {nickName: userInfo.nickName,avatar: userInfo.avatar});show.value = true}})}})}}})}
</script><style lang="scss" scoped>.container {height: 100vh;background-color: #f5f5f5;// 个人信息区域.info-box {width: 100%;position: relative;z-index: 1;overflow: hidden;padding: 40rpx 30rpx;box-sizing: border-box;&::after {content: "";width: 140%;height: 400rpx;z-index: -1;position: absolute;top: 0;left: -20%;background-color: #6799FF;border-radius: 0 0 50% 50%;}// 顶部图标行.info-header {display: flex;justify-content: space-between;align-items: center;margin-bottom: 40rpx;.sign-in {display: flex;align-items: center;.sign-text {color: white;font-size: 28rpx;margin-left: 10rpx;}}.action-icons {display: flex;align-items: center;}}// 个人信息卡片.profile-card {background-color: #fff;border-radius: 20rpx;padding: 30rpx;box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.08);// 个人信息卡片 信息主体.profile-main {display: flex;align-items: center;// 用户头像.avatar {width: 120rpx;height: 120rpx;border-radius: 50%;margin-right: 30rpx;}// 用户昵称.nikename {font-size: 36rpx;font-weight: bold;color: #333;}}.profile-other {display: flex;justify-content: space-around;align-items: center;.profile-other-item {text-align: center;margin-top: 40rpx;.profile-other-item-num {color: black;font-weight: 700;font-size: 25rpx;}.profile-other-item-text {color: #757575;margin-top: 10rpx;font-size: 20rpx;}}}}}// 功能列表.list-box {height: 200rpx;margin: -10rpx auto 0;padding: 20rpx;box-sizing: border-box;border-radius: 12rpx;}/* 弹出层样式 */.popup {padding: 40rpx;border-radius: 20rpx;background: #fff;/* 标题 */.popup-title {margin-bottom: 40rpx;font-size: 36rpx;font-weight: bold;text-align: center;color: #333;}}/* 每个选项容器 */.popup-child-box {display: flex;justify-content: space-between;align-items: center;padding: 30rpx 0;border-bottom: 1rpx solid #f0f0f0;/* 标签文字 */.label {font-size: 32rpx;color: #666;width: 200rpx;}/* 头像按钮 */.avatar-btn {margin: 0;padding: 0;border: none;background: transparent;line-height: 1;.avatar-img {width: 100rpx;height: 100rpx;border-radius: 50%;background: #f5f5f5;}}/* 昵称输入框 */.nickname-input {flex: 1;text-align: right;font-size: 32rpx;color: #333;}}}
</style>
2、调用的后端各个接口的js文件:my_api.js
// 引入公共的请求封装
import http from './my_http.js'// 登录接口
export const login = async (code, avatar) => {const res = await http('/login/getWXSessionKey', {code,avatar});
};// 获取bannner列表
export const getBannerList = () => {return http('/banner/list')
}// 获取景点类型列表(支持传入typeId参数)
export const getTypeList = () => {return http('/type/list')
}// 获取景点列表
export const getAttractionList = (typeId) => {// 如果有typeId就拼接到URL,没有就不加const url = typeId ? `/attraction/list?typeId=${typeId}` : '/attraction/list'return http(url)
}
// 获取景点详情
export const getAttractionInfo = (attractionId) => {return http(`/attraction/getInfo/${attractionId}`)
}
3、公共http请求封装的js文件:my_http.js
/*** 基础API请求地址(常量,全大写命名规范)* @type {string}* @constant*/
let BASE_URL="http://localhost:9001/travel"
/*** 封装的HTTP请求核心函数* @param {string} url - 请求的接口路径(不需要包含基础接口URL)* @param {Object} [data={}] - 请求参数,默认为空对象* @param {string} [method='GET'] - HTTP方法,默认GET,支持GET/POST/DELETE/PUT等* @returns {Promise} - 返回Promise便于链式调用* */
export default function http(url, data = {}, method = 'GET') {// 返回一个Promise对象,支持外部链式调用return new Promise((resolve, reject) => {// 调用uni-app的底层请求APIuni.request({// 拼接完整请求地址(基础接口URL + 请求的接口路径)url: BASE_URL + url,// 请求参数(GET请求时会自动转为query string)data: data,// 请求方法(转换为大写保证兼容性)method: method.toUpperCase(),// 请求头配置header: {// 从本地存储获取token,没有就位空'token': uni.getStorageSync('token') || '',// 默认JSON格式'Content-Type': 'application/json'},// 请求成功回调(注意:只要收到服务器响应就会触发,无论HTTP状态码)success: (res) => {/* HTTP层状态码处理(4xx/5xx等也会进入success回调) */if (res.statusCode !== 200) {const errMsg = `[${res.statusCode}]${res.errMsg || '请求失败'}`showErrorToast(errMsg)// 使用Error对象传递更多错误信息reject(errMsg)}/* 业务层状态码处理(假设1表示成功) */if (res.data.code === "200") {// 提取业务数据(约定data字段为有效载荷)resolve(res.data.data)} else {// 业务错误处理const errMsg = res.data.msg || `业务错误[${res.data.code}]`showErrorToast(errMsg)reject(res.data.msg)}},// 请求失败回调(网络错误、超时等)fail: (err) => {const errMsg = `网络连接失败: ${err.errMsg || '未知错误'}`showErrorToast(errMsg)reject(new Error(errMsg))},})})
}/*** 显示统一格式的错误提示(私有工具方法)* @param {string} message - 需要显示的错误信息* @private*/
function showErrorToast(message) {uni.showToast({title: message, // 提示内容icon: 'none', // 不显示图标duration: 3000 // 3秒后自动关闭})
}
三、效果
相关文章:
2025 后端自学UNIAPP【项目实战:旅游项目】5、个人中心页面:微信登录,同意授权,获取用户信息
一、框架以及准备工作 1、前端项目文件结构展示 2、后端项目文件结构展示 3、登录微信公众平台,注册一个个人的程序,获取大appid(前端后端都需要)和密钥(后端需要) 微信公众平台微信公众平台&…...
隆重推荐(Android 和 iOS)UI 自动化工具—Maestro
文章目录 前言一、为什么选择 Maestro?二、使用步骤1.安装(Windows)2.运行示例 三、Maestro Studio (重点)轻松编辑测试 四、价格总结 前言 当前移动 UI 自动化工具的实际效能与预期存在显著差距,团队推行…...
C#发送文件到蓝牙设备
测试环境: visual studio 2022 win11笔记本电脑,具有蓝牙功能 .net6控制台 测试步骤如下: 1 新增名为BluetoothDemo控制台项目 2 通过nuget安装InTheHand.Net.Bluetooth,版本选择4.2.1和安装InTheHand.Net.Obex,版…...
采用sherpa-onnx 实现 ios语音唤起的调研
背景 项目中需要实现一个语音唤起的功能,选择sherpa-onnx进行调研,要求各端都要验证没有问题。个人负责ios这部分的调研。查询官方发现没有直接针对ios语音唤起的稳定,主要技术平台也没有相关的可以借鉴。经过调研之后补充了一个。 一、下载…...
磁盘I/O瓶颈排查:面试通关“三部曲”心法
想象一下,你就是线上系统的“交通调度总指挥”,服务器的磁盘是所有数据进出的“核心枢纽港口”。当这个“港口”突然拥堵不堪,卡车(数据请求)排起长龙,进不去也出不来,整个系统的“物流”&#…...
磁盘性能测试与分析:结合fio和iostat的完整方案
磁盘性能测试与分析:结合fio和iostat的完整方案 磁盘性能是影响现代计算机系统整体运行效率的关键因素之一,特别是对于高I/O负载的应用如数据库、虚拟化环境等。本文将详细介绍如何利用fio和iostat工具全面评估磁盘性能,包括IOPS、带宽、延迟…...
随机森林(Random Forest)
随机森林(Random Forest)是一种基于决策树的集成学习算法,它通过构建多个决策树并将它们的预测结果进行综合,从而提高模型的准确性和稳定性。 1.基本原理 随机森林属于集成学习中的“Bagging”方法。其核心思想是通过构建多个决…...
C#数据类型
🧩 一、布尔值(bool) 表示逻辑值:true 或 false bool isTrue true; bool isFalse false;📌 二、整数(Integer Types) C# 支持多种有符号和无符号整数类型: 类型大小范围sbyte8…...
FastAPI 实现 Express 框架的 p-limit(1) 防并发操作
背景 以下是将 Electron 主进程中的 CURD 逻辑(Express 实现)迁移到 FastAPI 的完整方案,包含技术选型、实现步骤和注意事项,确保主进程与子进程解耦且稳定运行: 关键点 注意用 conda 安装 python 版本时,…...
STC8H系列单片机STC8H_H头文件功能注释
#ifndef __STC8H_H__ // 条件编译:如果未定义__STC8H_H__宏 #define __STC8H_H__ // 则定义该宏,防止头文件被重复包含 / //包含本头文件后,不用另外再包含"REG51.H" // 提示:本头文件已包含基本寄存器定义 sfr P0 = …...
C#中BackgroundWorker的概念与用法详解
一、BackgroundWorker 概念 BackgroundWorker 是 C# 中用于在后台线程中运行操作的组件,它允许你在不影响用户界面(UI)响应能力的情况下执行耗时操作。 它位于 System.ComponentModel 命名空间内,主要用于 Windows 窗体应用程序中…...
RM算法的地下宫殿
证: X n 1 X n β n ( ξ n − X n ) ( 1 − β n ) X n β n ξ n X_{n1}X_n\beta_n(\xi_n-X_n)(1-\beta_n)X_n\beta_n\xi_n Xn1Xnβn(ξn−Xn)(1−βn)Xnβnξn。由数学归纳法可得 X n 1 ∑ j 1 n ξ j β j ∏ i j n − 1 ( 1 − β…...
WEB安全--Java安全--LazyMap_CC1利用链
一、前言 该篇是基于WEB安全--Java安全--CC1利用链-CSDN博客的补充,上篇文章利用的是TransformedMap类,而CC链的原作者是利用的LazyMap类作为介质进行的触发。 所以本文将分析国外原作者在ysoserial commonscollections1中给出的CC1利用链。 二、回顾梳…...
【Matlab】最新版2025a发布,深色模式、Copilot编程助手上线!
文章目录 一、软件安装1.1 系统配置要求1.2 安装 二、新版功能探索2.1 界面图标和深色主题2.2 MATLAB Copilot AI助手2.3 绘图区升级2.4 simulink2.5 更多 延迟一个月,终于发布了🤭。 一、软件安装 1.1 系统配置要求 现在的电脑都没问题,老…...
[网络升级指南] 服务器网卡/带宽如何选?1GbE vs 10GbE vs 25GbE+ 性能与成本深度解析 (2025)
更多服务器知识,尽在hostol.com 嘿,各位服务器“舰长”们!当你为你的“星际飞船”(服务器)配备了顶级的 CPU“引擎”、超大的内存“能源核心”、以及光速 SSD“曲速引擎”之后,是不是觉得它就能在数字宇宙…...
Nginx与Tomcat负载均衡集群配置指南
目录 一、资源清单 二、基础环境 三、安装配置Tomcat 四、安装配置Nginx 一、资源清单 主机 操作系统 IP地址 tomcat1 OpenEuler24.03 192.168.16.142 tomcat2 OpenEuler24.03 192.168.16.143 Nginx OpenEuler24.03 192.168.16.144 二、基础环境 hostnamectl …...
已解决(亲测有效!):安装部署Docker Deskpot之后启动出现Docker Engine Stopped!
文章目录 已解决:安装部署Docker Deskpot之后启动出现Docker Engine Stopped!个人环境介绍自己的解决问题思路(详细过程附截图)1.打开控制面板2.点击程序和功能3.点击启动或关闭windows功能4.Hyper-V5.右键菜单栏的windows图标点击…...
C++多态实现的必要条件剖析
在C中,多态的一个必要条件确实是通过基类的指针或引用调用虚函数。这一要求背后的原因与C如何实现动态绑定(运行时多态)密切相关。下面详细解释了为什么需要使用基类的指针或引用来实现多态。 动态绑定与静态绑定 静态绑定(编译期…...
25.5.15
没有比水题更令人开心的事情了 典型的并查集题目,并查集分为并和查,并就是把有关系的父亲根结点设为同一个,查就是在成功构造后对其进行查询 查通过递归实现 if (x f[x])return x; return f[x] find(f[x]); 由于并查集的特点࿰…...
WebSocket:实时通信(如聊天应用)从零到一的深度解析
简介 在现代互联网应用中,实时通信已成为不可或缺的核心功能。从在线聊天到金融数据监控,从协同办公到在线游戏,实时性需求推动了WebSocket技术的广泛应用。本文将从底层协议原理出发,结合企业级开发场景,系统讲解WebSocket的实现机制、实战技巧与优化策略。通过完整的代…...
二程运输的干散货船路径优化
在二程运输中,干散货船需要将货物从一个港口运输到多个不同的目的地港口。路径优化的目标是在满足货物运输需求、船舶航行限制等条件下,确定船舶的最佳航行路线,以最小化运输成本、运输时间或其他相关的优化目标。 影响因素 港口布局与距离:各个港口之间的地理位置和距离…...
【Java ee初阶】http(1)
HTTP 全称为“超文本传输协议”,由名字可知,这是一个基于文本格式的协议,而TCP,UDP,以太网,IP...都是基于二进制格式的协议。 如何区别该协议是基于哪种格式的协议? 形如这种协议格式…...
《Deepseek从入门到精通》清华大学中文pdf完整版
资源介绍: 《DeepSeek:从入门到精通》是由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的精心撰写的一份专业文档。该文档以通俗易懂的方 式,全面介绍了DeepSeek的使用方法,为用户提供了极具价值的指导。 这份文档内容丰…...
【图片识别工具】批量单据识别批量重命名,批量OCR识别图片文字并重命名,批量改名工具的使用步骤和注意事项
一、适用场景 财务与发票管理:企业需处理大量电子发票或扫描件,通过OCR识别发票代码、金额等关键信息,自动重命名为发票号_金额.pdf格式,便于归档与税务审计。 物流单据处理:物流公司需从运单中提取单…...
重磅发布!OpenAI 推出最新模型 GPT-4.1 系列!
今日凌晨,OpenAI宣布开放全新模型GPT-4.1,并于即日起在ChatGPT中投入使用。 超长上下文与卓越编码能力 GPT-4.1作为OpenAI的最新模型,支持长达100万tokens的上下文,是OpenAI首次发布的长窗口模型。相较于前代,GPT-4.1…...
游戏引擎学习第281天:在房间之间为摄像机添加动画效果
回顾并为今天的内容定下基调 这次我们要继续深入处理实体系统。在前一阶段对实体系统做了一些很酷的改动,但现在到了要认真面对和完善它的时候。 今天的主要目标是修复并优化摄像机在房间之间移动时的逻辑。在上一次的实现中,我们重新启用了基于房间的…...
机器学习 --- 模型选择与调优
机器学习 — 模型选择与调优 文章目录 机器学习 --- 模型选择与调优一,交叉验证1.1 保留交叉验证HoldOut1.2 K-折交叉验证(K-fold)1.3 分层k-折交叉验证Stratified k-fold 二,超参数搜索三,鸢尾花数据集示例四,现实世界数据集示例…...
PostgreSQL pgrowlocks 扩展详解
一、简介 pgrowlocks 是 PostgreSQL 官方提供的扩展模块,用于查看指定表中每一行当前的行级锁(Row Lock)信息。它非常适用于: 并发冲突排查行级锁等待分析死锁前兆探测热点数据行分析 二、安装与启用 1. 安装前提(…...
Makefile 详解
Makefile 是一个用于自动化构建过程的脚本文件,主要用于管理源代码的编译和链接过程。它定义了项目中的依赖关系以及如何从源文件生成目标文件。 基本概念 Make:一个构建自动化工具,读取 Makefile 中的指令目标(Target):要生成的…...
IntelliJ IDEA 集成AI编程助手全解析:从Copilot到GPT-4o Mini的实践
目录 AI编程助手的演进与核心价值GitHub Copilot深度集成指南国产新星DeepSeek配置实战GPT-4o Mini低成本接入方案三大助手对比与场景适配企业级安全与本地化部署未来发展趋势与开发者启示1. AI编程助手的演进与核心价值 1.1 技术演进图谱 #mermaid-svg-LwYPrW2Y2Pqvqgf0 {fon…...
wps excel将表格输出pdf时所有列在一张纸上
记录:wps excel将表格输出pdf时所有列在一张纸上 1,调整缩放比例 2,将表格的所有铺满到这套虚线...
【开源Agent框架】OWL:面向现实任务自动化的多智能体协作框架深度解析
一、基本介绍 1.1 项目概述 OWL(Optimized Workforce Learning)是基于CAMEL-AI框架构建的创新型多智能体协作系统,旨在通过动态智能体交互实现复杂任务的自动化处理。项目在GAIA基准测试中以69.09的平均分位列开源框架榜首,展现了强大的任务处理能力。 技术特性矩阵: 多…...
120页WORD方案 | 2025企业数字化转型AI大模型数字底座项目设计方案
这份文档是一份关于企业数字化转型AI大模型数字底座项目的设计方案,涵盖了从项目概述、业务需求分析到技术架构设计等多个方面。它详细阐述了企业为何需要构建AI大模型底座,以及如何通过这一底座实现智能化决策支持、业务流程优化和客户体验提升。方案中…...
Vue3 本地环境 Vite 与生产环境 Nginx 反向代理配置方法汇总【反向代理篇】
文章目录 一、前言二、问题场景三、开发环境配置(Vite)四、生产环境配置(Nginx)4.1 初始错误配置4.2 正确配置方案4.3 配置解析4.4高级配置选项 五、常见问题排查六、开发环境 vs 生产环境对比七、总结 一、前言 在前后端分离架构…...
机器视觉对位手机中框点胶的应用
在手机制造的精密世界里,每一个环节都关乎着产品的最终品质,而手机中框点胶工艺更是其中关键一环。点胶不仅起到固定内部组件、增强结构强度的作用,还影响着手机的防水、防尘性能。然而,随着手机设计日益轻薄化、复杂化࿰…...
Elasticsearch性能调优全攻略:从日志分析到集群优化
#作者:猎人 文章目录 前言搜索慢查询日志索引慢写入日志性能调优之基本优化建议性能调优之索引写入性能优化提升es集群写入性能方法:性能调优之集群读性能优化性能调优之搜索性能优化性能调优之GC优化性能调优之路由优化性能调优之分片优化 前言 es里面…...
Electron 主进程中使用Worker来创建不同间隔的定时器实现过程
背景 目前主进程使用 timer.setInterval 来做间隔任务执行,但是总有用户反馈养号卡主不执行了,或者某个操作不执行了,为了排除主进程的运行造成 setInterval 阻塞可能,将 setInterval 单独处理,可以排除主进程对定时器…...
用户安全架构设计
一、主动踢出,被动踢出 二、密码设计策略:密码复杂度,密码安全检查,密码失效设计,账号锁定设计,密码存储和传输加密 三、密码找回策略:密保问题,下行短信验证码,上行短信…...
2025年黑客扫段攻击激增:如何构建智能防御体系保障业务安全?
引言 2025年,随着全球物联网设备突破500亿台,黑客利用自动化工具发起的扫段攻击(IP段扫描漏洞利用)已成为企业业务安全的最大威胁之一。单次攻击可覆盖数万个IP,精准定位未修复漏洞,导致数据泄露、服务瘫痪…...
基于大模型预测胃穿孔预测与围手术期管理系统技术方案
目录 1. 系统架构模块2. 关键算法实现2.1 术前预测模型(Transformer多模态融合)2.2 术中实时分析(在线学习LSTM)3. 模块流程图(Mermaid)3.1 数据预处理系统3.2 术前预测系统3.3 术中实时分析系统4. 技术验证模块4.1 模型可解释性验证4.2 边缘计算部署架构1. 系统架构模块…...
Java转Go日记(三十六):简单的分布式
1.1.1. 简单的分布式server 目前分布式系统已经很流行了,一些开源框架也被广泛应用,如dubbo、Motan等。对于一个分布式服务,最基本的一项功能就是服务的注册和发现,而利用zk的EPHEMERAL节点则可以很方便的实现该功能。EPHEMERAL节…...
操作系统-进程与线程
操作系统 操作系统用来保护系统资源和提高稳定性的重要机制 文章目录 用户态和内核态为什么要区分状态? 进程管理进程,线程进程/线程切换进程的5种状态进程通信线程通讯进程调度算法 用户态和内核态 用户态 应用程序运行时所在的模式,权限受限…...
人体肢体渲染-一步几个脚印从头设计数字生命——仙盟创梦IDE
人体肢体动作数据集-太极拳 渲染代码 # 初始化Pygame pygame.init()# 设置窗口尺寸 WINDOW_WIDTH 800 WINDOW_HEIGHT 600 window pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption("动作回放")# 设置帧率 FPS 30 clock pyg…...
如何安全配置好CDN用于防止DDoS与Web攻击 ?
保护网站免受DDoS和Web攻击是至关重要的,CDN(内容分发网络)可以作为一种有效的防御工具。以下是一些安全配置CDN以防止DDoS和Web攻击的最佳实践: 1. 选择可靠的CDN提供商 安全功能: 选择拥有强大安全功能的CDN提供商…...
01-数据结构概述和时间空间复杂度
数据结构概述和时间空间复杂度 1. 什么是数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 2. 什么是算法 算法(Algorithm)就是定义良好的计算…...
【ArcGIS技巧】根据地块、界址点图层生成界址线
"农经权二轮延包我已经写的差不多了,需要的一些生成四至、分割地块的功能也分享了替代的插件。前面刚分享完界址点的生成,今天分享界址线的生成,有需要的自取,至此,基本可以用这些功能完成出成果工作。" 1、…...
PC:使用WinSCP密钥文件连接sftp服务器
1. 打开winscp工具,点击“标签页”->“新标签页” 2. 点击“高级"->“高级” 3. 点击"验证"->“选择密钥文件” 选择ppk文件,如果没有ppk文件选择pem文件,会自动生成ppk文件 点击确定 4. 输入要连接到的sftp服务器的…...
RedHat7 如何更换yum镜像源
RedHat7如何更换yum镜像源? # 删除系统自带 yum rpm -qa|grep -e yum -e python-urlgrabber |xargs rpm -e --nodeps# 下载yum与wget的rpm软件包 curl -O http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm curl -O ht…...
k8s 1.10.26 一次containerd失败引发kubectl不可用问题
k8s 1.10.26 一次containerd失败引发kubectl不可用问题 开机k8s 1.10.26时,报以下错误 [rootmaster ~]# kubectl get no E0515 08:03:00.914894 7993 memcache.go:265] couldnt get current server API group list: Get "https://192.168.80.50:6443/api?…...
Qt信号槽机制与UI设计完全指南:从基础原理到实战应用
目录 前言一、信号槽1.1 传参1.2 Qt信号与槽的对应关系1.2.1一对多关系1.2.2 多对一关系 二、Designer三、Layout 布局3.1 基础用法3.2 打破布局3.3 贴合窗口3.4 伸展器(Spacer)3.5 嵌套布局 四、ui指针五、QWidget六、QLabel 标签使用指南总结 前言 本…...