Общая память Posix против сопоставленных файлов

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

25
задан skaffman 14 February 2010 в 22:03
поделиться

2 ответа

Windows использует эвристику, чтобы решить, давать или нет кнопку панели задач окну, и иногда возникает задержка, прежде чем оно может принять решение, поэтому сделать это на 100% точно будет довольно сложно. Вот грубое начало правил. Существуют современные флаги стиля, которые позволяют легко узнать, но когда эти стили отсутствуют, панель задач сводится к угадыванию.

Сначала вам понадобятся оба флага стиля окна.

LONG Style = GetWindowLong(hwnd, GWL_STYLE);
LONG ExStyle = GetWindowLong(hwnd, GWL_EXSTYLE);

Теперь правила, есть три правила, которые являются определенными.

  • если ExStyle & WS_EX_APPWINDOW, то ПАНЕЛЬ ЗАДАЧ
  • , если ExStyle & WS_EX_TOOLWINDOW, то NOT_TASKBAR
  • , если Стиль & WS_CHILD тогда NOT_TASKBAR

Остальные - предположения:

  • Style & WS_OVERLAPPED предлагает TASKBAR
  • Style & WS_POPUP предлагает NOT_TASKBAR, особенно если GetParent ()! = NULL
  • ExStyle & WS_EX_OVERLAPPEDWINDOW предлагает TASKBAR
  • ExStyle & WS_EX_CLIENTEDGE предлагает NOT_TASKBAR
  • ExStyle & WS_EX_DLGMODALFRAME предлагает NOT_TASKBAR

I'm убедиться, что существуют другие правила для угаддачи, и на самом деле, что правила догадки изменились.

-121--3286623-

У Гуса Мюллера был аналогичный вопрос: http://bugs.python.org/issue4403

-121--3603664-

Различие не всегда ясно. Общая память может быть реализована через файлы, сопоставленные с памятью. Отличную запись об этом можно найти здесь (применительно к программированию C/C + +).

15
ответ дан 28 November 2019 в 21:56
поделиться

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

Использование функции mmap() ограничено системным значением QSHRMEMCTL. Когда это системное значение равно 0, функция mmap() не может создать общее отображение с возможностью PROT_WRITE. По сути, это предотвращает создание карты памяти, которая может изменить содержимое отображаемого потокового файла. Если параметр flags указывает MAP_SHARED, параметр prot указывает PROT_WRITE, а системное значение QSHRMEMCTL равно 0, то функции mmap() будет отказано, и результатом будет ошибка с номером EACCES.

2
ответ дан 28 November 2019 в 21:56
поделиться
Другие вопросы по тегам:

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