Задать вопрос
Ответы пользователя по тегу Java
  • Когда нужно использовать Spring Boot?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Посмотрите jooby.org, как замену springboot и springMVC. В Jooby и то и то органично совмещаются.
    Ответ написан
    Комментировать
  • Живой веб-фреймворк на Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, есть, более того, их куча! Я вот полюбил jooby.org , есть еще sparkjava.com и еще с десяток менее известных, не считая spring-boot.

    Это микрофреймворки с кучей модулей, в том числе и с ORM и с MVC. Ну а шаблонизатор любой (почти) на выбор из десятка - я использую Peeble (почти аналог питоновского jinja2), правда к нему кое чего дописывать пришлось (благо это просто), чтобы он был как jinja2. Как нибудь оформлю в отдельную библиотеку, когда наберется достаточно. Ну или здесь вопросы публикуйте.

    По jooby - очень активно развивается, куча модулей, очень прост и функционален, можно программировать в декларативном стиле java8 с лямбдами, можно и классами MVC, можно простые приложения, можно оооочень большие... Из коробки может простой DI через guava, кеши, ормы, парсеры, шаблонизаторы, сессии и даже pac4j.

    PS. Сейчас как раз переводим документацию по Jooby, если интересно, здесь - https://github.com/k1ll1n/Translate-Jooby-Docs
    По окончании будет на основном сайте.
    Ответ написан
    1 комментарий
  • Как организовать приватные диалоге в "чате" на java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Создаете ровно такую же сущность, как и "все пользователи", но включаете в нее только двух человек, и тех, кого они пригласили в закрытый чатик.
    Ответ написан
    Комментировать
  • Как реализовать ограничения для потоков?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Давным давно с этим разбирался, не знаю, как по памяти, а вот по запросам к разным ресурсам ограничить точно можно, это делается через класс SecurityManager. В рамках него можно создавать свои домены безопасности. Я так делал, когда запускал сторнние скрипты.
    Что касается времени выполнения, то просто срубайте тред, полсе например 10 секунд работы.
    Во всяком случае вам сюда https://docs.oracle.com/javase/8/docs/technotes/gu...
    Ответ написан
  • Как вызвать одну программу из другой в java и их синхронизирвать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Самое простое - использовать redis и его RPUSH/LPUSH - BLPOP/BRPOPLPUSH
    https://redis.io/commands/blpop

    Процессы (продюссеры) кладут в очередь командами
    RPUSH myqueue 123

    Jedis jedis = new Jedis("localhost");
    jedis.rpush("myqueue","123");


    А исполнитель висит на соединении на команде
    BLPOP myqueue

    Jedis jedis = new Jedis("localhost");
    List<String> mykeys = jedis.blpop("myqueue");


    И да, исполнителей может быть несколько.

    Ну и замечательная библиотека-клиент для явы https://github.com/xetorthio/jedis
    Ответ написан
    Комментировать
  • Почему пишет что переменная long слишком длинная и ссылается на то что это integer?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Поставьте в конец вашего лонга букбу L или l
    long a = 12346678976543234L
    Ответ написан
    Комментировать
  • Какие технологии нужно знать, для построения клиент-серверного android приложения?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Если используете яву, то в качестве серверной части возьмите jooby.org или sparkjava.
    Сам обмен данными делайте или по веб-сокетам, json, или через comet. Я как раз на jooby остановился.
    Ответ написан
  • Как правильно запустить стартовую страницу?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Что бы я посоветовал. Забейте на томкат, JEE, а особенно на JSP.
    Возьмите правильный микросервисных фреймворк взамен томката, типа jooby.org (сейчас с ним как раз работаю), sparkjava или springboot.
    Возьмите к нему правильный темплейтер типа www.mitchellbosecke.com/pebble/home (я здесь), freemarker (velocity уже устарел морально), thymeleaf и делайте вменяемые шаблоны
    Ну а подключение к JEE сервисам, если оно вообще понадобится (хибернейт и без всей этой кухни нормально рабоатет, если чо), подоключитесь всегда.
    На почитать - https://medium.com/@espina.edgar/java-micro-framew...

    Ах, да, в настройках томката вам нужно указать web-application по умолчанию. Тогда она будет у вас по нужному url открываться
    <Context path="" docBase="/usr/local/tomcat/mywebapps/myapplication">
                    <WatchedResource>WEB-INF/web.xml</WatchedResource>
                </Context>

    Ах, да - сервлеты тоже - в топку!
    И да, задавайте вопросы, попробую ответить.
    И да, я этот путь проходил лет 10 назад с томкатом и всем этим зомбиэнтерпрайз, увильнул на питон+твистед+фласк, теперь вот обратно потянуло с явой 8.
    Ответ написан
    Комментировать
  • Есть ли существенные недостатки у java spring,spark?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот как раз сейчас убегаю с python + flask обратно на яву. В качестве фронтэнда рекомендую посмотреть на jooby.org
    Как раз про java8 + все в стиле синатры + MVC и куча модулей. Под капотом имеет netty и всю вот эту асинхронщину. В качестве шаблонизатора использую pebble - www.mitchellbosecke.com/pebble/home (есть модуль)
    Производительность и перформанс очень радуют. Да, через guava есть неплохой DI.
    Ну и краткое введение, на заметку - https://medium.com/@espina.edgar/java-micro-framew...
    Ответ написан
    Комментировать
  • Почему LONG странно себя ведет?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Потому что java строго типизированный язык и long на всех без исключения платформах имеет строго типизированную длину, причем до Java8 это еще и тип со знаком.
    long: The long data type is a 64-bit two's complement integer. The signed long has a minimum value of -2**63 and a maximum value of 2**63-1. In Java SE 8 and later, you can use the long data type to represent an unsigned 64-bit long, which has a minimum value of 0 and a maximum value of 2**64-1. Use this data type when you need a range of values wider than those provided by int. The Long class also contains methods like compareUnsigned, divideUnsigned etc to support arithmetic operations for unsigned long.


    Ну и например можно воспользоваться коллекциями guava - https://google.github.io/guava/releases/19.0/api/d...
    Ответ написан
    4 комментария
  • Какую библиотеку для Java-кода пользуют под Elasticsearch?

    leahch
    @leahch Автор вопроса
    3D специалист. Dолго, Dорого, Dерьмово.
    Сам себе отвечу.

    Дополню, есть еще jest client - https://www.elastic.co/blog/found-java-clients-for...
    Но к нему нужно тащить официального тtransport клиента, в основном из-за QueryBuilders, что в общем неплохо (я было начал сам писать классы для query-маппинга)
    ----
    В общем, выдираем все из jackson приблизительно так
    String query = "{\n" + 
    	    			"  \"query\": { \"match_all\": {}\n" + 
    	    			"  }" + 
    	    			"}\n" + 
    	    			"\n" + 
    	    			"";
    		Response response = client.performRequest("GET","/offers_v1/offer/_search", new Hashtable<>(),
    	    	        new StringEntity(query));
    	    	
    		HttpEntity entity = response.getEntity();
    		 
    		ObjectMapper ob = new ObjectMapper()
    				.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    		ResponseHits responseHits = ob.readValue(entity.getContent(), ResponseHits.class);
    		List<Hit> hits = responseHits.getHits().getHits();
    		
    		return Results.html("index").put("hits", hits);

    Для этого создаем следующие классы ResponseHits. Hits, Hit
    public class ResponseHits {
    	private Hits hits;
    }
    public class Hits {
    	private List<Hit> hits;
    }
    public class Hit {
    	@JsonProperty(value = "_index")
        private String index;
    	@JsonProperty(value = "_type")
        private String type;
    	@JsonProperty(value = "_id")
        private String id;
    	@JsonProperty(value = "_score")
        private Double score;
    	@JsonProperty(value = "_source")
        private Hashtable<String, Object> source;
    }
    Ответ написан
    Комментировать
  • Оптимизирует ли IDEA приложение при запуске?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    IDEA, это среда разработки, в которую встроен компилятор, который обычно отдельно, от оракла например. Сама среда разработки ничего не оптимизирует, а вот основную оптимизацию делает виртуальная машина, компилятор которой может оптимизировать, в том числе и пустые циклы, но при запуске вашего байт-кода. Не уверен как сейчас, но раньше можно было указать виртуальной машине проводить или нет оптимизацию.
    Ответ написан
    2 комментария
  • Как проанализировать большие файлы json?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, ES однозначно подойдет!!! Есть одно маленькое НО - нужно (очень желательно) писать маппинг, хотя мапинг по умолчанию бывает очень ничего (у каждого поля есть .raw свойство: по которому можно искать полной фразой).

    С другой стороны, даже если сначала мапинг правильный не сделаете, всегда данные можно перелить в другой индекс с правильным мапингом.
    Ну и json-файлы с разной структурой заливайте в разные индексы. Искать можно сразу по нескольким индексам.
    Ответ написан
    1 комментарий
  • HashMap Java суть использивания?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Это реализация словаря ключ-значение. Используется везде, например для сопоставления имени-значения, в качестве хешей, кешей и просто для хранения. Самое простое, хранение например пар значений имя_сервера- ip_адрес, мы всегда из словаря по имени можем получить ip.
    Ответ написан
    Комментировать
  • Как работают real time приложения в Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Тут все зависит от архитектора и архитектуры.
    Собственно, все практически тоже самое, берется очередь, и на нее сажаются воркеры.
    Сами очереди есть в любом JEE контейнере. Также в любом JEE контейнере можно запустить нужное количество воркеров. Т.е. это вот все уже заложено в саму спецификацию JEE, также есть куча разных реализаций как очередей, так и контейнеров, которые поддерживают единый API взаимодействия. Есть jboss, glassfish и еще добрый десяток реализаций. Это так сказать традиционный путь. Здесь мы получаем единый механизм управления, деплоя и взаимодействия в рамках экосистемы.
    Также можно все тоже самое реализовать и в связке с rabbitMQ и просто плодить процессы в качестве воркеров. А можно и из контейнера подцепиться к тому же самому rabbitMQ.

    Не знаю, получилось ли ответить на ваш вопрос.
    Ответ написан
    3 комментария
  • Как сделать простой REST Api сервер?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Крома spark порекомендую ratpack.io - есть и под яву и под groovy
    Ответ написан
    Комментировать
  • Возможно ли асинхронно использовать SQLite/MySQL?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, попробуйте rxjava. Вот пример с jdbc www.baeldung.com/rxjava-jdbc
    Ответ написан
    Комментировать
  • Где найти список актуальных фрэймворков для корпоративных Java решений?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Очень солидарен с Сергей Горностаев из комментария к вопросу. Каждый сам выбирает по себе. Кому-то нравится полный стек J2EE с сервлетами, JMQ, JMX, hibernate, и прочей хренью. Кондово, энтерпрайзно, железобетонно, долго, дорого, красиво.
    Кто-то берет spring и диайинжектится от каждого кусочка по комочку, красиво, модно, быстно и адово.
    Кто-то поступает по хайповому, netty/jetty/ratpack, rabbitmq,redis, mongo, elastic - красивый моложежный винегрет с уксусом и селедкой в яблоках.
    По мне, так последнее вкуснее, но повар важен.
    В первом случае вас поймут в банках и суровом энтерпрайз (да-да, зомби живут именно здесь!) - стандарты, даже если они и сделаны сотней компаний-эмиттеров, вымучены и хоть как-то взаимозаменяемы.
    Во втором - скачем и там и тут.
    Третье - стартапы и просто веселье сплошное.
    При этом - все это будет в конечном итоге работать. Пот и кровь, сопли и слезы! :-D
    Ответ написан
    4 комментария
  • Как отправить TCP/UDP пакет через прокси?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Пожалуй вот, внизу страницы - примеры - https://github.com/fengyouchao/sockslib
    Ответ написан
    Комментировать
  • Как логировать приложение Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Логируйте все, что вам необходимо, делите на уровни INFO/WARN/ERROR/DEBUG/TRACE/CRITICAL. Используйте стандартный логгер, можно прикрутить log4j. В настройках приложния всегда можно указать уровень логирования и подклассы, без перекомпиляции.
    Ответ написан