2017-9-8 - A - WebServer项目

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 如何理解线程的同步和异步?
同步:各干各的
异步:顺序执行

时间: 2024-12-09 06:13:49

2017-9-8 - A - WebServer项目的相关文章

2017 码云最火爆开源项目 TOP 50,你都用过哪些

本文转自:https://share.html5.qq.com/fx/u?r=JdjvzwC 2017 年度码云热门项目排行榜 TOP 50 出炉啦!我们根据所有开源项目在码云的用户关注度.活跃度.访问量等信息来对"热门"进行量化,从而筛选出了其中最"热门"的 50 个,它在一定程度上预示着业界的最新流行趋势. 值得注意的是,榜单中涌现出了不少新兴项目,由此可见,国内的开源气氛越来越好,国内的开源也在蓬勃发展. 前 20 名预览 排名 软件 排名 软件 1 zhen

2017 年度码云新增项目排行榜 TOP 50,为它们打“call”

2017 年度码云新增项目排行榜 TOP 50 正式出炉 !2017 结束了,我们来关注一下这一年里码云上新增的最热门的开源项目吧.此榜单根据 2017 年在码云上新增开源项目的 Watch.Star.Fork 数量以及其他角度进行统计,从而得出前 50 名最热门的开源项目. 码云发展至今,越来越多的开源作者选择在上面开源自己的作品,通过这份 2017 码云新增项目 TOP 50 榜单,希望大家可以了解到 2017 年里国内开源的现状,也能在其中找到自己需要的项目. 1.guns Guns 基于

IntelliJ IDEA 2017 配置Tomcat 运行Web项目

以前都用MyEclipse写程序的 突然用了IDEA各种不习惯的说 借鉴了很多网上好的配置办法,感谢各位大神~ 前期准备 IDEA.JDK.Tomcat请先在自己电脑上装好 好么~ 博客图片为主 请多看红框框 开始 1.创建.配置项目 1.1创建项目 New Project - [next] 1.2 给你的项目起名字,选地方 - [finish] 1.3开始配置项目 配置 project structure [F4] 或 项目右键 [Open Module Settings]或 右上角有个黑蓝色

IntelliJ IDEA 2017.3 创建多Module项目时,右边栏出现多个root模块的问题。如图。

我新建了一个项目,里面有三个模块(Module),结果建好后,出现了三个root.然后我发现主模块的pom文件,包含这样一段配置 <modules> <module>design_pattern</module> </modules> 我抱着试试的态度加上了另外两个module,现在只剩一个root了 哎,小弟又是不知道具体什么原因,反正解决了一个疑问.java工程师路漫漫,自己要努力啊. 原文地址:https://www.cnblogs.com/BaleW

2017-9-7 - A - WebServer项目

1 缓冲流的readLine方法是否阻塞?是 2 请求(获取),响应(返回),分别的格式什么?HTTP的规则是什么?http请求格式 一次请求,一次响应,没有请求,没有响应. 3 HTTP协议是什么?超文本传输协议,是浏览器与服务器间的传输通讯协议. 4 HTTP请求由什么组成?请求行,消息头,消息正文. 5 请求行格式是什么?Method Request-URI HTTP-VersionCRLF(CR:指代不同系统中的回车 LF:指代不同系统中的换行--CRLF:换行到最开始,即该行结束)如:

2017-9-7 - Q - WebServer项目

1 缓冲流的readLine方法是否阻塞? 2 请求(获取),响应(返回),分别的格式什么?HTTP的规则是什么? 3 HTTP协议是什么? 4 HTTP请求由什么组成? 5 请求行格式是什么? 6 什么是DNS? 7 CRLF的作用是? 8 服务器可否使用br(BufferedReader)按行快速读取请求头(CRLF换行)?如果不能用什么?具体读取流程是? 9 HTTP请求默认访问什么端口? 11 第一次获取请求头时while(true)中需要包含is吗? 12 当需要同时处理多个用户发送过

2017-9-11 - Q - webServer

2 学习项目的脉络把握才是关键,对项目整体的把握,实际上方法的创建只是其次,学到老师对项目的整体把控才是最有价值的.为什么此处直接定义即可,后续不需要考虑不同情况的处理吗,老师测试方法的思路,new一个类,传入参数,调用方法.post情况下,如果加上传参产生的变化不需要考虑吗?如果是,老师是怎样设计函数达到了这样的效果.结合面向对象思想理解程序流程,整个流程实际上就是初始化各类对象,最后返回目标对象的过程. 技巧①,顺之前的处理思路而下,看哪里涉及到了需要做改变如在file.exists那里的判

2017-9-11 - A - webServer

1 * /index.html * /reg?username=fancq&password=123456&nickname= * 在GET请求中,URI可能会有上面两种情况. * HTTP协议中规定,GET请求中的URI可以传递参数,而规则时请求的资源后面以 * "?"分割,之后则为所有要传递的参数,每个参数由: * name=value的格式保存,每个参数之间使用"&"分割. * 这里的处理要求: * 将"?"之前的内

2017年,随笔汇总

久坐真的是健康杀手,跑步几公里就宕机了.程序员,更是典型的久坐行业,身体才是革命的本钱,希望所有程序员都积极运动起来. 此文章用于记录,2017年内,个人在项目中遇到的问题,或者学习到的知识.(暂时先记录标题,后面再慢慢丰富内容) 版本迭代之js刷新 数据库链接之DBCP MYSQL之存储过程