Как я могу заставить Мерзавца следовать за символьными ссылками?

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

197
задан Peter Mortensen 27 October 2018 в 00:05
поделиться

5 ответов

ПРИМЕЧАНИЕ: Этот совет теперь устарел согласно комментарию начиная с Мерзавца 1.6.1. Мерзавец раньше вел себя этот путь, и больше не делает.

<час>

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

Однако мне случайно удалось заставить его добавлять файлы вне символьной ссылки, когда символьная ссылка является каталогом.

Т.е.:

  /foo/
  /foo/baz
  /bar/foo --> /foo
  /bar/foo/baz

путем выполнения

 git add /bar/foo/baz

это, казалось, работало, когда я попробовал его. То поведение было однако нежелательно мной в то время, таким образом, я не могу дать Вам информацию кроме того.

44
ответ дан Peter Mortensen 23 November 2019 в 05:15
поделиться

Я раньше добавлял файлы вне символьных ссылок в течение достаточно долгого времени теперь. Это раньше работало просто великолепно, не предпринимая необходимых шагов. Так как я обновил Мерзавцу 1.6.1, это больше не работает.

можно быть в состоянии переключиться на Мерзавца 1.6.0 для создания этой работы. Я надеюсь, что будущая версия Мерзавца будет иметь флаг к git-add разрешение его следовать за символьными ссылками снова.

12
ответ дан Peter Mortensen 23 November 2019 в 05:15
поделиться

Я использую Git 1.5.4.3, и он следует за переданной символической ссылкой, если у нее есть завершающая косая черта. Например,

# Adds the symlink itself
$ git add symlink

# Follows symlink and adds the denoted directory's contents
$ git add symlink/
1
ответ дан 23 November 2019 в 05:15
поделиться

На работе мне часто приходится накапливать большие наборы XML-документов для последующего анализа. Обычно это сделано, засунув их в справочник, и анализ сделан grep (или сделанная на заказ Явская программа со всеми ее ФАБРИЧНЫМИ/СТРОИТЕЛЯМИ/ОБЕРТКАМИ/API принадлежностями XML).

Однажды я подумал, что попробую поместить его в PostgreSQL. Есть две возможности, которые я хотел бы опробовать:

  • Автоматическое сжатие больших данных, когда это необходимо (TOAST).
  • Индексирование с использованием выражения.

Что касается первой функции, размер базы данных был меньше половины размера необработанных файлов. Выполнение полнотекстового поиска, сканирование таблицы с использованием WHERE data:: TEXT LIKE '% образец%' , было на самом деле быстрее, чем выполнение grep для файлов. Когда вы имеете дело с несколькими ГБ XML, это само по себе делает БД стоящей.

Вторая функция, индексация, - это немного больше работы для обслуживания. Было несколько конкретных элементов, которые, как я предположил, было бы полезно проиндексировать. Индекс на xpath ('//startHeader/startId/text () ', data) работает, но в каждом запросе может возникнуть боль при дублировании. Мне было проще добавлять обычные столбцы для некоторых полей и использовать триггеры вставки/обновления, чтобы синхронизировать их.

-121--3942023-

По мере использования программных решений вам потребуется OpenSSL или GNU TLS . Из этих двух последние написаны гораздо более чисто (OpenSSL имеет много подводных камней).

Для действительно элегантного решения можно использовать OpenSSL через boost:: asio , но это решение, вероятно, подходит только при запуске нового проекта.

С точки зрения пользовательского пространства, если бы вы могли настроить обе программы для работы от имени определенного пользователя, вы, вероятно, могли бы настроить для них SSL-туннель, но это в значительной степени зависит от того, как вы хотите установить соединения.

-121--3866344-

Что я сделал, чтобы добавить файлы внутри symlink в Git (я не использовал symlink, но):

sudo mount --bind SOURCEDIRECTORY TARGETDIRECTORY

Выполните эту команду в каталоге Git-managed. TARGETDIRECTORY должен быть создан до установки в него SOURCEDIRECTORY .

Это хорошо работает в Linux, но не в OS X! Этот трюк помог мне и с Subversion. Я использую его, чтобы включить файлы из учетной записи Dropbox, где веб-дизайнер делает свои вещи.

135
ответ дан 23 November 2019 в 05:15
поделиться

Хммм, mount --bind, похоже, не работает на Darwin.

Есть ли у кого-нибудь трюк, который работает?

[edited]

OK, я нашел ответ на Mac OS X - сделать жесткую ссылку. За исключением того, что этот API не доступен через ln, поэтому для этого нужно использовать собственную крошечную программу. Вот ссылка на эту программу:

Создание жестких ссылок на каталоги в Mac OS X

Приятного просмотра!

4
ответ дан 23 November 2019 в 05:15
поделиться
Другие вопросы по тегам:

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