Отчеты о трассировке драйвера стека GKE по кластеру по среде по сервису по версии сервиса

myList = [[1]*4] * 3 создает один объект списка [1,1,1,1] в памяти и копирует его ссылку 3 раза. Это эквивалентно obj = [1,1,1,1]; myList = [obj]*3. Любая модификация obj будет отражена в трех местах, где obj упоминается в списке. Правильным утверждением будет:

myList = [[1]*4 for _ in range(3)]

или

myList = [[1 for __ in range(4)] for _ in range(3)]

. Важно отметить, что * оператор в основном используется для создания список литералов. Поскольку 1 является литералом, значит, obj =[1]*4 создаст [1,1,1,1], где каждый 1 будет атомарным, а не ссылкой 1, повторяемым 4 раза. Это означает, что если мы obj[2]=42, то obj станет [1,1,42,1] не [42,42,42,42], как могут предположить некоторые.

1
задан Rajiv 24 March 2019 в 08:08
поделиться

2 ответа

Если вы используете OpenCensus, вы можете использовать аннотации для передачи метаданных в бэкэнд Trace: https://cloud.google.com/trace/docs/setup/java#custom_spans .

Я не вижу ничего в документации spring-cloud-gcp-starter-trace (что мало что смог найти) относительно аннотаций.

0
ответ дан Yuri Grinshteyn 24 March 2019 в 08:08
поделиться

Вы можете добавить пользовательские теги, используя brave.SpanCustomizer. Просто подключите его автоматически, так как компонент уже существует в контексте приложения. Затем вы можете добавить теги следующим образом:

@Autowired
SpanCustomizer spanCustomizer;

...

spanCustomizer.tag("my-tag", "my tag value");

Они превратятся в метки на ваших следах в Stackdriver Trace, по которым вы можете искать .

0
ответ дан Mike E. 24 March 2019 в 08:08
поделиться
Другие вопросы по тегам:

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