Задать вопрос
Ответы пользователя по тегу Java
  • Как осуществлять работу с датой в Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Для восьмой явы - код ниже. Для всех остальных - joda.org
    package jtests;
    
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    import java.time.format.DateTimeFormatterBuilder;
    
    public class MyTest3 {
    
    	public static void main(String[] args) {
    		DateTimeFormatter fmt = new DateTimeFormatterBuilder()
    				.appendPattern("dd.MM.yyyy. HH:mm:ss")
    				.toFormatter();
    		
    		LocalDateTime t1 = LocalDateTime.parse("01.01.2016. 00:00:00", fmt);
    		LocalDateTime t2 = LocalDateTime.parse("01.01.2013. 00:00:00", fmt);
    		
    		System.out.println(t1);
    		System.out.println(t2);
    		System.out.println(t1.isAfter(t2));
    		System.out.println(t2.isAfter(t1));
    	}
    }
    Ответ написан
    Комментировать
  • Как из бд достать данные в HashMap?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Подкину парочку статей древнющих, они помогут:
    www.javable.com/columns/jdbc/workshop/01
    www.javable.com/javaworld/tips/82_tt

    Ну а вообще-то лучше сразу смотреть в сторону hibernate и spring.
    Можно еще и на blog.mybatis.org (бывший iBatis) посмотреть. Он достаточно простой.
    Ответ написан
    2 комментария
  • Стоит использовать исключения или if/else?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Господа, что-то в разум не возьму... Всегда сам считал, что Exception - зло, а тут решил проверить. Я понимаю, что JVM может чего и оптимизнула...

    Упс! Все встало на свои места!
    IF execution time: 1231
    EXCEPT execution time: 1260

    package jtests;
    
    import java.util.HashMap;
    
    public class MyTest2 {
    
    	String testIf(HashMap<String, String> h, int i) {
    		String r = "None";
    		if(h.containsKey("NONEKEY")) {
    			r = h.get("NONEKEY");
    		}
    		return r;
    		
    	}
    	String testExept(HashMap<String, String> h, int i) {
    		String r = "None";
    		try {
    			r = h.get("NONEKEY");
    		} catch(Exception e) {
    			return e.getMessage();
    		}
    		return r;
    		
    	}
    	public static void main(String[] args) {
    		MyTest2 m = new MyTest2();
    		HashMap<String, String> h = new HashMap<String, String>();
    		h.put("KEY", "VALUE");
    		
    		long startTime = System.currentTimeMillis();
    		for (int i = 0; i < 900000000; i++) {
    		  m.testIf(h,i);
    		}
    		long endTime = System.currentTimeMillis();
    		System.out.println("IF execution time: " + (endTime - startTime) );
    		
    		startTime = System.currentTimeMillis();
    		for (int i = 0; i < 900000000; i++) {
    		  m.testExept(h,i);
    		}
    		endTime = System.currentTimeMillis();
    		System.out.println("EXCEPT execution time: " + (endTime - startTime) );
    	}
    
    }
    Ответ написан
  • Как ответить на вопрос по поводу полиморфизма в Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Может быть так проще будет?
    Класс В наследует методы и переменные класса A. И когда мы вызываем метод объект В, то он может использовать методы и переменные объекта А, также можно представить объект В, как объект А, но поведение будет все равно, как у объекта В.
    В моем примере произошел вызов переопределённого метода b класса B с последующим вызовом родительского оригинального метода класса A. Причем видно, что принудительная кастенация (приведение типов) класса В к классу А - ничего не меняет, как был объект класса В, так он и остался, с переопределённым методом.
    И еще, объектом обычно называют экземпляр класса, то, что образовалось после new.
    package jtests;
    import java.lang.System;
    
    public class MyTest {
    
    	class A {
    		String  a () {
    			return("from A:a");
    		}
    		String b() {		
    			return("from A:b - " + a());
    		}
    		
    	}
    	class B extends A {
    		@Override String b() {
    			return ("from B:b - " + super.b());
    		}
    	}
    	
    	public static void main(String[] args) {
    		MyTest m = new MyTest();
    				
    		System.out.println("A");
    		A a =  m.new A(); // Используем A
    		System.out.println(a.getClass().getName() + " * " + a.b());
    		
    		System.out.println("B");
    		B b =  m.new B(); // Используем B
    		System.out.println(b.getClass().getName() + " * " + b.b());
    		
    		System.out.println("B -> A");		
    		A ab = (A) m.new B(); // Используем B как A
    		System.out.println(ab.getClass().getName() + " * " + ab.b());
    	}
    }


    И Вывод:
    A
    jtests.MyTest$A * from A:b - from A:a
    B
    jtests.MyTest$B * from B:b - from A:b - from A:a
    B -> A
    jtests.MyTest$B * from B:b - from A:b - from A:a
    Ответ написан
    Комментировать
  • Java. Как корректно организовать взаимодествие с сетью?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Так или иначе, лучше использовать NIO, и проверять наличие данных через selector! Вот на почитать - www.javaportal.ru/java/articles/useselectfast.html... (ожидание входящих данных)
    И откажитесь вообще от sleep - это не очень красиво.
    Да, возможно, данные придется буферировать, так как они могут прийти в двух пакетах, например "BEG" и "IN"
    С файлами отдельная история - наверное поможет вот это! Механизм аналогичный - https://docs.oracle.com/javase/tutorial/essential/...
    Ответ написан
    2 комментария
  • Почему Hibernate не подхватывает новые записи в базе?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Подозреваю, что дело в кешировании. Чтобы сбросить кеш, используйте Session.clear()
    Ответ написан
    1 комментарий
  • Как лучше оформить java code?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Создаем case-классы: помещаем их в HashMap и... Вуаля! Никаких ифов! Расширяется просто - добавлением нового класса и инициализацией мапа.
    Context используем для хранения в передачи всякой фигни.
    package my.com;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class MyJob {
    	class Context {
    		private String astring;
    
    		public Context(String string){
    			this.setAstring(string);
    			// set properties
    		}
    
    		public String getAstring() {
    			return astring;
    		}
    
    		public void setAstring(String astring) {
    			this.astring = astring;
    		}
    	}
    	
    	interface Worker {
    		public int doWork(Context c);
    	}
    
    	class MultiChoose implements Worker {
    
    		@Override
    		public int doWork(Context c) {
    			c.getAstring();
    			System.out.println(c.getAstring() +" MultiChoose");
    			c.setAstring("Новая фигня");
    			return 0;
    		}
    		
    	}
    
    	class Choose implements Worker {
    
    		@Override
    		public int doWork(Context c) {
    			System.out.println(c.getAstring() +" Choose");
    			return 0;
    		}
    		
    	}
    	class AnotherString implements Worker {
    
    		@Override
    		public int doWork(Context c) {
    			System.out.println(c.getAstring() + " AnotherString");
    			return 0;
    		}
    		
    	}
    
    	class Nothing implements Worker {
    
    		@Override
    		public int doWork(Context c) {
    			System.out.println("Nothing");
    			return 1;
    		}
    		
    	}
    	public static void main(String[] args) {
    		MyJob job = new MyJob();
    		Map<String, Worker> cases = new HashMap<String, Worker>();
    		cases.put("Выбор", job.new Choose());
    		cases.put("МультиВыбор", job.new MultiChoose());
    		cases.put("yetanotherSubString", job.new AnotherString());
    		
    		
    		String[] keys_for_test = {"Выбор","МультиВыбор","yetanotherSubString","WrongKey"};
    		Context content = job.new Context("Всякая фигня");
    
    		for (String key:keys_for_test) {
    			Worker worker = cases.getOrDefault(key, job.new Nothing());
    			worker.doWork(content);
    		}
    
    	}
    
    }

    Результат
    Всякая фигня Choose
    Всякая фигня MultiChoose
    Новая фигня AnotherString
    Nothing
    Ответ написан
    1 комментарий
  • Как избавится от проблемы "Database is locked"?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Что за база? Connection pool используем?!
    Ответ написан
    Комментировать
  • Как подгрузить блоки в HTML по запросу JS?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ответ написан
    Комментировать
  • Выбор фреймворка для сервера на java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Если просто потренироваться или писать что-то совсем особенное, то можно и напрямую на сокетах. А в плане фреймворка рекомендую посмотреть на netty.io
    Ответ написан
    Комментировать
  • Решил попробывать написать игру слова на Java, как мне решить проблему?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вместо того, чтобы приводить весь класс, описали бы алгоритм. А вообще-то похоже, что у вас происходит вывод с нескольких потоков одновременно, отсюда и чехарда с буквами. Ну и существует такая весчь как дебаггер, доступный в любой IDE, даже в emacs, не говоря об эклипс, нетбинс и идеа. Просто прошагайте алгоритм и поставьте точки останова на непонятных местах.
    Ответ написан
    Комментировать
  • В какой сфере веба сейчас не стыдно применять java-апплеты?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Java-апплеты - тупиковый путь эволюции. Поэтому на них все ругаются, считают яву тормозной и глючной. Применять их практически перестали по десятку причин. Банки их используют только как наследие прошлого, от которого иногда очень трудно уйти, тоже по десятку разных причин.
    Сама же ява развивается, цветет и пахнет. Работает и на серверах в качестве вебприложений, распределенных вычислений, кучи всего, что можно делать на серверах. Также ява активно используется в качестве GUI, как программы для доступа к данных, или просто как клиентские приложения с графикой.
    Ответ написан
    Комментировать
  • Какие есть технологии и способы захвата видео с камеры через сайт?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    В общем случае это работает так:
    1) установить на сервер видеосервер
    2) пишется приложение для браузера например на флеше или c использованием javascript, которое открывает камеру и передает (публикует) поток на видеосервер.
    3) со стороны видеосервера пишется приложение или сам видеосервер настраивается на запись потока от пользователя
    4) видеосервер также может отдавать этот поток на кучу клиентов

    Теперь о технологиях. Есть их пока всего две
    RTMP - технология Adobe, встроена во flash-плагин. Видеосерверов куча, от nginx+rtmp_module и до red5, включая сотню-другую коммерческих. Соответственно клиент браузера будет написан на флеше. Работает не во всех мобильных браузерах :-( Прощай IOS...

    www.webrtc.org - новая модная технология, встроена пока не во все браузеры
    Видеосерверов не очень много, но вот хороший пример открытого сервера - www.kurento.org

    Я бы тянулся к webrtc, но если нужно поддержка "всего на свете", то придется и flash подтягивать и делать транскодинг на сервере.
    Ответ написан
    Комментировать
  • Как добавить переменные в определенное место, поудобнее?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Хотелось бы добавить к предыдущим ораторам. Попробуйте системы логирования, например slf4j, log4j или logback. Все три совершенно изумительны!
    Ответ написан
    3 комментария
  • Как в Java преобразовать математическую функцию типа String в обычную функцию?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ха, проще всего подцепить какой нибудь интерпретируемый язык. Например запустить это в jython, groovy или даже javascript!
    Другими словами. Линкуете свое приложение с библиотекой любимого интерпретатора и вызываете
    BSFManager manager = new BSFManager();
    Vector<String> ignoreParamNames = null;
    Vector<Integer> args = new Vector<Integer>();
    args.add(2);
    args.add(5);
    args.add(1);
    Integer actual = (Integer) manager.apply("groovy", "applyTest", 0, 0,
            "def summer = { a, b, c -> a * 100 + b * 10 + c }", ignoreParamNames, args);
    assertEquals(251, actual.intValue());

    docs.groovy-lang.org/latest/html/documentation/ind... - дока
    commons.apache.org/proper/commons-bsf/manual.html - менеджер скриптовых языков
    www.groovy-lang.org - сам груви.

    Удачи.
    Ответ написан
    2 комментария
  • RESTful-сервис: как реализовать выборку новых сообщений?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А на rabbitmq nосмотреть не хотите?
    На каждого клиента заводится очередь, из которой он черпает сообщения. Вариантов масса.
    Ответ написан
    7 комментариев
  • Правильная обработка исключений?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Сейчас в меня будут кидать камни... Но исключения - это зло!
    Жрут кучу времени и ресурсов, часто ничего поправить уже нельзя, рвется контекст выполнения, и т.д.
    Так что,
    1) Делайте проверки, везде, где это возможно, используйте значения по умолчанию.
    2) Если уж возникло исключение, то обрабатывать его тут же, на этом же уровне.
    3) Не стоит увлекаться созданием собственных исключений! В 95% случаев ситуацию можно устранить и без них! А в остальных 5% достаточно стандартных системных.
    4) Все непрерываемые исключения - обрабатывать на верхних уровнях
    Вотч то я хотел сказать - java-performance.info/throwing-an-exception-in-jav...
    Ответ написан
    6 комментариев
  • Программирование автомобилей?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Нет, понимаете совсем неправильно! Программирование "под автомобили", отдельный класс задач, со знанием кучи оборудования и протоколов типа CAN. Ну а язык программирования скорее всего C/C++/Java, возможно каких-то языков стандарта IEC61131-3, не считая частно-фирменных решений. Просто знать язык - мало, есть еще куча библиотек и куча всего другого. Разберитесь сначала что конкретно вы под automotive (термин такой) хотите делать. Головное устройство, отдельные элементы типа контроллеров двигателя или климатических систем, возможно контроллеры реакции или безопасности?
    Ответ написан
    8 комментариев
  • Как интегрировать Notepad++ c Java интерпретатором?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Не мучайся, поставь www.eclipse.org или netbeans.org
    Оно абсолютно бесплатно. Я за эклипс. Программирую на нем под C/Java/Python/PHP
    Если тормозит, добавь памяти. Хотя у меня уже лет 10 как не тормозит и без ssd.
    Ответ написан
    Комментировать
  • Как продумывать архитектуру java приложения?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да зачем ее продумывать?! Пишем класс, пишем еще 10. О! Потом заводим пакет! О, еще 10 пакетов. Что-то пошло не так... Рефакторим - Мартин Фаулер злобно хихикает.
    Еще рефакторим, еще и еще.... Икона - Мартин Фаулер.
    Заказчики в трансе, разрабочики тоже... А мы все рефакторим и рефакторим..
    (сарказм)
    А структура приложению все-же нужна.
    1) Начните с постановки задачи
    2) Потом определите архитектуру приложения
    3) Определите как эта архитектура будет расширяться
    4) Начинайте писать
    5) Ну, если не получилось - рефакторить
    6) Закрыть проект - он бесполезен...

    Ах, ну я же забыл про тесты. И их тоже можно рефакторить.
    Agile Way to Hell.
    Ответ написан
    2 комментария