首先我们先看一下预览效果:

要实现这样一个界面就需要用到Java Swing相关代码:

首先我们在eclipse中创建一个Java项目,在这个项目下创建包还有相关的类

我们的项目一共分为四个java文件:

Create_GUI.java(代码)

import javax.swing.JFrame;

public class Create_GUI {

public static void Create_GUI(){

JFrame frame=new MyQQ_Frame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(()->{

Create_GUI();

});

}

}

Create_GUI就是创建一个GUI程序

JFrame是JavaSwing中的一个框架,使用它的时候要把包导入

import javax.swing.JFrame;

我们在Create_GUI下创建了一个静态方法:这个静态方法可以创建继承于JFrame的MyQQ_Frame

至于下面这行代码大家可能有点陌生:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

这行代码就是你关闭窗口的时候,程序也随之退出。

记住哦,你可能关闭了窗口但是它有可能仍然在后台运行呢

好了接下来是MyQQ_Frame代码:

MyQQ_Frame的代码比较长:

那么我要分块进行讲解,最后再给大家一个全部的代码

首先我创建了一个框架这个框架继承于JFrame

public class MyQQ_Frame extends JFrame{

public MyQQ_Frame() {

//设置窗体大小

setSize(425,330);

//去除标题栏

setUndecorated(true);

//设置可见性

setVisible(true);

//设置透明度

com.sun.awt.AWTUtilities.setWindowOpacity(this, 0.8f);

}

}

这里要注意的是:你必须先去除标题栏再设置可见性

设置透明度的时候可能会出现问题

请参照这个网址解答解决JDK访问权限问题

去掉标题栏后的你可能很高兴,但是没过多久你就发现问题了

我的窗体怎么不能移动位置了?

因为少年,你把标题栏去掉了呀!

那怎么办呢?

添加一个函数就好了

//由于没有标题栏所以界面不能拖动改变位置

//采取以下方法可以解决

//静态鼠标触发器

addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e){

//System.out.println("鼠标按下");

//当鼠标点击时获取距离屏幕的坐标

x=e.getX();

y=e.getY();

}

});

//动态鼠标触发器

addMouseMotionListener(new MouseMotionAdapter() {

public void mouseDragged(MouseEvent e){

//System.out.println("鼠标拖动");

//获取当前位置的横坐标和纵坐标 left and top

//横向移动距离=横向动态坐标-鼠标点击时的横向静态坐标

//纵向移动距离=纵向动态坐标-鼠标点击时的纵向静态坐标

//设置可变化的位置 加上原来的位置即可

left=getLocation().x;

top=getLocation().y;

setLocation(left+e.getX()-x, top+e.getY()-y);

}

});

如果窗体随着鼠标的拖动相对静止运动的话:

那么窗体坐标变化和鼠标光标坐标变化是一样的

所以动态获取鼠标光标横坐标纵坐标的差值然后再加上窗口坐标就好了

接下来为了规范定义多个相同样式的控件,我定义了下面几个类

//自定义文本框

private class Create_textfield extends JTextField{

public Create_textfield(int n) {

super(n);

setFont(new Font("宋体", 1, 15));

setPreferredSize(new Dimension(215, 30));

}

}

//自定义密码框

private class Create_codefield extends JPasswordField{

public Create_codefield(int n) {

super(n);

setFont(new Font("宋体", 1, 15));

setPreferredSize(new Dimension(215, 30));

}

}

//自定义标签

private class Create_label extends JLabel{

public Create_label(String name,Color color) {

super(name);

setFont(new Font("微软雅黑", 1, 40));

setForeground(color);

setHorizontalAlignment(SwingConstants.CENTER);

}

}

//自定义按钮

private class Create_Login_Button extends JButton{

public Create_Login_Button(String text) {

super(text);

setBackground(new Color(0,191,255));

setPreferredSize(new Dimension(215, 37));

setForeground(Color.white);

setFocusPainted(false);

setFont(new Font("微软雅黑", 1, 15));

setHorizontalAlignment(SwingConstants.CENTER);

}

}

这样创建这些控件就显得方便了:

//写文字QQ

JLabel qq=new Create_label("2020",Color.white);

//用户名输入框

JTextField userfield=new Create_textfield(10);

//密码输入框

JPasswordField codefield=new Create_codefield(10);

//登录按钮

JButton button=new Create_Login_Button("登录");

接下来就是布局了,这里面我自己定义了一个布局SimpleLayout

定义这个布局需要两个java文件

一个在simpleLayout.java里写,一个在MyQQ_Frame.java里写

首先在simpleLayout.java里面:

public abstract class simpleLayout implements LayoutManager{

@Override

public void addLayoutComponent(String name, Component comp) {

// TODO 自动生成的方法存根

}

@Override

public void removeLayoutComponent(Component comp) {

// TODO 自动生成的方法存根

}

@Override

public Dimension preferredLayoutSize(Container parent) {

// TODO 自动生成的方法存根

return null;

}

@Override

public Dimension minimumLayoutSize(Container parent) {

// TODO 自动生成的方法存根

return null;

}

//@Override

//public void layoutContainer(Container parent) {

TODO 自动生成的方法存根

//

//}

}

注意我这里故意让它不实现这个重写方法:

为什么我要这么做呢?

因为它重写的那几个方法太多了,而我想用的仅仅是这里面的一个方法

而我把不用那4个方法删除的话,编译器会报错。它会让你改为抽象类或者实现没有实现的方法。大家知道这个抽象类是不能够实例化的,需要继承才能用。

所以我就另写一个文件来实现全部方法,唯独不实现这个方法:

@Override

public void layoutContainer(Container parent) {

// TODO 自动生成的方法存根

}

让这个类变为抽象的

然后回到原来的文件(MyQQ_Frame.java)

定义一个类来继承它,这样不就可以实现未实现的,就是你刚刚注释掉的

方法了。

private class SimpleLayout extends simpleLayout{

//实现被注释掉的方法

@Override

public void layoutContainer(Container parent) {

}

}

这回就只需要实现这一个我们想要的方法了,是不是棒极了?

那么这个方法要怎么写呢?

看看下面你就懂了:

private class SimpleLayout extends simpleLayout{

public void layoutContainer(Container parent) {

// TODO 自动生成的方法存根

//获取面板的宽高

//Rectangle是矩形

Rectangle rect =parent.getBounds();

//users是前面定义的控件JLabel

//如果它可见的话isVisible()

if(users.isVisible()){

//获取users尺寸

Dimension size=users.getPreferredSize();

//rect是面板(矩形)

//这个users的位置是可以随着面板大小变化的

//横坐标位置

int x=rect.width*1/5+15;

//纵坐标位置

int y=rect.height*1/2;

//setBounds(x,y,宽度,高度)

users.setBounds(x, y, size.width, size.height);

}

}

//这个布局器的厉害在于用户改变面板大小,控件位置会随之变化

//如果你说那我不想这么样我只想把控件位置定死

//可以呀

if(bg.isVisible()){

//好了这样就位置大小就定死了

bg.setBounds(0, -5, 440, 130);

}

}

好了布局器写好了,接下来怎么使用呢?

很简单:创建对象就好了

//jPanel是一个面板比Container好用多了

jPanel.setLayout(new SimpleLayout());

这里还有一个问题

就是我们知道Java Swing是有自己默认一个容器的,我们怎么取代这个容器

把Jpanel作为顶层容器呢?

//创建容器JPanel

JPanel jPanel=new JPanel();

//取代顶层容器

this.setContentPane(jPanel);

//设置背景

jPanel.setBackground(Color.white);

jPanel.setOpaque(true);

//设置布局

jPanel.setLayout(new SimpleLayout());

//我们还可以添加控件

jPanel.add(new JButton("牛牛"));

好了定位布局都会了,接下来就是引入图片了

那有什么好的图片网站吗?

当然有,这是阿里妈妈的网站:阿里巴巴图标库

下载就可以了

展示一下:

点击下载:

图标下载好了,怎么用呢?

首先我们要在刚刚的java项目下新建一个包,命名为img

把图片复制进去就ok

接下来就是代码了:

//资源文件路径

URL url0=getClass().getResource("/img/users.png");

URL url1=getClass().getResource("/img/code.png");

URL url2=getClass().getResource("/img/close.png");

URL url3=getClass().getResource("/img/bg.JPG");

URL url4=getClass().getResource("/img/qq0.png");

//声明图标

Icon users_icon=new ImageIcon(url0);

Icon codes_icon=new ImageIcon(url1);

Icon close_icon=new ImageIcon(url2);

Icon bg_icon=new ImageIcon(url3);

Icon touxiang=new ImageIcon(url4);

记住这些是相对路径,不用怕。

对照我上面的图片你就懂

那这些图片怎么用呢?

看这个代码:

//承接用户名图标

JLabel users=new JLabel();

//承接密码图标

JLabel codes=new JLabel();

//承接关闭图标

JButton close=new JButton();

//承接背景图片

JLabel bg=new JLabel();

//承接头像图片

JLabel tx=new JLabel();

//向控件中添加图标

users.setIcon(users_icon);

codes.setIcon(codes_icon);

close.setIcon(close_icon);

bg.setIcon(bg_icon);

close.setIcon(close_icon);

tx.setIcon(touxiang);

//现在控件中有图标了

//把带有图标的控件加到容器中

//添加用户图标

jPanel.add(users);

//添加密码

codefield.setBorder(matteBorder);

jPanel.add(codefield);

接下来给大家讲解一下控件的美化

如何修改文本框只有一个下滑线?

设置边框就得

//设置边框

//MatteBorder(上,左,下,右,颜色)

MatteBorder matteBorder=new MatteBorder(0, 0, 1, 0, Color.gray);

userfield.setBorder(matteBorder);

JButton不好看怎么办?

JButton log=new JButton("登录");

//创建空边框

Border border=BorderFactory.createEmptyBorder(1, 1, 1, 1);

//取消JButton里面的内边距

log.setFocusPainted(false);

//设置尺寸

log.setPreferredSize(new Dimension(50, 30));

//按钮颜色

log.setBackground(new Color(0,131,255));

为我们的JButton添加边框

log.setBorder(border);

好了现在我们大功告成了

离成功就差一步

我们由于去掉了标题栏

我们的controlBox没了

我怎么关闭呀?

这个关闭按钮需要自己写一个

//手写关闭按钮

//背景图片为×在阿里找呀

//首先我们美化一下我们的JButton

Border border=BorderFactory.createEmptyBorder(1, 1, 1, 1);

close.setFocusPainted(false);

close.setPreferredSize(new Dimension(50, 30));

close.setBackground(new Color(0,131,255));

close.setBorder(border);

//设置监听事件

close.addMouseListener(new MouseAdapter() {

//鼠标放在按钮下面的颜色

public void mouseEntered(MouseEvent e){

close.setBackground(Color.red);

}

//鼠标离开按钮的颜色

public void mouseExited(MouseEvent e) {

// TODO 自动生成的方法存根

close.setBackground(new Color(0,131,255));

}

});

//设置点击按钮事件

close.addActionListener((e)->{

//退出程序

this.dispose();

});

好了讲解结束

接下来贴全部代码:

Creat_GUI.java

package 模拟QQ登陆;

import javax.swing.JFrame;

public class Create_GUI {

public static void Create_GUI(){

JFrame frame=new MyQQ_Frame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(()->{

Create_GUI();

});

}

}

MyQQ_Frame.java

package 模拟QQ登陆;

import java.awt.Color;

import java.awt.Container;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.Rectangle;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionAdapter;

import java.net.URL;

import java.text.DecimalFormat;

import javax.swing.BorderFactory;

import javax.swing.Icon;

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 javax.swing.JPasswordField;

import javax.swing.JTextField;

import javax.swing.SwingConstants;

import javax.swing.UIManager;

import javax.swing.border.Border;

import javax.swing.border.MatteBorder;

public class MyQQ_Frame extends JFrame{

int x,y;

//承接用户名图标

JLabel users=new JLabel();

//承接密码图标

JLabel codes=new JLabel();

//承接关闭图标

JButton close=new JButton();

//承接背景图片

JLabel bg=new JLabel();

//承接头像图片

JLabel tx=new JLabel();

//写文字QQ

JLabel qq=new Create_label("2020",Color.white);

//用户名输入框

JTextField userfield=new Create_textfield(10);

//密码输入框

JPasswordField codefield=new Create_codefield(10);

//登录按钮

JButton button=new Create_Login_Button("登录");

//资源文件路径

URL url0=getClass().getResource("/img/users.png");

URL url1=getClass().getResource("/img/code.png");

URL url2=getClass().getResource("/img/close.png");

URL url3=getClass().getResource("/img/bg.JPG");

URL url4=getClass().getResource("/img/qq0.png");

//声明图标

Icon users_icon=new ImageIcon(url0);

Icon codes_icon=new ImageIcon(url1);

Icon close_icon=new ImageIcon(url2);

Icon bg_icon=new ImageIcon(url3);

Icon touxiang=new ImageIcon(url4);

int left,top;

//构造方法

public MyQQ_Frame() {

//设置窗体大小

setSize(425,330);

//去除标题栏

setUndecorated(true);

//设置可见性

setVisible(true);

// 设置窗体透明度

com.sun.awt.AWTUtilities.setWindowOpacity(this, 0.8f);

//由于没有标题栏所以界面不能拖动改变位置

//采取以下方法可以解决

//静态鼠标触发器

addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e){

//System.out.println("鼠标按下");

//当鼠标点击时获取距离屏幕的坐标

x=e.getX();

y=e.getY();

}

});

//动态鼠标触发器

addMouseMotionListener(new MouseMotionAdapter() {

public void mouseDragged(MouseEvent e){

//System.out.println("鼠标拖动");

//获取当前位置的横坐标和纵坐标 left and top

//横向移动距离=横向动态坐标-鼠标点击时的横向静态坐标

//纵向移动距离=纵向动态坐标-鼠标点击时的纵向静态坐标

//设置可变化的位置 加上原来的位置即可

left=getLocation().x;

top=getLocation().y;

setLocation(left+e.getX()-x, top+e.getY()-y);

}

});

//创建容器JPanel

JPanel jPanel=new JPanel();

//取代顶层容器

this.setContentPane(jPanel);

//添加图标

users.setIcon(users_icon);

codes.setIcon(codes_icon);

close.setIcon(close_icon);

bg.setIcon(bg_icon);

close.setIcon(close_icon);

tx.setIcon(touxiang);

//设置背景

jPanel.setBackground(Color.white);

jPanel.setOpaque(true);

//设置布局

jPanel.setLayout(new SimpleLayout());

//添加文本框

MatteBorder matteBorder=new MatteBorder(0, 0, 1, 0, Color.gray);

userfield.setBorder(matteBorder);

jPanel.add(userfield);

//添加用户图标

jPanel.add(users);

//添加密码

codefield.setBorder(matteBorder);

jPanel.add(codefield);

Border border=BorderFactory.createEmptyBorder(1, 1, 1, 1);

close.setFocusPainted(false);

close.setPreferredSize(new Dimension(50, 30));

close.setBackground(new Color(0,131,255));

close.setBorder(border);

close.addMouseListener(new MouseAdapter() {

public void mouseEntered(MouseEvent e){

close.setBackground(Color.red);

}

public void mouseExited(MouseEvent e) {

// TODO 自动生成的方法存根

close.setBackground(new Color(0,131,255));

}

});

close.addActionListener((e)->{

this.dispose();

});

jPanel.add(close);

jPanel.add(codes);

jPanel.add(tx);

jPanel.add(qq);

jPanel.add(bg);

jPanel.add(button);

button.addActionListener((e)->{

String names=userfield.getText();

@SuppressWarnings("deprecation")

String mima=codefield.getText();

users []yonghu=new users[5];

for(int q=0;q<5;q++){

yonghu[q]=new users();

}

yonghu[0].users="3320938770";

yonghu[1].users="1321824584";

yonghu[2].users="2939634393";

yonghu[3].users="1812352723";

yonghu[4].users="1369286377";

int count=0;

for(int i=0;i<5;i++){

if(yonghu[i].users.equals(names)&&mima.equals("123")){

count++;

}

}

if(count==1){

JOptionPane.showConfirmDialog(jPanel, "登录成功", "提示", JOptionPane.DEFAULT_OPTION);

this.dispose();

}

else{

JOptionPane.showMessageDialog(this,"没有注册","登录失败",JOptionPane.WARNING_MESSAGE);

}

});

}

private class Create_textfield extends JTextField{

public Create_textfield(int n) {

super(n);

setFont(new Font("宋体", 1, 15));

setPreferredSize(new Dimension(215, 30));

}

}

private class Create_codefield extends JPasswordField{

public Create_codefield(int n) {

super(n);

setFont(new Font("宋体", 1, 15));

setPreferredSize(new Dimension(215, 30));

}

}

private class Create_label extends JLabel{

public Create_label(String name,Color color) {

super(name);

setFont(new Font("微软雅黑", 1, 40));

setForeground(color);

setHorizontalAlignment(SwingConstants.CENTER);

}

}

private class Create_Login_Button extends JButton{

public Create_Login_Button(String text) {

super(text);

setBackground(new Color(0,191,255));

setPreferredSize(new Dimension(215, 37));

setForeground(Color.white);

setFocusPainted(false);

setFont(new Font("微软雅黑", 1, 15));

setHorizontalAlignment(SwingConstants.CENTER);

}

}

//见包中simpleLayout 抽象类

private class SimpleLayout extends simpleLayout{

@Override

public void layoutContainer(Container parent) {

// TODO 自动生成的方法存根

Rectangle rect =parent.getBounds();

if(bg.isVisible()){

Dimension size=bg.getPreferredSize();

bg.setBounds(0, -5, 440, 130);

}

if(users.isVisible()){

Dimension size=users.getPreferredSize();

int x=rect.width*1/5+15;

int y=rect.height*1/2;

users.setBounds(x, y, size.width, size.height);

}

if(userfield.isVisible()){

Dimension size=userfield.getPreferredSize();

int x=rect.width*1/5+30;

int y=rect.height*1/2+1;

userfield.setBounds(x, y, 215, 20);

}

if(codes.isVisible()){

Dimension size=codes.getPreferredSize();

int x=rect.width*1/5+15;

int y=rect.height*1/2+42;

codes.setBounds(x, y, size.width, size.height);

}

if(codefield.isVisible()){

Dimension size=codefield.getPreferredSize();

int x=rect.width*1/5+30;

int y=rect.height*1/2+39;

codefield.setBounds(x, y, 215, 20);

}

if(tx.isVisible()){

Dimension size=tx.getPreferredSize();

int x=(rect.width-size.width)/3+5;

int y=44;

tx.setBounds(x, y, size.width,size.height );

}

if(qq.isVisible()){

Dimension size=qq.getPreferredSize();

int x=(rect.width-size.width)/3+85;

int y=42;

qq.setBounds(x, y, size.width, size.height);

}

if(button.isVisible()){

Dimension size=button.getPreferredSize();

int x=(rect.width-size.width)/2+12;

int y=rect.height*1/2+89;

button.setBounds(x, y, size.width, size.height);

}

if(close.isVisible()){

Dimension size=close.getPreferredSize();

int x=rect.width-size.width;

int y=0;

close.setBounds(x, y, size.width, size.height);

}

}

}

}

simple_Layout.java

package 模拟QQ登陆;

import java.awt.Component;

import java.awt.Container;

import java.awt.Dimension;

import java.awt.LayoutManager;

public abstract class simpleLayout implements LayoutManager{

@Override

public void addLayoutComponent(String name, Component comp) {

// TODO 自动生成的方法存根

}

@Override

public void removeLayoutComponent(Component comp) {

// TODO 自动生成的方法存根

}

@Override

public Dimension preferredLayoutSize(Container parent) {

// TODO 自动生成的方法存根

return null;

}

@Override

public Dimension minimumLayoutSize(Container parent) {

// TODO 自动生成的方法存根

return null;

}

//@Override

//public void layoutContainer(Container parent) {

TODO 自动生成的方法存根

//

//}

}

Users.java

package 模拟QQ登陆;

public class users {

public String users;

public String codes;

public users() {

codes="123";

}

}

图片可能没有哈,那个路径你要改改

谢谢大家支持!!!

loving you

标签:界面,java,Create,Swing,Java,new,close,import,public

来源: https://blog.csdn.net/chengqige/article/details/105243529

java myqq ui,用Java Swing写一个登录界面相关推荐

  1. 写一个登录界面——用窗体界面实现

    写一个登录界面--用窗体界面实现 我们在上网的时候总能看到各种各样的窗体界面,比如:网页角落突然弹出的小广告.登录界面.画图板--接下来我就来讲讲如何创建一个窗体界面并制作一个登录界面. 窗体类的英文 ...

  2. 写一个登录界面连接数据库,判断用户名和密码

    第一步 登录界面 login.html <!DOCTYPE html> <html lang="en"> <head><meta char ...

  3. java写一个登录系统_用java写一个用户登陆界面

    一.课堂测试源代码及其结果截图 用java的swing写一个用户登录界面,采用网格布局.源代码如下: /** * */ package LiuLijia; import java.awt.CardLa ...

  4. Java IO练习--在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中

    package com.kj.test;import cn.hutool.core.io.IoUtil;import java.io.File; import java.io.FileOutputSt ...

  5. java仿qq登录 界面设计,Java Swing仿QQ登录界面效果

    本文实例为大家分享了Java Swing仿QQ登录界面展示的具体代码,供大家参考,具体内容如下 闲来无事将早些时候已实现的QQ登录界面再实现了一遍,纯手工打造(意思是没有用NetBeans.MyEcl ...

  6. javaweb 常用jar包_使用javaweb写一个登录案例

    下载地址:https://gitee.com/dl_shrimp/java_web_login_case.git https://www.zhihu.com/video/124178088859969 ...

  7. 用IDEA写一个登录系统

    用IDEA写一个登录系统+连接数据库 1-1配置jdk环境变量 1-2导入jdk 1-3创建web application 1-4在这需要手动创建bin包和main包 如下图 1-5手动加入三个jar ...

  8. 用PYQT5写一个登陆界面

    PYQT5的使用 通过写一个登陆界面来学习PYQT5的一些基础功能 代码如下 QT designer的使用 用户输入部分 按钮 插入背景 通过写一个登陆界面来学习PYQT5的一些基础功能 代码如下 # ...

  9. uniapp写一个登录页面

    很高兴为您解答,可以参考以下步骤来写一个登录页面: 创建一个uniapp项目,并在项目中创建一个登录页面: 在登录页面中添加用户名和密码输入框,以及一个登录按钮: 在登录按钮的点击事件中,添加验证用户 ...

最新文章

  1. Java项目:酒店管理系统(java+Springboot+Mybatis+Beetl+Layui)
  2. BZOJ2938:[POI2000] 病毒
  3. Power Strings_JAVA
  4. dll 源码_重新编译mono——Android动态更新dll
  5. 关于OAuth 协议中刷新令牌存活时间的讨论
  6. 【渝粤题库】国家开放大学2021春3607矿井瓦斯灾害防治题目
  7. 贝叶斯信念网络和马尔科夫链有什么区别
  8. php提交失败阻止提交数据,php – 在刷新浏览器时阻止重新提交提交
  9. ajax 跨域请求_什么是跨域问题?如何解决?
  10. linux shell脚本监控进程崩溃自动重启
  11. Matplotlib从入门到精通
  12. 斗鱼password加密参数调试生成案例
  13. 软件测试中动态测试与静态测试的区别
  14. 雷达imu联合标定lidar_imu_calib-main
  15. 微信文件夹储存在什么位置?如何修改保存路径
  16. python 判断完全平方数
  17. java正则表达式 问号_正则表达式问号的四种用法详解
  18. Ir_scheduler模块
  19. OpenCV颜色空间——Lab颜色空间
  20. XP系统封装-2011年

热门文章

  1. 微信语音怎么转发详细转发教程详解
  2. 初识Java之贪吃蛇小游戏
  3. 均值、方差、标准差、协方差的概念及意义
  4. 跟着吴坚鸿学单片机——第1天:吴坚鸿谈初学单片机的误区
  5. 概率论考研笔记(三)
  6. Oracle EBS Workflow 下载/上传
  7. 第八课.TPAMI2021年多篇GNN相关工作
  8. 电脑怎么修改文件创建时间?
  9. 产品 - 收藏集 - 掘金
  10. linux 局域网扫描工具