参见vip课程
38.volatile关键字
参见vip课程
39.Java中的NIO,BIO,AIO分别是什么
BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
在第二代架构上,通过自动化工具进行批量运维,团队推出了使用expect写的auto批量脚本,所有操作只需登录一台集控服务器执行批量并发操作的脚本,独立的版控服务器,通过并行的主动推送。这里篮子是一个互斥区,每次放鸡蛋是互斥的,每次取鸡蛋也是互斥的,a线程放鸡蛋,如果这时b线程要取鸡蛋,由于a没有释放锁,b线程处于等待状态,进入阻塞队列,放鸡蛋之后,要通知b线程取鸡蛋,b线程进入就绪队列,反过来,b线程取鸡蛋,如果a线程要放 鸡蛋,由于b线程没有释放锁,a线程处于等待状态,进入阻塞队列,取鸡蛋之后,要通知a线程放鸡蛋,a线程进入就绪队列。今天正好有80gbps的万兆网络环境,写了一个工具,对比了一下各种流媒体服务器,在超级并发下的性能如何,原来听说intel的万兆网卡有问题,只能跑到不到的理论带宽,这点我测试过了,用intel最新的驱动,centos6,最次能跑到80%的理论带宽,最高能跑到95%以上,完全没有问题,需要注意的是nginx 采用异步架构,因为rtmp协议实际上损失了部分性能,实际上http的性能比这个更高。用户就可以连接到本地printcap文件中定义的任何一台打印机.如果用户请求连接一个配置文件中不存在的共享,若[homes]节存在,那么服务器会像上节所述那样处理该请求。
AIO:异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理.AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。
IO和NIO区别
一.IO是面向流的,NIO是面向缓冲区的。
二.IO的各种流是阻塞的,NIO是非阻塞模式。
三.Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。
41.序列化与反序列化
把对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
一.把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
二.在网络上传送对象的字节序列。
形象的说,电台发送要发送一串字符,而每次只能发送4个(a版本)或者2个(b版本)字节,为了方便接受,这就需要指明,这4个或2个字节在这串字符中的位置。为java应用提供组件容器,用来构造internet应用和其它分布式构件应用,是企业实施电子商务的基础设施,这种应用服务器中间件发展到为企业应用提供数据访问、部署、远程对象调用、消息通信、安全服务、监控服务、集群服务等强化应用支撑的服务。
42.常见的序列化协议有哪些
Protobuf, Thrift, Hessian, Kryo
43.内存溢出和内存泄漏的区别
内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-93146-8.html
开打
呵