Προς το περιεχόμενο

Parabasvat

Members
  • ΜΗΝΥΜΑΤΑ FORUM

    12
  • ΜΕΛΟΣ

  • ΤΕΛ. ΕΠΙΣΚΕΨΗ

Parabasvat's Achievements

Proficient

Proficient (10/15)

  • Πρώτο Μήνυμα
  • Collaborator
  • Εκκίνηση Συζήτησης
  • 1 Εβδομάδα Μετά
  • Ένα Μήνα Μετά

Πρόσφατες Διακρίσεις

0

Φήμη

  1. Αδερφέ σε ευχαριστώ πολύ για την απάντηση. Μάλλον αυτό που είπες πρέπει να κάνω.
  2. Γεια σας. Πρέπει να κάνω μία πανεπιστημιακή εργασία για το μάθημα Βάσεις Δεδομένων και επειδή είμαι αρχάριος στην SQL θα ήθελα μία μικρή διευκρίνηση. Η εκφώνηση της εργασίας είναι η εξής: "Υλοποίηση B+Tree σε περιβάλλον δηλωτικής γλώσσας προγραμματισμού (DBMS): Αφού αναζητήσετε ήδη υπάρχουσες υλοποιήσεις θα πρέπει να μεταφέρετε/προσαρμόσετε μία από αυτές, ή να ξεκινήσετε κάποια δική σας, σε ένα DBMS της επιλογής σας. Η γλώσσα υλοποίησης θα είναι προφανώς η SQL ή/και PL/SQL -/- T-SQL -/- PL/pgSQL. Το δέντρο σας θα αποθηκευτεί σε βάση δεδομένων (πίνακες) και όχι σε δίσκο όπως συνηθίζεται." Επίσης σε ερώτηση προς τον καθηγητή για τον αν πρέπει να κάνουμε "CREATE INDEX" κτλπ, μας απαντήθηκε το παρακάτω: "Όχι δεν σημαίνει CREATE INDEX index_name ON table1 (col1, col2); Υλοποίηση B+ δεν είναι το CREATE INDEX. Εσείς θα πρέπει να υλοποιήσετε τους κόμβους και τις διαδικασίες εισαγωγής-αναζήτησης του B+, δηλαδή αυτό που γίνεται κάτω από το CREATE INDEX." Μπορεί κάποιος να με διαφωτίσει για το τι ακριβώς πρέπει να κάνω; Πως μπορώ να γράψω σε SQL αυτό που γίνεται κάτω από το CREATE INDEX;
  3. Αδερφέ σε ευχαριστώ για το ενδιαφέρον αλλά μάλλον δεν κατάλαβες τι ρωτάω. Αυτό που ψάχνω να βρω είναι συγκεκριμένες υλοποιήσεις από γνωστές βάσεις (Postgre, MySQL κτλπ). Δεν ψάχνω τυχαίες που είναι υλοποιημένες από τον οποιοδήποτε. Απλά ενώ κατεβάζω το source code από τις παραπάνω βάσεις, δεν μπορώ να εντοπίσω το αρχείο που αναφέρετε στα b+ tree ευρετήρια.
  4. Χαιρετώ, Ψάχνω απεγνωσμένα να βρω 2 διαφορετικές υλοποιήσεις B+Tree ευρετηρίων (κώδικα υλοποίησης) για να τις συγκρίνω. Αυτές μπορεί να προέρχονται από οποιοδήποτε πηγή (π.χ. υλοποίηση της PostgreSQL, MySQL, SQLite κτλ). Το θέμα είναι ότι κατέβασα το source code των παραπάνω αλλά δεν μπορώ να εντοπίσω το μέρος που λέει για τα b-trees. Μπορεί κάποιος να με βοηθήσει;
  5. Όντως.. Ευχαριστώ πολύ για την απάντηση.
  6. Χαιρετώ. Έχω φτιάξει ένα απλό πρόγραμμα με posix threads, είναι γραμμένο σε C και το έκανα compile σε linux με την χρήση του gcc. Η λειτουργία του είναι η εξής: Δημιουργούναι 20 νήματα τα οποία μπορούν να κατηγοριοποιηθούν σε Α) Κανονικά νήματα (εκτελούν ένα loop και τερματίζουν), Β)Ευγενικά νήματα (παραχωρούν τη cpu σε κάποιο άλλο νήμα) και Γ) Κακά νήματα (επιλέγουν τυχαία ένα από τα υπόλοιπα νήματα, διαγράφουν τα χαρακτηριστικά τους και τα τερματίζουν). Η απορία μου είναι η εξής: Στη συνάρτηση BadThread() όταν γίνετε κλήση της pthread_cancel() για να ακυρωθεί ένα συγκεκριμένο νήμα τότε μου παρουσιάζεται σφάλμα "Segmentation fault". Τι λάθη έχω κάνει; *Είμαι αρχάριος στον προγραμματισμό και ο λόγος που έγραψα τον κώδικα είναι για μία εργασία. Κώδικας: #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> #define NUM_THREADS 20 void *NormalThread(void *threadid) /*Normal thread*/ { . . . . pthread_exit(NULL); . . . } void *GentleThread(void *threadid) /*Gentle thread*/ { . . pthread_yield(); //Release cpu . . } void *BadThread(void *threadid) /*Bad thread*/ { long tid3; int timer3; int c; long tnd; int pthread_t; int rc; tid3 = (long)threadid; timer3= 10+ (rand() % 11); /*Thread delay*/ tnd=rand() % tid3; rc = pthread_cancel(tnd);//??? segmentation fault if(rc) printf("failed to cancel the thread\n");//??? int pthread_attr_destroy(pthread_attr_t *tnd); pthread_exit(NULL); } int main(int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc; long t; int ThreadKind; srand(time(NULL)); /*Random numbers after compile again*/ printf("\n"); printf("Press ENTER to start creating threads...\n"); getchar(); for(t=0;t<NUM_THREADS;t++){ /*Check what kind of thread will be created*/ ThreadKind=(rand() & 101); if (ThreadKind<60){ rc = pthread_create(&threads[t], NULL, NormalThread,(void *)t); } if (ThreadKind>=60 && ThreadKind<80){ rc = pthread_create(&threads[t], NULL, BadThread, (void *)t); } if (ThreadKind>=80 && ThreadKind<100){ rc = pthread_create(&threads[t], NULL, GentleThread, (void *)t); } pthread_exit(NULL); }
  • Δημιουργία νέου...