Sao phần 9 10 11 12 13 câu SQL giống nhau thế nhỉ?
đều là
User.ransack(nick_name_cont: 'Hon').result.to_sql
=> SELECT "users".* FROM "users" WHERE ("users"."nick_name" LIKE '%Hon%')
@smagic39 Cái này là trường hợp client_validation không apply việc validate từ server (model) sang view. Đơn giản là không có validate trên view nữa chỉ có trong model thôi
Ý một mình nói kỹ một chút, tức là đồng bộ chỉ chơi với đồng bộ. Một threadA muốn đồng bộ một đối tượng object với ThreadB thì cả hai phải có giai đoạn khóa object này lại.
Synchronized(object){
statement 1,
statement 2,
...
statement n
}
Trong lúc nó khóa object này lại thì nó sẽ thực hiện các câu lệnh statement (các câu lệnh là tùy ý tùy theo nhu cầu mỗi thread). Xong việc thì nó sẽ giao quyền khóa object lại cho một thread khác.
từ khóa synchronized dùng ở phương thức cũng mang cùng ý nghĩa như trên.
Mình thấy cách hiểu đồng bộ theo đoạn code hay phương thức rất dễ gây hiểu nhầm. Mình thì hiểu đồng bộ chia làm 2 cấp, đầu tiên là ở cấp đối tượng, 2 là ở cấp class(tức là khác đối tượng cũng đồng bộ được)
Và một điều quan trọng cũng như cơ bản cần nhớ là đồng bộ sẽ chỉ chơi với đồng bộ (synchronized). Nếu một threadA muốn đồng bộ dữ liệu với một thread B thì cả hai thằng đều phải dùng các câu lệnh(hay method) có từ khóa synchronized.
Điều quan trọng thứ 2 là khi synchronized(object) tức là object đó đang bị khóa bởi luồng(tạm gọi ThreadA) chứa câu lệnh đó. Và bất kỳ thread nào làm việc gì liên quan đến synchronized đối với object này, mà trong thời gian thằng ThreadA đang lock object đó đều phải đợi cho đến khi thằng ThreadA xong việc với object.
THẢO LUẬN
Rất ngắn gọn xúc tích. Nhưng rất hay cho người muốn bắt đầu. Cám ơn tác giả
Rất ngắn gọn xúc tích. Nhưng rất hay cho người muốn bắt đầu. Cám ơn tác giả
Sao phần 9 10 11 12 13 câu SQL giống nhau thế nhỉ? đều là User.ransack(nick_name_cont: 'Hon').result.to_sql => SELECT "users".* FROM "users" WHERE ("users"."nick_name" LIKE '%Hon%')
Thanks bro. Very nice.
@tran huy hoang: hi a, lâu quá chưa thấy a phản hồi...
@smagic39 Cái này là trường hợp client_validation không apply việc validate từ server (model) sang view. Đơn giản là không có validate trên view nữa chỉ có trong model thôi
@smagic39 Updated
Good and quickly update
Bài viết rất bổ ích, cảm ơn tác giả.
CHo em xin CSDL của bài này được ko? Em mới học php nên em muốn chạy thử và xem nó hoạt động ra sao
@quangdinhcr Like & Thanks (y)
Bài viết công phu, mình xin có 1 số đóng góp nhỏ:
Ý một mình nói kỹ một chút, tức là đồng bộ chỉ chơi với đồng bộ. Một threadA muốn đồng bộ một đối tượng object với ThreadB thì cả hai phải có giai đoạn khóa object này lại. Synchronized(object){ statement 1, statement 2, ... statement n } Trong lúc nó khóa object này lại thì nó sẽ thực hiện các câu lệnh statement (các câu lệnh là tùy ý tùy theo nhu cầu mỗi thread). Xong việc thì nó sẽ giao quyền khóa object lại cho một thread khác. từ khóa synchronized dùng ở phương thức cũng mang cùng ý nghĩa như trên.
Mình thấy cách hiểu đồng bộ theo đoạn code hay phương thức rất dễ gây hiểu nhầm. Mình thì hiểu đồng bộ chia làm 2 cấp, đầu tiên là ở cấp đối tượng, 2 là ở cấp class(tức là khác đối tượng cũng đồng bộ được)
Và một điều quan trọng cũng như cơ bản cần nhớ là đồng bộ sẽ chỉ chơi với đồng bộ (synchronized). Nếu một threadA muốn đồng bộ dữ liệu với một thread B thì cả hai thằng đều phải dùng các câu lệnh(hay method) có từ khóa synchronized.
Điều quan trọng thứ 2 là khi synchronized(object) tức là object đó đang bị khóa bởi luồng(tạm gọi ThreadA) chứa câu lệnh đó. Và bất kỳ thread nào làm việc gì liên quan đến synchronized đối với object này, mà trong thời gian thằng ThreadA đang lock object đó đều phải đợi cho đến khi thằng ThreadA xong việc với object.
Tương tự với cấp độ Class.
Great!
Great!
site này của Framgia à bác?
Cảm ơn bác, hehe, giờ mới biết
Hay đó anh Hữu ơi, nhưng anh share thêm mấy cái anh bảo em tìm hiểu đê...cái này làm search fulltext em sử dụng nó đó.hihi
nhảy vào api của EC Cube thôi, ver 3 làm build trên framework rồi dễ làm hơn.