Java+Swing+Mysql实现超市管理系统
一、系统介绍
1.开发环境
操作系统:Win10
开发工具 :IDEA2018
JDK版本:jdk1.8
数据库:Mysql8.0
2.技术选型
Java+Swing+Mysql
3.功能模块

4.系统功能
1.系统登录登出
管理员可以登录、退出系统
2.商品信息管理
管理员可以对商品信息进行查询、添加、修改、删除等操作。
3.出库信息管理
管理员可以对出库信息进行查询、添加、修改、删除等操作。
4.入库信息管理
管理员可以对入库信息进行查询、添加、修改、删除等操作。
5.客户信息管理
管理员可以对客户信息进行查询、添加、修改、删除等操作。
6.供应商信息管理
管理员可以对供应商信息进行查询、添加、修改、删除等操作。
5.工程结构

二、系统展示
1.登录页面

2.主页面

3.商品展示

4.商品新增

5.出库展示

6.出库新增

7.入库展示

8.入库新增

9.客户展示

10.客户新增

11.供应商展示

12.供应商新增

13.关于我们

三、部分代码
AdminDao
package com.sjsq.dao;import java.util.ArrayList;
import java.util.List;import com.sjsq.model.Admin;
import com.sjsq.utils.DBUtil;/*** 管理员登录*/
public class AdminDao {/*** 登录** @param username* @param password* @return* @throws Exception*/public boolean login(String username, String password) throws Exception {List<Object> paramList = new ArrayList<>();paramList.add(username);paramList.add(password);Admin admin = DBUtil.getObject("select * from t_admin where username=? and password=?", paramList, Admin.class);if (admin != null) {return true;}return false;}}
CustomerDao
package com.sjsq.dao;import java.util.ArrayList;
import java.util.List;import com.sjsq.model.Customer;
import com.sjsq.utils.DBUtil;
import com.sjsq.utils.StringUtil;/*** 客户信息操作*/
public class CustomerDao {/*** 查询所有客户** @return* @throws Exception*/public List<Customer> getAll() throws Exception {return DBUtil.getQueryList("select * from t_customer order by id asc", Customer.class);}/*** 条件查询** @param name* @return* @throws Exception*/public List<Customer> search(String name) throws Exception {List<Object> paramList = new ArrayList<>();StringBuffer sb = new StringBuffer("select * from t_customer where 1=1");if (!StringUtil.isEmpty(name)) {sb.append(" and name like ?");paramList.add("%" + name + "%");}sb.append(" order by id asc");return DBUtil.getQueryList(sb.toString(), paramList, Customer.class);}/*** 保存客户信息** @param customer* @return* @throws Exception*/public int save(Customer customer) throws Exception {List<Object> paramList = new ArrayList<>();paramList.add(customer.getName());paramList.add(customer.getPhone());paramList.add(customer.getAddress());return DBUtil.execute("insert into t_customer(name,phone,address) values(?,?,?)", paramList);}/*** 更新客户信息** @param customer* @return* @throws Exception*/public int update(Customer customer) throws Exception {List<Object> paramList = new ArrayList<>();paramList.add(customer.getName());paramList.add(customer.getPhone());paramList.add(customer.getAddress());paramList.add(customer.getId());return DBUtil.execute("update t_customer set name=?,phone=?,address=? where id=?", paramList);}/*** 根据id查询客户信息** @param id* @return* @throws Exception*/public Customer getById(int id) throws Exception {List<Object> paramList = new ArrayList<>();paramList.add(id);return DBUtil.getObject("select * from t_customer where id=?", paramList, Customer.class);}/*** 删除** @param id* @return* @throws Exception*/public int delete(int id) throws Exception {List<Object> paramList = new ArrayList<>();paramList.add(id);return DBUtil.execute("delete from t_customer where id=?", paramList);}}
StringUtil
package com.sjsq.utils;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 字符串转化类*/
public class StringUtil {//数据库字段驼峰命名转换private static Pattern linePattern = Pattern.compile("_(\\w)");private static Pattern humpPattern = Pattern.compile("[A-Z]");// 判断字符串为空public static boolean isEmpty(String str) {if ("".equals(str) || str == null) {return true;} else {return false;}}// 判断字符串不为空public static boolean isNotEmpty(String str) {if (!"".equals(str) && str != null) {return true;} else {return false;}}/*** 下划线转驼峰*/public static String lineToHump(String str) {str = str.toLowerCase();Matcher matcher = linePattern.matcher(str);StringBuffer sb = new StringBuffer();while (matcher.find()) {matcher.appendReplacement(sb, matcher.group(1).toUpperCase());}matcher.appendTail(sb);return sb.toString();}/*** 驼峰转下划线(单写法,效率低于{@link #humpToLine2(String)})*/public static String humpToLine(String str) {return str.replaceAll("[A-Z]", "_$0").toLowerCase();}/*** 驼峰转下划线,效率比上面高*/public static String humpToLine2(String str) {Matcher matcher = humpPattern.matcher(str);StringBuffer sb = new StringBuffer();while (matcher.find()) {matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());}matcher.appendTail(sb);return sb.toString();}}
LoginFrame
package com.sjsq.view;import com.sjsq.dao.AdminDao;
import com.sjsq.utils.StringUtil;import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/*** 登录系统*/
public class LoginFrame extends JFrame {private JPanel contentPane;private JTextField unameText;private JPasswordField pwdText;private AdminDao userDao = new AdminDao();/*** 主函数*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {LoginFrame frame = new LoginFrame();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** 创建窗体*/public LoginFrame() {setTitle("超市商品信息管理系统");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);setLocationRelativeTo(null);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);JLabel lblNewLabel = new JLabel("系统登录");lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 25));lblNewLabel.setBounds(177, 32, 108, 25);contentPane.add(lblNewLabel);JLabel lblNewLabel_1 = new JLabel("账号:");lblNewLabel_1.setBounds(98, 89, 54, 15);contentPane.add(lblNewLabel_1);JLabel lblNewLabel_2 = new JLabel("密码:");lblNewLabel_2.setBounds(98, 152, 54, 15);contentPane.add(lblNewLabel_2);unameText = new JTextField();unameText.setBounds(148, 86, 166, 21);contentPane.add(unameText);unameText.setColumns(10);pwdText = new JPasswordField();pwdText.setBounds(148, 149, 166, 21);contentPane.add(pwdText);JButton btnNewButton = new JButton("登录");btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {String username = unameText.getText();String password = pwdText.getText();if (StringUtil.isEmpty(username)) {JOptionPane.showMessageDialog(contentPane, "请输入账号", "系统提示", JOptionPane.WARNING_MESSAGE);return;}if (StringUtil.isEmpty(password)) {JOptionPane.showMessageDialog(contentPane, "请输入密码", "系统提示", JOptionPane.WARNING_MESSAGE);return;}try {// 登录账号验证boolean flag = userDao.login(username, password);if (flag) {//跳转主界面JOptionPane.showMessageDialog(contentPane, "登录成功!");MainFrame main = new MainFrame();main.setVisible(true);// 释放所有本机屏幕资源dispose();} else {JOptionPane.showMessageDialog(contentPane, "用户名密码错误!", "系统提示", JOptionPane.WARNING_MESSAGE);return;}} catch (Exception e1) {e1.printStackTrace();JOptionPane.showMessageDialog(contentPane, "登录异常:" + e1.getMessage(), "系统提示", JOptionPane.WARNING_MESSAGE);return;}}});btnNewButton.setBounds(146, 202, 76, 23);contentPane.add(btnNewButton);JButton btnNewButton_1 = new JButton("退出");btnNewButton_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dispose();}});btnNewButton_1.setBounds(237, 202, 76, 23);contentPane.add(btnNewButton_1);}}
CustomerAddFrame
package com.sjsq.view;import com.sjsq.dao.CustomerDao;
import com.sjsq.model.Customer;
import com.sjsq.utils.StringUtil;import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/*** 新增客户信息类*/
public class CustomerAddFrame extends JFrame {// 定义内容面板private JPanel contentPane;// 定义姓名文本private JTextField nameText;private JTextField phoneText;private JTextField addressText;private CustomerDao customerDao = new CustomerDao();/*** Create the frame.*/public CustomerAddFrame() {setTitle("新增客户信息");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setBounds(100, 100, 353, 351);setLocationRelativeTo(null);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);JLabel lblNewLabel = new JLabel("客户名称:");lblNewLabel.setBounds(29, 34, 92, 15);contentPane.add(lblNewLabel);// 创建空白文本nameText = new JTextField();// 设置位置大小nameText.setBounds(113, 31, 182, 21);// 添加到面板contentPane.add(nameText);// 设置内容宽度nameText.setColumns(15);JLabel lblNewLabel_1 = new JLabel("联系电话:");lblNewLabel_1.setBounds(29, 84, 92, 15);contentPane.add(lblNewLabel_1);phoneText = new JTextField();phoneText.setBounds(113, 81, 182, 21);contentPane.add(phoneText);phoneText.setColumns(10);JLabel lblNewLabel_5 = new JLabel("客户地址:");lblNewLabel_5.setBounds(29, 148, 91, 15);contentPane.add(lblNewLabel_5);addressText = new JTextField();addressText.setBounds(113, 145, 182, 21);contentPane.add(addressText);addressText.setColumns(10);JButton btnNewButton = new JButton("保存");btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {// 获取输入的信息String name = nameText.getText();String phone = phoneText.getText();String address = addressText.getText();// 判断输入为空,弹出相应提示if (StringUtil.isEmpty(name)) {JOptionPane.showMessageDialog(contentPane, "请输入客户名称", "系统提示", JOptionPane.WARNING_MESSAGE);return;}if (StringUtil.isEmpty(phone)) {JOptionPane.showMessageDialog(contentPane, "请输入联系电话", "系统提示", JOptionPane.WARNING_MESSAGE);return;}if (StringUtil.isEmpty(address)) {JOptionPane.showMessageDialog(contentPane, "请输入客户地址", "系统提示", JOptionPane.WARNING_MESSAGE);return;}// 创建对象Customer customer = new Customer();// 保存信息到对象中customer.setName(name);customer.setPhone(phone);customer.setAddress(address);try {// 新增信息customerDao.save(customer);} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();JOptionPane.showMessageDialog(contentPane, "保存异常:" + e1.getMessage(), "系统提示", JOptionPane.WARNING_MESSAGE);return;}JOptionPane.showMessageDialog(contentPane, "保存成功!");dispose();}});btnNewButton.setBounds(113, 215, 74, 23);contentPane.add(btnNewButton);JButton btnNewButton_1 = new JButton("取消");btnNewButton_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dispose();}});btnNewButton_1.setBounds(220, 215, 74, 23);contentPane.add(btnNewButton_1);}}
四、其他
1.更多系统
Java+Swing系统系列实现
Java+Swing实现斗地主游戏
Java+Swing实现图书管理系统
Java+Swing实现医院管理系统
Java+Swing实现考试管理系统
Java+Swing实现酒店管理系统
Java+Swing实现超市管理系统
Java+Swing实现电影购票系统
Java+Swing实现仓库管理系统-1
Java+Swing实现仓库管理系统-2
Java+Swing实现进销存管理系统
Java+Swing实现自助取款机系统
Java+Swing实现通讯录管理系统
Java+Swing实现停车场管理系统
Java+Swing实现学生信息管理系统-1
Java+Swing实现学生信息管理系统-2
Java+Swing实现学生宿舍管理系统
Java+Swing实现学生选课管理系统
Java+Swing实现学生成绩管理系统
Java+Swing实现学校教材管理系统
Java+Swing实现学校教务管理系统
Java+Swing实现企业人事管理系统
Java+Swing实现电子相册管理系统
Java+Swing实现超市管理系统-TXT存储数据
Java+Swing实现自助取款机系统-TXT存储数据
Java+Swing实现宠物商店管理系统-TXT存储数据
Java+JSP系统系列实现
Java+JSP实现学生图书管理系统
Java+JSP实现学生信息管理系统
Java+JSP实现用户信息管理系统
Java+JSP实现教师信息管理系统
Java+JSP实现学生宿舍管理系统
Java+JSP实现商品信息管理系统
Java+JSP实现宠物信息管理系统
Java+JSP实现学生成绩管理系统
Java+Servlet系统系列实现
Java+Servlet+JSP实现航空订票系统
Java+Servlet+JSP实现新闻发布系统
Java+Servlet+JSP学生宿舍管理系统
Java+Servlet+JSP实现图书管理系统
Java+Servlet+JSP实现停车场管理系统
Java+Servlet+JSP实现房屋租赁管理系统
Java+Servlet+JSP实现学生信息管理系统
Java+Servlet+JSP实现学生选课管理系统
Java+Servlet+JSPl实现学生选课签到系统
Java+Servlet+JSP实现宠物诊所管理系统
Java+Servlet+JSP实现学生成绩管理系统-1
Java+Servlet+JSP实现学生成绩管理系统-2
Java+SSM系统系列实现
Java+SSM+JSP实现网上考试系统
Java+SSM+JSP实现宠物商城系统
Java+SSM+JSP实现超市管理系统
Java+SSM+JSP实现学生成绩管理系统
Java+SSM+JSP实现学生信息管理系统
Java+SSM+JSP实现药品信息管理系统
Java+SSM+JSP实现汽车信息管理系统
Java+SSM+Jspl实现商品信息管理系统
Java+SSM+JSP+Maven实现网上书城系统
Java+SSM+JSP+Maven实现学校教务管理系统
Java+SSH系统系列实现
Java+SSH+JSP实现在线考试系统
Java+SSH+JSP实现医院在线挂号系统
Java+Springboot系统系列实现
Java+Springboot+H-ui+Maven实现营销管理系统
Java+Springboot+Bootstrap+Maven实现网上商城系统
Java+Springboot+Bootstrap+Maven实现景区旅游管理系统
1.更多JavaWeb系统请关注专栏。
https://blog.csdn.net/helongqiang/category_10020130.html
2.更多JavaSwing系统请关注专栏。
https://blog.csdn.net/helongqiang/category_6229101.html
2.源码下载
sql在sql文件夹下面
系统账号信息如下,此处是管理员权限
账号:admin 密码:admin
3.运行项目
关注B站:水坚石青
后期有更多干货视频推出!!!
Eclipse如何导入JavaSwing项目超详细教程
4.备注
如有侵权请联系我删除。
5.支持博主
如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!
相关文章:

Java+Swing+Mysql实现超市管理系统
一、系统介绍1.开发环境操作系统:Win10开发工具 :IDEA2018JDK版本:jdk1.8数据库:Mysql8.02.技术选型JavaSwingMysql3.功能模块4.系统功能1.系统登录登出管理员可以登录、退出系统2.商品信息管理管理员可以对商品信息进行查询、添加…...

华为OD机试题,用 Java 解【机器人走迷宫】问题
最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

软件测试基本概念
软件测试基本概念 1. 什么是软件测试 软件测试就是验证软件产品特性(功能, 界面, 兼容性, 性能…)是否符合用户的需求,同时软件测试不仅要测试系统是否做了其应该做的, 还需要测试系统是否未作其不应该做的。 2. 调试与测试 软件测试与调试的区别: …...

数学建模介绍
🚀write in front🚀 📜所属专栏: 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对我最大的激励…...

【LVGL】学习笔记--(2)GUI Guider的使用
基于上一篇【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL,已经成功地移植了LVGL到我们的嵌入式板子上,并配合磁控旋钮编码器(或者诸如触摸屏、按键、键盘等其他输入设备均可),实现了简单界面的显示工作。这一章将学习…...

OpenCV-PyQT项目实战(6)项目案例02:滚动条应用
欢迎关注『OpenCV-PyQT项目实战 Youcans』系列,持续更新中 OpenCV-PyQT项目实战(1)安装与环境配置 OpenCV-PyQT项目实战(2)QtDesigner 和 PyUIC 快速入门 OpenCV-PyQT项目实战(3)信号与槽机制 …...

3 决策树及Python实现
1 主要思想 1.1 数据 1.2 训练和使用模型 训练:建立模型(树) 测试:使用模型(树) Weka演示ID3(终端用户模式) 双击weka.jar选择Explorer载入weather.arff选择trees–>ID3构建树…...

小程序和Vue+uniapp+unicloud培训课件
文章目录**一、什么是小程序****1.1** **小程序简介****1.2** **小程序的特点****1.3** **小程序的开发流程**个人小程序和企业小程序的区别1.4 小程序代码构成1.4.1 JSON 配置1.4.2 WXML 模板**数据绑定**逻辑语法条件逻辑列表渲染模板引用共同属性1.4.3 WXSS 样式1.4.4 JS 逻…...

C语言--指针进阶2
目录前言函数指针函数指针数组指向函数指针数组的指针回调函数前言 本篇文章我们将继续学习指针进阶的有关内容 函数指针 我们依然用类比的方法1来理解函数指针这一全新的概念,如图1 我们用一段代码来验证一下: int Add(int x, int y) {return xy;…...
【步进电机和 Arduino】
【步进电机和 Arduino】 前言1. 什么是步进电机及其工作原理?1.1 步进电机结构1.2 绕线方式1.3 通电方式2. 如何使用Arduino和A17步进驱动器控制NEMA4988步进电机2.1 A4988 和 Arduino 连接2.2 测量AB相2.3 A4988 限流3. 步进电机和 Arduino3.1 示例代码 13.2 示例代码 24. 使…...

【面试一:|和||、和区别】
相同点: ||和&&都是逻辑运算符,而|和&是位运算符。位运算符的优先级要比逻辑运算符的优先级高。 &和&&的区别 &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运…...
【一天一门编程语言】使用汇编语言实现斐波那契数列
文章目录使用汇编语言实现斐波那契数列一、什么是斐波那契数列二、如何用汇编语言实现斐波那契数列一、汇编语言概念1.1 什么是汇编语言1.2 汇编语言的特点二、汇编语言指令2.1 简单指令2.2 复杂指令汇编语言程序结构代码实例指令集常用指令指令代码实例使用汇编语言实现斐波那…...

RabbitMQ实现死信队列
目录死信队列是什么怎样实现一个死信队列说明实现过程导入依赖添加配置编写mq配置类添加业务队列的消费者添加死信队列的消费者添加消息发送者添加消息测试类测试死信队列的应用场景总结死信队列是什么 “死信”是RabbitMQ中的一种消息机制,当你在消费消息时&#…...

【Linux】安装Tomcat教程
目录 1.上传安装包 2.解压安装包 3.启动Tomcat 4.查看启动日志 5.查看进程 6.开放端口 7.停止Tomcat 1.上传安装包 使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到Linux(与前面上传JDK安装包步骤 一致)。 2.解压安装包 将上传上来的安装包解压到指定目录…...

学习笔记之Vuex(五)
Vuex(五)Vuex一、什么是Vuex二、Vuex工作原理三、搭建Vuex环境四、求和案例分析4.1 求和案例——vue实现4.2 求和案例——vuex实现(五)Vuex 一、什么是Vuex 1.概念 在Vue中实现集中式状态(数据)管理的一…...

SSM知识快速复习
SSM知识快速复习SpringIOCDIIOC容器在Spring中的实现常用注解Autowired注解的原理AOP相关术语作用动态代理实现原理事务Transactional事务属性:只读事务属性:超时事务属性:回滚策略事务属性:事务隔离级别事务属性:事务…...

【Linux】安装MySQL
目录 1.检测当前系统是否安装过MySQL相关数据库 2. 卸载现有的MySQL数据库 3.上传解压 4.顺序安装rpm包 5.启动MySQL 6.查看临时密码 7.登录MySQL 8.开放端口 1.检测当前系统是否安装过MySQL相关数据库 需要通过rpm相关指令,来查询当前系统中是否存在已安…...

【深度学习】手把手教你开发自己的深度学习模板
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言1数据相关1.1 数据初探1.2.数据处理1.3 数据变形2 定义网络,优化函数3. 训练前言 入坑2年后,重新梳理之前的知识,发现其实需…...

一个诡异的 Pulsar InterruptedException 异常
背景 今天收到业务团队反馈线上有个应用往 Pulsar 中发送消息失败了,经过日志查看得知是发送消息时候抛出了 java.lang.InterruptedException 异常。 和业务沟通后得知是在一个 gRPC 接口中触发的消息发送,大约持续了半个小时的异常后便恢复正常了&…...

Java岗面试题--Java并发(volatile 专题)
目录1. 面试题一:谈谈 volatile 的使用及其原理补充:内存屏障volatile 的原理2. 面试题二:volatile 为什么不能保证原子性3. 面试题三:volatile 的内存语义4. 面试题四:volatile 的实现机制5. 面试题五:vol…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...

uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...