当前位置:网站首页>Résumé des questions d'entrevue (2) Modèle io, ensemble, principe NiO, pénétration du cache, avalanche de rupture
Résumé des questions d'entrevue (2) Modèle io, ensemble, principe NiO, pénétration du cache, avalanche de rupture
2022-07-03 11:12:00 【C'est Xiao Qing.】
1.Plusieurs IO Modèle,
BlocageIO、Non - blocageIO、MultiplexageIO、Signal DriveIO, AsynchroneIO (Il y a une explication détaillée dans l'article précédentIOPlusieurs modèles Blocage,Non - blocage,ioMultiplexage,Conduite du signal et asynchroneio_C'est un petit blog ensoleillé-CSDNBlogs
2.JavaClasse set
JavaLes classes de collection sont divisées en4Grandes catégories,Par4Interfaces pour représenter,
Ils sontSet、List、Queue、Map.Parmi eux,Set、List、Queue、Tous hérités deCollectionInterface.
SetReprésente un désordre、Collection non reproductible d'éléments.
ListReprésentant l'ordre、Une collection d'éléments qui peuvent être répétés.
QueuePour le premier entré premier sorti(FIFO)File d'attente pour.
MapLe représentant a une relation cartographique(key-value)Collection de.
JavaFournit des classes d'implémentation pour de nombreuses collections,Ce sont toutes des classes d'implémentation directe ou indirecte de ces interfaces,Les plus courants sont:HashSet、TreeSet、ArrayList、LinkedList、ArrayDeque、HashMap、TreeMapAttendez..
L'interface ou l'implémentation de la classe set décrite ci - dessus ,Tous situésjava.utilSous le sac., La plupart de ces implémentations ne sont pas sans fil . Bien que non - thread Safe , Mais ces classes ont de meilleures performances . Si vous avez besoin d'une classe de collection Thread - Safe ,Peut utiliserCollectionsClasse d'outils, Cette classe d'outils fournit synchronizedXxx()Méthodes, Ces classes de collection peuvent être enveloppées dans des classes de collection threadsafe .
java.util Dans la classe Collection sous le paquet , Il y a aussi quelques classes de collection Thread - Safe ,Par exempleVector、Hashtable, Elles sont toutes très anciennes API. Bien qu'elles soient sans fil ,Mais les performances sont médiocres,L'utilisation n'est plus recommandée.
3.NIO Principe de réalisation
(Buffer、Channel、Selector)
NIOEst basé surIOMise en œuvre du modèle multiplexage,Il contient trois éléments de base,Respectivement.Buffer、Channel、Selector.
1. NIO- Oui.Face au tamponDe,InNIOToutes les données sont traitées par tampon.BufferC'est l'objet tampon,Lire ou écrire,Les données sont entrées en premierBufferDe.BufferL'essence de est un tableau,Normalement, c'est un tableau d'octets,Peut également être un autre type de tableau.BufferEst une interface,Ses classes d'implémentation sont:ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer.
2. ChannelC'est un passage,Il permet de lire et d'écrire des données.Contrairement au courant,Le flux est unidirectionnel,EtChannel- Oui.Dans les deux sensDe.Les données peuvent être obtenues parChannelLireBuffer- Oui.,On peut aussiChannelÉcrit àBuffer- Oui..Pour supporter différents appareils,ChannelL'interface a plusieurs classes de semences,Par exemple:FileChannelPour accéder aux fichiers disque、SocketChannelEtServerSocketChannelPourTCPCommunication réseau du Protocole、DatagramChannelPourUDPCommunication réseau du Protocole.
3. SelectorC'est un multiplexeur, On peut le surveiller Écouter le Web IOÉtat de.Il peut continuer à vérifier les inscriptionsChannel,SiChannelIl y a une connexion、Lire、Écrire l'événement se produit,Et ça?ChannelPrêt.,SeraSelectorVotez..Tout ce qui a été votéChannelEnsemble,On peut passer parSelectionKeyObtenir,Et ensuiteIOFonctionnement.
4.Pénétration du cache、Rupture du cache、Quelle est la différence entre une avalanche de cache,Comment résoudre?
Pénétration du cache: Le client interroge des données qui n'existent pas du tout , Faire la demande directement au niveau de stockage , Cause une charge excessive ,Même les temps d'arrêt.La raison de cette situation, Peut - être que la couche affaires a supprimé par erreur les données du cache et de la Bibliothèque , Ou une attaque malveillante , Accès exclusif aux données qui n'existent pas dans la Bibliothèque .
Solutions:
1. Cache un objet vide: Après l'échec du niveau de stockage , Les valeurs nulles sont toujours stockées dans la couche cache , Lorsque le client accède de nouveau aux données , La couche cache renvoie directement une valeur nulle .
2. Le filtre blon: Enregistrer les données dans le filtre Bloom , Intercepter avec un filtre avant d'accéder au cache , Renvoie une valeur nulle si les données n'existent pas .
Rupture du cache: Un Hotspot Data , C'est très fréquenté . Au moment où son cache s'est effondré , Un grand nombre de demandes vont directement au niveau de stockage ,Provoquer un crash de service.
· Solutions:
1. Ne jamais expirer:Les données Hotspot ne fixent pas de délai d'expiration, Donc ça n'arrivera pas. ,C'est“Physique” Ne jamais expirer sur . Ou définir un délai d'expiration logique pour chaque donnée , Lorsque la logique de données a expiré , Reconstruire le cache avec des fils séparés .
2. Plus mutex: Accès aux données plus mutex , Quand un thread accède aux données ,Les autres fils ne peuvent attendre que. Après l'accès à ce thread , Les données du cache seront reconstruites , D'autres Threads pourront alors prendre des valeurs directement à partir du cache .
Cache l'avalanche:À un moment donné, La couche cache ne peut pas continuer à fournir le service , Provoque toutes les demandes directement au niveau de stockage ,Cause des temps d'arrêt de la base de données. Peut - être qu'il y a beaucoup de données dans le cache qui expirent en même temps ,Ça pourrait êtreRedisDéfaillance du noeud,Un grand nombre de demandes n'ont pu être traitées.
· Solutions:
1. Éviter l'expiration simultanée des données :Lors du réglage du délai d'expiration, Ajouter un nombre aléatoire ,Évitez les grandes quantitéskeyExpire en même temps.
2. Activer les mesures de dégradation et de fusion : En cas d'avalanche , Si l'application n'accède pas aux données de base , Renvoie directement les informations prédéfinies /Valeur nulle/Message d'erreur. Ou en cas d'avalanche , Pour les demandes d'accès à l'interface cache , Le client n'envoie pas la demande à Redis,C'est un retour direct..
3. Construire desRedisServices: En mode sentinelle ou Cluster ,Déployer plusieursRedisExemple, Temps d'arrêt des noeuds individuels , Le service est toujours disponible dans son ensemble .
边栏推荐
- I have been doing software testing for three years, and my salary is less than 20K. Today, I put forward my resignation
- QT: QSS custom qtoolbutton instance
- Snownlp emotion analysis
- redis那些事儿
- 做软件测试三年,薪资不到20K,今天,我提出了辞职…
- CorelDRAW Graphics Suite 2022新版功能详情介绍
- Oracle收回权限 & 创建角色
- Qt:qss custom qradiobutton instance
- IIS修改配置信息后不生效
- The testing department of the company came to the king of the Post-00 roll, and the veteran exclaimed that it was really dry, but
猜你喜欢
11. Provider service registration of Nacos service registration source code analysis
Exclusive analysis | truth about resume and interview
【蓝桥杯选拔赛真题44】Scratch消灭骷髅军团 少儿编程scratch蓝桥杯选拔赛真题讲解
数据库增量备份 - DB INCR DB FULL
Clion debug
8年测试总监的行业思考,看完后测试思维认知更深刻
Basic theoretical knowledge of software testing -- app testing
Software testing e-commerce projects that can be written into your resume, don't you come in and get it?
8年测试工程师总结出来的《测试核心价值》与《0基础转行软件测试超全学习指南》
游戏测试相关 测试一个英雄的技能(春招被问比较多的一道题)
随机推荐
在职美团测试工程师的这八年,我是如何成长的,愿技术人看完都有收获
行业唯一!法大大电子合同上榜36氪硬核科技企业
Latest sales volume of pinduoduo
Qt:qss custom qspinbox instance
ConstraintLayout跟RelativeLayout嵌套出现的莫名奇妙的问题
What is the salary level of 17k? Let's take a look at the whole interview process of post-95 Test Engineers
Software testing redis database
读书笔记:《心若菩提》 曹德旺
Multiple IO transfer - preamble
年中了,准备了少量的自动化面试题,欢迎来自测
Exclusive analysis | truth about resume and interview
《通信软件开发与应用》
项目管理精华读书笔记(六)
使用onvif协议操作设备
线性表的双链表
Google Earth Engine(GEE)——GHSL 全球人口网格数据集250米分辨率
项目管理精华读书笔记(七)
在腾讯云容器服务Node上执行 kubectl
独家分析 | 关于简历和面试的真 相
Summary of the history of Mathematics