Forwarded from Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
💻 20 лучших ноутбуков для программиста в 2023 году
Выбираем самые легкие, автономные и производительные ноутбуки для кодинга.
На карточках перечислили самые производительные. Но для кодинга есть и другие важные параметры — остальные подборки смотрите в нашей статье.
Выбираем самые легкие, автономные и производительные ноутбуки для кодинга.
На карточках перечислили самые производительные. Но для кодинга есть и другие важные параметры — остальные подборки смотрите в нашей статье.
Конструктор по умолчанию
Конструктор по умолчанию предоставляется компилятором Java, если в классе не определен ни один другой конструктор. Конструктор по умолчанию инициализирует все поля класса значениями по умолчанию (например, 0 для числовых типов, false для типа boolean, null для ссылочных типов).
Если же в классе определен хотя бы один конструктор (с параметрами или без), компилятор не будет предоставлять конструктор по умолчанию, и его необходимо определить явно, если он нужен.
В этом примере мы определяем класс MyClass с двумя полями: x и y, а также определяем конструктор по умолчанию, который выводит сообщение при вызове. В методе main создаем экземпляр класса MyClass, используя конструктор по умолчанию, и выводим значения полей x и y, которые инициализированы значениями по умолчанию.
#код
Конструктор по умолчанию предоставляется компилятором Java, если в классе не определен ни один другой конструктор. Конструктор по умолчанию инициализирует все поля класса значениями по умолчанию (например, 0 для числовых типов, false для типа boolean, null для ссылочных типов).
Если же в классе определен хотя бы один конструктор (с параметрами или без), компилятор не будет предоставлять конструктор по умолчанию, и его необходимо определить явно, если он нужен.
В этом примере мы определяем класс MyClass с двумя полями: x и y, а также определяем конструктор по умолчанию, который выводит сообщение при вызове. В методе main создаем экземпляр класса MyClass, используя конструктор по умолчанию, и выводим значения полей x и y, которые инициализированы значениями по умолчанию.
#код
Инкапсуляция
Инкапсуляция — это принцип ООП, который заключается в сокрытии внутреннего представления класса от внешнего мира. Для этого используются модификаторы доступа: private, protected, public.
Обычно поля класса делаются private или protected, а методы — public. Это позволяет скрыть реализацию класса и предоставить к ней контролируемый доступ через public методы.
При запуске этой программы на выходе мы получим:
John 0
#код
Инкапсуляция — это принцип ООП, который заключается в сокрытии внутреннего представления класса от внешнего мира. Для этого используются модификаторы доступа: private, protected, public.
Обычно поля класса делаются private или protected, а методы — public. Это позволяет скрыть реализацию класса и предоставить к ней контролируемый доступ через public методы.
При запуске этой программы на выходе мы получим:
John 0
#код
Могут ли нестатические методы перегрузить статические?
Да, нестатические методы могут перегружать статические. Причина в том, что статические и нестатические методы считаются независимыми сущностями.
Статические методы привязаны к классу, а нестатические — к объекту/экземпляру класса. Поэтому они имеют разную сигнатуру вызова.
Статический метод вызывается через имя класса, а нестатический — через объект класса.
Таким образом, в одном классе могут быть определены статический и нестатический методы с одинаковым именем и списком параметров.
#вопросы_с_собеседований
Да, нестатические методы могут перегружать статические. Причина в том, что статические и нестатические методы считаются независимыми сущностями.
Статические методы привязаны к классу, а нестатические — к объекту/экземпляру класса. Поэтому они имеют разную сигнатуру вызова.
Статический метод вызывается через имя класса, а нестатический — через объект класса.
Таким образом, в одном классе могут быть определены статический и нестатический методы с одинаковым именем и списком параметров.
#вопросы_с_собеседований
FileChannel
FileChannel используется для работы с файлами на низкоуровневом вводе-выводе.
Основные возможности класса FileChannel:
— Чтение данных из файла и запись данных в файл.
— Работа с файлом по смещениям. Можно получить текущее смещение в файле, переместить указатель чтения/записи в нужное смещение.
— Маппинг файлов в память. Файл можно отобразить в память и работать с его содержимым как с массивом байтов.
— Блокировка частей файла. Позволяет защитить критические участки файла от одновременной записи.
— Асинхронная работа с файлами.
FileChannel эффективнее потокового ввода-вывода, т. к. избавляет от накладных расходов на создание объектов и буферизацию.
Используется в приложениях, где нужна высокая производительность работы с файлами.
#код
FileChannel используется для работы с файлами на низкоуровневом вводе-выводе.
Основные возможности класса FileChannel:
— Чтение данных из файла и запись данных в файл.
— Работа с файлом по смещениям. Можно получить текущее смещение в файле, переместить указатель чтения/записи в нужное смещение.
— Маппинг файлов в память. Файл можно отобразить в память и работать с его содержимым как с массивом байтов.
— Блокировка частей файла. Позволяет защитить критические участки файла от одновременной записи.
— Асинхронная работа с файлами.
FileChannel эффективнее потокового ввода-вывода, т. к. избавляет от накладных расходов на создание объектов и буферизацию.
Используется в приложениях, где нужна высокая производительность работы с файлами.
#код
Forwarded from Библиотека питониста | Python, Django, Flask
☁️🧩 ТОП-10 бессерверных фреймворков
Существует множество различных бессерверных фреймворков, каждый из которых предназначен для определенных задач. В этой статье рассмотрим 10 наиболее популярных из них.
Читать статью
Существует множество различных бессерверных фреймворков, каждый из которых предназначен для определенных задач. В этой статье рассмотрим 10 наиболее популярных из них.
Читать статью
Очередной #дайджест по Java:
✍️ Управление общей кодовой базой в микросервисной архитектуре
При большом количестве микросервисов в проекте приходится сталкиваться с тем, что в некоторых из них нужно дублировать один и тот же код, а обнаружив баг в одном месте, искать и исправлять его везде
✍️ C# делегаты изнутри. Можно ли расширить С++ стандарт для поддержки делегатов в стиле C#
Чисто техническая статья, рассматривается тема, которая заявлена в заголовке, плюс разные практические методы, которые в этом будут полезны.
✍️ Микросервисы на Java, Spring Boot и Cloud
Как построить микросервисное приложение с REST API, возвращающее список крутых автомобилей.
✍️ Не используйте в своем коде паттерн Singleton
Паттерн Singleton популярен среди новичков из-за простоты реализации и возможности глобальной обработки состояний. Но стоит ли его использовать?
✍️ Управление общей кодовой базой в микросервисной архитектуре
При большом количестве микросервисов в проекте приходится сталкиваться с тем, что в некоторых из них нужно дублировать один и тот же код, а обнаружив баг в одном месте, искать и исправлять его везде
✍️ C# делегаты изнутри. Можно ли расширить С++ стандарт для поддержки делегатов в стиле C#
Чисто техническая статья, рассматривается тема, которая заявлена в заголовке, плюс разные практические методы, которые в этом будут полезны.
✍️ Микросервисы на Java, Spring Boot и Cloud
Как построить микросервисное приложение с REST API, возвращающее список крутых автомобилей.
✍️ Не используйте в своем коде паттерн Singleton
Паттерн Singleton популярен среди новичков из-за простоты реализации и возможности глобальной обработки состояний. Но стоит ли его использовать?
Как часто вы ездите в офис? Сколько раз в неделю?
#интерактив
#интерактив
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🤖 25 бесплатных AI-инструментов для разработчиков
ИИ-помощники способны заменить GitHub Copilot, проверить код и даже сделать UX/UI-дизайн. Мы сделали подборку.
🟣 Codeuim
Помогает писать код. Можно опробовать в браузере или установить в качестве расширения в популярные IDE. Поддерживает более 70 языков программирования.
🟣 Codiga
Проверит, проанализирует и отрефакторит ваш код.
🟣 GPT Pilot
Создатели инструмента утверждают, что он позволит ускорить процесс разработки в 20 раз. С помощью GPT Pilot можно пошагово разработать собственное приложение.
🟣 Open Interpreter
Альтернатива официальному плагину Code Interpreter от Open AI. Может управлять браузером Chrome для поиска в интернете.
🟣 GPT-Code-Clippy
А это опенсорсный аналог GitHub Copilot на базе GPT-3.
Ещё 20 инструментов можно найти здесь
О других классных новых инструментах мы писали тут
#дайджест
ИИ-помощники способны заменить GitHub Copilot, проверить код и даже сделать UX/UI-дизайн. Мы сделали подборку.
🟣 Codeuim
Помогает писать код. Можно опробовать в браузере или установить в качестве расширения в популярные IDE. Поддерживает более 70 языков программирования.
🟣 Codiga
Проверит, проанализирует и отрефакторит ваш код.
🟣 GPT Pilot
Создатели инструмента утверждают, что он позволит ускорить процесс разработки в 20 раз. С помощью GPT Pilot можно пошагово разработать собственное приложение.
🟣 Open Interpreter
Альтернатива официальному плагину Code Interpreter от Open AI. Может управлять браузером Chrome для поиска в интернете.
🟣 GPT-Code-Clippy
А это опенсорсный аналог GitHub Copilot на базе GPT-3.
Ещё 20 инструментов можно найти здесь
О других классных новых инструментах мы писали тут
#дайджест
Почему нет метода iterator.add() чтобы добавить элементы в коллекцию?
— Iterator предназначен только для итерации по коллекции, а не для модификации коллекции. Добавление элементов через итератор нарушило бы принцип единственной ответственности.
— Многие коллекции, например ArrayList, реализуются на основе массива. Добавление элемента в середину массива — дорогая операция, требующая создания нового массива и копирования всех элементов.
— Если позволить итератору изменять коллекцию, это может привести к непредсказуемому поведению и ошибкам, особенно при работе с многопоточностью.
— Collection уже предоставляет методы add() и remove() для модификации коллекции, поэтому нет необходимости дублировать эту функциональность в Iterator.
#вопросы_с_собеседований
— Iterator предназначен только для итерации по коллекции, а не для модификации коллекции. Добавление элементов через итератор нарушило бы принцип единственной ответственности.
— Многие коллекции, например ArrayList, реализуются на основе массива. Добавление элемента в середину массива — дорогая операция, требующая создания нового массива и копирования всех элементов.
— Если позволить итератору изменять коллекцию, это может привести к непредсказуемому поведению и ошибкам, особенно при работе с многопоточностью.
— Collection уже предоставляет методы add() и remove() для модификации коллекции, поэтому нет необходимости дублировать эту функциональность в Iterator.
#вопросы_с_собеседований
👨💻 9 трендов в найме айтишников в 2023 году
Рассказываем, что интересного происходит в найме IT-специалистов.
По данным Хабр Карьеры, бэкендеры и фронтендеры испытывают трудности с поиском работы — спрос на них уменьшился на 4% и 15% соответственно.
Но сложнее всего сейчас мобильным разработчикам. А все потому, что рынок мобильной разработки рухнул на 24% по сравнению с показателями прошлого года. Но этот тренд в большей степени коснулся стажеров и джунов.
Читать статью
Рассказываем, что интересного происходит в найме IT-специалистов.
По данным Хабр Карьеры, бэкендеры и фронтендеры испытывают трудности с поиском работы — спрос на них уменьшился на 4% и 15% соответственно.
Но сложнее всего сейчас мобильным разработчикам. А все потому, что рынок мобильной разработки рухнул на 24% по сравнению с показателями прошлого года. Но этот тренд в большей степени коснулся стажеров и джунов.
Читать статью
#вопросы_с_собеседования
Как не допустить сериализацию?
Чтобы не допустить автоматическую сериализацию можно переопределить private методы для создания исключительной ситуации NotSerializableException.
private void writeObject(ObjectOutputStream out) throws IOException {
throw new NotSerializableException();
}
private void readObject(ObjectInputStream in) throws IOException {
throw new NotSerializableException();
}
Как не допустить сериализацию?
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
🤔 Очередной #дайджест по Java
🟢 Книга Security in Computing, 6th Edition — искусство компьютерной и информационной безопасности: от приложений и сетей до облаков и криптовалют
🟢 Вещественные числа с плавающей двоичной точкой в .NET и .NET Framework — коллекция ситуаций с этими числами, которые возникают на платформах .NET и .NET Framework в Windows на процессорах семейства x86
🟢 Подкаст c Тимуром Мухитдиновым — разговор о стартапе на Джаве и архитектуре в Букинге
🟢 Насколько быстра Java 21 — автор сравнивает производительность 21 версии по сравнению с 17
🟢 JVM Language Summit 2023 — доклад про виртуальные потоки, про историю, челленджи и про то как ими пользоваться
🟢 Книга Security in Computing, 6th Edition — искусство компьютерной и информационной безопасности: от приложений и сетей до облаков и криптовалют
🟢 Вещественные числа с плавающей двоичной точкой в .NET и .NET Framework — коллекция ситуаций с этими числами, которые возникают на платформах .NET и .NET Framework в Windows на процессорах семейства x86
🟢 Подкаст c Тимуром Мухитдиновым — разговор о стартапе на Джаве и архитектуре в Букинге
🟢 Насколько быстра Java 21 — автор сравнивает производительность 21 версии по сравнению с 17
🟢 JVM Language Summit 2023 — доклад про виртуальные потоки, про историю, челленджи и про то как ими пользоваться