Posts

Showing posts from April, 2019

Swagger trong springboot

Bạn đã từng phát triển API restful webservice bằng Spring rồi sau đó lại phải viết tài liệu mô tả từng API với tham số param và mã lỗi trả về Nếu bạn đã từng thì bài viết này sẽ rất hữu ích cho bạn với cách tiếp cận mới Bạn chỉ việc phát triển API theo đúng chuẩn rồi sau đó enable Swagger trong hệ thống SpringBoot của bạn Swagger sẽ tự động đọc code và xuất ra tài liệu mô tả API cho bạn, rồi bạn chỉ việc gửi đường dẫn Swagger cho Frontend-developer tham khảo Phần cấu hình tôi sẽ hướng dẫn bạn sau. Rất đơn giản để thực hiện cấu hình Swagger trên SpringBoot @WebService @Api (value =  "Emailssssssss" ) @Path (value =  "/v1.0/emails" ) public   class   erviceImpl  extends   BaseWebService  implements   EmailService {        private   static   Logger logger = LogManager.getLogger(xxxxxxxImpl. class );        @POST      @ApiOperation (value ...

Java VisualVM và Garbage Collector trong JVM (p2)

Phần này chúng ta sẽ tìm hiểu một số thông số cấu hình cho ứng dụng Java java -jar app.jar câu lệnh trên là câu lệnh cơ bản nhất để chạy một ứng dụng java Đã bao giờ các bạn thắc mắc một số câu hỏi khi chạy một ứng dụng java như làm thế nào để cấu hình kích thức bộ nhớ heap trong java, stack memory ... Hôm nay tôi sẽ hướng dẫn một số thông số cơ bản nhất mà tôi từng dùng trong dự án -Xmx512M tham số này mô tả maximum kích thước vùng nhớ HEAP dành cho ứng dụng sẽ là 512MB, nếu ứng dụng dùng vượt quá vùng nhớ HEap nó sẽ báo lỗi Outofmemory - Xms128M Tham số này cấu hình khởi tạo vùng nhớ heap có kích thước là 128MB - Xss4M Tham số này muốn nói rằng kích thước vùng nhớ dành cho Stack là 4MB Tiếp đến chúng ta sẽ cấu hình loại GC cho ứng dụng Hiện tại chúng ta có thể cấu hình 4 cách phổ biến nhất cho GC -XX:+UseParallelGC Tham số này mô tả cơ chế Parallel khi dọn các đối tượng trong bộ nhớ heap không còn đc tham chiếu, nó được dùng trong các h...

Java VisualVM và Garbage Collector trong JVM

Trong bài viết này tôi sẽ mô tả vấn đề tôi gặp phải trong quá trình phát triển dự án OCR tại công ty. Mô tả về dự án: Dự án OCR nhóm tôi làm giải quyết vấn đề xử lý ảnh định dạng .tiff. Chúng tôi có một tập ảnh tiff và cần viết một chương trình phần mềm có đầu vào là tập ảnh và đầu ra là tự động trích xuất các vùng dữ liệu đã cấu hình theo từng mẫu ảnh ra một file excel. Về cơ bản thì nhóm dự án giải quyết được vấn đề là xử lý ảnh và trích xuất dữ liệu từng vùng ra file excel. Nhưng vấn đề thực sự đã đến khi đi đến những bước test cuối cùng trước khi khách hàng nghiệm thu. Đó là xử lý với một tập dữ liệu ảnh lớn. Khoảng 3 4 nghìn ảnh trong 1 request và server phải xử lý đống ảnh đó. Lúc đầu tôi đã gặp vấn đề Out of memory khi tôi khởi chạy mặc định ứng dụng. Sau đó tôi đã tìm hiểu và cấu hình Size cho Heap để có thể tránh tràn bộ nhớ bằng tham số -Xmx. Nhưng có vẻ vấn đề được giải quyết phần nào vì dung lượng vùng nhớ đã được tăng và thỉnh thoảng vẫn gặp phải tình trạng Out of ...