• Почему потоки в Java не сихронизируются?

    @EgorNS
    А с чего вы взяли что они работают последовательно? Судя по коду и выводу они работают либо параллельно, либо псевдопараллельно (если у вас одноядерный процессор)
    Ответ написан
    Комментировать
  • Какая книга лучше по Java?

    @EgorNS
    Попробуйте Java Полное руководство Шилдта, если станет трудно, то возьмите Кэти Сьерра, а потом вернитесь к Шилтду. После Шилдта можно взять Хорстманна для закрепления материала, если имеете достаточно времени, а потом уже можно и Философию Java Эккеля взять. Думаю что этот алгоритм должен вам помочь :)
    Ответ написан
  • Где взять задачи/мини-проекты по ООП?

    @EgorNS
    Есть неплохая книга по Java - https://careers.epam.by/content/dam/epam/by/book_e...
    В конце каждой главы можно найти кучу заданий по практике, в том числе и по ООП.
    Ответ написан
    Комментировать
  • Как стать Java junior'oм?

    @EgorNS
    Для того чтобы претендовать на вакансию Java junior нужно потратить на изучение очень много времени. В среднем у людей выходит по 1-1,5 года. Необходимо владеть Java Core, где нужно уделить достаточно внимания многопоточности и коллекциям и хорошо разбираться как все это работает. Обязательно понимать как работают сервлеты и JDBC. Также нужно изучить окружение: tomcat, maven, git, желательно также немного владеть unix shell. На интервью во многих компаниях вас также могут спросить про основы Spring и Hibernate. Также желательно владеть английским не ниже уровня B1. Если вы изучите эти все технологии и разработаете с их помощью например небольшое веб-приложение, то по моему мнению вы будете считаться достаточно сильным джуниором, который с большой вероятностью сможет обойти большинство своих конкурентов, претендующих на эту вакансию. Желаю удачи в обучении!
    Ответ написан
    Комментировать
  • Python or Java for immigration?

    @EgorNS
    На мой взгляд Java на сегодняшний день больше подходит для переезда, так как больше всего вакансий в крупных европейских городах на Java. По США не в курсе.
    Я бы порекомендовал вам потратить год или более на изучение Java, если вы располагаете этим временем. Затем написать свой pet project и пробовать устроиться на позицию Junior. Затем пару лет поработав, вы сможете вырасти в middle java developer, подтянуть английский до B1 (а в вашем случае, наверное до B2, так как в США и Британии наверное требуют очень высокий уровень английского) и рассылать резюме на вакансии в рассматриваемых странах. Как мне кажется - это более-менее реалистичный сценарий.
    Ответ написан
    Комментировать
  • Можете посоветовать книгу по Java для написания сайтов?

    @EgorNS
    Я в этом году защитил на отлично дипломную работу - интернет-магазин на Java. Перед написанием проекта прочел пару книг по Java. Первая книга о Java Core - Шилдт "Java. Полное руководство". Но я думаю, что Эккель и Хорстманн подойдут еще лучше, как альтернатива. Вторая книга - Буди Курняван "Программирование web-приложений на языке Java" познакомит тебя с сервлетами, JSP и JDBC. Это компоненты Java, с помощью которых разрабатываются веб-приложения. В книге описаны достаточно старые методы работы, но это на мой взгляд лучшее, что есть на русском. Если неплохо знаешь английский, то в идеале можно ее заменить "Murach's Java Servlets and JSP, 3rd Edition". Это классика по сервлетам. Также я неплохо знал html, css и jQuery, что пригодилось мне для разработки фронтенда для магазина, а также был небольшой опыт работы с СУБД MySQL. Все остальные вопросы, которые появлялись в процессе, решал с помощью форумов и stackOverflow. При проектировании архитектуры приложения брал за основу Spring MVC - javastudy.ru/wp-content/uploads/2015/04/RequestLif...

    В итоге технологии, которые были использованы - это Java, Servlets, JSP, JSTL, JDBC, MySQL, HTML, CSS, jQuery, bootstrap, Tomcat, Maven и jUnit для написания тестов. Конечно таким способом веб-приложения писали лет 10-15 назад, но я не стал задействовать фреймворки принципиально, чтобы разобраться в том, как работают веб-приложения на Java без них. Написав такой проект ты сможешь понять принцип работы такого фреймворка, как Spring MVC.

    Я остался очень доволен что не стал писать дипломный проект на php, как планировал ранее. Я получил отличный опыт и у меня была огромная мотивация для интенсивного изучения Java! Желаю успешно защититься! :)
    Ответ написан
    Комментировать
  • Как понять работу фрагмента кода?

    @EgorNS
    InputStream inputStream = System.in;
    Reader inputStreamReader = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);


    В первой строке мы присваиваем в переменную inputStream объект класса InputStream, ссылка на который содержится в System.in. Класс InputStream используется в Java как байтовый поток для ввода данных в вашу программу. Так как мы работаем с объектом, на который ссылается System.in - это значит, что мы будем иметь дело со стандартным потоком, который будет читать входные данные, которые вводятся в консоль с клавиатуры.

    Далее во второй строке создается и присваивается в переменную объект типа InputStreamReader.
    InputStreamReader - это переходник между байтовыми и символьными потоками, который получает как аргумент байтовый поток (в нашем случае inputStream) и преобразует входящие в него байты в символы, которые затем будут переданы в символьный поток.

    В третьей строке создается объект класса BufferedReader. BufferedReader это подкласс класса Reader, который используется в Java, как символьный поток для ввода данных. BufferedReader отличается от других подклассов Reader, тем что он может зачитывать не только одиночные символы, но и сразу строки символов за один раз. BufferedReader при создании требует объект любого символьного потока в качестве аргумента из которого будет зачитывать потом данные. Так как наш inputStream является байтовым потоком, то он не может быть передан в BufferedReader как аргумент. Для этого как раз и существуют объекты-заглушки типа InputStreamReader. Такой объект передается в BufferedReader, как аргумент. В то же время InputStreamReader инкапсулирует в себе объект нашего байтового потока inputStream, который мы передали ему при создании во второй строке.

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));


    В этой строке происходит все то же самое, только в сокращенной форме. Такой стиль наиболее применим при написании кода, так как он более читабельный и компактный, чем пример, приведенный выше.
    Ответ написан