рдЬрд╛рд╡рд╛ рдореЗрдВ рддрд╛рд░реЛрдВ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рдЕрдиреБрд╡рд╛рдж рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬрд╛рд╡рд╛ рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрддред рдпрд╣ рдЖрд▓реЗрдЦ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред

рдорд╣рддреНрд╡рдкреВрд░реНрдг: 17 рд╡реЗрдВ рдЕрдкрдбреЗрдЯ рдореЗрдВ, рдЬрд╛рд╡рд╛ 7 рдиреЗ рдЕрднреА рднреА рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред

рд╡рд░реНрдгреЛрдВ рдХреЗ рднрд╛рдЬрд┐рдд рд╡рд░реНрдг рд╕рд░рдгреА []

рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд░реНрдЧ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, 4 рдЙрджрд╛рд╣рд░рдг рдлрд╝реАрд▓реНрдб рд╣реИрдВ: рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд░реНрдгреЛрдВ рд╡рд╛рд▓реЗ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдПрдХ char [] рдорд╛рди рд╕рд░рдгреА, int рдСрдлрд╕реЗрдЯ рдореВрд▓реНрдп рд╕рд░рдгреА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкрд╣рд▓реЗ рд╡рд░реНрдг рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ, int count рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдФрд░ int hash рдЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдХрд▓рд┐рдд рд╣реИрд╢ рдХреЛрдб рдХрд╛ рдХреИрд╢реНрдб рдорд╛рди рд╣реИ ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдорд╛рдиреЛрдВ рдХреА рднрд░рдкрд╛рдИ рд╣реЛрдЧреА = 0 рдФрд░ рдЧрд┐рдирддреА = value.lengthред рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж рддрдм рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдХреЛрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ viaString.substring рд╡рд┐рдзрд┐ рдпрд╛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд╛рдЬрди) рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╣реЛред

String.substring рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрдг рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИ [] рдореВрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╡рд░реНрдгреЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рд░рдгреА, рдЬреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
  1. рдореЗрдореЛрд░реА рдХреЛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣реЗрдЬреЗрдВ;
  2. String.substring рд╡рд┐рдзрд┐ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╕реНрдерд┐рд░ (O (1)) рдХрд░реЗрдВред

рдЙрд╕реА рд╕рдордп, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, рдПрдХ рдореЗрдореЛрд░реА рд▓реАрдХ рд╕рдВрднрд╡ рд╣реИ: рдпрджрд┐ рдЖрдк рдПрдХ рдмрдбрд╝реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдЕрдм рдПрдХ рдмрдбрд╝реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореВрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╡рд░реНрдгреЛрдВ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рд░рдгреА рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛, рдЕрд░реНрдерд╛рдд, рдмрдбрд╝реЗ "рдорд╛рддрд╛-рдкрд┐рддрд╛" рд╕реЗ рдЕрдкрдиреЗ рдЫреЛрдЯреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

Java 1.7.0_06 рдореЗрдВ, рдСрдлрд╕реЗрдЯ рдФрд░ рдЧрд┐рдирддреА рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд░реНрдЧ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЕрдм рдФрд░ рд╡рд░реНрдгреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рд╣рдо рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдХрднреА рдирдП рд╕реНрдЯреНрд░рд┐рдВрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рджреЛрд╖ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ String.substring рдкрджреНрдзрддрд┐ рдореЗрдВ рдЕрдм рд░реИрдЦрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ рдЬреЛ рдХрднреА рд╣реБрдЖ рдХрд░рддреА рдереАред

рд╣реИрд╢ рд▓реЙрдЬрд┐рдХ рдЪреЗрдВрдЬ

рдПрдХ рдФрд░ рдЕрдкрдбреЗрдЯ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмрджрд▓рд╛рд╡ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛: рдПрдХ рдирдпрд╛ рд╣реИрд╢ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдоред рдУрд░реЗрдХрд▓ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдирдпрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИрд╢ рдХреЛрдб рдХрд╛ рдмреЗрд╣рддрд░ рд╡рд┐рддрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреБрдЫ рд╣реИрд╢-рдЖрдзрд╛рд░рд┐рдд рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рд╣реИрд╢рдкреИрдо, рд╣реИрд╢рдЯреЗрдмрд▓, рд╣реИрд╢рд╕реЗрдЯ, рд▓рд┐рдВрдХреНрдбрд╣рд╛рд╢рд╕реЗрдЯ, рд╡реАрдХреИрд╢рд╣реИрд╕реНрдЯ, рдФрд░ рдХреЙрдирд╕реБрд░реЗрд╢рд╣реИрд╢рдкред рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЧрдП рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рджреЗрдЦрд╛ рд╣реИ, рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд╕рдВрдЧреНрд░рд╣ рдХреБрдВрдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдЧреБрдг jdk.map.althashing.threshold рдХрд╛ рдорд╛рди рдПрдХ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ -1 рд╣реИ)ред рдпрд╣ рдорд╛рди рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЖрдХрд╛рд░ рдХреА рд╕реАрдорд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдирдП рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдЫреЛрдЯрд╛ рд╕реБрдзрд╛рд░: рд╣реИрд╢ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗрд╡рд▓ рддрднреА рдмрджрд▓рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рди рд╣реЛред рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЖрдХрд╛рд░ = 160 рдФрд░ jdk.map.althashing.threshold = 200 рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣реИрд╢рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЛ рддрднреА рдмрджрд▓рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЖрдХрд╛рд░ 320 рд╣реЛ рдЬрд╛рдПред

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЕрдм рдПрдХ рд╣реИрд╢ 32 () рд╡рд┐рдзрд┐ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЗрдВрдЯ рд╣реИрд╢ 32 рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ 32 () рд╡рд┐рдзрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬреЗрд╡реАрдПрдо рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ System.currentTimeMillis () рдФрд░ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рд▓рд┐рдП System.nanoTime рдХреЗ рд▓рд┐рдП рджреЛ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдЪрд▓рдирд╛ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рд╕реЗ рдереЛрдбрд╝рд╛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛ред рдЕрдЧрд░ рд╣реИрд╢рдХреЛрдб рдкрджреНрдзрддрд┐ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рд╣реИрд╢ 32 () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рддрдиреА рдЯрдХреНрдХрд░ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рдПрдЧреАред String.hash32 () рд╡рд┐рдзрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд╢рдк рд╡рд░реНрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрд╛ред рдЙрддреНрддрд░: sun.misc.Hashing.stringHash32 (рд╕реНрдЯреНрд░рд┐рдВрдЧ)ред String.hashCode рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЯрдХрд░рд╛рд╡ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдПрдХ рдорд┐рд▓рд┐рдпрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рд╡рд┐рдзрд┐ рдиреЗ 304 рдЯрдХрд░рд╛рд╡ рд▓реМрдЯрд╛рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдФрд░ рд╕реБрдзрд╛рд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдирдП рд╣реИрд╢ рддрд░реНрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдХреЛрдб рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдирд┐рдореНрди рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╣реИрд╢рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдУрд░реЗрдХрд▓ рдиреЗ рдПрдХ рдЧрд▓рддреА рдХреА: рд╣реИрд╢рдкреЙрд╢, рд╣реИрд╢рдЯреЗрдмрд▓, рд╣реИрд╢рд╕реЗрдЯ, рд▓рд┐рдВрдХреНрдбрд╣рд╛рд╢рд╕реЗрдЯ, рд╡реАрдХрд╣рд╛рд╢рдореИрдкред рдХреЗрд╡рд▓ ConcurentHashMap рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЧреИрд░-рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЕрдм рдПрдХ рдХреНрд╖реЗрддреНрд░ рд╣реИ:

/** *            . */ transient final int hashSeed = sun.misc.Hashing.randomHashSeed(this); 

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдЙрдкрд░реЛрдХреНрдд рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ sun.misc.Hashing.randomHashSeed рдкрджреНрдзрддрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдмрджрд▓реЗ рдореЗрдВ, randomHashSeed рдкрджреНрдзрддрд┐ java.util.Random.nextInt рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд░реИрдВрдбрдо рд╡рд░реНрдЧ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ: рдЗрд╕рдореЗрдВ рдирд┐рдЬреА рдЕрдВрддрд┐рдо рдПрдЯреЙрдорд┐рдХрд▓реЙрдиреНрдЧ рдмреАрдЬ рдХреНрд╖реЗрддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рдПрдЯреЙрдорд┐рдХреНрд╕ рдФрд╕рдд рд▓реЛрдб рдХреЗ рддрд╣рдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЦрд░рд╛рдм рд▓реЛрдб рдХреЗ рддрд╣рдд рдЦрд░рд╛рдмред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, HTTP / JSON / XML рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдЕрддреНрдпрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдЬреНрдЮрд╛рдд рдкрд╛рд░реНрд╕рд░ (рдкрд╛рд░реНрд╕рд░) рдкреНрд░рднрд╛рд╡рд┐рдд рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рд╕рднреА рдкрд╛рд░реНрд╕ рдиреЗрд╕реНрдЯреЗрдб рдореИрдк рдХрд▓реЗрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдмрдирд╛рдП рдЧрдП рдореИрдк рдХрд▓реЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рдПрдЧреАред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ?

1. рд╕рдорд╡рд░реНрддреА рд╣рд╛рд╢рдо рдкрде: рдпрд╛рджреГрдЪреНрдЫрд┐рдХрд╣реИрд╢ рд╡рд┐рдзрд┐ рдХреЛ рддрднреА рдХреЙрд▓ рдХрд░реЗрдВ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдЧреБрдг jdk.map.althashing.threshold рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХреЗрд╡рд▓ JDK рдХрд░реНрдиреЗрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред

 /** *            . */ private transient final int hashSeed = randomHashSeed(this); private static int randomHashSeed(ConcurrentHashMap instance) { if (sun.misc.VM.isBooted() && Holder.ALTERNATIVE_HASHING) { return sun.misc.Hashing.randomHashSeed(instance); } return 0; } 

2. рд╣реИрдХрд░ рддрд░реАрдХрд╛: рд╡рд░реНрдЧ sun.misc.Hashing рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрддрд┐ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рддред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: java.utilред рдЖрдпрд╛рдореА рд╡рд░реНрдЧ рдЕрдВрддрд┐рдо рдирд╣реАрдВ рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рдЕрдЧрд▓реА рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдерд┐рд░ рдорд╛рдиред рддрдм рдЖрдкрдХреЛ рдлрд╝реАрд▓реНрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред sun.misc.Hashing.Holder.SEED_MAKER рдЗрд╕реЗ рд░реИрдВрдбрдо рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗред рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреНрд╖реЗрддреНрд░ рдирд┐рдЬреА рд╣реИ, рд╕реНрдерд┐рд░ рдФрд░ рдЕрдВрддрд┐рдо рд╣реИ - рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЖрдкрдХреЛ рдорджрдж рдХрд░реЗрдЧрд╛ред

рд╕рд╛рд░рд╛рдВрд╢


рдЦреБрдж рд╕реЗ

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рддрд╛рд░ рдиреЗ рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛, рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд▓рдЧрд╛рддрд╛рд░ рдереЗред рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдЕрдкрдиреЗ рд╕рднреА рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╡рд┐рдзрд┐ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рд╕рдордп рдХреЛ рд╕реНрдерд┐рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд░реВрдк рдореЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд╛рдн рдЗрддрдиреЗ рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 7 рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

.NET рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╢реБрд░реВ рдореЗрдВ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рдереЗред рдпрд╣рд╛рдВ рдПрд░рд┐рдХ рд▓рд┐рдкрд░реНрдЯ рдХреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рдХреА рдПрдХ рдХрдбрд╝реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИред

рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдорджрджрдЧрд╛рд░ рд░рд╣рд╛ рд╣реИред

Source: https://habr.com/ru/post/In178409/


All Articles