THẢO LUẬN

thg 6 20, 2024 1:35 CH

class CicularQueue: def init(self,size): self.front = self.rear = -1 self.size = size self.queue = [None] * size

def enQueue(self,data):
    if (self.front == 0 and self.rear == self.size - 1) or (self.rear == (self.front - 1) % (self.size - 1)):
        print("Queue is Full")
    elif self.front == -1 :
        self.rear = 0 
        self.front = 0 
        self.queue[self.rear] = data
    elif self.rear == self.size - 1 and self.front != 0 :
        self.rear = 0 
        self.queue[self.rear] = data
    else:
        self.rear += 1 
        if self.front <= self.rear : 
            self.queue[self.rear] = data 
            
def deQueue(self):
    if self.front == -1  : 
        print("\n Queue is empty ")
        return -1 
    
    data = self.queue[self.front]
    self.queue[self.front] = None
    if self.front == self.rear :
        self.front = - 1
        self.rear = - 1
    elif self.front == self.size - 1: 
        self.front = 0 
    else:
        self.front += 1 
        
    return data 

def displayQueue(self):
    if self.front == -1 :
        print("Queue is empty ")
        return
    print("Element in the "+"cicular queue are : ")
    if self.rear >= self.front : 
        for i in range(self.front,self.rear+1):
            print(self.queue[i],end=' ')
            print(' ')
        print('\n')
        
    else:
        for i in range(self.front,self.size):
            print(self.queue[i])
            print(" ")
            
        for i in range(0,self.rear+1):
            print(self.queue[i])
            print(" ")
        print("\n")

if name == 'main': q = CicularQueue(5) q.enQueue(10) q.enQueue(8) q.enQueue(30) q.enQueue(5) q.displayQueue() x = q.deQueue() if x != -1: print("Deleted value =", x)

x = q.deQueue()
if x != -1:
    print("Deleted value =", x)

q.displayQueue()

q.enQueue(9)
q.enQueue(20)
q.enQueue(5)

q.displayQueue()

q.enQueue(20)

Mọi người tham khảo nhé !!!

0
thg 6 20, 2024 1:33 CH

Hay quá chi tiết quá

0

@MartinCrux xin bác sớm public github của project nhé ạ, data thì mình remove là được thôi mà nó đâu liên quan trong này 😄

0
Avatar
đã bình luận cho bài viết
thg 6 20, 2024 10:05 SA

Chắc là người giống đấy bro 😃)

0
Avatar
đã bình luận cho bài viết
thg 6 20, 2024 7:20 SA

👍️

0

Cảm ơn bạn nhiều ạ, bạn có thể chia sẻ trải nghiệm của mình sau khi áp dụng tất cả các technique trên nhé ạ

0

@phuclpst0125 dòng Ví dụ về mvcc

0

1 : Bạn có thể cho mình xin thông tin ảnh nào bị lỗi không để mình có thể fix 2 : Theo mình tìm hiểu thì có 2 trường hợp trong câu hỏi của bạn :

  • 1: UPDATE rồi mới READ : thì khi bạn tạo lệnh update thì cơ chế của MVCC đã tạo ra 1 bản sau lưu cửa dữ liệu củ và 1 bản cho dữ liệu sau lệnh update . Khi đó người dùng muốn đọc thì hệ thống sẽ trả về bản dữ liệu cũ để tránh lỗi . => Trong trường hợp này thì READ sẽ tạo ra 1 Version và sẽ gây lản phí tài nguyên
  • 2 : Bạn chỉ READ mà không có thao tác UPDATE hay DELETE trước đo : thì trường hợp này đơn giản hơn là bạn chỉ đọc mà không cần tạo bạn sao lưu dữ liệu cũ => Trường hợp này sẽ không tạo Version
0
Avatar
đã bình luận cho bài viết
thg 6 19, 2024 2:58 CH

Tất cả đều lưu trong bộ nhớ thôi. Bộ nhớ thì chia thành Stack và Heap. Hiểu về Stack và Heap thì mới hiểu tại sao con trỏ tăng hiệu năng và tiết kiệm bộ nhớ. Em nên đưa thêm những thứ đó vào mới rõ ràng được.

không thực sự nói về con trỏ nhưng bài này có giải thích về Stack và Heap: https://viblo.asia/p/kieu-gia-tri-kieu-tham-chieu-giai-thich-goc-re-obA46dKGLKv

0
Avatar
đã bình luận cho bài viết
thg 6 19, 2024 2:43 CH

t có quen ông không nhỉ @Tafi

0

Trước tiên nên định nghĩa fullstack dev là gì đã.

0

@linhdn1198 thường thì record sẽ được đồng bộ sang ngay với tốc độ rất nhanh, hiếm khi thấy bị trường hợp như bạn đưa ra. 1 là bạn cấu hình bị sai ở đâu đó. 2 là con slave của bạn chết và vừa mới dc run trở lại đang được đồng bộ. Nói chung là mình cũng chưa bị dính

0

Ảnh lỗi. Có thắc mắc là Read có tạo version không? Nếu tạo version thì tốn kém quá.

0

@tmsangdev em cảm ơn giải đáp của anh ạ.

+1

cảm ơn bạn, lưu lại để sau này áp dụng 😄

+1

Clean Architecture và Aspect Programming cũng là một lực đẩy giúp mấy mẫu Structural này gần hơn với lập trình viên.

+1

Decorator là ví dụ tốt cho Composition over Inheritance. Để có hành vi của lớp nào đó không nhất thiết phải thừa kế nó. Rất tiếc là mẫu này lại không phổ biến trong thực tế. Các framework hay ngôn ngữ bậc cao cũng cung cấp sẵn các giải pháp mở rộng khác dạng annotation. Một số DI library cung cấp cách cài đặt Decorator có vẻ giúp mẫu này dễ tiếp cận và ứng dụng hơn.

+1

@Clarence161095 Thank you, bro. Lần đầu ngồi phỏng vấn tôi còn run hơn ứng viên ông ạ :v

Nhưng mà chắc phỏng vấn nhiều thành quen. Còn quá trình phỏng vấn thì anh em mình đều từng trải qua giai đoạn tuổi trẻ đó, nên cũng phần nào hiểu được tâm lý của các bạn bây giờ.

Với lại trước khi tham gia phỏng vấn, tôi cũng từng được một đàn anh chia sẻ rằng: "Khi cảm thấy ứng viên mất bình tĩnh, thì nên đặt những câu hỏi dễ thôi, để bạn ấy lấy lại sự bình tĩnh và tự tin. Vì nhiều khi ứng viên thực sự có tiềm năng, nhưng vì ngại hoặc run, mà mình cứ hỏi dồn dập quá là có thể sẽ bỏ lỡ mất những ứng viên tốt. Thậm chí là gây ảnh hưởng tâm lý cho bạn ấy về sau nữa. Như thế là nghiệp ấy."

Tôi thấy lời khuyên thấm vch, nên dần dần cũng cố gắng áp dụng như thế.

+1
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí