Все совпадения — неслучайны.
Все шутки — несмешны.
User
Полный курс на русском языке можно найти по этой ссылке.
Оригинальный курс на английском доступен по этой ссылке.
Выход новых лекций запланирован каждые 2-3 дня.
А что если бы можно было создать интерфейс, например, такой:
@Service
public interface GoogleSearchApi {
/**
* @return http status code for Google main page
*/
@Uri("https://www.google.com")
int mainPageStatus();
}
А затем просто внедрять его и вызывать его методы:
@SpringBootApplication
public class App implements CommandLineRunner {
private static final Logger LOG = LoggerFactory.getLogger(App.class);
private final GoogleSearchApi api;
public App(GoogleSearchApi api) {
this.api = api;
}
@Override
public void run(String... args) {
LOG.info("Main page status: " + api.mainPageStatus());
}
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
Такое вполне возможно реализовать (и не очень то и сложно). Дальше я покажу, как и зачем это делать.
В первой статье о структуре QVD-файла я описал общую структуру и достаточно подробно остановился на метаданных, во второй — на хранении колонок (символов). В этой статье я опишу формат хранения информации о строках, подытожу, расскажу о планах и достижениях.
Итак (вспоминаем) QVD-файл соответствует реляционной таблице, в QVD файле таблица хранится в виде двух косвенно связанных частей:
Таблицы символов (термин мой) содержат уникальные значения каждой колонки исходной таблицы. О них я рассказывал во второй статье.
Таблица строк содержит строки исходной таблицы, каждая строка хранит индексы значений колонки (поля) строки в соответствующей таблице символов. Именно об этои и будет эта статья.
Что такое кросс-компиляция? Какие есть инструменты для сборки бинарных файлов для Windows в Linux? Как настроить docker-контейнер для всего этого? Вот лишь небольшая часть вопросов, которые будут обсуждаться ниже.