Java — настолько популярный и развитый язык, что контента на любую связанную с ним тему хоть отбавляй. Будь то технические разборы, обзоры популярных библиотек с открытым исходным кодом, статьи о поиске работы Java-программистом, сравнение с другими языками — всего не перечесть. Поиск по слову «java» в гугле выдал мне около 1,56,00,00,000 (?) результатов.
User
7 ошибок глобального рефакторинга и как их избежать
«Все снести и переписать нормально» — нередко именно такое желание возникает у разработчиков, когда дело касается legacy кода. Но стоит помнить, что далеко не всегда это верное решение. Очень часто попытки переписать код заново заканчиваются провалом — мне довелось видеть немало таких примеров.
В этой статье я отвечу на вопрос, почему попытки переписать код с нуля оказываются неудачными, опишу 7 самых распространенных ошибок тотального рефакторинга и расскажу, как работать с legacy кодом, чтобы их избежать.
Учим домашний сервер Linux засыпать при простое и просыпаться по запросу
Честно говоря, мне требовалось нечто большее, чем засыпание при простое, мне нужно было ещё и пробуждение по запросу; оказалось, вот это второе требование реализовать довольно сложно. Я много раз заходил в тупик, но продолжал искать решение, которое «просто работает» без необходимости ручного включения сервера для каждого бэкапа. Вы можете прочитать статью целиком, чтобы узнать о моём пути, или просто прочитать готовые инструкции.
Самостоятельное обучение стало проще с Notion AI. Онлайн школы скоро вымрут? Пример SQL курса
Самостоятельное обучение стало проще с Notion AI. Онлайн школы скоро вымрут?Пример SQL курса.
ChatGPT: личный ассистент IT-специалиста
Привет, Хабр! Вы уже пользуетесь нейросетями в своей ежедневной работе?
Меня зовут Дмитрий, я — руководитель команды в департаменте проектирования и разработки. Как и любой человек с ограниченным временем и неограниченным количеством задач и фантазией, я постоянно ищу способы оптимизировать любые процессы. В статье я расскажу вам о своём опыте внедрения ChatGPT-4 в разработку программного продукта — от аналитики до кода, на конкретных примерах.
3 совета самому себе на случай, если я снова стану безработным
Промпт: 3 совета самому себе на случай, если я снова стану безработным
Осенью 2022 года я написал заявление и уволился с работы, которой посвятил 4 года. В процессе поиска работы я столкнулся с некоторыми проблемами, которых можно было бы избежать, если бы кто-то меня научил, предупредил, показал.
Поэтому сейчас я пишу себе в прошлое 3 совета, 3 настоятельных к исполнению рекомендации, которые помогут мне подготовиться к увольнению. Надеюсь, это письмо дойдет до меня :-)
Замеряй и ускоряй: как мы сократили время вызова метода в Java-коде в 16 раз
Привет, Хабр! Замер производительности кода — не самое простое упражнение для разработчика. Приходится решать кучу сложностей: разбираться с методом, создавать правильные условия. И всё равно можно получить результат с погрешностью, потому что любой метод «не бесплатный» и требует ресурсов процессора.
Меня зовут Александр Певненко, я Java-разработчик в СберТехе. Вместе с командой мы развиваем Platform V DataSpace. Это облачный сервис, который упрощает и ускоряет разработку приложений, используя концепцию Backend-as-a-Service (BaaS) для хранения и управления данными. Я расскажу про наш способ замера производительности кода с помощью бенчмарков. Рассматривать метод будем на примере оптимизации кода в Platform V Dataspace, которая помогла сократить время вызова метода в 16 раз.
В статье я буду пользоваться языком Java, Python для построения графиков и набором библиотек JMH — они также адаптированы для Kotlin, Scala и т.д.
Что под капотом у Leak Canary?
LeakCanary – библиотека, позволяющая находить утечки памяти во работы приложения в фоновом режиме. При всем при этом, со стороны клиента ничего делать не нужно. Просто указал либу в зависимостях Gradle, и она сама начинает работать.
Естественно инженерное любопытство заставляет задаться вопросом, а как работает эта магия? Эта статья даст хоть и поверхностные, но ответы на эти вопросы. В статье постараюсь описать: Как запускается LeakCanary? Откуда берется отдельный ярлык? Как вообще LeakCanary находит утечки и находит путь до утекшей ссылки?
Пять факторов, которые влияют на выбор базы данных
При выборе баз данных для текущего проекта (или при замене тех, которые не отвечают вашим текущим потребностям) количество возможных вариантов очень велико. Это и хорошо, и плохо, ведь нужны какие-то критерии фильтрации.
Сегодня есть гораздо больше баз данных, чем когда-либо. В декабре 2012 года, когда DB-Engines.com впервые начал ранжировать базы данных, у него получился список из 73 систем (существенный рост по сравнению с самым первым списком из 18 систем). Спустя десять лет, на декабрь 2022 года в списке было уже почти четыреста систем. За последнее десятилетие произошёл настоящий кембрийский взрыв технологий баз данных. Нужно ориентироваться в обширном пространстве вариантов: SQL, NoSQL, множество «многомодельных» баз данных, которые могут быть сочетанием SQL и NoSQL, или множественные модели данных NoSQL (сочетающие две или более опций: документы, ключи-значения, широкие столбцы, графы и так далее).
Кроме того, пользователи не должны путать популярность с применимостью для них. Хотя сетевой эффект имеет свои преимущества («Все пользуются X, поэтому не ошибусь, если выберу её»), он также может привести к групповому мышлению, торможению инноваций и конкуренции.
Мы с моим коллегой Артуром Песа недавно рассмотрели пять факторов, которые пользователи должны учитывать в первую очередь при выборе и сравнении баз данных.
Установка сервера Linux + (Nginx + Apache) + PostgreSQL + PHP на VirtualBox (Ubuntu Server 16.04.3 LTS)
Принцип работы следующий:
Статические данные (файлы) отдает Nginx, а динамикой занимается Apache.
Шпаргалка Java программиста 2: Триста пятьдесят самых популярных не мобильных Java opensource проектов на github
Если вы хотите убедиться что базы данных пишут не только на C, найти проекты для работы с большими данными или нейронными сетями, пишите свой язык программирования для JVM и хотите посмотреть как это уже сделано или же просто хотите узнать какие новые возможности можно найти в Java мире open-source то это статья вам, думаю, может пригодится.
Другие статьи серии: часть 1. JPA и Hibernate в вопросах и ответах
Update: Внимание, актуальная версия со много большим количеством ссылок, находиться теперь в моем github'e проекте useful-java-links, по этой ссылке.
2. Триста пятьдесят самых популярных не мобильных Java opensource проектов на github
3. Коллекции в Java (стандартные, guava, apache, trove, gs-collections и другие
4. Java Stream API
5. Двести пятьдесят русскоязычных обучающих видео докладов и лекций о Java
6. Список полезных ссылок для Java программиста
7 Типовые задачи
7.1 Оптимальный путь преобразования InputStream в строку
7.2 Самый производительный способ обхода Map'ы, подсчет количества вхождений подстроки
8. Библиотеки для работы с Json (Gson, Fastjson, LoganSquare, Jackson, JsonPath и другие)
Почему в вашем коде так сложно разобраться
Сейчас 1:30 ночи, и я смотрю на фрагмент кода, который написал около месяца назад. В то время он казался мне произведением искусства. Все здесь имело смысл. Он был элегантен, прост и замечателен. Но больше нет. У меня завтра дедлайн, а я обнаружил баг всего несколько часов назад. То, что казалось простым и логичным в то время, сейчас просто не поддается моему пониманию. Конечно, если я написал этот код, мне ведь должно хватить мозгов, чтобы понять его?
Спустя слишком большое количество подобных ситуаций я начал серьезно задумываться о том, почему мой код предельно понятен, пока я его пишу, но выглядит как какая-то тарабарщина, когда я вновь возвращаюсь к нему через несколько недель или месяцев.
Десять имён для одной архитектуры
На пятничном семинаре учебного проекта лаборатории МФТИ-Интел один из студентов задал мне примерно такой вопрос: а почему 64-битный вариант архитектуры процессоров Intel называется x64, а 32-битный — x86? Я начал объяснять, что не всё так просто. Захотелось нарисовать более полную картину. Ведь на самом деле это не x64, и даже не x86.
Обработка исключений в Java с использованием сопоставления с образцом (pattern matching)
Обработка исключений в Java с использованием сопоставления с образцом (pattern matching).
Данная статья является логическим продолжением статей
- Обработка исключений в Java в функциональном стиле и
- Обработка исключений в Java в функциональном стиле. Часть 2.
В данной статье рассмотрим способы обработки исключений Java при помощи pattern-matching, как это делается в других FP языках.
Пример на других языках
В функциональных языках программирования существуют удобные средства для работы с исключениями. В Kotlin и Rust это класс Result, в Scala и Haskell — Try. Обработка успешного результата или ошибки может производится при помощи pattern-matching как на примерах ниже.
Scala
val result = divideWithTry(10, 0) match {
case Success(i) => i
case Failure(DivideByZero()) => None
}
Rust
let greeting_file_result = File::open("hello.txt");
let greeting_file = match greeting_file_result {
Ok(file) => file,
Err(error) => panic!("Problem opening the file: {:?}", error),
};
Использование pattern-matching является естественным (idiomatic) в функциональных языках. А как дело обстоит в Java?
Безопасная разработка в Java
Язык программирования Java является одним из самых распространенных языков программирования. На нем написано множество сложных приложений как под Linux, так и под Windows. Однако, как и у любого другого языка программирования, у Java есть свои уязвимости.
Цель этой статьи познакомиться с уязвимостями, типичными для языка программирования Java, а также разобрать практики безопасного кодирования.
Полезные и неизвестные возможности Java
В этой статье вы узнаете о некоторых полезных функциях Java, о которых вы, вероятно, не слышали.
Это мой личный список функций, использованных мной недавно или с которыми я столкнулся при чтении статей о Java.
Я сосредоточусь не на языковых аспектах, а на API. Я уже опубликовал все примеры, относящиеся к этой статье, в Твиттере в форме, показанной ниже. Вы также можете найти их в моей учетной записи Twitter или просто под #java
хэштегом.
Полезные и неизвестные библиотеки Java
Из этой статьи вы узнаете о некоторых не очень известных, но полезных библиотеках Java. Это вторая статья из серии «Полезное и неизвестное». Предыдущая описывала несколько привлекательных, но малоизвестных возможностей Java. Подробнее об этом можно прочитать здесь.
Сегодня мы сосредоточимся на библиотеках Java. Обычно мы используем в своих проектах несколько внешних библиотек — даже если не включаем их напрямую. Например, Spring Boot поставляется с определенным набором зависимостей, включенным стартерами. Если мы включаем, например, spring-boot-starter-test
, то одновременно мы включаем такие библиотеки, как mockito
, junit-jupiter
или hamcrest
. Конечно, это известные библиотеки для сообщества.
На самом деле существует множество различных Java‑библиотек. Обычно мне не нужно использовать многие из них (или даже они мне не нужны) при работе с такими фреймворками, как Spring Boot или Quarkus.
Однако есть несколько очень интересных библиотек, которые могут пригодиться везде. Возможно, вы не слышали ни об одной из них. Я собираюсь представить 5 моих любимых «полезных и неизвестных» Java‑библиотек. Давай начнем!
Как установить Arch с минимальной болью?
Как установить Arch без боли??
Предисловие
Слышал, что некоторые считают Arch сложным в установке. Отчасти они правы, но для любого человека, который способен разобраться в установке и настройке linux, установка Arch довольно проста. Также это самый гибкий дистрибутив, поэтому настроить под себя его получится лучше других дистрибутивов.
Данный гайд является сборной солянкой из всех гайдов, что я прочитал (как русскоязычные, так и иноязычные). Его цель просто и без лишней технической информации показать пошаговую установку Arch и сделать это на русском языке. Главное, что статья написана от непонимающего для непонимающих. Заранее скажу, что некоторые скрины будут уже с установленного Arch, но это никак не меняет работу команд и то, что вы увидите при их использование.
Руководство по возможностям языка Java версий 8-19
Вы можете использовать это руководство для получения практической информации о том, как найти и установить последнюю версию Java, понять различия между дистрибутивами Java (Adoptium, AdoptOpenJdk, OpenJDK, OracleJDK и т. д.), а также получить обзор функций языка Java, включая версии 8–19.
Что вам нужно знать про молочные зубы у детей (и современный медицинский подход)
Дети просто полны зубами. Зубы как-то помещаются в черепе, но всё равно почти торчат в ноздрях и глазницах. Тут, например, 48 зубов одновременно, и это абсолютно здоровый пациент.
Молочные зубы очень важны. Мы уже не раз сталкивались с реакцией родителей в ситуации, когда они приводят ребёнка с запущенным множественным кариесом. «Сколько-сколько будет стоить вылечить восемь зубов? Нет, не буду, нам по ОМС всё бесплатно вырвут». К сожалению, родители часто не понимают, что потеря (или утрата) молочных зубов очень критична для формирования здорового ортогнатического прикуса.
Цепочка довольно простая:
- Удалили зуб значительно раньше сроков его смены.
- Соседние зубы повернулись и наклонились, чтобы закрыть дефект.
- Замедлился или остановился рост челюстей, так как они зависят от жевательной нагрузки.
- Постоянные зубы прорезались с дефектами, так как зачатки повреждены инфекцией.
- В подростковом возрасте имеем сложные зубочелюстные аномалии и очень-очень дорогое ортодонтическое лечение, растянутое на годы, чтобы это хоть как-то исправить.
Поэтому сегодня я буду рассказывать, что нужно делать из бесплатного с ребёнком на старте, чтобы потом не тратить кучу денег и сил на лечение в будущем.
Information
- Rating
- Does not participate
- Registered
- Activity