Java Portal | ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΊΠ°Π½Π°Π»Ρ ΠΈ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΠ΅ΡΡ Π² ΠΌΠΈΡ Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π‘Π²ΡΠ·Ρ: @devmangx Π ΠΠ: https://clck.ru/3H4WUg
Show moreπ Analytical overview of Telegram channel Java Portal | ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Channel Java Portal | ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (@java_iibrary) in the Russian language segment is an active participant. Currently, the community unites 11 920 subscribers, ranking 10 472 in the Technologies & Applications category and 53 940 in the Russia region.
π Audience metrics and dynamics
Since its creation on Π½Π΅Π²ΡΠ΄ΠΎΠΌΠΎ, the project has demonstrated rapid growth, gathering an audience of 11 920 subscribers.
According to the latest data from 26 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 288 over the last 30 days and by 14 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 10.39%. Within the first 24 hours after publication, content typically collects 6.42% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 239 views. Within the first day, a publication typically gains 766 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 3.
- Thematic interests: Content is focused on key topics such as boot, string, void, Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, resttemplate.
π Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
βΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΊΠ°Π½Π°Π»Ρ ΠΈ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΠ΅ΡΡ Π² ΠΌΠΈΡ Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
Π‘Π²ΡΠ·Ρ: @devmangx
Π ΠΠ: https://clck.ru/3H4WUgβ
Thanks to the high frequency of updates (latest data received on 27 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
docker run nginx
Docker Client ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Docker Daemon, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° (Image) Π΅ΡΠ΅ Π½Π΅Ρ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Docker Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π΅Π³ΠΎ ΠΈΠ· Docker Registry, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· Docker Hub.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π· ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Docker ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (Container) β Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΡΠΎ ΡΠ°ΠΊ:
- Image (ΠΎΠ±ΡΠ°Π·) = Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΠΌΠ°.
- Container (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ) = Π½Π°ΡΡΠΎΡΡΠΈΠΉ Π΄ΠΎΠΌ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ.
ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ°Π±ΠΎΡΡ Docker:
ΠΡ β βΌ Docker Client β βΌ Docker Daemon β βΌ Docker Image β βΌ Docker ContainerΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅ ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Docker ΡΡΠ°Π½Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅. π Java Portal
int mark1;
int mark2;
int mark3;
...
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅Ρ.
ΠΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠ°ΡΡΠΈΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²?
ΠΠ°ΡΡΠΈΠ² β ΡΡΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ
Π² Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
int[] scores = {10, 20, 30, 40, 50};
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0.
ΠΠ½Π΄Π΅ΠΊΡ : 0 1 2 3 4
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅:10 20 30 40 50
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
- ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅
int[] numbers;
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅
numbers = new int[5];
- ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅
int[] numbers = new int[5];
ΠΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²:
int[] numbers = {10, 20, 30, 40, 50};
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
System.out.println(numbers[2]); // 30
- ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
numbers[1] = 25;
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°
numbers.length
- ΠΠ΅ΡΠ΅Π±ΠΎΡ ΠΌΠ°ΡΡΠΈΠ²Π°
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
ΠΠ°ΠΆΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ
- Π Π°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½.
- ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π²ΡΠ΅Π³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0.
- ΠΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
.
- ΠΠ°ΡΡΠΈΠ²Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ
ΡΠΈΠΏΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
int[] arr = new int[3];
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ:
0 0 0
- Π‘ΠΎΠ²Π΅Ρ Π΄Π»Ρ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ
Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅?
int[] arr = {10, 20, 30};
System.out.println(arr[3]);
β ΠΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ArrayIndexOutOfBoundsException.
ΠΠΎΡΠ΅ΠΌΡ?
ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ:
0, 1, 2
ΠΠΎΠΏΡΡΠΊΠ° ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΡ, Π²ΡΡ
ΠΎΠ΄ΡΡΠ΅ΠΌΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ°ΡΡΠΈΠ²Ρ β ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ
ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ
ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
Π² Java.
Π₯ΠΎΡΠΎΡΠ΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΈΡ
ΡΠ°Π±ΠΎΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ArrayList, Collections, Stack, Queue, Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π½Π° ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡΡ
.
π Java Portalvarchar(255) Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎΠ»Π±Π΅Ρ ΡΠΈΠΏΠ° text; Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ β Ρ varchar Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π»ΠΈΠ½Ρ. Π’ΠΈΠΏ varchar(n) Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π» ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ. ΠΡΠ»ΠΈ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Π² PostgreSQL ΡΡΠΎΠ»Π±Π΅Ρ varchar(255), ΡΠΎ Π·Π°ΡΠ°ΡΡΡΡ ΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΠ°Π» Ρ Π΄ΡΡΠ³ΠΎΠΉ Π‘Π£ΠΠ ΠΈ ΠΏΠ΅ΡΠ΅Π½ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΆΠ½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ varchar(n).
ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ text, Π° ΠΊΠΎΠ³Π΄Π° varchar?
ΠΡΠ»ΠΈ Π΅ΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΠΎΠ»Π±Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ B-tree, ΡΡΠΎΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ varchar(n). ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ text ΠΈ Π½Π΅ Π΄ΡΠΌΠ°ΠΉΡΠ΅, ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ PostgreSQL Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ:
Π₯ΠΎΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ Π‘Π£ΠΠ ΡΠΈΠΏ character(n) ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π² PostgreSQL ΡΠ°ΠΊΠΈΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π½Π΅Ρ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, character(n)
ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ ΠΈΠ· ΡΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΠ·-Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΡΡΠ°Ρ Π½Π° Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ text ΠΈΠ»ΠΈ character varyingΠΠΎΡΠ΅ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ
varchar(n) Π½Π° text Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΡΠΎΠΈΡ?
ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
. Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
Ρ ΡΡΠΈΡ
ΡΠΈΠΏΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅.
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ pg_attribute, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅. Π‘Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΡΠ°ΡΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, Π½ΠΈ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΡΠΌΠ°Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ.
Π Π²ΠΎΡ Ρ char Π²ΡΡ ΠΈΠ½Π°ΡΠ΅
ΠΡΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Ρ char Π½Π° text Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ rtrim, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ char ΠΊ text Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ.
ΠΡΠΎ ΡΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΡΡΠ°ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΡΡΠΎΠΌΡ PostgreSQL ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠ°ΠΊ PostgreSQL Ρ
ΡΠ°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ. PostgreSQL ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡΠΌΠ°Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΡΡΠΎΠΊΠΎΠ²ΡΡ
ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
.
ΠΠ°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ Π»ΠΈΠ±ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΡΡΠΎΠΊΠ΅ ΡΠ°Π±Π»ΠΈΡΡ (inline), Π»ΠΈΠ±ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° TOAST (The Oversized-Attribute Storage Technique), ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΆΠ°ΡΠΈΠ΅ ΠΈ Π²ΡΠ½Π΅ΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ±ΡΡΠ½ΠΎ TOAST Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 2 ΠΠ.
Π varchar(n), ΠΈ text ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ TOAST.
ΠΠΎΠ³Π΄Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ varchar(n)?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ varchar(n), ΠΊΠΎΠ³Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ β ΡΡΠΎ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
country_code varchar(2), -- ISO 3166-1
currency_code varchar(3), -- ISO 4217
us_zip_code varchar(5), -- 5 ΡΠΈΡΡ
sku varchar(20), -- ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ
ΡΠΈΡΡΠ΅ΠΌ
Π‘ΡΠΎΠΈΡ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ varchar Π΄Π»Ρ country_code ΠΈ currency_code? ΠΠΎΠ½Π΅ΡΠ½ΠΎ. ΠΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΆΡΡΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΄Π»ΠΈΠ½Ρ ΡΡΠΈΡ
ΠΊΠΎΠ΄ΠΎΠ².
ΠΠ»Ρ SKU ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΈΠΊΡΠΎΠ²Π°ΡΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ us_zip_code, ΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π½Π΅ΡΠ΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ZIP+4. Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ Π² postal_code, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΡΠ΅ ΠΏΠΎΡΡΠΎΠ²ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ.
Π ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
varchar ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ.
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, varchar ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠ°Π²ΠΈΠ».
ΠΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ? Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ varchar(n)
Π‘Π°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΡΠΈΠΏΠ° text Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π½ΡΠ°Π½Ρ.
varchar(n) ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΡΠΈΡΠΎΠΉ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ username ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ΅ ΠΈΠΌΡ, Π° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ).
ΠΠΎΡΠ΅ΠΌΡ?
ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ PostgreSQL Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π°ΠΏΠΈΡΡ Π² B-tree-ΠΈΠ½Π΄Π΅ΠΊΡΠ΅, Π΅ΡΠ»ΠΈ Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 2704 Π±Π°ΠΉΡΠ°.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π½Π΅ Π½Π° ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ, Π° Π½Π° Π΅Ρ ΡΠΆΠ°ΡΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°Π·Π²Π°ΡΡ ΡΠΎΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄Π΅Π» Π² ΡΠΈΠΌΠ²ΠΎΠ»Π°Ρ
Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ: ΡΠ°Π·Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠΆΠΈΠΌΠ°ΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ.
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ ΡΠ΅ΡΠ΅Π· varchar(n) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ.
π Java Portalbreak, Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°ΠΌ ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π²Ρ Π½Π΅ Π·Π°Π±ΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ»ΡΡΠ°ΠΉ.
β
ΠΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ case, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, break Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½.
β
ΠΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π² enum, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ case? ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π° Π½Π΅ ΡΠΈΡ
ΠΈΠΉ Π±Π°Π³, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠ²ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
π Java Portalpermits.
ΠΡΠΎ Π΄Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΌΠΎΠ³ΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
β
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΎΡ sealed-ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΠΎΠ³ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΡ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π² permits.
β
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΠΉ ΠΏΠΎΠ΄ΡΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ final, sealed ΠΈΠ»ΠΈ non-sealed.
ΠΡΠΈ ΡΡΠΎΠΌ non-sealed β ΡΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° Β«ΡΠΎΡΠΊΠ° Π²ΡΡ
ΠΎΠ΄Π°Β»: Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ½ΠΈΠΌΠ°ΡΡΡΡ, ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ½ΠΎΠ²Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌ Π΄Π»Ρ Π»ΡΠ±ΡΡ
ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ².
#JavaDev
π Java Portal@Version.
β
ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π°:
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ°ΡΡΠΎ;
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΡΡ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠΎ;
ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΠ΅Π΄ΠΊΠΎ.
β ΠΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π°:
ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΡΡ ΡΠ°ΡΡΠΎ;
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠΎΠ³Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° (strict serialization).
#SpringBoot #JavaDev
π Java PortalΠ‘Π΅ΡΠ²Π΅Ρ A βοΈ Π‘Π΅ΡΡ βοΈ Π‘Π΅ΡΠ²Π΅Ρ BΠΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°ΡΡΡΡ, ΡΠ°ΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: - ΠΠ°Π½ΠΊΠΎΠ²ΡΠΊΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ - ΠΠ»Π°ΡΡΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠ°ΡΠ°ΠΌΠΈ ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ Π²Π°ΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ. - AP-ΡΠΈΡΡΠ΅ΠΌΡ ΠΡΠ±ΠΈΡΠ°ΡΡ: βοΈ ΠΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ βοΈ Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΊ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ΅ΡΡΡΡ ΡΠ²ΡΠ·Ρ, ΠΎΠ½ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: - Π‘ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠΈ - ΠΠ΅Π½ΡΡ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ - ΠΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΡΠΎΠ²Π°ΡΠΎΠ² ΠΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ Π²Π°ΠΆΠ½Π΅Π΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ. = Π Π΅Π°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ = ΠΠ°Π½ΠΊΠΈΠ½Π³ ΠΠ΅Π²Π΅ΡΠ½ΡΠ΅ Π±Π°Π»Π°Π½ΡΡ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ. ΠΡΠ±ΠΈΡΠ°ΡΡ CP. ΠΠ°ΠΉΠΊΠΈ Π² Instagram ΠΠΈΠ΄Π΅ΡΡ 1024 Π»Π°ΠΉΠΊΠ° Π²ΠΌΠ΅ΡΡΠΎ 1026 ΠΏΠ°ΡΡ ΡΠ΅ΠΊΡΠ½Π΄ β Π½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΡΠ±ΠΈΡΠ°ΡΡ AP. ΠΠΎΡΠ·ΠΈΠ½Π° ΠΏΠΎΠΊΡΠΏΠΎΠΊ ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΡΡΡ Π±Π°Π»Π°Π½Ρ. ΠΠΎΡΠ·ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ, Π° Π²Π°ΠΆΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΠΎΠΏΠ»Π°ΡΠ°) β ΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ. ΠΠ»Π°Π²Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄. Π’Π΅ΠΎΡΠ΅ΠΌΠ° CAP Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡ: Β«ΠΡΠ±Π΅ΡΠΈ Π»ΡΠ±ΡΠ΅ Π΄Π²Π°Β». ΠΠ½Π° Π³ΠΎΠ²ΠΎΡΠΈΡ: ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π²Ρ ΠΎΠ±ΡΠ·Π°Π½Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡΡ ΠΈ ΠΠΎΡΡΡΠΏΠ½ΠΎΡΡΡΡ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡ. π Java Portal
alg, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉ ΠΆΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² "none", ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠΏΡΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ.
ΠΠ»ΠΈ Π²Π·ΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ RSA-ΠΊΠ»ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ HMAC-ΡΠ΅ΠΊΡΠ΅Ρ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· HS256 β ΠΈ ΡΠ΅ΡΠ²Π΅Ρ, Π΄ΠΎΠ²Π΅ΡΡΡΡΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡ, ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½.
ΠΡΠΎ Π°ΡΠ°ΠΊΠ° RS256βHS256 confusion, ΠΈ ΠΎΠ½Π° Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π»ΠΎΠΌΠ°Π΅Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
2. PASETO ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡ ΠΊ Π²Π΅ΡΡΠΈΠΈ
Π’ΠΎΠΊΠ΅Π½ PASETO ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΠ°Ρ version.purpose.payload. ΠΠ΅ΡΡΠΈΡ ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΡΠΈΡΡΠΎΠ² β Π½Π΅ΡΠ΅Π³ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²ΡΠ²Π°ΡΡ.
v4.public β Π²ΡΠ΅Π³Π΄Π° Ed25519. v4.local β Π²ΡΠ΅Π³Π΄Π° XChaCha20 Ρ BLAKE2b. ΠΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° alg β Π½Π΅Ρ Π°ΡΠ°ΠΊΠΈ alg:none ΠΈ confusion-Π°ΡΠ°ΠΊ.
3. ΠΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° Π½Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½ (local) Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ. ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½ (public) ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ ΡΠ°ΠΊ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ JWT ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ β payload ΡΠΈΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ base64, ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΡ ΡΡΠ΅ΠΊΠ°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π»ΡΠ΄ΠΈ Π·Π°Π±ΡΠ²Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ.
4. ΠΠ»Ρ ΡΠ΅ΡΡΠΈΠΉ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π½ΠΈ ΡΠΎ, Π½ΠΈ Π΄ΡΡΠ³ΠΎΠ΅
JWT Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΡΠΎΡΠΊΠΎΠΆΠΈΠ²ΡΡΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ β ΠΌΠΈΠ½ΡΡΡ, Π° Π½Π΅ Π½Π΅Π΄Π΅Π»ΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½Π΅ΡΡΡ ΡΠ΅ΡΡΠΈΡ. Google Π΄Π΅Π»Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ: JWT ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π»ΠΎΠ³ΠΈΠ½Π° ΠΌΠ΅ΠΆΠ΄Ρ Ρ
ΠΎΡΡΠ°ΠΌΠΈ, Π° ΡΠ΅ΡΡΠΈΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΎΡΡΠ°ΡΡΡΡ ΠΊΡΠΊΠΎΠΉ.
PASETO β Π»ΡΡΡΠΈΠΉ Π²ΡΠ±ΠΎΡ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΊΠΎΠΆΠΈΠ²ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π°: SSO-ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Ρ, ΠΌΠ΅ΠΆΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠ»Ρ ΡΠ΅ΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ ΠΊΡΠΊΠ°, ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ»ΡΠ½Π½Π°Ρ Postgres ΠΈΠ»ΠΈ Redis, Π° ΠΎΡΠ·ΡΠ² ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ β ΡΡΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π»ΠΎΠ³ΠΈΠ½ΠΎΠ² Ρ
Π²Π°ΡΠ°ΡΡΡΡ Π·Π° ΡΠΎΠΊΠ΅Π½ ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΏΠΎΠ΄ΠΎΡΠ»Π° Π±Ρ ΡΠ΅ΡΡΠΈΡ.
https://gist.github.com/samsch/0d1f3d3b4745d778f78b230cf6061452
π Java Portal