言尽于此,完结
无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。
- 第一,设计模式能让专业人之间交流方便,如下:
程序员A:这里我用了XXX设计模式
程序员B:那我大致了解你程序的设计思路了
- 第二,易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
- 第三,设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
- 第四,学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
搜集费时费力,能看到此处的都是真爱!
}
public void setUnit_price(String unit_price) {
this.unit_price = unit_price;
}
public String getMember_price() {
return member_price;
}
public void setMember_price(String member_price) {
this.member_price = member_price;
}
}
3、com.test.Vive >> MainFrame
package com.test.Vive;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import com.test.Controller.Select;
import com.test.Entity.tb_items;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MainFrame extends JFrame {
Object[] columnNames = {“商品编号”,“名称”,“类别名称”,“库存”};
Object[][] data = Select.getTb_items();
DefaultTableModel df = new DefaultTableModel(data, columnNames);
JTable jTable;
public MainFrame() {
super(“消费项管理”);
this.setBounds(0, 0, 800, 500);
this.setLocationRelativeTo(null);//让窗口在屏幕中间显示
this.setResizable(false);//让窗口大小不可改变
getContentPane().setLayout(null);
jTable=new JTable(df);
JScrollPane jp = new JScrollPane(jTable);
jp.setBounds(0, 87, 794, 350);
getContentPane().add(jp);
JButton jubtton_Add = new JButton(“新增”);
jubtton_Add.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
IncreaseGUL increaseGUL = new IncreaseGUL();
increaseGUL.setVisible(true);
}
});
jubtton_Add.setBounds(522, 31, 87, 34);
getContentPane().add(jubtton_Add);
JButton jubtton_Revise = new JButton(“修改”);
jubtton_Revise.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (jTable.getSelectedColumn()<0) {
JOptionPane.showMessageDialog(null, “请选择要修改的数据!”);
} else {
tb_items items = new tb_items();
items.setId(Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString()));
items.setItem_name(jTable.getValueAt(jTable.getSelectedRow(), 1).toString());
items.setUnit_price(jTable.getValueAt(jTable.getSelectedRow(), 2).toString());
items.setMember_price(jTable.getValueAt(jTable.getSelectedRow(), 3).toString());
ModifyGUI modifyGUI = new ModifyGUI(items);
modifyGUI.setVisible(true);
}
}
});
jubtton_Revise.setBounds(642, 31, 80, 34);
getContentPane().add(jubtton_Revise);
}
}
4、com.test.Vive >> IncreaseGUL
package com.test.Vive;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import com.test.Controller.Updata;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class IncreaseGUL extends JFrame{
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
public IncreaseGUL() {
super(“新增消费项”);
this.setBounds(0, 0, 491, 341);
this.setLocationRelativeTo(null);//让窗口在屏幕中间显示
this.setResizable(false);//让窗口大小不可改变
getContentPane().setLayout(null);
JLabel label = new JLabel(“名称”);
label.setBounds(85, 52, 72, 18);
getContentPane().add(label);
textField = new JTextField();
textField.setBounds(138, 49, 172, 24);
getContentPane().add(textField);
textField.setColumns(10);
JLabel label_1 = new JLabel(“单价”);
label_1.setBounds(85, 101, 72, 18);
getContentPane().add(label_1);
textField_1 = new JTextField();
textField_1.setColumns(10);
textField_1.setBounds(138, 98, 172, 24);
getContentPane().add(textField_1);
JLabel label_1_1 = new JLabel(“会员价”);
label_1_1.setBounds(85, 146, 72, 18);
getContentPane().add(label_1_1);
textField_2 = new JTextField();
textField_2.setColumns(10);
textField_2.setBounds(138, 143, 172, 24);
getContentPane().add(textField_2);
JButton button = new JButton(“新增”);
button.setBounds(85, 218, 113, 27);
getContentPane().add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//INSERT INTO tb_items
VALUES (‘1’, ‘外套’, ‘10.0’, ‘9.0’);
String sql = “INSERT INTO tb_items VALUES (null, '”+textField.getText()+“', '”+textField_1.getText()+“', '”+textField_2.getText()+“');”;
int result = Updata.addData(sql);
if (result>0) {
JOptionPane.showMessageDialog(null, “新增成功!”);
MainFrame m =new MainFrame();
m.dispose();
m.setVisible(true);
dispose();
} else {
JOptionPane.showMessageDialog(null, “新增失败!”);
}
}
});
JButton button_1 = new JButton(“返回”);
button_1.setBounds(265, 218, 113, 27);
getContentPane().add(button_1);
button_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
}
}
5、com.test.Vive >> ModifyGUI
package com.test.Vive;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import com.test.Controller.Updata;
import com.test.Entity.tb_items;
public class ModifyGUI extends JFrame{
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
public ModifyGUI(tb_items items) {
super(“消费项修改”);
this.setBounds(0, 0, 491, 341);
this.setLocationRelativeTo(null);//让窗口在屏幕中间显示
this.setResizable(false);//让窗口大小不可改变
getContentPane().setLayout(null);
JLabel label = new JLabel(“消费项”);
label.setBounds(38, 65, 72, 18);
getContentPane().add(label);
textField = new JTextField();
textField.setBounds(95, 62, 129, 24);
getContentPane().add(textField);
textField.setColumns(10);
textField.setText(items.getItem_name());
JLabel label_1 = new JLabel(“单价”);
label_1.setBounds(254, 65, 72, 18);
getContentPane().add(label_1);
textField_1 = new JTextField();
textField_1.setColumns(10);
textField_1.setBounds(311, 62, 129, 24);
getContentPane().add(textField_1);
textField_1.setText(items.getUnit_price());
textField_2 = new JTextField();
textField_2.setColumns(10);
textField_2.setBounds(95, 129, 129, 24);
getContentPane().add(textField_2);
textField_2.setText(items.getMember_price());
JLabel label_2 = new JLabel(“会员价”);
label_2.setBounds(38, 132, 72, 18);
getContentPane().add(label_2);
JButton button = new JButton(“修改”);
button.setBounds(85, 218, 113, 27);
getContentPane().add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String sql = “UPDATE tb_items SET item_name='”+textField.getText()+“‘,unit_price=’”+textField_1.getText()+“‘,member_price=’”+textField_2.getText()+“’ WHERE id=”+items.getId()+“”;
int result = Updata.addData(sql);
if (result>0) {
JOptionPane.showMessageDialog(null, “修改成功!”);
dispose();
} else {
JOptionPane.showMessageDialog(null, “修改失败!”);
}
}
});
JButton button_1 = new JButton(“返回”);
button_1.setBounds(265, 218, 113, 27);
getContentPane().add(button_1);
button_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
}
}
6、com.test.Vive >> Select
package com.test.Controller;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import com.test.Dao.DbConnection;
import com.test.Entity.tb_items;
public class Select {
public static Object[][] getTb_items() {
String sql = “SELECT * FROM tb_items”;
ResultSet resultSet = DbConnection.query(sql);
ArrayList<tb_items> list=new ArrayList<tb_items>();
try {
while (resultSet.next()) {
tb_items tb=new tb_items();
tb.setId(resultSet.getInt(1));
tb.setItem_name(resultSet.getString(2));
tb.setUnit_price(resultSet.getString(3));
tb.setMember_price(resultSet.getString(4));
list.add(tb);
}
} catch (SQLException e) {
e.printStackTrace();
}
Object[][] objects=new Object[list.size()][4];
for(int i=0;i<list.size();i++) {
objects[i][0]=list.get(i).getId();
objects[i][1]=list.get(i).getItem_name();
objects[i][2]=list.get(i).getUnit_price();
objects[i][3]=list.get(i).getMember_price();
}
return objects;
}
}
7、com.test.Vive >> Updata
package com.test.Controller;
import com.test.Dao.DbConnection;
public class Updata {
//添加数据
public static int addData(String sql) {
return DbConnection.updataInfo(sql);
}
}
8、com.test.Vive >> Test
package com.test.Test;
2021年Java中高级面试必备知识点总结
在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。
本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。
目录:
(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)
部分内容:
对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。
目录:
[外链图片转存中…(img-auTK7VT9-1715701864139)]
(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)
[外链图片转存中…(img-EdSLuQgw-1715701864140)]
部分内容:
[外链图片转存中…(img-tbKCMCQM-1715701864140)]
[外链图片转存中…(img-PaOlrHZi-1715701864141)]
[外链图片转存中…(img-DhFYeF91-1715701864141)]
对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注