Size: a a a

2020 May 13

N

Naiman in Astana JKUG
telega
Почему?
нужно замерять производительность, где-то может быстрее работать, где-то медленнее.

например, foreach медленнее for
источник

M

Maksat in Astana JKUG
Разве не в одно и то же компилируется?
источник

o

olzhas in Astana JKUG
У кого ниубдь есть код проверки ИИН на котрольную сумму?
источник

t

telega in Astana JKUG
Naiman
нужно замерять производительность, где-то может быстрее работать, где-то медленнее.

например, foreach медленнее for
А цифры есть? Я конечно не спец но сомневаюсь что когда jvm прогрета lambda проигрывает
источник

N

Naiman in Astana JKUG
olzhas
У кого ниубдь есть код проверки ИИН на котрольную сумму?
//проверка контрольной суммы ИИН
private static boolean checkIinBinSum(String value){
   String endChar = value.substring(11);
   int endDigit = Integer.parseInt(endChar);
   int sum = 0;
   int[] digits = new int[12];
   for (int i = 0; i < 12; i++) {
       digits[i] = Integer.parseInt(value.substring(i, i + 1));
   }
   for (int i = 0; i < 11; i++) {
       sum += (i + 1) * digits[i];
   }
   int k = sum % 11;
   if (k == 10) {
       sum = 0;
       int t;
       for (int i = 0; i < 11; i++) {
           t = (i + 3) % 11;
           if (t == 0) {
               t = 11;
           }
           sum += t * digits[i];
       }
       k = sum % 11;
       if (k == 10 || k != endDigit) {
           return false;
       }
   }
   return k == endDigit;
}
источник

N

Naiman in Astana JKUG
Naiman
//проверка контрольной суммы ИИН
private static boolean checkIinBinSum(String value){
   String endChar = value.substring(11);
   int endDigit = Integer.parseInt(endChar);
   int sum = 0;
   int[] digits = new int[12];
   for (int i = 0; i < 12; i++) {
       digits[i] = Integer.parseInt(value.substring(i, i + 1));
   }
   for (int i = 0; i < 11; i++) {
       sum += (i + 1) * digits[i];
   }
   int k = sum % 11;
   if (k == 10) {
       sum = 0;
       int t;
       for (int i = 0; i < 11; i++) {
           t = (i + 3) % 11;
           if (t == 0) {
               t = 11;
           }
           sum += t * digits[i];
       }
       k = sum % 11;
       if (k == 10 || k != endDigit) {
           return false;
       }
   }
   return k == endDigit;
}
эту часть можно оптимизировать))

   for (int i = 0; i < 12; i++) {
       digits[i] = Integer.parseInt(value.substring(i, i + 1));
   }
источник

N

Naiman in Astana JKUG
telega
А цифры есть? Я конечно не спец но сомневаюсь что когда jvm прогрета lambda проигрывает
цифр нет, foreach кажется простой синтаксический сахар, но уступает for
источник

t

telega in Astana JKUG
Naiman
в плане производительности использование лямбда как-то сомнительно
Я про это, то что лямбды это сомнительно
источник

t

telega in Astana JKUG
Naiman
цифр нет, foreach кажется простой синтаксический сахар, но уступает for
Ну если он сахар то он скорее всего в for просто и компилится
источник

AZ

Arman Zhakupov in Astana JKUG
Maksat
Разве не в одно и то же компилируется?
кстати нет вроде, анонимный класс компилируется в отдельный файл а лямбда нет, в данном случае
источник

БС

Бакытжан Сейтказин... in Astana JKUG
относится к Java 8:
Might hurt performance, because the JIT can't optimize forEach()+lambda to the same extent as plain loops, especially now that lambdas are new. By "optimization" I do not mean the overhead of calling lambdas (which is small), but to the sophisticated analysis and transformation that the modern JIT compiler performs on running code.
источник

t

telega in Astana JKUG
Лямбда не создает класс он в байткоде invokedynamic вшивает и в рантайме решает вроде что делать
источник

KR

Kibirov Rustam in Astana JKUG
кто нибудь сталкивался с проблемой в JAVA при преобразовании документа docx в pdf  портится содержание, к примеру таблицы кривые становятся, маркеры слетают ?
источник

S

Sergey in Astana JKUG
Kibirov Rustam
кто нибудь сталкивался с проблемой в JAVA при преобразовании документа docx в pdf  портится содержание, к примеру таблицы кривые становятся, маркеры слетают ?
А чем конвертируете-то? Насколько я знаю, самый нормальный результат даёт использование OpenOffice.org/Libreoffice (в Java можно обмазаться каким-нибудь jodconverter)
источник

KR

Kibirov Rustam in Astana JKUG
Sergey
А чем конвертируете-то? Насколько я знаю, самый нормальный результат даёт использование OpenOffice.org/Libreoffice (в Java можно обмазаться каким-нибудь jodconverter)
apache poi PdfConverter, а не может ли быть проблема при считывании?
источник

S

Sergey in Astana JKUG
Kibirov Rustam
apache poi PdfConverter, а не может ли быть проблема при считывании?
Вряд ли. Тут вопрос в рендеринге PDF, из бесплатного, насколько я знаю, самый приличный - это OOo/LO
источник

AT

Aidyn Toibekov in Astana JKUG
Kibirov Rustam
кто нибудь сталкивался с проблемой в JAVA при преобразовании документа docx в pdf  портится содержание, к примеру таблицы кривые становятся, маркеры слетают ?
Как то поднимал я эту тему тут.
Самый лучший что я нашёл это от aspose. Но он платный.

Остальные имеют проблемы со шрифтом / форматированием/ ещё чем то.

Я в конце остановился на открытии в ms Word и сохранении в pdf. Но это тоже костыль...
источник

KR

Kibirov Rustam in Astana JKUG
Aidyn Toibekov
Как то поднимал я эту тему тут.
Самый лучший что я нашёл это от aspose. Но он платный.

Остальные имеют проблемы со шрифтом / форматированием/ ещё чем то.

Я в конце остановился на открытии в ms Word и сохранении в pdf. Но это тоже костыль...
причем частями гдето слетает где то норм, но визуально шрифт отличается и таблицы в общем ломаются... думал оно работает как на сайтах преобразования без проблем, оказалось все не так просто
источник

AZ

Azamat Zhurtbayev in Astana JKUG
Naiman
//проверка контрольной суммы ИИН
private static boolean checkIinBinSum(String value){
   String endChar = value.substring(11);
   int endDigit = Integer.parseInt(endChar);
   int sum = 0;
   int[] digits = new int[12];
   for (int i = 0; i < 12; i++) {
       digits[i] = Integer.parseInt(value.substring(i, i + 1));
   }
   for (int i = 0; i < 11; i++) {
       sum += (i + 1) * digits[i];
   }
   int k = sum % 11;
   if (k == 10) {
       sum = 0;
       int t;
       for (int i = 0; i < 11; i++) {
           t = (i + 3) % 11;
           if (t == 0) {
               t = 11;
           }
           sum += t * digits[i];
       }
       k = sum % 11;
       if (k == 10 || k != endDigit) {
           return false;
       }
   }
   return k == endDigit;
}
if (t == 0) { t=11 } можно не делать, так как в конце концов 11*n mod 11 все равно получится ноль.
источник

N

Naiman in Astana JKUG
Azamat Zhurtbayev
if (t == 0) { t=11 } можно не делать, так как в конце концов 11*n mod 11 все равно получится ноль.
ага, там много еще что оптимизировать можно:
- избавиться от int[] digits = new int[12];
- избавиться от взятия остатка в выражении  t = (i + 3) % 11;
- вместо substring использовать charAt
источник