Каковы Лучшие Компоненты Повышения? [закрытый]

В конце мы использовали контекст Thread в Log4J. Вероятно, это не лучшее решение, поскольку мы смешиваем цель одного и того же, но вот как мы это сделали:

Идентификатор процесса извлекается так: org.apache.logging.log4j.ThreadContext.get("RequestId");

И инициировано в Handler Chain (зависит от того, какую службу вы используете): ThreadContext.put("RequestId", Objects.toString(job.getId(), (String)null));
Это происходит на каждой полученной работе.

Отказ от ответственности: Это решение еще не было полностью протестировано, но это направление, в котором мы идем

27
задан Community 23 May 2017 в 12:00
поделиться

12 ответов

Я использую вполне часто (и это делает мою жизнь более простой):

  • интеллектуальные указатели (shared_ptr, scoped_ptr, weak_ptr, межпроцессный unique_ptr):

    • scoped_ptr для основного RAII (без общего владения и передачи владения), бесплатно.
    • shared_ptr для более сложных операций - когда общее владение необходимо. Однако существует некоторая стоимость.
    • unique_ptr - существует активная работа над повышением при объединении различных подходов (подарок при Повышении) к unique_ptr с эмуляцией перемещения.
    • Они действительно просты в использовании (только заголовок), легки учиться и очень хорошо протестированный (хорошо, кроме, возможно, unique_ptr)
  • Поток Повышения - активно разработанный (потоки теперь подвижны), библиотека для работы с потоками. Скрывает сложность реализации потока на данной платформе.

  • Повышение MPL и Fusion - их более трудно объяснить. В течение долгого времени я не использовал питание времени компиляции, но после некоторого чтения и изучения, что оказалось, что часть моего кода может быть приятно упрощена. Однако, остерегайтесь времени компиляции...

  • Asio

    • Повышения Вопреки первому впечатлению (по крайней мере некоторое время назад) это не только сетевая библиотека. Это предоставляет асинхронную модель I/O, которая может использоваться для фактически чего-либо.
  • Формат Повышения (мощное выходное форматирование, но очень тяжелый)

  • Повышение Spirit2x (Карма и Qi использовали и для парсинга и для генерации вывода на основе данной грамматики). Действительно мощный, может создать синтаксический анализатор, не обращаясь к внешним инструментам. Все же время компиляции могло бы быть проблемой. Также версия 2x активно разрабатывается, и документация довольно недостаточна (список рассылки духа-devel очень полезен, хотя)

  • Повышение Связывает, Функция и Лямбда для создания жизни легче и Повышение Финикс - только к эксперименту

  • lexical_cast (что-то подобное могло бы скоро родиться как повышение:: строка)

  • Regex/Xpressive - регулярные выражения

  • черты Типа и проверки понятия - еще раз для создания жизни легче

  • Математика:

    • различные генераторы случайных чисел
    • различные статистические дистрибутивы
    • ublas - для использования привязки LAPACK/BLAS в C++ как путь
    • некоторые математические функции, обычно не доступные в C++
    • некоторые инструменты для управления преобразованиями между типами numreric
    • арифметика интервала
  • Итератор Повышения (специализированные адаптеры для итераторов и фасад для создания Вашего собственного)

  • , платформа Поблочного тестирования Повышения

И все еще существует некоторые части, которых я едва коснулся в Повышении. Вероятно, я также забыл упоминать немного очевидных.

Не забывают использовать правильные инструменты (молотки) для правильных проблем (гвозди). Не забудьте сохранять решения простыми. Помните о стоимости полученной функциональности (например shared_ptr или boost::format время выполнения наверху или MPL/Fusion/Spirit/Phoenix затраты времени компиляции и исполняемые размеры). Но экспериментируйте и учитесь - это - где забава.

И когда дело доходит до убеждения управления пользоваться новыми библиотеками - Вы не должны запускать со всех библиотек. Запустите с простых вещей (вероятно, те, которые имеют длинную и стабильную историю Повышения, широкую поддержку компилятора, планируются включение в TR2/C ++ 1x, и т.д.), и простые примеры, которые показывают преимущества.

18
ответ дан Anonymous 28 November 2019 в 04:33
поделиться

Я нашел boost быть неоспоримым необходимая вещь при разработке межплатформенный (например, *отклоняют и win32) многопоточные приложения (boost::thread, boost::interprocess.) Это одно было выравниванием достаточно по крайней мере в одном экземпляре для принятия boost как часть проектов моих работодателей.

Остальные (контейнеры, универсальное программирование и метапрограммирование, память) сопровождаемый как бесплатные наборы.

13
ответ дан vladr 28 November 2019 в 04:33
поделиться

Я часто использую boost::filesystem. Это делает всех необходимых для простого управления файлами

8
ответ дан Ajay 28 November 2019 в 04:33
поделиться

Я сказал бы, что ценные библиотеки:

  • Метапрограммирование (MPL, enable_if, type/function_traits)
  • Препроцессор - при необходимости в нем это может прибыть удобное
  • различный, дополнительный - как Вы уже отметили
  • Математика - кватернионы, дополнительные математические функции (хотя они не могли бы быть полезны для Вас)
  • лямбда: хотя синтаксис является волосатым, это довольно захватывающе
  • операторы/итераторы: они действительно удобны при построении собственных типов

, Возможно, Python (никогда пробуемый, но некоторые, например, программы KDE используют его)

6
ответ дан jpalecek 28 November 2019 в 04:33
поделиться

Повышение, межпроцессное , определенно стоит того при выполнении вещей w/общая память & подобное.

5
ответ дан Jason S 28 November 2019 в 04:33
поделиться

Повышение:: лямбда несколько полезна при использовании STL. Это позволяет Вам создать предикаты на месте, как это:

for_each(a.begin(), a.end(), std::cout << _1 << ' ');

Этот код выводы все элементы от контейнера, разделенного пробелами.

4
ответ дан 28 November 2019 в 04:33
поделиться

Многие дополнения к C++ 0x стандартная библиотека были сначала созданы как часть библиотек Boost.

Они не прекрасны (любое программное обеспечение), но используемый процесс разработки довольно устойчив (намного больше, чем большая часть бесплатного программного обеспечения). Если Вы действительно будете нуждаться в помощи, то Вы найдете много в списке рассылки.

4
ответ дан Richard 28 November 2019 в 04:33
поделиться

Я лично думаю, что необходимо смотреть на библиотеки, который скрывает платформу определенный материал как поточная обработка, IPC, файлы с отображенной памятью, файловая система, асинхронный IO и т.д.

, Они могут сохранить Вас много времени и проблемы в многоплатформенных проектах и имеют тенденцию быть сфокусированными на представлении функциональности, а не упражнений в необычных функциях C++.

4
ответ дан Laserallan 28 November 2019 в 04:33
поделиться

Если необходимо проанализировать текстовые файлы, которые более сложны, который простые пары ключ/значение, я настоятельно рекомендую Повышение:: дух . Это имеет высокую кривую обучения, но после того как Вы понимаете это, это позволяет Вам легко встроить EBNF grammers прямо в коде. Его намного более устойчивый, чем запись Вашего собственного синтаксического анализатора. Я также создаю форматы файлов, которые разработаны больше для простоты устройства записи файла, чем устройство записи кода парсинга.

3
ответ дан KeithB 28 November 2019 в 04:33
поделиться

Я нашел boost.thread и boost.asio необходимым для записи клиент-серверных приложений. Библиотека интеллектуального указателя помогает написать код, который использует обработку исключений, не пропуская память.

На ноте стороны, ряд файлов PDF, документирующих некоторые более общие библиотеки повышения, был недавно выпущен. Можно загрузить их от SourceForge.

2
ответ дан Ferruccio 28 November 2019 в 04:33
поделиться

Я прочитал другие ответы и меня потребность для добавления Повышения. График (BGL) и его друг Повышение. Property_map. Эти два буквально изменили мою повседневную работу.

Это чрезвычайно хорошо разработано, но большинство людей испугано сначала, потому что существует настоящая высокая цена для оплаты прежде на самом деле понять цель всех понятий. Но после того как Вы сжимаете эту библиотеку, становится трудно обойтись!

2
ответ дан Benoît 28 November 2019 в 04:33
поделиться

Не точно тот же вопрос, но должен помочь ответить на Ваш: Наиболее используемые части Повышения

1
ответ дан Community 28 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

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