最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Java實(shí)現(xiàn)2048小游戲代碼實(shí)例

 更新時(shí)間:2023年10月30日 10:33:48   作者:有人_295  
這篇文章主要介紹了使用Java實(shí)現(xiàn)2048小游戲代碼實(shí)例,2048 游戲是一款益智類游戲,玩家需要通過合并相同數(shù)字的方塊,不斷合成更大的數(shù)字,最終達(dá)到2048,游戲規(guī)則簡(jiǎn)單,但挑戰(zhàn)性很高,需要玩家靈活運(yùn)用策略和計(jì)算能力,本文將使用Java代碼實(shí)現(xiàn),需要的朋友可以參考下

一、框架

在這里插入圖片描述

就以個(gè) 2 維數(shù)組,4 個(gè)方向進(jìn)行加法 在空白位置出現(xiàn)隨機(jī)的 2 就行了

二、代碼

1、ConstantValue.java(封裝常量)

import java.awt.Color;
/*
 * 封裝常量
 * WID:邊長(zhǎng)
 * SP:間隔
 * lable:各種數(shù)字
 * clo:對(duì)應(yīng)數(shù)字顏色
 * */
public class ConstantValue {
    private static final int WID = 150;
    private static final int SP = 10;
    private static final int[] label = { 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};
    private static final Color[] clo = {
            new Color(200, 200, 200), 
            new Color(228, 228, 160),
            new Color(214, 163, 92), 
            new Color(234, 124, 72),
            new Color(240, 84, 77), 
            new Color(255, 68, 53),
            new Color(200, 200, 64),
            new Color(0, 0, 255),
            new Color(0, 255, 0),
            new Color(255, 0, 0),
            new Color(100, 100, 100),
        };
	public static int getWid() {
		return WID;
	}
	public static int getSp() {
		return SP;
	}
	public static int[] getLabel() {
		return label;
	}
	public static Color[] getClo() {
		return clo;
	}
}

2、Game2048.java

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Game2048 extends JApplet {
	private int scores = 0;
    private int best = 0;
    private boolean change;
    private boolean CheckMode = false;
    private boolean gameOverFlag = false;
    private boolean successFlag = false;
    private static JLabel scoreLabel;
    private static My2048Panel myp;
    private static JButton goBackButton;
    public static RectObject[][] rset = new RectObject[4][4];
    private Map<Integer, Color> cmap = new HashMap<Integer, Color>();
    public RectObject[][] list = new RectObject[4][4];
    private LinkedList<ArrayList<Integer>> saveList = new LinkedList<ArrayList<Integer>>();
    KeyListener kl = new KeyListener() {
            public void keyPressed(KeyEvent e) {
                saveTheStep();
                goBackButton.setVisible(true);
                if (gameOverFlag == true) {
                    return;
                }
                if (!aDirAble()) {
                    gameOver();
                }
                int key = e.getKeyCode();
                switch (key) {
                case KeyEvent.VK_UP:
                    change = false;
                    moveUp(true);
                    if (change == true) {
                        getARandomRect();
                        //saveTheStep();
                    }
                    break;
                case KeyEvent.VK_DOWN:
                    change = false;
                    moveDown(true);
                    if (change == true) {
                        getARandomRect();
                        //saveTheStep();
                    }
                    break;
                case KeyEvent.VK_LEFT:
                    change = false;
                    moveLeft(true);
                    if (change == true) {
                        getARandomRect();
                        //saveTheStep();
                    }
                    break;
                case KeyEvent.VK_RIGHT:
                    change = false;
                    moveRight(true);
                    if (change == true) {
                        getARandomRect();
                        //saveTheStep();
                    }
                    break;
                }
                //saveTheStep();
            }
            public void keyTyped(KeyEvent e) {
            }
            public void keyReleased(KeyEvent e) {
            }
        };
    public Game2048() {
        //saveTheStep();
        for (int i = 0; i < 11; i++) {
            cmap.put(ConstantValue.getLabel()[i], ConstantValue.getClo()[i]);
        }
    }
    //the applet init
    public void init() {
        Container cp = getContentPane();
        cp.setLayout(null);
        cp.setFocusable(true);
        cp.addKeyListener(kl);
        Font font = new Font("TimesNewman", Font.BOLD, 30);
        JLabel sl = new JLabel();
        sl.setLayout(new GridLayout(2, 1));
        JLabel sllb = new JLabel("Scores");
        sllb.setFont(font);
        scoreLabel = new JLabel("0");
        scoreLabel.setFont(font);
        sl.add(sllb);
        sl.add(scoreLabel);
        try {
            File file = new File("BestRecord");
            if (file.exists()) {
                RandomAccessFile f = new RandomAccessFile(file, "rw");
                f.seek(0);
                best = f.readInt();
                f.close();
            }
        } catch (FileNotFoundException e) {
            best = 0;
            e.printStackTrace();
        } catch (IOException e) {
            best = 0;
            e.printStackTrace();
        }
        JLabel bsl = new JLabel();
        bsl.setLayout(new GridLayout(2, 1));
        JLabel jl = new JLabel("Best");
        jl.setFont(font);
        JLabel jl1 = new JLabel("" + best);
        jl1.setFont(font);
        bsl.add(jl);
        bsl.add(jl1);
        myp = new My2048Panel();
        LOGO logo = new LOGO(0, 0);
        goBackButton = new JButton("UNDO");
        goBackButton.setFont(font);
        goBackButton.addActionListener(new goBackListener());
        goBackButton.addKeyListener(kl);
        JButton jb = new JButton("RESET");
        jb.setFont(font);
        jb.addActionListener(new resetListener());
        jb.addKeyListener(kl);
        sl.setBounds(500, 20, 200, 80);
        bsl.setBounds(300, 20, 200, 80);
        logo.setBounds(0, 0, 600, 100);
        myp.setBounds(0, 90, 700, 700);
        goBackButton.setBounds(700, 250, 150, 60);
        jb.setBounds(700, 450, 150, 60);
        cp.add(sl);
        cp.add(bsl);
        cp.add(logo);
        cp.add(myp);
        cp.add(goBackButton);
        cp.add(jb);
        File f = new File("LastRecord");
        if (f.exists()) {
            try {
                RandomAccessFile file = new RandomAccessFile(f, "rw");
                int num = file.readInt();
                scoreLabel.setText("" + num);
                for (int i = 0; i < 4; i++) {
                    for (int j = 0; j < 4; j++) {
                        num = file.readInt();
                        if (num != 0) {
                            rset[i][j] = new RectObject();
                            rset[i][j].value = num;
                        }
                    }
                }
                file.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            getARandomRect();
            getARandomRect();
        }
    }
    //moveLeft
    public void moveLeft(boolean flag) {
        clearList(list);
        for (int i = 0; i < 4; i++) {
            int k = 0;
            for (int j = 0; j < 4; j++) {
                if (rset[i][j] != null) {
                    list[i][k++] = new RectObject(rset[i][j]);
                }
            }
        }
        for (int i = 0; (i < 4) && flag; i++) {
            for (int j = 0; j < 3; j++) {
                if ((list[i][j] != null) && (list[i][j + 1] != null) &&
                        (list[i][j].value == list[i][j + 1].value)) {
                    list[i][j].value *= 2;
                    if (CheckMode == false) {
                        int sum = Integer.parseInt(scoreLabel.getText());
                        sum += list[i][j].value;
                        scoreLabel.setText("" + sum);
                    }
                    list[i][j + 1] = null;
                    j++;
                }
            }
        }
        if (isChange()) {
            if (CheckMode == false) {
                copySet(rset, list);
                repaint();
                moveLeft(false);
            }
            change = true;
        } else {
            repaint();
        }
    }
    //moveRight
    public void moveRight(boolean flag) {
        clearList(list);
        for (int i = 0; i < 4; i++) {
            int k = 3;
            for (int j = 3; j > -1; j--) {
                if (rset[i][j] != null) {
                    list[i][k--] = new RectObject(rset[i][j]);
                }
            }
        }
        for (int i = 0; (i < 4) && flag; i++) {
            for (int j = 3; j > 0; j--) {
                if ((list[i][j] != null) && (list[i][j - 1] != null) &&
                        (list[i][j].value == list[i][j - 1].value)) {
                    list[i][j].value *= 2;
                    if (CheckMode == false) {
                        int sum = Integer.parseInt(scoreLabel.getText());
                        sum += list[i][j].value;
                        scoreLabel.setText("" + sum);
                    }
                    list[i][j - 1] = null;
                    j--;
                }
            }
        }
        if (isChange()) {
            if (CheckMode == false) {
                copySet(rset, list);
                repaint();
                moveRight(false);
            }
            change = true;
        } else {
            repaint();
        }
    }
    //moveup
    public void moveUp(boolean flag) {
        clearList(list);
        for (int j = 0; j < 4; j++) {
            int k = 0;
            for (int i = 0; i < 4; i++) {
                if (rset[i][j] != null) {
                    list[k++][j] = new RectObject(rset[i][j]);
                }
            }
        }
        for (int j = 0; (j < 4) && flag; j++) {
            for (int i = 0; i < 3; i++) {
                if ((list[i][j] != null) && (list[i + 1][j] != null) &&
                        (list[i][j].value == list[i + 1][j].value)) {
                    list[i][j].value *= 2;
                    if (CheckMode == false) {
                        int sum = Integer.parseInt(scoreLabel.getText());
                        sum += list[i][j].value;
                        scoreLabel.setText("" + sum);
                    }
                    list[i + 1][j] = null;
                    i++;
                }
            }
        }
        if (isChange()) {
            if (CheckMode == false) {
                copySet(rset, list);
                repaint();
                moveUp(false);
            }
            change = true;
        } else {
            repaint();
        }
    }
    //movedown
    public void moveDown(boolean flag) {
        clearList(list);
        for (int j = 0; j < 4; j++) {
            int k = 3;
            for (int i = 3; i > -1; i--) {
                if (rset[i][j] != null) {
                    list[k--][j] = new RectObject(rset[i][j]);
                }
            }
        }
        for (int j = 0; (j < 4) && flag; j++) {
            for (int i = 3; i > 0; i--) {
                if ((list[i][j] != null) && (list[i - 1][j] != null) &&
                        (list[i][j].value == list[i - 1][j].value)) {
                    list[i][j].value *= 2;
                    if (CheckMode == false) {
                        int sum = Integer.parseInt(scoreLabel.getText());
                        sum += list[i][j].value;
                        scoreLabel.setText("" + sum);
                    }
                    list[i - 1][j] = null;
                    i--;
                }
            }
        }
        if (isChange()) {
            if (CheckMode == false) {
                copySet(rset, list);
                repaint();
                moveDown(false);
            }
            change = true;
        } else {
            repaint();
        }
    }
    //other functions
    private void copySet(RectObject[][] dst, RectObject[][] src) {
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                dst[i][j] = src[i][j];
            }
        }
    }
    //detect whether rset is different from list or not 
    private boolean isChange() {
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                if ((rset[i][j] != null) && (list[i][j] != null) && !rset[i][j].equals(list[i][j])) {
                    return true;
                }
                if ((rset[i][j] != null) && (list[i][j] == null)) {
                    return true;
                }
                if ((rset[i][j] == null) && (list[i][j] != null)) {
                    return true;
                }
            }
        }
        return false;
    }
    private void clearList(RectObject[][] s) {
        for (int i = 0; i < s.length; i++) {
            for (int j = 0; j < s[i].length; j++) {
                s[i][j] = null;
            }
        }
    }
    //get a random rectangle
    public void getARandomRect() {
        ArrayList<Point> list = new ArrayList<Point>();
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                if (rset[i][j] == null) {
                    list.add(new Point(i, j));
                }
            }
        }
        if ((list.size() == 0) && !aDirAble()) {
            gameOver();
            return;
        }
        Random rand = new Random();
        int index = rand.nextInt(list.size());
        Point loc = (Point) list.get(index);
        index = rand.nextInt(2);
        rset[loc.x][loc.y] = new RectObject();
        if (index == 1) {
            rset[loc.x][loc.y].value = 4;
        } else {
            rset[loc.x][loc.y].value = 2;
        }
    }
    //detect whether there are other steps or not
    public boolean aDirAble() {
        CheckMode = true;
        change = false;
        moveLeft(true);
        moveRight(true);
        moveDown(true);
        moveUp(true);
        CheckMode = false;
        if (change == true) {
            return true;
        } else {
            return false;
        }
    }
    public void gameOver() {
        gameOverFlag = true;
        JPanel jl = new GameOverPane(myp.getWidth(), myp.getHeight());
        jl.setBounds(0, 0, 700, 700);
        JButton jb1 = new JButton("Again");
        Font font = new Font("TimesRoman", Font.BOLD, 30);
        jb1.setOpaque(false);
        jb1.setFont(font);
        JButton jb2 = new JButton("Close");
        jb2.setSize(jb1.getSize());
        jb2.setOpaque(false);
        jb2.setFont(font);
        //保存最高分,分?jǐn)?shù)重置
        jb1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    refreshBest();
                    scoreLabel.setText("0");
                    myp.remove(jl);
                    clearList(rset);
                    myp.validate();
                    getARandomRect();
                    getARandomRect();
                    repaint();
                    gameOverFlag = false;
                }
            });
        //保存最后結(jié)果
        jb2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    refreshBest();
                    File f = new File("LastRecord");
                    if (f.exists()) {
                        f.delete();
                    }
                    System.exit(0);
                }
            });
        jl.add(jb1);
        jl.add(jb2);
        myp.add(jl);
        jl.validate();
    }
    public void gameSuccess() {
        JPanel jl = new SuccessPane(myp.getWidth(), myp.getHeight());
        jl.setOpaque(false);
        jl.setBounds(0, 0, 700, 700);
        JButton jb1 = new JButton("Continue");
        Font font = new Font("TimesRoman", Font.BOLD, 30);
        jb1.setOpaque(false);
        jb1.setFont(font);
        JButton jb2 = new JButton("Close");
        jb2.setSize(jb1.getSize());
        jb2.setOpaque(false);
        jb2.setFont(font);
        jb1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    myp.remove(jl);
                    myp.validate();
                    repaint();
                }
            });
        jb2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    refreshBest();
                    System.exit(0);
                }
            });
        jl.add(jb1);
        jl.add(jb2);
        myp.add(jl);
        jl.validate();
    }
    public void saveTheStep() {
        if (saveList.size() < 20) {
            ArrayList<Integer> arr = new ArrayList<Integer>();
            int score = Integer.parseInt(scoreLabel.getText());
            arr.add(score);
            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 4; j++) {
                    if (rset[i][j] != null) {
                        arr.add(rset[i][j].value);
                    } else {
                        arr.add(0);
                    }
                }
            }
            saveList.addLast(arr);
        } else {
            saveList.removeFirst();
            saveTheStep();
        }
    }
    public static String title(Object o) {
        String t = o.getClass().toString();
        if (t.indexOf("class") != -1) {
            t = t.substring(6);
        }
        return t;
    }
    public static void refreshBest() {
        try {
            int best;
            File f = new File("BestRecord");
            RandomAccessFile file;
            if (f.exists()) {
                file = new RandomAccessFile(f, "rw");
                best = file.readInt();
            } else {
                file = new RandomAccessFile(f, "rw");
                best = 0;
            }
            //			System.out.println("The Best score is "+best);
            int cur = Integer.parseInt(scoreLabel.getText());
            if (cur > best) {
                file.seek(0);
                file.writeInt(cur);
            }
            file.close();
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        } catch (IOException e2) {
            e2.printStackTrace();
        }
    }
    public static void saveRecord() {
        try {
            RandomAccessFile file = new RandomAccessFile(new File("LastRecord"),
                    "rw");
            int score = Integer.parseInt(scoreLabel.getText());
            file.writeInt(score);
            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 4; j++) {
                    if (rset[i][j] != null) {
                        file.writeInt(rset[i][j].value);
                    } else {
                        file.writeInt(0);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void run(JApplet applet, int width, int height) {
        JFrame frame = new JFrame(title(applet));
        frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    saveRecord();
                    refreshBest();
                    //System.out.println("The score is "+scoreLabel.getText());
                }
            });
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(applet);
        frame.setSize(width, height);
        applet.init();
        applet.start();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        run(new Game2048(), 900, 800);
    }
    class RectObject {
        private int value;
        public RectObject() {
            value = 0;
        }
        public RectObject(RectObject obj) {
            value = obj.value;
        }
        public boolean equals(Object inobj) {
            RectObject obj = (RectObject) inobj;
            if (obj.value == value) {
                return true;
            }
            return false;
        }
    }
    class Point {
        int x;
        int y;
		public Point(int i, int j) {
            x = i;
            y = j;
        }
    }
    class My2048Panel extends JPanel {
        private int[] xindex = {
        		ConstantValue.getSp(), 
        		(2 * ConstantValue.getSp()) + ConstantValue.getWid(), 
        		(3 * ConstantValue.getSp()) + (2 * ConstantValue.getWid()), 
        		(4 * ConstantValue.getSp()) + (3 * ConstantValue.getWid())
            };
        private int[] yindex = {
                ConstantValue.getSp(), 
                (2 * ConstantValue.getSp()) + ConstantValue.getWid(), 
                (3 * ConstantValue.getSp()) + (2 * ConstantValue.getWid()), 
                (4 * ConstantValue.getSp()) + (3 * ConstantValue.getWid())
            };
        public void paintComponent(Graphics g) {
            //background
            super.paintComponent(g);
            for (int i = 0; i < xindex.length; i++) {
                for (int j = 0; j < yindex.length; j++) {
                    g.setColor(Color.WHITE);
                    g.drawRoundRect(
                    		xindex[i], yindex[j], 
                    		ConstantValue.getWid(), ConstantValue.getWid(), 
                    		ConstantValue.getWid() / 5, ConstantValue.getWid() / 5);
                    g.setColor(new Color(197, 183, 129));
                    g.fillRoundRect(
                    		xindex[i], yindex[j], 
                    		ConstantValue.getWid(), ConstantValue.getWid(), 
                    		ConstantValue.getWid() / 5, ConstantValue.getWid() / 5);
                }
            }
            //paint rectangle
            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 4; j++) {
                    if (rset[i][j] != null) {
                        g.setColor(Color.WHITE);
                        g.drawRoundRect(yindex[j], xindex[i], ConstantValue.getWid(), ConstantValue.getWid(),
                            ConstantValue.getWid() / 5, ConstantValue.getWid() / 5);
                        //各數(shù)字顏色
                        g.setColor((Color) cmap.get(rset[i][j].value));
                        g.fillRoundRect(yindex[j], xindex[i], ConstantValue.getWid(), ConstantValue.getWid(),
                            ConstantValue.getWid() / 5, ConstantValue.getWid() / 5);
                        g.setColor(Color.BLACK);
                        Font font = new Font("TimesRoman", Font.BOLD, 50);
                        g.setFont(font);
                        FontMetrics fm = Toolkit.getDefaultToolkit().getFontMetrics(font);
                        int len = fm.stringWidth("" + rset[i][j].value);
                        int hg = fm.getHeight();
                        g.drawString("" + rset[i][j].value,
                            (yindex[j] + (ConstantValue.getWid() / 2)) - (len / 2), xindex[i] + (ConstantValue.getWid() / 2) + (hg / 4));
                        if ((rset[i][j].value == 2048) && (successFlag == false)) {
                            successFlag = true;
                            gameSuccess();
                        }
                    }
                }
            }
        }
    }
    class GameOverPane extends JPanel {
        public GameOverPane(int w, int h) {
            setSize(w, h);
        }
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Font font = new Font("TimesRoman", Font.BOLD, 80);
            g.setFont(font);
            FontMetrics fm = Toolkit.getDefaultToolkit().getFontMetrics(font);
            int width = fm.stringWidth("Game Over");
            int height = fm.getHeight();
            g.setColor(new Color(255, 0, 0));
            g.drawString("Game Over!", (getWidth() / 2) - (width / 2),
                (getHeight() / 2) - (height / 2));
        }
    }
    class SuccessPane extends JPanel {
        public SuccessPane(int w, int h) {
            setSize(w, h);
        }
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Font font = new Font("TimesRoman", Font.BOLD, 80);
            g.setFont(font);
            FontMetrics fm = Toolkit.getDefaultToolkit().getFontMetrics(font);
            int width = fm.stringWidth("Success!");
            int height = fm.getHeight();
            g.setColor(new Color(255, 0, 0));
            g.drawString("Success!", (getWidth() / 2) - (width / 2),
                (getHeight() / 2) - (height / 2));
        }
    }
    class LOGO extends JPanel {
        public LOGO(int w, int h) {
            setSize(w, h);
        }
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Font font = new Font("TimesRoman", Font.BOLD, 60);
            g.setFont(font);
            FontMetrics fm = Toolkit.getDefaultToolkit().getFontMetrics(font);
            int width = fm.stringWidth("2048");
            int height = fm.getHeight();
            g.setColor(new Color(255, 0, 0));
            g.drawString("2048", 20, (getHeight() / 2) + 20);
        }
    }
    public class goBackListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            if (saveList.size() == 0) {
                goBackButton.setVisible(false);
                return;
            }
            ArrayList arr = (ArrayList) saveList.getLast();
            scoreLabel.setText("" + arr.get(0));
            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 4; j++) {
                    int num = (int) arr.get((4 * i) + j + 1);
                    if (num != 0) {
                        rset[i][j] = new RectObject();
                        rset[i][j].value = num;
                    } else {
                        rset[i][j] = null;
                    }
                }
            }
            saveList.removeLast();
            repaint();
        }
    }
    public class resetListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            refreshBest();
            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 4; j++) {
                    rset[i][j] = null;
                }
            }
            scoreLabel.setText("0");
            repaint();
            getARandomRect();
            getARandomRect();
        }
    }
}

三、界面

在這里插入圖片描述

到此這篇關(guān)于使用Java實(shí)現(xiàn)2048小游戲代碼實(shí)例的文章就介紹到這了,更多相關(guān)Java實(shí)現(xiàn)2048小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java中的Vector

    詳解Java中的Vector

    Vector 可實(shí)現(xiàn)自動(dòng)增長(zhǎng)的對(duì)象數(shù)組。本文通過實(shí)例代碼給大家詳細(xì)介紹java中的vector,感興趣的朋友一起看看吧
    2017-10-10
  • 在SpringBoot中,如何使用Netty實(shí)現(xiàn)遠(yuǎn)程調(diào)用方法總結(jié)

    在SpringBoot中,如何使用Netty實(shí)現(xiàn)遠(yuǎn)程調(diào)用方法總結(jié)

    我們?cè)谶M(jìn)行網(wǎng)絡(luò)連接的時(shí)候,建立套接字連接是一個(gè)非常消耗性能的事情,特別是在分布式的情況下,用線程池去保持多個(gè)客戶端連接,是一種非常消耗線程的行為.那么我們?cè)撏ㄟ^什么技術(shù)去解決上述的問題呢,那么就不得不提一個(gè)網(wǎng)絡(luò)連接的利器——Netty,需要的朋友可以參考下
    2021-06-06
  • Java定時(shí)任務(wù)Schedule的基本用法及Cron表達(dá)式實(shí)踐記錄

    Java定時(shí)任務(wù)Schedule的基本用法及Cron表達(dá)式實(shí)踐記錄

    本文介紹了Spring框架提供的@Scheduled注解和cron表達(dá)式在Java定時(shí)任務(wù)中的應(yīng)用,詳細(xì)講解了基礎(chǔ)配置、Cron表達(dá)式解析以及進(jìn)階用法和注意事項(xiàng),感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • SpringBoot集成Easy-Es的實(shí)戰(zhàn)操作指南

    SpringBoot集成Easy-Es的實(shí)戰(zhàn)操作指南

    Easy-ES(簡(jiǎn)稱EE)是一款基于 Elasticsearch 官方 RestHighLevelClient 封裝的 ORM 框架,本文將簡(jiǎn)單介紹一下Easy-ES的具體使用,需要的可以了解下
    2025-08-08
  • Java內(nèi)省實(shí)例解析

    Java內(nèi)省實(shí)例解析

    這篇文章主要介紹了Java內(nèi)省實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Java中如何將?int[]?數(shù)組轉(zhuǎn)換為?ArrayList(list)

    Java中如何將?int[]?數(shù)組轉(zhuǎn)換為?ArrayList(list)

    這篇文章主要介紹了Java中將?int[]?數(shù)組?轉(zhuǎn)換為?List(ArrayList),本文通過示例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • JDBC環(huán)境設(shè)置(中文詳解)

    JDBC環(huán)境設(shè)置(中文詳解)

    要開始使用JDBC設(shè)置,按照以下所示的步驟開發(fā)JDBC環(huán)境。以下內(nèi)容假設(shè)Windows平臺(tái)上
    2014-03-03
  • Spring Boot企業(yè)常用的starter示例詳解

    Spring Boot企業(yè)常用的starter示例詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot企業(yè)常用starter的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java定時(shí)任務(wù)schedule和scheduleAtFixedRate的異同

    Java定時(shí)任務(wù)schedule和scheduleAtFixedRate的異同

    本文主要介紹了Java定時(shí)任務(wù)schedule和scheduleAtFixedRate的異同,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java Excel文件加密保護(hù)數(shù)據(jù)安全

    Java Excel文件加密保護(hù)數(shù)據(jù)安全

    這篇文章主要為大家介紹了Java Excel文件加密保護(hù)數(shù)據(jù)安全的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10

最新評(píng)論

凭祥市| 河东区| 西青区| 仁化县| 乌兰浩特市| 阿坝| 永善县| 阜城县| 红桥区| 信宜市| 萨迦县| 余庆县| 福建省| 交口县| 井陉县| 临夏县| 崇信县| 黄平县| 胶州市| 武强县| 江达县| 伊春市| 六枝特区| 磐石市| 莱芜市| 德昌县| 乌鲁木齐县| 全州县| 夏河县| 麦盖提县| 舞阳县| 迁西县| 信丰县| 余干县| 云浮市| 黄石市| 措勤县| 永兴县| 淮北市| 敦化市| 容城县|