本周主要是对即时通讯项目的学习和实现,以及对MySQL数据库的学习。
数据库核心知识总结
1. 网络编程
Socket:用于客户端与服务器通信。客户端使用Socket连接服务器,服务器使用ServerSocket监听连接。
协议:常用TCP协议保证数据可靠传输,UDP较少使用但可用于实时性要求高的场景。
2. 数据传输
IO流:通过Socket的输入流和输出流读写数据。可使用字符流或缓冲流提高效率。
数据格式:可采用文本或二进制格式传输数据,也可设计自定义协议(如[消息长度][消息内容])。
3. 多线程
线程创建:服务器端为每个客户端创建一个线程处理消息,可通过实现Runnable接口或继承Thread类。
线程同步:处理共享资源(如消息队列)时,需使用synchronized或Lock进行同步。
4. 消息处理
接收与发送:客户端和服务器通过IO流发送和接收消息。
消息解析:根据协议解析消息,文本格式可使用字符串操作,二进制格式可使用DataInputStream。
5. 异常处理
网络异常:捕获IOException等异常,关闭资源并提示用户。
线程异常:捕获线程中的异常,避免程序崩溃。
MySQL核心知识总结
1. 核心概念
数据库:CREATE DATABASE db_name;
表:CREATE TABLE table_name (id INT PRIMARY KEY, name VARCHAR(50));
字段类型:
数值:INT、DECIMAL
字符串:VARCHAR、TEXT
日期:DATE、DATETIME
主键:唯一标识记录,不能为空。
外键:关联表,引用其他表的主键。
2. SQL语句
DDL(数据定义语言)
创建表:CREATE TABLE table_name (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
修改表:ALTER TABLE table_name ADD COLUMN age INT;
删除表:DROP TABLE table_name;
DML(数据操纵语言)
插入:INSERT INTO table_name (name, age) VALUES ('Alice', 25);
更新:UPDATE table_name SET age = 26 WHERE name = 'Alice';
删除:DELETE FROM table_name WHERE name = 'Alice';
DQL(数据查询语言)
查询:SELECT * FROM table_name WHERE age > 20 ORDER BY age DESC;
分组:SELECT age, COUNT(*) FROM table_name GROUP BY age;
DCL(数据控制语言)
授权:GRANT SELECT, INSERT ON db_name.table_name TO 'user'@'localhost';
撤销:REVOKE SELECT ON db_name.table_name FROM 'user'@'localhost';
3. 索引
作用:加速查询。
创建:CREATE INDEX idx_name ON table_name (column_name);
删除:DROP INDEX idx_name ON table_name;