--- aliases: tags: - maturity/π± date: 2024-09-13 zero-link: - "[[../../../meta/zero/00 HighLoad|00 HighLoad]]" parents: - "[[ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅]]" linked: --- ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°: ```java public List<User> getUsersByType(String userType, Set<Long> userIds) ``` ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ 2 Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΡΡΡΠΎΠΊΡ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΠ»ΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠΈΡΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ: - ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠ»ΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² `userType` ΠΈ `userIds`, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ°. - ΠΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ ΠΊΠ»ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ, ΡΠΎ Π΅ΡΡΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ»ΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½Π°ΡΠ΅ ΠΌΡ ΡΠΈΡΠΊΡΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π²ΡΠ±ΠΎΡΠΊΠΈ. Π‘ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΊΠ»ΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ [[../../../../../wiki/zero/00 Redis]]. Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ»ΡΡΠ° Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. ΠΡΡΠΊΠ°ΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠ΅ΡΠΈΠΊΡ Π±ΡΠ΄Π΅Ρ `USER_SERVICE`. Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ ΠΌΠ΅ΡΠΎΠ΄Π°, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ `USERS`. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `:`, Π² [[../../../../../wiki/zero/00 Redis|00 Redis]] ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ UI ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°ΡΠ°Π»ΠΎ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: `USER_SERVICE:USERS:`. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΠΊΠ»ΡΡ. ΠΠΎΠ·ΡΠΌΠ΅ΠΌ Π½Π°Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ `String userType`. ΠΠ»Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΡ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΡΡΡ Π±ΡΠ΄Π΅Ρ `USER_TYPE`. Π Π²ΠΎΡ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²: - ΠΡΡΠ°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ. - ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ [[../../cryptography/Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ|Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ]] Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ Π²ΡΡ ΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ [[../../cryptography/MD5|MD5]]. Π€ΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π΄Π»ΠΈΠ½Π° Π²ΡΡ ΠΎΠ΄Π° Π½ΡΠΆΠ½Π°, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΊΠ»ΡΡΠ°. ΠΡΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΠΏ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΡΠ΄ Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π»ΠΈΠ½Π½ΡΠΌ. Π ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠΊΠ° Π½Π°Ρ ΠΊΠ»ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΠΊ: `USER_SERVICE:USERS:USER_TYPE:VIP:`. ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ `Set<Long> userIds`. Π‘ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΡ ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ [[../../cryptography/Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ|Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ]], Π½ΠΎ ΠΊΠ°ΠΊ? > [!WARNING] Disclamer > ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» ΡΠ°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ½ Π½Π΅ ΡΠ°ΠΌΡΠΉ ΡΠ΄Π°ΡΠ½ΡΠΉ, Π½ΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π΅ΡΠ΅ Π»ΡΡΡΠ΅, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π½ΠΈΠΆΠ΅ π ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ½Π°ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ [[../../cryptography/Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ|Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ]]. ΠΠΎ-Π²ΡΠΎΡΡΡ , Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΊΠ°ΠΊ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ Π΄Π»Ρ [[../../cryptography/Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ|Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ]]. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π² JSON. JSON ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Π°ΡΠ° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ· ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π’Π΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ [[../../cryptography/SHA-256|SHA-256]], ΡΡΠΎΠ±Ρ ΠΈΠ· Π½Π°ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Ρ Π΅Ρ. Π ΡΠΆΠ΅ ΡΡΠΎΡ Ρ Π΅Ρ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΊΠ»ΡΡΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ΅: ``` USER_SERVICE:USERS:USER_TYPE:VIP:USER_ID:315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3 ``` > [!QUESTION] ΠΠΎΡΠ΅ΠΌΡ SHA-256, Π° Π½Π΅ MD5? > [[../../cryptography/MD5|MD5]] ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡΠΌ, [[../../cryptography/SHA-256|SHA-256]] ΡΡΠΈΡΠ°Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌ ΠΊ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡΠΌ. *** ## ΠΠ΅ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ **ΠΠ±Π»Π°ΡΡΡ**:: [[../../../meta/zero/00 HighLoad|00 HighLoad]] **Π ΠΎΠ΄ΠΈΡΠ΅Π»Ρ**:: [[../ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅|ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅]] **ΠΡΡΠΎΡΠ½ΠΈΠΊ**:: **Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2024-09-13]] **ΠΠ²ΡΠΎΡ**:: ### ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ - [[../../snippet/Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ SHA-256 Π½Π° Java|Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ SHA-256 Π½Π° Java]] ### ΠΠΎΡΠ΅ΡΠ½ΠΈΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ <!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Π ΠΎΠ΄ΠΈΡΠ΅Π»Ρ, this.file.link) or contains(parents, this.file.link) -->