Chuyển đến nội dung chính

Bài đăng

Tổng quan về Machine Learning

  TỔNG QUAN VỀ MACHINE LEARNING Dưới đây là note của mình về tóm tắt tổng quan về Machine Learning, về một số các mô hình truyền thống. Mọi người có thể tham khảo theo bài viết dưới đây! https://www.facebook.com/share/p/1HsBe8P9Xy/ Người viết: Lê Công Diễn Mang đi nhớ ghi nguồn

AUTOBOXING TRONG JAVA

[AUTOBOXING TRONG JAVA] Boxing, unboxing là một khái niệm liên quan giữa kiểu nguyên thủy (primitive type) và các lớp bao (Wrapper) tương ứng. Hiểu đơn giản, boxing là chuyển đổi từ kiểu nguyên thủy thành lớp bao, unboxing là chuyển từ lớp bao về kiểu nguyên thủy. Để hiểu rõ vấn đề hơn, hãy xem ví dụ dưới. Giả dụ ta muốn tạo một Collection với kiểu nguyên, ta bắt buộc phải dùng lớp Integer vì Collection không chấp nhận kiểu dữ liệu nguyên thủy. Sau khi tạo Collection, khi ta muốn lấy giá trị Integer ra là một kiểu nguyên thủy int, ta phải lấy nó ra dưới dạng một thể hiện của Integer, và dùng hàm intValue để unboxing các thể hiện của Integer thành kiểu nguyên thủy int. Việc boxing và unboxing liên tục trong dòng code khiến cho việc viết code trở nên rắc rối, chính vì thế kể từ Java 1.5 trở đi, khái niệm Autoboxing ra đời. Sự xuất hiện của autoboxing giúp người dùng làm mờ đi khoảng cách giữa lớp bao và kiểu nguyên thủy, khi nó có thể tự động chuyển đổi qua lại với nhau, nhưng họ v...

Arrays trong Java

Arrays trong Java 1.        Khái niệm Mảng trong Java được định nghĩa như sau: Mảng là một đối tượng chứa các thành phần của cùng một kiểu dữ liệu có kích thước cố định. Ta hiểu như sau: - Mảng là một đối tượng - Các thành phần (hay còn gọi là phần tử) của mảng có cùng một kiểu dữ liệu - Mảng có kích thước cố định Mỗi phần tử được định một giá trị riêng biệt gọi là chỉ số (index) Chúng ta sẽ đưa ra ví dụ để hiểu hơn về mảng. Mảng trên có tên là A, là một mảng gồm 5 phần tử (hay kích thước của mảng là 5). Ta có phần tử tại chỉ số thứ 3 là phần tử 9. 2.        Khai báo, khởi tạo Khai báo Giả sử ta khai báo một mảng số nguyên, ta khai báo như sau int[] a; Ta thấy sau chữ int có dấu [], đây là dấu để xác định đây là một mảng thuộc kiểu int. Chúng ta có thể thay đổi thành kiểu dữ liệu khác như byte[], long[], char[],… Ngoài ra, ta còn có thể khai báo bằng cách này. int a[]; Đây là một cách ...

Ứng dụng thuật toán Minimax viết AI cho trò chơi Tic Tac Toe

Ứng dụng thuật toán Minimax viết AI cho trò chơi Tic Tac Toe Trong bài viết này, mình sẽ giải thích về thuật toán minimax mình sử dụng để viết trò chơi này. Nhưng trước hết mình nên giải thích cho mọi người hiểu về AI là gì nhỉ!

Trang web giúp mình luyện code

J Trang web giúp mình luyện code J Dạo gần đây mình có tìm tòi các trang web về luyện giải thuật để nâng cao kỹ năng lập trình của mình. Trước đây mình có qua trang Codingame, chiến code với mọi người thì khá là vui nhưng cũng không hợp với mình vì bên đó giải bài tập chỉ cho thời gian ngắn và đề bài hơi khó đọc.

Cùng tìm hiểu String trong Java nào

Cùng tìm hiểu String trong Java nào Trong lập trình nói chung, String là một mảng gồm các kí tự. Khái niệm có vẻ đơn giản, nhưng trong Java, người ta không chỉ dừng lại ở mức đơn giản như thế. Hôm nay mình sẽ tập trung vào 2 mục tiêu: 1.   Các thành phần của String 2.   Tổ chức lưu trữ trong String Phần 1: Các thành phần của String String bản chất là một đối tượng được tạo thông qua lớp String. Vì Java có cung cấp mã nguồn của các lớp nên chúng ta cùng nhau khai thác nó để hiểu rõ hơn nhé. Vì là đối tượng nên chúng ta sẽ xem thuộc tính của nó trước: Như chúng ta thấy, lớp String có 2 thuộc tính: value[] và hash (ở phiên bản cũ thì có 4 thuộc tính: value[], offset, count và hash (xem chi tiết tại: http://www.docjar.com/html/api/java/lang/String.java.html ) ). Đầu tiên ta thấy rõ value[] là một mảng gồm các char, vậy tức là String trong Java được biểu diễn dưới hình thức của char array. Để đảm bảo hơn, ta thử soi hàm length() của class String thực hiện thế...

Làm thế nào để nâng cao kỹ năng giải quyết vấn đề

Làm thế nào để nâng cao kỹ năng giải quyết vấn đề Kỹ năng giải quyết vấn đề là một kỹ năng rất quan trọng, giúp cho bạn xử lý các vấn đề một cách tốt hơn, hiệu quả hơn. Vậy làm thế nào để rèn luyện kỹ năng này. Các bước mình trình bày dưới đây sẽ phần nào đó giúp các bạn rèn luyện tốt hơn. 1.   Đọc hiểu vấn đề một cách rõ ràng. Nhiều người thường hay vội vàng khi giải quyết một vấn đề. Họ không tìm hiểu kỹ càng vấn đề đã vội đặt tay vào viết vài dòng code, và rồi, họ dừng lại và cảm thấy bế tắc. Khoan nào, đừng quá vội vàng thế chứ. Nếu bạn không hiểu vấn đề, thì làm sao bạn có thể giải quyết được vấn đề chứ, phải không. Bạn hãy bình tĩnh, dành thời gian đọc vấn đề thật kỹ, đọc ít nhất 5, 6 lần, trong khi đọc nếu có một câu, một từ thắc mắc, liền hỏi ngay. Giả dụ ta có một vấn đề cần giải quyết, chẳng hạn như đảo ngược một xâu ký tự (tất nhiên không dùng hàm có sẵn rồi). Giả dụ bạn thắc mắc: Ủa, đảo ngược một xâu là gì vậy nhỉ?, thì bạn liền tìm cách giải quyết thắc mắ...

Vì sao mình lại ưa thích Java?

Vì sao mình lại ưa thích Java? Từ khi vào đại học và tiếp xúc với Java, mình mới cảm thấy Java là một ngôn ngữ khá là “good” với mình trong thời điểm hiện tại. Vì cũng đã từng làm việc với một vài ngôn ngữ lập trình khác, nên mình thấy rõ được điểm mạnh mà Java mang lại là như thế nào.

Stack và Heap trong Java

Stack và Heap trong Java Đối với các lập trình viên, không chỉ hoàn thiện chương trình là đủ, chúng ta còn phải làm cho chương trình có hiệu suất tốt hơn: làm chương trình chạy thời gian ngắn hơn, tốt ít bộ nhớ hơn. Vấn đề về bộ nhớ chính là một bài toán hiệu suất mà các nhà lập trình phải giải quyết nó một cách tối ưu nhất. Để giải quyết về vấn đề này, chúng ta cần phải hiểu rõ về bộ nhớ trên máy tính, đặc biệt là việc sử dụng bộ nhớ của nó.

Số âm được biểu diễn như thế nào?

Số âm được biểu diễn như thế nào?

Access modifier là gì?

Access modifier là gì? Để làm rõ khái niệm này, tôi sẽ cho bạn một ví dụ nho nhỏ Một công ty có 3 dạng người: Nhân viên, Thư ký, Tổng giám đốc . Trong công ty có nhiều căn phòng, mỗi căn phòng đều có chiếc bảng treo trước cửa. Những chiếc bảng sẽ ghi 1 trong 3 dòng chữ: Công cộng (dành cho Nhân viên, Thư ký và Tổng giám đốc), Nội bộ (dành cho Thư ký và Tổng giám đốc) hoặc Bí mật (chỉ dành cho Tổng giám đốc). Như vậy, khi một căn phòng được phân quyền là “Công cộng”, cả 3 dạng người trên đều có thể truy cập (đi vào) vào căn phòng này, còn có thể hiểu thêm là căn phòng này có thể được truy cập từ 3 dạng người trên. Tương tự như thế, với căn phòng loại “Nội bộ”, chỉ Thư ký và Tổng giám đốc có khả năng truy cập vào căn phòng đó, còn Nhân viên “không được phép” truy cập vào căn phòng. Và cứ như thế… Phân quyền truy cập (Access modifier) một căn phòng Ở đây, Access modifier được áp dụng lên căn phòng, tùy vào loại của nó mà các dạng người có thể truy cập vào. Quay trở lạ...

Interface là gì?

Interface là gì?           Trong bài viết này, mình sẽ giải thích từ cấp độ nghĩa của từ đến khái niệm của interface . Các đối tượng tương tác với thế giới bên ngoài thông qua phương thức (sau này cụm từ “trạng thái” và “hành vi” như các bài viết trước mình sẽ thay bằng “thuộc tính” và “phương thức”). Các phương thức của một đối tượng chính là mối liên hệ sự tương tác giữa đối tượng và thế giới thực, hay còn gọi nó là interface (giao diện). Như một cái ti vi, là một ví dụ, ta có thể tương tác với các điện tử bên trong chiếc ti vi thông qua các nút bấm . Vậy các nút bấm chính là interface giữa bạn và ti vi. Interface giúp bạn và ti vi tương tác với nhau           Trong lập trình hướng đối tượng, khái niệm interface nghĩa là tập hợp các phương thức, không có các thuộc tính như một class. Cú pháp khởi tạo interface như sau: //Tạo một interface của xe đạp interface IBicycle { ...

Kế thừa là gì?

Kế thừa là gì?           Các đối tượng khác nhau thường có một số đặc điểm chung. Ví dụ như xe đạp leo núi, xe đạp đôi, xe đạp đi đường, chúng đều có đặc điểm chung của một chiếc xe đạp, nhưng bản thân mỗi chiếc xe đạp lại mang những đặc điểm riêng làm chúng khác biệt hơn so với các loại xe còn lại: Xe đạp leo núi thì lốp xe dày hơn, xe đạp đôi thì có 2 ghế ngồi và 2 tay điều khiển, xe đạp đi đường thì có trọng lượng nhẹ hơn. Ta gọi xe đạp là lớp cha (superclass) và xe đạp leo núi, xe đạp đôi, xe đạp đi đường là các lớp con (subclass). Các lớp con thì kế thừa (inheritance) từ lớp cha.           Vậy kế thừa , đúng như nghĩa của nó, là việc thừa hưởng các đặc điểm và hành vi từ lớp cha , trong khi đó vẫn có thể phát triển những đặc điểm và hành vi (hay thuộc tính và phương thức khi nói trong lập trình) của mình ( lớp con ). Ở ví dụ trên, xe đạp leo núi, xe đạp đôi, xe đạp đi đường đều thừa ...

Class là gì?

Class là gì?      Trên thực tế, cụ thể là ở xung quanh cuộc sống của bạn, có rất nhiều vật dụng có tính tương đồng nhau. Có đến hàng trăm chiếc xe đạp mà ta có thể bắt gặp hằng ngày, ở trường học, ngoài đường, kể cả chiếc xe trong nhà bạn (nếu có nhé). Mỗi chiếc xe đạp ấy được làm từ cùng 1 bản thiết kế, và chúng đều cùng có các thành phần giống nhau. Và mỗi chiếc xe đạp là một instance (thể hiện) của một  class (lớp) của chiếc xe đạp đó. Class là một bản thiết kế thứ mà những chiếc xe đạp được sản xuất.      Chúng ta sẽ tạo 1 C lass Bicycle với các thuộc tính và phương thức như hình dưới: Ảnh minh họa về class Bicycle và sẽ triển khai thành code trong Java như sau: class Bicycle{ int wheel = 2;      int gear = 1;      int control = 1;      boolean isRun(boolean start){            return start==true;     ...