Ist meine Subnetting Aufgabe richtig gelöst und gedacht?

Hallo :),

ich habe folgende Aufgabe zum Thema Subnetting und meine auch diese richtig gelöst zu haben doch im weiteren Verlauf war ich zunehmend verwirrt und frage mich, ob ich richtig gedacht habe. Die Aufgabe ist folgende:

Ein Firmennetz mit der Basisadresse 192.168.45.0/24 soll in 4 Teilnetze aufgeteilt werden.

/ Ich habe die Aufgabe nun so gelöst und die 4 Teilnetze (TN) folgendermaßen notiert:

Formel: 2n >= 4? 22 >= 4, dementsprechend + 2 Netzbits in der Subnetzmaske 

11111111.11111111.11111111.11000000bin = 255.255.255.192dez (neue Subnetzmaske)

TN1: IP von 192.168.45.192 bis 192.168.45.255  ("11" als jene letzten beiden Netzbits)

TN2: IP von 192.168.45.0 bis 192.168.45.63 („00“ als jene letzten beiden Netzbits)

TN3: IP von 192.168.45.128 bis 192.168.45.191 („10“ als jene letzten beiden Netzbits)

TN4: IP von 192.168.45.64 bis 192.168.45.127 („01“ als jene letzten beiden Netzbits)

Wie viel Hosts sind jeweils in einem Teilnetz möglich?

26 - 2 = 62 frei verfügbare Hosts möglich / Nun die erste Frage: sind in jedem TN wirklich 62 freie Hosts, weil bei TN3 und 4 habe ich ja bspw. 7 Nullen, aber ich habe diese als Netzbits bei der Formel außen vor gelassen, ist das richtig? Des Weiteren ist TN4 ebenso möglich? Weil ich ja damit eigentlich auch gegen die Regel verstoße, dass man die Einserfolge in der Netzmaske nicht unterbrechen darf und außerdem stellen die 0 ja eigentlich sonst immer die Hostbits dar und die 1en die Netzbits. Aber anders geht es ja nicht als das ich diese 01 und 10 beide als Netzbits wahrnehme und auch die Regel der ununterbrochenen 1er Folge nicht beachte oder?

Danke für eure Aufmerksamkeit, falls ihr bis hier gelesen habt und ich bedanke mich bereits im Voraus für jegliche Antworten.

Computer, Netzwerk, IT, Fachinformatiker, Informatik, Netzwerktechnik, IPv4, subnetting, Subnetzmaske
Weiß jemand, wie ich die lock und conditions in java hier zu programmieren habe?

Hi, ich beschäftige mich zurzeit mit lock und conditions.

public class LockedDataObject extends DataObject {


    /** Anzahl aktueller Leser */
    int noReaders;


    /** Wahr, wenn Schreiber momentan wartend oder schreibend */
    boolean writer;


    /**
     * Condition-Variable zum Schlafenlegen von bzw. Aufwecken des Schreibers
     */
    Condition condWrite;


    /** Condition-Variable zum Schlafenlegen bzw. Aufwecken der Leser */
    Condition condRead;


    /**
     * Sperre, um alle oberen Variablen zu schützen. Bevor auf eine der
     * Variablen zugeriffen wird, muss ggf. diese Sperre erworben werden. Der
     * Erwerb der Sperre soll *nur dann* erfolgen, wenn es für die korrekte
     * Ausführung unbedingt notwendig ist. Das ist bei einem ändernden Zugriff
     * nur dann der Fall, wenn andere Threads die entsprechende Variable
     * zeitgleich lesen oder schreiben können. Bei einem lesenden Zugriff soll
     * die Sperre nicht erworben werden, wenn andere Threads zeitgleich nur
     * lesend, aber nicht schreibend, auf die entsprechende Variable zugreifen
     * können.
     */
    ReentrantLock lock;


    public LockedDataObject() {
        this.lock = new ReentrantLock();
        this.condRead = lock.newCondition();
        this.condWrite = lock.newCondition();
        this.noReaders = 0;
        this.writer = false;
    }


    public int sum() {
        // Beachten Sie durchgängig die korrekte Verwendung der Sperrvariable
        // "lock". Erwerben Sie die Sperre nur, falls unbedingt notwendig.


        // 1. Solange ein Schreiber wartet oder schreibt, schlafenlegen.


        // 2. Anzahl der Leser um 1 erhöhen.


        // 3. Summe bilden
        int sum = super.sum();


        // 4. Anzahl der Leser erniedrigen und ggf. Schreiber aufwecken.


        // 5. Summe zurueckgeben
        return sum;
    }


    public void randomSwap() {
        // Beachten Sie durchgängig die korrekte Verwendung der Sperrvariable
        // "lock". Erwerben Sie die Sperre nur, falls unbedingt notwendig.


        // 1. Anzeigen, dass ein Schreiber wartet.


        // 2. Schlafenlegen, solange noch mindestens ein Leser aktiv


        // 3. Elemente vertauschen
        super.randomSwap();


        // 4. Anzeigen, dass kein Schreiber mehr wartet/schreibt und
        // ggf. Leser aufwecken.
    }
}




Diese Aufgabe haben wir als Übung erhalten, der Dozent meinte, durch die Kommentare, sei das eine 5 Minuten Aufgabe, damit können wir mal üben.

Es sei so einfach, dass keine Lösungen nötig seien..., da ja alles kommentiert sei.

Die Aufgaben stehen bei den beiden Methoden, also was genau man zu tun hat...

Wie wprde man das lösen? Könnte das jemand kurz tun, damit ich mal sehe, wie man hier vorgeht, ich lerne mehr beim sehen einer korrekten Lösung, wenn ich ein Thema neu lerne.

Ich konnte mir zu allem was denken, außer zu: "    // 1. Anzeigen, dass ein Schreiber wartet." Wie soll man das zeigen?

Computer, Schule, programmieren, Java, Informatik
wie könnte ich diesen Java Code kürzer/besser machen?

Hangman in Java

Wie könnte man so einen Code kürzer machen ?

public class hangiman {
    public static void main(String[] args) {
        System.out.println("Starting game");

        String notUsed = "abcdefghijklmnopqrstuvwxyz";

        String[] words = new String[]{"computer", "mouse", "screen", "display", "language"};

        String randomWord = words[(int) (Math.random() * words.length)];

        System.out.println("The word has " + randomWord.length() + " letters.");

        char[] letters = new char[randomWord.length()];

        Arrays.fill(letters, '.');
        int lives = 3;

        Scanner scanner = new Scanner(System.in);

        while (lives > 0) {
            System.out.print("Lives: ");

            for (int i = 0; i < lives; i++) {
                System.out.print("♥");
            }
            System.out.println();

            System.out.println("Input: ");

            String input = scanner.nextLine();

            char letter = input.charAt(0);


            boolean isGuessCorrect = false;
            for (int i = 0; i < randomWord.length(); i++) {
                char l = randomWord.charAt(i);

                if (l == letter) {
                    letters[i] = l;
                    isGuessCorrect = true;
                }
            }
            if (!isGuessCorrect) {
                lives = lives - 1;
            }
            boolean isGameFinished = true;

            System.out.print("Word: ");


            for (char c : letters) {
                if (c == '.') {
                    isGameFinished = false;
                }
                System.out.print(c);
            }
            System.out.println();

            notUsed = notUsed.replace(letter, '.');
            System.out.println("Not used " + notUsed);

            System.out.println("----------------------------------");

            if (isGameFinished) {
                System.out.println("You won!");
                break;
            }
        }
        if (lives == 0) {
            System.out.println("You lost! The word was: " + randomWord);
        }
        System.out.println("Exiting game");
    }
}

Computer, programmieren, Java, Informatik
Php Hashen mit "Salz" / PASSWORD_DEFAULT?
$password = "passwort";
$hashed = password_hash($password, PASSWORD_DEFAULT);
if(password_verify($password, $hashed)){
    echo $hashed;
}

Also so würde ich jetzt den string "passwort" hashen mit etwas vollkommen zufälligem / salz und es zb auf meiner datenbank speicher, alles schön und gut.

Jetzt kommt das große aber, wenn ich die Seite von irgendwo anders aufrufe. Dann mich einloggen will wird das eingegebene wieder gehasht mit einem salz um es mit der sql datenbank abzugleichen.

Das geht aber garnicht weil dieses Salz doch immer ein anderer ist wenn ihr versteht was ich meine.

Hashes ohne salz vergleichen kriege ich schonmal ohne probleme hin.

zum beispiel so würde mein login/abgleich mit der datenbank aussehen :

if(isset($_POST["username"]) && isset($_POST["password"])){

$hash = hash("sha512", $_POST["password"]);

$mysqli1 = new mysqli($servername, $user, $pw, $db);
$result = $mysqli1->query('SELECT id FROM user WHERE username = "'. $_POST["username"]. '"  ');
$result1 = $mysqli1->query('SELECT id FROM user WHERE password = "'. $hash. '"  ');

if($result->num_rows == 1 and $result1->num_rows == 1 ) {
  echo "Login erfolreich"; 
} else {
    echo "Falsches Passwort oder Nutzername";
}
$mysqli1->close();
}

Hab jetzt mysqli benutzt weil es irgendwie übersichtlicher ist, und ob das anfällig für Sql Injections oder so ist spielt eigentlich keine rolle erstmal. Manche stört das

PC, Server, Computer, Technik, Web, Webseite, programmieren, Passwort, Hash, Informatik, IT-Sicherheit, Kryptographie, MySQL, PHP, Programmiersprache, Technologie, web-development, Web Developer

Meistgelesene Beiträge zum Thema Informatik