Học được lập trình hướng đối tượng, nhưng mà khó qué , mới đầu nhìn vào mà chẳng hiểu j cả , mong là những ngày sau sẽ tiếp thu được , kiến thức của lập trình hướng đối tượng, nghe mọi người nói. Sau khi hoàn thiện được thì sẽ rất pro .. Thật đáng mong đợi. …
Author: Nguyen Minh Quan
mọi người nói chuyện vui vẻ, hiểu được bài hôm nay. học được nhiều cái mới, nhiều bài tập cảm giác thời gian đi quá nhanh, không đủ thời gian làm hết bài tập. …
học được nhiều điều mới, học được switch- case , gỡ được bugg, thật là vui . …
Hôm nay thật vui, vì làm được hết bài tập. học được cách chỉ lại cho người khác , tự tìm ra giải pháp từ các bài cũ. …
được giảng viên support nhiệt tình , giảng dạy dể hiểu . bạn bè giúp đỡ nhiệt tình, biết thêm app wedtorm …
Mọi thứ thật mới mẻ , từ việc biết sử dụng vòng lặp, cách rẻ nhánh , được giảng viên support nhiệt tình nên mình cảm thấy không thua thiệt mới mọi người. mình biết được cốt lõi những gì mình đang làm, tâm trạng hiện tại rất vui. …
Hôm nay được lên thuyết trình cảm xúc thật khó tả, công việc càng lúc càng nhiều khiến tôi không đủ thời gian làm , tôi thường dành thời gian vào buổi tối để hoàn thành công việc. Tôi học được cách tư duy và sữa lỗi va rẽ nhánh , vòng lặp. Tôi cảm giác thời gian trôi qua thật nhanh cảm giác như vừa ngồi xuống đã tới giờ về rồi. Nhưng mà vẫn cảm thấy vui. . …
Học được nhiều diều mới, có nhiều trại nghiệm mới , kết được nhiều bạn mới, cảm xúc khá là vui vì được quay lại những giờ học , được giảng viên chỉ những kĩ năng mà trước giờ không biết là nó có trên đời luôn , môi trường thân thiện . Được giảng viên giải đáp mọi thắc mắc ngay, lại đc giao những bài tập về nhà , ko còn những giờ rảnh chơi game nữa. Nhưng …
list-product.component.ts import { Component, OnInit } from ‘@angular/core’; import {Product} from ‘../../model/product’; import {ProductService} from ‘../../service/product.service’; @Component({ selector: ‘app-list-product’, templateUrl: ‘./list-product.component.html’, styleUrls: [‘./list-product.component.css’] }) export class ListProductComponent implements OnInit { productList: Product[] = []; constructor(private productService: ProductService) { } ngOnInit() { this.getProductList(); } getProductList() { this.productService.listProduct().subscribe(result => { this.productList = result; }); } } list-product.component.html <div class=”text-center text-uppercase font-weight-bold”> <span style=”font-size: 24px”>Danh sách sản phẩm</span> …
Bài viết này mình sẽ hướng dẫn mọi người cách CRUD trong Angular với 2 bảng trở lên Đầu tiên khởi tạo dự án Angular Tạo interface Product như sau: Category: Tạo file ProductService Chúng ta tạo lần lượt các component CreateProduct, UpdateProduct, ListProduct, DeleteProduct create-product.component.ts import {Component, OnInit} from ‘@angular/core’; import {FormControl, FormGroup} from ‘@angular/forms’; import {Product} from ‘../../model/product’; import {ProductService} from ‘../../service/product.service’; import {Category} from ‘../../model/category’; import {CategoryService} from ‘../../service/category.service’; @Component({ selector: ‘app-create-product’, templateUrl: ‘./create-product.component.html’, …
Phần này đối với lập trình viên Fresher/Junior hay học ở CodeGym thì không quan trọng lắm vì thương không phải xử lý đến ngoại lệ. Nhưng muốn lên cao hơn như Senior hay Technical Leader thì minh nghĩ là cần phải biết. Nên mình sẽ chia sẻ để mọi người có thể tìm hiểu trước nhé. Throw và throws là 2 từ khá giống nhau, khác nhau ở chữ ‘s’ thôi vậy thì chúng ta cùng tìm hiểu xem …
Khi chúng ta viết các API thì chúng ta thường sử dụng phương thức POST để tạo dữ liệu còn PUT thì để cập nhật lại dữ liệu. Chúng ta cứ biết vậy và cứ code như thế rồi thấy nó chạy được. Nhưng có lần mình có viết nhầm tạo dữ liệu mình dùng PUT và vẫn thấy tạo được dữ liệu. Nên mình mới tìm hiểu tại sao chúng ta không dùng 1 trong 2 thôi mà phải …
Danh sách được sử dụng rất nhiều trong quá trình chúng ta lập trình và mảng là kiểu mà chúng ta hay sử dụng nhất. Nhưng đôi khi mảng thông thường không thể đáp ứng được hết nhu cầu sử dụng của chúng ta như kích thước không thể thay đổi chẳng hạn. Vì thế có 2 loại vê cấu trúc dữ liệu mà chúng ta thường dùng để thay thế đó chính là ArrayList và LinkedList. Cả 2 đều …
Trong khi chúng ta lập trình, chúng ta thường phải sử dụng các toán tử so sánh để kiểm tra một điều kiện logic nào đó. Khi so sánh lớn hơn hay nhỏ hơn thì rất đơn giản đúng ko nhỉ. Nhưng khi chúng ta muốn so sánh bằng nhau thi chúng ta lúc thi sử dụng == lúc thì sử dụng phương thức equals(). Vậy tại sao lại như vậy? Không phải chúng đều dùng để so sánh bằng …
Bài trước mình đã hướng dẫn phần cấu hình để sử dụng gmail xong xong, bài viết này mình sẽ hướng dẫn các bạn sử dụng gmail để gửi tin nhắn xác thực tài khoản Các bạn tạo một class có tên là EmailService đặt ở trong package Service Entity User UserRepository UserService UserServiceImpl package com.codegym.quiz.service.impl; import com.codegym.quiz.model.User; import com.codegym.quiz.model.UserPrinciple; import com.codegym.quiz.repository.UserRepository; import com.codegym.quiz.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Optional; @Service public class UserServiceImpl …
Thư viên: Các bạn hãy thêm thư viện sau vào trong file build.gradle https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail compile group: ‘org.springframework.boot’, name: ‘spring-boot-starter-mail’, version: ‘1.2.0.RELEASE’ Sau đó các bạn truy cập đường dẫn sau: https://myaccount.google.com và chọn security Và bên trong phần security, các bạn kéo xuống phần Less secure app access và bật nó lên Sau đó các bạn vào file application.properties trong dự án của mình và thêm đoạn cấu hình như sau (ở đây mình dùng biến môi trường để cấu …
Bài viết này mình sẽ hướng dẫn các bạn sử dụng Spring Boot Actuator để theo dõi ứng dụng của mình Vậy Spring Boot Actuator là gì? Mình đã tìm đọc một số khái niệm ở trên mạng và thấy khái niệm sau đó là Spring Boot Actuator là một dự án con trong Spring Boot. Nó được xây dựng để thu thập , giám sát các thông tin về ứng dụng. Và để sử dụng nó trong Spring Boot …
Ở những bài viết trước nếu các bạn để ý mình hay sử dụng @Data ở các entity, có thể nhiều người sẽ thắc mắc và lên google để tìm hiểu xem annoutation này để làm gì. Vậy nên ở bài viết này mình sẽ hướng dẫn sử dụng Lombok, một thư viện, một plugin giúp chúng ta giảm thiểu được khá nhiều thời gian trong lúc code bằng cách tự động sinh ra get, set, constructor qua các annoutation …
Sử dụng Lombok Chúng ta cùng xem tác dụng của @Data qua ví dụ sau: Nếu như ta không sử dụng @Data thì đoạn code của chúng ta sẽ phải có đầy đủ get, set, constructor như sau: Còn khi sử dụng @Data đoạn code của chúng ta sẽ được rút ngắn đi rất nhiều: @Data sẽ có tác dụng tự tạo ra constructor không đối, các getter, setter, hàm equals, hashCode và toString() @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor @NoArgsConstructor sẽ tự …
Bài viết này mình sẽ giới thiệu đến mọi người một công cụ có tên là Swagger Swagger là gì? Swagger là một phần mềm mã nguồn mở được sử dụng để phát triển thiết kế và làm các document cho các restapi và còn có một số tính năng khác các bạn có thể vào link sau để xem https://swagger.io/docs/specification/2-0/what-is-swagger/ Có một số phần mềm swagger như Swagger Editor, Swagger Codegen, Swagger Inspector, Swagger UI. Trong đó swagger UI …
Mình đã giới thiệu cho các bạn khái niệm về swagger và lý do tại sao nên sử dụng swagger ở bài trước. Hôm nay mình sẽ hướng dẫn mọi người cách tích hợp swagger vào trong ứng dụng Spring Boot. Các bạn thêm thư viện sau vào trong file build.gradle // https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 compile group: ‘io.springfox’, name: ‘springfox-swagger2’, version: ‘2.9.2’ Tạo một entity có tên là Category CategoryRepository: CategoryService và CategoryServiceImpl Sau đó chúng ta tạo một file có tên …
Bài viết này mình sẽ hướng dẫn mọi người deploy ứng dụng angular lên server của netlify Đầu tiên các bạn tạo ứng dụng Angular bằng cách mở terminal và gõ lệnh ng new tên project Các bạn bật cửa sổ terminal của webstorm lên và gõ lệnh ng build Và các bạn vào file .gitignore và xóa dòng /dist Sau đó các bạn vào github tạo một repository mới Sau khi tạo xong các bạn hãy push dự án …
Chào mọi người, vậy là đã kết thúc series này rồi. Mình cũng không phải là dạy bảo mọi người cần phải làm gì hay học gì. Mình chỉ chia sẻ những điều mình biết và tìm hiểu được để mong giúp mọi người học tập tốt hơn và đỡ tốn thời gian tìm tài liệu. Đặc biệt là để phỏng vấn tốt nhất để có được job ngon, lương cao. Series này gồm 6 chương: Spring core OOP Exception …
Đây là phần kiến thức khá quan trọng vì để có thể tương tác giữa client và server thì phải cần có phương thức http cũng như khi phát triển ứng dụng, kết nối giữa back-end và front-end cũng cần sử dụng đến phương thức http. Đây cũng là phần kiến thức cuối cùng của series phỏng vấn của mình rồi. Mọi người cùng cố gắng nhé. Câu 1: Có những Http method nào hay sử dụng nhất? 4 method …
Đây cũng là 1 phần cưc kỳ quan trọng như OOP, đó là Spring Framework. Vậy nên chúng ta cần phải nắm chắc các kiến thức về phần này để không những giúp mình code nhanh hơn mà còn là bước đệm để trở thành những lập trình viên sịn sò hơn nhé. Cùng mình đi tiếp những câu hỏi trong blog này nhé. Câu 1: IoC là gì và lợi ích của nó? IoC có nghĩa là đảo ngược …
Chúng ta tiếp tục ôn tập về database. Phần này thì chúng ta cũng học được những phần khá cơ bản khi học ở CodeGym nên câu hỏi về phần này cũng không có nhiều. Kiến thức của phần này cũng khá ít nên blog này mình sẽ nói về kiến thức chứ không phải dạng câu hỏi như những blog trước nữa nên mọi người hãy sử dụng những kiến thức này để trả lời nha Select * from …
Sau khi thực hiện đầy đủ các bước trên, các bạn vào lại dự án Spring Boot vừa tạo ở máy mình và sử dụng environment variable mình đã giới thiệu ở bài sử dụng biến môi trường trong Spring Boot (https://blog.codegym.vn/2020/02/21/huong-dan-su-dung-environment-variable-trong-spring-boot/) để cấu hình data source trên local và trên heroku như sau Trước hết chúng ta sẽ tạo file có tên local.env để sử dụng ở máy mình, file .env để sử dụng trên Heroku và cấu hình …
Bài viết này mình sẽ hướng dẫn mọi người deploy ứng dụng Spring Boot lên heroku. Đầu tiên chúng ta sẽ khởi tạo dự án Spring Boot và chọn những thư viện như sau: Sau đó truy cập vào trang web https://dashboard.heroku.com/login và tạo một tài khoản như sau: Sau đó các bạn vào trong email của mình để xác thực tài khoản và nhập mật khẩu cho tài khoản của mình (mật khẩu phải ít nhất 8 ký tự …
Như đã nói ở phần trước, “Xử lý ngoại lệ” là một phần kiến thức khó. Ở mức Junior, Fresher thì chỉ cần biết về ý nghĩa các từ khóa và hiểu luồng thực thi là OK rồi. Chúng ta bắt đầu nào. Câu 1: Xử lý ngoại lệ là gì? Là cơ chế để xử lý các lỗi nhưng vẫn duy trì được luồng thực thi của chương trinh Câu 2: checked exception và unchecked exception khác nhau ở …
Các bạn đã học được hết những câu hỏi trong những bài trước chưa. Chúng ta cùng tiếp tục đến với 4 tính chất của OOP trong blog này. Đó chính là tính trừu tượng, đóng gói, kế thừa và đa hình. Bắt đầu nhé! Câu 1: Tính trừu tượng là gì? Tính trừu tượng là ẩn các chi tiết triển khai và chỉ hiển thị các tính năng với người dùng. Tính chất này cho phép loại bỏ các …