记一次YY笔试中卡住得知识点

linux下线程通信的方式有哪些?

1.管道(pipe)/namedpipe(有名管道)

2.信号(signal)

3.报文(message)队列

4.共享内存

5.套接字(socket)

6.信号量(semapher)

HTTP 1.1协议中 的八个标准的方法

OPTIONS 返回服务器特定资源所支持的请求方法,也可以用来测试服务器的功能性(通过向web服务器发送*的请求);
HEAD 向服务器索要和GET请求一致的响应,只不过响应体不会被返回,这个方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应头里面的元信息;
GET 向特定的资源发起请求;
POST 向特定的资源发送数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中,POST请求可以导致新的资源建立或者已有资源的修改
PUT 向特定资源位置上传其最新的内容
DELETE 请求服务器删除Request-Url标识中的资源
TANCE 回显服务器的请求,主要用于测试或者诊断
CONNECT HTTP1.1 中预留的能够将连接改为管道连接方式的代理服务器

单例模式 线程存在不安全的问题

只要是存在多个线程修改同一个成员变量,就会存在线程安全的问题!

Map集合

HashMap是线程不安全的
两个场景
① :使用在方法内的局部变量时,局部变量属于当前线程级别的变量,其他线程访问不了,也谈不上安不安全了!
②:当使用单例对象的成员变量的时候,这个时候多个线程访问同一个HashMap操作就会存在线程安全的问题!

为了解决场景②存在的问题,我们可以使用:HashTable
查看源码可以知道,他的大部分方法都是被synchronized修饰,方法级别的修饰

记一次YY笔试中卡住得知识点_第1张图片
image.png

其中,get和put不能同时执行!!!效率非常低啊,不建议使用
对于复合操作,很有可能也会出现线程安全问题;

下面是另一种方案:
使用Collections.aynchronizedMap()方法,其实就是把传入的HashMap包装了同步而已

记一次YY笔试中卡住得知识点_第2张图片
image.png

每次对HashMap进行操作的时候,先要获得mutex对象这个锁才能进去,所以效率不会好到哪里去。。。也不建议使用

接下,下一种方案(ps:广开思路,嘻嘻)
ConcurrentHashMap(不多BB,直接推荐吧)
jdk8之前使用分段锁机制,jdk8之后,又加入了红黑树和CAS算法来实现的

JVM内存模型(HotSpot)

在java虚拟机中,方法区是可供各个线程共享的运行时内存,它存储了每一个类的结构信息,例如:运行时的常量池,字段和方法数据,构造函数的普通方法的字节码内容等等...

这个地方保留明天细看!!!!先睡去了

juc那个包下的类源码 值得一看

你可能感兴趣的:(记一次YY笔试中卡住得知识点)