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…...
NaViL-9B效果惊艳展示:中英文混杂图文理解准确率实测分享
NaViL-9B效果惊艳展示:中英文混杂图文理解准确率实测分享 1. 多模态模型新标杆 NaViL-9B作为原生多模态大语言模型,在图文理解领域展现出令人印象深刻的能力。这款由专业研究机构发布的模型,不仅支持传统文本问答,更具备精准的图…...
React Grab元素抓取:前端开发提效指南
React Grab元素抓取:前端开发提效指南 【免费下载链接】react-grab Grab any element on in your app and give it to Cursor, Claude Code, etc 项目地址: https://gitcode.com/GitHub_Trending/re/react-grab 作为前端开发者,你是否曾为获取页面…...
用代码探索黑翅鸢算法优化的时序预测模型
【24年最新算法独家】BKA-CNN-BiLSTM-Attention多变量时序预测 基于黑翅鸢算法(BKA)优化卷积神经网络(CNN)-双向长短期记忆神经网络(BiLSTM)-注意力机制(Attention)的多变量时序预测(可更换为分类/回归预测,前私),Matlab代码,可直接运行&…...
Veo视频模型中文对话实战:从零到一的提示词编写指南(附完整案例)
Veo视频模型中文对话实战:从零到一的提示词编写指南(附完整案例) 在AI视频创作领域,让虚拟角色说出符合场景的中文对话一直是创作者面临的挑战。不同于简单的画面生成,对话场景需要同时协调语言表达、角色动作和镜头语…...
从零实现PPO-Lagrangian:安全强化学习的代码架构与核心模块剖析
1. 为什么需要安全强化学习? 想象一下你在教一个机器人学走路。普通强化学习就像只告诉它"走得好就奖励糖",结果它可能学会用危险姿势狂奔来赚糖吃。而安全强化学习会额外提醒:"摔倒要扣分",这样机器人就懂得…...
Windows开发者福音:通过WSL2无缝使用星图平台PyTorch 2.8 GPU镜像
Windows开发者福音:通过WSL2无缝使用星图平台PyTorch 2.8 GPU镜像 1. 为什么选择WSL2PyTorch GPU镜像? 对于Windows平台的开发者来说,深度学习开发环境配置一直是个头疼的问题。传统方案要么性能受限,要么配置复杂。而WSL2&…...
5分钟搞定Tablenet环境配置:最新PyTorch版表格识别避坑指南
5分钟搞定Tablenet环境配置:最新PyTorch版表格识别避坑指南 刚接触表格识别时,最头疼的就是环境配置和模型部署。传统方法需要手动标注表格区域和单元格,而Tablenet这种端到端解决方案能同时完成表格检测和结构识别。本文将带你用最新PyTorch…...
面试官总问AQS?看完这篇就够了:手把手图解ReentrantLock加锁解锁全流程(附高清时序图)
深度解析ReentrantLock的AQS实现:从加锁到解锁的全链路剖析 在Java并发编程领域,理解AbstractQueuedSynchronizer(AQS)的工作原理是掌握JUC包的核心钥匙。作为ReentrantLock、Semaphore等同步器的基石,AQS通过精巧的设…...
美团APP竟删照片!客服称“第三方插件”冲突,有博主表示“华为工程师分析日志查到的”
①2026 年 3 月 24 日,【美团删照片】话题冲上微博热搜第一。不少网友晒出铁证,手机系统弹窗直接提示: “检测到美团删除了照片/视频,已成功拦截”。受害用户损失惨重,少则几十张日常照,多则上千张珍藏影像…...
RS232协议在OIF-ITLA-MSA光模块通信中的实战应用(含完整数据帧解析)
RS232协议在OIF-ITLA-MSA光模块通信中的实战应用(含完整数据帧解析) 在光通信系统的硬件开发中,OIF-ITLA-MSA协议定义了可调谐激光器模块与主机设备的标准通信接口。作为物理层传输的核心载体,RS232协议以其稳定可靠的特性&#x…...
