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…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...
