摘要:
我们每天都在上网冲浪,在这背后到底有那些设备、协议去支撑呢?ISO是【Open System Interconnection】的缩写,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。 我们就通过对它的介绍,来了解网络通信! 我们从最底层的物理层开始介绍,一直介绍到最上层的 应 阅读全文
摘要:
今天我们来写一个类似于Tomcat的简易服务器。可供大家深入理解一下tomcat的工作原理,本文仅供新手参考,请各位大神指正!首先我们要准备的知识是: Socket编程 HTML HTTP协议 服务器编写 反射 XML解析有了上面的知识,我们可以开始写我们的代码了~~1、首先我们要应用Socket编 阅读全文
摘要:
JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理。 冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操作码和地址码组成,操作码决定了操作类型和所操作的数的数字类型,地址码则指出地址码和操作数。 从do 阅读全文
摘要:
多线程wait()和sleep()的区别: 1、wait()可以指定时间,sleep()必须指定时间。 2、在同步中时,对cpu的执行权和处理不同。 wait() 释放执行权,释放锁。 sleep() 释放执行权,不释放锁。 在同步锁中(synchronized),多线程可能同时进入锁中(多生产者多 阅读全文
摘要:
线程通信--多生产者多消费者问题 多生产者,多消费者会导致线程死锁的情况。 产生原因: 因为每次唤醒的线程都是任意的,如果唤醒线程的时候总是唤醒本方的线程(例如都是生产者或者都是消费者),就会导致线程死锁。 解决思路: 每次唤醒都要保证有对方的线程被唤醒。 解决方法: 每次都唤醒所有的线程。使用no 阅读全文
摘要:
线程间通信问题: 多个线程在处理同一资源,但是任务却不同; java中将资源共享的方法(思路): 1、方法或者变量静态化 >静态化后,在类加载的时候,会将其加载到内存的方法区进行共享 2、单例设计模式 >保证只对一个实例进行操作。 3、将资源作为操作该资源的类的构造函数的参数,这样可以保证此类的多个 阅读全文
摘要:
多线程死锁: 死锁的常见情形之一:同步的嵌套。 运行结果: 死锁小实例:(面试时候用) 在我后面的笔记五中,还有对另外一种死锁的形式的介绍,并且介绍了JDK1.5对synchronized同步锁的替代-->Lock接口,虽然出现了替代,但是因为synchronized 同步锁和同步函数的简单性,并且 阅读全文
摘要:
处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。... 阅读全文
摘要:
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次... 阅读全文
摘要:
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class Volatil... 阅读全文