О Боже! Я только что видел ваше опубликованное изображение снова, вы просто открываете свой php-файл в браузере. у вас есть open, использующий localhost url. если вы открываете файл непосредственно из своего каталога, он не будет выполнять php-код в любом случае.
use: http://locahost/index.php
или http:127.0.0.1/index.php
включить php-код в вашем случае , вы используете <?
, который является коротким кодом php для <?php
, по умолчанию короткие короткие коды php отключены.
также используют: sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
, если вы являетесь пользователем ubuntu .
Итак, есть несколько уровней проблем с тем, что вы пытаетесь сделать.
Вы говорите «практичность - не аргумент», и это нормально, но позвольте мне отметить, что Long.MAX_VALUE
действительно превышает количество атомов на земле, так что вероятность того, что вы получите больше записей, чем от База данных действительно мала. Не говоря уже о том, что вы продолжаете собирать эти данные в список, чтобы вы могли столкнуться с проблемами памяти и в своем собственном приложении.
Итак, во-вторых, семантика limit()
заключается в том, что она накладывает фиксированное ограничение на число записей, а «бесконечность» не является фиксированным пределом; следовательно, limit()
просто не то, что вы ищете.
В-третьих, вы, кажется, ищете способ обойти это, поэтому у нас есть шаблон, который вы можете использовать, и это поддерживает ваш собственный счетчик. То, что вы хотите, это что-то вроде AtomicBigInteger
, которого нет в JDK , но показано здесь .
Итак, вы должны создать Predicate
, подобный этому
class BelowValue<T> implements Predicate<T> {
BigInteger limit = BigInteger.ZERO;
AtomicBigInteger counter = new AtomicBigInteger();
public BelowValue(BigInteger limit) {
this.limit = limit;
}
public BelowValue() {}
public boolean test(T ignored) {
// short circuit on zero
if (BigInteger.ZERO.compareTo(limit) == 0) { return true; }
// check actual condition
return counter.incrementAndGet().compareTo(limit) > 0;
}
}
, и затем вы можете использовать его в своем потоке с (Java 8)
Predicate<T> filter = new BelowValue<>(limit);
return stream
.filter(filter)
.boxed()
.collect(Collectors.toList());
Примечание. однако filter
- это , а не - операция с коротким замыканием, поэтому, если у вас бесконечный поток, он не прекратится (и будет очень неэффективным, если ваш поток намного длиннее предельного размера). [1118 ]
Java 9 takeWhile
имеет короткое замыкание, поэтому вы можете заменить его на filter
в приведенном выше примере.