4GB рдореБрдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЯреИрдмрд▓реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 16GB рдХреА рдзрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


рдЙрджреНрджреЗрд╢реНрдп:


рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреАрд╕реА рд╣реИ рд▓реЗрдХрд┐рди рдпреВрдПрд╕рдмреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреИрдмрд▓реЗрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЯреИрдмрд▓реЗрдЯ рдкрд░ рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рдзрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдирд╣реАрдВред рдзрд╛рд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдПрдХрд▓ рдФрд░ рдмрдбрд╝реА рд╣реИред


рд╕рдорд╛рдзрд╛рди рдХрд╛ рд░рд╛рд╕реНрддрд╛:


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


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


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


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


рднрд╛рдЧреЛрдВ рдореЗрдВ рдзрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


  1. рдкрд╣рд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЯреЛрд░реЗрдВрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ
  2. рд░реЛрдо рднрд░реЗ рдЬрд╛рдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
  3. рдбрд╛рдЙрдирд▓реЛрдб рд░реЛрдХреЗрдВ
  4. рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреВрд╕рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рдПрдХ рдЕрдВрдХ рдЬреЛрдбрд╝реЗрдВ
  5. рдЬрдм рддрдХ рдлрд╝рд╛рдЗрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рди рд╣реЛ рдЬрд╛рдП, рддрдм рддрдХ рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ

рднрд╛рдЧреЛрдВ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд░реНрдЬ рдХрд░реЗрдВ


рдЕрдВрддрд┐рдо рднрд╛рдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реИ:


  1. рдПрдХ рдмрд╛рд░ рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЛ рдкрдврд╝реЗрдВ
  2. рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреБрдЫ рднрд╛рдЧ рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╣рдо рд╢реВрдиреНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ

merge_part рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреНрд░реАрдо рдХреА рдПрдХ рд╕рд░рдгреА рд▓реЗрддрд╛ streams_in рд╕реНрдЯреНрд░реАрдо рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдпрд╣ size buffer_length рдХрд╛ рдПрдХ рднрд╛рдЧ рдкрдврд╝рддрд╛ рд╣реИред buffer_length рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдзрд╛рд░рд╛рдУрдВ рд╕реЗ рднрд╛рдЧреЛрдВ рдХреЗ рд╡рд┐рд▓рдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред


 function merge_part(streams_in, buffer_length) local out_part for _, stream in ipairs(streams_in) do local in_part = stream:read(buffer_length) if not out_part then out_part = in_part --       elseif in_part and #in_part > 0 then if #out_part < #in_part then out_part, in_part = in_part, out_part end if out_part ~= in_part --   and in_part:find("[^\0]") --    in_part and out_part:find("\0", 1, true) --     out_part then local find_index = 1 --[[ 

string.gsub рдлрд╝рдВрдХреНрд╢рди рдХрд╛рд░реНрдп рдХреЗ string.gsub рдЙрдкрдпреБрдХреНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╢реВрдиреНрдп рд╕реЗ рднрд░реЗ рд╣реБрдП рдЯреБрдХрдбрд╝реЗ рдорд┐рд▓реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


 --]] out_part = out_part:gsub("\0+", function(zero_string) if #in_part < find_index then return --     end --[[ 

string.gsub рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдПрдХ рдореИрдЪ рдорд┐рд▓рд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо string.find рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд┐рддрд┐ zero_string рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкрд╣рд▓рд╛ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред


 --]] local start_index = out_part:find("\0", find_index, true) find_index = start_index + #zero_string --[[ 

рдЕрдм, рдЕрдЧрд░ in_part рдкрд╛рд╕ in_part рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╣реИ, рддреЛ in_part рдХреЙрдкреА рдХрд░реЗрдВред


 --]] if #in_part >= start_index then local end_index = start_index + #zero_string - 1 --[[ 

рд╣рдо in_part рд╕реЗ рд╢реВрдиреНрдп рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЕрдиреБрд░реВрдк рднрд╛рдЧ рдХреЛ рдХрд╛рдЯ in_part ред


 --]] local part = in_part:sub(start_index, end_index) if (part:byte(1) ~= 0) or part:find("[^\0]") then --[[ 

part рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред


 --]] if #part == #zero_string then return part else --[[ 

part рд╢реВрдиреНрдп рдХреЗ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдХрдо рдирд┐рдХрд▓рд╛ред рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде рдкреВрд░рдХ рд╣реИрдВред


 --]] return part..zero_string:sub(1, end_index - #in_part) end end end end) end end end return out_part end 

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдкреАрд╕реА рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рд╡рд┐рд▓рдп рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЯреИрдмрд▓реЗрдЯ рд╕реЗ рдПрдХ рдзрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдирд┐рдХрд╛рд▓реАред рдореИрдВрдиреЗ рдкреАрд╕реА рдкрд░ рдЯреЛрд░реЗрдВрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдХреЛ рдЪреЗрдХ рдХрд┐рдпрд╛ред


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


рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ:


  1. рдЯреИрдмрд▓реЗрдЯ рдкрд░ рдЯреЛрд░реЗрдВрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝реНрд▓рдбред
  2. рдкреАрд╕реА рдкрд░ QBittorent рдЯреЛрд░реЗрдВрдЯ рдХреНрд▓рд╛рдЗрдВрдЯред
  3. рд▓реБрдЖ рд▓рд┐рдкрд┐

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


All Articles