Задать вопрос
  • Чем MSSQL занимает всю оперативную память?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно если хост отдается под сервер баз данных - то он отдается целиком и полностью.
    Как - женщина в браке. Не может быть варианта использования наполовину. Типа
    веб-сервер + еще БД.

    Оно понятно что Express - это такой пробник. Но этот пробник все равно в перспективе перерастет
    в БД. И зачем тебе размениваться на мелочах?

    База всегда брала столько памяти сколько есть. Потому вто буферный кеш БД или кеш блоков
    (его по разному называют) играет роль ускорителя для таблиц и индексов. Грубо говоря
    чем больше блоков в кеше - тем быстрее идет интеракция с data-files.
    Ответ написан
    1 комментарий
  • Как автоматизировать сборку зависимостей программы?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Смотрите в сторону любого менеджера зависимостей вроде Conan или vcpkg. У конана точно есть интеграция с CMake. Только учтите, что много чего вам всё равно придётся писать руками. Управление зависимостями -- это головная боль в C++, т.к. язык очень старый. Обычно у всех компаний есть свои велосипеды для этого.

    С помощью связки CMake + Conan реально получить то, что вы хотите.

    Следующим шагом будет создание установщика для уже скомпилированной программы, который будет устанавливать программу на компьютер пользователя. Тут всё ещё хуже на самом деле :) Но это уже другой вопрос.
    Ответ написан
    2 комментария
  • Как защитить postgresql в контейнере докера?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Уберите из docker-compose
    "ports:
    - "5400:5432"
    и порт не будет публиковаться наружу, будет доступен только на внутреннем ip адресе вашего контейнера docker.
    Для подключения или используйте внутренние имена контейнеров, или создайте отдельную подсеть docker (подсеть по умолчанию не дает выдавать контейнерам статические ip адреса) и переведите оба контейнера на ее использование с выдачей статических ip адресов.
    Ответ написан
    1 комментарий
  • Нужен ли Сетевой уровень в локальной сети.?

    "уровни" в сетевой модели - это просто способ классификации протоколов в сетевом стеке.
    В рамках одной сети возможна маршрутизация по физическим MAC-адресам (именно на них работает протокол Ethernet, например, который в модели OSI считается протоколом Канального уровня).

    В рамках нескольких сетей адресация уже идёт по IP-адресам и используется уже IP-протокол.

    То что для адресации между сетями необходим какой-то протокол сетевого уровня - не значит, что в локальной сети без него можно обойтись.

    Протоколы уровней выше должны обязательно основываться на чём-то. Тот же TCP и UDP, например, обязательно строятся поверх IP-протокола, который принято считать протоколом сетевого уровня. => если ты хочешь в своей локальной сети использовать TCP, UDP или какой-то протокол, который строится поверх них (например HTTP, LDAP, IPP), то тебе обязательно придётся использовать протокол канального уровня в лице IP.

    Есть протоколы, которые вполне могут работать и без IP, но дома ты их у себя врядли увидишь)
    Ответ написан
    Комментировать
  • Как работает HashMap с многопоточностью?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Недетерминировано работает. Без синхронизации между потоками у нас нет гарантий последовательность и видимости, так что даже без одновременного вызова мутирующих методов есть шанс сломать инвариант.
    Ответ написан
    6 комментариев
  • Как объединить сеть двух зданий?

    Bermut
    @Bermut
    Жертва домашней лаборатории
    Товарищ, у меня вопрос, кто из выше стоящих людей поставил тебя на эту задачу? У тебя отсутствуют даже базовые познания сети.
    Ну а так, подключаем первый коммутатор ко второму, назначаем на интерфейсы к которым подключен кабель ip адреса из одной подсети(можно /31), и на одном из коммутаторов пишем маршрут до подсети/подсетей, которые используются во втором здании.

    Но, опять таки, в данном случае отказаустойчивость нулевая, и при таком маштабе сети стоило бы нанять системного администратора, которое бы привел все в божеский вид.
    Ответ написан
    1 комментарий
  • Как исправить ошибку - release version 15 not supported?

    @Koshkin_I Автор вопроса
    ))) Все решил)) В компиляторе тоже надо поставит 13 версию.
    Ответ написан
    1 комментарий
  • @Bean в @Configuration и @Component. Разница?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Обычно с помощью @Bean создают объекты, которые требуют дополнительной настройки. Часто это какие-то компоненты из библиотек, например, http клиенты, пулы подключений и т.д.
    @Component и @Service используют обычно, когда ничего особенного при создании объекта не требуется.
    Ответ написан
    Комментировать
  • Docker соединяет frontend и backend?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Можно, но не нужно.
    Суть докера в том, чтобы все сервисы были отдельно. Соответственно, отдельный nginx, back, db, front и т.д.
    Ответ написан
    Комментировать
  • Docker засоряет папку Temp вплоть до 80 гб, что делать?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    docker system prune --all
    Это должно помочь
    Ответ написан
    Комментировать
  • Как обойти блокировку заблокированных сервисов в Туркменистане?

    @Drno
    Переехать. Туркменистан продолжает блокировать все VPN сервера, которые находит. И будет продолжать это делать, пока не останется только "белый список" адресов \ сайтов.
    Т.к. там авторитарное правительство, которому плевать на своё население. Они не заинтересованы чтобы их население вышло в интернет, и поняло насколько у них всё плохо))

    Поэтому либо находить новые сервера \ VPN сервисы, либо переезд
    Ответ написан
    Комментировать
  • Стоит ли брать Steam Deck как основной игровой девайс?

    Зависит от того, во что ты играешь.
    Steam deck - действительно крутой девайс, но:
    1. Никаких соревновательных игр на нём нет, кроме CS и доты. Для игр в них тебе нужен будет монитор, клавиатура, и мышь.
    2. Не все игры будут работать на нём.
    3. В тяжёлые игры будет играть тяжело. Например вот недавно попробовал поиграть в BG3 - в принципе запускается и играется, но сильно греется.

    По тому, если у тебя нет ПК - лучше попробуй собрать ПК, если для тебя портативность не является решающим фактором.
    Также можешь посмотреть на switch - там есть мутиплеер и есть свои эксклюзивы.
    Ответ написан
    1 комментарий
  • Расскажите, что это за ошибка и как ее исправить?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Похоже, у вас версия java до 17 :

    ...
    
        /**
         * The modifier {@code sealed}
         * @since 17
         */
        SEALED,
    
    
    ...
    Ответ написан
    2 комментария
  • Как изменить структуру кода?

    vabka
    @vabka Куратор тега Rust
    Нет, нельзя. Модули в Rust оперируют функциями/типами/трейтами, но не отдельными кусками кода.
    Ты можешь вынести функции f1 и f2 в отдельные файлы:

    main.rs
    mod m01;
    mod m02;
    mod m03;
    
    fn main() {
        m01::f1();
        m02::f2();
        let (i, p) = m03::f3();
        println!("i = {:?}", i);
        println!("p = {:?}", p);
    }


    m01.rs
    pub fn f1() {
     let num: u8 = 12;
     println!("num = {:?}", num);
    }


    m03.rs
    pub fn f2() {
     let s: String = "abc".to_string();
     println!("s = {:?}", s);
    }


    В случае m03 ты можешь попробовать сделать функцию, которая будет возвращать значения переменных i и p:
    pub fn f3() -> (u8, String) {
      let i: u8 = 88;
      let p: String = "xyz".to_string();
      (i, p)
    }


    PS: Я уже было хотел предложить макрос вида:
    macro_rules! f4 {
      () => {
        let i: u8 = 88;
        let p: String = "xyz".to_string();
      }
    }

    Но он работать не будет, ибо гигиена.

    Но можно сделать так:
    macro_rules! f4 {
      ($a: ident, $b: ident) => {
        let $a: u8 = 88;
        let $b: String = "xyz".to_string();
      }
    }
    
    fn main() {
        f4!(i, p);
        println!("{} {}", i, p);
    }


    PPS: ну и ещё есть макрос include!, который буквально решает твою задачу - вставить кусок кода из файла, но его я не советую использовать.
    Ответ написан
    2 комментария
  • Как обойти размер файла и хеш? Как сделать чит?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Чтоб подогнать файл под хеш надо сначала знать алгоритм хеширования.

    А вообще - ты мелкий хулиган :) Найди себе нормальную работу лучше.
    Ответ написан
    4 комментария
  • Оператор моб связи фиксирует местоположение абонента даже если не совершается звонков?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Если брать абонентов А и Б то мобильный оператов всегда знает их положение с точностью
    до базовой станции. В противном случае А не смог бы дозвониться до Б. Радиус действия станции
    может быть от сотен метров до километров. Поэтому о точном местоположении абонента говорить сложно.
    Ответ написан
    Комментировать
  • Вылеты, артефакты, фризы системы. Виноват нищенский БП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    265WATT - это мало для современных ПК. Воспользуйся онлайн-калькуляторами
    для расчета мощности. Там легко. Укажешь свою конфигурацию и все компоненты
    и приложение покажет сколько тебе надо.

    И возьми с запасом хотя-б 15% для других устройств.
    Ответ написан
    1 комментарий
  • Для чего нужна аннотация @Serializable в либах Java/Kotlin?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С точки зрения Java language, аннотации ничего не делают. Они - как каменты в коде. Но они могут быть подсказками для фреймворков которые в compile time, classloader или runtime могут что-то выполнить над кодом. 99%
    это какие-то ORM/JSon подказки которые разъясняют фреймворку что делать. Например @Table(name="emp")
    подсказка JPA то класс относится к таблице emp.

    Ваш вопрос про либы Java/Kotlin слишком общий. Ничего конкретного нельзя сказать. Но по отношению к
    Serializable, можно предположить что это гарантия что класс можно сериализовать во внешнюю память
    (оперативная или диск) и это не нарушит никакой бизнес логики. Например это DTO которая полностью
    самодостаточная. Не все сущности вообще реально сохранить. Некоторые сущности - как орграф опутывают
    всю память Java и сохранять их накладно. Как корневой объект хипа. Дешевле дампнуть всю память чем
    сохранять такие объекты поштучно. Некоторые - имеют связи с внешними ресурсами Files/Sockets и вне контекста они не имеют смысла. Есть ключевые слова языка (transient) которые запрещают сериализацию для полей.
    Есть также проблема версионности для Serializable. Сохраненная структура не трекает ваши изменения
    по коду уже после того как вы что-то сохранили. Грубо говоря это не JSON. Если вставили новое поле - можете
    старый файл и не прочитать. В качестве маркера проблемы там заводят специальное поле типа versionId или
    что-то такое. Просто для детектирования.

    Если вы хотите иметь тотальный контроль над сохранением - то определяйте Externalizable и там будут 2
    метода в которых вы контролируете Output/Input streams и сами пишете что сохранять и читать. А еще
    лучше брать библиотеки Kryo/Protobuf/Avro e.t.c. У них еще и есть оптимизации по скорости и по сжатию.
    Вы к этому придете эволюционным путем если будете писать систему где сохранение во вне - важно.

    Сериализация во внешнюю память это огромная проблема когда мы пытаемся подружить разные
    технологии (32-64 бит целые числа или разный порядок байт в машинном слове). Даже простое
    сохранение даты или строки может быть ошибочным если вы сохранили в Java а пытаетесь читать в C++.
    Нужна 100% бинарная совместимость всех структур. Вот библиотеки Протобуф и Авро
    как раз для этого создавались.
    Ответ написан
    Комментировать
  • Чем отличается ForkJoinPool.execute() от ForkJoinPool.submit()?

    submit возвращает Future, по которой можно отследить статус задачи, а execute - нет.

    Это вроде бы должно быть очевидно из их описания
    Ответ написан
    Комментировать
  • Куда положить dump.sql для автоподнятия БД с нужного дампа Docker?

    @Senture Автор вопроса
    Разобрался.

    Вот мой код:
    version: "2.15.1"
    
    services:
      postgres:
        image: postgres:13.3
        environment:
          POSTGRES_DB: "username"
          POSTGRES_USER: "username"
          POSTGRES_PASSWORD: "username"
          PGDATA: "/var/lib/postgresql/data/pgdata"
        volumes:
          - ./Initer:/docker-entrypoint-initdb.d
          - usr-data:/var/lib/postgresql/data
        ports:
          - "5437:5432"
    
    volumes:
      usr-data:


    В этом случае, нужно создать директорию Initer в корне (где лежит docker-compose.yml) и в нее положить необходимый dump.sql и все работает.

    Важно!: Если папку не создать, она появится автоматически после docker-compose up. Но будет естественно пустой, и даже если сделать down, в папку положить дамп, и поднять приложение (docker-compose up) бэкап уже не накатится, т.к. БД уже была проинициализирована ранее и никакие изменения к ней применяться не будут.

    Прошу прощения за такие глупые вопросы :D
    Ответ написан
    6 комментариев