Java Swing(C/S模式)特效雨滴系统界面

news2024/11/25 21:25:40

                   



 


调节不同参数,生成不同特效:






                                        ------------------界面截图--------------------- 

package org.jd.data.netty.big.window.chat.frame.ui.controller.center;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.*;


/**
 * 设计模式: 单例模式
 *  * 自定义线程池: 实现业务需求:
 *  * 可以获取线程池内部细节,对排查程序故障有很大的好处
 * <p>@Description: 自定义线程池</p>
 * <p>@Copyright: Copyright (c)2,023</p>
 * <p>@Company: 北京惠农科技有限公司</p>
 * <P>@Created Date :2023年03月19日</P>
 * <P>@version 1.0
 * <p>@author yh19166</p>
 */
@Slf4j
public final class SSOCustomerThreadPoolExecutor extends ThreadPoolExecutor {

    private static final int corePoolSize = 4;
    private static final long keepAliveTime = 10;
    private static final int maximumPoolSize = 10;
    private static final TimeUnit unit = TimeUnit.MILLISECONDS;  // 微秒
    private static final BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(10); // 队列容量
    private static final ThreadFactory threadFactory = new SSOCustomerThreadFactory();

    private static class SSOCustomerThreadPoolExecutorHandler {
        private static SSOCustomerThreadPoolExecutor newInstance = new SSOCustomerThreadPoolExecutor(maximumPoolSize * 2, threadFactory);
    }

    public static SSOCustomerThreadPoolExecutor newInstance() {
        return SSOCustomerThreadPoolExecutor.SSOCustomerThreadPoolExecutorHandler.newInstance;
    }


    private SSOCustomerThreadPoolExecutor(int maximumPoolSize, ThreadFactory threadFactory) {
        super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory,new SSORejectedExecutionHandler());
    }

    @Override
    protected void beforeExecute(Thread task, Runnable r) {
        Runtime runtime = Runtime.getRuntime();
        int cupNum = runtime.availableProcessors();// 获取可以的CUP数量
        long freeMemory = runtime.freeMemory(); // 空闲内存 kb;
        long maxMemory = runtime.maxMemory();
        long totalMemory = runtime.totalMemory();
        System.out.println("current name: " + task.getName() + " | beforeExecute 可以的CPU数量: " + cupNum + " | 空闲内存: " + freeMemory + " | 最大内存: " + maxMemory + "  | 总内存: " + totalMemory);
    }

    @Override
    protected void afterExecute(Runnable task, Throwable t) {
        System.out.println("afterExecute Thread name : " + task.getClass().getSimpleName()+ " | current thread status :" + Thread.currentThread().getState()
                + " current thread id : " + Thread.currentThread().getId() + " | afterExecute poolSize : "
                + this.getPoolSize() + " | threadPool task num : "
                + this.getTaskCount() + " | finished task num: "
                + this.getCompletedTaskCount() + " | not finished task num: " + (this.getTaskCount() - this.getCompletedTaskCount()));
        System.out.println("============================================================================================================================================");
        Runtime runtime = Runtime.getRuntime();
        int cupNum = runtime.availableProcessors();// 获取可以的CUP数量
        long freeMemory = runtime.freeMemory(); // 空闲内存 kb;
        long maxMemory = runtime.maxMemory();
        long totalMemory = runtime.totalMemory();
        try {
            System.out.println("current name: " + task.getClass().newInstance() + " | beforeExecute 可以的CPU数量: " + cupNum + " | 空闲内存: " + freeMemory + " | 最大内存: " + maxMemory + "  | 总内存: " + totalMemory);
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        System.out.println("============================================================================================================================================");
    }


}

  





package org.jd.data.netty.big.window.chat.frame.ui.room.main;

import com.sun.awt.AWTUtilities;
import org.jd.data.netty.big.window.chat.frame.ui.controller.center.SSOControllerCenterManager;
import org.jd.data.netty.big.window.chat.frame.ui.room.custom.RJButton;
import org.jd.data.netty.big.window.chat.frame.ui.room.metal.SSOSumMetalTool;
import org.jd.data.netty.big.window.chat.frame.ui.room.system.SSOSystemIni;
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.*;


/**
 * 窗体显示风格
 * 
 * 酒店主窗体
 */
public class HotelMainFrame extends JFrame implements ActionListener, MouseListener, Runnable {

    public static String userId;
    private static String puiLi;
    public static JLabel jLabelA;
    public static JLabel jLabelB;
    private static String clue = "   提示:  ";
    private static String face = "     当前操作界面 :  ";

    // 声明与菜单相关的组件
    private JMenuBar jMenuBar;
    private JMenu jMenu1;
    private JMenu jMenu2;
    private JMenu jMenu3;
    private JMenu jMenu4;
    private JMenu jMenu5;
    private JMenu jMenu6;
    private JMenu jMenu7;
    private JMenu jMenu8;
    private JMenu jMenu9;
    private JMenu jMenu10;
    // 来宾登录
    private JMenuItem jMenuItem1;
    private JMenuItem jMenuItem2;
    private JMenuItem jMenuItem3;
    private JMenuItem jMenuItem4;
    private JMenuItem jMenuItem5;
    private JMenuItem jMenuItem6;
    private JMenuItem jMenuItem7;
    private JMenuItem jMenuItem8;
    private JMenuItem jMenuItem9;
    // 收银结算
    private JMenuItem jMenuItem21;
    private JMenuItem jMenuItem22;
    private JMenuItem jMenuItem23;
    private JMenuItem jMenuItem24;
    private JMenuItem jMenuItem25;
    // 系统维护
    private JMenuItem jMenuItem31;
    private JMenuItem jMenuItem32;

    private JMenuItem jMenuItem34;

    // 声明与工具栏相关的组件
    private JToolBar jToolBar;
    private RJButton jButton1;
    private RJButton jButton2;
    /*private JButton jButton3;*/
    private RJButton jButton4;
    private RJButton jButton5;
    private RJButton jButton6;
    private RJButton jButton7;
    private RJButton jButton8;
    private RJButton jButton9;
    private RJButton jButtonA;

    // 声明与分割面板相关的组件
    private JSplitPane jSplitPaneMain;
    private JSplitPane jSplitPaneLeft;
    private JSplitPane jSplitPaneRight;
    //模块接口
    private JPanel panelMain;
    private JPanel bott;
    private JPanel jp2;
    private JPanel jp3;
    private JPanel jp4;
    // 主窗口左边面板
    private HotelMainLeftTopPanel jp1;

    //功能提示
    private String toolTip[] = {
            "零散宾客入住登记                      ",
            "团体入住登记                        ",
            "关于本软件的支持信息                    ",
            "宾客退房结算                        ",
            "为宾客预订房间                       ",
            "查询营业情况                        ",
            "为酒店固定客户设置参数                   ",
            "设置系统的网络连接方式                   ",
            "设置系统参数                        ",
            "返回Windows                       "
    };

    public HotelMainFrame(String us, String pu) {
        super("惠农数字化酒店管理系统");
        // 操作员名称
        userId = us;
        puiLi = pu;
        // 主面板
        panelMain = new JPanel(new BorderLayout());
        // 制作菜单
        buildMenuBar();
        // 制作工具栏
        buildToolBar();
        // 制作分割面板
        buildSPanelMain();
        // 制作窗口底部信息框
        buildBottom();
        // 加入组件到主面板

        panelMain.add("North", jToolBar);
        // 加入窗口底端信息框
        panelMain.add("South", bott);
        // 加入分割面;
        panelMain.add("Center", jSplitPaneMain);

        // 加入菜单栏
        this.setJMenuBar(jMenuBar);

        // 加入监听器
        addListener();

        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                quit();
            }
        });
        // 设置内容面板
        Container container = this.getContentPane();
        container.add(panelMain);
        this.setBounds(2, 2, 1400, 800);
        //居中显示
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        // 设置最小显示尺寸
        this.setMinimumSize(new Dimension(1400, 800));
        this.setVisible(true);
        // 使用自定义线程池来管理
        SSOControllerCenterManager serverExecutor = SSOControllerCenterManager.newInstance();
        serverExecutor.getExecutorService().submit(this);
    }

    private void quit() {
        String msg = "您 现 在 要 关 闭 系 统 吗 ?";
        int flag = JOptionPane.showConfirmDialog(this, msg, "提示", JOptionPane.YES_NO_OPTION);
        if (flag == JOptionPane.YES_OPTION) {
            //Journal.writeJournalInfo(userId, "退出本系统", Journal.TYPE_LG);//记录操作日志
            this.setVisible(false);
            System.exit(0);
        }
    }

    private void addListener() {
        //来宾登记
        jMenuItem1.addActionListener(this);
        jMenuItem2.addActionListener(this);
        jMenuItem3.addActionListener(this);
        jMenuItem4.addActionListener(this);
        jMenuItem5.addActionListener(this);
        jMenuItem6.addActionListener(this);
        jMenuItem7.addActionListener(this);
        jMenuItem8.addActionListener(this);
        jMenuItem9.addActionListener(this);
        //收银结算
        jMenuItem21.addActionListener(this);
        jMenuItem22.addActionListener(this);
        jMenuItem23.addActionListener(this);
        jMenuItem24.addActionListener(this);
        jMenuItem25.addActionListener(this);
        //系统维护
        jMenuItem31.addActionListener(this);
        jMenuItem32.addActionListener(this);

        jMenuItem34.addActionListener(this);
        //按键加动作监听
        jButton1.addActionListener(this);
        jButton2.addActionListener(this);
        /*jButton3.addActionListener (this);*/
        jButton4.addActionListener(this);
        jButton5.addActionListener(this);
        jButton6.addActionListener(this);
        jButton7.addActionListener(this);
        jButton8.addActionListener(this);
        jButton9.addActionListener(this);
        jButtonA.addActionListener(this);
        //按键加鼠标监听
        jButton1.addMouseListener(this);
        jButton2.addMouseListener(this);
        jButton4.addMouseListener(this);
        jButton5.addMouseListener(this);
        jButton6.addMouseListener(this);
        jButton7.addMouseListener(this);
        jButton8.addMouseListener(this);
        jButton9.addMouseListener(this);
        jButtonA.addMouseListener(this);
    }

    // 制作窗口底部信息框
    private void buildBottom() {
        JLabel jLabel1 = new JLabel("    惠 农 数 字 化 酒 店 管 理 系 统    ");
        JLabel jLabel2 = new JLabel("    当前操作员 :  " + userId + "                  ");
        jLabelA = new JLabel(clue + "请选择功能项 ...                       ");
        jLabelB = new JLabel(face + "惠 农 数 字 化 酒 店 管 理 系 统   ");
        // 给标签添加外边框
        jLabelA.setBorder(new LineBorder(new Color(87, 87, 47)));
        jLabelB.setBorder(new LineBorder(new Color(87, 87, 47)));
        jLabel1.setBorder(new LineBorder(new Color(87, 87, 47)));
        jLabel2.setBorder(new LineBorder(new Color(87, 87, 47)));

        // 设置底部面板布局方式为流式布局;组件基左,水平和竖直间隙为2
        bott = new JPanel(new FlowLayout(FlowLayout.LEFT, 2, 2));
        bott.add(jLabel1); // 组件显示与添加顺序有关系
        bott.add(jLabelA);
        bott.add(jLabelB);
        bott.add(jLabel2);
    }

    // 制作主面板
    private void buildSPanelMain() {
        // 左侧顶部的面板
        jp1 = new HotelMainLeftTopPanel();
        // 左下面板;快速通道
        jp2 = new HotelMainLeftBottomPanel();
        //  /
        jp3 = new HotelMainRightTopPanel();
        // 右下面板, 消费信息表
        jp4 = new HotelMainRightBottomPanel();


        // 声明分割面板
        jSplitPaneLeft = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, jp1, jp2);
        jSplitPaneRight = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, jp3, jp4);
        jSplitPaneMain = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, jSplitPaneLeft, jSplitPaneRight);

        // 设置面板的最小尺寸
        jp1.setMinimumSize(new Dimension(157, 450));
        jp2.setMinimumSize(new Dimension(157, 94));
        jp3.setMinimumSize(new Dimension(875, 300));
        jp4.setMinimumSize(new Dimension(875, 94));


        jSplitPaneRight.setMinimumSize(new Dimension(875, 565));

        // 设置分割条是否有伸缩键
        jSplitPaneMain.setOneTouchExpandable(true);
        jSplitPaneRight.setOneTouchExpandable(true);

        // 设置各面板的初始尺寸
        jSplitPaneMain.setDividerLocation(160);
        jSplitPaneLeft.setDividerLocation(450);
        jSplitPaneRight.setDividerLocation(450);
        // 设置分割条宽度
        jSplitPaneMain.setDividerSize(10);
        jSplitPaneLeft.setDividerSize(23);
        jSplitPaneRight.setDividerSize(23);

    }

    // 制作工具栏
    private void buildToolBar() {
        jToolBar = new JToolBar();

        //URL url1 = ClassLoader.getSystemResource("image/hotel/bar/tool/m01.gif");
        ClassLoader classLoader = RJButton.class.getClassLoader();
        String basePicPath = "image/hotel/bar/tool/"; // 后期放到配置文件中去
        //制作按键
        jButton1 = new RJButton(classLoader.getResource(basePicPath + "m01.gif").getPath(), "  个人订房  ", "零散宾客入住登记", true);
        jButton2 = new RJButton(classLoader.getResource(basePicPath + "m02.gif").getPath(), "  多人订房  ", "团体入住登记", true);
        jButton4 = new RJButton(classLoader.getResource(basePicPath + "m04.gif").getPath(), "  旅客结帐  ", "宾客退房结算", true);
        jButton5 = new RJButton(classLoader.getResource(basePicPath + "m05.gif").getPath(), "  预订房间  ", "为宾客预定房间", true);
        jButton6 = new RJButton(classLoader.getResource(basePicPath + "m06.gif").getPath(), "  营业查询  ", "查询营业情况", true);
        jButton7 = new RJButton(classLoader.getResource(basePicPath + "m07.gif").getPath(), "  客户管理  ", "为酒店固定客户设置", true);
        jButton8 = new RJButton(classLoader.getResource(basePicPath + "m08.gif").getPath(), "  网络设置  ", "设置连接方式", true);
        jButton9 = new RJButton(classLoader.getResource(basePicPath + "m09.gif").getPath(), "  系统设置  ", "设置系统参数", true);
        jButtonA = new RJButton(classLoader.getResource(basePicPath + "m10.gif").getPath(), "  退出系统  ", "返回Windows", true);
        // 把按键添加如工具栏
        /**
         * Appends a separator of default size to the end of the tool bar.
         * The default size is determined by the current look and feel.
         */
        jToolBar.addSeparator(); // 添加分割线;就是一小段空白小区域
        jToolBar.add(jButton1);
        jToolBar.add(jButton2);
        jToolBar.addSeparator();
        jToolBar.add(jButton4);
        jToolBar.add(jButton5);
        jToolBar.add(jButton6);
        jToolBar.addSeparator();
        jToolBar.add(jButton7);
        jToolBar.add(jButton8);
        jToolBar.add(jButton9);
        jToolBar.addSeparator();
        jToolBar.addSeparator();
        jToolBar.add(jButtonA);
        // 设置工具栏不可浮动
        jToolBar.setFloatable(true);

    }

    // 制作菜单
    private void buildMenuBar() {
        // 实例菜单栏
        jMenuBar = new JMenuBar();
        jMenuBar.setBorder(BorderFactory.createTitledBorder(new LineBorder(Color.GRAY,1)));
        // 实例菜单
        jMenu1 = new JMenu("来宾登记");
        jMenu1.addSeparator();
        jMenu1.addSeparator();
        jMenu2 = new JMenu("收银结算");
        jMenu2.addSeparator();
        jMenu2.addSeparator();
        jMenu3 = new JMenu("系统维护");
        jMenu3.addSeparator();
        jMenu3.addSeparator();
        jMenu4= new JMenu("报表统计");
        jMenu4.addSeparator();
        jMenu4.addSeparator();
        jMenu5= new JMenu("草稿箱");
        jMenu5.addSeparator();
        jMenu5.addSeparator();
        jMenu6= new JMenu("回收站");
        jMenu6.addSeparator();
        jMenu6.addSeparator();

        jMenu7= new JMenu("消息中心");
        jMenu7.addSeparator();
        jMenu7.addSeparator();

        jMenu8= new JMenu("流程审批");
        jMenu8.addSeparator();
        jMenu8.addSeparator();

        jMenu9= new JMenu("监控中心");
        jMenu9.addSeparator();
        jMenu9.addSeparator();

        jMenu10= new JMenu("聊天室");
        jMenu10.addSeparator();
        jMenu10.addSeparator();


        // 实例菜单项
        jMenuItem1 = new JMenuItem("散客开单");
        jMenuItem2 = new JMenuItem("团体开单");
        jMenuItem3 = new JMenuItem("宾客续住");
        jMenuItem4 = new JMenuItem("更换房间");
        jMenuItem5 = new JMenuItem("修改登记");
        jMenuItem6 = new JMenuItem("房间状态");
        jMenuItem7 = new JMenuItem("预订管理");
        jMenuItem8 = new JMenuItem("电子提醒");
        jMenuItem9 = new JMenuItem("退出系统");

        jMenuItem21 = new JMenuItem("宾客结账");
        jMenuItem22 = new JMenuItem("合并帐单");
        jMenuItem23 = new JMenuItem("折分帐单");
        jMenuItem24 = new JMenuItem("宾客消费明细查询");
        jMenuItem25 = new JMenuItem("宾客退单明细查询");

        jMenuItem31 = new JMenuItem("网络设置");
        jMenuItem32 = new JMenuItem("系统设置");
        jMenuItem34 = new JMenuItem("数据备份");
        //未开发完毕的功能
        /*jMenuItem16.setEnabled(false);//未开发完毕的功能
        jMenuItem18.setEnabled(false);*/
        jMenuItem34.setEnabled(false);

        //组织菜单
        //来宾登记
        jMenu1.add(jMenuItem1);
        jMenu1.add(jMenuItem2);
        jMenu1.add(jMenuItem3);
        jMenu1.add(jMenuItem4);
        jMenu1.add(jMenuItem5);
        jMenu1.add(jMenuItem6);
        jMenu1.addSeparator();
        jMenu1.add(jMenuItem7);
        jMenu1.add(jMenuItem8);
        /**
         * Appends a new separator to the end of the menu.
         */
        jMenu1.addSeparator();
        jMenu1.add(jMenuItem9);
        //收银结算
        jMenu2.add(jMenuItem21);
        jMenu2.add(jMenuItem23);
        jMenu2.add(jMenuItem23);
        //系统维护
        jMenu2.add(jMenuItem31);
        jMenu2.add(jMenuItem32);
        jMenu2.addSeparator();
        jMenu2.add(jMenuItem34);
        jMenu2.addSeparator();
        //加入菜单栏
        jMenuBar.add(jMenu1);
        jMenuBar.add(jMenu2);
        jMenuBar.add(jMenu3);
        jMenuBar.add(jMenu4);
        jMenuBar.add(jMenu5);
        jMenuBar.add(jMenu6);
        jMenuBar.add(jMenu7);
        jMenuBar.add(jMenu8);
        jMenuBar.add(jMenu9);
        jMenuBar.add(jMenu10);
    }


    @Override
    public void actionPerformed(ActionEvent e) {

    }

    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }

    @Override
    public void run() {

    }





    public static void main(String sd[]) {
        SSOSumMetalTool.setWindowStyle(SSOSystemIni.getIniKey("Sys_style").charAt(0));
        HotelMainFrame hotelMainFrame = new HotelMainFrame("杨洋哥", "管理员");
        // 设置窗体透明度
        AWTUtilities.setWindowOpacity(hotelMainFrame, 0.95f);
        // 设置窗体透明
        //AWTUtilities.setWindowOpacity(hotelMainFrame, 0.51f);
    }

}


                                           

                                               -------------特效雨滴--------------------

package org.jd.data.netty.big.window.chat.frame.ui.room.main;

import org.jd.data.netty.big.window.chat.frame.ui.controller.center.SSOControllerCenterManager;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Point2D;

/**
 * 左侧底部面板
 */
public class HotelMainLeftBottomPanel extends JPanel implements ActionListener, MouseListener, FocusListener ,Runnable{

    private SSOControllerCenterManager ssoControllerCenterManager = SSOControllerCenterManager.newInstance();
    // 控制雨滴密度啊
    private volatile Point2D.Double[] pts = new Point2D.Double[2000];
    public HotelMainLeftBottomPanel(){
        this.setBackground(Color.WHITE);
        this.setOpaque(false); //把panel的背景色设为透明
        for (int i = 0; i < pts.length; i++) {
            pts[i] = new Point2D.Double(Math.random(), Math.random());
        }
        ssoControllerCenterManager.getExecutorService().submit(this);
    }



    @Override
    public void actionPerformed(ActionEvent e) {

    }

    @Override
    public void focusGained(FocusEvent e) {

    }

    @Override
    public void focusLost(FocusEvent e) {

    }

    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D graphics2D = (Graphics2D) g;
        // 控制雨滴颜色
        // 随机的颜色,不超过255,在for循环中绘制
        for (int i = 0; i < pts.length; i++) {
            graphics2D.setColor(new Color((int) (250 * Math.random()), (int) (255 * Math.random()), (int) (25 * Math.random())));
            int x = (int) (2340 * pts[i].x);
            int y = (int) (1480 * pts[i].y);
            // 控制雨点的长度
            int h = (int) (100 * Math.random());
            //System.out.println("随机数:"+255*Math.random());
            // 条件不同的参数会得到不同的效果
            //graphics2D.drawLine(x, y, (x+y-500), y+h);
            graphics2D.drawLine(x, y, x, y + h); // 竖直向下
            //graphics2D.setColor(Color.BLACK);
            //graphics2D.setFont(new Font("宋体",Font.BOLD,14));
            //graphics2D.drawString("天空飘来两个字,那都不是事",x, y-250);
        }
    }

    @Override
    public void run() {
        while (true) {
            for (int i = 0; i < pts.length; i++) {
                double x = pts[i].getX();
                double y = pts[i].getY();
                y += 0.1 * Math.random();
                if (y > 1) {
                    y = 0.3 * Math.random();
                    x = Math.random();
                }
                pts[i].setLocation(x, y);
            }
            this.repaint();
            try {
                Thread.sleep(100);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }
}

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

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

相关文章

Docker 数据管理及网络通信 Dockerfile

一、Docker 的数据管理 管理 Docker 容器中数据主要有两种方式&#xff1a;数据卷&#xff08;Data Volumes&#xff09;和数据卷容器&#xff08;DataVolumes Containers&#xff09;。 1、数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目…

华为OD机试真题 Java 实现【阿里巴巴找黄金宝箱(II)】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路1、题目关键点&#xff1a;2、大白话的意思就是3、比如4、思路这不就来了 五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于…

STM32单片机蓝牙APP语音识别智能记忆汽车按摩座椅加热通风儿童座椅

实践制作DIY- GC00160---智能记忆汽车按摩座椅 一、功能说明&#xff1a; 基于STM32单片机设计---智能记忆汽车按摩座椅 二、功能说明&#xff1a; 电路组成&#xff1a;STM32F103CXT6最小系统LD3322语音识别模块OLED显示3个ULN2003步进电机&#xff08;分别对应 前后距离、座…

小学期笔记——天天酷跑1

文件快照&#xff08;File snapshot&#xff09;通常是指对文件系统中某个特定时间点的文件或文件夹的快照或副本。它记录了文件或文件夹在某一时刻的状态&#xff0c;包括文件的内容、属性、权限、位置等信息。 文件快照通常用于数据备份、恢复和版本控制等目的。通过捕捉文件…

Stable-Diffusion-Webui部署SDXL0.9报错参数shape不匹配解决

问题 已经在model/stable-diffusion文件夹下放进去了sdxl0.9的safetensor文件&#xff0c;但是在切换model的时候&#xff0c;会报错model的shape不一致。 解决方法 git pullupdate一些web-ui项目就可以&#xff0c;因为当前项目太老了&#xff0c;没有使用最新的版本。

Windows10 任务栏图标的控制

文章目录 前言一、任务栏系统图标设置二、任务栏应用软件图标设置总结前言 在windows系统中,有一个常用功能,那就是在任务栏上图标化加载一些应用。为特殊目的,我们可以把一些常用软件启动后以图标形式摆放任务栏的右下角(例如QQ,微信)。不同的Window版本有不同的任务栏…

最受欢迎的12个Python开源框架,还没用过你就OUT了!!!

今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架。如果你正在学习python&#xff0c;那么这12个开源框架&#xff0c;千万别错过&#xff0c;这些框架包括事件I/O&#xff0c;OLAP&#xff0c;Web开发&#xff0c;高性能网络通信&#xff0c;测试&#xff0…

【Redis】如何实现一个合格的分布式锁

文章目录 参考1、概述2、Redis粗糙实现3、遗留问题3.1、误删情况3.2、原子性保证3.3、超时自动解决3.4、总结 4、Redis实现优缺5、集群问题5.1、主从集群5.2、集群脑裂 6、RedLock7、Redisson7.1、简单实现7.2、看门狗机制 参考 Redisson实现Redis分布式锁的N种姿势 (qq.com)小…

第六章 复合查询

第六章 复合查询 一、前言二、笛卡尔积三、多表查询1、多表查询的理解2、笛卡尔积与多表拼接3、多表查询示例&#xff08;1&#xff09;显示雇员名、雇员工资以及所在部门的名字&#xff08;2&#xff09;显示部门号为10的部门名&#xff0c;员工名和工资&#xff08;3&#xf…

力扣热门100题之缺失的第一个正数【困难】

题目描述 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1…

Linux学习之while循环和until循环

while while的格式如下&#xff1a; while 条件表达式 do指令集 done若是条件表达式为真&#xff0c;那么才能执行do和done之间的指令集。若是第一次都不符合条件&#xff0c;就不会执行指令集。每次循环都会判断条件表达式&#xff0c;只要不符合&#xff0c;就会退出循环。…

【前端学JAVA】java的基础语法

theme: cyanosis 作为一个前端程序员&#xff0c;其发展前途是远不及后端程序员的。因此&#xff0c;只有了解后端&#xff0c;才能让自己更加具备核心竞争力。本系列教程将以一个前端程序员的角度快速学习JAVA。 新建项目 开发JAVA程序&#xff0c;我们第一步是使用IDEA新建…

VAE-根据李宏毅视频总结的最通俗理解

1.VAE的直观理解 先简单了解一下自编码器&#xff0c;也就是常说的Auto-Encoder。Auto-Encoder包括一个编码器&#xff08;Encoder&#xff09;和一个解码器&#xff08;Decoder&#xff09;。其结构如下&#xff1a; 自编码器是一种先把输入数据压缩为某种编码, 后仅通过该编…

CMU 15-445 -- Timestamp Ordering Concurrency Control - 15

CMU 15-445 -- Timestamp Ordering Concurrency Control - 15 引言Basic T/OBasic T/O ReadsBasic T/O WritesBasic T/O - Example #1Basic T/O - Example #2 Basic T/O SummaryRecoverable Schedules Optimistic Concurrency Control (OCC)OCC - ExampleSERIAL VALIDATIONOCC …

Linux:ELK:日志分析系统(使用elasticsearch集群)

原理 1. 将日志进行集中化管理&#xff08;beats&#xff09; 2. 将日志格式化&#xff08;logstash&#xff09; 将其安装在那个上面就对那个进行监控 3. 对格式化后的数据进行索引和存储&#xff08;elasticsearch&#xff09; 4. 前端数据的展示&#xff08;kibana&…

【MySQL】基本查询(表的增删查改)

目录 一、插入操作 --- insert1.1 单行指定列插入&&单行全列插入1.2 多行指定列插入&&多行全列插入1.3 插入否则更新 duplicate key update1.4 删除并替换 replace 二、查询操作 --- select2.1 基本查询2.2 where条件2.3 案例演示2.4 排序&#xff08;order by…

HDFS异构存储详解

异构存储 HDFS异构存储类型什么是异构存储异构存储类型如何让HDFS知道集群中的数据存储目录是那种类型存储介质 块存储选择策略选择策略说明选择策略的命令 案例&#xff1a;冷热温数据异构存储对应步骤 HDFS内存存储策略支持-- LAZY PERSIST介绍执行使用 HDFS异构存储类型 冷…

【代码随想录day20】二叉搜索树的最小绝对差

题目 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 思路 最简单的一个思路是使用中序遍历&#xff0c;从二叉排序树中得到有序序列&#xff0c;存储到self.elem中&…

静态 链接

1、空间与地址的分配 现在的链接器空间分配的策略基本上都采用 “相似段合并” 的方式。通过将所有相同类型的 section 合并到一起&#xff0c;例如将所有输入目标文件的 .text 合并&#xff08;按顺序合并&#xff09;到输出文件的 .text 节中&#xff1b;然后&#xff0c;链接…

EasyExcel实现多sheet excel导出

EasyExcel简介 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行&#xff0c;但是一旦并发上来后一定会OOM或 者JVM频繁的full gc。 EasyExcel是阿里巴巴开源的一个excel处理框架…