Есть ли выделение фрагментов в памяти Go?

Проверьте MySQL-документацию, как сбросить пароль, так как я не нашел способа ввести пароль. Вы можете использовать следующее: http://dev.mysql.com/doc/mysql-windows-excerpt/5.0/en/resetting-permissions-windows.html , в котором говорится, что вы должны создать файл со следующим запросом:

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;

И затем запустите службу mysqld с параметром -init-file (дополнительную информацию об этом см. в документации). Это должно привести к сбросу пароля root.

1
задан 1a1a11a 18 March 2019 в 22:28
поделиться

2 ответа

  1. Нет

Срез - просто указатель на память + len и cap
см .: Почему я не могу дублировать срез `copy ()` в Golang?


  1. Примерно так:
package main

import (
    "fmt"
)

func main() {
    bigBuf := []byte{1, 2, 3, 4, 5}

    datPtrs := make([][]byte, 2)
    for i := 0; i < 2; i++ {
        datPtrs[i] = bigBuf[i : i+1]
    }
    fmt.Println(bigBuf) // [1 2 3 4 5]
    datPtrs[0][0] = 10
    fmt.Println(bigBuf) // [10 2 3 4 5]

    datPtrs[1][0] = 20
    fmt.Println(bigBuf) // [10 20 3 4 5]
}

0
ответ дан A.R 18 March 2019 в 22:28
поделиться

Go слайсы реализованы в виде структуры:

src/runtime/slice.go:

type slice struct {
    array unsafe.Pointer
    len   int
    cap   int
}

Вы назначаете / копируете структуру слайса, которая не копирует базовый массив, только его указатель .


Простая иллюстрация:

package main

import (
    "fmt"
)

func main() {
    buf := make([]byte, 8)
    for i := range buf {
        buf[i] = byte(i)
    }
    sub := buf[1:3]
    fmt.Println(buf)
    fmt.Println(sub)
    for i := range sub {
        sub[i] += 43
    }
    fmt.Println(buf)
    fmt.Println(sub)
}

Детская площадка: https://play.golang.org/p/4OzPwuNmUlY

Вывод: [1111 ]

[0 1 2 3 4 5 6 7]
[1 2]
[0 44 45 3 4 5 6 7]
[44 45]

См. Блог Go: Go Slices: использование и внутренние компоненты ,

0
ответ дан peterSO 18 March 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: