OA项目值用户登入首页展示
1.什么是OA
办公自动化(Office Automation,简称OA)是将现代化办公和计算机技术结合起来的一种新型的办公方式。办公自动化没有统一的定义,凡是在传统的办公室中采用各种新技术、新机器、新设备从事办公业务,都属于办公自动化的领域。通过实现办公自动化,或者说实现数字化办公,可以优化现有的管理组织结构,调整管理体制,在提高效率的基础上,增加协同办公能力,强化决策的一致性 。
OA软件的核心应用是:流程审批、协同工作、公文管理(国企和政府机关)、沟通工具、文档管理、信息中心、电子论坛、计划管理、项目管理、任务管理、会议管理、关联人员、系统集成、门户定制、通讯录、工作便签、问卷调查、常用工具(计算器、万年历等)。
2.初始化数据库及数据
| 表名 | 说明 |
|---|---|
| t_oa_meeting_info | 会议信息表 |
| t_oa_meeting_feedback | 会议通知反馈表 |
| t_oa_meeting_audit | 会议审批信息表 |
| t_oa_meeting_option | 会议投票标题选项表 |
| t_oa_meeting_room | 会议室信息表 |
| t_oa_permission | 权限信息表 |
| t_oa_role_permission | 角色权限表 |
| t_oa_user | 用户信息表 |
下面是创建数据库所有的数据库脚本:
/*Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50723Source Host : localhost:3306Source Schema : oaTarget Server Type : MySQLTarget Server Version : 50723File Encoding : 65001Date: 25/02/2022 10:41:07
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for t_oa_meeting_audit
-- ----------------------------
DROP TABLE IF EXISTS `t_oa_meeting_audit`;
CREATE TABLE `t_oa_meeting_audit` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键,唯一标识',`meetingId` bigint(11) NOT NULL COMMENT '外键,会议编号',`auditor` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '审批人',`sign` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '审批签字',`createdate` timestamp(0) null DEFAULT NULL COMMENT '审批时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '会议审批信息表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for t_oa_meeting_feedback
-- ----------------------------
DROP TABLE IF EXISTS `t_oa_meeting_feedback`;
CREATE TABLE `t_oa_meeting_feedback` (`id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键,唯一标识',`meetingId` bigint(11) NOT NULL COMMENT '外键,会议编号',`personType` int(2) NOT NULL COMMENT '人员类别:1参会2列席',`personId` bigint(11) NOT NULL COMMENT '人员ID',`result` int(2) NOT NULL COMMENT '反馈结果:1参加0不参加',`reason` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '不参与会议的原因',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '会议通知反馈表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for t_oa_meeting_info
-- ----------------------------
DROP TABLE IF EXISTS `t_oa_meeting_info`;
CREATE TABLE `t_oa_meeting_info` (`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主键,唯一标识',`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '会议标题',`content` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '会议内容',`canyuze` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '参与人员',`liexize` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '列席人员',`zhuchiren` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主持人',`location` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '会议地点',`startTime` datetime(0) NOT NULL COMMENT '开始时间',`endTime` datetime(0) NOT NULL COMMENT '结束时间',`fujian` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '附件',`state` int(2) NOT NULL DEFAULT 1 COMMENT '状态:0取消会议1待审核2驳回3待开4进行中5开启投票6结束会议,默认值为1',`seatPic` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '会议排座图片地址',`remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注',`auditor` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '审批人',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '会议信息表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for t_oa_meeting_option
-- ----------------------------
DROP TABLE IF EXISTS `t_oa_meeting_option`;
CREATE TABLE `t_oa_meeting_option` (`id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键,唯一标识',`meetingId` bigint(11) NOT NULL COMMENT '会议ID',`optionValue` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '选项标识(A/B/C/D)',`optionText` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '选项描述',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '会议投票标题选项表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for t_oa_meeting_room
-- ----------------------------
DROP TABLE IF EXISTS `t_oa_meeting_room`;
CREATE TABLE `t_oa_meeting_room` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '会议室名称',`equipment` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '会议设备',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '会议室信息表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for t_oa_permission
-- ----------------------------
DROP TABLE IF EXISTS `t_oa_permission`;
CREATE TABLE `t_oa_permission` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键,标识列',`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '权限名称',`description` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '权限描述',`url` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '菜单路径',`pid` bigint(20) DEFAULT NULL COMMENT '父权限',`ismenu` int(11) DEFAULT NULL COMMENT '是否为菜单 1、菜单 2、按钮',`displayno` bigint(20) DEFAULT NULL COMMENT '展现顺序',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1305 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '权限信息表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of t_oa_permission
-- ----------------------------
INSERT INTO `t_oa_permission` VALUES (10, '会议管理', NULL, NULL, -1, 1, 1);
INSERT INTO `t_oa_permission` VALUES (11, '投票管理', NULL, NULL, -1, 1, 9);
INSERT INTO `t_oa_permission` VALUES (12, '会议室管理', NULL, 'jsp/meeting/meetingRoom.jsp', -1, 1, 14);
INSERT INTO `t_oa_permission` VALUES (13, '系统管理', NULL, NULL, -1, 1, 15);
INSERT INTO `t_oa_permission` VALUES (1001, '会议发布', '发起会议', 'jsp/meeting/addMeeting.jsp', 10, 1, 2);
INSERT INTO `t_oa_permission` VALUES (1002, '会议通知', '别人发起的会议,需要你确认是否参加', 'jsp/meeting/meetingNotify.jsp', 10, 1, 3);
INSERT INTO `t_oa_permission` VALUES (1003, '我的会议', '我发起的,未审核->已审核', 'jsp/meeting/myMeeting.jsp', 10, 1, 4);
INSERT INTO `t_oa_permission` VALUES (1004, '我的审批', '我审批的会议', 'jsp/meeting/myAudit.jsp', 10, 1, 5);
INSERT INTO `t_oa_permission` VALUES (1005, '待开会议', '我参与的,但是还未开始的', 'jsp/meeting/meetingWaiting.jsp', 10, 1, 6);
INSERT INTO `t_oa_permission` VALUES (1006, '历史会议', '已经参与的', 'jsp/meeting/meetingHistory.jsp', 10, 1, 7);
INSERT INTO `t_oa_permission` VALUES (1007, '所有会议', '对所有会议进行汇总', 'jsp/meeting/meetingAll.jsp', 10, 1, 8);
INSERT INTO `t_oa_permission` VALUES (1101, '投票标题', '需要关联到会议标题(议题)', NULL, 11, 1, 10);
INSERT INTO `t_oa_permission` VALUES (1102, '投票选项', '需要关联到投票标题', NULL, 11, 1, 11);
INSERT INTO `t_oa_permission` VALUES (1103, '投票结果', '需要保留数据,可以看到谁投了什么票', NULL, 11, 1, 12);
INSERT INTO `t_oa_permission` VALUES (1104, '投票报表', '哪标题的哪个选项共投了多少票', NULL, 11, 1, 13);
INSERT INTO `t_oa_permission` VALUES (1301, '用户管理', NULL, 'jsp/system/userManage.jsp', 13, 1, 16);
INSERT INTO `t_oa_permission` VALUES (1302, '角色管理', NULL, NULL, 13, 1, 17);
INSERT INTO `t_oa_permission` VALUES (1303, '权限管理', NULL, NULL, 13, 1, 18);
INSERT INTO `t_oa_permission` VALUES (1304, '数据字典', NULL, NULL, 13, 1, 19);-- ----------------------------
-- Table structure for t_oa_role_permission
-- ----------------------------
DROP TABLE IF EXISTS `t_oa_role_permission`;
CREATE TABLE `t_oa_role_permission` (`rid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键,标识列',`pid` bigint(20) NOT NULL COMMENT '权限ID',PRIMARY KEY (`rid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色权限表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for t_oa_user
-- ----------------------------
DROP TABLE IF EXISTS `t_oa_user`;
CREATE TABLE `t_oa_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键,标识列',`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名: 唯一键 登陆时使用 禁止修改',`loginName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '登录名',`pwd` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',`rid` bigint(11) DEFAULT NULL COMMENT '用户角色:1 管理员 2 发起者 3 审批者 4 参与者 5 会议室管理员',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of t_oa_user
-- ----------------------------
INSERT INTO `t_oa_user` VALUES (1, '张三', 'zhangsan', '1234', 4);
INSERT INTO `t_oa_user` VALUES (2, '李四', 'lisi', '1234', 4);
INSERT INTO `t_oa_user` VALUES (3, '王五', 'wangwu', '1234', 4);
INSERT INTO `t_oa_user` VALUES (4, '赵六', 'zhaoliu', '1234', 4);
INSERT INTO `t_oa_user` VALUES (5, '管理员', 'admin', '1234', 1);SET FOREIGN_KEY_CHECKS = 1;
3.项目OA功能需求流程及说明
-
用户登录:后台采用MD5密码加密,前端采用ajax无刷新及json交互
-
左侧菜单:登录成功后跳转到会议OA后台页面并完成左侧菜单初始化及动态选项卡绑定操作
-
系统管理:用户管理模块增删改查实现
-
会议发布:新增OA会议信息
-
我的会议:完成我的会议信息展示、会议排座、送审、反馈详情及召开会议等功能
-
我的审批:完成会议审批操作:审批通过和审批驳回
-
会议通知:展示我需要参与的会议信息,并实现参会与不参会功能
-
待开会议:展示会议状态为待开的所有会议信息
-
历史会议:展示会议状态为已结束的所有会议信息
-
所有会议:展示所有的会议信息
4.项目搭建
1、基于idea创建OA Web Project工程完成OA会议系统项目搭建

2、创建实体类

3、创建UserDao,编写userLogin用户登入方法
/*** 用户登入* @param t_oa_user* @return*/public T_oa_user userLogin(T_oa_user t_oa_user){String sql="select * from t_oa_user where loginName='"+t_oa_user.getLoginName()+"'";System.out.println(sql);List<T_oa_user> t = super.executeQuery(sql, null, new CallBack<T_oa_user>() {@Overridepublic List<T_oa_user> forEach(ResultSet rs) throws SQLException {return CommonUtils.toList(rs, T_oa_user.class);}});if(null!=t&&t.size()>0)return t.get(0);elsereturn null;}
4、创建UserAction并登录实现,使用MD5对用户密码进行加密处理
1、MD5
package com.zking.oa.util;/*** 使用MD5算法对字符串进行加密的工具类。 MD5即Message-Digest* Algorithm5(信息-摘要算法5),是一种用于产生数字签名的单项散列算法, 这个算法是不可逆的,* 也就是说即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串* */
public class MD5 {/** 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define 实现的, 这里把它们实现成为static* final是表示了只读,切能在同一个进程空间内的多个 Instance间共享*/private static final int S11 = 7;private static final int S12 = 12;private static final int S13 = 17;private static final int S14 = 22;private static final int S21 = 5;private static final int S22 = 9;private static final int S23 = 14;private static final int S24 = 20;private static final int S31 = 4;private static final int S32 = 11;private static final int S33 = 16;private static final int S34 = 23;private static final int S41 = 6;private static final int S42 = 10;private static final int S43 = 15;private static final int S44 = 21;private static final byte[] PADDING = { -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0 };/** 下面的三个成员是MD5计算过程中用到的3个核心数据,在原始的C实现中 被定义到MD5_CTX结构中* */private long[] state = new long[4]; // state (ABCD)private long[] count = new long[2];// number of bits, modulo 2^64(lsbfirst)private byte[] buffer = new byte[64]; // input buffer/** digest,是最新一次计算结果的2进制内部表示,表示128bit的MD5值.*/private byte[] digest = new byte[16];public MD5() {md5Init();}/** getMD5ofStr是类MD5最主要的公共方法,入口参数是你想要进行MD5变换的字符串* 返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的.*/public String getMD5ofStr(String inbuf) {md5Init();md5Update(inbuf.getBytes(), inbuf.length());md5Final();String digestHexStr = "";for (int i = 0; i < 16; i++) {digestHexStr += byteHEX(digest[i]);}return digestHexStr;}/* md5Init是一个初始化函数,初始化核心变量,装入标准的幻数 */private void md5Init() {count[0] = 0L;count[1] = 0L;// /* Load magic initialization constants.state[0] = 0x67452301L;state[1] = 0xefcdab相关文章:
OA项目值用户登入首页展示
1.什么是OA 办公自动化(Office Automation,简称OA)是将现代化办公和计算机技术结合起来的一种新型的办公方式。办公自动化没有统一的定义,凡是在传统的办公室中采用各种新技术、新机器、新设备从事办公业务,都属于办公自动化的领域。通过实现办公自动化,或者说实现数字化…...
如何关闭前端Chrome的debugger反调试
1、禁用浏览器断点 2. 把控制台独立一个窗口...
硬件工程师笔试面试——晶振
目录 13、晶振 13.1 基础 晶振原理图 晶振实物图 13.1.1 概念 13.1.2 工作原理 13.1.3 应用领域 13.1.4 产品类型 13.2 相关问题 13.2.1 晶振的工作原理是什么,它如何保证频率的稳定性? 13.2.2 在工业控制领域,晶振是如何确保精确度的? 13.2.3 晶振的Q值是如何…...
如何用安卓玩Java版Minecraft,安卓手机安装我的世界Java版游戏的教程
安卓手机使用FCL启动器安装我的世界Java版游戏的教程。如何用安卓玩Java版Minecraft 视频教程:https://www.bilibili.com/video/BV1CctYebEzR/ 前言 目前,安卓设备上可以用来运行Java版Minecraft的启动器主要有以下几款: PojavLauncher&a…...
linux上用yolov8训练自己的数据集(pycharm远程连接服务器)
pycharm如何远程连接服务器,看之前的文章 首先去GitHub上下载项目地址,然后下载预训练模型放到项目主目录下 然后下载数据集,我这有个推荐的数据集下载网站,可以直接下载yolov8格式的数据集(还支持其他格式的数据集&a…...
Git rebase 的使用(结合图与案例)
目录 Git rebase 的使用Git rebase 概念Git rebase 原理rebase和merge的选择 Git rebase 的使用 在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase Git rebase 概念 **rebase概念:**用来重新应用提交(commits)…...
一文讲懂Mac中的环境变量
你是否曾经因为环境变量配置不当而浪费了宝贵的开发时间?你是否好奇为什么有时候在终端输入命令会提示"command not found",而有时候又能正常运行?如果你是一名Mac用户,并且希望真正掌握环境变量的奥秘,那么这篇文章将为你揭开Mac中环境变量的神秘面纱,帮助你成为一…...
将硬盘的GPT 转化为MBR格式
遇到的问题 在重新安装系统时,磁盘遇到无法空间分配给系统。 解决方式 使用Windows10镜像 U盘安装,选择磁盘时,转换磁盘格式为MBR。然后退出安装程序。 Shift F10# 输入 diskpart# 查看磁盘信息 list disk# 选择需要转换的磁盘࿰…...
C++基于select和epoll的TCP服务器
select版本 服务器 #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <string> #include <pthread.h> #include <sys/select…...
SpringBoot 读取配置文件的4种方式
文章目录 1. Value 注解读取单个属性2. 使用 ConfigurationProperties 注解3. 通过 Environment 对象读取属性4. 使用 PropertySource 注解加载额外的配置文件 在 Spring Boot 中,application.yml 文件用于配置应用程序的属性,Spring Boot 默认会从 src/…...
【车载开发系列】ParaSoft单元测试环境配置(三)
【车载开发系列】ParaSoft单元测试环境配置(三) 【车载开发系列】ParaSoft单元测试环境配置(三) 【车载开发系列】ParaSoft单元测试环境配置(三)一. 去插桩设置Step1:静态解析代码Step2:编辑Parasoft文件Step3:确认去插桩二. 新增测试用例Step1:生成测试用例Step2:执…...
如何让Threejs的canvas背景透明?
在Three.js中,要让Canvas的背景透明,只显示场景中的模型或物体,有两个关键点: 一、对渲染器(Renderer)进行alpha为true配置; 二、通过CSS设置,使canvas设定为透明背景模式。 以下是代…...
Text-to-SQL技术升级 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法
Text-to-SQL技术升级 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法 Text-to-SQL 任务旨在将自然语言查询转换为结构化查询语言(SQL),从而使非专业用户能够便捷地访问和操作数据库。近期,阿里云的 OpenSearch 引擎凭借其一致性对齐技术,在当前极具影响力的 Text-to-SQL 任务…...
[性能]高速收发的TCP/MQTT通信
Nagle算法是一种TCP/IP协议中的优化算法,旨在减少小数据包的数量,从而减少网络拥塞的可能性。该算法规定,在一个TCP连接上最多只能有一个未被确认的小分组。当数据被发送后,如果收到确认(ACK)之前&#x…...
OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(下)
往期知识点记录: OpenHarmony(鸿蒙南向开发)——轻量系统STM32F407芯片移植案例 OpenHarmony(鸿蒙南向开发)——Combo解决方案之W800芯片移植案例 OpenHarmony(鸿蒙南向开发)——小型系统STM32M…...
网络安全学习(五)Burpsuite实战
bp功能确实强大,记录一个bp手机验证码的实例。 当然,首先要打开bp,设置好浏览器的代理。 浏览器访问实例网址www.xxx.com(隐藏真实网址)。 真实网址有个注册功能,需要手机验证码。 好的,我们…...
ego-planner开源代码之simulator.xml介绍分析
ego-planner开源代码之simulator.xml介绍&分析 1. 源由2. simulator配置2.1 配置入参2.2 mockamap_node 地图生成节点2.3 quadrotor_simulator_so3 四旋翼仿真节点2.4 Nodelet机制 四旋翼控制节点2.5 odom_visualization 里程计数据2.6 pcl_render_node 本地感知 3. 总结 1…...
论文阅读笔记 --- 图模互补:知识图谱与大模型融合综述 --- 按参考文献整理
Large Language Models’ Understanding of Math: Source Criticism and Extrapolation Submitted on 12 Nov 2023大模型在处理结构化推理方面(如解决数学问题[99])表现不佳 Tree of Thoughts: Deliberate Problem Solving with Large Language Models S…...
Cpp类和对象(上)(3)
文章目录 前言一、面向过程与面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及类的封装类的访问限定符类的封装 五、类的作用域(类域)六、类的实例化七、类对象模型如何计算类对象的大小类对象的存储方式猜测 八、this指针this指针的引出this指针的特性 九、C语言…...
【微信小程序】连续拍照功能实现
前言: 最近在使用uniapp开发微信小程序,遇到这样一个需求,用户想要连续拍照,拍完之后可以删除照片,保留自己想要的照片,然后上传到服务器上。由于原生的方法只能一个个拍照上传,所以只能自己通过…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
