当前位置:网站首页>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 .
边栏推荐
- Differences among norm, normalize and normalized in eigen
- 栈,单调栈,队列,单调队列
- Typescript learning summary
- Cause: org. apache. ibatis. builder. Builderexception: error parsing SQL mapper configuration problem analysis
- How can UI automated testing get out of trouble? How to embody the value?
- 可以写进简历的软件测试电商项目,不进来get一下?
- IIS does not take effect after modifying the configuration information
- 软件测试工程师的5年之痒,讲述两年突破瓶颈经验
- 2021 reading summary (continuously updating)
- 线性表的双链表
猜你喜欢

有赞CTO崔玉松:有赞Jarvis核心目标是使产品变得更加聪明和可靠

The element form shows the relationship between elementary transformation and elementary matrix

Solve the problem that pycharm Chinese input method does not follow

How can UI automated testing get out of trouble? How to embody the value?

11. Provider service registration of Nacos service registration source code analysis

Qt:qss custom qpprogressbar instance

数据库增量备份 - DB INCR DB FULL

英特尔13代酷睿旗舰曝光,单核5.5GHz

T5 的尝试

What are the strengths of "testers"?
随机推荐
2022 pinduogai 100000 sales tutorial
表空间创建管理及控制文件管理
Kotlin's use of the no Arg compiler plug-in in gradle
Summary of the history of Mathematics
测试理论概述
The highest monthly salary of 18K has a good "mentality and choice", and success is poor "seriousness and persistence"~
What are the strengths of "testers"?
历经一个月,终于拿到金蝶Offer!分享一下四面面经+复习资料
one hot 独热码
项目管理精华读书笔记(七)
Qt:qss custom qspinbox instance
有赞CTO崔玉松:有赞Jarvis核心目标是使产品变得更加聪明和可靠
触摸与屏幕自动旋转调试
如何让让别人畏惧你
My understanding of testing (summarized by senior testers)
Oracle收回权限 & 创建角色
图解网络:什么是虚拟路由器冗余协议 VRRP?
T5 的尝试
php如何解决高并发问题
QT: QSS custom qtoolbar and qtoolbox instances