на выходе должно быть так:
Mountain View, CA, USA; Atlanta, GA, USA; Boulder, CO, USA; Chicago, IL, USA; New York, NY, USA; Los Angeles, CA, USA; San Francisco, CA, USA; Washington D.C., DC, USA;
San Francisco, CA, USA; Boulder, CO, USA; Los Angeles, CA, USA; California, USA; Colorado, USA
https://regex101.com/r/mbL8FS/1
чем вас sqlite с индексом не устроил не понятно, уже бы запустили и всё работало. Если надо просто поместите бд файл в память и всё будет работать еще быстрее.
B-Tree и при этом хранить в памяти?
Тогда уж redis.
Ну (раз уж id известные и просто числовые) тогда сделайте не один файл, а (например) 1000. По принципу в первом с id от 0 до 1000, во втором от 1001 до 2000 и т.п. Ну и обращаться к нужному в зависимости от диапазона.
И вот мы начали создавать собственный unordered_map/hashtable :)
php память так забьется
JSON в вашем случае вполне приемлемый вариант. Просто вы не умеете его готовить. Вкусный рецепт здесь.
json нет. файл будет 50-100мб. нужно именно искать в бинарном файле.
if ( strlen($data) == 2 ) { $int = unpack( 'cid/ccount', $data ); $name = unpack( 'a*', fread( $handle, $int['count'] ) ); $persons[] = array( $int['id'], $name ); }
Это и есть ваш поиск, просто добавьте в него
if ($int['id'] == SEARCH_ID ) {...}
но делать так (я об алгоритме в целом) разумеется не надо. Здесь у вас реализован обычный линейный поиск O(n), то есть, по сути - это худшее решение из всех возможных.
я вот до сих пор не понимаю почему коннект проходит на порт?
Потому что соединение можно повесить и на 80/443 порт и замаскировать трафик под http(s).
Поэтому сначала трафик анализируется на наличие неких ключевых признаков, а потом скорость его обмена режется до нулевых значений. Нынешние версии GFW умеют ловить даже SS-rust + Obfs4.
Да там есть 0.5-1% ложноположительных сработок, но кого они волнуют? Делается, кстати, очень примитивным способом.
We worked with other researchers to discover that the current GFW utilizes a number of different rules to identify fully encrypted protocols like Shadowsocks, VMesss, and Obfs4. One of these rules takes advantage of the fact that the ratio of 0 bit to 1 bit in these encrypted flows is close to 1:1.
Поэтому теперь разработчики добавили случайное количество 0/1 и пока обходят блокировку. Вопрос всё тот же "надолго ли"?
Теперь главный вопрос - надолго ли? )))
Всё согласно принципа Неуловимого Джо.
В хронологическом порядке:
https://phantomjs.org/screen-capture.html
https://github.com/schnerd/chrome-headless-screenshots
https://github.com/puppeteer/puppeteer
Точные сроки определены как "незамедлительно/оперативно"
Раз уж несколько дней(да и даже часов) прошло, то давайте люлей регистратору.
Кто-нибудь слышал/сталкивался, что Гугл начал ограничивать в выдаче страницы по ключам со словом "free". Из поиска вылетели эти страницы, очень полезные для пользователя с хорошими поведенческими показателями и без скама.
Слышал слухи о том, что такое происходит, но информации такой не встречал.
Сайт содержит "free" в имени