
Cobaku
27.09.2017
15:46:40
А, еще хороший вопрос вспомнил. Функция рекурсивно вызывается, кроме этого в finally стоит вызов этой же функции. Что будет в таком случае.
Но кмк это хардкор для собеседований.

Arsen
27.09.2017
15:47:16

Kirill
27.09.2017
15:47:18

Google

Arsen
27.09.2017
15:47:36
Достаточно знать как работает стек и исключения

Cobaku
27.09.2017
15:48:23
Типо такого
Только ответ тут не такой, как это ожидается

Kirill
27.09.2017
15:49:24

Cobaku
27.09.2017
15:49:34
Программа просто зависнет.
SO не сможет вылететь.

Kirill
27.09.2017
15:50:01
ништяяк

Arsen
27.09.2017
15:50:02

Cobaku
27.09.2017
15:50:17
По этой причине это харкдор. Вот.

Митко Соловец?
27.09.2017
15:50:33
да, программа зависнет
это вопрос из книжки Блоха видимо

Google

Митко Соловец?
27.09.2017
15:50:42
Java Puzzlers

Del
27.09.2017
15:51:08

Igor
27.09.2017
15:51:23
а посоветуйте что по бд посмотреть
про нормализацию, проектирование, индексы и вот это все

Arsen
27.09.2017
15:52:02

Del
27.09.2017
15:52:17
ок)

Arsen
27.09.2017
15:53:04

Igor
27.09.2017
15:53:10

Andrey
27.09.2017
15:53:42

Ahliyor
27.09.2017
16:03:35
Спасибо огромнее
огромное
*

Igor
27.09.2017
16:25:19
Может кто-то подсказать хороший стрим-парсер XML-ек. В идеале - не настолько низкоуровневый, как fasterxml

Kirill
27.09.2017
16:28:08
А какого уровня ты хочешь, если тебе не подходят stax/fasterxml?

Sergei
27.09.2017
16:33:39

Igor
27.09.2017
16:36:21
Пока что конечно из альтернатив ничего не нашел - потому решил спросить.
Не хочу сношать токены, вообще не хочу

Cargeh
27.09.2017
16:43:37
Вечер добрый. Знает ли кто-нибудь, как работает batchUpdate в spring jdbc template?
другими словами:
1. INSERT INTO ... VALUES
(...),
(...),
(...)
или
2. INSERT INTO ... VALUES ()
INSERT INTO ... VALUES ()
INSERT INTO ... VALUES ()
INSERT INTO ... VALUES ()
INSERT INTO ... VALUES ()
Призываю @larev

Google

Cargeh
27.09.2017
16:43:55
на SO пишут, что второй вариант и поэтому batchupdate такой медленный, но там ответы довольно старые и вдруг чего поменялось за несколько лет
Почему спрашиваю: нужно вставлять много данных: парсю многосообщений. Варианта 2:
1. Сразу вставлять 150 строк каждую 1 секунду (сплю секунду каждые 150 сообщений, чтобы API не забанило)
2. Писать в файл до 500 тыщ строк, потом читать из файла и вставлять в базу. Тут не знаю, как лучше вставить - думал изначально batchUpdate, он если там второй вариант, то хз даже

Ivan
27.09.2017
16:47:20
как посылать пакет решает драйвер бд, jdbctempalte использует лишь jdbc api для батч запросов
отвечая на твой вопрос, если бд поддерживает батч запросы то данные будут отправляться большими пакетами

Cobaku
27.09.2017
16:49:06

Ivan
27.09.2017
16:49:55

Cargeh
27.09.2017
16:50:10

Ivan
27.09.2017
16:51:23
в твоем случае нужно использовать batchInsert/batchUpdate а как баферить данные решай сам, можешь в памяти держать и сбрасывать после сохранения каждого следующего пакета, а можешь в файле если памяти мало

Cargeh
27.09.2017
16:52:24
если не принимать во внимание память
предположим, что ее хватает, чтобы держать буфер

Ivan
27.09.2017
16:56:16
я даже хз, давно уже не занимался прям расчетами, мне кажется тут многое зависит от БД, от ширины канала с БД, от размеров буфера в БД, но обычно я ставлю от 400 до 1000 строк в пакете но это чисто привычка
кстати прирост по перформансу при вставке по одной строке и пакетом огромный

Ivan
27.09.2017
16:57:07
у меня были задачи которые шли 30 мин и удавалось оптимизировать до 30 секунд

Cargeh
27.09.2017
16:57:52
поэтому, собственно, и важно, чтобы батч апдейт работал. Ладно, я попробую и так, и сяк - отпишусь с результатами
Ivan спасибо!

Marmalade
27.09.2017
17:11:53

Pavel ?
27.09.2017
17:15:05
погуглил
https://vladmihalcea.com/2015/03/18/how-to-batch-insert-and-update-statements-with-hibernate/

Google

dk
27.09.2017
18:42:50
Всем привет!
Untitled.java:1: error: class, interface, or enum expected
begin writeln('hello world'); end.
^
Untitled.java:1: error: unclosed character literal
begin writeln('hello world'); end.
^
Untitled.java:1: error: unclosed character literal
begin writeln('hello world'); end.
^
Untitled.java:1: error: class, interface, or enum expected
begin writeln('hello world'); end.
^
4 errors
Почему не работает этот скрипт? В jvm ошибка?

Luger
27.09.2017
18:43:55
Ммм, толстовато

Admin
ERROR: S client not available

Евгений
27.09.2017
19:00:10
что-то с сетью, я полагаю.

Олег
27.09.2017
19:02:08

headshrinker
27.09.2017
19:03:03
надо переустановить jvm

Tolegen
27.09.2017
19:10:52
А ребут пробовали?

Vitalii
27.09.2017
19:38:16

Michael
27.09.2017
19:42:43
жирно

Alisher
28.09.2017
04:22:11
Доброе утро, можете подсказать записываю текст в txt файл через bufferedwriter, и перевожу на новую строку bw.newline().
Локально на виндовсе работает, а на Linux не переводит на новую строку и все в одну линию.
Открываю текстовый файл через блокнот

Sergei
28.09.2017
04:26:29

Alisher
28.09.2017
04:27:22
Одинаковые, получается я написал код локально протестировали работает, когда загружаю на сервер не работает

Sergei
28.09.2017
04:27:59
"A newLine() method is provided, which uses the platform's own notion of line separator as defined by the system property line.separator." - то есть на разных платформах должны, вообще говоря, разные файлы создаваться, так как разные символы используются для new line.

Alisher
28.09.2017
04:29:43
Сорри разные, программа сама создаёт же файл

Google

Alisher
28.09.2017
04:30:34
Что интересно, когда открываешь файл через нотепад++
Корректно отобрадается

Sergei
28.09.2017
04:31:29

Alisher
28.09.2017
04:31:50
Мне этот файл отправляется на почту
Когда я открываю, через блокнот там все в одну строку

Sergei
28.09.2017
04:34:03
А почту смотришь на какой системе?

Alisher
28.09.2017
04:36:26
А разве от этого зависит? Файл архивируется.
Сервак почты тоже на линуксе
Вроде как redhat

Sergei
28.09.2017
04:39:41
(в обратную сторону то же самое, конечно)
На linux и windows перевод строки вроде разными символами кодируется. И в Java это учитывается.

Alisher
28.09.2017
04:42:00
Получается в тексте перевод строки определяется символом \n
Вроде он для юникс