答案:https://blog.csdn.net/xuhuaabc/article/details/91475761
博客园答案:https://www.cnblogs.com/leiblog/p/10517668.html
CSDN答案:https://blog.csdn.net/qq228112142/article/details/88744773
Linux下进程通信的八种方法:
(1) 管道(pipe):
管道允许一个进程和另一个与它有共同祖先的进程之间进行通信;
(2) 命名管道(FIFO):
类似于管道,但是它可以用于任何两个进程之间的通信,命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建;
(3) 信号(signal):
信号是比较复杂的通信方式,用于通知接收进程有某种事情发生,除了用于进程间通信外,进程还可以发送信号给进程本身;Linux除了支持UNIX早期信号语义函数signal外,还支持语义符合POSIX.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD即能实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数的功能);
(4) 内存映射(mapped memory):
内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它;
(5) 消息队列(message queue):
消息队列是消息的连接表,包括POSIX消息对和System V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能成该无格式字节流以及缓冲区大小受限等缺点;
(6) 信号量(semaphore):
信号量主要作为进程间以及同进程不同线程之间的同步手段;
(7) 共享内存 (shared memory):
它使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。这是针对其他通信机制运行效率较低而设计的。它往往与其他通信机制,如信号量结合使用,以达到进程间的同步及互斥;
(8) 套接字(Socket):
它是更为通用的进程间通信机制,可用于不同机器之间的进程间通信。起初是由UNIX系统的BSD分支开发出来的,但现在一般可以移植到其他类UNIX系统上:Linux和System V的变种都支持套接字。
详解:https://www.cnblogs.com/wuyepeng/p/9748889.html
CSDN答案:https://blog.csdn.net/z1134145881/article/details/52089698
博客园答案:https://www.cnblogs.com/zengkefu/p/5480689.html
参考:https://blog.csdn.net/zc639143029/article/details/47011861
答案:https://blog.csdn.net/xlgen157387/article/details/79470556
RabbitMQ
RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
Redis
是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。
具体对比
可靠消费
Redis:没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理
RabbitMQ:具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费
可靠发布
Reids:不提供,需自行实现
RabbitMQ:具有发布确认功能,保证消息被发布到服务器
高可用
Redis:采用主从模式,读写分离,但是故障转移还没有非常完善的官方解决方案
RabbitMQ:集群采用磁盘、内存节点,任意单点故障都不会影响整个队列的操作
持久化
Redis:将整个Redis实例持久化到磁盘
RabbitMQ:队列,消息,都可以选择是否持久化
消费者负载均衡
Redis:不提供,需自行实现
RabbitMQ:根据消费者情况,进行消息的均衡分发
队列监控
Redis:不提供,需自行实现
RabbitMQ:后台可以监控某个队列的所有信息,(内存,磁盘,消费者,生产者,速率等)
流量控制
Redis:不提供,需自行实现
RabbitMQ:服务器过载的情况,对生产者速率会进行限制,保证服务可靠性
出入队性能
对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。
测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。
应用场景分析
Redis:轻量级,高并发,延迟敏感
即时数据分析、秒杀计数器、缓存等
RabbitMQ:重量级,高并发,异步
批量数据异步处理、并行任务串行化,高负载任务的负载均衡等
答案:https://blog.csdn.net/ck784101777/article/details/101367821
答案:https://blog.csdn.net/qq_38950316/article/details/81087809
答案:https://blog.csdn.net/u010771890/article/details/73732648
答案:https://blog.csdn.net/u012440687/article/details/52020537
参考:https://www.jianshu.com/p/ebca78731137
区别一:物理地址存储的连续性
数组的元素在内存中是连续存放的。
链表的元素在内存中不一定是连续存放的,通常是不连续的。
区别二:访问速度
数组的访问速度很快,因为数组可以根据数组可以根据下标进行快速定位。
链表的访问速度较慢,因为链表访问元素需要移动指针。
区别三:添加、删减元素速度
数组的元素增删速度较慢,因为需要移动大量的元素。
链表的元素增删速度较快,因为只需要修改指针即可。
详解:https://cloud.tencent.com/developer/article/1444059
答案:https://my.oschina.net/yangjianzhou/blog/1930493
https://blog.csdn.net/C18298182575/article/details/89642236
参考:https://blog.csdn.net/jasonhui512/article/details/53195959/
简书:https://www.jianshu.com/p/47c2116b8141
参考:https://blog.csdn.net/xionghuixionghui/article/details/69053416
答案:c实现
#include
#include
int Search(int A[],int len)
{
if(NULL==A || len<=0)
{
return -1;
}
int k, j=0;
for(int i=0;i<len;++i)
{
if(j==0)
{
k=A[i];
}
if(k==A[i])
{
++j;
}else
{
--j;
}
}
return k;
}
void main(){
int len=10;
int a[10]={
4,5,5,2,3,5,2,5,5,5};
int result=Search(a,len);
printf("%d\n",result);
}
java实现
package test;
public class Search {
public static void main(String[] args) {
//System.out.println("Hello World!");
Integer []a={
4,5,5,2,3,5,2,5,5,5};
Integer len= a.length;
Integer result = search(a,len);
System.out.println(result);
}
public static Integer search(Integer A[],Integer len){
if(A==null || len<=0)
{
return -1;
}
Integer k=null, j=0;
for(Integer i=0;i<len;++i)
{
if(j==0)
{
k=A[i];
}
if(k==A[i])
{
++j;
}else
{
--j;
}
}
return k;
}
}
详细:https://blog.csdn.net/wei_cheng18/article/details/80458478
腾讯云社区:https://cloud.tencent.com/developer/article/1164944
https://cloud.tencent.com/developer/article/1067290
答案:https://blog.csdn.net/hukaijun/article/details/81010475
Redis:https://blog.csdn.net/An1090239782/article/details/102570409
HashMap:https://cloud.tencent.com/developer/article/1521405
答案:https://blog.csdn.net/qq_25408423/article/details/81979072
博客园:https://www.cnblogs.com/x_wukong/p/10106214.html
参考答案:https://blog.csdn.net/nblife0000/article/details/53073026