图书管理系统java版

 更新时间:2016年06月07日 13:06:05   作者:zjq_1314520  
这篇文章主要为大家详细介绍了java版的图书管理系统,通过实例为大家快速掌握数据库编程技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询、插入、删除、修改。

内容:在数据库中创建一张书目信息表,包括书名、作者、出版社、出版日期、书号、价格字段。设计一个GUI界面进行书目管理。在该界面上有四个选项卡,分别是查询、插入、删除、修改。点击查询选项卡,出现的界面上有书名、作者、出版社、书号四个文本框,一个按钮和一个只读文本区。文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的“查询”按钮,可以在界面下方的文本区中显示出符合条件的书目详细信息。点击插入选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。在文本框中输入信息后,点击“插入”按钮,该书目信息插入数据库表中。点击删除选项卡,出现的界面上有书名文本框和一个按钮,输入书名后点击“删除”按钮,该书目信息从数据库表中删除。点击修改选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。输入的书名必须是已存在的,否则会弹出消息框显示出错信息。输入信息后,点击“修改”按钮,数据库表中的相应书目信息被修改为新值。

源码:

BookInfo.java

 * 项目名称:图书管理系统 
 * 版本: 1.0 
 * 创建者: 张俊强 
 * 创建时间:2016/5/26 
 * */ 
package librarySystem; 
 
import java.awt.*; 
 
import javax.swing.*; 
 
import java.awt.event.*; 
import java.sql.*; 
 
@SuppressWarnings("serial") 
public class BookInfo extends JFrame implements ActionListener{ 
 //主角面上的控件 
 private JLabel inputLabel; 
 private JTextField inputText; 
 private JButton searchBut; 
 
 private JTable bookTable; 
 private JScrollPane bookScroll; 
 private JButton addBut; 
 private JButton modifyBut; 
 private JButton deleteBut; 
 private JButton refreshBut; 
 private BookTableModel bookTableModel; 
 public static void main(String[] args) throws SQLException { 
 // TODO Auto-generated method stub 
 BookInfo bookInfo=new BookInfo(); 
 bookInfo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 bookInfo.setBounds(350, 150, 600, 400); 
 bookInfo.setVisible(true); 
// bookInfo.importSQL();//导出数据 
 bookInfo.setMinWindowLayout();//设置数据 
 } 
 public BookInfo() throws SQLException{ 
 //创建主界面上的控件 
 inputLabel=new JLabel("请输入书名:"); 
 inputText=new JTextField(10); 
 searchBut=new JButton("查询"); 
 bookTableModel=new BookTableModel(); 
 
 bookTable=new JTable(bookTableModel); 
 bookScroll=new JScrollPane(bookTable); 
 
 addBut=new JButton("添加"); 
 modifyBut=new JButton("修改"); 
 deleteBut=new JButton("删除"); 
 refreshBut=new JButton("刷新"); 
 searchBut.addActionListener(this); 
 addBut.addActionListener(this); 
 refreshBut.addActionListener(this); 
 modifyBut.addActionListener(this); 
 deleteBut.addActionListener(this); 
 
 } 
 
 void setMinWindowLayout(){ 
 //主界面布局 
 Container con1=new Container(); 
 con1.setLayout(new FlowLayout()); 
 con1.add(inputLabel); 
 con1.add(inputText); 
 con1.add(searchBut); 
 con1.add(refreshBut); 
 Container con2=new Container(); 
 con2.setLayout(new FlowLayout()); 
 con2.add(addBut); 
 con2.add(modifyBut); 
 con2.add(deleteBut); 
 this.setLayout(new BorderLayout()); 
 this.add(con1,BorderLayout.NORTH); 
 this.add(bookScroll,BorderLayout.CENTER); 
 this.add(con2,BorderLayout.SOUTH); 
 this.validate(); 
 } 
 @Override 
 public void actionPerformed(ActionEvent e) { 
 // TODO Auto-generated method stub 
 if(e.getSource()==searchBut){ 
 if(!this.inputText.getText().equals("")){ 
 String bookName=this.inputText.getText(); 
 String sql="SELECT * FROM book_info WHERE book_name ='"+bookName+"'"; 
 try { 
 bookTableModel=new BookTableModel(sql); 
 bookTable.setModel(bookTableModel); 
 } catch (SQLException e1) { 
 // TODO Auto-generated catch block 
 e1.printStackTrace(); 
 } 
  
 }else{ 
 JOptionPane.showMessageDialog(this,"输入不能为空", "提示",JOptionPane.PLAIN_MESSAGE); 
 } 
 } 
 else if(e.getSource()==addBut){ 
 @SuppressWarnings("unused") 
 AddBookDialog addWin=new AddBookDialog(this,"添加图书",true); 
 this.refreshTable(); 
 } 
 else if(e.getSource()==refreshBut){ 
 this.refreshTable(); 
 } 
 else if(e.getSource()==deleteBut){ 
 int rowNum=bookTable.getSelectedRow(); 
 if(rowNum<0||rowNum>bookTable.getRowCount()){ 
 JOptionPane.showMessageDialog(this,"未选中", "提示",JOptionPane.PLAIN_MESSAGE); 
 } 
 else{ 
 //System.out.print(bookName); 
 int n = JOptionPane.showConfirmDialog(null, "确认删除吗?", "确认删除框", JOptionPane.YES_NO_OPTION); 
 if (n == JOptionPane.YES_OPTION) { 
  String bookNum=(String) bookTable.getValueAt(rowNum, 0); 
  String sql="DELETE FROM book_info WHERE book_num= '"+bookNum+"'"; 
  bookTableModel.deleteBook(sql); 
  this.refreshTable(); 
  JOptionPane.showMessageDialog(this,"删除成功", "提示",JOptionPane.PLAIN_MESSAGE); 
 } else if (n == JOptionPane.NO_OPTION) { 
  return; 
 } 
 } 
 } 
 else if(e.getSource()==modifyBut){ 
 bookTable.setModel(bookTableModel); 
 int rowNum=bookTable.getSelectedRow(); 
 if(rowNum<0||rowNum>bookTable.getRowCount()){ 
 JOptionPane.showMessageDialog(this,"未选中", "提示",JOptionPane.PLAIN_MESSAGE); 
 } 
 else{ 
 @SuppressWarnings("unused") 
 ModifyBook modifyWin=new ModifyBook(this,"修改信息",true,bookTableModel,rowNum); 
 this.refreshTable(); 
 } 
 } 
 
 } 
 public void refreshTable(){ 
 BookTableModel searchBook; 
 try { 
 searchBook = new BookTableModel("SELECT * FROM book_info"); 
 bookTable.setModel(searchBook); 
 bookTableModel=searchBook; 
 } catch (SQLException e1) { 
 // TODO Auto-generated catch block 
 e1.printStackTrace(); 
 } 
 } 
} 

BookTableModel.java

package librarySystem; 
import java.sql.*; 
import java.util.*; 
 
/* 
 * 图书表模型 
 * */ 
import javax.swing.table.*; 
@SuppressWarnings("serial") 
public class BookTableModel extends AbstractTableModel{ 
 //表的元素 
 private Vector<Vector<String>> rowData; 
 private Vector<String> colName; 
 // 数据库 
 private PreparedStatement stmt; 
 private ResultSet result; 
 public BookTableModel(String sql) throws SQLException{ 
 this.initData(sql); 
 } 
 public BookTableModel() throws SQLException{ 
 this.initData("SELECT * FROM book_info"); 
 } 
 public void initData(String sql) throws SQLException{ 
 setRowData(new Vector<Vector<String>>()); 
 setColName(new Vector<String>()); 
 getColName().add("书号"); 
 getColName().add("书名"); 
 getColName().add("作者"); 
 getColName().add("出版社"); 
 getColName().add("出版时间"); 
 getColName().add("价格"); 
 /* 
 * 数据库的导入 
 * */ 
 try { 
 Class.forName("com.mysql.jdbc.Driver"); 
 } catch (ClassNotFoundException e) { 
 // TODO Auto-generated catch block 
 e.printStackTrace(); 
 } 
 String url= "jdbc:mysql://localhost:3306/device"; 
 String user="root"; 
 String password="zjq1314520"; 
 Connection con=DriverManager.getConnection(url,user,password); 
 stmt = con.prepareStatement(sql); 
 result=stmt.executeQuery(); 
 importSQL(); 
 } 
 void importSQL() throws SQLException{ 
 // TODO Auto-generated method stub 
 @SuppressWarnings("unused") 
 boolean signNull=true; 
 while(result.next()){ 
 Vector<String> item=new Vector<String>(); 
 for(int i=1;i<7;i++){ 
 item.add(result.getString(i)); 
 } 
 getRowData().add(item); 
 signNull=false; 
 } 
 result.close(); 
 } 
 @Override 
 public int getColumnCount() {//得到列数 
 // TODO Auto-generated method stub 
 return this.colName.size(); 
 } 
 
 @Override 
 public int getRowCount() {//得到行数 
 // TODO Auto-generated method stub 
 return this.rowData.size(); 
 } 
 
 @Override 
 public Object getValueAt(int row, int col) {//得到某行某列的数据 
 // TODO Auto-generated method stub 
 return (this.rowData.get(row)).get(col); 
 } 
 
 @Override 
 public String getColumnName(int column) { 
 // TODO Auto-generated method stub 
 return this.colName.get(column); 
 } 
 
 public Vector<Vector<String>> getRowData() { 
 return rowData; 
 } 
 public void setRowData(Vector<Vector<String>> rowData) { 
 this.rowData = rowData; 
 } 
 public Vector<String> getColName() { 
 return colName; 
 } 
 public void setColName(Vector<String> colName) { 
 this.colName = colName; 
 } 
 public void addBook(String sql){ 
 try { 
 stmt.executeUpdate(sql); 
 } catch (SQLException e) { 
 // TODO Auto-generated catch block 
 e.printStackTrace(); 
 } 
// initData("SELECT * FROM book_info"); 
 } 
 public void deleteBook(String sql){ 
 try { 
 stmt.executeUpdate(sql); 
 } catch (SQLException e1) { 
 // TODO Auto-generated catch block 
 e1.printStackTrace(); 
 } 
 } 
} 

AddBookDialog.java

package librarySystem; 
 
import java.awt.*; 
import java.awt.event.*; 
import java.sql.SQLException; 
 
import javax.swing.*; 
 
@SuppressWarnings("serial") 
public class AddBookDialog extends JDialog implements ActionListener{ 
 private JLabel bookNumLabel; 
 private JLabel bookNameLabel; 
 private JLabel bookWriterLabel; 
 private JLabel bookPublishLabel; 
 private JLabel bookPriceLabel; 
 private JLabel bookTimeLabel; 
 private JTextField bookNumText; 
 private JTextField bookNameText; 
 private JTextField bookWriterText; 
 private JTextField bookPublishText; 
 private JTextField bookPriceText; 
 private JTextField bookTimeText; 
 
 private JButton submitBut; 
 private JButton cancelBut; 
 public AddBookDialog(Frame owner,String title,boolean model){ 
 //父窗口,窗口名,是否是模式窗口 
 super(owner,title,model); 
 bookNumLabel=new JLabel("书 号:"); 
 bookNameLabel=new JLabel("书 名:"); 
 bookWriterLabel=new JLabel("作 者:"); 
 bookPublishLabel=new JLabel("出版社:"); 
 bookPriceLabel=new JLabel("价 格:"); 
 bookTimeLabel=new JLabel("出版时间:"); 
 
 bookNumText=new JTextField(10); 
 bookNameText=new JTextField(10); 
 bookWriterText=new JTextField(10); 
 bookPublishText=new JTextField(10); 
 bookPriceText=new JTextField(10); 
 bookTimeText=new JTextField(9); 
 
 submitBut=new JButton("确认"); 
 cancelBut=new JButton("取消"); 
 submitBut.addActionListener(this); 
 cancelBut.addActionListener(this); 
 this.setBounds(350,150,400,260); 
 this.setResizable(false); 
 this.setLayout(new BorderLayout()); 
 initLayout(); 
 } 
 public void initLayout(){ 
 Container[] con1=new Container[6]; 
 for(int i=0;i<6;i++) con1[i]=new Container(); 
 con1[0].setLayout(new FlowLayout()); 
 con1[0].add(bookNumLabel); 
 con1[0].add(bookNumText); 
 
 con1[1].setLayout(new FlowLayout()); 
 con1[1].add(bookNameLabel); 
 con1[1].add(bookNameText); 
 
 con1[2].setLayout(new FlowLayout()); 
 con1[2].add(bookWriterLabel); 
 con1[2].add(bookWriterText); 
 
 con1[3].setLayout(new FlowLayout()); 
 con1[3].add(bookPublishLabel); 
 con1[3].add(bookPublishText); 
 
 con1[4].setLayout(new FlowLayout()); 
 con1[4].add(bookPriceLabel); 
 con1[4].add(bookPriceText); 
 
 con1[5].setLayout(new FlowLayout()); 
 con1[5].add(bookTimeLabel); 
 con1[5].add(bookTimeText); 
 
 Container con2=new Container(); 
 con2.setLayout(new BorderLayout()); 
 con2.add(con1[0],BorderLayout.NORTH); 
 con2.add(con1[1],BorderLayout.CENTER); 
 con2.add(con1[2],BorderLayout.SOUTH); 
 
 Container con3=new Container(); 
 con3.setLayout(new BorderLayout()); 
 con3.add(con1[3],BorderLayout.NORTH); 
 con3.add(con1[4],BorderLayout.CENTER); 
 con3.add(con1[5],BorderLayout.SOUTH); 
 
 Container con4=new Container(); 
 con4.setLayout(new FlowLayout()); 
 con4.add(submitBut); 
 con4.add(cancelBut); 
 Container con5=new Container(); 
 con5.setLayout(new BorderLayout()); 
 con5.add(con2,BorderLayout.NORTH); 
 con5.add(con3,BorderLayout.CENTER); 
 con5.add(con4,BorderLayout.SOUTH); 
 
 this.add(con5,BorderLayout.CENTER); 
 this.validate(); 
 this.setVisible(true); 
 } 
 @Override 
 public void actionPerformed(ActionEvent e) { 
 // TODO Auto-generated method stub 
 if(e.getSource()==submitBut){ 
 if(bookNumText.getText().equals("")||bookNameText.getText().equals("")|| 
  bookWriterText.getText().equals("")||bookPublishText.getText().equals("")|| 
  bookPriceText.getText().equals("")||bookTimeText.getText().equals("")){ 
 //System.out.println("输入失败"); 
 JOptionPane.showMessageDialog(this,"输入不能有空", "提示",JOptionPane.PLAIN_MESSAGE); 
 } 
 else{ 
 //System.out.println("输入成功"); 
 String sql="insert into " 
  + "book_info(book_num,book_name,book_writer,publish_house,book_price,publish_time)" 
  + "values('"+bookNumText.getText()+"','"+bookNameText.getText()+"','"+bookWriterText.getText()+"','"+bookPublishText.getText()+"','"+bookPriceText.getText()+"','"+bookTimeText.getText()+"')"; 
 try { 
  BookTableModel book=new BookTableModel(); 
  book.addBook(sql); 
 } catch (SQLException e1) { 
  // TODO Auto-generated catch block 
  e1.printStackTrace(); 
 } 
 JOptionPane.showMessageDialog(this,"添加成功", "提示",JOptionPane.PLAIN_MESSAGE); 
 this.setVisible(false); 
 } 
 } 
 if(e.getSource()==cancelBut){ 
 this.setVisible(false); 
 } 
 } 
} 

ModifyBook.java

package librarySystem; 
 
import java.awt.*; 
import java.awt.event.*; 
import java.sql.SQLException; 
import javax.swing.*; 
 
@SuppressWarnings("serial") 
public class ModifyBook extends JDialog implements ActionListener{ 
 private JLabel bookNumLabel; 
 private JLabel bookNameLabel; 
 private JLabel bookWriterLabel; 
 private JLabel bookPublishLabel; 
 private JLabel bookPriceLabel; 
 private JLabel bookTimeLabel; 
 private JTextField bookNumText; 
 private JTextField bookNameText; 
 private JTextField bookWriterText; 
 private JTextField bookPublishText; 
 private JTextField bookPriceText; 
 private JTextField bookTimeText; 
 private JButton submitBut; 
 private JButton cancelBut; 
 private BookTableModel bookModel; 
 private int rowNum; 
 public ModifyBook(Frame owner,String title,boolean type,BookTableModel model,int row){ 
 super(owner,title,type); 
 bookModel=model; 
 rowNum=row; 
 bookNumLabel=new JLabel("书 号:"); 
 bookNameLabel=new JLabel("书 名:"); 
 bookWriterLabel=new JLabel("作 者:"); 
 bookPublishLabel=new JLabel("出版社:"); 
 bookPriceLabel=new JLabel("价 格:"); 
 bookTimeLabel=new JLabel("出版时间:"); 
 
 bookNumText=new JTextField(10); 
 bookNameText=new JTextField(10); 
 bookWriterText=new JTextField(10); 
 bookPublishText=new JTextField(10); 
 bookPriceText=new JTextField(10); 
 bookTimeText=new JTextField(9); 
 
 submitBut=new JButton("确认修改"); 
 cancelBut=new JButton("取消"); 
 submitBut.addActionListener(this); 
 cancelBut.addActionListener(this); 
 this.setBounds(350,150,400,260); 
 this.setResizable(false); 
 this.setLayout(new BorderLayout()); 
 this.setValue(); 
 this.initLayout(); 
 
 } 
 public void initLayout(){ 
 Container[] con1=new Container[6]; 
 for(int i=0;i<6;i++) con1[i]=new Container(); 
 con1[0].setLayout(new FlowLayout()); 
 con1[0].add(bookNumLabel); 
 con1[0].add(bookNumText); 
 
 con1[1].setLayout(new FlowLayout()); 
 con1[1].add(bookNameLabel); 
 con1[1].add(bookNameText); 
 
 con1[2].setLayout(new FlowLayout()); 
 con1[2].add(bookWriterLabel); 
 con1[2].add(bookWriterText); 
 
 con1[3].setLayout(new FlowLayout()); 
 con1[3].add(bookPublishLabel); 
 con1[3].add(bookPublishText); 
 
 con1[4].setLayout(new FlowLayout()); 
 con1[4].add(bookPriceLabel); 
 con1[4].add(bookPriceText); 
 
 con1[5].setLayout(new FlowLayout()); 
 con1[5].add(bookTimeLabel); 
 con1[5].add(bookTimeText); 
 
 Container con2=new Container(); 
 con2.setLayout(new BorderLayout()); 
 con2.add(con1[0],BorderLayout.NORTH); 
 con2.add(con1[1],BorderLayout.CENTER); 
 con2.add(con1[2],BorderLayout.SOUTH); 
 
 Container con3=new Container(); 
 con3.setLayout(new BorderLayout()); 
 con3.add(con1[3],BorderLayout.NORTH); 
 con3.add(con1[4],BorderLayout.CENTER); 
 con3.add(con1[5],BorderLayout.SOUTH); 
 
 Container con4=new Container(); 
 con4.setLayout(new FlowLayout()); 
 con4.add(submitBut); 
 con4.add(cancelBut); 
 Container con5=new Container(); 
 con5.setLayout(new BorderLayout()); 
 con5.add(con2,BorderLayout.NORTH); 
 con5.add(con3,BorderLayout.CENTER); 
 con5.add(con4,BorderLayout.SOUTH); 
 this.add(con5,BorderLayout.CENTER); 
 this.validate(); 
 this.setVisible(true); 
 } 
 public void setValue(){ 
 this.bookNumText.setText((String) bookModel.getValueAt(rowNum, 0)); 
 this.bookNumText.setEditable(false); 
 
 this.bookNameText.setText((String) bookModel.getValueAt(rowNum, 1)); 
 this.bookWriterText.setText((String) bookModel.getValueAt(rowNum, 2)); 
 this.bookPublishText.setText((String) bookModel.getValueAt(rowNum, 3)); 
 this.bookTimeText.setText((String) bookModel.getValueAt(rowNum, 4)); 
 this.bookPriceText.setText((String) bookModel.getValueAt(rowNum, 5)); 
 this.validate(); 
 } 
 @Override 
 public void actionPerformed(ActionEvent e) { 
 // System.out.println(bookPriceText.getText()); 
 // TODO Auto-generated method stub 
 if(e.getSource()==submitBut){ 
 if(bookNumText.getText().equals("")||bookNameText.getText().equals("")|| 
  bookWriterText.getText().equals("")||bookPublishText.getText().equals("")|| 
  bookPriceText.getText().equals("")||bookTimeText.getText().equals("")){ 
 //System.out.println("输入失败"); 
 JOptionPane.showMessageDialog(this,"修改不能有空", "提示",JOptionPane.PLAIN_MESSAGE); 
 } 
 else{ 
 int n = JOptionPane.showConfirmDialog(null, "确认修改吗?", "确认修改框", JOptionPane.YES_NO_OPTION); 
 if (n == JOptionPane.YES_OPTION) { 
  String sql="UPDATE book_info SET book_name ='"+bookNameText.getText()+"', book_writer= '"+bookWriterText.getText()+"',publish_house='"+bookPublishText.getText()+"',book_price='"+bookPriceText.getText()+"',publish_time='"+bookTimeText.getText()+"' WHERE book_num = '"+bookNumText.getText()+"' "; 
  try { 
  BookTableModel book=new BookTableModel(); 
  book.addBook(sql); 
  } catch (SQLException e1) { 
  // TODO Auto-generated catch block 
  e1.printStackTrace(); 
  } 
  JOptionPane.showMessageDialog(this,"修改成功", "提示",JOptionPane.PLAIN_MESSAGE); 
  this.setVisible(false); 
 } else if (n == JOptionPane.NO_OPTION) { 
  return; 
 } 
 } 
 } 
 if(e.getSource()==cancelBut){ 
 this.setVisible(false); 
 } 
 } 
} 

程序运行结果:主界面:

查询界面:

添加图书界面:

修改界面:

删除操作:

数据库界面:

关于管理系统的更多内容请点击《管理系统专题》进行学习

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 彻底理解Spring注解@Autowired实现原理

    彻底理解Spring注解@Autowired实现原理

    这篇文章主要为大家详细的介绍了Spring注解@Autowired实现的原理,缜密的逻辑分析,实践应用示例操作说明,让大家彻底的理解Spring注解@Autowired背后实现原理
    2022-03-03
  • JAVA实现链表面试题

    JAVA实现链表面试题

    这篇文章主要为大家详细介绍了JAVA相关实现链表的面试题,代码实现非常详细,每一个方法讲解也很到位,特别适合参加Java面试的朋友阅读
    2015-09-09
  • 详解JNI到底是什么

    详解JNI到底是什么

    JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互
    2021-06-06
  • 深入了解Java排序算法

    深入了解Java排序算法

    本文主要介绍了深入了解Java排序算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2007-03-03
  • Spring Boot调用 Shell 脚本实现看门狗功能

    Spring Boot调用 Shell 脚本实现看门狗功能

    这篇文章主要介绍了Spring Boot调用 Shell 脚本实现看门狗功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • java四种引用及在LeakCanery中应用详解

    java四种引用及在LeakCanery中应用详解

    这篇文章主要介绍了java四种引用及在LeakCanery中应用,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 使用jps命令查看Java进程的详细指南

    使用jps命令查看Java进程的详细指南

    jps是Java开发者和系统管理员的得力助手,它简化了Java进程监控的过程,使得快速检查应用运行状态变得轻而易举,在Java开发和运维场景中,jps是一个非常实用的命令行工具,本文介绍了如何有效地使用 jps命令来查看Java进程的详细指南,需要的朋友可以参考下
    2024-10-10
  • java线程池ThreadPoolExecutor的八种拒绝策略示例详解

    java线程池ThreadPoolExecutor的八种拒绝策略示例详解

    ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当池子体积不够承载时,就涉及到拒绝策略。JDK中已预设了 4 种线程池拒绝策略,下面结合场景详细聊聊这些策略的使用场景以及还能扩展哪些拒绝策略
    2021-11-11
  • Idea 解决 Could not autowire. No beans of ''xxxx'' type found 的错误提示

    Idea 解决 Could not autowire. No beans of ''xxxx'' type found

    这篇文章主要介绍了Idea 解决 Could not autowire. No beans of 'xxxx' type found 的错误提示,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • MAC下如何设置JDK环境变量

    MAC下如何设置JDK环境变量

    这篇文章主要介绍了MAC下如何设置JDK环境变量问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论