Java Concurrency in Practice阅读笔记
Introduction
A (very) brief history of concurrency
- 最早的计算机都是串行的,一个指令接着一个指令的执行下去,但是为了提高效率,进程和线程出现了
- 同一个进程里面的线程共享同样的内存和堆栈,由于它们都能访问相同的变量,如果没有做好同步的话,就会出现一些不可预计的结果。
Java 8允许我们在接口中定义non-abstract method,这在Java 8之前是不被允许的。定义的方法是使用default关键词:
1 | interface Formula { |
我们可以使用deault关键词定义的方法:
1 | Formula formula = new Formula() { |
这里我们使用了匿名内部类。匿名内部类的一个很大的好处就是:接口是不能实例化的,如果要实例化,我们需要先定义实现这个接口的类。但很多时候,我们其实是不关心实现接口的类是怎样的,而只关心接口的方法是如何重写(override)的。匿名内部类就可以帮助我们达到目的。
The approach of outsourcing(外包) the construction and management of objects(outsource to a object factory).
Tomcat可以简单的理解为一个web容器,我们编写的servelet程序必须要在web容器中才能运行,这很好理解,因为单单一个servlet java程序并不能够接收浏览器的信息,我们需要通过web容器接收到浏览器的命令,然后web容器再调用servlet处理并返回结果。
Tomcat从浏览器接收到请求后生成request和response两个对象,将这两个对象传入servlet,servelet处理后再返回Tomcat。
Servlet可以使用xml或者annotation来处理路径。
最近在准备学spring和spring boot,但是又看到servelet什么的很困惑,所以了解了以下java web的发展。同时也看到一个很好的java学习路线图。
https://www.jianshu.com/p/bec6736dcc3d
https://www.tianmaying.com/tutorial/web-history
https://www.runoob.com/servlet/servlet-intro.html
https://www.runoob.com/jsp/jsp-intro.html
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven可以很好的管理项目中的第三方jar包,避免冲突,一键配置(关于jar包和classpath看另一篇博客)。