【Java项目介绍和界面搭建】拼图小游戏——键盘、鼠标事件

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

拼图小游戏

练习

1、创建主界面1

代码

2、创建主界面2

菜单制作

3、在游戏界面中添加菜单

代码

4、添加图片

游戏主界面添加组件

代码

5、打乱图片顺序

练习

6、事件

1、动作监听

2、鼠标监听机制

3、键盘监听


拼图小游戏

练习

1、创建主界面1

  • 到idea中创建一个宽603像素,高680像素的游戏主界面
  • 到idea中创建一个宽488像素,高430像素的登录界面
  • 到idea中创建一个宽488像素,高500像素的注册界面

代码

测试类:test ,在这个测试类中,我们直接把三个Java用户图形化界面生成了,但是这样三个功能界面全部都写在同一个main函数里面,对于我们以后的代码修改很不方便。

所以我们这里进行修改下,分别写成单独的类中。

package ui;import javax.swing.*;public class test {public static void main(String[] args) {//JFrame是JavaBean类描述界面的//属性 (宽 高)  行为//1.创建一个游戏的主界面JFrame gameJFrame = new JFrame();gameJFrame.setSize(603,680);//单位是像素gameJFrame.setVisible(true);//2.创建一个登陆界面JFrame loginJFrame = new JFrame();loginJFrame.setSize(488,430);loginJFrame.setVisible(true);//3.创建一个注册界面JFrame registerJFrame = new JFrame();registerJFrame.setSize(488,500);registerJFrame.setVisible(true);}
}

注册界面:RegisterJFrame

package ui;import javax.swing.*;public class RegisterJFrame extends JFrame {//跟相关注册界面的代码,都写里面public RegisterJFrame(){this.setSize(488,500);this.setVisible(true);}}

登录界面:loginJFrame

package ui;import javax.swing.*;public class loginJFrame extends JFrame {//loginJFrame 表示登录界面//以后所以跟登录相关的代码,都写里面public loginJFrame(){this.setSize(488,430);this.setVisible(true);}}

游戏界面:GameJFrame

package ui;import javax.swing.*;public class GameJFrame extends JFrame {//JFrame 界面,窗体//子类呢?也表示界面,窗体//规定:GameJFrame这个界面表示的就是游戏的主界面//以后跟游戏相关的所有逻辑都写在这个类中public GameJFrame(){this.setSize(603,680);//单位是像素this.setVisible(true);}}

程序的启动入口:App

我们可以把test这个类删掉了,我们可以直接俄利用App这个程序的启动入口,我们需要启动哪个界面,我们直接创建谁就可以了。

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的启动入口//如果我们想要开启一个界面,就创建谁的对象就好了new RegisterJFrame();new GameJFrame();new loginJFrame();}
}

2、创建主界面2

简单初始化界面

    public RegisterJFrame(){this.setSize(488,500);//设置界面的标题this.setTitle("拼图 注册");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//让界面显示出来this.setVisible(true);
菜单制作

3、在游戏界面中添加菜单

代码

游戏界面:GameJFrame

package ui;import javax.swing.*;public class GameJFrame extends JFrame {//JFrame 界面,窗体//子类呢?也表示界面,窗体//规定:GameJFrame这个界面表示的就是游戏的主界面//以后跟游戏相关的所有逻辑都写在这个类中public GameJFrame(){//初始化界面initJFrame();//初始化菜单initJMenuBar();//让界面显示出来,最后写this.setVisible(true);}private void initJMenuBar() {//初始化菜单//创建整个的菜单对象JMenuBar jMenuBar = new JMenuBar();//创建菜单上面的两个选项的对象  (功能  关于我们)JMenu fuctionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("关于我们");//创建选项下面的条目对象JMenuItem replayItem = new JMenuItem("重新游戏");JMenuItem reloginItem = new JMenuItem("重新登录");JMenuItem closeItem = new JMenuItem("关闭游戏");JMenuItem accountItem = new JMenuItem("公众号");//将每一个选项下的条目添加到对应的选项中fuctionJMenu.add(replayItem);fuctionJMenu.add(reloginItem);fuctionJMenu.add(closeItem);aboutJMenu.add(accountItem);//将菜单里面的两个选项添加到菜单中jMenuBar.add(fuctionJMenu);jMenuBar.add(aboutJMenu);//给整个界面设置菜单this.setJMenuBar(jMenuBar);}private void initJFrame() {//设置界面的宽高this.setSize(603,680);//单位是像素//设置界面的标题this.setTitle("拼图单机版 v1.0");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}}

测试类:App

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的启动入口//如果我们想要开启一个界面,就创建谁的对象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

4、添加图片

  • 默认添加图片显示在正中央

多写一个初始化图片

package ui;import javax.swing.*;public class GameJFrame extends JFrame {//JFrame 界面,窗体//子类呢?也表示界面,窗体//规定:GameJFrame这个界面表示的就是游戏的主界面//以后跟游戏相关的所有逻辑都写在这个类中public GameJFrame(){//初始化界面initJFrame();//初始化菜单initJMenuBar();//初始化图片initimage();//让界面显示出来,最后写mthis.setVisible(true);}//---------------------------------- ---------------------//初始化图片private void initimage() {//1.创建一个图片imageicon的对象ImageIcon icon = new ImageIcon("E:\\tool\\IDEA-java\\java代码\\routing\\image\\animal\\animal3\\3.jpg");//2.创建一个Jlabel的对象(管理容器)JLabel JLabel = new JLabel(icon);//3.把管理容器添加到界面中this.add(JLabel);}private void initJMenuBar() {//初始化菜单//创建整个的菜单对象JMenuBar jMenuBar = new JMenuBar();//创建菜单上面的两个选项的对象  (功能  关于我们)JMenu fuctionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("关于我们");//创建选项下面的条目对象JMenuItem replayItem = new JMenuItem("重新游戏");JMenuItem reloginItem = new JMenuItem("重新登录");JMenuItem closeItem = new JMenuItem("关闭游戏");JMenuItem accountItem = new JMenuItem("公众号");//将每一个选项下的条目添加到对应的选项中fuctionJMenu.add(replayItem);fuctionJMenu.add(reloginItem);fuctionJMenu.add(closeItem);aboutJMenu.add(accountItem);//将菜单里面的两个选项添加到菜单中jMenuBar.add(fuctionJMenu);jMenuBar.add(aboutJMenu);//给整个界面设置菜单this.setJMenuBar(jMenuBar);}private void initJFrame() {//设置界面的宽高this.setSize(603,680);//单位是像素//设置界面的标题this.setTitle("拼图单机版 v1.0");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}}

app运行:

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的启动入口//如果我们想要开启一个界面,就创建谁的对象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

游戏主界面添加组件

代码
    //初始化图片private void initimage() {//外循环  --把内循环重复执行了4次int number = 1;for (int i = 0; i < 4; i++) {//内循环  --表示在一行添加4张图片for (int j = 0; j < 4; j++) {//1.创建一个Jlabel的对象(管理容器)JLabel JLabel = new JLabel(new ImageIcon("E:\\\\tool\\\\IDEA-java\\\\java代码\\\\routing\\\\image\\\\animal\\\\animal3\\\\" + number +".jpg"));//2.指定图片的位置JLabel.setBounds(105 * i,105 * j,105,105);//3.把管理容器添加到界面中this.getContentPane().add(JLabel);number++;}}

App 运行

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的启动入口//如果我们想要开启一个界面,就创建谁的对象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

5、打乱图片顺序

练习

打乱一维数组中的数据

int[] tempArr={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

要求:打乱一维数组中的数据,并按照4个一组的方式添加到二维数组中。

解法一:

package test;import java.util.Random;public class test1 {public static void main(String[] args) {//1.定义一个一维数组int[] temArr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//2.打乱数组中的顺序//遍历数组,得到每一个元素,拿着每一个元素跟随机索引上的数据进行交换Random r = new Random();for (int i = 0; i < temArr.length; i++) {//获取到随机索引int index = r.nextInt(temArr.length);//拿着每一个元素跟随机索引上的数据进行交换int temp = temArr[i];temArr[i] = temArr[index];temArr[index] = temp;}//3.遍历数组for (int i = 0; i < temArr.length; i++) {System.out.print(temArr[i] + " ");}System.out.println();//4.创建一个二维数组int[][] data = new int[4][4];//5.给二维数组添加数据//解法一://遍历一维数组tempArr得到每一个元素,把每一个元素依次添加到数组当中for (int i = 0; i < temArr.length; i++) {data[i / 4][i % 4] = temArr[i];}//遍历二维数组for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {System.out.print(data[i][j] + " ");}System.out.println();}}
}

解法二:

package test;import java.util.Random;public class test2 {public static void main(String[] args) {//1.定义一个一维数组int[] temArr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//2.打乱数组中的顺序//遍历数组,得到每一个元素,拿着每一个元素跟随机索引上的数据进行交换Random r = new Random();for (int i = 0; i < temArr.length; i++) {//获取到随机索引int index = r.nextInt(temArr.length);//拿着每一个元素跟随机索引上的数据进行交换int temp = temArr[i];temArr[i] = temArr[index];temArr[index] = temp;}//3.遍历数组for (int i = 0; i < temArr.length; i++) {System.out.print(temArr[i] + " ");}System.out.println();//4.创建一个二维数组int[][] data = new int[4][4];//5.给二维数组添加数据//解法二://遍历二维数组,给里面的每一个数据赋值int index = 0;for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {data[i][j] = temArr[index];index++;}}//遍历二维数组for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {System.out.print(data[i][j] + " ");}System.out.println();}}
}

在GameJFrame编写

package ui;import javax.swing.*;
import java.util.Random;public class GameJFrame extends JFrame {//JFrame 界面,窗体//子类呢?也表示界面,窗体//规定:GameJFrame这个界面表示的就是游戏的主界面//以后跟游戏相关的所有逻辑都写在这个类中//创建一个二维数组//目的:加载图片int[][] data = new int[4][4];public GameJFrame(){//初始化界面initJFrame();//初始化菜单initJMenuBar();//初始化数据(打乱)initdata();//初始化图片(根据打乱之后的数据结果加载图片)initimage();//让界面显示出来,最后写mthis.setVisible(true);}//---------------------------------- ---------------------private void initdata() {//1.定义一个一维数组int[] temArr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//2.打乱数组中的顺序//遍历数组,得到每一个元素,拿着每一个元素跟随机索引上的数据进行交换Random r = new Random();for (int i = 0; i < temArr.length; i++) {//获取到随机索引int index = r.nextInt(temArr.length);//拿着每一个元素跟随机索引上的数据进行交换int temp = temArr[i];temArr[i] = temArr[index];temArr[index] = temp;}//3.给二维数组添加数据//遍历一维数组tempArr得到每一个元素,把每一个元素依次添加到数组当中for (int i = 0; i < temArr.length; i++) {data[i / 4][i % 4] = temArr[i];}}//初始化图片private void initimage() {//外循环  --把内循环重复执行了4次for (int i = 0; i < 4; i++) {//内循环  --表示在一行添加4张图片for (int j = 0; j < 4; j++) {//获取当前要加载图片的序号int num = data[i][j];//创建一个Jlabel的对象(管理容器)JLabel JLabel = new JLabel(new ImageIcon("E:\\\\tool\\\\IDEA-java\\\\java代码\\\\routing\\\\image\\\\animal\\\\animal3\\\\" + num +".jpg"));//指定图片的位置JLabel.setBounds(105 * i,105 * j,105,105);//把管理容器添加到界面中this.getContentPane().add(JLabel);}}//------------------------------------------------------}private void initJMenuBar() {//初始化菜单//创建整个的菜单对象JMenuBar jMenuBar = new JMenuBar();//创建菜单上面的两个选项的对象  (功能  关于我们)JMenu fuctionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("关于我们");//创建选项下面的条目对象JMenuItem replayItem = new JMenuItem("重新游戏");JMenuItem reloginItem = new JMenuItem("重新登录");JMenuItem closeItem = new JMenuItem("关闭游戏");JMenuItem accountItem = new JMenuItem("公众号");//将每一个选项下的条目添加到对应的选项中fuctionJMenu.add(replayItem);fuctionJMenu.add(reloginItem);fuctionJMenu.add(closeItem);aboutJMenu.add(accountItem);//将菜单里面的两个选项添加到菜单中jMenuBar.add(fuctionJMenu);jMenuBar.add(aboutJMenu);//给整个界面设置菜单this.setJMenuBar(jMenuBar);}private void initJFrame() {//设置界面的宽高this.setSize(603,680);//单位是像素//设置界面的标题this.setTitle("拼图单机版 v1.0");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//取消默认的居中位置,只有取消了才会按照XY轴的形式添加组件this.setLayout(null);}}

App 测试

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的启动入口//如果我们想要开启一个界面,就创建谁的对象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

现在就每次运行的结果都不一样了

6、事件

1、动作监听

创建myjFrame 界面

package test;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;public class myjFrame extends JFrame implements ActionListener {//创建第一个按钮对象JButton jbt1 = new JButton("点我啊");//创建第二个按钮对象JButton jbt2 = new JButton("再点我啊");public myjFrame() {JFrame jFrame = new JFrame();//设置界面的宽高jFrame.setSize(603,680);//设置界面的标题jFrame.setTitle("事件演示");//设置界面置顶jFrame.setAlwaysOnTop(true);//设置界面居中jFrame.setLocationRelativeTo(null);//设置关闭模式jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//取消默认居中模式,只有取消了,才可以按照xy轴的形式添加组件jFrame.setLayout(null);//设置位置和宽高jbt1.setBounds(0,0,100,50);jbt1.addActionListener(this);//设置位置和宽高jbt2.setBounds(0,0,100,50);jbt2.addActionListener(this);//把按钮添加到界面this.getContentPane().add(jbt1);this.getContentPane().add(jbt2);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {//对当前的按钮进行判断//获取当前被操作的哪个按钮对象Object source = e.getSource();if (source == jbt1) {jbt1.setSize(200,200);}else if (source == jbt2) {Random r = new Random();jbt2.setLocation(r.nextInt(500),r.nextInt(500));}}
}

测试类:test4

package test;public class test4 {public static void main(String[] args) {new myjFrame();}
}

2、鼠标监听机制

创建myjFrame2 界面

package test;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;public class myjFrame2 extends JFrame implements MouseListener {//创建一个按钮对象JButton jtb1 = new JButton("点我啊");public myjFrame2(){//设置界面的宽高this.setSize(603, 680);//设置界面的标题this.setTitle("拼图单机版 v1.0");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//取消默认的居中放置,只有取消了才会按照XY轴的形式添加组件this.setLayout(null);//给按钮设置位置和宽高jtb1.setBounds(0,0,100,50);//给按钮绑定鼠标事件jtb1.addMouseListener(this);//那按钮添加到整个界面当中this.getContentPane().add(jtb1);//让整个界面显示出来this.setVisible(true);}@Overridepublic void mouseClicked(MouseEvent e) {System.out.println("单击");}@Overridepublic void mousePressed(MouseEvent e) {System.out.println("按下不松");}@Overridepublic void mouseReleased(MouseEvent e) {System.out.println("松开");}@Overridepublic void mouseEntered(MouseEvent e) {System.out.println("划入");}@Overridepublic void mouseExited(MouseEvent e) {System.out.println("划出");}
}

测试:test4

package test;public class test4 {public static void main(String[] args) {new myjFrame2();}
}

3、键盘监听

创建界面myjFrame3

package test;import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;public class myjFrame3 extends JFrame implements KeyListener {public myjFrame3(){//设置界面的宽高this.setSize(603, 680);//设置界面的标题this.setTitle("拼图单机版 v1.0");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//取消默认的居中放置,只有取消了才会按照XY轴的形式添加组件this.setLayout(null);//给整个窗体添加键盘监听this.addKeyListener(this);//让界面显示出来this.setVisible(true);}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {System.out.println("按下不松");}@Overridepublic void keyReleased(KeyEvent e) {System.out.println("松开按键");//获取键盘上每一个按键的编号int code = e.getKeyCode();System.out.println(code);}
}

测试:test4

package test;public class test4 {public static void main(String[] args) {new myjFrame3();}
}

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

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

相关文章

DDS数据分发服务——提升汽车领域数据传输效率

1.引言 随着智能化技术的快速发展&#xff0c;汽车行业正经历着一场革命性的变革。如今的分布式系统变得越来越复杂且庞大&#xff0c;对网络通信基数要求在功能和性能层面越来越高。数据分发服务&#xff08;DDS&#xff09;作为一项先进的数据传输解决方案&#xff0c;在汽车…

2369. 检查数组是否存在有效划分(动态规划)

2024-3-1 文章目录 [2369. 检查数组是否存在有效划分](https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/)思路&#xff1a;代码&#xff1a; 2369. 检查数组是否存在有效划分 思路&#xff1a; 1.状态定义:f[i]代表考虑将[0,i]是否能被有效划…

电脑要用多少V的电源?电脑电源输入电压是市电

台式电源的输出电压是多少&#xff1f; 电脑电源输出一般有三种不同的电压&#xff0c;分别是&#xff1a; 12V、5V、3.3V。 电脑电源负责给电脑配件供电&#xff0c;如CPU、主板、内存条、硬盘、显卡等&#xff0c;是电脑的重要组成部分。 工作电流根据不同的硬件及其使用状…

Python算法100例-3.3 阿姆斯特朗数

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.问题拓展 1&#xff0e;问题描述 如果一个整数等于其各个数字的立方和&#xff0c;则该数称为“阿姆斯特朗数”&#xff08;亦称为自恋性数&#xff…

nacos开启鉴权+springboot配置用户名密码

nacos默认没有开启鉴权&#xff0c;springboot无需用户名密码即可连接nacos。从2.2.2版本开始&#xff0c;默认控制台也无需登录直接可进行操作。 因此本文记录一下如何开启鉴权&#xff0c;基于nacos2.3.0版本。 编辑nacos服务端的application.properties&#xff1a; # 开…

Linux/Docker 修改系统时区

目录 1. Linux 系统1.1 通过 timedatectl 命令操作1.2 直接修改 /etc/localtime 文件 2. Docker 容器中的 Linux 操作环境&#xff1a; CentOS / AlmaOSMySQL Docker 镜像 1. Linux 系统 1.1 通过 timedatectl 命令操作 使用 timedatectl list-timezones 命令列出可用的时区…

32单片机基础:旋转编码器计次

接线图如上图所示。 我们初始化一下PB0和PB1两个GPIO口外设中断&#xff0c;当然&#xff0c;这里只初始化一个外部中断也能完成功能的对于编码器而言&#xff0c;下图所示为正转的波形。如果把一相的下降沿用作触发中断&#xff0c;在中断时刻读取另一相的电平&#xff0c;正…

【算法科目】2024年第二届全国大学生信息技术认证挑战赛 题解

图像压缩 曾经看到过&#xff0c;这是一道洛谷原题&#xff0c;很可惜我没做过&#xff0c;有点看不懂就没尝试。 原题链接&#xff1a;B3851 [GESP202306 四级] 图像压缩 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 因数分解 直接枚举就行了&#xff0c;从2开始找因子&a…

Spring:EnclosingClass工具类分辨

Spring&#xff1a;EnclosingClass工具类分辨 1 前言 通过Spring的工具分辨EnclosingClass类。 测试类如下&#xff1a; package com.xiaoxu.test.enclosingClass;/*** author xiaoxu* date 2024-01-18* java_demo2:com.xiaoxu.test.enclosingClass.Outter*/ public class …

微信小程序(四十六)登入界面-进阶版

注释很详细&#xff0c;直接上代码 上一篇 此文使用了vant组件库&#xff0c;没有安装配置的可以参考此篇vant组件的安装与配置 新增内容&#xff1a; 1.手机号与验证码格式验证 2.验证码的网络申请和校验 wechat-http模块在好几篇以前已经讲了咋安装的&#xff0c;不记得的友…

最新版阿里云Linux CentOS7 ecs-user用户安装Mysql8详细教程(超简单)

经过两天的踩坑后&#xff0c;终于成功安装&#xff0c;并找到了最快捷的安装方式。接下来就由我来给大家介绍不踩坑安装大法&#xff01; 一、下载Mysql 首先前往Mysql官网下载 MySQL官方下载地址 第一步&#xff0c;选择安装包&#xff0c;这是最关键的一步&#xff0c;选错安…

使用query请求数据出现500的报错

我在写项目的时候遇到了一个问题&#xff0c;就是在存商品id的时候我将它使用了JSON.stringify的格式转换了&#xff01;&#xff01;&#xff01;于是便爆出了500这个错误&#xff01;&#xff01;&#xff01; 我将JSON.stringify的格式去除之后&#xff0c;它就正常显示了&…

昇腾ACL应用开发之硬件编解码dvpp

1.前言 在我们进行实际的应用开发时&#xff0c;都会随着对一款产品或者AI芯片的了解加深&#xff0c;大家都会想到有什么可以加速预处理啊或者后处理的手段&#xff1f;常见的不同厂家对于应用开发的时候&#xff0c;都会提供一个硬件解码和硬件编码的能力&#xff0c;这也是抛…

sql注入之sqli-labs/less-3 单引号加括号闭合

输入单引号试探&#xff1a; id1 报错信息里面出现 ) 说明闭合符合里面还有个 ) 再次试探&#xff1a;id1 ) order by 3 -- 查看回显位置&#xff1a; id-1%20%27)%20union%20select%201,2,3%20-- 查看数据库&#xff1a; id-1%20%27)%20union%20select%201,2,database()%2…

Kerberos协议攻防之黄金票据控制整个公司电脑

&#x1f449;重点内容&#xff1a; 1、网络认证、本地认证、域认证的优略势 2、域认证之Kerberos协议的认证流程详解 3、TGT、Krbtgt、KDC、TGS搞懂这些绕口的概念 4、深入理解黄金票据攻击Golden Ticket Attack 5、实战&#xff01;通过黄金票据控制内网中所有的电脑

DC-2靶机详解

写写自己打DC-2的过程 使用工具 kali DC-2的靶机下载地址为&#xff1a;https://www.vulnhub.com/entry/dc-2,311/ 环境配置。 Kali和DC-2都设置为NAT模式&#xff0c;都为仅主机模式也可以。 信息收集 arp-scan -l nmap -sn 192.168.236.0/24 获取靶机ip&#xff1a;192.16…

基于springboot+vue的工厂车间管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

【Linux】输入系统应用

# 前置知识 (1)输入子系统分为三层&#xff0c;分别是事件处理层、核心层、设备驱动层&#xff1b; (2)鼠标移动、键盘按键按下等输入事件都需要通过设备驱动层→核心层→事件处理层→用户空间&#xff0c;层层上报&#xff0c;直到应用程序; 事件处理层 (1)事情处理层主要是负…

腾讯云4核8G服务器申请费用多少?性能如何?支持几个人?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

大数据报告检测到风险等级太高是怎么回事呢?

随着金融风控越来越多元化&#xff0c;大数据作为新兴的技术被运用到贷前风控中去了&#xff0c;不少人也了解过自己的大数据&#xff0c;但是由于相关知识不足&#xff0c;看不懂报告&#xff0c;在常见的问题中&#xff0c;大数据检测到风险等级太高是怎么回事呢?小易大数据…