读书笔记-Java网络编程安全教程-微课版

本书涵盖Java网络编程基础知识,包括IO流、ServerSocket多线程通信、非阻塞I/O NIO、UDP、TCP文件传输,深入讲解SSL/TLS、网络抓包、邮件、WebSocket等,并探讨Node.js、MongoDB及Android实时通信。适合进阶学习。
摘要由CSDN通过智能技术生成

Java网络编程安全教程 清华大学出版社 ISBN-9787302482833

仅供参考, 自建索引, 以备后查

https://docs.oracle.com/javase/6/docs/api/index.html

https://docs.oracle.com/javase/7/docs/api/index.html

https://docs.oracle.com/javase/8/docs/api/index.html

=================================================================

一: 简介概述 IO流

java.io.*       java.nio.*       java.nio.channels.*

InputStream  OutputStream  字节流

Reader Writer  字符流

InputStreamReader  OutputStreamWriter  字节流与字符流转换

FileInputStream/FileOutputStream    二进制流

BufferedInputStream/BufferedOutputStream   二进制缓冲流

DataInputStream/DataOutputStream    数据流

 

HTTP/SMTP/POP3/FTP/Telnet/DHCP  应用层+表示层+会话层= *应用层

TCP/IP *传输层 + *网络层

MAC地址  数据链路层+物理层= *网络接口层

TCP-IP-OSI-协议栈模型

 

SOCKET是操作系统开放给程序员的网络编程接口

传输层以下协议的技术实现是由操作系统完成的,即网络服务由操作系统提供

SOCK_STREAM流式套接字  SOCK_DGRAM数据报套接字  SOCK_RAW原始套接字

通信端口  0~65535

 

线程:  新生new  等待系统分配CPU执行start   执行run   阻塞wait/sleep/join/yield   消亡throw/interrept/stop

ServerSocket/Socket   DatagramPacket/DatagramSocket

 

=================================================================

二: ServerSocket多线程与Client通信

ServerSocket ss = new ServerSocket();

ss.bind(..);

while (true) {

    Socket client = ss.accept();
    new ClientSocketHandlerThread(client).start();

}
Class ClientSocketHandlerThread implements Runnable {
    ClientSocketHandlerThread(Socket s) {
        // TODO
    }
    public void run() {
        // TODO
    }
}

SwingWorker<T,V> implements Runnable, Future<T>, RunnableFuture<T>

doInBackground()      publish()     process()    done()    get()

 

=================================================================

三: ServerSocket多线程与Client通信+线程池

最佳线程池大小 = Runtime.getRuntime().availableProcessors() * 2 + 1

int MAX = Runtime.getRuntime().availableProcessors() * 2 + 1;
ExecutorService fixedPool = Executors.newFixThreadPool(MAX);

ServerSocket ss = new ServerSocket();

ss.bind(..);

while (true) {

    Socket client = ss.accept();
    /// 在线程池中执行 
    fixedPool.exec( new ClientSocketHandlerThread(client) );

}
fixedPool.shutdown(); /// 等待线程池中所有线程执行完毕,此时已经不能再向线程池添加线程
if ( ! fixedPoo.awaitTermination(60, TimeUnit.SECONDS) ) {
    fixedPool.shutdownNow(); /// 如果60S还没结束则强制关闭
}

/ 下面是API文档的示例
The following method shuts down an ExecutorService in two phases, 
first by calling shutdown to reject incoming tasks, and then calling 
shutdownNow, if necessary, to cancel any lingering tasks:
 void shutdownAndAwaitTermination(ExecutorService pool) {
   pool.shutdown(); // Disable new tasks from being submitted
   try {
     // Wait a while for existing tasks to terminate
     if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {
       pool.shutdownNow(); // Cancel currently executing tasks
       // Wait a while for tasks to respond to being cancelled
       if (!pool.awaitTermination(60, TimeUnit.SECONDS))
           System.err.println("Pool did not terminate");
     }
   } catch (InterruptedException ie) {
     // (Re-)Cancel if current thread also interrupted
     pool.shutdownNow();
     // Preserve interrupt status
     Thread.currentThread().interrupt();
   }
 }

Executor

void execute(..)   无参数返回 

ExecutorService

Future<?> submit(..)  返回Future对象

T invokeAny(Collection<?>...)   执行一组任务,返回其中一个结果,通常情况下是最先执行完毕的那个

List<Future<?>> invokeAll(Collection<?>...)  返回所有任务的Future对象

更多线程、线程池参考 Java并发编程从入门到精通

 

=================================================================

四: 非阻塞I/ O NIO:(1)New I/O (2)Non-Blocking I/O

ServerSocket/Socket      ServerSocketChannel/SocketChannel

DatagramSocket/DatagramPacket     DatagramChannel

Selector/SelectionKey轮询机制

Buffer   ByteBuffer/CharBuffer/DoubleBuffer/FloatBuffer/IntBuffer/LongBuffer/ShortBuffer

allocate() [ˈæləkeɪt]  read()  write()  clear()  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值