Lập Trình
Tổng hợp các thông tin, kinh nghiệm hữu ích và mới nhất về lập trình cần học gì, phỏng vấn, mức lương trong ngành IT như thế nào, tìm hiểu ngay!
398 bài viết

Tổng quan về JPA (Java Persistence API)
Bài viết được sự cho phép của tác giả Giang Phan Bất kỳ một ứng dụng nào cũng đều cần phải thực hiện các tháo tác (CRUD) đến database bằng việc lưu trữ, truy vấn dữ liệu. Chúng ta cần phải viết nhiều code để thực hiện các việc này. Với công nghệ JDBC trước đây, chúng ta phải thực hiện các việc: mở kết nối vào Database, tạo các Statement, ResultSet, … và sau cùng phải đóng tất cả các thứ đó lại. Dẫn đến code sẽ trở nên cồng kềnh, khó mở rộng và bảo trì. Chúng ta cũng cần phải làm việc với cả Java code và SQL. Thực tế, từng Database khác nhau thì câu SQL có một số phần khác nhau, nên đòi hỏi chúng ta phải nắm được sự khác biệt này để viết code cho phù hợp. Khi ứng dụng muốn chuyển từ database sang database khác (ví dụ từ MySQL sang Oracle) thì chắc chắn sẽ có một số phần của câu SQL cần phải đổi. Công việc sửa code lại đòi hỏi phải test lại ứng dụng. Điều này sẽ tốn thời gian, chi phí phát triển và cũng gặp không ít rủi ro. Để khắc phục nhược điểm này, đã có rất nhiều Framework ra đời với mục đích giúp xóa đi vấn để về tương thích giữa các Database, giúp tập trung vào phần xử lý nghiệp vụ. Trong phần tiếp theo của bài viết này, tôi sẽ giới thiệu với các bạn JPA (Java Persistence API) – một chuẩn đặc tả cho các ORM Framework giải quyết vấn đề trên. 10 lý do cho thấy tại sao bạn nên theo học ngôn ngữ lập trình Java 10 tips để trở thành Java Developer xịn hơn Xem thêm các...

Class trong Java là gì? Object trong Java là gì?
Bài viết được sự cho phép của tác giả Trần Hữu Cương 1. Đối tượng là gì (Object là gì?) Khoan nói tới lập trình, chúng ta hãy nói tới đối tượng trong đời sống thực tế hàng ngày. Đối tượng là một thực thể vật lý, có thể là một con vật, một đồ vật… Ví dụ như ngôi nhà, cái xe, người… Mỗi đối tượng sẽ có đặc trưng riêng của nó: Trạng thái của đối tượng: ví dụ cái xe màu gì, bao nhiêu phân khối, giá tiền… Hành vi: các hành động của đối tượng. Ví dụ cái xe có thể chạy, phát tiếng còi, phát ánh đèn… Định danh / nhận diện: là một tính chất giúp các đối tượng phân biệt được với nhau. Các đối tượng có thể nhìn giống nhau không phải là một. Ví dụ hai người sinh đôi nhìn giống hệt nhau nhưng là hai người (đối tượng) riêng biệt. Record class trong Java Giới thiệu Javascript Proxy object Trong lập trình hướng đối tượng, các đối tượng trong Java cũng có ba đặc trưng trên: Trạng thái: thể hiện ở giá trị của các biến class (các field của đối tượng) Hành vi: các method/phương thức của class Định danh: Mỗi khi bạn tạo một đối tượng mới thì chúng sẽ được lưu trong bộ nhớ với địa chỉ, kích thước khác nhau. JVM phân biệt được các đối tượng theo các địa chỉ nhớ đó. Nếu bạn thấy có 2 đối tượng A và B có cùng 1 bộ nhớ thì bản chất nó là 1 đối tượng với các tên gọi khác nhau mà thôi (Nếu A thay đổi thì B cũng thay đổi y hệt, ngược lại B thay đổi thì A cũng sẽ thay đổi...

Tìm hiểu Java Design Pattern – Service Locator
Bài viết được sự cho phép của tác giả Giang Phan Trong các ứng dụng, chúng ta thường gặp trường hợp một class Client phụ thuộc vào một service hoặc một component là những lớp cụ thể (concrete class) trong lúc chạy ứng dụng. Sự phụ thuộc của class Client vào các service này sẽ có một số vấn đề cần phải giải quyết: Nếu thay thế hoặc cập nhật các service phụ thuộc, chúng ta cần thay đổi mã nguồn của class Client. Các concrete class của một phụ thuộc có thể thay đổi tại thời điểm run-time hay không? Các class cần phải viết những đoạn code cho việc quản lý, khởi tạo các phụ thuộc. Khó khăn khi viết Unit Test do các lớp được kết hợp chặt chẽ. Giải pháp cho vấn đề này chính là áp dụng Service Locator pattern , nó tạo ra một class chứa các tham chiếu đến các service và nó đóng gói các xử lý nghiệp vụ để xác định các service. Các loại Design patterns Factory Method Pattern - Giải thích đơn giản, dễ hiểu Service Locator Pattern là gì? The service locator pattern is a design pattern used in software development to encapsulate the processes involved in obtaining a service with a strong abstraction layer. This pattern uses a central registry known as the “service locator” which on request returns the information necessary to perform a certain task. The ServiceLocator is responsible for returning instances of services when they are requested for by the service consumers or the service clients. Service Locator là một design pattern thông dụng cho phép tách rời (decouple) một class với các dependency (hay được gọi là service) của nó. Service Locator có thể coi là một đối tượng trung gian trong việc...

Truy vấn cơ sở dữ liệu MongoDB bằng PHP
Bài viết được sự cho phép của smartjob.vn MongoDB hỗ trợ rất nhiều Driver cho các ngôn ngữ lập trình khác nhau. Trong bài viết này, SmartJob trình bày về việc kết nối, truy vấn từ PHP. Máy tính sử dụng: Windows 10, 64 bit, sử dụng bộ tích hợp XAMPP. Cài đặt MongoDB sử dụng MEAN stack (bạn xem các bài viết trước đã hướng dẫn cách cài đặt). Xem thêm việc làm mongoBD tại các công ty hàng đầu trên Station D Bước 1. Tải về tập tin mở rộng dll tại đường link: http://windows.php.net/downloads/pecl/releases/mongodb/1.1.4/php_mongodb-1.1.4-7.0-ts-vc14-x86.zip Bước 2. Giải nén. Copy file php_mongodb . dll vào thư mục ext, ví dụ trên máy của tác giả là: C : xampp php ext Bước 3. Tìm file php . ini , ví dụ, trên máy tác giả là: C : xampp php php . ini . Chèn vào cuối tập tin này: extension = php_mongodb . dll Bước 4. Giả sử có thư mục: C : xampp htdocs vy mongo – php Sử dụng cmd : Gõ lệnh: composer require "mongodb/mongodb=^1.0.0" để tải thư viện bằng Composer về. Composer tự động tải về và thư mục có thêm 1 thư mục và 2 tập tin mới: Tạo 3 tập tin info.php , add.php , find.php để kiểm tra các tính năng mà thư viện MongoDB PHP cung cấp: Tập tin info . php <?php phpinfo(); Tìm việc làm PHP đãi ngộ tốt trên Station D Tập tin add . php <?php require 'vendor/autoload.php'; $client = new MongoDBClient ( "mongodb://localhost:27017" ); $collection = $client->insource->devs; $result = $collection->insertOne ( [ 'fullname' => 'Phạm Văn Đoan', 'site' => 'Viettel Telecom' ] ); echo "Đã thêm thành công một document có ID là '{$result->getInsertedId()}'<br/>"; $result2 = $collection->insertOne ( [ 'fullname' => 'Lê Văn Kiên',...

Java Talk: Java – Ngôi sao hết thời?
Java “hết thời” hay “chết dần” luôn là quan điểm nhận về nhiều ý kiến trái chiều trong cộng đồng Kỹ sư phần mềm những năm gần đây. Liệu đó có phải là sự thật hay chỉ là lời đồn đại trong thế giới “tech-biz”? *Nội dung bài viết tham khảo từ sự kiện Java Talk: Java – Ngôi sao hết thời? do CMC Global tổ chức, với sự đồng hành của Viblo Platform và Trung tâm Đổi mới Sáng tạo Quốc gia (NIC). Sự kiện được dẫn dắt bởi anh Phan Tích Hoàng – Solution Architect và anh Nguyễn Thế Hưng – Technical Leader đến từ CMC Global. Sự thất thế của Java Java là ngôn ngữ lập trình hướng đối tượng được phát triển bởi Sun Microsystems, phát hành lần đầu tiên năm 1995 và được Tập đoàn Oracle mua lại năm 2010. Tính đến nay, Java đã qua nhiều lần cải tiến với tổng cộng 19 phiên bản được phát hành. Tuy nhiên, Java đang không tránh khỏi sự cạnh tranh gay gắt của những ngôn ngữ lập trình hiện đại với những điểm ưu việt riêng, mang lại tính cạnh tranh và phần nào “thắng thế” Java. Anh Phan Tích Hoàng (Solution Architect, CMC Global), diễn giả trong sự kiện chia sẻ “Lần đầu làm quen với Java từ những năm 1997, mình bị thu hút bởi những triết lý mới của ngôn ngữ này. Ưu điểm lớn nhất của Java là tính ổn định. Nhưng nếu làm cùng một công việc, Java phải đòi hỏi nhiều dòng code hơn. Điều này chính là bất lợi của Java so với các ngôn ngữ khác.” Đồng quan điểm, anh Nguyễn Thế Hưng (Technical Leader, CMC Global) cũng cho rằng đứng trước sự ra đời của nhiều công...

Lỗi Could not create the Java Virtual Machine khi chạy Minecraft
Bài viết được sự cho phép của blogchiasekienthuc.com Có bao giờ bạn gặp một thông báo lỗi như thế này chưa? (lỗi này xảy ra khi mình chạy game Minecraft). Error: Could not create the Java Virtual Machine. Error: A fatalexception has occurred. Program will exit. Mình nghĩ là lỗi này chắc nhiều bạn cũng đã từng bị rồi. Chính vì thế mà hôm nay mình sẽ hướng dẫn cho các bạn các cách để sửa lỗi này một cách hiệu quả nhất nhé. 10 lý do cho thấy tại sao bạn nên theo học ngôn ngữ lập trình Java 10 tips để trở thành Java Developer xịn hơn Xem thêm nhiều việc làm Java lương cao trên Station D #1. Tạo một System Variable cho Java Đầu tiên bạn nhấn tổ hợp phím Windows + R để mở hộp thoại Run => sau đó nhập sysdm.cpl => và bấm OK . Tiếp theo, bạn vào tab Advanced => và bấm vào Environment Variables trong phần Startup and Recovery . Sau đó bạn tiếp tục bấm vào New ở phàn System Variables . Sau đó bạn thiết lập như sau: Variable name bạn nhập JAVA_OPTIONS Variable value bạn nhập là –Xmx512M để xác định số lượng RAM tối đa mà Minecraft có thể sử dụng, ở trong ví dụ này mình để là 512MB. Bạn có thể thay đổi thành –Xmx1024M hoặc –Xmx2048M. => Cuối cùng bạn bấm OK để thực hiện. #2. Chạy Java với quyền Admin Để thực hiện điều này thì bạn nhấn tổ hợp phím Windows + S để mở Windows Search => sau đó nhập từ khóa tìm kiếm là Java . Nếu như có sẵn shorcut Java ở ngoài màn hình Desktop thì nhấn chuột phải vào shortcut đó luôn. Bấm chuột phải vào...

Điều khiển luồng trong Python
Bài viết được sự cho phép của tác giả Nguyễn Chí Thức Các bạn cũng đã khá quen thuộc với các lệnh điều khiển luồng trong C, C++ như if, if else, … Chương này sẽ trình bày về các lệnh điều khiển luồng trong Python. Ngôn ngữ lập trình Python coi các giá trị khác null và khác 0 là true, và coi các giá trị là null hoặc 0 là false. Trong bài này chúng ta cùng tìm hiểu các lệnh điều khiển luồng trong Python: Lệnh if trong Python Lệnh if trong Python là giống như trong ngôn ngữ C. Lệnh này được sử dụng để kiểm tra một điều kiện, nếu điều kiện là true thì lệnh của khối if sẽ được thực thi, nếu không nó sẽ bị bỏ qua. Khởi Đầu Dự Án Python Như Thế Nào Để Thuận Tiện Phát Triển Lên Lệnh if…else trong Python Một lệnh else có thể được sử dụng kết hợp với lệnh if. Một lệnh else chứa khối code mà thực thi nếu biểu thức điều kiện trong lệnh if được ước lượng là 0 hoặc một giá trị false. Lệnh else là lệnh tùy ý và chỉ có duy nhất một lệnh else sau lệnh if. Xem thêm tuyển dụng python lương cao cho bạn Lồng các lệnh if trong Python Đôi khi có một tình huống là khi bạn muốn kiểm tra thêm một điều kiện khác sau khi một điều kiện đã được ước lượng là true. Trong tình huống như vậy, bạn có thể sử dụng các lệnh if lồng nhau trong Python. Trong cấu trúc các lệnh if lồng nhau, bạn có thể có cấu trúc if…elif…else bên trong cấu trúc if…elif…else khác. Python free variable Trường hợp các Suite lệnh đơn...

Các lệnh: break, continue, pass trong Python
Bài viết được sự cho phép của tác giả Nguyễn Chí Thức Lệnh break trong Python Lệnh break trong Python là giống như lệnh break trong C. Lệnh này kết thúc vòng lặp hiện tại và truyền điều khiển tới cuối vòng lặp. Lệnh break này có thể được sử dụng trong vòng lặp while và vòng lặp for. Nếu bạn đang sử dụng lồng vòng lặp, thì lệnh break kết thúc sự thực thi của vòng lặp bên trong và bắt đầu thực thi dòng code tiếp theo của khối. Cú pháp của lệnh break là khá đơn giản: break Dưới đây là ví dụ minh họa lệnh break trong Python: for letter in 'Python' : # Vi du thu nhat if letter == 'h' : break print 'Chu cai hien tai :' , letter var = 10 # Vi du thu hai while var > 0 : print 'Gia tri bien hien tai la :' , var var = var - 1 if var == 5 : break print "Good bye!" Khi code trên được thực thi sẽ cho kết quả: Chu cai hien tai : P Chu cai hien tai : y Chu cai hien tai : t Gia tri bien hien tai la : 10 Gia tri bien hien tai la : 9 Gia tri bien hien tai la : 8 Gia tri bien hien tai la : 7 Gia tri bien hien tai la : 6 Good bye! Tham số hàm Python Lệnh continue trong Python Lệnh continue trả về điều khiển tới phần ban đầu của vòng lặp. Lệnh này bỏ qua lần lặp hiện tại và bắt buộc lần lặp tiếp theo của vòng lặp diễn ra. Lệnh continue có thể được sử dụng trong vòng lặp while hoặc vòng lặp for. Dưới...
![[Python cơ bản thường dùng trong công việc] Phần 9 : Kết nối MySQL](https://img-cdn.stationd.blog/w800-h600/featured/class-trong-python-218x150_20250424021656_e7d7cdd7.png)
[Python cơ bản thường dùng trong công việc] Phần 9 : Kết nối MySQL
MySQL là một hệ cơ sở dữ liệu quan hệ phổ biến nhất hiện nay. Rất nhiều ngôn ngữ có thể kết nối đến MySQL và Python cũng không ngoại lệ. Mặc định Python không có thư viện để kết nối đến MySQL server. Trong phần này, để kết nối đến MySQL Server từ Python, chúng ta sẽ sử dụng module MySQLdb 9.1. Cài đặt MySQLdb Cài đặt thông qua pip như sau: $ sudo pip install MySQL-python Tham khảo thêm tại: https://pypi.python.org/pypi/MySQL Khai báo module MySQLdb là có thể sử dụng. import MySQLdb Trong một số trường hợp đã cài MySQLdb nhưng import báo lỗi thiếu file libmysqlclient.18.dylib . Nguyên nhân có thể là do hiện tại đường dẫn đến file không tồn tại. Thử tạo symlink hoặc sử dụng câu lệnh sau để tạo symlink từ file libmysqlclient.18.dylib đến thư mục /usr/lib/ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 20 tài liệu học Python thiết thực để trở thành lập trình viên chuyên nghiệp 9.2. Kết nối đến MySQL Server Bạn cần có một MySQL server đang chạy và cho kết nối đến. Trong trường hợp này là localhost nên không cần cấu hình đặc biệt, chỉ cần cung cấp username và password là có thể kết nối đến MySQL Server. Thực hiện gọi hàm như sau để trả về kết nối: import MySQLdb dbcon = MySQLdb.connect(host = 'localhost', user = 'myusername', passwd = 'mypassword', db = 'mydbname ') Nếu kết nối không thành công thì sẽ báo lỗi và ngưng chương trình. Cách kết nối an toàn là đưa vào trong try để bắt lỗi như sau: import MySQLdb db = None try: db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = 'root', db = 'mysql') except MySQLdb.Error, e: print "Error %d: %s" % (e.args[0],e.args[1]) sys.exit(1) if db:...

Người dùng nhập liệu với hàm input() trong Python
Bài viết được sự cho phép của tác giả Kien Dang Chung Video trong bài viết Trong một chương trình, chúng ta cần có sự tương tác giữa người dùng và chương trình máy tính. Từ các bài viết đầu tiên đến giờ chúng ta đã biết đến hàm print() để in một thông báo ra màn hình cho người dùng. Vậy làm cách nào để người dùng có thể đưa dữ liệu vào chương trình Python trên máy tính? Hàm input() Hàm input() trong Python sẽ dừng chương trình lại cho đến khi phím Enter được nhấn, nó trả về một chuỗi ký tự do người dùng nhập vào từ bàn phím (trước khi bấm Enter). Cú pháp của hàm input(): input ( [ promt ] ) Trong đó [promt] là thông báo sẽ hiển thị ra màn hình, gợi ý thông tin người dùng cần nhập vào chương trình. Quy tắc đặt tên biến trong Python đúng chuẩn 2024 Ví dụ 1: my_name = "Jose" your_name = input ( "Enter your name:" ) print ( f "Hello {your_name}. My name is {my_name}" ) Chú ý: Hàm input() trả về một chuỗi ký tự, ngay cả khi người dùng nhập vào một số thì nó cũng chuyển đổi thành chuỗi. Do đó, khi thực hiện các tính toán trên dữ liệu nhập vào, bạn cần chuyển đổi dạng từ chuỗi thành số. Xem thêm nhiều việc làm Python hấp dẫn trên Station D Ví dụ 2: age = input ( "Enter your age: " ) x = int ( age ) print ( f "You have lived for {x * 12} months." ) Trong ví dụ trên, chúng ta đã chuyển đổi chuỗi người dùng nhập vào thành một số nguyên thông qua hàm int(). Trong một số bài...
![Dãy Fibonacci [Bài tập Python]](https://img-cdn.stationd.blog/w800-h600/featured/fibonacci-218x150_20250424085339_f92bab78.jpg)
Dãy Fibonacci [Bài tập Python]
Bài viết được sự cho phép của tác giả Khiêm Lê Dãy Fibonacci Dãy Fibonacci là một dãy vô hạn các số tự nhiên, bắt đầu dãy là hai phần tử 1, các phần tử sau đó là tổng của hai phần tử trước đó. Công thức truy hồi của số dãy Fibonacci là: Nếu n = 1 hoặc n = 2 F(n) := 1 Nếu n > 2 F(n) := F(n – 1) + F(n – 2) Trong lập trình, bài toán tĩnh dãy Fibonacci thường được dùng để làm quen với đệ quy hoặc quy hoạch động cơ bản. Trước khi bắt đầu cài đặt thuật toán, hãy chắc chắn rằng bạn đã biết cơ bản về python, còn bây giờ thì bắt đầu thôi. Lưu ý: trong bài viết mình có đề cập đến thời gian thực thi, thời gian này chỉ để tham khảo, thời gian thực thi sẽ luôn sai khác do cấu hình mỗi máy là khác nhau. Việc làm lập trình Python tuyển gấp Đệ quy Theo như khái niệm về dãy Fibonacci, chúng ta sẽ có 2 trường hợp cơ sở (base case) là n = 1 và n = 2, lúc đó F(n) := 1, đây chính là điều kiện dừng cho hàm đệ quy của chúng ta. Ngược lại đối với n > 2, lúc này F(n) := F(n – 1) + F(n – 2), F(n – 1) và F(n – 2) chính là phần gọi lại chính hàm F(n) với n lúc này là n – 1 và n – 2, hay chính là phương thức đệ quy. Vậy chúng ta sẽ có đoạn code sau: def F ( n ) : if n == 1 or n == 2 : # base case return 1 return F (...

AI đi vào thực tiễn (Phần 1): Những biến động của năm 2018
Năm 2018 có thể coi là một dấu mốc lớn trong lĩnh vực trí tuệ nhân tạo (AI), dù có cả những nốt thăng và trầm. Các tin đáng chú ý về AI trong năm 2018 Xe tự động: Bất kể những diễn biến không mấy lạc quan, rõ ràng năm 2018 là một năm quan trọng trong việc thúc đẩy ngành công nghiệp sản xuất xe tự vận hành đi lên. Hàng loạt cuộc thử nghiệm được tiến hành của Uber, Waymo (của Google), Lyft cùng nhiều công ty khác được diễn ra và đã có những thành quả đầu tiên sau giai đoạn kiện tụng về quyền sở hữu trí tuệ giữa các ông lớn. Có thể nói xe tự lái đã chính thức có mặt dù vẫn còn nhiều vấn đề phải giải quyết trước khi các phương tiện có khả năng tự chủ hoàn toàn. Trợ lý ảo, ứng dụng tại các doanh nghiệp: Các thiết bị tích hợp trợ lý “ảo” và được điều hành thông qua giọng nói đã được đầu tư về hình ảnh, tính năng một cách đáng kể và có một vị trí lớn trong xu hướng AI trong năm 2018. Các trợ lý ảo có thể gọi điện, trò chuyện với người thật hoàn hảo tới mức không thể hình dung là họ đang nói chuyện với máy. Chatbot trở nên phổ biến tại lĩnh vực dịch vụ chăm sóc khách hàng, trong khi những công nghệ tự quản lý thông tin tích hợp AI đã dần hoàn thiện hơn. Nhiều công ty cũng đang nỗ lực đưa ra những bước tiến mới trong quá trình xử lý ngôn ngữ tự nhiên, giúp doanh nghiệp có thể tìm hiểu rõ hơn các luồng dữ liệu phi cấu trúc của họ....