ืฆื ืืืจ ืืจืึทืืื ืื ืฆืืืื ืึธืคึผืฆืืขืก ืคึฟืึทืจ ืืขืกืืื ื ืื ืึธืื ืืื ืึท ืฉืืืืฃ ืืขื ืขื ืขืงืืืืืืึทืืขื ื ืืื ืคืึธืจืฉืืขืืื ื?
if a > b && c*2 > d {
....
}
// ะธ
if a <= b {
continue;
}
if c*2 > d {
....
}
ืขืก ืึทืืข ืื ืืขืืืืื ืืื ืึท "ืืึทืจื ืืืึทืจืขื-ืึทืจืืืฃ"; ืืื ืืื ืฆื ืืขืื ืึท ืืืืฉืคึผืื ืคืื ืึทื ืึธืคึผืืืืึทื ืืืื ืคึฟืึทืจ ืื ืืจืขืกืืข ืืคืืื ื ืืืขืจ ืืื ืึท ืืขื ืืข ืคืื โโโโืื ืืึทืืืฉืขืจื [-X .... X]. ืืื ืืื ืืขืืืขื ืืืึทื ืืขืจืื ื ืืื ืคืื ืืขืกืขืจ ืคืึธืจืฉืืขืืื ื ืืืึธืื ืืืื ืืืื ืืื ืืขืืืืื ื ืืึทืืืฉืืงืึทื ืงืืืคื ืืื 1 ืฆื ืจืขืืขื ืขื ืฆื ืึท ื ืืืขืจ ืืื ืืคืืื ืึธืืขืจ ื ืืฉื.
//ั ัะตัะฝัั
ัะธัะตะป ะฟะพัะปะตะดะฝะธะน ะฑะธั ะฒัะตะณะดะฐ ัะฐะฒะตะฝ 0
value & 1 == 0
//vs ะบะปะฐััะธัะตัะบะธะน ะผะตัะพะด
value % 2 == 0
ืืืึทื ืคึผืจืึธืืจืึทืืืื ื ืืขืจืคืึทืจืื ื ืืื Go ืืื ื ืืฉื ืืืืขืจ ืืจืืื, ื ืึธืจ ืืืืขืจ ืึท ืืึธืจ ืืื ืึท ืืึทืื, ืืื ืืขืืืืื ื ืขืก, ืืึธืืฉ ืึธืคื, ืึธืืขืจ ืจืืื ืคึฟืึทืจ ืืืืืืึทืืขืจืืึทื ืฆืืืขืงื (ื ื, ืืคึฟืฉืจ ืึทืืืฅ ืคึฟืึทืจ ืืืื ืคึผืจืืืขืงื ืฉืืึทืืืช ืฆื ืึท ืืืื-ืืึทืกืข ืืืืคึผ ืืื ืกื), ืึทืืื ืืื ืื ืืขืืืืื ืืื ืืื. ืขืคึฟืขื ืขื GoLand ืืื ืฉืจืืึทืื ืึท ืคึผืฉืื ืคึผืจืึธืืข
package main
import (
"fmt"
"log"
"math"
"math/rand"
"time"
)
const size = 100000000 //math.MaxInt32*2
type Result struct {
Name string
Duration time.Duration
Value int32
}
func main() {
log.Println("initial array capacity: " + fmt.Sprint(size))
var maxValue int32
// ะัะดะตะผ ะฒะฐััะธัะพะฒะฐัั ะดะธะฐะฟะฐะทะพะฝ ัะธัะตะป ะพั ะผะธะฝะธะผะฐะปัะฝะพะณะพ
// ะดะพ ะผะฐะบัะธะผะฐะปัะฝะพะณะพ. ะงะตะผ ะผะตะฝััะต ะดะธะฐะฟะฐะทะพะฝ, ัะตะผ ะฑะพะปััะต
// ะฟัะพัะตััะพัะฝะพะณะพ ะฒัะตะผะตะฝะธ ะฑัะดะตั ัั
ะพะดะธัั ะฝะฐ ะพะฟะตัะฐัะธั
// ััะฐะฒะฝะตะฝะธั ัะตะบััะตะณะพ ัะธัะปะฐ, ั ัะฐะฝะตะต ะฝะฐะนะดะตะฝะฝัะผ ะธ ะฝะฐะพะฑะพัะพั
for maxValue = 128; maxValue < math.MaxInt32/2+1; maxValue = maxValue * 2 {
test(maxValue)
}
}
func test(maxValue int32) {
log.Println("max threshold: " + fmt.Sprint(maxValue))
arr := make([]int32, size)
for i := range arr {
arr[i] = rand.Int31n(maxValue)
// ะฒ ัะตััะพะฒัั
ะดะฐะฝะฝัั
ะฝะฐะผ ะฝัะถะฝั ะธ ะพััะธัะฐัะตะปัะฝัะต ัะธัะปะฐ
sign := rand.Intn(2)
if sign == 1 {
arr[i] = -arr[i]
}
}
// ะทะฐะฟััะบะฐะตะผ ัะตัั "ะดะตะปะตะฝะธะต ั ะพััะฐัะบะพะผ"
result := maxEvenDividing("maxEvenDividing", arr)
log.Printf(result.Name+"t result: "+fmt.Sprint(result.Value)+"ttduration %s", result.Duration)
// ะทะฐะฟััะบะฐะตะผ ัะตัั "ะบะพะฝััะฝะบัะธะธ"
result = maxEvenConjunction("maxEvenConjunction", arr)
log.Printf(result.Name+"t result: "+fmt.Sprint(result.Value)+"ttduration %s", result.Duration)
}
func maxEvenDividing(name string, arr []int32) Result {
start := time.Now()
var current int32 = math.MinInt32
for _, value := range arr {
if value > current && value%2 == 0 {
current = value
}
}
duration := time.Since(start)
result := Result{name, duration, current}
return result
}
func maxEvenConjunction(name string, arr []int32) Result {
start := time.Now()
var current int32 = math.MinInt32
for _, value := range arr {
if value > current && value&1 == 0 {
current = value
}
}
duration := time.Since(start)
result := Result{name, duration, current}
return result
}
ืืืจ ืืึทืงืืืขื ืึท ืจืขืืืืืึทื ืืืึธืก ืืืืืื ืึทื ืื ืืขืืขืจ ืื ืฉืืืขื, ืื ืืขืจ ืึธืคื ืคืืึทืงืืฉืืืืฉืึทื ื ืืื ืคืึธืจืฉืืขืืื ื ืืขืจืฉืืึทื ืขื.
ืคืึทืจืืืืึทืืmax threshold: 128
maxEvenDividing result: 126 duration 116.0067ms
maxEvenConjunction result: 126 duration 116.0066ms
max threshold: 16384
maxEvenDividing result: 16382 duration 115.0066ms
maxEvenConjunction result: 16382 duration 111.0064ms
......
max threshold: 8388608
maxEvenDividing result: 8388606 duration 109.0063ms
maxEvenConjunction result: 8388606 duration 109.0062ms
max threshold: 16777216
maxEvenDividing result: 16777214 duration 108.0062ms
maxEvenConjunction result: 16777214 duration 109.0062ms
max threshold: 33554432
maxEvenDividing result: 33554430 duration 114.0066ms
maxEvenConjunction result: 33554430 duration 110.0063ms
max threshold: 67108864
maxEvenDividing result: 67108860 duration 111.0064ms
maxEvenConjunction result: 67108860 duration 109.0062ms
max threshold: 134217728
maxEvenDividing result: 134217726 duration 108.0062ms
maxEvenConjunction result: 134217726 duration 109.0063ms
max threshold: 268435456
maxEvenDividing result: 268435446 duration 111.0063ms
maxEvenConjunction result: 268435446 duration 110.0063ms
ืขืก ืืื ืงืืึธืจ ืึทื ืืื ืืขื ืคืึทื, ืคึฟืึทืจ ืคืึทืจืฉืืืขื ืข ืฉืืืขืื ืืืจ ืืึธืื ืคืึทืจืฉืืืขื ืข ืกืขืฅ ืคืื ืคึผืจืืืืจื ืืึทืื, ืื ืคึผืจืึทืกืขืกืขืจ ืืึทืกืข (ืืืืฃ ืืืื i5-2540M ืืึทืคึผืืึทืคึผ) ืืืขืจืื ืึทืจืื 20..30%, ืื ืืึผืจืื ืคืึทืจื ืืืขื ืืืจื ืื ืึทืคึผืืึทืงืืืฉืึทื ืคืืืกื ืืืง ืคึฟืื GoLand ืืื ืืื ืืืจืืฉื ืืืืขื. ืืืขืื 813 ืื - ืืึธืก ืืื ืืืื ืึทืคืขืงืฅ ืื ืจืืืืืึทืืืืึทืื ืคืื ืืขืจ ืจืขืืืืืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ืจืึทืืขืืืขื ืืขืกื ืงืึทืกืขืก ืืืืฃ ืืืกืง ืืื ืืืืคื ืึทืืข ืืขืกืฅ ืคึฟืึทืจ ืืขืืขืจ ืฉืืืขื ืืื ืืคืืขืืื ืืขืจืืงืืื ืคืื ืืขืืขืจ ืื ืืขืจืขืจ.
ืืื ืืืฆื, ืืจืืืื ืืืขืื ืืื ืฆื ืื ืกืืจืืืขื ื ืึทืืข ืืขื ืืื ืืื ืืืึทื ืงืึธืก, ืืื ืืืืืึธืืึทืืืฉ ืจืืืืืง ืื ืฆืืฉืืึทื ื ืืฉืขืง
if value > current && value&1 == 0 {
current = value
}
ืืืืฃ
if value <= current {
continue;
}
if value&1 == 0 {
current = value
}
ืืื ืืืืคื ืื ืืขืกืฅ ืืืืืขืจ ... ืืื ืืื ืืึทืืื ืฆื ืคึฟืึทืจืฉืืืื ืขืคึผืขืก :)
ืื ืฆืืื ืคืืจืืจืืื ืืืืฃ ืืืจืืคืืจืื ื ืืืืื ืฆื ืืืื ืึทื ืืขืจืฉ ื ืื ืืขืจ ืืืจื ืคึผืขืจืกืขื ืืืืืฉืื / ืคืจืึทืงืฉืึทื ื ืคืื ืึท ืคึผืจืึธืฆืขื ื, ืึธืืขืจ ืืืจื 10..15%. ืืื ืืขืฉืืืื ื ืืืืื 2 ืืขืจ ืืขืกืฅ:
func maxEvenDividing2(name string, arr []int32) Result {
start := time.Now()
var current int32 = math.MinInt32
for _, value := range arr {
if value <= current {
continue
}
if value%2 == 0 {
current = value
}
}
duration := time.Since(start)
result := Result{name, duration, current}
return result
}
func maxEvenConjunction2(name string, arr []int32) Result {
start := time.Now()
var current int32 = math.MinInt32
for _, value := range arr {
if value <= current {
continue
}
if value&1 == 0 {
current = value
}
}
duration := time.Since(start)
result := Result{name, duration, current}
return result
}
ืืื ืืืืคื ืขืก ืืื ืืึทืงืืืขื ืืขื ืืืื:ืขืจืฉื ืืขื ืืข ืงืึทืคึผืึทืฆืืืขื: 100000000
ืืึทืงืกืืืื ืฉืืืขื: 128
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 126 ืืขืืืืขืจ 116.0066ms
maxEvenDividing2 ืจืขืืืืืึทื: 126 ืืขืืืืขืจ 79.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 126 ืืขืืืืขืจ 114.0065ms
maxEvenConjunction2 ืจืขืืืืืึทื: 126 ืืขืืืืขืจ 83.0048ms
ืืึทืงืกืืืื ืฉืืืขื: 256
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 254 ืืขืืืืขืจ 111.0063ms
maxEvenDividing2 ืจืขืืืืืึทื: 254 ืืขืืืืขืจ 77.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 254 ืืขืืืืขืจ 110.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 254 ืืขืืืืขืจ 80.0046ms
ืืึทืงืกืืืื ืฉืืืขื: 512
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 510 ืืขืืืืขืจ 114.0066ms
maxEvenDividing2 ืจืขืืืืืึทื: 510 ืืขืืืืขืจ 80.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 510 ืืขืืืืขืจ 110.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 510 ืืขืืืืขืจ 80.0046ms
ืืึทืงืกืืืื ืฉืืืขื: 1024
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 1022 ืืขืืืืขืจ 109.0063ms
maxEvenDividing2 ืจืขืืืืืึทื: 1022 ืืขืืืืขืจ 77.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 1022 ืืขืืืืขืจ 111.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 1022 ืืขืืืืขืจ 81.0047ms
ืืึทืงืกืืืื ืฉืืืขื: 2048
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 2046 ืืขืืืืขืจ 114.0065ms
maxEvenDividing2 ืจืขืืืืืึทื: 2046 ืืขืืืืขืจ 79.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 2046 ืืขืืืืขืจ 113.0065ms
maxEvenConjunction2 ืจืขืืืืืึทื: 2046 ืืขืืืืขืจ 81.0046ms
ืืึทืงืกืืืื ืฉืืืขื: 4096
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 4094 ืืขืืืืขืจ 114.0065ms
maxEvenDividing2 ืจืขืืืืืึทื: 4094 ืืขืืืืขืจ 80.0046ms
maxEvenConjunction ืจืขืืืืืึทื: 4094 ืืขืืืืขืจ 111.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 4094 ืืขืืืืขืจ 78.0045ms
ืืึทืงืกืืืื ืฉืืืขื: 8192
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 8190 ืืขืืืืขืจ 107.0062ms
maxEvenDividing2 ืจืขืืืืืึทื: 8190 ืืขืืืืขืจ 77.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 8190 ืืขืืืืขืจ 111.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 8190 ืืขืืืืขืจ 77.0044ms
ืืึทืงืกืืืื ืฉืืืขื: 16384
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 16382 ืืขืืืืขืจ 109.0063ms
maxEvenDividing2 ืจืขืืืืืึทื: 16382 ืืขืืืืขืจ 77.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 16382 ืืขืืืืขืจ 108.0062ms
maxEvenConjunction2 ืจืขืืืืืึทื: 16382 ืืขืืืืขืจ 77.0044ms
ืืึทืงืกืืืื ืฉืืืขื: 32768
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 32766 ืืขืืืืขืจ 112.0064ms
maxEvenDividing2 ืจืขืืืืืึทื: 32766 ืืขืืืืขืจ 77.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 32766 ืืขืืืืขืจ 109.0062ms
maxEvenConjunction2 ืจืขืืืืืึทื: 32766 ืืขืืืืขืจ 78.0045ms
ืืึทืงืกืืืื ืฉืืืขื: 65536
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 65534 ืืขืืืืขืจ 109.0062ms
maxEvenDividing2 ืจืขืืืืืึทื: 65534 ืืขืืืืขืจ 75.0043ms
maxEvenConjunction ืจืขืืืืืึทื: 65534 ืืขืืืืขืจ 109.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 65534 ืืขืืืืขืจ 79.0045ms
ืืึทืงืกืืืื ืฉืืืขื: 131072
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 131070 ืืขืืืืขืจ 108.0061ms
maxEvenDividing2 ืจืขืืืืืึทื: 131070 ืืขืืืืขืจ 76.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 131070 ืืขืืืืขืจ 110.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 131070 ืืขืืืืขืจ 80.0046ms
ืืึทืงืกืืืื ืฉืืืขื: 262144
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 262142 ืืขืืืืขืจ 110.0063ms
maxEvenDividing2 ืจืขืืืืืึทื: 262142 ืืขืืืืขืจ 76.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 262142 ืืขืืืืขืจ 107.0061ms
maxEvenConjunction2 ืจืขืืืืืึทื: 262142 ืืขืืืืขืจ 78.0044ms
ืืึทืงืกืืืื ืฉืืืขื: 524288
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 524286 ืืขืืืืขืจ 109.0062ms
maxEvenDividing2 ืจืขืืืืืึทื: 524286 ืืขืืืืขืจ 78.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 524286 ืืขืืืืขืจ 109.0062ms
maxEvenConjunction2 ืจืขืืืืืึทื: 524286 ืืขืืืืขืจ 80.0046ms
ืืึทืงืกืืืื ืฉืืืขื: 1048576
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 1048574 ืืขืืืืขืจ 109.0063ms
maxEvenDividing2 ืจืขืืืืืึทื: 1048574 ืืขืืืืขืจ 80.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 1048574 ืืขืืืืขืจ 114.0066ms
maxEvenConjunction2 ืจืขืืืืืึทื: 1048574 ืืขืืืืขืจ 78.0044ms
ืืึทืงืกืืืื ืฉืืืขื: 2097152
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 2097150 ืืขืืืืขืจ 111.0064ms
maxEvenDividing2 ืจืขืืืืืึทื: 2097150 ืืขืืืืขืจ 79.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 2097150 ืืขืืืืขืจ 112.0064ms
maxEvenConjunction2 ืจืขืืืืืึทื: 2097150 ืืขืืืืขืจ 77.0044ms
ืืึทืงืกืืืื ืฉืืืขื: 4194304
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 4194302 ืืขืืืืขืจ 111.0063ms
maxEvenDividing2 ืจืขืืืืืึทื: 4194302 ืืขืืืืขืจ 78.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 4194302 ืืขืืืืขืจ 111.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 4194302 ืืขืืืืขืจ 77.0044ms
ืืึทืงืกืืืื ืฉืืืขื: 8388608
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 8388606 ืืขืืืืขืจ 109.0062ms
maxEvenDividing2 ืจืขืืืืืึทื: 8388606 ืืขืืืืขืจ 78.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 8388606 ืืขืืืืขืจ 114.0065ms
maxEvenConjunction2 ืจืขืืืืืึทื: 8388606 ืืขืืืืขืจ 78.0045ms
ืืึทืงืกืืืื ืฉืืืขื: 16777216
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 16777214 ืืขืืืืขืจ 109.0062ms
maxEvenDividing2 ืจืขืืืืืึทื: 16777214 ืืขืืืืขืจ 77.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 16777214 ืืขืืืืขืจ 109.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 16777214 ืืขืืืืขืจ 77.0044ms
ืืึทืงืกืืืื ืฉืืืขื: 33554432
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 33554430 ืืขืืืืขืจ 113.0065ms
maxEvenDividing2 ืจืขืืืืืึทื: 33554430 ืืขืืืืขืจ 78.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 33554430 ืืขืืืืขืจ 110.0063ms
maxEvenConjunction2 ืจืขืืืืืึทื: 33554430 ืืขืืืืขืจ 80.0045ms
ืืึทืงืกืืืื ืฉืืืขื: 67108864
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 67108860 ืืขืืืืขืจ 112.0064ms
maxEvenDividing2 ืจืขืืืืืึทื: 67108860 ืืขืืืืขืจ 77.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 67108860 ืืขืืืืขืจ 112.0064ms
maxEvenConjunction2 ืจืขืืืืืึทื: 67108860 ืืขืืืืขืจ 80.0046ms
ืืึทืงืกืืืื ืฉืืืขื: 134217728
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 134217726 ืืขืืืืขืจ 109.0063ms
maxEvenDividing2 ืจืขืืืืืึทื: 134217726 ืืขืืืืขืจ 78.0044ms
maxEvenConjunction ืจืขืืืืืึทื: 134217726 ืืขืืืืขืจ 114.0065ms
maxEvenConjunction2 ืจืขืืืืืึทื: 134217726 ืืขืืืืขืจ 81.0047ms
ืืึทืงืกืืืื ืฉืืืขื: 268435456
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 268435446 ืืขืืืืขืจ 111.0064ms
maxEvenDividing2 ืจืขืืืืืึทื: 268435446 ืืขืืืืขืจ 79.0045ms
maxEvenConjunction ืจืขืืืืืึทื: 268435446 ืืขืืืืขืจ 114.0065ms
maxEvenConjunction2 ืจืขืืืืืึทื: 268435446 ืืขืืืืขืจ 79.0045ms
ืืึทืงืกืืืื ืฉืืืขื: 536870912
maxEven ืืืืืืืื ื ืจืขืืืืืึทื: 536870910 ืืขืืืืขืจ 107.0062ms
maxEvenDividing2 ืจืขืืืืืึทื: 536870910 ืืขืืืืขืจ 76.0043ms
maxEvenConjunction ืจืขืืืืืึทื: 536870910 ืืขืืืืขืจ 109.0062ms
maxEvenConjunction2 ืจืขืืืืืึทื: 536870910 ืืขืืืืขืจ 80.0046ms
ืืื ืงืขื ื ืืฉื ืืขืคึฟืื ืขื ืึท ืงืืึธืจ ืืขืจืงืืขืจืื ื ืืืึธืก ืื Go ืงืึทืืคึผืืืืขืจ ืงืขื ื ืืฉื ืึทืคึผืืึทืืืื ืื ืงืึธื ืืื ืฉืืขื ืืืง ืืฉืขืงืก ืื ืจืืข ืฆืืฉืืึทื ื, ืืคืืื ืืืื ืืขืจ ืขืจืฉืืขืจ ืืื ืคืึทืืฉ. ืึธืืขืจ ืืคึฟืฉืจ ืืืื ืืืืื ืืขื ืขื ื ืึธืจ ืืืขืจื ืืื ืืื ืืึธื ื ืื ืืขื ืงืืื ืงืืึธืจ ืืื ืืขืจ ืืึธื ืืจืืึทื? ืึธืืขืจ ืืึธื ืืืจ ืืึทืจืคึฟื ืฆื ืฆืืฉืืขืื ืขืืืขืืข ืกืคึผืขืฆืืขื ืื ืกืืจืึทืงืฉืึทื ื ืฆื ืื ืงืึทืืคึผืืืืขืจ? ืืื ืืืึธืื ืืืื ืฆืืคืจืืื ืคึฟืึทืจ ืคืืืืง ืืึทืืขืจืงืื ืืขื.
ืคึผืก: ืืึธ, ื ืึธืจ ืคึฟืึทืจ ืฉืคึผืึทืก, ืืื ืืืืคื ืขื ืืขื ืืขืกืฅ ืืืืฃ Java 5 ืืื Java 7/8 - ืึทืืฅ ืืื ืงืืึธืจ, ืื ืืืจืืคืืจืื ื ืฆืืื ืืื ืื ืืขืืืข.
ืืงืืจ: www.habr.com