Size: a a a

2020 May 10

AS

Alexandr Sokolov in Go-go!
Владимир Столяров
ну как минимум race detector не поругался) правда вот зачем так сложно, если добавление uint64 max работает также
А подскажете где почитать как это работает на физическом уровне, а то мне немного осложно осознать? Типа мы используем механизм переполнения, и таким образом проходим почти полный круг?
источник

AS

Alexandr Sokolov in Go-go!
Владимир Столяров
про то что переполнение integer приводит к неопределенному поведению, известно наверное любому, кто писал на C, а вот про беззнаковое подобного не припоминаю
https://golang.org/ref/spec#Integer_overflow

Ну вот да, это очень зависит от реализации
источник

ВС

Владимир Столяров... in Go-go!
по факту все математические операции в процессоре идут в конечных полях (вроде так называлось) - и поэтому результат по факту будет вот такой (a+0xFFFFFFFFFFFFFFFF)%0xFFFFFFFFFFFFFFFF - что в итоге равно a-1
источник

zl

ziggy lucid in Go-go!
запутали короче, буду лучше int64 использовать и не грешить
источник

AS

Alexandr Sokolov in Go-go!
Владимир Столяров
по факту все математические операции в процессоре идут в конечных полях (вроде так называлось) - и поэтому результат по факту будет вот такой (a+0xFFFFFFFFFFFFFFFF)%0xFFFFFFFFFFFFFFFF - что в итоге равно a-1
Угу, в спецификации языка так и написно
For unsigned integer values, the operations +, -, *, and << are computed modulo 2n, where n is the bit width of the unsigned integer's type
источник

ВС

Владимир Столяров... in Go-go!
Alexandr Sokolov
https://golang.org/ref/spec#Integer_overflow

Ну вот да, это очень зависит от реализации
>  Loosely speaking, these unsigned integer operations discard high bits upon overflow, and programs may rely on "wrap around".
так прямым текстом ж написано, что можно для uint)
источник

AS

Alexandr Sokolov in Go-go!
Да, я для этого и скинул)
Я просто говорил к тому, что это может не сработать в другом языке, который, к примеру, контролирует переполнения
источник

ВС

Владимир Столяров... in Go-go!
а для знаковых там сложно, потому как представление знака разное может быть (всякие прямые коды/дополнительные коды и их модифицированные версии, а может и еще чего-нибудь)
источник

zl

ziggy lucid in Go-go!
решаема ли вообще задача подсчета состояний, если известно только текущее состояние, а предыдущее состояние неизвестно? на картинке жизненный цикл соединения в пакете http. Получается, что можно посчитать только общее количество открытых соединений, а промежуточные состояния нельзя. Или я не прав?
источник

zl

ziggy lucid in Go-go!
выглядит странно, но http.Server никаких возможностей, кроме хука http.Server.ConnState func(net.Conn, ConnState) , который срабатывает при изменении состояния соединения, не предоставляет
или я что-то пропустил и такая статистика там есть где-то?
источник

J

Jefferson in Go-go!
Кто-нибудь пробовал эту либу?
https://www.vugu.org/
источник

DP

Daniel Podolsky in Go-go!
ziggy lucid
выглядит странно, но http.Server никаких возможностей, кроме хука http.Server.ConnState func(net.Conn, ConnState) , который срабатывает при изменении состояния соединения, не предоставляет
или я что-то пропустил и такая статистика там есть где-то?
а зачем вам его статистика?
источник

DP

Daniel Podolsky in Go-go!
это же чисто служебный код
источник

zl

ziggy lucid in Go-go!
Daniel Podolsky
а зачем вам его статистика?
для amplify
источник

DP

Daniel Podolsky in Go-go!
почему вы со своего кода статистику не собираете?
источник

zl

ziggy lucid in Go-go!
Daniel Podolsky
почему вы со своего кода статистику не собираете?
так мне надо посчитать количество соединений - всего, активных и ждущих
источник

zl

ziggy lucid in Go-go!
это только у сервера узнать можно
источник

zl

ziggy lucid in Go-go!
для fasthttp я эту же задачу вполне успешно решил несколько недель назад - там все проще было
источник

OK

Oleg Kovalov in Go-go!
ziggy lucid
так мне надо посчитать количество соединений - всего, активных и ждущих
А у вас лб нет перед сервисом?
источник

OK

Oleg Kovalov in Go-go!
Чтобы с него снимать
источник