пятница, 26 апреля 2013 г.
Лекция по Java для начинающих
Наконец я сделал это. В смысле - записал одну свою лекцию. Вышло, скажем так, не очень. Учитывая, что писалось оно на веб-камеру. так удивительно, что хоть так вышло. Тем более, что лекция эта не первая, а третья. И уже две первых записывать придется потом. Более того, подготовиться к лекции времени было совсем мало, так что вот так.... Немного сумбурно получилось. В общем, если кому-то вдруг интересно - вот запись. Там где-то час двадцать. Смотрите, ругайте.
вторник, 4 декабря 2012 г.
XML или как его едят
Сегодня мы публикуем статью , человека, который недавно начал изучать Java. Думаю, что это будет интересно таким же новичкам, как и он. Итак, встречайте
AlexNNovak
Работа с XML, что же в этом направлении на сегодняшний момент времени написано очень много статей с примерами и примеров со статьями, некоторое из них лучше, некоторые хуже, некоторые можно сказать совсем отвратительные. Отвратительные они в том плане, что читающий их человек может совершенно бездумно скопировать пример описанный в статье и так же, не задумываясь и не углубляясь в подробности изменив два значения его использовать. «А что в этом плохого?» совершенно справедливо спросите Вы, «Взял мол, готовый кусок кода, подправил под свои потребности и используй!», вот тут то и заключается «плохо». Используя чужой код Вы отвыкаете думать сами, и я не подразумеваю библиотеки сторонних разработчиков, я имею ввиду конкретно код примеров из статей. Ну да ладно, я отвлекся и хватил немного в сторону.
Итак, я не претендую на ни на истину ни на велосипед, но, перед тем как начать работу с великим и могучим XML-ем нам надо сперва определить, какое действие с ним, мы хотим выполнить, а именно: создать XML документ – записать некие данные использую определённую структуру или наоборот разобрать(parse) XML документ – из готового документа подчиненного строгой структуре извлечь интересующие нас данные. Когда мы определились, что именно мы хотим делать, мы должны понять, какими методом в данной конкретной ситуации нам удобнее и/или правильнее поступать.
Признаюсь честно, что с созданием XML документов мне пока сталкиваться не приходилось, посему буду описывать методы, к которым прибегал и которые, как я считаю для совсем уж начинающего Java программиста или QA Automation инженера самые быстрые в освоении и понимании. Итак, я выбрал два основных метода: это DOM и XPath.
AlexNNovak
Работа с XML, что же в этом направлении на сегодняшний момент времени написано очень много статей с примерами и примеров со статьями, некоторое из них лучше, некоторые хуже, некоторые можно сказать совсем отвратительные. Отвратительные они в том плане, что читающий их человек может совершенно бездумно скопировать пример описанный в статье и так же, не задумываясь и не углубляясь в подробности изменив два значения его использовать. «А что в этом плохого?» совершенно справедливо спросите Вы, «Взял мол, готовый кусок кода, подправил под свои потребности и используй!», вот тут то и заключается «плохо». Используя чужой код Вы отвыкаете думать сами, и я не подразумеваю библиотеки сторонних разработчиков, я имею ввиду конкретно код примеров из статей. Ну да ладно, я отвлекся и хватил немного в сторону.
Итак, я не претендую на ни на истину ни на велосипед, но, перед тем как начать работу с великим и могучим XML-ем нам надо сперва определить, какое действие с ним, мы хотим выполнить, а именно: создать XML документ – записать некие данные использую определённую структуру или наоборот разобрать(parse) XML документ – из готового документа подчиненного строгой структуре извлечь интересующие нас данные. Когда мы определились, что именно мы хотим делать, мы должны понять, какими методом в данной конкретной ситуации нам удобнее и/или правильнее поступать.
Признаюсь честно, что с созданием XML документов мне пока сталкиваться не приходилось, посему буду описывать методы, к которым прибегал и которые, как я считаю для совсем уж начинающего Java программиста или QA Automation инженера самые быстрые в освоении и понимании. Итак, я выбрал два основных метода: это DOM и XPath.
вторник, 6 ноября 2012 г.
О перспективах Java. Часть 1
Получили очень интересный вопрос в комментариях, сразу его и процитирую:
Avicorn: Новичковый вопрос: на сколько сейчас востребованы программисты на java, в том числе - начинающие?Не буду голословным, поэтому начну с фактов. И сразу оговорюсь, буду говорить только про Киев, так как ситуацией в других городах не владею. Факты - это количество вакансий и количество соискателей. Вернее их отношение. Так вот, фактически последние пять лет у меня не было ни единого раза, чтобы были заполнены все вакансии - людей постоянно не хватает. Как заметили мне в комментариях - заполненность вакансий - 0.3 человека на место. Зарплаты в долларах у программистов на Java за последние пять лет же выросли от 1000 долларов до 2500 долларов для middle developer со стажем с года до 6 лет. Если кому хочется посмотреть текущую ситуацию с зарплатами, то среднюю температуру по больнице можно оценить вот здесь: на dou.ua . Обращаю внимание, что данные эти по настоящему "средние", то есть существенно искажены в сторону уменьшения, тем, что в рейтинг попадают и сотрудники гос предприятий и разработчики компаний, работающих на отечественный (читай бСССР) рынок. Почему у них зарплаты существенно меньше - чуть позже. Вывод - перспективы прекрасные.
С учетом последних фортелей Oracle (смена лицензии и закрытие 100500 открытых еще Sun'ом проектов, исключение java-машины из linux-дистрибутивов и т.п.) и активного развития .net и php (если речь идет о вебе) будущее платформы видится туманным.
hashCode
В прошлой заметке мы говорили о HashMap, hashcode() и немного equals().
Краткое содержание: записывая пару ключ-значение (запись) в HashMap, мы помещаем ее в одну из ячеек (бакет) массива. То, в какую именно ячейку будет помещена запись (индекс ячейки в массиве) определяется по значению hashcode() ключа. Поскольку в один бакет может быть помещено несколько записей, то в бакет записываются не сами записи, а содержащие их связные списки.
В HashMap могут быть помещены записи только с уникальными ключами. Уникальность определяется методом equals(). То есть если
new Integer(1).equals(new Integer(1)); - вернул true - объекты равны.
Чтобы вся эта система корректно работала, необходимо соблюдать 2 правила (и пожалуйста, дальше - читать обязательно, потому что именно этот вопрос любят задавать на собеседованиях):
1. равные объекты должны иметь один и тот же hashcode
то есть, если equals - true, hashcode() возвращает одинаковое число
2. объекты, имеющие разный hashcode - неравны
то есть если hashcode() возвращает разные числа, equals обязано вернуть false
Почему соблюдать эти правила необходимо?
Краткое содержание: записывая пару ключ-значение (запись) в HashMap, мы помещаем ее в одну из ячеек (бакет) массива. То, в какую именно ячейку будет помещена запись (индекс ячейки в массиве) определяется по значению hashcode() ключа. Поскольку в один бакет может быть помещено несколько записей, то в бакет записываются не сами записи, а содержащие их связные списки.
В HashMap могут быть помещены записи только с уникальными ключами. Уникальность определяется методом equals(). То есть если
new Integer(1).equals(new Integer(1)); - вернул true - объекты равны.
Чтобы вся эта система корректно работала, необходимо соблюдать 2 правила (и пожалуйста, дальше - читать обязательно, потому что именно этот вопрос любят задавать на собеседованиях):
1. равные объекты должны иметь один и тот же hashcode
то есть, если equals - true, hashcode() возвращает одинаковое число
2. объекты, имеющие разный hashcode - неравны
то есть если hashcode() возвращает разные числа, equals обязано вернуть false
Почему соблюдать эти правила необходимо?
понедельник, 5 ноября 2012 г.
HashSet
Пару строчек про HashSet
Set - множество уникальных элементов. Как определить уникальность мы поговорим в другой раз, вкратце - это делается с помощью метода equals(). Теперь о внутреннем устройстве: множество уникальных объектов - это как раз та вещь, о которой мы говорили в статье HashMap, только там это было множество объектов ключей. И действительно, если мы посмотрим на внутреннее устройство HashSet, найдем там объект HashMap. То есть HashSet - обертка для HashMap. Объекты, записываемые в Set, располагаются в качестве ключей, в качестве значения всегда записывается один и тот же объект типа Object.
Кстати, в классе LinkedHashSet данные содержатся во внутреннем объекте типа LinkedHashMap, а в классе TreeSet - в TreeMap
Set - множество уникальных элементов. Как определить уникальность мы поговорим в другой раз, вкратце - это делается с помощью метода equals(). Теперь о внутреннем устройстве: множество уникальных объектов - это как раз та вещь, о которой мы говорили в статье HashMap, только там это было множество объектов ключей. И действительно, если мы посмотрим на внутреннее устройство HashSet, найдем там объект HashMap. То есть HashSet - обертка для HashMap. Объекты, записываемые в Set, располагаются в качестве ключей, в качестве значения всегда записывается один и тот же объект типа Object.
Кстати, в классе LinkedHashSet данные содержатся во внутреннем объекте типа LinkedHashMap, а в классе TreeSet - в TreeMap
четверг, 1 ноября 2012 г.
Что нужно знать Java разработчику для прохождения собеседования
Мы как-то резко разогнались с женой и сразу начали накидывать информацию. Настала пора притормозить и начать с начала.
А начало у нас будет простое. Для чего мы работаем? Если кто-то скажет "для удовольствия", "для того, чтобы узнать что-то новое" или не приведи Господи "чтобы работать в команде", киньте, пожалуйста в него чем-нибудь тяжелым. Зачем этот HR к нам пришел? Самое главное и не надо этого стесняться, мы работаем ради денег. Так вот, цель определили. Теперь как к ней идти.
Денег нам не дадут, если мы не устроились на работу, где эти деньги платят. Ну и денег будет мало, если мы не смогли попасть на ту работу, где их много (то есть пришлось удовольствоваться малым... это не наш путь, правда?). Поэтому самым важным умением любого программиста надо признать умение проходить собеседование. Вот этим вопросом мы сейчас и займемся.
А начало у нас будет простое. Для чего мы работаем? Если кто-то скажет "для удовольствия", "для того, чтобы узнать что-то новое" или не приведи Господи "чтобы работать в команде", киньте, пожалуйста в него чем-нибудь тяжелым. Зачем этот HR к нам пришел? Самое главное и не надо этого стесняться, мы работаем ради денег. Так вот, цель определили. Теперь как к ней идти.
Денег нам не дадут, если мы не устроились на работу, где эти деньги платят. Ну и денег будет мало, если мы не смогли попасть на ту работу, где их много (то есть пришлось удовольствоваться малым... это не наш путь, правда?). Поэтому самым важным умением любого программиста надо признать умение проходить собеседование. Вот этим вопросом мы сейчас и займемся.
среда, 31 октября 2012 г.
HashSet и HashMap
Самые распространенные вопросы для собеседований можно собрать в группы. И одной из самых частых групп являются вопросы о Collection framework. Об одном из аспектов этого фреймворка мы сегодня и поговорим.
Говорить о классах Collections framework, как и о сортировке и поиске данных можно много, поэтому давайте организуем пост в виде вопросов и ответов. А вопросы постараемся задать такие же, как это делают интервьюеры.
Говорить о классах Collections framework, как и о сортировке и поиске данных можно много, поэтому давайте организуем пост в виде вопросов и ответов. А вопросы постараемся задать такие же, как это делают интервьюеры.
Подписаться на:
Сообщения (Atom)