Java高级
- 0. 前置知识
- 0.1 TCP/UDP握手机制
- 0.2 InetAddress使用
- 1. 网络编程
- 1.1 TCP编程
- 1.2 netstat
- 1.3 UDP编程
- 2. 多用户通讯系统
- 3. 反射
- 4. 访问DB
- 4.1 连接DB及基本操作
- 4.2 连接池
- 4.3 初级封装 Apache DBUtils
0. 前置知识
0.1 TCP/UDP握手机制
TCP:可靠,用于传送大量数据,需释放连接
UDP:不需建立连接,不可靠但效率高
0.2 InetAddress使用
1. 网络编程
1.1 TCP编程
依赖socket
与文件流联系紧密
socket编程流程:
客户端和服务器端各有一个socket对象
server
client
服务器和客户端都在写入时,要设置结束标记,不然不知道什么时候结束
换为字符流
1.2 netstat
netstat -anb 同时查看哪个程序在用这个端口(管理员身份)
1.3 UDP编程
行为主体:DatagramSocket
转发的数据包:DatagramPacket
2. 多用户通讯系统
代码可参考 这位老哥
3. 反射
能够在不修改源码的情况下,来控制程序。反射属于 动态加载
每个类在第一次加载时,系统会创建一个 Class类的对象(Class类就是一个比较特殊的类,继承了Object,用于映射),此对象存在于堆中
怎么创建这个对象的?通过ClassLoader的loadClass方法
拿到一个类的Class类对象,就能得到该类的所有属性/方法/构造器,然后就可以为所欲为
映射机制是Java框架的基础,但是耗时长
4. 访问DB
4.1 连接DB及基本操作
连接DB几大件:
- connection
- conn.prepareStatement 获取预编译的SQL语句,以?的形式防止
- set = prepareStatement.executeQ 获取查询结果集
注:关闭连接的时候以上三个都要关闭
JavaBean:将DB中的一个表对应成一个Java类,此类需提供无/有参构造函数+set/get各个属性的方法
4.2 连接池
JDBC:表示操作DB的工具,DB原生厂商提供的操作DB工具,涉及事务操作和批处理等。
在实际开发中为了方便连接访问DB,考虑连接复用,进而衍生出连接池
eg. 德鲁伊实现的JDBC
常见连接池:
- Druid德鲁伊连接池:阿里实现,连接多的时候(50w)也很快,不会增长多少
- C3P0:老牌,胜在连接稳定
注:断开连接不是真的跟DB断开,而是把conn放回连接池
4.3 初级封装 Apache DBUtils
对JDBC进行封装,持久化查询结果
+Durid管理连接池
eg.
缺点:SQL固定,函数返回值固定,表越多JavaBean越多,不好管理
引出DAO,后见Spring等