- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
public static UUID fromString(String name) {
String[] components = name.split("-");
if (components.length != 5)
throw new IllegalArgumentException("Invalid UUID string: "+name);
for (int i=0; i<5; i++)
components[i] = "0x"+components[i];
long mostSigBits = Long.decode(components[0]).longValue();
mostSigBits <<= 16;
mostSigBits |= Long.decode(components[1]).longValue();
mostSigBits <<= 16;
mostSigBits |= Long.decode(components[2]).longValue();
long leastSigBits = Long.decode(components[3]).longValue();
leastSigBits <<= 48;
leastSigBits |= Long.decode(components[4]).longValue();
return new UUID(mostSigBits, leastSigBits);
}
Steve_Brown 22.09.2020 19:23 # 0
- Леонид Ильич, переверните, у нас бумага кончилась, и мы вам речь на программистской оборотке напечатали...
Myxa 22.09.2020 22:07 # 0
Steve_Brown 23.09.2020 16:35 # 0
DypHuu_niBEHb 24.09.2020 03:12 # 0
bormand 22.09.2020 20:49 # 0
defecatinho 22.09.2020 22:34 # 0
bormand 22.09.2020 22:34 # 0
defecatinho 22.09.2020 22:41 # 0
bormand 22.09.2020 22:51 # 0
defecate-plusplus 22.09.2020 23:06 # 0
В ОП десериализация же в 128-битное значение, не?
bormand 22.09.2020 23:15 # 0
Ну вот и я об этом. Для 99.99% программ это просто уникальные 16 байт без какой-либо структуры.
Но все пердолятся с парсингом "полей" разной длины, разделённых чёрточками. Обратная совместимость такая обратная совместимость. Там вроде время когда-то было и ещё что-то.
defecatinho 22.09.2020 23:16 # 0
bormand 22.09.2020 23:17 # 0
defecatinho 22.09.2020 23:19 # 0
defecatinho 22.09.2020 23:23 # 0
The variant field determines the layout of the UUID.
Значение 100 и 101 (двоичное) поля вариант означает юниксоидный UUID, описанный в RFC, который содержит время.
Значение 110 означает UUID, совместимый с «Микрософтом».
Другие варианты с точки зрения того RFC зарезервированы.
defecatinho 22.09.2020 23:25 # 0
The version number is in the most significant 4 bits of the time stamp (bits 4 through 7 of the time_hi_and_version field).
Оказывается, у UUID, описанного в RFC, ещё куча вариантов.
1 The time-based version specified in this document.
2 DCE Security version, with embedded POSIX UIDs.
3 The name-based version specified in this document that uses MD5 hashing.
4 The randomly or pseudo-randomly generated version specified in this document.
5 The name-based version specified in this document that uses SHA-1 hashing.
defecatinho 22.09.2020 23:29 # 0
inkanusinho 22.09.2020 23:31 # 0
defecatinho 22.09.2020 23:32 # 0
defecatinho 22.09.2020 23:31 # 0
inkanusinho 22.09.2020 23:35 # 0
http://govnokod.ru/26969#comment578025
bormand 22.09.2020 23:35 # +1
defecatinho 22.09.2020 23:38 # 0
bormand 22.09.2020 23:41 # 0
Эээ... дык тогда вся суть пропадает, он уже не уникальный будет. Хотя китайцы и так поди поднасрали с сетевухами, у которых одинаковый мак.
defecatinho 22.09.2020 23:45 # 0
DypHuu_niBEHb 22.09.2020 23:49 # 0
AP пошлет отконнектит STA коли ты смениш мак
bormand 22.09.2020 23:51 # +1
DypHuu_niBEHb 24.09.2020 03:14 # +1
Но AP тебя не узнает, и может выдать другой IP, например.
А дома его не узнали и не пустили в квартиру.
— Я столяр Кушаков! — закричал столяр.
— Рассказывай! — отвечали из квартиры и
заперли дверь на крюк и на цепочку.
Столяр Кушаков постоял на лестнице, плюнул и пошел на улицу.
DypHuu_niBEHb 22.09.2020 23:43 # 0
кстати, ты не инью
inkanusinho 22.09.2020 23:44 # 0
Сразу видно, да?
DypHuu_niBEHb 22.09.2020 23:48 # 0
икарус спзидил твой акк
defecatinho 23.09.2020 00:04 # 0
DypHuu_niBEHb 23.09.2020 00:06 # +2
мироздание наказало тебя, спиздив твой
Олень подстреленный хрипит,
Лань, уцелев, резвится,
Тот караулит, этот спит -
И так весь мир вертится…
bormand 23.09.2020 00:09 # 0
DypHuu_niBEHb 23.09.2020 00:10 # 0
Нахватаешься тут у вас
defecate-plusplus 22.09.2020 23:52 # +2
Кстати в жабе ууид до последнего времени был стремный, с маком и сиквенсом. Чтобы на одной ноде, сука, все были похожи, как сестры в-очёвски, а ты такой ищешь где там разница в 25 разряде. Дико бесило всегда, и лень проверять, стало ли лучше.
DypHuu_niBEHb 24.09.2020 03:16 # +1
похоже на мой BCD
Совсем разные UUID
softpawww 05.10.2020 21:50 # 0
bormand 05.10.2020 21:52 # 0
MAPTbIwKA 07.10.2020 13:13 # +1
никак не могу привыкнуть к тому, что
и
это две большие разницы.
Причем начиная с +11 петух может быть некопируемым, но двигаемым (как юник) и тогда первый вариант вообще не скомпилируется.
bormand 07.10.2020 13:25 # 0
А в третьих, NRVO конпеляторы применяли давным-давно, так что на практике первый вариант был не особо то и хуже.
guest8 07.10.2020 13:29 # −999
bormand 07.10.2020 13:32 # 0
Именно так. В остальных строчках ты пишешь std::move() вручную, чтобы случайно не спиздить значение. А в момент return'а уже всем пофиг.
> Не обязан
Ну да. Но, тем не менее, многие на это надеялись. Иначе вместо возврата придётся юзать явное void foo(Petuh &out), а это некрасиво.
> не копируемый тип
Это да. Почти все оптимизации так работают. Сначала проверяется, что при стандартной семантике всё ок. А потом уже код выбрасывается. Более того, твой второй вариант тоже не работает если нечем копировать и/или мувать, проверь.
guest8 07.10.2020 13:37 # −999
bormand 07.10.2020 13:39 # 0
Да, всё так, невнимательно прочитал код.
guest8 07.10.2020 13:40 # −999
bormand 07.10.2020 13:42 # 0
guest8 07.10.2020 13:47 # −999
bormand 07.10.2020 13:54 # 0
guest8 07.10.2020 13:56 # −999
bormand 07.10.2020 13:59 # 0
Да не, я просто хуйню пишу не думая. Мувалка у Bar и так сгенерится.
return Bar{std::move(foo)}; в общем.
guest8 07.10.2020 14:07 # −999
bormand 07.10.2020 14:26 # −1
На самом деле, писать на крестах до с++11 - тлен и безысходность.
glandovyshibatel 07.10.2020 14:31 # −20
guest8 07.10.2020 14:32 # −999
bormand 07.10.2020 14:47 # 0
Но это уже не RAII, да. Resource acquisition и initialization оказываются разбиты, надо не забывать что у объекта появилось невалидное состояние.
guest8 07.10.2020 14:54 # −999
bormand 07.10.2020 15:34 # 0
guest8 07.10.2020 15:39 # −999
bormand 07.10.2020 15:41 # 0
Да он сам обычно норм пилится если ты какой-то хуйни в поля не натащил или у тебя не десятая вижуал студия.
И зануление во всяких указателях да контейнерах уже есть. Его только в самых листовых классах надо делать.
guest8 07.10.2020 15:44 # −999
bormand 07.10.2020 15:45 # 0
А х.з., бага какая-то была, почему-то не умела дефолтный мув генерить если её явно не пнуть.
bormand 07.10.2020 15:46 # 0
То при её написании надо быть аккуратным, да. А дальше уже пользоваться ей можно без проблем.
guest8 07.10.2020 15:50 # −999
Desktop 07.10.2020 15:42 # 0
bormand 07.10.2020 15:44 # 0
1) Либо там происходит вызов мув конструкторов, который обычно передаёт немножко указателей из старого объекта в новый, а в старом зануляет.
2) Либо там срабатывает RVO/NRVO и всё работает как с out ссылкой в шарпе.
Desktop 07.10.2020 15:45 # 0
не происходит ли там внутри дополнительного копирования
guest8 07.10.2020 15:46 # −999
Desktop 07.10.2020 15:48 # 0
guest8 07.10.2020 15:45 # −999
glandovyshibatel 07.10.2020 15:56 # 0
Под твоим капотом происходят сочные камерунские хуи.
MAPTbIwKA 07.10.2020 16:40 # −2
6arPoBblu_nemyx 08.10.2020 00:56 # −2
Sers 08.10.2020 12:43 # 0
Desktop 07.10.2020 13:32 # +5
типа в первом варианте может быть какой-то побочный эффект?
bormand 07.10.2020 13:34 # 0