javaSE进阶第一周

First_Week

day02

1.添加点击事件
	jb41.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				new Search().addfriends();
				//jf.dispose();
			}
		});
// 给按钮jb41添加点击事件
// new Search().addfriends();跳转到该界面

	jp31.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				new Communicate().init();
			}
		});
// 添加鼠标点击事件的时候,需要使用MouseListener(),但是他需要实现很多的方法,所以使用匿名内部类的方式来实现,使用适配器的方式。继承MouseListener()类。只需要实现需要实现的方法即可。
2.添加图片
jb11.setIcon(new ImageIcon("img\\headerme.png"));
//使用的容器是JLabel

父元素设置了绝对布局,子元素也必须要有绝对布局

3.关于JTable的使用
private JTable jt;
private JScrollPane jsp;
jt = new JTable(rows,header);
jsp = new JScrollPane(jt);
// 使用JTable时候,必须将jt加到JScrollPane中去,否则没有表头。

day03

一、数据库的相关知识

二、多线程编程知识

1.单线程通信
Client
public static void main(String[] args) throws IOException {
// 连接服务器
Socket s = new Socket("192.168.45.29",8888);
		// 输出流
		OutputStream o = s.getOutputStream();
		PrintStream ps = new PrintStream(o);
		// 输入流,InputStreamReader(System.in)用来不断的读取键盘输入的信息
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = null;
		while( (line = br.readLine()) != null ){
            // 将从键盘接受到的信息,发送给服务器
			ps.println(line);
            // 刷新缓存
			ps.flush();
		}
}
Server
public static void main(String[] args) throws IOException {
		// 启动一个端口
		ServerSocket ss = new ServerSocket(8888);
    	// 用来接受来自客户端的请求
		Socket s = ss.accept();
		
		String line = null;
		// 读取来自客户端的消息
BufferedReader bd = new BufferedReader(new  InputStreamReader(s.getInputStream()));
	while( (line = bd.readLine()) != null){
        // 打印并输出来
			System.out.println(line);
		}
	}
2.多线程通信
Client
public class Client {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		Socket s = new Socket("localhost",8888);
		
		ClientThread clientThread = new ClientThread(s);
        // 在输入之前首先启动一个线程
		clientThread.start();
		// 输出信息的流--- 即要给服务器发送消息是使用的流
		OutputStream o = s.getOutputStream();
		PrintStream ps = new PrintStream(o);
		
        *** 特别注意****
        在不断的接收键盘输入之前,必须先启动一个线程,否则就会被阻塞到键盘的输入那里
        
        // 不断的读取键盘的输入
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = null;
		while( (line = br.readLine()) != null ){
            // 将从键盘输入接收到的信息发送到服务器端
			ps.println(line);
			ps.flush();
		}
		
	}

}
// 定义一个客户端的类,是这个类继承线程
class ClientThread extends Thread{
	private Socket socket;
	// 通过构造方法来通知客户端连接了那个服务器
	public ClientThread(Socket socket){
		this.socket = socket;
	}
    // 重写run方法
	@Override
	public void run() {
		try {
			String line = null;
            // 不断的接收服务器发送过来的信息
BufferedReader bd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			while( (line = bd.readLine()) != null ){
                // 把从服务器接收到的信息,打印出来
				System.out.println(line);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}

Server
public class Server {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		ServerSocket ss = new ServerSocket(8888);
        // 使用循环来不断的接收客户端发来的请求,并且连接通
		while(true){
			Socket s = ss.accept();
			ReadThred thred = new ReadThred(s);
			thred.start();
		}
	}
}

class ReadThred extends Thread{
	private Socket socket;
	// 通过构造方法来通知服务器
	public ReadThred(Socket socket){
		this.socket = socket;
	}
	
	@Override
	public void run() {
		String line = null;	
		try {
            // 发送信息到服务器
			OutputStream o = socket.getOutputStream();
			PrintStream ps = new PrintStream(o);
            // 接收来自客户端的消息
			BufferedReader bd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			while( (line = bd.readLine()) != null){
                // 将接收到的信息添加hello以后写给客户端
				ps.println("hello"+line);
                // 输出来自客户端的消息
				System.out.println(line);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	
}
3.线程知识
3.1什么是线程
线程是程序的一条执行线索,执行路径,是程序使用cpu的最小单位。线程本身不能运行,它只能运行在程序中,线程是依赖于程序存在的。
3.2实现方式
class ClientThread extends Thread // 继承Thread
class ClientThread implements Runable // 实现Runable接口

Thread类实现了Runable这个接口

class Thread implements Runnable

day04

1.ArrayList集合

Set集合、Map类似

1.添加
arrs.add("lisi");// 追加
arrs.add(0, "张三");// 插入
2.删除
arrs.remove(0);
arrs.remove("lisi");
3.修改
arrs.set(0, "王五");
4.查询
4.1 普通for循环
for (int i = 0; i < arrs.size(); i++) {
			System.out.println(arrs.get(i)+"-----");
		}
4.2 foreach循环
for (String string : arrs) {
		System.out.println(string+"======");	
		}
4.3 Iteator
Iterator<String> iterator = arrs.iterator();
		while(iterator.hasNext()){
			System.out.println(iterator.next());
		}
2.HashMap的使用
HashMap<String,Integer> maps = new HashMap<String,Integer>();
		// 遍历所有条目
		// 一
		Set<String> keySet = maps.keySet();
		for (String string : keySet) {
			System.out.println(string+"\t"+maps.get(string));
		}
		// 二
		Set<Entry<String,Integer>> entrySet = maps.entrySet();
		Iterator<Entry<String, Integer>> iterator = entrySet.iterator();
		System.out.println("----------------------");
		while(iterator.hasNext()){
			Entry<String, Integer> next = iterator.next();
			System.out.println(next.getKey()+"\t"+next.getValue());
		}
		

day05

有关序列化:对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;从字节流创建对象的相反的过程称为反序列化

public class Member implements Serializable{}
1.Model的建立一般规则

一般来说,需要建立是三个构造方法:一个是空构造方法,一个是全参的构造方法,一个不包含id的构造方法

	// 空的构造方法
	public Member() {
		super();
	}
	// 没有id的构造方法
	public Member(String name, String nickname, String signature,
			String password, String header) {
		super();
		this.name = name;
		this.nickname = nickname;
		this.signature = signature;
		this.password = password;
		this.header = header;
	}
	// 所有参数的构造方法
	public Member(int id, String name, String nickname, String signature,
			String password, String header) {
		super();
		this.id = id;
		this.name = name;
		this.nickname = nickname;
		this.signature = signature;
		this.password = password;
		this.header = header;
	}

day06

项目架构

层次划分作用
service:业务逻辑层UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等
dao:数据访问层与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。
model(po):模型层(界面层)主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

异常处理(一)

空指针异常:

一般都是“.”之前的变量未定义,
比如:memberService.isExist(member.getName()) 这一行代码报异常,可能就是memberService没有定义。
IMemberService memberService = null;只有初始化了才可以使用。

问题一:对于类变量的使用,结果在刚开始启动个线程,将登录界面存储,再次调用的时候,会出现空指针异常,这里的话,就不可以在注册成功以后直接调用。

// 将用户名设置到登录界面的框内
JFrameUtils.loginui.getJtd().setText(strs[2]);
new LoginUI().init();(正确)
JFrameUtils.loginui.init();(错误)
// 定义的工具类
public class JFrameUtils {
	public static LoginUI loginui;
	public static RegisterUI registerui;
	public static MainUI mainui;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值