В конце мы использовали контекст Thread в Log4J. Вероятно, это не лучшее решение, поскольку мы смешиваем цель одного и того же, но вот как мы это сделали:
Идентификатор процесса извлекается так: org.apache.logging.log4j.ThreadContext.get("RequestId");
И инициировано в Handler Chain (зависит от того, какую службу вы используете): ThreadContext.put("RequestId", Objects.toString(job.getId(), (String)null));
Это происходит на каждой полученной работе.
Отказ от ответственности: Это решение еще не было полностью протестировано, но это направление, в котором мы идем
Я использую вполне часто (и это делает мою жизнь более простой):
интеллектуальные указатели (shared_ptr
, scoped_ptr
, weak_ptr
, межпроцессный unique_ptr
):
scoped_ptr
для основного RAII (без общего владения и передачи владения), бесплатно. shared_ptr
для более сложных операций - когда общее владение необходимо. Однако существует некоторая стоимость. unique_ptr
- существует активная работа над повышением при объединении различных подходов (подарок при Повышении) к unique_ptr
с эмуляцией перемещения. unique_ptr
) Поток Повышения - активно разработанный (потоки теперь подвижны), библиотека для работы с потоками. Скрывает сложность реализации потока на данной платформе.
Повышение MPL и Fusion - их более трудно объяснить. В течение долгого времени я не использовал питание времени компиляции, но после некоторого чтения и изучения, что оказалось, что часть моего кода может быть приятно упрощена. Однако, остерегайтесь времени компиляции...
Asio
Формат Повышения (мощное выходное форматирование, но очень тяжелый)
Повышение Spirit2x (Карма и Qi использовали и для парсинга и для генерации вывода на основе данной грамматики). Действительно мощный, может создать синтаксический анализатор, не обращаясь к внешним инструментам. Все же время компиляции могло бы быть проблемой. Также версия 2x активно разрабатывается, и документация довольно недостаточна (список рассылки духа-devel очень полезен, хотя)
Повышение Связывает, Функция и Лямбда для создания жизни легче и Повышение Финикс - только к эксперименту
lexical_cast (что-то подобное могло бы скоро родиться как повышение:: строка)
Regex/Xpressive - регулярные выражения
черты Типа и проверки понятия - еще раз для создания жизни легче
Математика:
Итератор Повышения (специализированные адаптеры для итераторов и фасад для создания Вашего собственного)
, платформа Поблочного тестирования Повышения
И все еще существует некоторые части, которых я едва коснулся в Повышении. Вероятно, я также забыл упоминать немного очевидных.
Не забывают использовать правильные инструменты (молотки) для правильных проблем (гвозди). Не забудьте сохранять решения простыми. Помните о стоимости полученной функциональности (например shared_ptr
или boost::format
время выполнения наверху или MPL/Fusion/Spirit/Phoenix затраты времени компиляции и исполняемые размеры). Но экспериментируйте и учитесь - это - где забава.
И когда дело доходит до убеждения управления пользоваться новыми библиотеками - Вы не должны запускать со всех библиотек. Запустите с простых вещей (вероятно, те, которые имеют длинную и стабильную историю Повышения, широкую поддержку компилятора, планируются включение в TR2/C ++ 1x, и т.д.), и простые примеры, которые показывают преимущества.
Я нашел boost
быть неоспоримым необходимая вещь при разработке межплатформенный (например, *отклоняют и win32) многопоточные приложения (boost::thread
, boost::interprocess
.) Это одно было выравниванием достаточно по крайней мере в одном экземпляре для принятия boost
как часть проектов моих работодателей.
Остальные (контейнеры, универсальное программирование и метапрограммирование, память) сопровождаемый как бесплатные наборы.
Я часто использую boost::filesystem
. Это делает всех необходимых для простого управления файлами
Я сказал бы, что ценные библиотеки:
enable_if
, type/function_traits
) , Возможно, Python (никогда пробуемый, но некоторые, например, программы KDE используют его)
Повышение, межпроцессное , определенно стоит того при выполнении вещей w/общая память & подобное.
Повышение:: лямбда несколько полезна при использовании STL. Это позволяет Вам создать предикаты на месте, как это:
for_each(a.begin(), a.end(), std::cout << _1 << ' ');
Этот код выводы все элементы от контейнера, разделенного пробелами.
Многие дополнения к C++ 0x стандартная библиотека были сначала созданы как часть библиотек Boost.
Они не прекрасны (любое программное обеспечение), но используемый процесс разработки довольно устойчив (намного больше, чем большая часть бесплатного программного обеспечения). Если Вы действительно будете нуждаться в помощи, то Вы найдете много в списке рассылки.
Я лично думаю, что необходимо смотреть на библиотеки, который скрывает платформу определенный материал как поточная обработка, IPC, файлы с отображенной памятью, файловая система, асинхронный IO и т.д.
, Они могут сохранить Вас много времени и проблемы в многоплатформенных проектах и имеют тенденцию быть сфокусированными на представлении функциональности, а не упражнений в необычных функциях C++.
Если необходимо проанализировать текстовые файлы, которые более сложны, который простые пары ключ/значение, я настоятельно рекомендую Повышение:: дух . Это имеет высокую кривую обучения, но после того как Вы понимаете это, это позволяет Вам легко встроить EBNF grammers прямо в коде. Его намного более устойчивый, чем запись Вашего собственного синтаксического анализатора. Я также создаю форматы файлов, которые разработаны больше для простоты устройства записи файла, чем устройство записи кода парсинга.
Я нашел boost.thread и boost.asio необходимым для записи клиент-серверных приложений. Библиотека интеллектуального указателя помогает написать код, который использует обработку исключений, не пропуская память.
На ноте стороны, ряд файлов PDF, документирующих некоторые более общие библиотеки повышения, был недавно выпущен. Можно загрузить их от SourceForge.
Я прочитал другие ответы и меня потребность для добавления Повышения. График (BGL) и его друг Повышение. Property_map. Эти два буквально изменили мою повседневную работу.
Это чрезвычайно хорошо разработано, но большинство людей испугано сначала, потому что существует настоящая высокая цена для оплаты прежде на самом деле понять цель всех понятий. Но после того как Вы сжимаете эту библиотеку, становится трудно обойтись!
Не точно тот же вопрос, но должен помочь ответить на Ваш: Наиболее используемые части Повышения