JAVA Coder 的《深入分析Java Web 技术内幕》读书笔记
本文基于《深入分析Java Web 技术内幕》
《深入分析Java Web 技术内幕》,作者是 许令波,电子工业出版社。本文只是记录书本当中的精彩部分,作个人回顾和技术分享,请读者支持正版!
第一章:深入Web请求过程
1.1 B/S网络架构概述
HTTP采用无状态的短连接的通信方式。
当一个用户在浏览器里输入www.taobao.com这个URL时,会请求DNS把这个域名解析成对应的IP地址,然后根据这个IP地址在互联网上找到对应的服务器,向这个服务器发起一个get请求,由这个服务器决定返回默认的数据资源给访问的用户。
1.2 如何发起一个HTTP请求
发起一个http请求的过程就是建立一个Socket的通信过程
1.3HTTP解析
HTTP最重要的就是 HTTP Header,应熟记HTTP常见的Request Header 、Response Header 、Status Code,
在Chrome-->F12-->Network中,可查看相应的信息。
第二章:深入分析Java I/O的工作机制
大部分Web应用系统的瓶颈都是I/O瓶颈,包括Java的I/O类库的基本结构,磁盘I/O工作机制,网络I/O的工作机制
2.1Java的I/O类库的基本结构
基于字节操作的I/O接口:InputStream和OutputStream
基于字符操作的I/O接口:writer reader
基于磁盘操作的I/O接口: File
基于网络操作的I/O接口: Socket
数据格式和传输方式是影响效率的关键
字节和字符之间需要转化
2.3.3Java Socket 的工作机制
Socket建立连接由底层根据TCP/IP协议,建立TCP连接,由IP来寻址网络中的主机
TCP建立连接三次握手---TCP释放连接四次挥手
2.4NIO的工作方式
首先清楚三个概念,BIO--Blocking IO 同步阻塞IO模式,NIO--New IO同时支持阻塞和非阻塞模式,
AIO--Asynchronous IO(JDK7后支持)异步非阻塞模式
第三章:深入分析Java Web中的中文编码问题
做过的项目都是统一使用 utf-8字符编码,不深究。
第四章:Javac编译原理
Javac编译器,将Java源码编译成Java字节码,也就是JVM能够识别的二进制码。表面是将.java文件转化成.class文件,实际上是将Java的源代码转化为一连串二进制数字。Javac主要有4个模块,词法分析器,语法分析器,语义分析器和代码生成器。
第五章:深入class文件结构
略。
第六章:深入分析ClassLoader工作机制
ClassLoader将class加载到JVM中。JVM加载class文件到内存有两种方式:隐式加载和显式加载。
6.4常见的加载类错误分析
ClassNotFoundException-->解决办法:检查当前的classpath目录
ClassCastException
ExceptionInitializerError
第七章:JVM体系结构与工作方式
java能够跨平台,主要是由于JVM屏蔽了与各个计算机平台相关的软件和硬件之间的差异,使得与平台相关的耦合统一由JVM提供者来实现。
JVM主要由四部分组成
1.类加载器,再JVM启动时或者在类运行时将需要的class加载到JVM中。
2.执行引擎,执行引擎的任务是负责执行class文件中包含的字节码指令,相当于实际机器上的CPU。
3.内存区,将内存划分为若干个区以模拟实际机器上的存储、记录和调度功能模块,如实际机器上的各种功能的寄存器或者PC指针的记录器等。
4.本地方法调用,调用C或C++实现的本地方法的代码返回结果。
第八章:JVM内存管理
这一部分内容不如 周志明 的《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)》,机械工业出版社。个人感觉《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)》内容更详细,易于理解。
第九章:Servlet工作原理解析
JAVA Coder 的《深入分析Java Web 技术内幕》读书笔记的更多相关文章
- Struts2技术内幕 读书笔记一 框架的本质
本读书笔记系列,主要针对陆舟所著<<Struts2技术内幕 深入解析Strtus2架构设计与实现原理>>一书.笔记中所用的图片若无特殊说明,就都取自书中,特此声明. 什么是框架 ...
- Struts2技术内幕 读书笔记三 表示层的困惑
表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form ...
- 深入理解linux网络技术内幕读书笔记(三)--用户空间与内核的接口
Table of Contents 1 概论 1.1 procfs (/proc 文件系统) 1.1.1 编程接口 1.2 sysctl (/proc/sys目录) 1.2.1 编程接口 1.3 sy ...
- Struts2技术内幕 读书笔记二 web开发的基本模式
最佳实践 在讨论基本模式之前,我们先说说一个词:最佳实践 任何程序的编写都得遵循一个特定的规范.这种规范有约定俗称的例如:包名全小写,类名每个单词第一个字母大写等等等等;另外还有一些需要我们严格遵守的 ...
- webkit技术内幕读书笔记 (一)
本文部分摘录自互联网. Chromeium与Chrome Chromium是Google为发展自家的浏览器Google Chrome而打开的项目,所以Chromium相当于Google Chrome的 ...
- MySQL技术内幕读书笔记(八)——事务
事务的实现 事务隔离性由锁来实现.原子性.一致性.持久性通过数据库的redo log和undo log来完成.redo log称为重做日志,用来保证事务的原子性和持久性.undo log用来保证事 ...
- spring 技术内幕读书笔记1
1 在 java 应用开发中,往往会涉及复杂的对象耦合关系,在 代码中处理这些耦合关系,对代码的维护性和应用扩展性会带来许多不便.通过使用spring 的 IOC 容器,可以对这些耦合关系实现一个文本 ...
- Kafka技术内幕 读书笔记之(六) 存储层——日志的读写
-Kafka是一个分布式的( distributed ).分区的( partitioned ).复制的( replicated )提交日志( commitlog )服务 . “分布式”是所有分布式系统 ...
- Kafka技术内幕 读书笔记之(二) 生产者——新生产者客户端
消息系统通常由生产者(producer ). 消费者( consumer )和消息代理( broker ) 三大部分组成,生产者会将消息写入消息代理,消费者会从消息代理中读取消息 . 对于消息代理而言 ...
- Kafka技术内幕 读书笔记之(一) Kafka入门
在0.10版本之前, Kafka仅仅作为一个消息系统,主要用来解决应用解耦. 异步消息 . 流量削峰等问题. 在0.10版本之后, Kafka提供了连接器与流处理的能力,它也从分布式的消息系统逐渐成为 ...
随机推荐
- 8个SpringBoot精品项目
8个SpringBoot精品项目 https://gitee.com/52itstyle/spring-boot-seckill 秒杀 https://gitee.com/52itstyle/spri ...
- ESP8266 LUA脚本语言开发: 准备工作-动手编译LUA固件
前言 这节咱自己编译LUA固件 准备一台linux的机子 我把固件放到了git上,方便电脑用http下载 我先用这个连接linux 大家随意哈,只要是一台linux的机子就可以,不管是图形页面还是命令 ...
- Huffman树与Huffman编码
1.Huffman树 今天复习Huffman树.依稀记得自己被Huffman树虐的经历.还记得是7月份,我刚开始看数据结构与算法,根本看不懂Huffman树的操作.后来我终于悟出了Huffman树是怎 ...
- 浅谈Asp.Net中的几种传值方式
一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象.如果你想传递一个安全性不是那么太重要或者是 ...
- 团队作业第五次—项目冲刺-Day1
Day1 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 hunter--冲刺集合 团队名称 hunter小组 作业目标 最终做出 ...
- 常用STL使用指北
常用STL使用指北 set和multiset set和multiset都是基于红黑树(显然是一个二叉搜索树)的STL. 定义 我们可以使用(multi)set<元素类型>名称来定义一个(m ...
- centos虚拟机扩展磁盘空间(经历无数坑,血一样总结,史上最全)
第一步 在vmware中将虚拟机关机后,鼠标右键设置,直接点击扩展加自己想要扩展的数量就可以了,这个比较简单不多说. 2 第二步 设置后进系统查看空间大小变化,实际并没有什么变化,我用的命令是df - ...
- Redis内存回收策略
如果使用Redis的时候,不合理使用内存,把什么东西都放在内存里面,又不设置过期时间,就会导致内存的堆积越来越大.根据28法则,除了20%的热点数据之外,剩余的80%的非热点或不怎么重要的数据都在占用 ...
- Markdown 编辑器指南
一直觉得博客园默认的编辑器不好用,后来了解了Markdown,并且博客园也支持Markdown标记,所以写篇博客总结下. 一.认识 Markdown Markdown 是一种用来写作的轻量级「标记语言 ...
- Keras 使用过程问题汇总
以下是Keras 使用过程出现的一些问题: (1)Keras 后端选择问题 一开始是选用的Theano,结果迭代一轮所花时间很长: 后面改用:TensorFlow作为后端,结果果然变快了: 改完Ten ...