Wypowiedzi
-
NetBeans przygotowuje jary w ten sposób, że dodaje classpath z bibliotekami do manifestu a biblioteki kopiuje do katalogu dist/lib.
W manifest.mf tworzy tego typu wpis:
Class-Path: lib/commons-io-2.0.1.jar
Zakłada więc, że katalog z bibliotekami jest w katalogu bieżącym z którego uruchamiasz aplikację. Umożliwia to odpalanie java -jar bez podawania classpath.
Jeśli uruchomisz swoją aplikację tak:
to zadziała.Zacheusz Siedlecki edytował(a) ten post dnia 10.07.11 o godzinie 20:06
cd "C:\Users\Jero\Documents\NetBeansProjects\Gotowy\Multicast_klient\dist\"
java -jar Multicast_klient.jar
-
Andrzej Borucki:
poprawny link: http://www.tele.pw.edu.pl/~imargasi/generatory.pdf
(..)
Na http://tele.pw.edu.pl/~imargasi/generatory.pdf mamy generator inwersyjny który nie przechodzi testu Maurera dla chi kwadrat.
(nie działa bez www na początku ;) )Zacheusz Siedlecki edytował(a) ten post dnia 09.07.11 o godzinie 14:18
-
no to się zrobił wątek reklamowy ;)
widzę, że chodziło o cos lekkiego w Javie - nikt nie wspomniał o chmurkach
warte polecenia wydaje się Google App Engine - przy małym wykorzystaniu jest darmowy a tak na prawdę to jest zmodyfikowany (rozproszony) Jetty - coś jak Tomcat wspomniany w temacie ;)Zacheusz Siedlecki edytował(a) ten post dnia 09.07.11 o godzinie 13:45
-
-
-
-
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Rolki
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Rolki
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Rolki
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Rolki
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Rolki
-
Aleksander Lech:
ja dopinguję NB
Marek Sybilak:
http://www.oracle.com/technology/community/sun-oracle-...
What are Oracle's plans for NetBeans.org?
NetBeans.org will continue to be available at the usual URL—no changes.
Co oznacza najprawdopodobniej, że można zapomnieć o NetBeans. Nie piszą, że planują rozwijać.
Smutna wiadomość. NetBeans pomimo mniejszej popularności niż Eclipse jest moim zdaniem bardziej dopracowaną i stabilniejszą platformą a przede wszystkim opierającą się w całości na Javie.
Niestety chyba nadeszła wielka era likwidacji projektów ze strony Oracla bo i Kenai też likwidują...
znam zarówno NB jak i eclipse od podszewki.
-
-
Adam Michalski:
Tak - nawet chyba gdzieś w tych 'długich wypowiedziach' napisałem, że MySQL działał wolniej przy większych zbiorach danych. Podobnie Apache Derby.No możliwe, że tu masz rację. Chętnie poznałbym na ten temat opinię specjalistów od Oracle obecnych w tej grupie.
A sprawdzałeś to na mysqlu np.?
-
Michale, dziękuję za Twoją obszerną wypowiedź.
Michał Z.:
Niestety cały czas zakładasz, że źle rozpoznałem problem. Problem rozpoznałem dobrze zwłaszcza, że styk aplikacja - baza danych jest w tym przypadku trywialny a kwestia tego jakie informacje pobierać z bazy bardzo szczegółowo opracowana.
Baza danych to nie czarna skrzynka, czy też samotna wyspa. Można zrobić tak, żeby dane filtrował, łączył kod w Javie, tak, żeby baza będzie śmigała, a problem był z kodem w Javie.Co do samego problemu systemu używającego różnych baz danych... Ogólnie to zwykle robi się DAO, które odseparowuje aplikację od konkretnego sposobu przechowywania danych.
Ogólnie rzecz biorąc tak też jest to zrobione - jest pewna warstwa abstrakcji nad przechowywaniem danych, ale nie w tym rzecz. Jest IoC, możliwość własnej implementacji dla interfejsu i wyspecyfikowanie jej w konfiguracji. Staram się o wyspecyfikowanie przenośności zapytań, żeby tą sprawę ułatwić.
To jest cały mechanizm. Maszyna serwerowa, system operacyjny, silnik bazy danych, zapytania, i cała reszta do UI. To, że długo trwa select - wcale nie musi oznaczać, że z nim jest problem... Wszystkie zadania walczą o te same zasoby - dużo drobnych zapytań może skutecznie przybić bazę, a optymalizacja tych, co długo trwają wiele nie zmieni.
Ale w przypadku gdy to jest hurtownia danych mająca (w bardzo dużym uogólnieniu) takie fazy działania:
1. Ładowanie danych, różne zapytania, powolne inserty itd.
2. Eksploracja danych - baza w trybie tylko do odczytu i tylko jeden typ zapytań co zostało podkreślone w tym temacie. Nie ma żadnych dodatkowych zapytań o których piszesz - nie trzeba tu nic dodawać. Sprawa wygląda tak jak przedstawiłem.Może w ten sposób: Jak odpalę serwer aplikacji na tym samym serwerze co bazę danych to muszę rozpatrywać bazę i serwer jako całość. Tak wiem - oczywiste. Tak samo nie da się mówić o bazie danych, bez mówienia o systemie operacyjnym, choć w przypadku Oracle'a... jest to stosunkowo łatwe. Więcej - to, że serwer aplikacji chodzi obok jedynie komplikuje sytuację, ale jej nie zmienia. Kwestia tylko polega na tym, gdzie jest kreska określająca interfejs który ma być optymalizowany. Czasem nie da się inaczej, bo system jest zamknięty, ale tutaj?
Tutaj właśnie "da się" określić kreskę. Jest to jeden z tych nielicznych przypadków ;)
Stawianie sprawy w ten sposób przypomina mi złe podejście korporacyjne (ponoć bywa i dobre ;). Polega to na tym, że jest armia ludzi, którzy coś tam robią - każdy ma swoje poletko i tylko ono go interesuje. Potem tylko przerzucają kamyczki między poletkami i wszystko stoi w miejscu. Każdy z nich jest zły, sfrustrowany, bo "ORM to jest zło" i tak dalej. Tak to jest nad-interpretacja, ale warto się zastanowić co się robi.
Czasem takie podejście okazuje się bardzo dobre :] Trzeba tylko wtedy uwierzyć w kompetencje drugiej osoby i trochę zaufać, że wykonuje swój element dobrze. Patologie z "przerzucaniem kamyczków" pewnie się zdarzają, ale co innego gdy wykonawcom zależy nie na wykonaniu jednostkowego zadania, lecz na całości.
W tym przypadku na prawdę nie ma sensu, żebym przedstawiał zastosowane algorytmy dataminingowe zawierające bardzo zaawansowaną kryptografię. Sama implementacja ma ponad 30k lini kodu w Javie co w jakimś tam stopniu oddaje jej złożoność. Na szczęście zdołałem wyizolować problem z bazą danych tak, żeby nie musieć przedstawiać zbędnych szczegółów.
OK. Czyli jest tak, że na osobnej maszynie z jednym dyskiem 7200 i 2GB ramu stoi baza danych. Jak wygląda sieć? Czy nie jest wąskim gardłem, czy to jest IPv4, bo jak IPv6 to proszę wziąć pod uwagę narzut na nagłówki.
Problem nie leży w sieci. Baza danych jest podłączona poprzez LAN o przepustowości 80.0 Mbits/sec.
Czyli projekt zakłada wrzucenie wszystkiego do jednego worka, i dłubanie się z każdą konkretną bazą - osobno? Ja bym zrobił tak, że algorytmy są serwisami, każdy ma jakieś swoje własne parametry, do tego dao. Na koniec zrobiłbym serwis testujący, który jako pole ma serwis kodujący. Wszystko da się zapisać w kontekście springa.
A skąd takie stwierdzenie, że zakłada? To co piszesz jest dosyć oczywiste i mniej więcej tak to wygląda w zaimplementowanym systemie.
Oracle to kobyła - to, że jest masa dokumentacji to nie przypadek. To prawda, że ma ogromne możliwości optymalizacji. Tyle, że na 2GB ramu i jednym dysku 7200... ja bym minimalizował straty a nie pchał się w stronę używania dużych narzędzi.
No możliwe, że tu masz rację. Chętnie poznałbym na ten temat opinię specjalistów od Oracle obecnych w tej grupie.
Celem jest umieszczenie czegoś w dokumentacji, czy zrobienie optymalnego rozwiązania... To co piszę idzie w stronę tego pierwszego.
Przez to, że właśnie istnieją różne implementacje odpowiedzialne za przechowywanie danych nie muszę wybierać między tym i tym ;)
A no właśnie trzeba wiedzieć gdzie jest wąskie gardło - dla całego systemu. Jak wąskim gardłem jest io dla serwera na którym stoi baza danych - to można spróbować. Jak nie - to problem jest w innym miejscu. Optymalizacja zapytań jest ok, ale z każdego silnika trzeba korzystać tak jak autorzy to przewidzieli. Inaczej... nie będzie śmigać.
No i ja właśnie wiem gdzie to wąskie gardło jest ;) Dlatego prosiłem o pomoc przy optymalizacji tego konkretnego zapytania.Nie wygląda to dobrze, ale jak rozumiem to głównie odczyt? Czy każde przeliczenie powoduje zwrotny strzał w bazę...
Tak jak parę razy już pisałem. Rozmawiamy o fazie działania całości w której baza pracuje w trybie tylko do odczytu i zadawane są jedynie omawiane zapytania.
Rozumiem, że system stoi, ma się +/- dobrze.
Tak. Wydajność całości po tym jak uzyskałem pomoc w optymalizacji tych zapytań wzrosła do dopuszczalnego poziomu i system działa zgodnie z oczekiwaniami. Potwierdza to, że problem został dobrze rozpoznany i optymalizacja bazy danych bez wgłębiania się w szczegóły implementacji systemu dała wymierne rezultaty.Zwykle część rzeczy piszę dla porządku / uspójnienia.
Dziękuję za komentarze, wszystkie są dla mnie bardzo cenne niemniej jednak trochę odbiegłeś od tematu :) Mam nadzieję, że wyczerpująco wyjaśniłem dlaczego optymalizacja samej bazy i samych zapytań w tym przypadku jest rozwiązaniem właściwym.
-
Błażej Kępa:
Dokładnie tak - gratulacje :]
Moim zdaniem zwrócone będzie "1 a". Obiekt klasy B jest utworzony w momencie ładowania klas, w bloku static. Wtedy ustawiona jest wartość pola a = "a" (blok inicjalizacyjny).Błażej Kępa:
Zgadza się :)
Operacja jest bitowa i jeśli pole a == null to przejdzie do następnego porównania (a.length() == 1) które zaskutkuje NullPointerException'em.Piotr Rusoł:
Błażej był pierwszy i prawidłowo wyjaśnił.
Odpowiedź brzmi 1 a.Piotr Rusoł:
Nie ma żadnego przesłaniania - jest tylko jedna zmienna statyczna.
Dlatego, że w klasie B nie nastąpiło przesłonięcie zmiennej "a" z klasy nadrzędnej.Piotr Rusoł:
Kruczek z operatorem wyjaśnił wyżej Błażej i ma rację.
Operatory są jak najbardziej ok.
Piotr Rusoł:
Tak, ale wtedy zadanie nie byłoby już takie zakręcone :D
Co innego by było gdy w klasie B było:
static String a = "a";
-
Jolanta Łukawska:
Chodzi Wam o to:
To co myślisz, że się nie skompiluje to chyba coś w rodzaju konstruktora statycznego ;){to jest zwykły blok inicjalizacyjny.
a = "a";
}A haczyk być może jest w operacji bitowej w warunku, bo ta operacja zapewne powinna wykonać się jako pierwsza, sprawić, że warunek nie będzie spełniony i wbrew oczekiwaniom wyświetlić:
To nie jest w pełni prawidłowa odpowiedź :)Zacheusz Siedlecki edytował(a) ten post dnia 09.01.10 o godzinie 23:00
2 a
Ciężko mi jednak dojść, jakby mógł być ten warunek sprawdzany, więc pewnie się mylę ;).
-
Piotr Rusoł:
Kod jest poprawny :) Nie mówię oczywiście o stylu bo z tym masz rację ale to w końcu zadanie ;) Klasy są w tym samym pakiecie (domyślnym) - nie rozumiem dlaczego miałoby się nie skompilować.Zacheusz Siedlecki edytował(a) ten post dnia 09.01.10 o godzinie 22:42
To się nawet nie skompiluje :D
Jeśli już to A.a = "a" i to jeszcze w jakieś metodzie (setter, konstruktor, etc.)
-
No to teraz coś prostego.
spróbujcie uczciwie bez uruchamiania ;) Uwaga na zmyłki ;)Zacheusz Siedlecki edytował(a) ten post dnia 09.01.10 o godzinie 22:01
public class A {
static String a;
static {
new B();
}
}
public class B extends A {
{
a = "a";
}
public static void main(String[] arg) {
if (a != null & a.length() == 1) {
System.out.println("1 " + a);
} else {
System.out.println("2 " + a);
}
}
}