JAVA图片浏览器的音乐播放,在切换下一首歌的时候,当前的歌还在播放,怎么解决?

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import java.awt.*;

public class HOME extends JFrame implements ActionListener, ListSelectionListener {
double height;
JLabel imageview = new JLabel();

JButton b1 = new JButton();
JButton profile_photo = new JButton();

JButton switch1 = new JButton("<");
JButton switch2 = new JButton(">");
JButton First = new JButton("首张");
JButton Last = new JButton("末张");
ImageIcon icon1 = null;
ImageIcon icon2 = null;

JPanel North = new JPanel();
JPanel South = new JPanel();
JPanel Center = new JPanel();
JPanel West = new JPanel();
JPanel East = new JPanel();
JFileChooser chooser = new JFileChooser();
JMenuBar menuBar = new JMenuBar();

JTextArea phototext = new JTextArea();
String photo_name;

// 文件列表
String Path = "./image";
File file = new File(Path);
File[] list = file.listFiles();
int index = 0;
/// 音乐播放
//音乐文件列表
String musicPath = "./music";
File musicfile = new File(musicPath);
File[] musiclist = musicfile.listFiles();
int index_music = 0;

JButton play = new JButton("播放");
JButton stop = new JButton("停止");
JButton playlast = new JButton("|<");
JButton playnext = new JButton(">|");
boolean isPlaying = false;
boolean isRestart = false;

Audio audio = new Audio();
// 菜单项
JMenuItem choosephoto = new JMenuItem("打开图片");

//图片列表
private String[] lists = { "111","222","333","444","555","666","777","888","999"};
JList photolist = new JList(list);

public HOME() {
    // 框架设置


    setTitle("图片浏览器");
    setLocation(300, 100);
    setSize(1300, 900);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
    setLayout(new BorderLayout());

    //图片列表
    photolist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    JScrollPane scrollpane = new JScrollPane(photolist);
    scrollpane .setPreferredSize(new Dimension(100,500)); //滚动条的大小即可调整列表长宽,如果想再加入一条横向滚动条,可设置列表的preferredSize

    // 组件添加
    North.setLayout(new BorderLayout());
    // 此处没有设置South的布局,因为设置后再将South面板放入框架中时,发现三个按钮无法全部加入,只能加入最后一个
    Center.setLayout(new BorderLayout());

    North.add(menuBar);
    add(North, BorderLayout.NORTH);
    Center.add(imageview);
    add(Center, BorderLayout.CENTER);
    West.add(scrollpane); //此处只需加入滚动条即可。不需要再加入photolist
    South.add(play);
    South.add(stop);
    South.add(playlast);
    South.add(playnext);
    South.add(switch1);
    South.add(switch2);
    South.add(First);
    South.add(Last);
    add(South, BorderLayout.SOUTH);
    add(East, BorderLayout.EAST);
    add(West, BorderLayout.WEST);

    // 监听器添加
    switch1.addActionListener(this);
    switch2.addActionListener(this);
    First.addActionListener(this);
    Last.addActionListener(this);
    play.addActionListener(this);
    stop.addActionListener(this);
    playlast.addActionListener(this);
    playnext.addActionListener(this);
    photolist.addListSelectionListener(this);


    // 图像设置
    // 头像/
    ImageIcon image_local1 = new ImageIcon("./image/头像.jpg");
    Image imageget1 = image_local1.getImage();
    Image finalimage1 = imageget1.getScaledInstance(100, 100, Image.SCALE_AREA_AVERAGING);
    icon1 = new ImageIcon(finalimage1);
    // 图片/

    // 组件设置
    lb1.setFont(new Font("宋体", Font.BOLD, 20));
    b1.setIcon(icon1);
    switch1.setVisible(true);
    switch2.setVisible(true);
    imageview.setIcon(icon2);
    imageview.setBounds(50, 50, 500, 500);
    phototext.setFont(new Font("宋体", Font.BOLD, 20));
    phototext.setEditable(false);


    Menu();

    // 线程启动
    audio.start();
    isPlaying = true;
}

public void Menu() {
    this.add(menuBar, BorderLayout.NORTH);
    this.setJMenuBar(menuBar);
    JMenu file = new JMenu("文件");
    JMenuItem photolist = new JMenuItem("图片列表");

    menuBar.add(file);
    menuBar.add(photolist);
    menuBar.add(phototext);
    menuBar.add(b1);
    file.add(choosephoto);

    setVisible(true);
    // 文件选择
    chooser.setCurrentDirectory(new File("./image"));
    choosephoto.addActionListener(this);
}


@Override
public void valueChanged(ListSelectionEvent e) {
    if(e.getSource() == photolist) {
        int index = photolist.getLeadSelectionIndex();
        phototext.setText("");
        photo_name = list[index].getPath();
        ImageIcon image_local2 = new ImageIcon(photo_name);
        Image imageget2 = image_local2.getImage();
        Image finalimage2 = imageget2.getScaledInstance(Center.getWidth(), Center.getHeight(),Image.SCALE_AREA_AVERAGING);
        icon2 = new ImageIcon(finalimage2);
        imageview.setIcon(icon2);
        imageview.setBounds(50, 50, 500, 500);
        File file = new File(list[index].getName());
        String filename = file.getName();
        double size = (file.length() / 1024.00);
        System.out.print(file.length());
        phototext.setText(filename + " (" + String.valueOf(size) + "KB)");

    }

}
private final Set<Long> THREADS = new HashSet<>();

public void someMethod () {
    if (THREADS.contains(Thread.currentThread().getId())) {
        throw new RuntimeException("该线程不能再调用这个方法");
    }
    THREADS.add(Thread.currentThread().getId());
    // 方法内容
}
public void actionPerformed(ActionEvent e) {
Runnable action = () ->{
    if (e.getSource() == switch1) {
        while (index <= list.length) {
            if (index == 0) {
                JOptionPane.showMessageDialog(West, "已经是第一张图", "提示", JOptionPane.WARNING_MESSAGE);
                break;
            } 
                index--;
                phototext.setText("");
                photo_name = list[index].getPath();
                ImageIcon image_local2 = new ImageIcon(photo_name);
                Image imageget2 = image_local2.getImage();
                Image finalimage2 = imageget2.getScaledInstance(Center.getWidth(), Center.getHeight(),
                        Image.SCALE_AREA_AVERAGING);
                icon2 = new ImageIcon(finalimage2);
                imageview.setIcon(icon2);
                imageview.setBounds(50, 50, 500, 500);
                File file = new File(list[index].getName());
                String filename = file.getName();
                double size = (file.length() / 1024.00);
                phototext.setText(filename + " (" + String.valueOf(size) + "KB)");
                break;
        }
    }
    if (e.getSource() == switch2) {
        while (index <= list.length) {
            if (index == list.length) {
                JOptionPane.showMessageDialog(West, "已经是最后一张图", "提示", JOptionPane.WARNING_MESSAGE);
            }
            phototext.setText("");
            photo_name = list[index].getPath();
            ImageIcon image_local2 = new ImageIcon(photo_name);
            Image imageget2 = image_local2.getImage();
            Image finalimage2 = imageget2.getScaledInstance(Center.getWidth(), Center.getHeight(),
                    Image.SCALE_AREA_AVERAGING);
            icon2 = new ImageIcon(finalimage2);
            imageview.setIcon(icon2);
            imageview.setBounds(50, 50, 500, 500);
            File file = new File(list[index].getName());
            String filename = file.getName();
            double size = (file.length() / 1024.00);
            phototext.setText(filename + " (" + String.valueOf(size) + "KB)");
            index++;
            break;
        }
    }
    if(e.getSource() == First) {
            index=0;

            phototext.setText("");
            photo_name = list[index].getPath();
            ImageIcon image_local2 = new ImageIcon(photo_name);
            Image imageget2 = image_local2.getImage();
            Image finalimage2 = imageget2.getScaledInstance(Center.getWidth(), Center.getHeight(),
                    Image.SCALE_AREA_AVERAGING);
            icon2 = new ImageIcon(finalimage2);
            imageview.setIcon(icon2);
            imageview.setBounds(50, 50, 500, 500);
            File file = new File(list[index].getName());
            String filename = file.getName();
            double size = (file.length() / 1024.00);
            phototext.setText(filename + " (" + String.valueOf(size) + "KB)");
    }
    if(e.getSource() == Last) {
        index=list.length-1;

        phototext.setText("");
        photo_name = list[index].getPath();
        ImageIcon image_local2 = new ImageIcon(photo_name);
        Image imageget2 = image_local2.getImage();
        Image finalimage2 = imageget2.getScaledInstance(Center.getWidth(), Center.getHeight(),
                Image.SCALE_AREA_AVERAGING);
        icon2 = new ImageIcon(finalimage2);
        imageview.setIcon(icon2);
        imageview.setBounds(50, 50, 500, 500);
        File file = new File(list[index].getName());
        String filename = file.getName();
        double size = (file.length() / 1024.00);
        phototext.setText(filename + " (" + String.valueOf(size) + "KB)");
}

    if (e.getActionCommand() == "打开图片") {
        int choose = chooser.showOpenDialog(null);
        if (choose == JFileChooser.APPROVE_OPTION) {
            phototext.setText("");
            photo_name = chooser.getSelectedFile().getName();
            ImageIcon image_local2 = new ImageIcon(photo_name);
            Image imageget2 = image_local2.getImage();
            Image finalimage2 = imageget2.getScaledInstance(Center.getWidth(), Center.getHeight(),
                    Image.SCALE_AREA_AVERAGING);
            icon2 = new ImageIcon(finalimage2);
            imageview.setIcon(icon2);
            imageview.setBounds(50, 50, 500, 500);
            File file = new File(chooser.getSelectedFile().getName());
            String filename = file.getName();
            double size = (file.length() / 1024.00);
            phototext.setText(filename + " (" + String.valueOf(size) + "KB)");
        }
    }
    if (e.getActionCommand() == "播放") {
        String filePath = "./music";
        try {
            System.out.print("运行了");
            Runnable play = ( ) ->{
            audio.run();
            };
            Thread t1 = new Thread(play);
            t1.start();
            isPlaying = true;
        } catch (Exception e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
    }
    if (e.getSource() == stop) {
        try {
            System.out.print("停止了");

            isPlaying = false;
            isRestart  = false;
        } catch (Exception e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
    }
    if (e.getSource() == playnext) {

        try {
            System.out.print("下一个");

            isPlaying = false;

            Runnable r =() ->{
                try {
                    someMethod();
                    index_music++;
                    isRestart = true;
                    audio.restart();

                } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            };
            Thread t = new Thread(r);
            t.start();

        } catch (Exception e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
    }
    if (e.getSource() == playlast) {
        try {
            if(index_music == 0) {
                JOptionPane.showMessageDialog(West, "已经是第一首背景音乐", "提示", JOptionPane.WARNING_MESSAGE);
            }
            isPlaying = false;
            isRestart = true;
        } catch (Exception e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
    }
};
Thread act = new Thread(action);
act.start();

}


public class Audio extends Thread {

    public Audio() {

    }

    public void run() {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                System.out.println(e.toString());
            }

            if (isPlaying) {
                try {
                    System.out.print("启动了");
                    player();
                } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
                    e.printStackTrace();
                }
            }

    }
    public void restart() throws UnsupportedAudioFileException, IOException, LineUnavailableException {
        if(isRestart) {
            System.out.print("测试了~?");
            isPlaying =true;
            player();

        }
    }
    // 取得文件输入流
    private void player() throws UnsupportedAudioFileException, IOException, LineUnavailableException {
        AudioInputStream audioInputStream;// 文件流

        AudioFormat audioFormat;// 文件格式

        SourceDataLine sourceDataLine;// 输出设备

        String musicname = musiclist[index_music].getName();
        File file = new File("./music/"+musicname);


        audioInputStream = AudioSystem.getAudioInputStream(file);

        audioFormat = audioInputStream.getFormat();

        // 转换文件编码

        if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {

            audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,

                    audioFormat.getSampleRate(), 16, audioFormat.getChannels(),

                    audioFormat.getChannels() * 2, audioFormat.getSampleRate(),

                    false);

            audioInputStream = AudioSystem.getAudioInputStream(audioFormat,

                    audioInputStream);

        }

        // 打开输出设备

        DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class,

                audioFormat, AudioSystem.NOT_SPECIFIED);

        sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo);

        sourceDataLine.open(audioFormat); // 打开具有指定格式的行,这样可以使行获得所有所需的系统资源并变得可操作

        sourceDataLine.start(); // 允许某一数据行执行数据I/O

        byte tempBuffer[] = new byte[320];

        try {

            int cnt;

            // 读取数据到缓存区

            // 从音频流读取指定的最大数量的数据字节,并将其放入给定的字节数组中。

            // return: 读入缓冲区的总字节数;如果因为已经到达流末尾而不再有更多数据,则返回-1

            while ((cnt = audioInputStream.read(tempBuffer, 0,tempBuffer.length)) != -1 &&isPlaying) {

                if (cnt > 0) {

                    // 写入缓存数据

                    sourceDataLine.write(tempBuffer, 0, cnt); // 通过此源数据行将音频数据写入混频器

                }

            }

            // Block等待临时数据被输出为空

            // 通过在清空数据行的内部缓冲区之前继续数据I/O,排空数据行中的列队数据

            sourceDataLine.drain();

            // 关闭行,指示可以释放的该行使用的所有系统资源。如果此操作成功,则将行标记为 closed,并给行的侦听器指派一个 CLOSE 事件。

            sourceDataLine.close();

        } catch (Exception e) {

            e.printStackTrace();

            System.exit(0);

        }
    }
}
public static void main(String[] args) {
    Runnable h = () ->{
    HOME home = new HOME();
    };
    Thread t = new Thread(h);
    t.start();
}

}


```playnext那一部分是切下一首歌,但是切了后当前的歌曲仍在播放,怎么解决
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java调用QQ登录回调的时候又的浏览器报错(域名不带www的情况报错,带www的ok)
java调用QQ登录回调的时候有的浏览器报错 (域名不带www的情况有的浏览器报错,带www的ok)
用MacBookPro 练习java编程中的文件流,我想读取文件的内容:abcdefgh 但是为什么在控制台输出的内容和文件中的内容不一致?
用MacBookPro 练习java编程中的文件流,我想读取文件的内容:abcdefgh 但是为什么在控制台输出的内容和文件中的内容不一致?有什么可以解决的办法?谢谢![图片说明](https://img-ask.csdn.net/upload/202001/27/1580123653_146856.png)![图片说明](https://img-ask.csdn.net/upload/202001/27/1580123690_217900.png)
java 通过浏览器访问本地服务器打开一个html文件总是找不到路径
文件路径正确,并且绝对路径和相对路径都已经尝试,为啥一直报相同错误。 ``` package day29; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class BS { public static void main(String[] args) throws IOException { ServerSocket ss = new ServerSocket(8888); while (true){ Socket ac = ss.accept(); new Thread(new Runnable() { @Override public void run() { try { InputStream is = ac.getInputStream(); BufferedReader bf = new BufferedReader(new InputStreamReader(is)); String s = bf.readLine(); System.out.println(s); String[] s1 = s.split(" "); String sub = s1[1].substring(1); System.out.println(sub); FileInputStream fis = new FileInputStream(sub); OutputStream os = ac.getOutputStream(); // 写入HTTP协议响应头,固定写法 os.write("HTTP/1.1 200 OK\r\n".getBytes()); os.write("Content-Type:text/html\r\n".getBytes()); // 必须要写入空行,否则浏览器不解析 os.write("\r\n".getBytes()); int len = 0; byte[] b = new byte[1024]; while ((len = fis.read(b)) != -1){ os.write(b); fis.close(); ac.close(); } }catch (IOException E){ E.printStackTrace(); } } }).start(); } } } ``` ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579188286_656266.jpg)
高分悬赏:Java语言调用一个方法,什么时候要用到new什么时候不用new
高分悬赏:Java语言调用一个方法,什么时候要用到new什么时候不用new java1051636,这个类的含义是什么
如何使java服务在liunx启动的另一服务在java服务停止启动的服务不会停止?
使用java程序在liunx启动了一个服务,但是在java服务停止之后,相对应的java启动的服务也停止了, 求助各路大神
java安卓开发中音乐播放上一首下一首怎么实现
我是把mp3格式文件放在raw文件夹内,播放代码为: mp = MediaPlayer.create(MainActivity.this,R.raw.music); mp.start(); 如何做到上一首下一首切换,希望能有一个例子(比如raw内有两个文件:music.mp3与music1.mpc)。 例子能看得更加具体,明白。
JMF 音乐播放器 关于getControlPanelComponent()如何设置?
我用JMF框架写的一个简易音乐播放器,有一个问题始终不能解决。 就是通过getControlPanelComponent()得到了播放条,有暂停和播放按钮。(图色的丑丑的进度条) 如果我要自己再写一个播放暂停按钮的话,如何使二者的状态相一致呢? (具体就是:点击自己的按钮,播放条的播放暂停按钮会自动同步;但是点击播放条的播放暂停按钮,自己的按钮状态不会搞。) 相关代码 player.addControllerListener(new PlayEventHandler()); 已经知道了要在 PlayEventHandler 里面写一个方法,比如stopByRequest可以实现点击播放条的暂停按钮,自己的按钮也会更新;但是点击播放条的播放后,自己的按钮不能更新。 ![图片说明](https://img-ask.csdn.net/upload/201912/31/1577781694_469371.jpg) ![图片说明](https://img-ask.csdn.net/upload/201912/31/1577781715_844220.png) ![图片说明](https://img-ask.csdn.net/upload/201912/31/1577781736_96450.png)
java内存溢出问题,不确定哪里出的问题
项目运行的时候出现了内存溢出情况,复现方式无法确定,大概出现了五六次,每次复现的方式都不一样,下面是我用MAT工具分析的dump文件 ![图片说明](https://img-ask.csdn.net/upload/202001/20/1579508231_612899.png) ![图片说明](https://img-ask.csdn.net/upload/202001/20/1579508244_502327.png) 除了hibernate里的那两个对象,其他的1000多万个对象里全是integer类型的对象 这是当时出现的时候产生的异常 ``` 2020-01-17 13:32:55 ERROR [DruidDataSource.java:2469] - create connection SQLException, url: jdbc:mysql://localhost:55060/mcs?useUnicode=true&characterEncoding=utf-8, errorCode 0, state 08S01 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 1 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3517) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3417) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3860) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:864) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1707) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1217) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2189) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2220) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2015) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:768) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) at sun.reflect.GeneratedConstructorAccessor118.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2969) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3427) ... 19 more 2020-01-17 13:33:03 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_preset_rlat failed: java.lang.OutOfMemoryError: GC overhead limit exceeded at net.sf.ehcache.util.MemoryEfficientByteArrayOutputStream.getBytes(MemoryEfficientByteArrayOutputStream.java:65) at net.sf.ehcache.util.MemoryEfficientByteArrayOutputStream.serialize(MemoryEfficientByteArrayOutputStream.java:99) at net.sf.ehcache.store.disk.DiskStorageFactory.serializeElement(DiskStorageFactory.java:405) at net.sf.ehcache.store.disk.DiskStorageFactory.write(DiskStorageFactory.java:384) at net.sf.ehcache.store.disk.DiskStorageFactory$DiskWriteTask.call(DiskStorageFactory.java:485) at net.sf.ehcache.store.disk.DiskStorageFactory$PersistentDiskWriteTask.call(DiskStorageFactory.java:1088) at net.sf.ehcache.store.disk.DiskStorageFactory$PersistentDiskWriteTask.call(DiskStorageFactory.java:1072) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 2020-01-17 13:32:59 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:32:59 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:32:55 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:16 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:27 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-01-17 13:33:27 ERROR [SqlExceptionHelper.java:144] - wait millis 7401, active 16, maxActive 40, creating 1 2020-01-17 13:33:27 INFO [GetCWRCapHandler.java:114] - 解析录像服务器上报心跳协议过程中出现异常:org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection 2020-01-17 13:33:33 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:33 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:49 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:49 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:49 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:49 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:49 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:53 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:53 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:33:53 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:02 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-01-17 13:34:02 ERROR [SqlExceptionHelper.java:144] - wait millis 5503, active 18, maxActive 40, creating 1 2020-01-17 13:34:02 INFO [GetCWRCapHandler.java:114] - 解析录像服务器上报心跳协议过程中出现异常:org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection 2020-01-17 13:34:04 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:08 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:12 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:12 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:14 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:14 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:14 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:17 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-01-17 13:34:17 ERROR [SqlExceptionHelper.java:144] - wait millis 5485, active 19, maxActive 40, creating 1 2020-01-17 13:34:17 INFO [GetCWRCapHandler.java:114] - 解析录像服务器上报心跳协议过程中出现异常:org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [n/a]; SQL state [null]; error code [0]; Could not open connection; nested exception is org.hibernate.exception.GenericJDBCException: Could not open connection 2020-01-17 13:34:17 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:27 INFO [DeviceCache.java:249] - 设备状态及报警维护过程中出现异常 2020-01-17 13:34:35 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:35 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:42 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:42 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:44 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:44 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:34:52 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-01-17 13:34:52 ERROR [SqlExceptionHelper.java:144] - wait millis 7301, active 22, maxActive 40, creating 1 2020-01-17 13:34:52 INFO [GetCWRCapHandler.java:114] - 解析录像服务器上报心跳协议过程中出现异常:org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection 2020-01-17 13:34:53 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:35:05 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_roll_preset failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-17 13:35:18 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-01-17 13:35:18 ERROR [SqlExceptionHelper.java:144] - Error 2020-01-17 13:35:50 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-01-17 13:35:50 ERROR [SqlExceptionHelper.java:144] - Error 2020-01-17 13:36:13 WARN [SqlExceptionHelper.java:143] - SQL Error: 1205, SQLState: 40001 2020-01-17 13:36:13 ERROR [SqlExceptionHelper.java:144] - Lock wait timeout exceeded; try restarting transaction 2020-01-17 13:36:13 WARN [SqlExceptionHelper.java:143] - SQL Error: 1205, SQLState: 40001 2020-01-17 13:36:24 ERROR [SqlExceptionHelper.java:144] - Lock wait timeout exceeded; try restarting transaction 2020-01-17 13:36:13 WARN [SqlExceptionHelper.java:143] - SQL Error: 1205, SQLState: 40001 2020-01-17 13:37:01 ERROR [SqlExceptionHelper.java:144] - Lock wait timeout exceeded; try restarting transaction 2020-01-17 13:37:43 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-17 13:36:37 WARN [SqlExceptionHelper.java:143] - SQL Error: 1205, SQLState: 40001 2020-01-17 13:36:33 WARN [SqlExceptionHelper.java:143] - SQL Error: 1205, SQLState: 40001 2020-01-17 13:36:22 WARN [SqlExceptionHelper.java:143] - SQL Error: 1205, SQLState: 40001 ``` 现在就是无法确定到底哪里导致的内存溢出? 这个是上次出现的异常和代码 ``` 2020-01-13 13:21:44 WARN [SqlExceptionHelper.java:143] - SQL Error: 1205, SQLState: 40001 2020-01-13 13:21:44 ERROR [SqlExceptionHelper.java:144] - Lock wait timeout exceeded; try restarting transaction 2020-01-13 13:23:55 INFO [MQTTProtocolHandler.java:283] - 接收到设备接入协议:{"topic":"info/deviceBaseInfo/BHIP118-S/00:00:01:A6:00:A2","reportTime":"256573751","decodeCapacity":{"totalLevel":2,"totalBlock":36,"totalPixel":16588800},"outputList":[{"status":"start","ratio":"UHD","pixel":"3840*2160","type":"UDP","url":"udp://231.0.100.80:7001"},{"status":"start","ratio":"HD","pixel":"960*540","type":"UDP","url":"udp://231.0.101.80:7001"},{"status":"start","ratio":"SD","pixel":"352*288","type":"UDP","url":"udp://231.0.102.80:7001"},{"status":"stop","ratio":"UHD","pixel":"3840*2160","type":"RTMP","url":"rtmp://192.168.15.80:1935/live/100"},{"status":"stop","ratio":"HD","pixel":"960*540","type":"RTMP","url":"rtmp://192.168.15.124:1935/live/101"},{"status":"stop","ratio":"SD","pixel":"352*288","type":"RTMP","url":"rtmp://192.168.15.80:1935/live/102"}],"baseInfo":{"deviceType":"BHIP118-S","code":"00:00:01:A6:00:A2","version":"v1.0.0.11","ip":"192.168.16.80"},"online":true} 2020-01-13 13:23:59 INFO [DeviceCache.java:127] - 接收到新增/更新设备信息:00:00:01:A6:00:A2 :BaseInfo [type=0,name=BHIP118-S,ip=192.168.16.80,port=0,code=00:00:01:A6:00:A2,groupCode=null,groupIndex=0,online=true,multiCastTime=0,ver=v1.0.0.11,channel=0,reserve=0,lockStatus=null,workMode=null,videoPixerls=null,kvmMode=null,serialNumber=null,sdipPortInfo is null,hdIpPortInfo is null,audioIpPortInfo is null,outputList[SourceOutput [ratio=UHD, url=udp://231.0.100.80:7001, pixel=3840*2160, channel=0, SourceOutput [ratio=HD, url=udp://231.0.101.80:7001, pixel=960*540, channel=0, SourceOutput [ratio=SD, url=udp://231.0.102.80:7001, pixel=352*288, channel=0, SourceOutput [ratio=UHD, url=rtmp://192.168.15.80:1935/live/100, pixel=3840*2160, channel=0, SourceOutput [ratio=HD, url=rtmp://192.168.15.124:1935/live/101, pixel=960*540, channel=0, SourceOutput [ratio=SD, url=rtmp://192.168.15.80:1935/live/102, pixel=352*288, channel=0],callStatus=null] 2020-01-13 13:24:06 INFO [MultiCastDeviceInfoHandler.java:229] - 更新视频合成器设备信息: Device [id=ff8080816f694555016f6a4bf61e158c, code=00:00:01:A6:00:A2, name=192.168.16.80, ip=192.168.16.80, port=0, status=0, type=BHIP118, deviceType=BHIP118-S, stamp=2020-01-03 15:26:00, abilityInfo=null, netCardInfo=null] 2020-01-13 13:24:53 INFO [MultiCastDeviceInfoHandler.java:364] - 更新解码器信息:Decoder [IP=192.168.16.80, Port=0, Channel=0, totalBlocks=36, totalLevel=2, uRefWidth=1920, uRefHeight=1080, audioPort=0, totalPixel=16588800, deviceTypeName=BHIP118-S, pixelsWidth=null, pixelsHeight=null] 2020-01-13 13:25:17 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:25:17 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:25:17 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:25:19 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:25:28 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:25:42 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-01-13 13:25:42 ERROR [SqlExceptionHelper.java:144] - wait millis 14463, active 11, maxActive 40, creating 1 2020-01-13 13:25:46 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_playback_task failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:25:48 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-01-13 13:25:50 ERROR [SqlExceptionHelper.java:144] - wait millis 18056, active 11, maxActive 40, creating 1 2020-01-13 13:25:50 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_source_volume failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:25:51 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:25:51 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:25:51 INFO [GetCWRCapHandler.java:114] - 解析录像服务器上报心跳协议过程中出现异常:org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [n/a]; SQL state [null]; error code [0]; Could not open connection; nested exception is org.hibernate.exception.GenericJDBCException: Could not open connection 2020-01-13 13:25:51 INFO [GetCWRCapHandler.java:114] - 解析录像服务器上报心跳协议过程中出现异常:org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection 2020-01-13 13:25:58 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_kvm failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:25:56 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:25:56 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:03 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_video_terminal failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:05 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_layer failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:05 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_template failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:05 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_multicast_address failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:08 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_mass_source failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:08 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_pic_encoder_block failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:08 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_ipc_preset_group failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:08 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:13 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_video_terminal failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:17 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_record_layer_block failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:24 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_video_meeting failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:28 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_audio_preset_rlat failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:28 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_preset failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:28 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_layer_block failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:28 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:32 WARN [SqlExceptionHelper.java:143] - SQL Error: 0, SQLState: null 2020-01-13 13:26:32 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:32 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:32 ERROR [DiskStorageFactory.java:495] - Disk Write of mcs_encoder failed: java.lang.OutOfMemoryError: GC overhead limit exceeded 2020-01-13 13:26:52 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:27:07 ERROR [SqlExceptionHelper.java:144] - wait millis 20150, active 12, maxActive 40, creating 1 2020-01-13 13:26:50 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:46 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:46 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:41 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:41 ERROR [SqlExceptionHelper.java:144] - wait millis 23244, active 12, maxActive 40, creating 1 2020-01-13 13:26:41 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:26:41 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:30:29 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:30:25 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:30:07 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:30:07 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 2020-01-13 13:30:07 WARN [DruidDataSource.java:1258] - get connection timeout retry : 1 ``` 这个是组播上报的设备信息,因为组播是一秒钟上报了好几次,是不是这里一直占用着连接 ``` public void run() { try { ms = new MulticastSocket(multiCastPort);//建立组播套接字 ms.setReceiveBufferSize(65535); // ms.setNetworkInterface(NetworkInterface.getByInetAddress(localAddress)); ms.joinGroup(InetAddress.getByName(multiCastIP));//加入组播组 LogHome.getLog().info("正常启动监听" + localAddress.getHostAddress()); byte[] buffer = null; DatagramPacket dp = null; while (true) { try { if (IsStop) { break; } buffer = new byte[1400]; dp = new DatagramPacket(buffer, buffer.length); LogHome.getLog().debug("等待接受组播信息:"); ms.receive(dp); MultiCastInfoParser info = new MultiCastInfoParser(dp.getData()); DeviceCache.baseInfoOf1004Handler(info.parse()); } catch (Exception e) { if (IsStop) {// 如果换网卡可能会出问题 break; } else { if (ms.isClosed()) { ms = new MulticastSocket(multiCastPort); ms.setNetworkInterface(NetworkInterface.getByInetAddress(localAddress)); ms.joinGroup(InetAddress.getByName(multiCastIP)); } } LogHome.getLog().error("接受并设置组播信息失败",e); }finally{ Thread.sleep(1); } } } catch (Exception e) { e.printStackTrace(); try { if (listenerList.containsKey(localAddress.getHostAddress())) { listenerList.remove(localAddress.getHostAddress()); } } catch (Exception ex) { LogHome.getLog().error(ex); } } ```
springboot设置网页图标,三个浏览器里 有一个不能把图标展示出来,请问要怎么解决?
![图片说明](https://img-ask.csdn.net/upload/202001/18/1579316693_261772.png) +++ ![图片说明](https://img-ask.csdn.net/upload/202001/18/1579316552_295578.png) +++ ![图片说明](https://img-ask.csdn.net/upload/202001/18/1579316620_936564.png) +++ +++ 简单地说就是: ## 在IE浏览器、 2345浏览器里能看到我设置的图标 ## 在火狐浏览器里看不到 ## | ## 我猜测是浏览器的问题 ## 请问大神们有没有办法解决这个问题,让所有的浏览器都能展示?
在cmd中输出的Java -version和path环境变量与设置时不一致,怎么解决?
![图片说明](https://img-ask.csdn.net/upload/202001/17/1579192142_18532.png) 我在系统系统属性->环境变量那里设置的JAVA_HOME是JDK11.0.4版的,同时也引用了JAVA_HOME加入到Path环境变量那里,可是我在cmd那里看到的Java -version信息和Path环境变量却提示是1.7.0_72版本的(这个版本好像是我以前用的),这是怎么回事?请问需要怎么解决?
Idea编译器下用Java语言编写一个类似于脚本的程序,可以同时批量获取不同路径下的.java和.class和.xml文件 并将其粘贴到与之前的目录层级结构相同的目标目录下
如题所述 类似于脚本 但是不用Linux语言编译bash脚本 纯java的话该如何实现上述功能 ![图片说明](https://img-ask.csdn.net/upload/202001/08/1578449375_507252.jpg)
关于在Java11中无法使用StdOut和Stdln
我用的是Java11,我的老师让我们使用StdOut和Stdln的代码来输入。但是我在用eclipse的时候输入Stdout会显示StdOut cannot be resovled.请问我该如何解决这个问题。![图片说明](https://img-ask.csdn.net/upload/202001/14/1579017560_202938.png)不用在意里面的代码。
java如何在浏览器关闭的时候执行后台的一个方法
比如我想在我关闭浏览器的时候,删除D盘的一个txt文件,请各位大佬帮帮忙,看如何能够实现。最后能有代码,谢谢各位。
求助,在学习Java反射的时候碰到的一个问题
![图片说明](https://img-ask.csdn.net/upload/201910/19/1571475572_498077.png)![图片说明](https://img-ask.csdn.net/upload/201910/19/1571475578_560590.png) 如图,当我访问类中的字段的时候,getDeclaredField方法总会报一个NoSuchFieldException,我已经改成了public声明,但还是会出现这个问题,请问应该怎么解决?JAVA版本用的是Java13
java中可以在图片中设置字体的有哪些方法
要做一个在图片中设置字体 我用的Font方法 黑体 微软雅黑 都试过 但是产品觉得文字放大后有瑕疵 请求一下大神还有什么方法
html5音乐播放器歌词同步lrc文件
怎样html5音乐播放器歌词同步lrc文件?![图片说明](https://img-ask.csdn.net/upload/201912/26/1577298011_733675.png)
java如何做视频或音乐播放器
java有什么类是用来解码视频或者音乐的。想做个视频播放器。有什么现成的类使用么。
win 10系统中 JAVA环境的配置后 输入java和javac没有问题 输入java_version的时候却出现了错误。
win 10系统中 JAVA环境的配置后 输入java和javac没有问题 输入java_version的时候却出现了错误 是环境配置错了吗?![图片说明](https://img-ask.csdn.net/upload/201911/24/1574592245_117386.png)![图片说明](https://img-ask.csdn.net/upload/201911/24/1574592280_858286.png)![图片说明](https://img-ask.csdn.net/upload/201911/24/1574592286_837558.png)
eclipse创建的java项目列表下jre隐藏了怎么调出来。
![图片说明](https://img-ask.csdn.net/upload/202001/18/1579356643_565595.png) 图片中红色的 怎么调出来 左边白色的是我自己的环境,右边的是我朋友的(我的环境里面有jre包,就是显示不出来这个东西)
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python学习方法总结(内附python全套学习资料)
不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包也没啥问题。。。。。所以python真的是想学就一定能学会的!!!! --------------------华丽的分割线-------------------------------- ...
兼职程序员一般可以从什么平台接私活?
这个问题我进行了系统性的总结,以下将进行言简意赅的说明和渠道提供,希望对各位小猿/小媛们有帮助~ 根据我们的经验,程序员兼职主要分为三种:兼职职位众包、项目整包和自由职业者驻场。 所谓的兼职职位众包,指的是需求方这边有自有工程师配合,只需要某个职位的工程师开发某个模块的项目。比如开发一个 app,后端接口有人开发,但是缺少 iOS 前端开发工程师,那么他们就会发布一个职位招聘前端,来配合公司一...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
JAVA 基础练习题
第一题 1.查看以下代码,并写出结果 public class Test01 { public static void main(String[] args) { int i1 = 5; boolean result = (i1++ &gt; 5) &amp;&amp; (++i1 &gt; 4); System.out.println(result); Sy...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
C++知识点 —— 整合(持续更新中)
本文记录自己在自学C++过程中不同于C的一些知识点,适合于有C语言基础的同学阅读。如果纰漏,欢迎回复指正 目录 第一部分 基础知识 一、HelloWorld与命名空间 二、引用和引用参数 2.1引用的定义 2.2 将引用用作函数参数 2.3 将引用用于类对象 2.4 引用和继承 2.5 何时使用引用参数 2.6 引用和指针的区别 三、内联函数 四、默认参数的...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
Python实例大全(基于Python3.7.4)
博客说明: 这是自己写的有关python语言的一篇综合博客。 只作为知识广度和编程技巧学习,不过于追究学习深度,点到即止、会用即可。 主要是基础语句,如三大控制语句(顺序、分支、循环),随机数的生成,数据类型的区分和使用; 也会涉及常用的算法和数据结构,以及面试题相关经验; 主体部分是针对python的数据挖掘和数据分析,主要先攻爬虫方向:正则表达式匹配,常用数据清洗办法,scrapy及其他爬虫框架,数据存储方式及其实现; 最后还会粗略涉及人工智能领域,玩转大数据与云计算、进行相关的预测和分析。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
机械转行java自学经历,零基础学java,血泪总结的干货
机械转行java自学经历,零基础学java,血泪总结的干货 据说,再恩爱的夫妻,一生中都有100次想离婚的念头和50次想掐死对方的冲动。 求职路上亦是如此,打开这篇文章,相信你也有转行的想法。和身边的朋友聊过,入职后的他们,或多或少对现在的职位都有些不满,都有过转行的冲动。 可他们只是想,而我真的这样做了。 下面就介绍下我转行的血泪史。 我为什么要转行 高中复读了一年,考了个双非院校的机械。当时...
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
【Linux系统编程】Linux信号列表
00. 目录 文章目录00. 目录01. Linux信号编号02. 信号简介03. 特殊信号04. 附录 01. Linux信号编号 在 Linux 下,每个信号的名字都以字符 SIG 开头,每个信号和一个数字编码相对应,在头文件 signum.h 中,这些信号都被定义为正整数。信号名定义路径:/usr/include/i386-linux-gnu/bits/signum.h 要想查看这些信号和...
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
借助AI力量,谷歌解开生命奥秘?
全文共4484字,预计学习时长8分钟 Paweł Czerwiński发布在 Unsplash上的原图 假如疾病不复存在会发生什么?如果我们能像大自然一样迅速获取能量又会发生什么?要是我们能够在极短时间内循环塑料、废油、或其它的一些物质呢?如果人类能够解开生命的奥秘,那么以上这些想象将在未来成为现实。人工智能企业DeepMind的数据科学分析师日前在此领域有了重大发现。以下为具体内容:...
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问