1 如何将字符串转换为字节型数据?
str.getBytes().
2 业务逻辑要极其清晰,一个方法实现一个功能。
服务器整体业务流程,
新建一个服务器获取请求,读取处理请求,返回请求资源
将后两个流程中包入ClietnHandler(新建类),一旦有新的请求便创建新的线程,由于线程较多,因此需要用线程池管理。
ClientHandler中的主要流程又是run方法,run方法(便是包含获取,读取,处理请求)的流程为,
run方法中便包含了——
①读取请求,将请求项转化为对象,方便后续检索确定返回的数据。
对象包括请求头及消息头查找表,将处理该对象的方法也写入——直接传入输入流,直接将请求转换为请求对象——大大缩减代码量
消息头查找表在使用前必须实例化,不然用不了
跳出循环的判断条件是 返回字符串长度为0 而不是全等于null或""。(StringBuilder内部默认维护一个空字符串)
②返回请求,将响应的属性实例化成一个对象。
请求对象包含:
状态行,响应头(header),响应正文(网页资源)
将对应属性以原生数据类型传入对象,然后直接在内部转换成输出流
可直接用out输出,但更建议加载在缓冲流上输出,大大加快速度
由大至小,不管是在大流程的把握上,还是完善小的分支都要胸有成竹。要一直把控握着whole map。
3 如何优化程序?
写死部分改为可变变量值。
提取共有部分,后面修改只要修改共有部分即可——用XML文件配置。
4 网站加载不出图片有可能是什么原因?
上次请求连接没有关闭,无法发起新的请求。
5 为何需要将响应也打包成一个对象?
方便后续处理,如写出到客户端直接调用响应对象内部的一个方法。
——
今日必完成任务
将今日内容重新复盘敲一遍。
①完成发送网页,若请求文件不存在,返回404
②优化代码
③
6 线程有几种状态?
新建,就绪(Runnable),运行(start——running),阻塞(等待),run方法结束后销毁。
7 如何理解线程的同步和异步?
同步:各干各的
异步:顺序执行