рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреИрдЯрд░реНрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ [PoEAA]

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

рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдкрд░ рдСрдлрд▓рд╛рдЗрди рд▓реЙрдХ рдкреИрдЯрд░реНрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡реНрдпрд╡рд╣рд╛рд░ [рдЖрд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ, рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ]


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

рдЖрдЗрдП рд╣рдо рд╕рдорд╛рдирд╛рдВрддрд░ рдСрдлрд▓рд╛рдЗрди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдкрд░ рдЖрд╢рд╛рд╡рд╛рджреА рдСрдлрд▓рд╛рдЗрди рд▓реЙрдХ рдФрд░ рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдЖрд╢рд╛рд╡рд╛рджреА рдФрд░ рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЗрд╕ рдорд╛рдк рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕ рдкрд░ рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗред рддрд╛рд▓рд┐рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:

CREATE TABLE values ( "id" integer PRIMARY KEY, "field1" varchar(4096), "field2" decimal(20, 2), "locked" boolean, "version" integer DEFAULT 0 ); INSERT INTO values ( "id", "field1", "field2", "locked", "version" ) VALUES ( 1,'record 1', 0.00, false, 0 ); 

рдорд╛рдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЬрд╛рд╡рд╛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рд╣реИрдВред рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрдХрд╛рдИ рд╡рд░реНрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ (рдорд╛рди рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрдВрдХреНрддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ):

 @Entity @Table(name="values", schema="public") public class Value { @Id private Integer id; private String field1; private BigDecimal field2; private Boolean locked; private Integer version; //   } 

рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдкреИрдЯрд░реНрди рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рджреЛ рдХрдХреНрд╖рд╛рдПрдВ DAO рдФрд░ рдЯрд╛рд╕реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред DAO рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдФрд░ рддрд╛рд▓реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рд╕рднреА рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЯрд╛рд╕реНрдХ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рдПрдХ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдиреЛрдЯ 1: рджреЛ рдкреИрдЯрд░реНрди (рдкреЗрд╕рд┐рдорд┐рд╕рд┐рдЯрд┐рдХ рдФрд░ рдСрдкреНрдЯрд┐рдорд┐рд╕реНрдЯрд┐рдХ) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛ рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдХ рдореИрдиреЗрдЬрд░ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдиреЛрдЯ 2: рдСрдкреНрдЯрд┐рдорд┐рд╕реНрдЯрд┐рдХ рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдореИрдиреНрдпреБрдЕрд▓ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рдорд╛рдирддрд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред

рдЖрд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб

 @Repository("optimisticDao") @Scope("prototype") public class ValueDaoWithOptimisticControl implements ValueDao { //    @Transactional @Override public Value loadValue(Integer id) { //    Value value = (Value) sessionFactory.getCurrentSession().get( Value.class, id ); return value; } @Transactional @Override public void storeValue(Value value) { //          Value oldValue = (Value) sessionFactory.getCurrentSession().get( Value.class, value.getId(), new LockOptions(LockMode.PESSIMISTIC_WRITE) ); if (!value.getVersion().equals(oldValue.getVersion())) throw new OptimisticLockingFailureException("Value was modified"); oldValue.setField1(value.getField1()); oldValue.setField2(value.getField2()); oldValue.setVersion(value.getVersion() + 1); } } @Component("optimisticTest1") @Scope("prototype") public class ValueTaskWithOptimisticControl implements ValueTask { //    @Override public void run() { try { startLatch.await(); } catch (InterruptedException e2) { Thread.currentThread().interrupt(); } while (!Thread.currentThread().isInterrupted()) { Value value = null; //  try { value = valueDao.loadValue(id); } catch (NestedRuntimeException e) { continue; } value.setField2(value.getField2().add(BigDecimal.ONE)); //     try { valueDao.storeValue(value); countOfChanges++; } catch (NestedRuntimeException e) { //  try { Thread.sleep(300); } catch (InterruptedException e1) { Thread.currentThread().interrupt(); break; } continue; } } finishLatch.countDown(); } } 

рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб

 @Repository("pessimisticDao") @Scope("prototype") public class ValueDaoWithPessimisticControl implements ValueDao { //    @Transactional @Override public Value loadValue(Integer id) { //          Value value = (Value) sessionFactory.getCurrentSession().get( Value.class, id, new LockOptions(LockMode.PESSIMISTIC_WRITE) ); if (value.isLocked()) throw new PessimisticLockingFailureException("Value have already locked"); value.setLocked(true); return value; } @Transactional @Override public void storeValue(Value value) { //          Value oldValue = (Value) sessionFactory.getCurrentSession().get( Value.class, value.getId(), new LockOptions(LockMode.PESSIMISTIC_WRITE) ); if (!oldValue.isLocked()) throw new PessimisticLockingFailureException("Value have not locked"); oldValue.setField1(value.getField1()); oldValue.setField2(value.getField2()); oldValue.setLocked(false); } } @Component("pessimisticTest1") @Scope("prototype") public class ValueTaskWithPessimisticControl implements ValueTask { //    @Override public void run() { try { startLatch.await(); } catch (InterruptedException e2) { Thread.currentThread().interrupt(); } while (!Thread.currentThread().isInterrupted()) { Value value = null; //    . //       . while (value == null) { try { value = valueDao.loadValue(id); } catch (NestedRuntimeException e) { try { Thread.sleep(300); } catch (InterruptedException e1) { Thread.currentThread().interrupt(); break; } } } if (value == null) continue; value.setField2(value.getField2().add(BigDecimal.ONE)); try { valueDao.storeValue(value); countOfChanges++; } catch (NestedRuntimeException e) { continue; } } finishLatch.countDown(); } } 

рд╣рд░ рдХреЛрдИ рдЬреЛ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ, рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, maven 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 export MAVEN_OPTS=-server mvn exec:java -Dexec.mainClass="concurrency.patterns.Application" \ -Dexec.args="-time ___ \ -concurrency_rate _ -id _ -action _" 

рдПрдХ рд╕рд╛рде рдкрд╣реБрдВрдЪ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ (10 рд╕реЗрдХрдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП) рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдорд╛рдк 4-рдХреЛрд░ рд╕реАрдкреАрдпреВ рдкрд░ рдХрд┐рдП рдЧрдП рдереЗред



рд╕рдЪ рдХрд╣реВрдБ рддреЛ, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдереЛрдбрд╝рд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдерд╛ред рдореИрдВ рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдХреЗ рдХреНрд╖рд░рдг рдХреА рдмрд╣реБрдд рдХрдо рдбрд┐рдЧреНрд░реА рдкрд░ рдЧрд┐рди рд░рд╣рд╛ рдерд╛ред рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХрд╛ рдПрдХ рддреБрд▓рдиреАрдп рд╕реНрддрд░ рд╣реИред рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдПрдХ рдУрд╡рд░рд╕рд╛рдЗрдЯ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рд▓реЙрдХрд┐рдВрдЧ рдХреИрдкреНрдЪрд░ рдХреЗ рд╕рд╛рде ValueDaoWithOptimisticControl рд╡рд░реНрдЧ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдСрдкреНрдЯрд┐рдорд┐рд╕реНрдЯрд┐рдХ рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЕрдзрд┐рдХ рдХреНрд╖рд░рдг рд╣реБрдЖред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдкреЗрд╕рд┐рдорд┐рд╕реНрдЯрд┐рдХ рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА рдХреЗ рдХрд╛рд░рдг рдЧрд┐рд░рд╛рд╡рдЯ рд╣реЛрддреА рд╣реИред рд╕рдорд╡рд░реНрддреА рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ 4 рдкреНрд░рд╢реНрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (2 рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЪрдпрди рдХрд░реЗрдВ рдФрд░ 2 рдЕрдкрдбреЗрдЯ рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЕрдирд▓реЙрдХ рдХрд░реЗрдВ), рдЬрдмрдХрд┐ рдПрдХ рдЖрд╢рд╛рд╡рд╛рджреА 3 рдкреНрд░рд╢реНрди (1 рдЪрдпрди, 2 рдЕрдкрдбреЗрдЯ рдФрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЪрдпрди рдХрд░реЗрдВ)ред рджрд░рдЕрд╕рд▓, рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкреВрд░рд╛ рдЕрдВрддрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдореБрдЦреНрдп рд╕рдордп рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреНрд░рдорд╛рдВрдХрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ рд▓рдЧрднрдЧ рдмрд░рд╛рдмрд░ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдореБрдЦреНрдп рдЕрдВрддрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЧрд╛рд░рдВрдЯреА рдХреЗ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╣реИ рдЬреЛ рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрд╕рд╛рдзрди рдХреА рдЦрдкрддред рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдЖрд╢рд╛рд╡рд╛рджреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдпрд╣ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рджреМрд░рд╛рди рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реБрд▓реНрдХ рд╣реИред

рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдкреИрдЯрд░реНрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рдирд╣реАрдВ рд╣реИ, рдЖрдк рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдХрдо рдХрд░рдХреЗ рдФрд░ рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рджреЛ рдЕрджреНрдпрддрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдХрд░ рдФрд░ рдЖрд╢рд╛рд╡рд╛рджреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрдпрддрди рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдЪрдпрди рдЕрдиреБрд░реЛрдз рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдирд┐рдЪреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдиреБрдХреВрд▓рди рд╣рдорд╛рд░реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдореМрд▓рд┐рдХ рдорд╣рддреНрд╡ рдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рджреМрд░рд╛рди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдХрдмреНрдЬрд╛ [рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рддрд╛рд▓рд╛]


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

рдИрд╡реЗрдВрдЯ рдХреЛ рд▓реЙрдХ рдХрд░реЗрдВ

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд▓реЙрдХ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЛ рдЯреНрд░реЗрд╕ рдХреЗ рдмрд┐рдирд╛ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрддреНрддреЗрдЬрдХ рд╕рдВрдХреЗрдд (рдШрдЯрдирд╛) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдШрдЯрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдПрдХ рдбрд┐рд╕реНрдХрдиреЗрдХреНрд╢рди, рд▓реЙрдХ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдЕрд╡рдзрд┐ рдХреА рд╕рдорд╛рдкреНрддрд┐, рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИред

рдХрдиреЗрдХреНрд╢рди рдбреНрд░реЙрдк рдЯреНрд░реИрдХрд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рддрдм рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдХрдиреЗрдХреНрд╢рди рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рд╕реНрддрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдпрд╣ рдпрд╛ рддреЛ tcp рдХрдиреЗрдХреНрд╢рди рд╡рд┐рд░рд╛рдо рдпрд╛ рдПрдХ рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рддреНрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

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

рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ

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

PoEAA рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреИрдЯрд░реНрди рд▓рд╛рдЧреВ рдХрд░рдирд╛


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

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

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрд░реЛрдд


рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреБрд░рд╛рд▓реЗрдЦ
рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рддрд╛рд▓рд╛
рдЖрд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ

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


All Articles