Задать вопрос
  • По какой логике работает метод getInstance?

    @MishaXXL Автор вопроса
    Dmitry Roo, так в итоге getInstanceне метод объекта и работа с таким классом происходит через наш созданный метод?
    Singleton single = Singleton.getInstance();
    Написано
  • По какой логике работает метод getInstance?

    @MishaXXL Автор вопроса
    Таким образом появится возможность получить неограниченное количество экземпляров класса, что противоречит идее синглтона.

    Почему в Java не работает данная конструкция?
    При таком подходе мы бы возвращали не новый объект, а ссылку на уже созданный, если вызывали бы new Singleton() более одного раза

    public Singleton() {
        if (INSTANCE == null) {
          INSTANCE = new Singleton();
        }
        return INSTANCE;
    }


    Т.е. в Java синглтон реализуется через сторонний метод и обращение к этому классу происходит через метод getInstance() путем
    Singleton single = Singleton.getInstance();

    а не Singleton single = new Singleton ()?
    Написано
  • Какая зависимость в Java приложении к подключению БД?

    @MishaXXL Автор вопроса
    mayton2019,так у меня по этой статье и был изначально вопрос
    Что за метод getInstance() и по какой логике тут при создании нового экземпляра мы получаем ссылку на уже созданный?

    public class Singleton {
    	private static Singleton instance;
    	
    	public static synchronized Singleton getInstance() {
    		if (instance == null) {
    			instance = new Singleton();
    		}
    		return instance;
    	}
    }


    65a2533640952727125075.png
    Написано
  • Какая зависимость в Java приложении к подключению БД?

    @MishaXXL Автор вопроса
    mayton2019, что это поле хранится в памяти самого класса и при обращении к нему содержит текущее его значение.
    Это намек на то, что просто сделать все поля статическими без необходимости создавать экземпляр класса, а обращаться непосредственно к классу?
    Написано
  • Какая зависимость в Java приложении к подключению БД?

    @MishaXXL Автор вопроса
    mayton2019, так я про этот момент и уточняю, как в конструкторе всегда возвращать ссылку на объект, а не создавать новый?
    Я не встречал еще примеры, где мы в конструкторе делаем return, а без него я не могу понять, как нам возвращать ссылку на другой объект, а не создавать новый

    На подобии
    public class Singleton {
      private static Singleton INSTANCE;
      public Singleton Singleton() {
         if (INSTANCE == null) {
            INSTANCE = new Singleton();
         }
         return INSTANCE;
      }
    }
    Написано
  • Какая зависимость в Java приложении к подключению БД?

    @MishaXXL Автор вопроса
    Орхан Гасанлы, еще больше запутали )
    Как реализовать конструктор таким образом, чтобы он всегда возвращал ссылку на INSTANCE?
    public class Singleton {
      private static Singleton INSTANCE;
      private Singleton() {}
    }


    В моем понимании это должно было выглядеть так, но в примерах другая реализация
    public class Singleton {
      private static Singleton INSTANCE;
      public Singleton Singleton() {
         if (INSTANCE == null) {
            INSTANCE = new Singleton();
         }
         return INSTANCE;
      }
    }
    Написано
  • Какая зависимость в Java приложении к подключению БД?

    @MishaXXL Автор вопроса
    Подскажи пожалуйста, метод getInstance() это метод Object?
    Из всех статей примеры одинаково такие, но поиск по getInstance() ни к чему не приводит.

    public class Singleton {
      private static Singleton INSTANCE;
    
      private Singleton() {}
    
      public static Singleton getInstance() {
        if (INSTANCE == null) {
          INSTANCE = new Singleton();
        }
        return INSTANCE;
      }
    }


    Немного не укладывается, как работает эта конструкция
    При каждом new Singleton(), что происходит?

    В моем понимании, чтобы у нас заработала логика ссылки на один объект, то это должно выглядеть примерно так, где при создании нового экземпляра мы создавали первый или возвращали ссылку на уже созданный, но по изучению джавы я еще не встречал, чтобы конструктор у нас что-то возвращал путем return

    public class Singleton {
      private static Singleton INSTANCE;
    
      public Singleton Singleton() {
         if (INSTANCE == null) {
            INSTANCE = new Singleton();
         }
         return INSTANCE;
      }
    }
    Написано
  • В каком контексте значение класса String является неизменяемым в отличии от StringBuilder?

    @MishaXXL Автор вопроса
    Сергей Горностаев, подскажи пожалуйста хороший актуальный учебник, чтобы из основ Java плавно закончить полным пониманием работы Web серверов.
    Написано
  • В каком контексте значение класса String является неизменяемым в отличии от StringBuilder?

    @MishaXXL Автор вопроса
    Сергей Горностаев, я тысячекратно извиняюсь, не сочтите за дерзость.

    Подскажите пожалуйста хороший материал про Buffer
    До этого вы давали ссылку на доклад о String, который внес некую дополнительную ясность к вашим словам (хотя из понятного была только первая половина доклада, до второй я видимо еще мал).

    Решив обработать запрос на сервере, столкнулся с проблемой понимания буфера на низком уровне

    Когда я какой-то магией получил данные в буфер, было всё в порядке
    BufferedReader buffer = new BufferedReader(new InputStreamReader(client.getInputStream()));


    После я решил, что наверно набором данных типа буфер просто манипулировать
    Например, получить из байт, которые хранятся в нашем буфере, как полученные данные
    В строку

    Но следующие строки кода из статьи меня вогнали в ступор
    Со стрингбилдером мы разобрались, это уже свой парень
    Но почему я просто не могу из переменной bufferполучить данные в виде строки, например, buffer.toString();

    К чему эта сложность с циклом, да еще чтением и проверкой
    while (!(line = buffer.readLine()).isBlank())

    Почему, получив, как я понял
    ссылку на память buffer, куда мы записали все наши байты
    я должен каждую итерацию делать buffer.readLine()
    Причем у нас цикл вроде должен быть бесконечным в данном случае, а он, как будто каждую итерацию стирает данные из нашего buffer и к последней итерации у нас bufferочищен и не занимает больше памяти

    StringBuilder requestBuilder = new StringBuilder();
    String line;
    while (!(line = buffer.readLine()).isBlank()) {
        requestBuilder.append(line + "\r\n");
    }


    В попытках найти ответ, попалась статья
    https://javarush.com/quests/lectures/jru.module1.l...

    Где буферу нужно всегда определять длину
    ByteBuffer byteBuffer = ByteBuffer.allocate((int) channel.size());


    А длина, как я понял
    FileChannel channel = randomAccessFile.getChannel();

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

    Но дальше обработка буфера происходит уже другим образом
    Уже не readLine(), а hasRemaining()
    Причем так же непонятно, каким образом у нас цикл сам завершится без каких-либо сторонних флагов

    while (byteBuffer.hasRemaining()) {
           builder.append((char) byteBuffer.get());
    }


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

    Помогите пожалуйста с разьяснением ситуации.
    Написано
  • Как решить проблему No suitable driver found for jdbc:postgresql:postgres при попытке подключиться к БД?

    @MishaXXL Автор вопроса
    И почему Mavenне смог мне найти этот пакет Postgres?
    Думал через него будет проще
    Как в нем решается эта проблема?
    Или просто нужно другой доступный sqlпакет для него подобрать из его списка?
    Написано
  • Как решить проблему No suitable driver found for jdbc:postgresql:postgres при попытке подключиться к БД?

    @MishaXXL Автор вопроса
    Подскажи пожалуйста, я могу как-то запуск файла сделать универсальным?
    Что бы не было привязки к /home/cat/Apps/java-test-server и любой, кто скачает с гита, мог без проблем запустить из любой папки

    java -cp "/home/cat/Apps/java-test-server/postgresql-42.7.1.jar:/home/cat/Apps/java-test-server" Server
    Написано
  • Как решить проблему No suitable driver found for jdbc:postgresql:postgres при попытке подключиться к БД?

    @MishaXXL Автор вопроса
    mayton2019, спасибо огромное, заработало!

    В доке про инициализацию был так же выбор только с названием БД
    Решил пойти самым коротким путем )
    https://jdbc.postgresql.org/documentation/use/

    jdbc:postgresql:database
    jdbc:postgresql:/
    jdbc:postgresql://host/database
    jdbc:postgresql://host/
    jdbc:postgresql://host:port/database
    jdbc:postgresql://host:port/
    Написано
  • Как решить проблему No suitable driver found for jdbc:postgresql:postgres при попытке подключиться к БД?

    @MishaXXL Автор вопроса
    mayton2019, подскажи, в чем тут проблема?

    Запустил командой

    java -cp "/home/cat/Apps/java-test-server/postgresql-42.7.1.jar:/home/cat/Apps/java-test-server" Server


    try {
         String db = "jdbc:postgresql:postgres";
    
         Connection conn = DriverManager.getConnection(db, "postgres", "postgres");
    }
    catch(Exception ex) {
         System.out.println("DB exception: " + ex);
    }


    Запускается, но почему-то подключение не работает

    Server has been started
    DB exception: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"


    БД запущенна, другой сервер к ней нормально подключается по тем же настройкам
    database: 'postgres', 
    user: 'postgres',
    password: 'postgres',


    БД запущенна через докер
    Написано
  • Как решить проблему No suitable driver found for jdbc:postgresql:postgres при попытке подключиться к БД?

    @MishaXXL Автор вопроса
    Почему мавен не видит этого пакета или в него тоже он только через jar как-то устанавливается?
    659fb21b3dc4b843265769.png
    659fb26248559293000698.png
    Написано
  • Как решить проблему No suitable driver found for jdbc:postgresql:postgres при попытке подключиться к БД?

    @MishaXXL Автор вопроса
    mayton2019, компилирую с помощью javac
    Я просто создал javaфайл в нем пытаюсь написать сервер, который может к БД подключиться
    Так это выглядит, если в VSCвыбрать функцию - открыть джава проект и выбрать папку, где находится файл (файл jar постгреса в этой же папки лежит).

    659efda546a09632921028.png

    Server has been started
    DB exception: java.sql.SQLException: No suitable driver found for jdbc:postgresql:postgres


    По сути я хочу в непроектный одиночный файл Server.java добавить возможность видеть этот драйвер
    Написано
  • Как решить проблему No suitable driver found for jdbc:postgresql:postgres при попытке подключиться к БД?

    @MishaXXL Автор вопроса
    Я так понял, мне нужно скачать файл
    postgresql-42.7.1.jar
    После просто указать к нему путь в
    String db = "jdbc:postgresql:file_path";
    Верно?

    Просто данная запись не работает
    String db = "jdbc:postgresql:/home/cat/Apps/java-test-server/postgresql-42.7.1";
    Написано
  • Как происходит обмен с БД данными в Lineage2?

    @MishaXXL Автор вопроса
    Saboteur, случайно не знаешь, есть ли какой-то опен сорс сервер л2 на джаве, который многие берут за основу своего?
    Написано
  • Как происходит обмен с БД данными в Lineage2?

    @MishaXXL Автор вопроса
    Евгений Шатунов, т.е. ты при желании мог на любом сервере себе шмот нарисовать? )
    Написано