Size: a a a

Javanese Questions

2018 September 30

NI

Nikita Ivanov in Javanese Questions
Если есть нотификация, то сервис МОЖЕТ БЫТЬ отдельным процессом
источник

QH

Quantum Harmonizer in Javanese Questions
Nikita Ivanov
Если есть нотификация, то сервис МОЖЕТ БЫТЬ отдельным процессом
Уведомление вообще не при делах
источник

NI

Nikita Ivanov in Javanese Questions
Quantum Harmonizer
Уведомление вообще не при делах
Юзер должен знать, что есть foreground service
источник

NI

Nikita Ivanov in Javanese Questions
Хотя, в принципе и бэкграунд может жить со start_sticky наверно
источник

QH

Quantum Harmonizer in Javanese Questions
Nikita Ivanov
Юзер должен знать, что есть foreground service
Foreground service с точки зрения процессов такой же, как и любой другой компонент.
То же касается стики.
источник
2018 October 05

BU

Bulat Usmanov in Javanese Questions
Добрый день! Кто-нибудь слышал или видел о способе написания тестов для JMeter, когда запросы для тестов берутся из заранее заготовленного jar-ника с примерами запросов? Этот джарник можно было бы создавать после интеграционных тестов. Было бы удобно каждый раз иметь актуальную версию запросов, чтобы не изменять файл для Jmeter-а.
Подобный подход реализован, например, в https://github.com/ePages-de/restdocs-wiremock, когда примеры ответов сохраняются как stub-ы в jar-файле и потом используются в зависящем микросервисе для мокирования запросов, подключая этот jar-файл как библиотеку
источник

QH

Quantum Harmonizer in Javanese Questions
Bulat Usmanov
Добрый день! Кто-нибудь слышал или видел о способе написания тестов для JMeter, когда запросы для тестов берутся из заранее заготовленного jar-ника с примерами запросов? Этот джарник можно было бы создавать после интеграционных тестов. Было бы удобно каждый раз иметь актуальную версию запросов, чтобы не изменять файл для Jmeter-а.
Подобный подход реализован, например, в https://github.com/ePages-de/restdocs-wiremock, когда примеры ответов сохраняются как stub-ы в jar-файле и потом используются в зависящем микросервисе для мокирования запросов, подключая этот jar-файл как библиотеку
Мне, человеку, с jMeter незнакомому, кажется, что в сообщении есть и вопрос, и ответ на него.)
источник

BU

Bulat Usmanov in Javanese Questions
Quantum Harmonizer
Мне, человеку, с jMeter незнакомому, кажется, что в сообщении есть и вопрос, и ответ на него.)
Не, из данной ссылки полученный джарник не годится, ибо для JMeter свой формат)
источник
2018 October 10

MM

M M in Javanese Questions
В банковском приложении есть метод (транзакция), который служит для перевода денег с одного аккаунта на другой, например: void transfer(Account acc1, Account acc2, int money).
Как реализовать эту транзацию правильно в многопоточной среде?
Например, поставить synchronized для метода transfer - неправильно, потому что в таком случае все аккаунты, ожидающие на трансфер будут на блокировке, пока не выполнится текущий transfer
источник

NI

Nikita Ivanov in Javanese Questions
M M
В банковском приложении есть метод (транзакция), который служит для перевода денег с одного аккаунта на другой, например: void transfer(Account acc1, Account acc2, int money).
Как реализовать эту транзацию правильно в многопоточной среде?
Например, поставить synchronized для метода transfer - неправильно, потому что в таком случае все аккаунты, ожидающие на трансфер будут на блокировке, пока не выполнится текущий transfer
А в чем проблема? тут нужна только синхронизация счета
источник

MM

M M in Javanese Questions
как сделать сразу cинхронизацию двоих счётов одновременно?
источник

NI

Nikita Ivanov in Javanese Questions
У тебя в банковском приложении только 1 счет - твой
источник

MM

M M in Javanese Questions
ну вот перевести со счёта на счёт, с одного на другой
источник

QH

Quantum Harmonizer in Javanese Questions
M M
В банковском приложении есть метод (транзакция), который служит для перевода денег с одного аккаунта на другой, например: void transfer(Account acc1, Account acc2, int money).
Как реализовать эту транзацию правильно в многопоточной среде?
Например, поставить synchronized для метода transfer - неправильно, потому что в таком случае все аккаунты, ожидающие на трансфер будут на блокировке, пока не выполнится текущий transfer
Отличная задача для разного рода выноса мозга.
1. Обрабатывать транзакции в один поток / одним актором / агентом. Медленно но надёжно.
2. Сделать synchronized на двух объектах, но в предсказуемом порядке. Пример из Java Concurrency In Practice:
if (acc1.hashCode() > acc2.hashCode()) {
   synchronized (acc1) { synchronized (ac2) { transferLocked(acc1, acc2) } }
} else {
   synchronized (acc2) { synchronized (acc1) { transferLocked(acc1, acc2) } }
}
3. Написать lock-free-дичь
https://www.youtube.com/watch?v=W2dOOBN1OQI
https://www.youtube.com/watch?v=iQsN_IDUTSc
4. Испольховать базу данных, она должна уметь разруливать транзакции и безопасно блокировать таблицы.
источник

MM

M M in Javanese Questions
спасибо!
источник
2018 November 04

IA

Ivan Abramov in Javanese Questions
Всем привет. Появился вопрос по работе с массивами
Мне в метод каждый раз приходит массив любой к примеру возьмем этот lookFor([0,1, 1, 0, 1, 1]).
Задача
Необходимо найти диапазон максимальной ширины, элементы которого положительные (больше 0).
В качестве ответа должен быть массив из 2х элементов, где:
- элемент №0 - индекс элемента левой границы отрезка;
- элемент №1 - индекс элемента правой границы отрезка.

Алгоритм мой начинается так:
1. создаем массив куда будем записывать два индекса
2. Проверяем массив на числа > 0
3. А вот с перребором у мееня проблемы. Как быть?
источник

QH

Quantum Harmonizer in Javanese Questions
Ivan Abramov
Всем привет. Появился вопрос по работе с массивами
Мне в метод каждый раз приходит массив любой к примеру возьмем этот lookFor([0,1, 1, 0, 1, 1]).
Задача
Необходимо найти диапазон максимальной ширины, элементы которого положительные (больше 0).
В качестве ответа должен быть массив из 2х элементов, где:
- элемент №0 - индекс элемента левой границы отрезка;
- элемент №1 - индекс элемента правой границы отрезка.

Алгоритм мой начинается так:
1. создаем массив куда будем записывать два индекса
2. Проверяем массив на числа > 0
3. А вот с перребором у мееня проблемы. Как быть?
3. Собственно, for-each.
источник

NI

Nikita Ivanov in Javanese Questions
Ivan Abramov
Всем привет. Появился вопрос по работе с массивами
Мне в метод каждый раз приходит массив любой к примеру возьмем этот lookFor([0,1, 1, 0, 1, 1]).
Задача
Необходимо найти диапазон максимальной ширины, элементы которого положительные (больше 0).
В качестве ответа должен быть массив из 2х элементов, где:
- элемент №0 - индекс элемента левой границы отрезка;
- элемент №1 - индекс элемента правой границы отрезка.

Алгоритм мой начинается так:
1. создаем массив куда будем записывать два индекса
2. Проверяем массив на числа > 0
3. А вот с перребором у мееня проблемы. Как быть?
Делай foreach, сделай 2 пары переменных :
maxStartIndex, maxEndIndex, currentStartIndex, currentEndIndex
источник

NI

Nikita Ivanov in Javanese Questions
current'ами устанавливаешь позиции внутри массива, если после currentEndIndex идет число <0, То смотришь currentEndIndex-currentStartIndex > maxEndIndex - maxStartIndex и если да, то maxEndIndex = currentEndIndex и то же самое со start
источник
2018 November 06

NI

Nikita Ivanov in Javanese Questions
Интерфейс с единственной реализацией — частый антипаттерн в enterprise-разработке.
Избыточный, а при определённых правилах именования — ещё и страшный, он замедляет вкатывание в проект и не приносит пользы.
источник