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

 2023-09-06 阅读 18 评论 0

摘要:linux下线程通信的方式有哪些? 1.管道(pipe)/namedpipe(有名管道) 2.信号(signal) 3.报文(message)队列 4.共享内存 5.套接字(socket) 6.信号量(semapher) HTTP 1.1协议中 的八个标准的方法 OPTIONS 返回服务器特定资源所支

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修饰,方法级别的修饰

5317394-9c80cd4c08dbbf47.png
image.png

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

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

5317394-fffec74d683ca48b.png
image.png

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

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

JVM内存模型(HotSpot)

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

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

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/10227.html

上一篇:程序员闯关秀
下一篇:网络编程TCP

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息