Таким образом появится возможность получить неограниченное количество экземпляров класса, что противоречит идее синглтона.
new Singleton()
более одного разаpublic Singleton() {
if (INSTANCE == null) {
INSTANCE = new Singleton();
}
return INSTANCE;
}
getInstance()
путемSingleton single = Singleton.getInstance();
Singleton single = new Singleton ()
? getInstance()
и по какой логике тут при создании нового экземпляра мы получаем ссылку на уже созданный?public class Singleton {
private static Singleton instance;
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
return
, а без него я не могу понять, как нам возвращать ссылку на другой объект, а не создавать новыйpublic class Singleton {
private static Singleton INSTANCE;
public Singleton Singleton() {
if (INSTANCE == null) {
INSTANCE = new Singleton();
}
return INSTANCE;
}
}
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;
}
}
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;
}
}
Buffer
String
, который внес некую дополнительную ясность к вашим словам (хотя из понятного была только первая половина доклада, до второй я видимо еще мал).BufferedReader buffer = new BufferedReader(new InputStreamReader(client.getInputStream()));
buffer
получить данные в виде строки, например, buffer.toString();
while (!(line = buffer.readLine()).isBlank())
buffer
, куда мы записали все наши байтыbuffer.readLine()
buffer
очищен и не занимает больше памятиStringBuilder requestBuilder = new StringBuilder();
String line;
while (!(line = buffer.readLine()).isBlank()) {
requestBuilder.append(line + "\r\n");
}
ByteBuffer byteBuffer = ByteBuffer.allocate((int) channel.size());
FileChannel channel = randomAccessFile.getChannel();
readLine()
, а hasRemaining()
while (byteBuffer.hasRemaining()) {
builder.append((char) byteBuffer.get());
}
/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
jdbc:postgresql:database
jdbc:postgresql:/
jdbc:postgresql://host/database
jdbc:postgresql://host/
jdbc:postgresql://host:port/database
jdbc:postgresql://host:port/
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',
javac
java
файл в нем пытаюсь написать сервер, который может к БД подключитьсяVSC
выбрать функцию - открыть джава проект и выбрать папку, где находится файл (файл jar постгреса в этой же папки лежит).Server has been started
DB exception: java.sql.SQLException: No suitable driver found for jdbc:postgresql:postgres
Server.java
добавить возможность видеть этот драйвер
getInstance
не метод объекта и работа с таким классом происходит через наш созданный метод?Singleton single = Singleton.getInstance();