厦门seo网站推广,本人承接网站建设,免费申请微信收款码,wordpress网址的域名怎么改文章目录 1.进程间的通信#xff0c;线程间的通信首先可以先回答进程、线程和协程关于线程和进程通信 2.MySQL中的缓存情况#xff0c;以及缓存命中率查询 主要从别人的面经那里看来的#xff0c;以及自己被问住的一些面试题。 拿出来给自己做记录#xff0c;也顺便给大家做… 文章目录 1.进程间的通信线程间的通信首先可以先回答进程、线程和协程关于线程和进程通信 2.MySQL中的缓存情况以及缓存命中率查询 主要从别人的面经那里看来的以及自己被问住的一些面试题。 拿出来给自己做记录也顺便给大家做参考
1.进程间的通信线程间的通信 这个题是面猿辅导时候被问到的先是被问了进程和线程的区别后来问到了管道用自己模糊的本科时期的记忆回答了一下,管道本质上是要考进程通信。 首先可以先回答进程、线程和协程
进程是程序启动的实例进程之间相互独立。进程之间是相互隔离的不能直接共享数据。线程是程序实际的执行者一个进程最少要有一个线程。协程是一种轻量级的线程它可以在同一个线程内执行多个任务而不是使用多个线程。协程通常被称为用户态线程因为它们由应用程序代码来管理而不是由操作系统内核来管理。关于空间进程有自己独立的堆空间、线程有自己独立的栈空间进程之间不能直接进行信息共享同一进程之间的线程可以共享堆空间。
关于线程和进程通信
进程通信首先要明确的是进程之间不能进行直接的信息共享同时进程很有可能来自不同的服务甚至不同的机器比如QQ和微信就是两个进程。所以进程之间的信息共享可以利用一些网络通讯比如利用消息队列MQ、基于socket套接字。如果整狠活可以利用共享内存来进行通讯但需要谨慎处理同步问题。 线程通讯多个线程在同一进程中可以通过共享内存来实现通信。这通常需要使用锁如互斥锁、读写锁来确保数据一致性。信号量是一种计数器用于控制同时访问共享资源的线程数量。它可以用于线程之间的互斥和同步。 最后你要好好讲讲管道 管道的本质是一种数据流通道它用于在进程之间或线程之间传递数据。管道是操作系统提供的一种通信机制它允许一个进程或线程将数据写入一个端口同时另一个进程或线程可以从另一个端口读取相同的数据。 单向通信 管道通常是单向的有一个写入端和一个读取端。数据从写入端流入然后从读取端流出。 阻塞操作 当管道为空时读取操作可能会被阻塞直到有数据可读。同样当管道已满时写入操作可能会被阻塞直到有足够的空间可用。 FIFO先进先出 管道通常采用先进先出的原则确保数据的顺序保持一致。 2.MySQL中的缓存情况以及缓存命中率查询 这个是看到了别人的面经应该是滴滴的面经 MySQL数据库中有多种缓存机制这些缓存有助于提高查询性能和降低数据库服务器的负载。与其他缓存类似他也是在内存中开辟空间进行缓存的存放,最主要的是innoDB缓冲池。 InnoDB缓冲池InnoDB Buffer Pool它使用一个称为缓冲池的内存区域来缓存数据和索引。缓冲池用于加速对表数据的读取和写入操作减少了磁盘 I/O 的次数从而提高了性能。 查询缓存Query Cache 查询缓存是 MySQL 中的一个可选组件用于存储以前执行的 SELECT 查询的结果集。如果一个查询在查询缓存中找到匹配项MySQL 将返回缓存中的结果而不会执行实际的查询。尽管查询缓存可以提高查询性能但它在高并发和频繁更新的情况下可能会导致性能下降因此在新版本的 MySQL 中已经被弃用。 剩下的还有键缓存、表缓存、日志缓存等… 关于配置 InnoDB 存储引擎使用一个称为缓冲池的内存区域来缓存数据页和索引页。缓冲池的大小可以通过配置参数 innodb_buffer_pool_size 来设置。 程序员可以通过SHOW STATUS进行性能信息统计
SELECT (Qcache_hits / (Qcache_hits Com_select)) * 100 AS cache_hit_ra% Com_select这个变量表示执行的 SELECT 查询次数。
% Qcache_hits这个变量表示查询缓存命中的次数。SHOW VARIABLES 命令 使用 SHOW VARIABLES 命令可以查看 MySQL 的配置变量。你可以查看以下两个与查询缓存有关的变量 query_cache_type这个变量表示查询缓存的类型通常为 ON 表示开启。 query_cache_size这个变量表示查询缓存的大小。 另外还可以使用一些外部的检测工具进行数据库情况的统计。