Я пытаюсь понять Crawler4j с открытым исходным кодом веб-искатель. В среднем в то время как у меня есть некоторые сомнения, что как следует,Что такое StatisticsDB в Crawler4j с открытым исходным кодом?
Вопросы: -
Что StatisticsDB делать в классе счетчиков, и объясните, пожалуйста, следующую часть кода,
.public Counters(Environment env, CrawlConfig config) throws DatabaseException { super(config); this.env = env; this.counterValues = new HashMap<String, Long>(); /* * When crawling is set to be resumable, we have to keep the statistics * in a transactional database to make sure they are not lost if crawler * is crashed or terminated unexpectedly. */ if (config.isResumableCrawling()) { DatabaseConfig dbConfig = new DatabaseConfig(); dbConfig.setAllowCreate(true); dbConfig.setTransactional(true); dbConfig.setDeferredWrite(false); statisticsDB = env.openDatabase(null, "Statistics", dbConfig); OperationStatus result; DatabaseEntry key = new DatabaseEntry(); DatabaseEntry value = new DatabaseEntry(); Transaction tnx = env.beginTransaction(null, null); Cursor cursor = statisticsDB.openCursor(tnx, null); result = cursor.getFirst(key, value, null); while (result == OperationStatus.SUCCESS) { if (value.getData().length > 0) { String name = new String(key.getData()); long counterValue = Util.byteArray2Long(value.getData()); counterValues.put(name, counterValue); } result = cursor.getNext(key, value, null); } cursor.close(); tnx.commit(); } }
насколько я понимаю, это экономит искателем URLS, что помогает в том случае, когда гусеничный разбитого, то веб-сканер не нужно начинать с быть хлопкоочистительных. Не могли бы вы объяснить приведенный выше код за строкой, пожалуйста.
2. Я не нашел никакой хорошей ссылки, которая объясняет мне SleepyCat, поскольку Crawlers4j использует SleepyCat для хранения промежуточной информации. Поэтому, пожалуйста, скажите мне хороший ресурс, откуда я могу узнать основы SleepyCat. (Я не знаю, в чем смысл транзакции, курсор используется в приведенном выше коде).
Помогите мне пожалуйста. Ищите свой добрый ответ.
пожалуйста, воздержитесь/принимайте, если он ответит на ваш вопрос – Julien
@JulienS. Он ответил на мой вопрос. – devsda