Theo như mình dịch từ trên docs thì bản thân mình cũng cảm thấy 2 cái này rất giống nhau. Tuy nhiên có 1 cái khác, đó là đói với Nonrepeatable read thì đề cập tới việc đọc cùng 1 row nhiều lần nhưng kết quả khác nhau giữa các lần. Còn Phantom read sẽ là list rows kết quả trả về có số lượng khác nhau giữa các lần. Có thể hiểu là Nonrepeatable read là trường hợp có 1 transaction khác update bản ghi trong quá trình transaction 1 đọc nên kết quả khác, còn Phantom read là có 1 transaction khác insert thêm bản ghi vào trong lúc transaction 1 đang đọc nên list rows trả về khác nhau.
Ngoài cách của bạn ra mình thấy còn có một cách.
Sau khi tạo file xib thì đặt customClass của chính view trong file xib là class vừa tạo. Phần File owner để trống, không cần điền gì cả.
Sử dụng extension sau để tạo instance cho view
extension UIView { class func fromNib<T: UIView>() -> T { return Bundle(for: Self.self).loadNibNamed(String(describing: Self.self), owner: nil, options: nil)![0] as! T } }
Bài viết rất hay, bố cục mạch lạc, dễ hiểu, nhưng mình thấy đang confuse giữa Nonrepeatable read và Phantom read. Cả 2 cùng là trả về dữ liệu khác nhau giữa các lần read khi có việc chỉnh sửa dữ liệu chen vào.
@sherlock mình nghĩ bạn nên thêm vào vì trong quá trình triển khai mình thấy phải handle event skipWaiting này để cho application chạy tiếp không sẽ bị hang.
bạn có nói đến lỗ hổng của nginx, nhưng trong bài mình lại không hề thấy bạn mô tả lỗ hổng đó như nào, là cái gì, mình thấy bạn nên đổi tên bài viết thành cách cài đặt nginx trên debian đi thì hơn
Bài hay quá, em phải login để cmt đây. Thực sự việc DevOps nó nhiều thứ chứ ko phải chỉ CI/CD là xong mà cả quy trình từ plan cho đến operating luôn. Bây giờ nhiều công ty vẫn nhầm lẫn khái niệm ấy. Ra bài mới nha anh
Chào Anh Quang. Em tên Liễu, đang học nghành Ngôn ngữ và ngôn ngữ ứng dụng. có bộ môn về lập trình ngôn ngữ ạ. em có đọc các bài viết của anh khá hay và giống như trương trình học của em ạ. Em không học ở VN, không biết anh có mở lớp học hay anh biết ở đâu tại TPHCM có dạy những vấn đề trên ạ. Vì thầy giảng em chưa hiểu do ngôn ngữ chuyên nghành và ngôn ngữ của em chưa tốt:) . Nên em muốn đang ký học để hiểu rõ hơn. em cảm ơn anh nhé
Kiến thức về Vue của mình thì cũng học bắt đầu từ docs của nó mà ra.
Bạn đọc đc blog của mình thì đọc ko thì đọc luôn docs của Vue cũng đc, nhưng cũng có người đọc tiếng anh hiểu có người ko. Đấy là lí do mình chọn viết blog tiếng việt trên Viblo này
Còn những ng đọc blog của mình mình cũng k biết họ là ai, chỉ viết lên đây mong chia sẻ điều mình học đc và có có thể thảo luận giải đáp cho các bạn (điều mà bạn tự đọc docs ko có đc).
Bạn nói những người vote trên đây toàn là seeder thì thiếu tôn trọng họ quá. Mình đâu phải người nổi tiếng hay viết bài mong chờ có quảng cáo đâu mà seeder gì cho cam!
THẢO LUẬN
tại sao lại down vote nhi? Công nghệ phát triển theo từng tháng năm mà.
oke bạn ơi. Cảm ơn bạn nhé
Theo như mình dịch từ trên docs thì bản thân mình cũng cảm thấy 2 cái này rất giống nhau. Tuy nhiên có 1 cái khác, đó là đói với Nonrepeatable read thì đề cập tới việc đọc cùng 1 row nhiều lần nhưng kết quả khác nhau giữa các lần. Còn Phantom read sẽ là list rows kết quả trả về có số lượng khác nhau giữa các lần. Có thể hiểu là Nonrepeatable read là trường hợp có 1 transaction khác update bản ghi trong quá trình transaction 1 đọc nên kết quả khác, còn Phantom read là có 1 transaction khác insert thêm bản ghi vào trong lúc transaction 1 đang đọc nên list rows trả về khác nhau.
Ngoài cách của bạn ra mình thấy còn có một cách. Sau khi tạo file xib thì đặt customClass của chính view trong file xib là class vừa tạo. Phần File owner để trống, không cần điền gì cả. Sử dụng extension sau để tạo instance cho view
extension UIView { class func fromNib<T: UIView>() -> T { return Bundle(for: Self.self).loadNibNamed(String(describing: Self.self), owner: nil, options: nil)![0] as! T } }Bài viết rất hay, bố cục mạch lạc, dễ hiểu, nhưng mình thấy đang confuse giữa Nonrepeatable read và Phantom read. Cả 2 cùng là trả về dữ liệu khác nhau giữa các lần read khi có việc chỉnh sửa dữ liệu chen vào.
@sherlock mình nghĩ bạn nên thêm vào vì trong quá trình triển khai mình thấy phải handle event skipWaiting này để cho application chạy tiếp không sẽ bị hang.
bạn có nói đến lỗ hổng của nginx, nhưng trong bài mình lại không hề thấy bạn mô tả lỗ hổng đó như nào, là cái gì, mình thấy bạn nên đổi tên bài viết thành cách cài đặt nginx trên debian đi thì hơn
hay quá thầy ơi
So goood. How can I contact you for a project. We develop a Google map like algorithm for Persnalized teaching. My email duke@smartedunow.com. Thanks
JS làm đếch có chuyện "song song". nghe đã thấy sai vcl ra rồi.
)
Bài hay quá, em phải login để cmt đây. Thực sự việc DevOps nó nhiều thứ chứ ko phải chỉ CI/CD là xong mà cả quy trình từ plan cho đến operating luôn. Bây giờ nhiều công ty vẫn nhầm lẫn khái niệm ấy. Ra bài mới nha anh
Chào Anh Quang. Em tên Liễu, đang học nghành Ngôn ngữ và ngôn ngữ ứng dụng. có bộ môn về lập trình ngôn ngữ ạ. em có đọc các bài viết của anh khá hay và giống như trương trình học của em ạ. Em không học ở VN, không biết anh có mở lớp học hay anh biết ở đâu tại TPHCM có dạy những vấn đề trên ạ. Vì thầy giảng em chưa hiểu do ngôn ngữ chuyên nghành và ngôn ngữ của em chưa tốt:) . Nên em muốn đang ký học để hiểu rõ hơn. em cảm ơn anh nhé
Ngon bạn ơi
)))
Kiến thức về Vue của mình thì cũng học bắt đầu từ docs của nó mà ra.
Bạn đọc đc blog của mình thì đọc ko thì đọc luôn docs của Vue cũng đc, nhưng cũng có người đọc tiếng anh hiểu có người ko. Đấy là lí do mình chọn viết blog tiếng việt trên Viblo này
Còn những ng đọc blog của mình mình cũng k biết họ là ai, chỉ viết lên đây mong chia sẻ điều mình học đc và có có thể thảo luận giải đáp cho các bạn (điều mà bạn tự đọc docs ko có đc).
Bạn nói những người vote trên đây toàn là seeder thì thiếu tôn trọng họ quá. Mình đâu phải người nổi tiếng hay viết bài mong chờ có quảng cáo đâu mà seeder gì cho cam!
@phamtuananh760
(làm ơn đừng dùng, đây là một câu trả lời đùa.)
@tranxuanthang đúng rồi bác chỉ là cộng , trừ nhân chia nhưng có thể có cả trong ngoặc nữa vd: a * (b+c)-e/d
@thanh_hai Chỉ có cộng , trừ nhân chia, với các số, chữ a, b, c... thôi hả bạn
@tranxuanthang em vừa sửa lại rồi trình soạn thảo gõ a * b thành ab luôn