847

Помогу бесплатно: Java и SQL

Помогу советом изучающим Java и SQL или начинающим программистам.


Не решаю задачи, не делаю ДЗ. Только объясняю что, как и почему устроено.


Рейтинг в топку, просто хочу помочь.

Помощники

236 постов785 подписчиков

Правила сообщества

Нельзя обсуждать Политику.
Ругаться и оскорблять.

5
Автор поста оценил этот комментарий

Подскажите с чего начать изучение SQL? проверенные курсы, книги

раскрыть ветку (1)
13
Автор поста оценил этот комментарий

Рекомендую для знакомства с синтаксисом: https://www.w3schools.com/sql/

Это больше справочник, но есть возможность прямо в браузере писать запросы.


Книга "SQL для простых смертных" - сам читал, довольно полковая.


На домашний компьютер можно поставить продукты от MS:
MS SQL Ecpress - бесплатный SQL сервер

MS SQL Managenet Studio - бесплатная среда разработки

Учебные базы данных: https://github.com/Microsoft/sql-server-samples/tree/master/... Надо скачать скрипты создания БД и запустить их.

показать ответы
14
Автор поста оценил этот комментарий

Посоветуйте с чего начать изучение java с нуля, пожалуйста.

раскрыть ветку (1)
8
Автор поста оценил этот комментарий

Думаю здесь надо подходить с разных точек зрения.

Во-первых, нужна систематическая база по самому языку. Лично я бы рекомендовал "Полное руководство по Java" от Шилдта. Сам читал его уже 2 раза и планирую перечитывать. Очень качественно, и самое главное полно и методично, рассказывается про язык. Можно читать параллельно с практикой.

Когда уже будет какой-то опыт можно взяться за "Философия Java". Сам уже 2 раза читал. Объясняется почему язык устроен именно так, а не иначе.


Во-вторых, это практика. Лучшая среда разработки для Java (и лучшая среда разработки вообще с которой я работал) IntelliJ IDEA. Хз что будет, вроде как уходят с российского рынка.

Насчет курсов точно не скажу. Коллеги с работы хвалят Sptepik.

показать ответы
0
Автор поста оценил этот комментарий
Приветствую. Есть конкретный вопрос. Как возможно сравнить несколько enum значений у меня есть некий класс в чей конструктор передаётся enum как поле, мне нужно определить что в экземпляре класса есть например три одинаковых enum.valueOf(). Я новичок, уже несколько дней бьюсь с этим :)
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Начиная с Джавы 8 элементы перечислений можно использовать в switch().
Я обычно делаю примерно так:

switch(enumEl):

  case enum1:

    //somecode

  break;

  case enum2:

  case enum3:

    //somecode

  break;

default:

  //some code

показать ответы
1
Автор поста оценил этот комментарий
Присоединяюсь)
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Самый главный оператор - join, то есть соединение таблиц. Это основа основ SQL.

показать ответы
0
DELETED
Автор поста оценил этот комментарий
таблица:
Sales (MonthId int, RTN int, sales_rub float)
Где MonthId - Id месяца, вида 202101, где первые 4 цифры год, 2 последних – номер месяца
, RTN – Id рук-ля товарного направления (РТН)
Написать скрипт.
Добавить столбец, где будет рассчитана разница между среднемесячным (за квартал) значением продаж и текущим значением продаж в месяце

Можете ещё подсказать, как такой запрос выполнить? Хотя бы с чего начать.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

AVG - агрегатная функция, которая возвращает среднее значение.

Сначала надо найти средние значения за квартал, а потом эту таблицу присоединить выборке с группировкой по месяцам. Соединять по номеру квартала + год.

0
DELETED
Автор поста оценил этот комментарий
Добрый день, подскажите, правильно ли я на это условие написал запрос

В Базе данных есть 2 таблицы:
Sales (MonthId int, RTN int, sales_rub float)
Plans (MonthId int, RTN int, plan_rub float)
Где MonthId  - Id месяца, вида 202101, где первые 4 цифры год, 2 последних – номер месяца
, RTN – Id рук-ля товарного направления (РТН)

Написать скрипт.
Который выведет сумму фактических продаж и плановых продаж по месяцам(MonthId) за 2021 год. При этом план может быть не по всем РТН, а продажи есть у всех РТН, по которым есть план.

SELECT s.Monthid,SUM(s.sales_rub), SUM(p.planes_rub)
FROM sales AS s
LEFT JOIN Plans AS p
ON s.Monthid = p.Monthid
AND s.Rtn = p.Rtn
WHERE s.Monthid LIKE'2021%'
GROUP BY Monthid
;
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Добрый день!
Соединение по РТН не нужно, так как группировка делается в разрезе месяца.
Тут вопрос: если продаж и планов нет на какой-нибудь месяц, то его надо выводить или нет? Если нет, то такое решение подойдёт, если надо - то придётся усложнять.
Так как факт всегда есть, когда есть план, то можно использовать простое соединение - JOIN, а не левое соединение.

показать ответы
0
Автор поста оценил этот комментарий

смысл дергать вас по одному вопросу, если для этого полно чатов, где поможет не один чел, а сразу много? Как долго ждать ответа если вы заняты например? )

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Хороший вопрос. Возможно Пикабу не самый подходящий формат для такого.

показать ответы
0
Автор поста оценил этот комментарий
А есть разница между SQL и MySQL? @Harold35530
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

SQL - это стандарт.

MySQL - это одна из реализации этого стандарта.

Вообще на сегодняшний день уже созданы десятки разных СУБД. Все они в разной степени поддерживает SQL. Это означает, что процентов 90 того, что создано в рамках стандарта SQL будет работать на всех этих СУБД.

0
Автор поста оценил этот комментарий
А как с тестированием на java, по простому как нибудь объяснить ,принцип построения тестов.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

Наличие тестов позволяет значительно ускорить внесение изменений. Допустим у Вас есть программа из 10 классов. В один из них Вы добавили новую функциональность. Но классы же связаны между собой. И чтобы убедиться в правильность работы желательно всё протестировать, или ошибка всплывёт при работе приложения.

Первый вариант - ручное тестирование. Когда изменения в программе становятся небольшими, по сравнению со всей программой, то ручное тестирование начинает занимать в разы большее время по сравнению с самой разработкой.

Вот тут мы приходим к тому, что нужно этот процесс автоматизировать.

Суть простая - на каждый метод каждого класса создаётся тест - то есть вызывается этот метод и мы знаем, что должны получить.

Желательно запускать с неправильными данными: передавать отрицательные числа, нули или очень большие значения и смотреть, что произойдёт.

0
Автор поста оценил этот комментарий
Приветствую. Есть конкретный вопрос. Как возможно сравнить несколько enum значений у меня есть некий класс в чей конструктор передаётся enum как поле, мне нужно определить что в экземпляре класса есть например три одинаковых enum.valueOf(). Я новичок, уже несколько дней бьюсь с этим :)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

enum.valueOf() будет искать элемент перечисления, название которого совпадает с переданной строкой. Допустим у нас есть перечисление enum ANIMALS{ CAT, DOG}; Если вызвать ANIMALS.valueOf("DOG"), то метод вернёт элемент перечисления DOG.


Так же для сравнения элементов перечисления можно использовать ==, так как все элементы перечисления это статические объекты, то и ссылки на них равны.

Метод object.equals() будет работать по той же причине.


Вот код класса:


public class Main {

enum ANIMALS {DOG, CAT};

public static void main(String[] args){


System.out.println(ANIMALS.valueOf("DOG"));


ANIMALS animal = ANIMALS.DOG;


if (animal == ANIMALS.DOG)

System.out.println("Равны!!!");


if (animal.equals(ANIMALS.DOG))

System.out.println("Тоже равны!!!");

}

}

0
Автор поста оценил этот комментарий

Есть несколько вопросов на которые я не смог найти адекватного ответа. Я джаву изучаю всего пару месяцев, так что простите если где-то глупость спросил.

1. Type alias. Я могу в С++ написать using MyType = std::vector<std::pair<std::string, MonstrousSuperClass>> и дальше везде использовать MyType, что заметно повышает читаемость кода. Есть ли что-то аналогичное в джаве?

2. Можно ли как-то сделать константные методы? Хочу написать интерфейс, в котором будет чётко видно, что некоторые методы не должны менять состояние объекта (т.к. я на это опираюсь при реализации некоторых алгоритмов, работающих с объектами этого типа).

3. Есть ли какой-то аналог декораторов из питона? Хочу, например, сделать мемоизацию функции (т.е. обёртку, которая будет запоминать с какими аргументами вызывали функцию и в следующих вызовах сразу возвращать сохранённый результат для "запомненного" набора аргументов). Ну или хочу сделать обёртку для автоматического ретрая в случае некоторых исключений.

4. Если я не собираюсь заниматься мобильной разработкой - какие есть у джавы преимущества над сочетанием "питоном + С++"? Это не попытка начать холивар, а вполне искреннее любопытство, т.к. пытаюсь понять, насколько мне вообще имеет смысл погружаться в этот язык.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

1) Насколько я знаю, такого нет.

2) Возможно Вам поможет использование аннотаций.  То есть создаёте свою аннотацию и помечайте ей те методы, которые не должны менять состояние объектов.

Возможно поможет использование final перед описанием параметров методов. Это запретит менять входящие объекты, но не их содержимое.

3) С питоном знаком поверхностно, не очень понимаю как должно работать.

4) Думаю, что особых преимуществ нет. Мобильная разработка под андройд, наверное основное преимущества Джавы, как языка для изучения. Сочетание Pyton и C++ - очень хороший вариант для широкого круга задач.

0
Автор поста оценил этот комментарий
А можно простым языком различия jpa и hibernate?)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

JPA - это спецификация. То есть как должно работать объектно-реляционное отображение.
Hibernate - одна из реализаций этой спецификации.

Попробую привести аналогию. Легковой автомобиль - это четырёхколесное транспортное средство с двигателем и массой до 3,5 тонн. Это аналог JPA.

А вот Lada седан или Газель - это уже реализация (аналог Hibernate).

0
Автор поста оценил этот комментарий

@Harold35530, а как тебе можно задать вопрос по джава? только тут в публичной теме?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Привет! Ещё есть телеграмм: https://t.me/Basilisk85. Пиши, куда удобно.

0
Автор поста оценил этот комментарий

А куда можно написать с вопросами?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я в телеграм: https://t.me/Basilisk85

0
Автор поста оценил этот комментарий
Привет автор! Можно проконсультироваться с тобой? Я на обучении нахожусь, подскажи как с тобой связаться?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Привет! Пиши в телегу https://t.me/Basilisk85

0
Автор поста оценил этот комментарий
Привет! Прошёл курсы от Сбера, сейчас в поиске работы. Очень много ещё нужно подтягивать по знаниям. Сможем списаться?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Давай, я в телеге @Basilisk85.

0
Автор поста оценил этот комментарий

Привет, я в мире Java относительно недавно. В прошлой работе не вижу перспективы, да и достиг там потолка, а с переходом в Java открылись такие большие широты, что сложно сориентироваться. Подскажи, где можно вполне реально искать фриланс/подработку по Java? Подойдут как и мелкие доработки, так и серьезные проекты. Работаю джавистом в приличной конторе, по работе и росту всё ок. Но я "хочу заработать все деньги", поэтому в свободное от работы время за хобби у меня - фриланс по всему, что знаю)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не могу подсказать. Подработки не беру.

0
DELETED
Автор поста оценил этот комментарий
Подскажи какой стек сейчас нужен по Java, пару лет назад занимался разработкой бэкенда на spring, hibernate, Postgres, swagger. Думаю подучить и вернуться в разработку.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

То, что Вы перечислили - это и есть стек. База для всего этого - сама Джава.

0
Автор поста оценил этот комментарий
Как насчёт подсказать по командам в консоли github
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

С gitHub не работал. Но пишите с чем именно вопросы, может что-то и подскажу.

0
Автор поста оценил этот комментарий

не умею делать сложные sql запросы

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Только практика. скидывайте ссылки на то, что вызывает проблемы.

показать ответы
0
Автор поста оценил этот комментарий

А что делать-то с этим?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Понимать, какие типы данных участвуют в операции.

2+2=4

"2"+"2"="22"

показать ответы
0
Автор поста оценил этот комментарий

Хочу для разминки написать какую-то банальность на Java. Скажем, калькулятор под Андроид. На чем пишут фронтенд? Какая библиотека "в тренде"? Спасибо.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В андройд свой нативный способ для визуализации.

Java AWT уже давно устарел, даже не начинайте

Java Swing - вроде современный. Вроде как ему на замену пришел Java FX, но с ним не работал.

Так же можете попробовать создать сервлет.

0
Автор поста оценил этот комментарий
А по JavaFX и iText есть возможность подсказать ?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не занимался.

1
Автор поста оценил этот комментарий

А что нибудь посоветуйте по оптимизации запрос на ORACLE почитать? Или обычно это происходит добавлением индексов и изменение плана запроса?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Для оптимизации 90% запросов достаточно выбрать правильные индексы. Посмотрите какие индексы уже есть.

Иногда помогает уничтожение статистики. Сама СУБД собирает информацию о планах предыдущих запросов. По мере роста БД может получиться так, что статистика уже не соответствует текущему состоянию БД. Первое время будет снижение производительности, но со временем наберётся новая статистика и всё будет работать как раньше. Если повезёт - то даже лучше.

Ещё для 9% достаточно изучить план запроса и переделать запрос. Особое внимание стоит уделить группировкам и фильтрам.

В оставшемся 1% - чистая жесть, которая требует создания временных таблиц и всяческих других извращений.

4
DELETED
Автор поста оценил этот комментарий

Если я правильно понял можно сделать мапу ключём в которой будет enum и значением количество вхождений.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, элементы перечислений могут использовать как ключи в картах.

0
Автор поста оценил этот комментарий

можно ли ваш пост, товарищ @Harold35530, перенести в сообщество Помощники?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Наверное да.

показать ответы
0
Автор поста оценил этот комментарий

чем отличается ioc от di? передача параметров по ссылке или значению? что лучше, linkdList or arrayList? :D

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ioc - инверсия управления. Это больше про фреймворки. Например, Collection Framework. У Вас, как у программиста, нет полного контроля за поведением. Вы можете только менять то, что доступно. То есть сам фреймворк управляет, а не Вы. В этом и идея инверсии управления.

Dependemcy Injection - тоже часть инверсии управления. Допустим у Вас есть приложение, которое что-то пишет в БД. Причем планируется поддержка разных СУБД. И для объектам нужен объект для работы с СУБД. Чтобы не переписывать каждый раз код заботу о создании объекта для подключения к БД можно вынести за пределы этих классов.

показать ответы
0
Автор поста оценил этот комментарий

чем отличается ioc от di? передача параметров по ссылке или значению? что лучше, linkdList or arrayList? :D

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Все параметры передаются по ссылке.

показать ответы
0
Автор поста оценил этот комментарий

чем отличается ioc от di? передача параметров по ссылке или значению? что лучше, linkdList or arrayList? :D

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну, по очереди. linkdList и ArrayList

LinkedList реализует связный список. Он хорош когда планируется добавлять/удалять элементы в середину списка. Пример задачи: оптимизация маршрута. Есть набор точек, которые надо объехать. Нужно меняя маршрут вычислять станет лучше-хуже.

Но чтобы найти i-й элемент нужно пройти весь список.

ArrayList - хранит элементы в той последовательности, в какой они поступают. Быстрый поиск по номеру элемента. А вот добавление/удаление элементов в середину списка - просто боль.

Ещё короче: если планируется частая вставка/удаление в середину списка - то лучше LinkedList. Если обновление списка не планируется, или происходит редко, но часто нужно считать элемент с нужным индексом - то ArrayList.

Обратите внимание, что все коллекции реализуют интерфейс List, то есть с обоими коллекциями можно обращаться одинаково, если использовать методы общего интерфейса List.

показать ответы
0
Автор поста оценил этот комментарий

Почему банальное сложение превращается в конкатенацию? Или это только в JS ?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Оператор "+" перегружен для строк.

показать ответы
0
Автор поста оценил этот комментарий

Посоветуй, что почитать/посмотреть про стримы.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

К сожалению пока плотно с этим не работал.

показать ответы
0
Автор поста оценил этот комментарий

Привет , очень поможет небольшое описание возможности фреймворка sprint просто коротко и на пальцах.
хоть и говорят что java может работать где угодно, но у меня пока нет понимания как примеру она на симках может работать , хотя кто то прокидывал такую информацию.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Может быть Spring?

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества