javaSwing宿舍管理系统(三个角色)

news2024/11/15 13:40:26

一、 简介

宿舍管理系统是一个针对学校宿舍管理的软件系统,旨在方便学生、宿管和管理员进行宿舍信息管理、学生信息管理以及宿舍评比等操作。该系统使用 Java Swing 进行界面设计,分为三个角色:管理员、宿管和学生。

二、 功能模块

2.1 管理员功能

学生信息管理: 管理员可以进行学生信息的添加、刷新、删除和查询操作。
宿舍信息管理: 管理员可以进行宿舍信息的刷新、删除和查询操作,以及添加新的宿舍信息。
宿舍评比: 管理员可以查看宿舍评比结果。
密码重置: 管理员可以重置管理员、宿舍和学生的密码。

2.2 宿管功能

学生信息查看: 宿管可以查看学生信息。
宿舍信息查看: 宿管可以查看宿舍信息。
宿舍评比: 宿管可以对宿舍进行评比,并提交评比结果。
密码修改: 宿管只可以修改自己的密码。

2.3 学生功能

个人信息查看: 学生可以查看自己的个人信息。
宿舍信息查看: 学生可以查看自己所在宿舍的信息。
宿舍评比: 学生可以参与宿舍评比。
密码修改: 学生只可以修改自己的密码。

三、 技术实现

该系统使用 Java Swing 实现界面设计,使用 Java 编程语言实现后端逻辑。数据库可以采用 MySQL 或其他关系型数据库来存储学生、宿舍和评比等信息。使用 JDBC 连接数据库进行数据的增删改查操作。同时,可以使用密码加密算法对密码进行加密存储,增强安全性。

四、数据库分析

1.1 dorm 表:

dorm_id:宿舍号,char(10),主键。
bed_num:床位数,int(2)。
people_num:人数,int(2)。

1.2 grade 表:

grade_id:评分编号,int(10),自增主键。
dorm_id:宿舍号,char(10),外键,关联到 dorm 表的 dorm_id。
discipline:纪律分,int(3)。
checks:考勤分,int(3)。
health:卫生分,int(3)。
grade:总分,int(3)。
dates:评分时间,date。
managers_id:评分人员ID,int(11),外键,关联到 managers 表的 manager_id。

1.3 lived 表:

student_id:学号,int(11),外键,关联到 students 表的 student_id。
dorm_id:宿舍号,char(10),外键,关联到 dorm 表的 dorm_id。
bed_id:床号,int(1)。
livingdate:入住时间,date。

1.4 managers 表:

manager_name:姓名,char(20)。
manager_id:员工号,int(11),主键。
contact:联系方式,char(11),唯一。

1.5 register 表:

identity:身份(0为管理员,1为宿管,2为学生),int(1)。
account:账号,int(15),主键。
password:密码,char(12)。

1.6 students 表:

name:姓名,char(10)。
sex:性别,char(2)。
birthday:出生日期,bigint(15)。
addresss:地址,char(20)。
contact:联系方式,char(11),唯一。
student_id:学号,int(9),主键。
college:学院,char(20)。
major:专业,char(20)。
classes:班级,char(10)。
dorm_id:宿舍号,char(10),外键,关联到 dorm 表的 dorm_id。
bed_id:床号,int(1)。
status:状态,smallint(1)。

五、程序截图

0.登录与接角色

请添加图片描述
请添加图片描述

1.管理员

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

2.宿管

请添加图片描述
请添加图片描述

3.学生

请添加图片描述
请添加图片描述

六、部分代码

Login.java

package System;

import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.KeyStroke;

import Control.RegisterControl;
import Model.RegisterModel;
import Operation.StudentsOperation;
import TableStudent.PersonInformation;

@SuppressWarnings("serial")
public class Login extends JFrame implements ActionListener {

	Managers managers;
	public static JTextField text1;
	JPasswordField text2 = new JPasswordField();

	private JButton enter = new JButton("登   录");
	Font butfont = new Font("宋体", Font.BOLD, 20);

	private JFrame frame = new JFrame();
	private JPanel jpl = new JPanel();
	JComboBox comboBox;

	@SuppressWarnings("unchecked")
	public Login() {

		JLabel label0 = new JLabel("宿舍管理系统");
		label0.setBounds(80, 25, 150, 50);
		label0.setFont(new Font("华文彩云", Font.BOLD, 23));
		frame.add(label0);

		JLabel lab1 = new JLabel("身份:");
		jpl.add(lab1);
		lab1.setBounds(20, 75, 100, 50);
		lab1.setFont(new Font("隶书", Font.BOLD, 18));

		comboBox = new JComboBox();
		comboBox.setBounds(70, 87, 150, 30);
		comboBox.addItem("管理员");
		comboBox.addItem("宿管");
		comboBox.addItem("学生");
		comboBox.setFont(new Font("华文行楷", Font.PLAIN, 20));
		jpl.add(comboBox);
		// 标签
		JLabel label2 = new JLabel("账号:");
		label2.setBounds(20, 125, 100, 50);
		label2.setFont(new Font("隶书", Font.BOLD, 18));
		frame.add(label2);

		JLabel label3 = new JLabel("密码:");
		label3.setBounds(20, 175, 100, 50);
		label3.setFont(new Font("隶书", Font.BOLD, 18));
		frame.add(label3);

		JLabel label4 = new JLabel();
		label4.setText("<HTML><U>忘记密码?</U></HTMl>");
		label4.setBounds(225, 175, 100, 50);
		label4.setForeground(Color.BLUE);
		label4.setFont(new Font("黑体", Font.BOLD, 13));
		label4.setToolTipText("你是不是傻!!!密码都能忘???");
		label4.addMouseListener(new MouseListener() {

			public void mouseReleased(MouseEvent e) {
			}
			public void mousePressed(MouseEvent e) {
			}
			public void mouseExited(MouseEvent e) {
			}
			public void mouseEntered(MouseEvent e) {
			}
			public void mouseClicked(MouseEvent e) {
				JOptionPane.showMessageDialog(null, "请到管理处重置密码", "友情提示", JOptionPane.INFORMATION_MESSAGE);

			}
		});
		frame.add(label4);

		// 账号
		text1 = new JTextField();
		text1.setBounds(70, 137, 150, 30);
		text1.setFont(new Font("黑体", Font.BOLD, 18));
		frame.add(text1);

		// 密码
		text2.setBounds(70, 185, 150, 30);
		text2.setFont(new Font("", Font.BOLD, 24));
		text2.setEchoChar('*');
		frame.add(text2);
		// 背景
		JLabel label = new JLabel(new ImageIcon("image\\background.jpg"));
		label.setSize(300, 565);
		Image image = this.getToolkit().getImage("image\\icon.png");

		jpl.setLayout(null);
		jpl.add(enter);
		jpl.add(label);

		// 窗体
		frame.add(jpl);
		frame.setIconImage(image);
		frame.setTitle("登录");
		frame.setSize(300, 565);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		// 登录
		enter.setBounds(85, 300, 120, 40); // 设置按钮大小
		enter.setBackground(Color.WHITE);
		enter.setVisible(true);
		enter.setLayout(null);
		enter.setFont(butfont);
		enter.addActionListener(new ButtonListener());
		enter.registerKeyboardAction(new ButtonListener(), KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0),
				JComponent.WHEN_IN_FOCUSED_WINDOW);

	}

	public static void main(String[] args) {
		new Login();

	}

	// 登录监听
	class ButtonListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			RegisterControl r = new RegisterControl();
			RegisterModel rr = null;
			boolean bb = false;
			if (text1.getText().length() == 0 || text2.getText().length() == 0) {
				JOptionPane.showMessageDialog(null, "账号或密码为空", "系统提示", JOptionPane.ERROR_MESSAGE);
				return;
			} else {
				try {
					rr = r.get(Integer.parseInt(text1.getText()));
				} catch (NumberFormatException e1) {
				} catch (Exception e1) {

					return;
				}
				if (rr != null) {
					bb = rr.getPassword().equals(text2.getText());
					//System.out.println(rr.getPassword() + "数据库中的密码");
				} else {
					JOptionPane.showMessageDialog(null, "账号密码有误", "系统提示", JOptionPane.ERROR_MESSAGE);
					text1.setText(null);
					text2.setText(null);
					return;
				}
				if (bb) {
//					System.out.println(comboBox.getSelectedItem().toString().equals(rr.getIdentity()));
					if (comboBox.getSelectedIndex()==rr.getIdentity()){
						frame.dispose();

						if (comboBox.getSelectedIndex()==2) {
							new Students();
							PersonInformation.jpl.setVisible(true);

						} else if (comboBox.getSelectedIndex()==1) {
							new Managers();
						} else {
							new Administrator();
						}
						return;
					} else {
						JOptionPane.showOptionDialog(managers, "身份有误!!!", "提示", JOptionPane.DEFAULT_OPTION,
								JOptionPane.PLAIN_MESSAGE, null, null, null);
						text2.setText(null);
						return;
					}
				}
			}
			JOptionPane.showMessageDialog(null, "账号密码有误", "系统提示", JOptionPane.ERROR_MESSAGE);
			text1.setText(null);
			text2.setText(null);
		}
	}

	public void actionPerformed(ActionEvent e) {

	}

}

Managers.java

package System;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import ButtonFrame.GradeRefer;
import TableManager.DormTable;
import TableManager.GradeTable;
import TableManager.PartStudentTable;

@SuppressWarnings("serial")
public class Managers extends JFrame {

	private JPanel jpl = null;
	private MoveLabel label = null;
	JButton logout, exit;
	JLabel lab1, lab2, lab3, lab4, lab5;

	public Managers() {
		super("宿舍管理系统");
		jpl = new JPanel();
		label = new MoveLabel(
				"欢迎登录宿舍管理系统                                                                                                    欢迎登录宿舍管理系统                                                                                                    欢迎登录宿舍管理系统");
		label.setOpaque(false); // 透明
		label.setFont(new Font("宋体", Font.BOLD, 20));
		label.setSize(1366, 20);
		label.setBackground(Color.cyan);

		lab1 = new JLabel("<HTML><U>学生信息</U></HTML>");
		lab1.setFont(new Font("华文楷体", Font.BOLD, 23));
		lab1.setBounds(35, 50, 100, 50);
		lab1.setForeground(Color.BLUE);
		lab1.addMouseListener(new MouseListener() {
			public void mouseClicked(MouseEvent e) {
				//System.out.println("按下");
				PartStudentTable.jp.setVisible(true);
				DormTable.jp.setVisible(false);
				GradeTable.jp.setVisible(false);
				lab1.setForeground(Color.RED);
				lab2.setForeground(Color.BLUE);
				lab3.setForeground(Color.BLUE);
				lab4.setForeground(Color.BLUE);
				lab5.setForeground(Color.BLUE);
			}

			public void mouseEntered(MouseEvent e) {
			}

			public void mouseExited(MouseEvent e) {
			}

			public void mousePressed(MouseEvent e) {
			}

			public void mouseReleased(MouseEvent e) {
			}
		});

		lab2 = new JLabel("<HTML><U>宿舍信息</U></HTML>");
		lab2.setFont(new Font("华文楷体", Font.BOLD, 23));
		lab2.setBounds(35, 150, 100, 50);
		lab2.setForeground(Color.BLUE);
		lab2.addMouseListener(new MouseListener() {
			public void mouseClicked(MouseEvent e) {
				//System.out.println("按下");
				PartStudentTable.jp.setVisible(false);
				GradeTable.jp.setVisible(false);
				DormTable.jp.setVisible(true);
				lab1.setForeground(Color.BLUE);
				lab2.setForeground(Color.RED);
				lab3.setForeground(Color.BLUE);
				lab4.setForeground(Color.BLUE);
				lab5.setForeground(Color.BLUE);
			}

			public void mouseEntered(MouseEvent e) {
			}

			public void mouseExited(MouseEvent e) {
			}

			public void mousePressed(MouseEvent e) {
			}

			public void mouseReleased(MouseEvent e) {
			}
		});

		lab3 = new JLabel("<HTML><U>宿舍评比</U></HTML>");
		lab3.setFont(new Font("华文楷体", Font.BOLD, 23));
		lab3.setBounds(35, 250, 100, 50);
		lab3.setForeground(Color.BLUE);
		lab3.addMouseListener(new MouseListener() {
			public void mouseClicked(MouseEvent e) {
				//System.out.println("按下");
				PartStudentTable.jp.setVisible(false);
				DormTable.jp.setVisible(false);
				GradeTable.jp.setVisible(true);
				lab1.setForeground(Color.BLUE);
				lab2.setForeground(Color.BLUE);
				lab3.setForeground(Color.RED);
				lab4.setForeground(Color.BLUE);
				lab5.setForeground(Color.BLUE);
			}

			public void mouseEntered(MouseEvent e) {
			}

			public void mouseExited(MouseEvent e) {
			}

			public void mousePressed(MouseEvent e) {
			}

			public void mouseReleased(MouseEvent e) {
			}
		});
		lab4 = new JLabel("<HTML><U>评比提交</U></HTML>");
		lab4.setFont(new Font("华文楷体", Font.BOLD, 23));
		lab4.setBounds(35, 350, 100, 50);
		lab4.setForeground(Color.BLUE);
		lab4.addMouseListener(new MouseListener() {
			public void mouseClicked(MouseEvent e) {
				//System.out.println("按下");
				PartStudentTable.jp.setVisible(false);
				DormTable.jp.setVisible(false);
				GradeTable.jp.setVisible(false);
				new GradeRefer();
				lab1.setForeground(Color.BLUE);
				lab2.setForeground(Color.BLUE);
				lab3.setForeground(Color.BLUE);
				lab4.setForeground(Color.RED);
				lab5.setForeground(Color.BLUE);
			}

			public void mouseEntered(MouseEvent e) {
			}

			public void mouseExited(MouseEvent e) {
			}

			public void mousePressed(MouseEvent e) {
			}

			public void mouseReleased(MouseEvent e) {
			}
		});
		lab5 = new JLabel("<HTML><U>修改密码</U></HTML>");
		lab5.setFont(new Font("华文楷体", Font.BOLD, 23));
		lab5.setBounds(35, 450, 100, 50);
		lab5.setForeground(Color.BLUE);
		lab5.addMouseListener(new MouseListener() {
			public void mouseClicked(MouseEvent e) {
				//System.out.println("按下");
				PartStudentTable.jp.setVisible(false);
				DormTable.jp.setVisible(false);
				GradeTable.jp.setVisible(false);
				new ChangePassword();
				lab1.setForeground(Color.BLUE);
				lab2.setForeground(Color.BLUE);
				lab3.setForeground(Color.BLUE);
				lab4.setForeground(Color.BLUE);
				lab5.setForeground(Color.RED);
			}

			public void mouseEntered(MouseEvent e) {
			}

			public void mouseExited(MouseEvent e) {
			}

			public void mousePressed(MouseEvent e) {
			}

			public void mouseReleased(MouseEvent e) {
			}
		});

		JLabel lab = new JLabel(new ImageIcon("image\\back.jpg"));
		jpl.add(lab);

		ImageIcon ilogout = new ImageIcon("image\\logout.png");
		logout = new JButton(ilogout);
		logout.setBounds(240, 550, 100, 45);
		logout.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getSource() == logout) {
					String[] options = new String[] { "是", "否" };
					int n = JOptionPane.showOptionDialog(null, "确定注销系统???", "提示", JOptionPane.DEFAULT_OPTION,
							JOptionPane.WARNING_MESSAGE, null, options, options[0]);
					// 点击是的话,注销
					if (n == JOptionPane.YES_OPTION) {
						setVisible(false);
						new Login();
					}
				}
			}
		});
		this.add(logout);

		ImageIcon ic = new ImageIcon("image\\exit.png");
		exit = new JButton(ic);
		exit.setBounds(820, 550, 100, 45);
		exit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (e.getSource() == exit) {
					String[] options = new String[] { "是", "否" };
					int n = JOptionPane.showOptionDialog(null, "确定退出系统???", "提示", JOptionPane.DEFAULT_OPTION,
							JOptionPane.WARNING_MESSAGE, null, options, options[0]);
					// 点击是的话,直接退出
					if (n == JOptionPane.YES_OPTION) {
						setVisible(false);
						System.exit(0);
					}
				}

			}
		});
		this.add(exit);

		this.add(new PartStudentTable().getpanel());
		this.add(new DormTable().getpanel());
		this.add(new GradeTable().getpanel());
		this.add(lab1);
		this.add(lab2);
		this.add(lab3);
		this.add(lab4);
		this.add(lab5);
		this.add(label);
		this.add(jpl);
		Image image = this.getToolkit().getImage("image\\icon.png");
		this.setIconImage(image);
		this.setSize(960, 640); // 窗体的大小
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口
		this.setLocationRelativeTo(null);
		this.setVisible(true);

	}

	/**
	 * 带有滚动效果的Label标签
	 */
	private class MoveLabel extends JLabel implements Runnable {

		private String text = null;
		private Thread thread = null;
		private int x = 0;
		private int w = 0, h = 0;

		public MoveLabel(String text) {
			super(text);
			this.text = text;
			thread = new Thread(this);
			thread.start();
		}

		public String getText() {
			return text;
		}

		public void setText(String text) {
			super.setText(text);
			this.text = text;
		}

		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.setColor(this.getBackground());
			g.fillRect(0, 0, w = this.getWidth(), h = this.getHeight());
			g.setColor(this.getForeground());
			g.setFont(this.getFont());
			g.drawString(text, x, h - 2);
		}

		public void run() {
			while (true) {
				x -= 2;
				if (x < -w) {
					x = w;
				}
				this.repaint();
				try {
					Thread.sleep(50);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

七、联系与交流

q:969060742 完整代码、sql、文档、程序资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1542701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32微控制器的中断优先级设置中,抢占优先级和子优先级如何影响中断响应?

在STM32微控制器中&#xff0c;中断优先级设置是一个关键的概念&#xff0c;它决定了在发生多个中断时&#xff0c;哪些中断能够优先被处理。STM32的中断优先级系统包括抢占优先级&#xff08;Preemption Priority&#xff09;和子优先级&#xff08;Subpriority&#xff09;&a…

Java22已发布,支持SpringBoot3.3.0正式版

Java22已发布&#xff0c;支持SpringBoot3.3.0正式版 文章目录 Java22已发布&#xff0c;支持SpringBoot3.3.0正式版1. JDK22现已推出&#xff01;2. Java22的新功能1. 语言改进1. 语言预览 2. 库文件3. 性能4. 工具 3. 资源 Java 22现已发布 下一个Java版本提高了Java应用程序…

使用pandas进行数据清洗

采集到原始的数据中会存在一些噪点数据&#xff0c;噪点数据是对分析无意义或者对分析起到偏执作用的数据。如何清洗&#xff1a; 清洗空值/缺失值清洗重复值清洗异常值 import pandas as pd from pandas import DataFrame,Series import numpy as np pandas处理空值操作 i…

EasyPOI操作Excel从零入门

教程介绍 我们不造轮子&#xff0c;只是轮子的搬运工。&#xff08;其实最好是造轮子&#xff0c;造比别人好的轮子&#xff09;开发中经常会遇到excel的处理&#xff0c;导入导出解析等等&#xff0c;java中比较流行的用poi&#xff0c;但是每次都要写大段工具类来搞定这事儿…

Python6:Socket编程初步学习笔记

Socket协议概要 创建socket的时候&#xff0c;需要一些选项来说明本次使用协议具体是什么&#xff0c;常用的两个&#xff1a; 由此产生的不同组合&#xff1a; 但目前TCP(IPV4)是主流&#xff0c;SOCK_STREAMAF_INET 创建和使用Socket socket模块中有socket类&#xff1a…

macOS访问samba文件夹的正确姿势,在哪里更改“macOS的连接身份“?还真不好找!

环境&#xff1a;路由器上需要身份认证的Mini NAS macOS Sonoma 14 这是一个非常简单的问题&#xff0c;但解决方法却藏得比较深&#xff0c;不够直观&#xff0c;GPT也没有给出明确的解决提示&#xff0c;特意记录一下。 macOS很多地方都很自动&#xff0c;有时候让人找不到设…

深度学习pytorch——多分类问题(持续更新)

回归问题 vs 分类问题&#xff08;regression vs classification&#xff09; 回归问题&#xff08;regression&#xff09; 1、回归问题的目标是使预测值等于真实值&#xff0c;即predy。 2、求解回归问题的方法是使预测值和真实值的误差最小&#xff0c;即minimize dist(p…

opencv各个模块介绍(2)

Features2D 模块&#xff1a;特征检测和描述子计算模块&#xff0c;包括SIFT、SURF等算法。 Features2D 模块提供了许多用于特征检测和描述子匹配的函数和类&#xff0c;这些函数和类可用于图像特征的提取、匹配和跟踪。 FeatureDetector&#xff1a;特征检测器的基类&#xf…

java数据结构与算法刷题-----LeetCode452. 用最少数量的箭引爆气球

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路&#xff1a;贪心算法&#xff0c;时间复杂度O( n ∗ l …

【计算机】——51单片机——持续更新

单片机是一种内部包含CPU、存储器和输入/输出接口等电路的集成电路&#xff08;IC芯片&#xff09; 单片机是单片微型计算机&#xff08;Single Chip Microcomputer&#xff09;的简称&#xff0c;用于控制领域&#xff0c;所以又称为微型控制器&#xff08;Microcontroller U…

AI+软件工程:10倍提效!用ChatGPT编写系统功能文档

系统功能文档是一种描述软件系统功能和操作方式的文档。它让开发团队、测试人员、项目管理者、客户和最终用户对系统行为有清晰、全面的了解。 通过ChatGPT&#xff0c;我们能让编写系统功能文档的效率提升10倍以上。 ​《Leetcode算法刷题宝典》一位阿里P8大佬总结的刷题笔记…

一文看懂,高端及大流量停车场如何选择合适的道闸管理系统?

在当今快速发展的城市环境中&#xff0c;停车场的管理和运营已成为城市基础设施建设的重要组成部分。不同类型的停车场&#xff0c;如大流量停车场和高端停车场&#xff0c;面临着各自独特的挑战和需求。为了确保停车场的高效运营和良好的用户体验&#xff0c;选择合适的道闸管…

在ubuntu22.04系统上用pycharm编写第一个ros2程序

1.打开终端&#xff08;快捷键altctrlt&#xff09;&#xff0c;创建工作空间&#xff0c;工作空间就是文件夹 2.创建一个功能包 打开pycharm的终端&#xff08;altf12&#xff09; 3.创建节点文件 在village_li文件夹右键新建li4.py 4.在li4.py编写代码 5.在setup.py里面添加…

Ubuntu Desktop 安装谷歌拼音输入法

Ubuntu Desktop 安装谷歌拼音输入法 1. Installation1.1. 汉语语言包​1.2. 谷歌拼音输入法1.3. 安装语言包1.4. 键盘输入方式系统1.5. 重启电脑1.6. 输入法配置 2. configuration2.1. Text Entry Settings… 3. ExecutionReferences 1. Installation 1.1. 汉语语言包 strong…

淘宝海外获取tglobal跨境商品原数据 API 返回值说明

一、应用场景 宝海外获取TGlobal跨境商品原数据API的应用场景相当广泛&#xff0c;涵盖了多个领域和行业。以下是一些主要的应用场景&#xff1a; 跨境电商平台&#xff1a;跨境电商平台可以通过此API获取全球范围内的商品信息&#xff0c;从而丰富平台上的商品种类&#xff…

边缘计算基础介绍及AKamai-linode产品分析

1、背景 随着互联网的发展&#xff0c;我们进入了大数据时代&#xff0c;这个时代也是移动互联网的时代&#xff0c;而且这个时代&#xff0c;大量的线下服务走到线上&#xff0c;随之而来的&#xff0c;比如外卖、叫车……于是&#xff0c;有各种各样的 App 和设备在收集你的…

如何打破SAST代码审计工具的局限性?

关键词&#xff1a;白盒测试&#xff1b;代码分析工具&#xff1b;代码扫描工具&#xff1b;静态代码检测工具&#xff1b; 在代码的世界里&#xff0c;安全问题如同潜伏的暗礁&#xff0c;随时可能让航行中的软件项目触礁沉没。SAST代码审计工具如同雷达一样&#xff0c;以其独…

Python - 深度学习系列30 - 使用LLaMA-Factory微调模型

说明 最实用的一种利用大语言模型的方式是进行微调。预训练模型与我们的使用场景一定会存在一些差异&#xff0c;而我们又不可能重头训练。 微调的原理并不复杂&#xff0c;载入模型&#xff0c;灌新的数据&#xff0c;然后运行再训练&#xff0c;保留checkpoints。但是不同项…

Cobalt Strike -- 各种beacon

今天来讲一下cs里面的beacon 其实cs真的功能很强大&#xff0c;自带代理创建&#xff0c;自带beacon通信&#xff01;&#xff01;&#xff01; 一张图&#xff0c;就能说明beacon的工作原理 1.Beacon 每当有一台机器上线之后&#xff0c;我们都会选择sleep时间&#xff0c;…

PCI产业概述和产业发展动态分享

atsec白海蔚 2024年3月底 关键词&#xff1a;支付卡产业、PCI DSS、数据安全、支付交易 本文为atsec和作者技术共享类文章&#xff0c;旨在共同探讨信息安全的相关话题。转载请注明&#xff1a;atsec和作者名称。 *如有兴趣了解早期产业信息请参见作者于2021年4月发布信息&a…