• Автоматизация полива огорода. Как организовать?

    EugeneP2
    @EugeneP2
    Java Dev
    Поставь капельный полив. Земля будет всегда увлажнена
    Ответ написан
    Комментировать
  • Насколько нужно знать java для Spring Framework? И зачем нужна java EE?

    EugeneP2
    @EugeneP2
    Java Dev
    Нужно знать Java SE + Servlet API (это уже из Java EE).

    Spring дает все те же возможности (IoC и DI, транзакции и.д.) что и Java ЕЕ, только проще в использовании и не нужен сервер приложение (jboss, glassfish), достаточно tomcat или jetty.

    Java EE это набор спецификаций и интерфейсов, который реализуют производители серверов приложений (jboss, glassfish). Spring - как простая альтернатива.
    Ответ написан
    2 комментария
  • Правильно ли я понял как работает вызов метода из ссылки типа родительского класса?

    EugeneP2
    @EugeneP2
    Java Dev
    Это определяет не компилятором, а в рантайме. Это называется динамическое связывание
    Ответ написан
    3 комментария
  • Jsp -> servlet -> jsp, как передать данные?

    EugeneP2
    @EugeneP2
    Java Dev
    Метод doGet должен просто форвордить на jsp, на которой ваша форма, которая отправляет POST запрос, который обрабатывает метод doPost. Результат обработки, вы добавляете в реквест с помощью методов setAttribute.

    setAttribute - метод HttpServletRequest-а специально предназначен для передачи данных между сервлетами/jsp

    Погуглите вот это "java servlet mvc"
    Ответ написан
    Комментировать
  • Tutorial или open source приложение БД на java?

    EugeneP2
    @EugeneP2
    Java Dev
    1. JDBC, SQL
    2. Tomcat, Servlet
    3. JSP, JSTL, html, css
    4. JS, JQuery
    5. spring MVC, spring jdbc
    6. JPA, Hibernate
    Ответ написан
    Комментировать
  • Вопрос по eclipse?

    EugeneP2
    @EugeneP2
    Java Dev
    File -> New -> Java Projert

    Вводите Projerct Name, например 'TestProject'

    Создастся проект

    скопируйте в папку src файл с исходным кодом

    потом правой кнопкой по файлу Run As -? Java Application
    Ответ написан
  • Преобразование BLOB к ArrayList?

    EugeneP2
    @EugeneP2
    Java Dev
    Вот рабочий пример. Одно только условие, класс CabinetSquad должен наследовать Serializable интерфейс.

    List<CabinetSquad> list = new ArrayList<CabinetSquad>(Arrays.asList(
    
    		new CabinetSquad("a", 1), new CabinetSquad("b", 2), new CabinetSquad("c", 3)
    
    		));
    
    		ByteArrayOutputStream bout = new ByteArrayOutputStream();
    
    		ObjectOutputStream ooStream = new ObjectOutputStream(bout);
    		try {
    			ooStream.writeObject(list);
    		} finally {
    			try {
    				ooStream.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    
    		byte[] byteArray = bout.toByteArray();
    
    		// ----------------------------------
    
    		Connection con = dataSource.getConnection();
    		try {
    
    			Statement s = con.createStatement();
    			s.executeUpdate("CREATE TABLE ARRAY_LIST (id int not null primary key, list blob not null)");
    			s.close();
    
    			// -----------------------------
    
    			PreparedStatement p = con.prepareStatement("INSERT INTO ARRAY_LIST VALUES (?,?)");
    			p.setInt(1, 1);
    			p.setBlob(2, new ByteArrayInputStream(byteArray));
    			p.executeUpdate();
    			p.close();
    
    			// ------------------------------------------------
    
    			PreparedStatement p2 = con.prepareStatement("SELECT list FROM ARRAY_LIST WHERE id = ?");
    
    			p2.setInt(1, 1);
    
    			ResultSet rs = p2.executeQuery();
    
    			if (rs.next()) {
    
    				Blob blob = rs.getBlob("list");
    
    				ObjectInputStream objectInputStream = new ObjectInputStream(blob.getBinaryStream());
    				try {
    
    					List<CabinetSquad> recoverList = (List<CabinetSquad>) objectInputStream.readObject();
    
    					for (CabinetSquad sc : recoverList) {
    						System.out.println(sc);
    					}
    
    				} finally {
    					try {
    						objectInputStream.close();
    					} catch (Exception e) {
    						e.printStackTrace();
    					}
    				}
    
    			}
    
    			rs.close();
    			p2.close();
    
    		} finally {
    			try {
    				con.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    Ответ написан
    Комментировать
  • Зачем отвечать на вопросы на Toster.ru?

    EugeneP2
    @EugeneP2
    Java Dev
    Ответ на вопросы хороший способ для самообучения, потому как не всегда знаешь ответ и пытаешься разобраться.
    Ответ написан
    Комментировать
  • Как устроены списки в Java?

    EugeneP2
    @EugeneP2
    Java Dev
    Метод deleteElement реализован не правильно. Операция '==' сравнивает ссылки на объекты, а не сами объекты.

    Например, если у вас в списке есть объект Node со значением поля data = 10, и вы хотите его удалить

    Node delNode = new Node();
    delNode.data = 10;

    deleteElement(delNode); // ничего не удалится

    потому что ссылка delNode и ссылка в списке ссылаются на разные объекты.
    В джаве для сравнения переопределяют метод equals, в котором реализуют сравнение полей класса.

    Вот так это должно выглядеть
    if (delNode.equals(head)) {
          head = head.next;
          return;
        } else {
          
          for (Node p = head; p != null; p = p.next) {
            if (delNode.equals(p.next)) {
              p.next = delNode.next;
            }		
          }


    Отличие структуры от класса в том, что класс позволяет реализовать наследование, инкапсуляцию и полиморфизм.
    Ответ написан
    7 комментариев
  • Как правильно работать с JSON в JAVA?

    EugeneP2
    @EugeneP2
    Java Dev
    gson от google, проще не бывает )
    google-gson

    Gson gson = new GsonBuilder().create();
    
    String json = gson.toJson(someObject);
    
    SomeObject newso = gson.fromJson(json, SomeObject.class);
    Ответ написан
    3 комментария
  • Где на практике применяется рефлексия? Зачем она может в принципе понадобиться при написании проекта?

    EugeneP2
    @EugeneP2
    Java Dev
    Рефлексия - это инструмент с помощью которого можно узнать всю информацию о классе: имена методов, параметры, поля, аннотации и т.д.
    Эти возможности во всю используются во фреймверках, таких как Spring, Hibernate...
    Различные сериализаторы json/xml
    Ответ написан
    6 комментариев
  • Где на практике и при каких задачах применяется проверка равнозначности объектов?

    EugeneP2
    @EugeneP2
    Java Dev
    В большинстве случаев метод equals + hashCode реализуются, чтоб объект класса корректно хранился в Map и Set коллекциях. Внутренняя реализация коллекций используется эти методы.
    Ответ написан
    Комментировать
  • Где можно проверить свои знания по теории Java?

    EugeneP2
    @EugeneP2
    Java Dev
    Лучший способ - это сходить на тех собеседование в ИТ контору
    Ответ написан
    Комментировать
  • Как работает класс object в этом кода?

    EugeneP2
    @EugeneP2
    Java Dev
    Object clone = x.clone();

    Это клон(копия) объекта класса Date.

    Дальше его нужно привести к типу Date
    Date cloneDate = (Date) clone;

    Почему clone() возвращает Object ? - потому как этот метод наследуется от класса Object, а так как все типы в джаве наследуют класс Object, следовательно clone() должен возвращать общий для всех типов тип - Object

    UPDATE:

    Для начала нужно разобраться, почему же все таки нужно переопределять метод clone(), а не воспользоватся наследуемой нативной реализацией данного метода. Все дело в том, что базовый метод клонирование выполняет только поверхностное копирование. Будут скопированные только значения полей класса. Для примитивных типов (int, byte, char), все будет норм, но если это массивы, коллекции, объекты (например Date), или ваши типы, то будут скопированы только ссылки на них. В итогу клонирования у нас будет два объекта, у которых поля ссылаются на одни и те же поля, и через эти поля можно повлиять на все объекты которые клонировались:

    class TestClone implements Cloneable {
        		
        		private Date date = new Date();
    
    			public Date getDate() {
    				return date;
    			}
    
    			public void setDate(Date date) {
    				this.date = date;
    			}
    
    			@Override
    			protected Object clone() throws CloneNotSupportedException {
    				return super.clone();
    			}
        	}
        	
        	TestClone a = new TestClone();
        	TestClone b = (TestClone) a.clone();
        	System.out.println(a.getDate());
        	System.out.println(b.getDate());
        	b.getDate().setYear(0);
        	System.out.println(a.getDate());
        	System.out.println(b.getDate());
    
    
    
    // Fri Jul 10 23:13:47 EEST 2015
    // Fri Jul 10 23:13:47 EEST 2015
    // изменили один, а поменялось два
    // Tue Jul 10 23:13:47 EET 1900
    // Tue Jul 10 23:13:47 EET 1900


    Такое не пройдет, если будут неизменяемые (immutable) классы, тот же String. У него нет методов для изменения состояния.

    Потому то и нужно переопределять метод clone и выполнять глубокое копирование всех изменяемых объектов на который ссылаются поля (если есть такие).

    class TestClone implements Cloneable {
        		
        		private Date date = new Date();
        		private String s = "string"; // этот не нужно клонировать
        		
    			public Date getDate() {
    				return date;
    			}
    
    			public void setDate(Date date) {
    				this.date = date;
    			}
    
    			@Override
    			protected Object clone() throws CloneNotSupportedException {
    				TestClone clone = (TestClone) super.clone();
    				if (this.date != null) {
    					clone.date = (Date) this.date.clone();
    				}
    				return clone;
    			}
        	}
    
    
    Fri Jul 10 23:25:16 EEST 2015
    Fri Jul 10 23:25:16 EEST 2015
    // теперь это действительно клоны
    Fri Jul 10 23:25:16 EEST 2015
    Tue Jul 10 23:25:16 EET 1900


    Почему JVM само не может выполнить глубокое клонирование? - Потому как JVM не в курсе насколько клонирование должно быть глубоким:) И как правильно нужно копировать поля, со всеми нюансами, которые задумал программист:)

    ИМХО: интерфейс маркер Cloneable обязателен, чтоб можно было понять, переопределен ли метод clone в класса или нет.

    TestClone с = new TestClone();
        	
        	if (с instanceof Cloneable) {
        		System.out.println("ок, меня можно клонировать");
        	}


    PS
    Есть готовое решение от google для глубокого клонирование.
    Отличная статья: Глубокое клонирование в Java без велосипедов
    Ответ написан
    8 комментариев
  • ASUS ZENBOOK UX305 подходит для работы?

    EugeneP2
    @EugeneP2
    Java Dev
    Intel Core M-5Y10

    "Core M-5Y10 способен использовать широкий диапазон рабочих частот, на деле ограниченный доступным охлаждением. Если при нагрузке в течение короткого времени производительность не уступает Core i5-4202Y (Haswell, 11.5 Вт), то при продолжительной нагрузке и отсутствии активного охлаждения нагрев процессора приведет к снижению быстродействия. "

    Смотрите в сторону ноутбуков с процессоров Intel i5 и памятью 8 Гиг
    Ответ написан
    Комментировать
  • Как хранить большое количество элементов в массиве?

    EugeneP2
    @EugeneP2
    Java Dev
    Для индекса использовать тип long

    а для хранения использовать несколько массивов максимального размера и в зависимости от значение индекса вычислять реальный индекс нужного массива
    Ответ написан
  • Как найти строку в txt файле?

    EugeneP2
    @EugeneP2
    Java Dev
    File file = new File("src/main/resources/textfile.txt");
    
    	Scanner scanner = new Scanner(file);
    	try {
    	    
    	    while(scanner.hasNextLine()) {
    		String line = scanner.nextLine();
    		
    		String[] cols = line.split(" ");
    		
    		if (cols[4].equals("17.08.2015")) {
    		    System.out.println(line);
    		}		
    	    }
    	    
    	} finally {	    
    	    scanner.close();
    	}
    Ответ написан
    1 комментарий
  • Как получить список файлов в папке?

    EugeneP2
    @EugeneP2
    Java Dev
    Можно воспользоватся готовым. Есть серия библиотек от апач с кучей готовых решений, вот одна из них
    <dependency>
    	<groupId>commons-io</groupId>
    	<artifactId>commons-io</artifactId>
    	<version>2.4</version>
    </dependency>


    import java.io.File;
    import java.util.Collection;
    
    import org.apache.commons.io.FileUtils;
    
    public class Test {
    
    	public static void main(String[] args) {
    		Collection<File> files = FileUtils.listFiles(new File("/home/user/workspace"), new String[] {"java"}, true);
    		
    		for (File file : files) {
    			System.out.println(file);
    		}
    	}
    }
    Ответ написан
    Комментировать
  • Что такое сервер приложений?

    EugeneP2
    @EugeneP2
    Java Dev
    tomcat - веб сервер + контейнер сервлетов обрабатывающий веб запросы.

    сервер приложений - сервер, который включает в себя контейнер сервлетов + реализует весь стек Java EE API (JPA, EJB.. полный список тут)
    Ответ написан
    5 комментариев
  • Какие есть книги про оптимизацию SQL запросов?

    EugeneP2
    @EugeneP2
    Java Dev
    Стефан Фаро, Паскаль Лерми - Рефакторинг SQL-приложений
    Ответ написан
    Комментировать