Ответы пользователя по тегу Java
  • Как реализовать OAuth2 сервер на своем веб-сервере?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Есть несколько библиотек, начиная от apache shiro и заканчивая scribejava. Можно огласить и весь список - https://oauth.net/code/java/
    А уж как прикрутить конкретную либу к вашему приложению - не скажу, код глядеть нужно. Но рекомендую scribejava или Apache Shiro. последняя посложнее, так как работает через Pac4j
    Ответ написан
    Комментировать
  • Что является сервером приложений?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Не знаю, почему все ругаются на диаграмму. Вполне традиционная. Просто сервера приложений обычно предоставляют кучу "коннекторов", одним из них может являться и http.

    В вашем случае tomcat + spring являются и web-сервером и сервером приложений. Или если сказать по другому. Tomcat - контейнер для web-приложений, а spring - приложение для web. Томсат - web-сервер, Spring - web-приложение. В один Tomcat можно упихнуть десятка три-четыре web-приложений на Spring.
    Ответ написан
    6 комментариев
  • Каковы минимальные требования к "железу" для приложения Tomcat/Pure Servlets/MySQL?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Кот Том отжирает около 20-60 мегов памяти. Мускул - примерно также. (но конечно же есть варианты). Вместо tomcat можно взять Jetty - ест гораздо меньше - мега 2 в минимуме. В принципе, если не делать мемориликов и утечек памяти, то любой хостинг начального уровня на 1 CPU и 512Mb - за глаза, даже с кешированием, гусарами и куртизанками.
    А все остальное: производительность, rps и все остальное - зависит только от вашего приложения, кеширования, архитектуры, работы с базой и данными. Как пример linux.org.ru , сайт с гигантской аудиторией. Вот что они о себе пишут - https://www.linux.org.ru/about (см. Софт и Сервер).
    Ответ написан
    Комментировать
  • Как в Gson добавить кастомный маппер для типа?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Обычно так. Не работает? Тогда по конкретнее бы...
    Gson parser = new Gson(); // create json parser
    Type type = new TypeToken<Map<String, MyData[]>>(){}.getType(); // create custom type
    Map<String, MyData[]> data = parser.fromJson(json, type); // parse data to
    Ответ написан
    Комментировать
  • Как из rtmp получить аудио mp3?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    С помощью исключительно java не знаю. Но есть обертка для gstreamer - https://github.com/gstreamer-java/gst1-java-core. Вот из него-то и можно получить любую дорожку практически из любых контейнеров. Правда, как там дела с поддержкой rtmp (он ведь проприетарный), давно не проверял.
    Плагин есть, но в "ненадежных" - https://gstreamer.freedesktop.org/documentation/rt...

    С gstreamer-java сам работаю... так что пишите, если что...
    Если что - примеры здесь - https://github.com/gstreamer-java/gst1-java-examples
    Ответ написан
    4 комментария
  • Как правильно задать структуру класса для json объекта?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот, с помощью Gson все парсится хорошо.

    PS. вместо lombook.Data просто создайте геттеры/сеттеры у внутреннего класса. Мне так удобнее.

    package com.mycompany;
    
    import java.lang.reflect.Type;
    import java.util.Map;
    import java.util.Map.Entry;
    
    import com.google.gson.Gson;
    import com.google.gson.reflect.TypeToken;
    
    public class ReTest {
    	
    	@lombok.Data
    	public static class MyData {
    		private String name;
    		private String lastName;
    	}
    	
    	public static void main(String[] args) {
    		
    		String  json = "{\n" + 
    				"   \"12:30\": [\n" + 
    				"     {\n" + 
    				"         name: \"someName\",\n" + 
    				"         lastName: \"someLastName\"\n" + 
    				"      },\n" + 
    				"      {\n" + 
    				"         name: \"someName2\",\n" + 
    				"         lastName: \"someLastName2\"\n" + 
    				"      }\n" + 
    				"   ],\n" + 
    				"   \"13:15\": [\n" + 
    				"       {\n" + 
    				"         name: \"someName3\",\n" + 
    				"         lastName: \"someLastName3\"\n" + 
    				"      },\n" + 
    				"      {\n" + 
    				"         name: \"someName4\",\n" + 
    				"         lastName: \"someLastName4\"\n" + 
    				"      }\n" + 
    				"   ]\n" + 
    				"}";
    		
    		Gson parser = new Gson(); // create json parser
    		Type type = new TypeToken<Map<String, MyData[]>>(){}.getType(); // create custom type
    		Map<String, MyData[]> data = parser.fromJson(json, type); // parse data to 
     		
    		for( Entry<String, MyData[]> d: data.entrySet()) {
    			System.out.printf("%s\n", d.getKey());
    
    			for(MyData e: d.getValue()) {
    				System.out.printf("       %s\n", e);
    			}
    			System.out.println();
    		}
    	}
    }

    И вывод.
    12:30
           ReTest.MyData(name=someName, lastName=someLastName)
           ReTest.MyData(name=someName2, lastName=someLastName2)
    
    13:15
           ReTest.MyData(name=someName3, lastName=someLastName3)
           ReTest.MyData(name=someName4, lastName=someLastName4)
    Ответ написан
    1 комментарий
  • Как программно отправить файл?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вам нужны клиентские http библиотеки. И есть их у нас, okhttp или httpclient hc.apache.org. И даже встроенный в java httpclient api. Я предпочитаю первые два, нл их есть много еще разных всяких.
    Ответ написан
    Комментировать
  • Зачем нужны анонимные классы в java и как к ним обратиться?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Это у вас не анонимный класс, а внутренний класс. Обращаться к нему можно из любого места внешнего класса, ну и из самого себя.
    А анонимный класс, как следует из названия, имени не имеет. И создается например из интерфейса, реализуя его методы на месте.

    Внутренние классы могут быть закрытыми (private/protected) по умолчанию и видны будут только из внешнего класса, либо быть публичными (public static) и быть доступны всему приложению. Обычно используются, чтобы не раздувать структуру файлов-классов и для внутреннего применения в качестве временных хранилищ и оберток.

    Анонимный же класс создается на месте использования и служит для применения в конкретном месте приложения. В примере ниже мы в переменную threadзаписываем инcтанс нового класса, наследуемого от Thread с перегруженным методом run

    class MyThread  
    { 
        public static void main(String[] args) 
        { 
             // Создаем расширение стандартного класса Thread с переопределением метода run()
             Thread thread = new Thread()
            { 
                public void run() 
                { 
                    System.out.println("Child Thread"); 
                } 
            }; 
            thread.start(); 
            System.out.println("Main Thread"); 
        } 
    }
    Ответ написан
    Комментировать
  • Вопрос по Java - swing?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А почему бы не взять javafx? Там можно вполне использовать CSS для обрамления label. Ну и с событиями, как мне кажется, там полегче.
    Вообще-то есть предложение, если на javafx, то сделать (нарисовать) клавиатуру в SVG, и показываать ее либо через webview, либо через SVGPath, либо вообще рендерить через batic. Ну и сделать массив с координатами каждой кнопки!
    Ответ написан
  • Большая ли разница в написании приложения на java под десктоп и web?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, разница обычно большая. Но есть фреймворки, которые облегчат переход на WEB, и работающие на похожих принципах. Рекомендую посмотреть на Apache Wicklet https://wicket.apache.org/ и на Vaadin - https://vaadin.com/
    Ответ написан
    Комментировать
  • Как сверстать иконку с текстом?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Рекомендую установить inkscape, в нем в настройках документа установить нужное разрешение и единицы, нарисовать иконку и экспортировать в нужный формат. write.flossmanuals.net/inkscape/creating-icons
    Ответ написан
  • Как понять, что стажировка по java плохая, и что с нее стоит уйти?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот согласен, просто поговорите с начальством на тему, чтобы мне поизучать такого в рамках самообразования. Думаю, начальство в этих ваших энтерпрайзах будет всецело радо, что работник не сидит без дела, а самообразовывается. Как минимум я всегда приветствовал самообразование, даже на курсы посылал, а вот ответственные и интересные задания конечно же давать не будут, пока вы даже не junior и на полставки.
    Что до работы на junior в энтерпрайзе и с легаси кодом, то оно все так и есть - копаться и исправлять старые баги. Но поверьте, обычно с зарплатой все хорошо. И чем больше код, тем больше оплата по его корректной поддержке. Переписать систему - это долго и дорого.
    Ответ написан
    Комментировать
  • Как выгрузить базу данных из MariaDB в таблицу FXML от Scene Builder JavaFX?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    ААА ! У вас дело даже до компиляции не дошло?

    метод
    public void initialize(URL location, ResourceBundle resources)
    , в нем вы вызываете initData(); без входных аргументов,который у вас определен как
    private void initData(ActionEvent event) throws SQLException {
    . Вы либо аргумент в вызове передайте, либо сам метод поправьте и уберите параметр ActionEvent event

    Ну и напоследок. не стоит слать столько кода, достаточно ошибку и кусок кода и описание, когда и при каких обстоятельствах она происходит. За очень и очень редким исключением кто-то созиволит загрузить весь проект и его скомпилировать.
    Ответ написан
    Комментировать
  • Как преобразовать char в оператор?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Увы, так просто это в яве не сделать, перегрузка операторов в яве отсутствует. Нужно писать свой парсер и интерпретатор.
    Но! Самый простой вариант - использовать скрипты или классы на языке groovy, благо он с явой очень хорошо дружит. Интерпретатор и парсер уже за вас написан. Загрузите groovy, подключите jar к своему проекту, и будет щазтие.
    import groovy.util.Eval
    ....
    assert Eval.me('33*3') == 99
    assert Eval.me('"foo".toUpperCase()') == 'FOO'

    groovy-lang.org/integrating.html
    Ответ написан
    Комментировать
  • Как организовать взаимодействия java-сервера и android-клиента в локальной сети?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Конечно же к localhost андроид не подключится! Так как localhost соответствует адресу 127.0.0.1, который отвечает за локальный (loopback) интерфейс своего же устройства. Этот адрес есть на каждом устройстве или компьютере и создан для взаимодействия сетевых программ внутри операционной системы.
    Другими словами, Вам нужно указывать для подключения ip-адрес компьютера, на котором зпущен сервер.
    Ну и для обмена вполне подойдет протокол http/https, и подключаться легче и свой протокол писать не нужно, и куча фреймворков-библиотек есть для этого. На клиентской стороне вполне подойдет httpok, на серверной - springboot, jooby, spartjava и пару десятков других, включая tomcat и jetty.
    Ответ написан
  • Сервер на Java для Wordpress?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Рекомендую посмотреть на три вещи apache wicket https://wicket.apache.org/, sparkjava.com и jooby.org. Особенно на последний!
    Ответ написан
    Комментировать
  • Как использовать сериализацию в качестве сохранения?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Со стандартной сериализацией этого не избежать никак. Предлагаю использовать сторонние библиотеки:
    - json формат - куча библиотек для работы с ним, например https://github.com/google/gson
    - kryo - отличный и очень быстрый сериализатор (!) - https://github.com/EsotericSoftware/kryo
    - protobuf - тоже очень неплох - https://developers.google.com/protocol-buffers/doc...
    - xml формат - куча библиотек, даже встроенные в поставку JVM

    Из этого всего разнообразия я бы остановился или на xml/json или на kryo. Но если нужна кроссплатформенность, то protobuf.
    Ответ написан
    Комментировать
  • Работа с Датой в Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Посмотрите на библиотеку joda-time , тем более, что она стала стандартом и ее включили в поставку новых jdk , так что старый api можно уже и не рассматривать. Все что нужно там есть!
    https://www.joda.org/joda-time/
    Ответ написан
    6 комментариев
  • Activemq Successfully connected to tcp в логах?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Судя по коду, происходит создание коннекта. Скорее всего коннект закрывается, по каким причинам не знаю, и создается заново. Причем создается как "первое подключение" - https://github.com/apache/activemq/blob/0b71b06ac8... - строка 1052.
    Ответ написан
  • Какие технологии выбрать для имиджборды на Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    На мой взгляд тут хорошо подойдет что-то типа redis, как раз можно инвалидировать сообщения по таймауту, и ранжировать, выбирая нужные ключи-сообщения. Клиентов под яву полно, сервер делайте на web-сокетах. Можно традиционно на томкат или сервлетах, или взять что-то типа jooby или sparkjava в качестве фреймворк-сервера.
    Ответ написан
    Комментировать