当前位置:网站首页>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 .
边栏推荐
- 8年测试总监的行业思考,看完后测试思维认知更深刻
- 独家分析 | 关于简历和面试的真 相
- ExecutorException: Statement returned more than one row, where no more than one was expected.
- 项目管理精华读书笔记(六)
- 年中了,准备了少量的自动化面试题,欢迎来自测
- Qt:qss custom qscrollbar instance
- 2021 postgraduate entrance examination mathematics 2 linear algebra
- Qt:qss custom qstatusbar instance
- Lecture 1 number field
- Use ml.net+onnx pre training model to liven the classic "Huaqiang buys melons" in station B
猜你喜欢
![[true question of the Blue Bridge Cup trials 44] scratch eliminate the skeleton Legion children programming explanation of the true question of the Blue Bridge Cup trials](/img/e0/c2b1fbe99939d44201401abf1b5a72.png)
[true question of the Blue Bridge Cup trials 44] scratch eliminate the skeleton Legion children programming explanation of the true question of the Blue Bridge Cup trials

Programming examples of stm32f1 and stm32subeide -tm1637 drives 4-bit 7-segment nixie tubes

. Net core - a queuing system for wechat official account

测试理论概述

Software testing e-commerce projects that can be written into your resume, don't you come in and get it?

Multiple IO transfer - preamble

如何清理v$rman_backup_job_details视图 报错ORA-02030

《通信软件开发与应用》

My understanding of testing (summarized by senior testers)

The element form shows the relationship between elementary transformation and elementary matrix
随机推荐
Solve the problem that pycharm Chinese input method does not follow
触摸与屏幕自动旋转调试
Game test related tests a hero's skills (spring moves are asked more questions)
Qt:qss custom qpprogressbar instance
解决undefined reference to `__aeabi_uidivmod‘和undefined reference to `__aeabi_uidiv‘错误
redis那些事儿
Software testing e-commerce projects that can be written into your resume, don't you come in and get it?
Qt:qss custom qlistview instance
Latest sales volume of pinduoduo
测试理论概述
Activity and fragment lifecycle
【蓝桥杯选拔赛真题44】Scratch消灭骷髅军团 少儿编程scratch蓝桥杯选拔赛真题讲解
I have been doing software testing for three years, and my salary is less than 20K. Today, I put forward my resignation
After 8 years of industry thinking, the test director has a deeper understanding of test thinking
字节跳动大裁员,测试工程师差点遭团灭:大厂招人背后的套路,有多可怕?
First line of code kotlin notes
T5 的尝试
【Proteus仿真】74HC154 四线转12线译码器组成的16路流水灯
(二)进制
反正切熵(Arctangent entropy):2022.7月最新SCI论文