Tất cả
Việc làm

Tạo thông báo việc làm ngay

3 việc làmProcess Quality Assurance

Bài viết liên quan

Xem tất cả
Child process trong Node.js là gì? - Khi nào cần sử dụng fork và spawn?

Child process trong Node.js là gì? - Khi nào cần sử dụng fork và spawn?

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Có một lời khuyên mà chắc hẳn ai làm việc với Node.js đều phải thuộc lòng đó là "đừng bao giờ chặn vòng lặp sự kiện". Chặn ở đây có nghĩa là không để cho Event Loop được thực thi chức năng vốn có của nó. Node.js chỉ có một luồng để xử lý mã JavaScript, nếu một công việc chiếm tương đối thời gian để xử lý thì nó sẽ gây ra một cuộc tắc nghẽn nghiêm trọng trong luồng chính. Hay nói cách khác, tất cả cuộc gọi API có thể sẽ không bao giờ được phản hồi cho đến khi công việc đó xong. Biết được vấn đề, tất nhiên Node.js phải cung cấp cho chúng ta một số cách để giải quyết. Thay vì gọi những hàm đồng bộ thì hãy chuyển qua gọi hàm bất đồng bộ, ví dụ như cùng là đọc file nhưng readFile sẽ được khuyên dùng hơn readFileSync  [...]

Đọc thêm
Hibernate Batch Processing là gì? Batch Processing trong Hibernate

Hibernate Batch Processing là gì? Batch Processing trong Hibernate

Bài viết được sự cho phép của tác giả Trần Hữu Cương 1. Hibernate Batch Processing là gì? Ta có tình huống như sau: cần insert 10000 bản ghi vào database Nếu insert lần lượt và đẩy từng đối tượng một thì thời gian sẽ rất lâu vì phải mở/đóng connection nhiều lần Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Customer customer = new Customer(.....); session.save(customer); session.flush(); session.clear(); } tx.commit(); session.close(); Nếu insert và đẩy đồng thời cùng 1 lúc 10000 bản ghi thì sẽ xảy ra lỗi OutOfMemoryException (Lý do là hibernate sẽ lưu tất cả 10000 bản ghi vào bộ nhớ cache nhưng bộ nhớ cache không đủ) Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Customer customer = new Customer(.....); session.save(customer); } tx.commit(); session.close(); => Giải pháp: Batch Processing Vậy Batch Processing là gi? Batch Processing là xử lý theo lô, tức là ta sẽ insert và đẩy từng lô bản ghi vào database. Ví dụ ở đây ta sẽ insert và đẩy 50 bản ghi vào database cùng 1 lúc, như thế sẽ giảm số lượng connection tới database, đồng thời trá [...]

Đọc thêm
Test REST Web Service đơn giản hơn với REST Assured

Test REST Web Service đơn giản hơn với REST Assured

Bài viết được sự cho phép của tác giả Giang Phan  Ở bài viết trước, tôi đã giới thiệu với các bạn cách test REST API trong Jersey project. Giả sử bây giờ chúng ta cần sử dụng API của bên thứ 3 (không phải source code trong jersey project của chúng ta), khi đó ta không thể sử dụng Jersey Test. Khi đó, chúng ta cần một thư viện khác có thể giúp chúng ta gửi một request thật để verfiy kết quả trả về. Trong bài này tôi sẽ giới thiệu với các bạn một thư viện rất mạnh mẽ để test web service, đó chính là REST Assured. Nó cho phép chúng ta gửi một HTTP request thật và verify trên kết quả trả về một cách dễ dàng. Chẳng hạn chúng ta có một request http://localhost:8080/lotto/{id} và server trả về response JSON như sau: [caption id="attachment_52759" align="aligncenter" width="335"] Test REST Web Service[/caption] Khi đó chúng ta dễ dàng sử dụng REST Assured để verify mọi thứ từ response trên như sau: [caption id="attachment_52758" align="aligncenter" width="560"] Test REST Web [...]

Đọc thêm
Kiến thức cần có về System Quality Attributes

Kiến thức cần có về System Quality Attributes

Bài viết được sự cho phép của tác giả Kiên Nguyễn Trong quá trình thiết kế hệ thống, có rất nhiều khái niệm cần hiểu rõ để tránh việc hiểu sai yêu cầu của khách hàng, một trong những khái niệm quan trọng là Quality Attributes. Khái niệm này thường bị nhầm lẫn bởi một số bạn có điều kiện lắng nghe trực tiếp requirement từ khách hàng. Bài viết này mình xin chia sẻ thêm về Quality Attributes và một số ví dụ cụ thể. [irp posts="33039" name="Bài toán đồng thuận trong Distributed Systems"] [irp posts="32660" name="Giải mã bí ẩn system load" trên Linux"] Xem thêm tuyển dụng Product Manager trên TopDev 1. Quality Attributes Motivation Đối với System Design thì nỗi sợ lớn nhất là không adapt được với functional requirements. Nhưng không phải tất cả yếu tố giúp thiết kế hệ thống đều xoay quanh functional requirements. System are frequently redesigned NOT because of the functional requirement Qua trình thay đổi thiết kế của hệ thống đôi khi khô [...]

Đọc thêm