Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Jak wykonujecie UPDATE Mysql


Etaku

Rekomendowane odpowiedzi

Opublikowano

Polecam zapisywać dane do MySQL w tasku co przykładowo 5 minut.

Jeśli Twój plugin jest obiektowy, to możesz do obiektu przypisać zmienną changed.

Zmienną changed ustawiasz na true wtedy, gdy np. jakaś statystyka z obiektu który zapisujesz ulegnie zmianie.

 

 

(twój obiekt)

private boolean changed;
 
public Obiekt(){
    this.changed = false;
}
 
public Boolean changed(){
    return this.changed;
}

public void setChanged(Boolean changed){
    this.changed = changed;
}
 

Task (musi być async) na przykładzie listy

 
List<Obiekt> obiekty = new ArrayList<Obiekt>();
 
@Override
public void run() {
    for(Obiekt o : obiekty){
        if(o.changed(){
            //wysylaj do mysql
            o.setChanged(false);
        }
    }
}
 
Opublikowano

 

Polecam zapisywać dane do MySQL w tasku co przykładowo 5 minut.

Jeśli Twój plugin jest obiektowy, to możesz do obiektu przypisać zmienną changed.

Zmienną changed ustawiasz na true wtedy, gdy np. jakaś statystyka z obiektu który zapisujesz ulegnie zmianie.

 

 

(twój obiekt)

private boolean changed;
 
public Obiekt(){
    this.changed = false;
}
 
public Boolean changed(){
    return this.changed;
}

public void setChanged(Boolean changed){
    this.changed = changed;
}
 

Task (musi być async) na przykładzie listy

 
List<Obiekt> obiekty = new ArrayList<Obiekt>();
 
@Override
public void run() {
    for(Obiekt o : obiekty){
        if(o.changed(){
            //wysylaj do mysql
            o.setChanged(false);
        }
    }
}
 

 

jest będziesz to robiłw innym wątku to wtedy musisz używać synchronized bo wywali ci concuredmodification(czy jak to tam sie pisze) +

co 5minut wrzucanie? pojebało? czyli co zabije typa i mam czekac 5minut by mi się topka updatowała? wtf moim sposobem maksymalnie 1 sekunde czekasz twoim 5minut-.-

Co ja tutaj robie...

Opublikowano

Ale spinacie dupki o nie wiadomo co :> Po co napierdalać kodem przy zerowym obciążeniu. każde korpo ma w dupie taką optymalizacje, która i tak nic nie daje.

private final Executor mysqlExecutor = Executors.newFixedThreadPool(5);

public void updateMySQL(String calePrzygotowaneQuery) {
    mysqlExecutor.execute(() -> mysql.update(calePrzygotowaneQuery)); //statement i zwykly update
}

Rozwiązanie dekrosa, z pstatement.setString(..., ...); jest dobre, ale mało osób z tego korzysta, zwykły przerost formy nad treścią. Błogosławieni Ci co pisali prosty kod, albowiem dla nich jest przeznaczone niebo.

u5niwrQ.png

Opublikowano

 

 

Polecam zapisywać dane do MySQL w tasku co przykładowo 5 minut.

Jeśli Twój plugin jest obiektowy, to możesz do obiektu przypisać zmienną changed.

Zmienną changed ustawiasz na true wtedy, gdy np. jakaś statystyka z obiektu który zapisujesz ulegnie zmianie.

 

 

(twój obiekt)

private boolean changed;
 
public Obiekt(){
    this.changed = false;
}
 
public Boolean changed(){
    return this.changed;
}

public void setChanged(Boolean changed){
    this.changed = changed;
}
 

Task (musi być async) na przykładzie listy

 
List<Obiekt> obiekty = new ArrayList<Obiekt>();
 
@Override
public void run() {
    for(Obiekt o : obiekty){
        if(o.changed(){
            //wysylaj do mysql
            o.setChanged(false);
        }
    }
}
 

 

jest będziesz to robiłw innym wątku to wtedy musisz używać synchronized bo wywali ci concuredmodification(czy jak to tam sie pisze) +

co 5minut wrzucanie? pojebało? czyli co zabije typa i mam czekac 5minut by mi się topka updatowała? wtf moim sposobem maksymalnie 1 sekunde czekasz twoim 5minut-.-

 

 

Nie trzeba używać synchronized :D

gz jeśli topkę pobierasz prosto z mysql zamiast sortować ją kodem

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...