Các lệnh Linux dành cho người mới bắt đầu: Hướng dẫn thiết bị đầu cuối cần thiết kèm ví dụ
Thiết bị đầu cuối trông có vẻ đáng sợ cho đến khi bạn biết được vài chục lệnh. Tìm hiểu những vấn đề quan trọng, được nhóm theo những gì bạn đang cố gắng thực hiện, sau đó kết hợp chúng để trả lời câu hỏi thực sự về tệp nhật ký.
- Một tập hợp nhỏ lệnh Linux bao gồm hầu hết công việc hàng ngày:
ls,cd,cp,mv,rm,catvàgrep. - Ống (
|) kết nối các công cụ đơn giản để trả lời các câu hỏi khó hơn. rmkhông có thùng rác nên hãy kiểm tra kỹ trước khi nhấn Enter.- Sử dụng
manhoặc--helpbất cứ khi nào bạn quên một tùy chọn.
Hầu hết các máy chủ, bộ chứa và máy đám mây đều chạy Linux và chúng thường không có màn hình đồ họa. Đó là lý do tại sao việc học các lệnh Linux lại là một kỹ năng hữu ích cho cả nhà phát triển và người thử nghiệm. Bạn không cần phải ghi nhớ hàng trăm. Một vài chục sẽ mang bạn đi một chặng đường dài.
Chúng tôi đã thử nghiệm các ví dụ về tệp, tìm kiếm và đường dẫn trong Git Bash trên Windows, nơi cung cấp các công cụ cốt lõi giống nhau và kết quả đầu ra là từ lần chạy đó. Chúng tôi không chạy các lệnh về quyền, dịch vụ, gói và quyền truy cập từ xa vì chúng phụ thuộc vào hệ thống Linux thực. Thông tin chi tiết có thể thay đổi tùy theo phân phối, vì vậy hãy kiểm tra tài liệu của hệ thống của riêng bạn.
Bắt đầu an toàn
Bạn không cần cài đặt Linux để thực hành. Các lựa chọn tốt bao gồm:
- Windows: Hệ thống con Windows cho Linux (WSL) hoặc Git Bash để biết thông tin cơ bản.
- macOS: Terminal tích hợp, có các lệnh rất giống nhau, mặc dù một số tùy chọn có khác nhau.
- Bất kỳ hệ thống nào: một thùng chứa. Hướng dẫn về Docker dành cho người mới bắt đầu của chúng tôi chỉ ra cách bắt đầu một cái.
Thực hành trong một thư mục dùng một lần và nhớ rằng mọi thứ trong Linux đều phân biệt chữ hoa chữ thường: Notes.txt và notes.txt là các tệp khác nhau.
Giải phẫu của một lệnh
ls -l /var/log
^ ^ ^
| | argument: what to act on
| option: how to behave
command: what to run
Các tùy chọn ngắn thường có thể được kết hợp, vì vậy ls -l -a và ls -la giống nhau. Các tùy chọn dài sử dụng hai dấu gạch ngang, như trong --help. Để được trợ giúp, hãy chạy man ls để xem hướng dẫn đầy đủ hoặc ls --help để xem tóm tắt. Nhấn q để thoát khỏi trang hướng dẫn.
Di chuyển xung quanh hệ thống tập tin
| Lệnh | Nó làm gì |
|---|---|
pwd |
In thư mục hiện tại của bạn |
ls |
Liệt kê các tập tin |
ls -la |
Liệt kê tất cả các tệp, bao gồm cả các tệp ẩn, với thông tin chi tiết |
thư mục cd |
Di chuyển vào một thư mục |
đĩa .. |
Di chuyển lên một cấp độ |
đĩa ~ |
Đi tới thư mục chính của bạn |
cd - |
Trở về thư mục trước đó |
Nhấn Tab để tự động hoàn thành tên tệp và mũi tên lên để quay lại các lệnh trước đó. Hai thói quen này giúp tiết kiệm thời gian hơn bất kỳ mẹo nào khác ở đây. Tên tệp bắt đầu bằng dấu chấm, chẳng hạn như .env, bị ẩn và ls chỉ hiển thị bằng -a.
Quản lý tập tin và thư mục
| Lệnh | Nó làm gì |
|---|---|
mkdir -p dự án/nhật ký |
Tạo thư mục, bao gồm cả cha mẹ |
chạm vào ghi chú.txt |
Tạo một tập tin trống |
cp a.txt b.txt |
Sao chép một tập tin |
cp -r src/ sao lưu/ |
Sao chép một thư mục |
mv a.txt b.txt |
Đổi tên hoặc di chuyển một tập tin |
rm a.txt |
Xóa một tập tin |
rm -r thư mục/ |
Xóa một thư mục và mọi thứ trong đó |
Đây là một phiên ngắn trong hoạt động của chúng tôi:
$ mkdir -p project/logs
$ cd project
$ touch notes.txt
$ ls
logs notes.txt
$ cp notes.txt backup.txt
$ mv backup.txt old.txt
$ ls
logs notes.txt old.txt
$ rm old.txt
$ ls
logs notes.txt
Mẹo: rm không sử dụng thùng rác và các tệp đã xóa thường không còn nữa. Hãy đặc biệt cẩn thận với rm -r và các ký tự đại diện. Trước tiên, hãy chạy ls với cùng một mẫu để xem chính xác những gì phù hợp và sử dụng rm -i nếu bạn muốn có lời nhắc cho mỗi tệp.
Xem nội dung tập tin
| Lệnh | Nó làm gì |
|---|---|
tập tin mèo |
In toàn bộ tập tin |
ít tập tin hơn |
Cuộn qua một tập tin dài (q để thoát) |
tập tin đầu -n 5 |
Hiển thị năm dòng đầu tiên |
tập tin đuôi -n 5 |
Hiển thị năm dòng cuối cùng |
tập tin đuôi -f |
Theo dòng mới khi chúng được viết |
tập tin wc -l |
Đếm dòng |
Đối với một số ví dụ tiếp theo, chúng tôi đã tạo một tệp nhật ký nhỏ:
$ cat logs/app.log
ERROR db down
INFO started
ERROR disk full
INFO stopped
$ head -n 1 logs/app.log
ERROR db down
$ tail -n 1 logs/app.log
INFO stopped
$ wc -l logs/app.log
4 logs/app.log
tail -f là công cụ hàng ngày để xem nhật ký ứng dụng trực tiếp trong khi bạn tái hiện lỗi. Nhấn Ctrl+C để dừng nó.
Tìm kiếm bằng grep và tìm
grep tìm kiếm bên trong các tệp và find tự tìm kiếm các tệp:
$ grep ERROR logs/app.log
ERROR db down
ERROR disk full
$ grep -c ERROR logs/app.log
2
$ find . -name "*.log"
./logs/app.log
| Tùy chọn | Ý nghĩa |
|---|---|
grep -i |
Bỏ qua trường hợp |
grep -r |
Tìm kiếm một thư mục theo cách đệ quy |
grep -n |
Hiển thị số dòng |
grep -v |
Hiển thị các dòng không khớp |
grep -c |
Đếm các dòng phù hợp |
Đường ống và chuyển hướng
Đây là ý tưởng làm cho dòng lệnh trở nên mạnh mẽ. Mỗi công cụ thực hiện một công việc nhỏ và bạn kết nối chúng:
| Biểu tượng | Nó làm gì |
|---|---|
| |
Gửi đầu ra của một lệnh vào lệnh tiếp theo |
> |
Ghi đầu ra vào một tập tin, thay thế nội dung của nó |
>> |
Nối đầu ra vào một tập tin |
2> |
Ghi thông báo lỗi vào một tập tin |
$ echo "hello" > greeting.txt
$ echo "world" >> greeting.txt
$ cat greeting.txt
hello
world
Hãy cẩn thận với một >, vì nó âm thầm ghi đè lên những gì đã có trong tệp.
Một ví dụ thực tế: tóm tắt nhật ký
Có bao nhiêu dòng của mỗi loại trong nhật ký của chúng tôi? Kết hợp bốn lệnh đơn giản sẽ cho câu trả lời:
$ cut -d' ' -f1 logs/app.log | sort | uniq -c
2 ERROR
2 INFO
Đọc từ trái sang phải: cut lấy từ đầu tiên cách nhau bằng dấu cách trên mỗi dòng, sort nhóm các từ giống nhau lại với nhau và uniq -c đếm từng nhóm. Bước sắp xếp quan trọng vì uniq chỉ thu gọn các bản sao lân cận. Thêm | sort -nr vào cuối để liệt kê những điều phổ biến nhất trước tiên.
Loại lời giải thích này sẽ giúp ích rất nhiều khi bạn đang điều tra các lỗi. Nó có thể nhanh chóng cho bạn biết lỗi xảy ra hai lần hay hai nghìn lần. Đây là chi tiết hữu ích để đưa vào báo cáo lỗi.
Quyền tập tin
Chạy ls -l và bạn sẽ thấy một cái gì đó như thế này:
-rwxr-xr-- 1 asha devs 512 Nov 1 10:00 deploy.sh
Sau ký tự đầu tiên hiển thị loại tệp, có ba nhóm gồm ba ký tự dành cho chủ sở hữu, nhóm và mọi người khác. Mỗi cái có thể có r (đọc), w (ghi) và x (thực thi).
| Lệnh | Nó làm gì |
|---|---|
chmod +x triển khai.sh |
Làm cho một tập lệnh có thể thực thi được |
tập tin chmod 644 |
Chủ sở hữu có thể đọc và viết, người khác có thể đọc |
chmod 755 script.sh |
Chủ sở hữu có toàn quyền truy cập, những người khác có thể đọc và chạy |
tập tin asha chown |
Thay đổi chủ sở hữu |
lệnh sudo |
Chạy lệnh với tư cách quản trị viên |
Các số cộng lại: đọc là 4, viết là 2 và thực thi là 1. Vậy 7 có nghĩa là cả ba và 5 có nghĩa là đọc và thực thi. Tránh chmod 777, nơi cung cấp cho mọi người quyền truy cập đầy đủ, như một cách khắc phục nhanh các lỗi về quyền. Thay vào đó hãy tìm nguyên nhân thực sự. Và hãy sử dụng sudo một cách cẩn thận vì nó loại bỏ các kiểm tra an toàn thường bảo vệ hệ thống.
Quy trình và thông tin hệ thống
| Lệnh | Nó làm gì |
|---|---|
phụ trợ ps |
Liệt kê các tiến trình đang chạy |
top hoặc htop |
Hiển thị chế độ xem trực tiếp của CPU và bộ nhớ |
giết 1234 |
Yêu cầu quá trình 1234 dừng lại |
df -h |
Hiển thị dung lượng đĩa trống |
thư mục du -sh |
Hiển thị kích thước của thư mục |
miễn phí -h |
Hiển thị việc sử dụng bộ nhớ |
trạng thái systemctl nginx |
Hiển thị trạng thái của dịch vụ |
tạp chí -u nginx |
Hiển thị nhật ký của dịch vụ |
Để cài đặt phần mềm, hãy sử dụng trình quản lý gói của bản phân phối của bạn, chẳng hạn như sudo apt install curl trên Debian và Ubuntu hoặc sudo dnf install curl trên Fedora và RHEL.
Lưu trữ và làm việc từ xa
$ tar -czf logs.tar.gz logs
$ tar -tzf logs.tar.gz
logs/
logs/app.log
Trong tar, c có nghĩa là tạo, z có nghĩa là gzip, f đặt tên tệp và t liệt kê nội dung. Để trích xuất một kho lưu trữ, hãy sử dụng tar -xzf logs.tar.gz. Để làm việc với các máy khác, bạn cần có ba máy sau:
| Lệnh | Nó làm gì |
|---|---|
người dùng ssh@server |
Mở một thiết bị đầu cuối từ xa |
tập tin scp user@server:/path/ |
Sao chép một tập tin qua SSH |
cuộn tròn -I https://example.com |
Hiển thị tiêu đề phản hồi của URL |
Các lệnh tương tự này được sử dụng bên trong Dockerfiles và CI/CD Pipeline, vì vậy kiến thức này sẽ mang lại hiệu quả trong công việc DevOps.
Những lỗi thường gặp
- Sử dụng
rm -rfmà không cần nhìn. Trước tiên, hãy kiểm tra thư mục của bạn vớipwdvà cẩn thận với các khoảng trắng trong đường dẫn. - Ghi đè bằng
>. Sử dụng>>khi bạn muốn nối thêm. - Chạy mọi thứ với
sudo. Chỉ sử dụng nó khi được yêu cầu. - Dán các lệnh mà bạn không hiểu. Đọc chúng trước, đặc biệt là bất kỳ lệnh nào dẫn đường tải xuống vào shell.
- Quên dấu ngoặc kép. Tên tệp có dấu cách, như
"my file.txt", cần có dấu cách.
Lời kết
Bạn không tìm hiểu thiết bị đầu cuối bằng cách đọc về nó. Mở shell, tạo một thư mục thực hành và chạy các lệnh của từng phần. Sau đó cố gắng trả lời một câu hỏi thực sự bằng cách sử dụng một dấu gạch đứng, chẳng hạn như lỗi nào xuất hiện thường xuyên nhất trong nhật ký. Bắt đầu với điều hướng và tệp trong tuần này, thêm grep và các đường dẫn tiếp theo, phần còn lại sẽ thực hiện theo khi bạn cần.
Câu hỏi thường gặp
Các lệnh Linux cơ bản nhất là gì?
Bắt đầu với pwd, ls, cd, mkdir, cp, mv, rm, cat và grep. Những công việc này bao gồm việc di chuyển, quản lý tập tin và tìm kiếm, những công việc chiếm phần lớn công việc hàng ngày của thiết bị đầu cuối.
Làm cách nào tôi có thể thực hành các lệnh Linux trên Windows?
Sử dụng Hệ thống con Windows cho Linux để có môi trường đầy đủ hoặc Git Bash cho những điều cơ bản. Chạy vùng chứa Linux với Docker cũng hoạt động tốt.
Sự khác biệt giữa > và >> trong Linux là gì?
Một > thay thế nội dung của tệp bằng đầu ra. Double >> thêm đầu ra vào cuối tệp và giữ lại những gì đã có ở đó.
Tôi có thể hoàn tác lệnh rm không?
Nói chung là không, vì rm không sử dụng thùng rác. Các công cụ khôi phục đôi khi có ích nhưng không đáng tin cậy, vì vậy hãy sao lưu và kiểm tra cẩn thận trước.
Sudo có nghĩa là gì?
sudo chạy một lệnh duy nhất với quyền quản trị viên. Nó cần thiết cho các công việc như cài đặt phần mềm và cần được sử dụng cẩn thận.
Tiếp tục học hỏi
Cần trợ giúp về kiểm tra, WordPress hoặc SEO?
Chúng tôi giúp các nhóm phát triển phần mềm tốt hơn và phát triển trang web của họ. Hãy cho chúng tôi biết bạn đang làm gì và chúng tôi sẽ đề xuất bước tiếp theo rõ ràng.
Thêm hướng dẫn về thử nghiệm, AI và phát triển hiện đại
Bạn thích bài viết này? Chọn một chủ đề và chuyển ngay sang phần hướng dẫn mới nhất của chúng tôi.
Giải thích về ảo giác AI: Tại sao các mô hình ngôn ngữ lại tạo nên mọi thứ và cách giảm thiểu nó
Ảo giác AI đã giải thích: chúng là gì, tại sao mô hình ngôn ngữ tạo ra chúng, các loại phổ biến, cách giảm thiểu chúng bằng cách căn cứ và nhắc nhở …
Đọc bài viết →DevOpsGiải thích về các biến môi trường: Tệp .env, bí mật và cấu hình được thực hiện đúng
Các biến môi trường được giải thích bằng các ví dụ Python mà chúng tôi đã chạy: đọc và thiết lập chúng, tại sao mọi giá trị đều là một chuỗi, tệp .e…
Đọc bài viết →Phát triển phần mềmGiải thích về giới hạn tỷ lệ API: Thuật toán, tiêu đề và xử lý lỗi 429
Giới hạn tốc độ API được giải thích bằng mô phỏng mà chúng tôi đã chạy: nhóm mã thông báo, cửa sổ cố định, cửa sổ trượt, 429 phản hồi, tiêu đề giới …
Đọc bài viết →Tự động hóa kiểm thửChế giễu bằng Python: unittest.mock, patch và những sai lầm khiến bài kiểm tra nói dối
Mô phỏng bằng Python với unittest.mock, đã được thử nghiệm: Mock và return_value, side_effect, vá lỗi nơi sử dụng tên, thông số kỹ thuật và thông số…
Đọc bài viết →Kiểm thử phần mềmGiải thích về phạm vi bảo hiểm của mã: Phạm vi tuyến so với chi nhánh và ý nghĩa thực sự 100%
Phạm vi bảo hiểm mã được giải thích bằng cách chạy phạm vi bảo hiểm thực tế: phạm vi bảo hiểm dòng, chi nhánh và điều kiện, đọc báo cáo, lý do tại s…
Đọc bài viết →Cơ sở dữ liệu & SQLDELETE vs TRUNCATE vs DROP trong SQL: Sự khác biệt, khôi phục và thời điểm sử dụng mỗi loại
DELETE vs TRUNCATE vs DROP được giải thích bằng SQL đã được thử nghiệm: mỗi loại loại bỏ, khôi phục, kích hoạt, đặt lại danh tính, tốc độ và Postgre…
Đọc bài viết →Cơ sở dữ liệu & SQLGiải thích về Chế độ xem SQL: Tạo, sử dụng và tránh những cạm bẫy, kèm theo ví dụ
Chế độ xem SQL được giải thích bằng các truy vấn chúng tôi đã chạy: tạo chế độ xem, kết quả trực tiếp, ẩn cột, hiệu suất, chế độ xem có thể cập nhật…
Đọc bài viết →Phát triển phần mềmGiao diện TypeScript so với loại: Sự khác biệt thực sự, được thử nghiệm bằng trình biên dịch
Giao diện TypeScript so với loại, được kiểm tra bằng trình biên dịch thực: cả hai có thể làm gì, chỉ một người có thể làm gì, hợp nhất khai báo, mở …
Đọc bài viết →Phát triển phần mềmGiải thích về Python *args và **kwargs: Hàm linh hoạt với ví dụ rõ ràng
Python *args và **kwargs được giải thích bằng mã chúng tôi đã chạy: đóng gói và giải nén, thứ tự tham số, đối số chỉ từ khóa và chỉ vị trí, trình tr…
Đọc bài viết →Phát triển phần mềmHàm Lambda của Python: Cú pháp, cách sử dụng thực tế và khi nào không nên sử dụng chúng
Các hàm lambda của Python được giải thích bằng mã chúng tôi đã chạy: cú pháp, sắp xếp bằng khóa, bản đồ và bộ lọc, các phần đóng, bẫy liên kết muộn …
Đọc bài viết →Trí tuệ nhân tạoĐại lý AI là gì? Cách chúng hoạt động, với vòng lặp tác nhân đơn giản, bạn có thể chạy
Tác nhân AI là gì? Hướng dẫn đơn giản về vòng lặp tác nhân, công cụ, bộ nhớ và lan can, với một vòng lặp Python nhỏ mà chúng tôi đã chạy, những rủi …
Đọc bài viết →DevOpsGiám sát và Khả năng quan sát: Sự khác biệt thực sự, với nhật ký, số liệu và dấu vết
Giải thích về giám sát và khả năng quan sát: lỗi đã biết và chưa biết, nhật ký, số liệu và dấu vết, hướng dẫn về sự cố thanh toán, tín hiệu vàng, Op…
Đọc bài viết →DevOpsDocker Volumes vs Bind Mounts: Duy trì dữ liệu vùng chứa đúng cách
Giải thích về khối lượng Docker và liên kết gắn kết: tại sao dữ liệu vùng chứa biến mất, khối lượng được đặt tên, liên kết gắn kết, tmpfs, ví dụ về …
Đọc bài viết →Tự động hóa kiểm thửTDD vs BDD: Key Differences, One Feature Built Both Ways and When to Use Each
TDD và BDD được giải thích bằng một tính năng giảm giá được xây dựng theo cả hai cách: tái cấu trúc màu đỏ-xanh với mã chúng tôi đã chạy, kịch bản C…
Đọc bài viết →Kiểm thử phần mềmKiểm tra chấp nhận của người dùng (UAT): Quy trình, danh sách kiểm tra và ví dụ thực tế
Giải thích về thử nghiệm chấp nhận của người dùng: ai chạy nó, nó khác với QA như thế nào, quy trình bảy bước, mẫu trường hợp thử nghiệm UAT, danh s…
Đọc bài viết →Cơ sở dữ liệu & SQLGiải thích về các giá trị NULL của SQL: IS NULL, COALESCE, NULLIF và những cái bẫy cần tránh
Các giá trị SQL NULL được giải thích bằng các truy vấn chúng tôi đã chạy: logic ba giá trị, IS NULL, COALESCE, NULLIF, cách tổng hợp, kết hợp và sắp…
Đọc bài viết →Cơ sở dữ liệu & SQLCâu lệnh SQL CASE WHEN: Cú pháp, ví dụ thực tế và các lỗi thường gặp
TRƯỜNG HỢP SQL KHI được giải thích bằng các truy vấn mà chúng tôi đã chạy: các biểu mẫu đơn giản và được tìm kiếm, thứ tự điều kiện, các thủ thuật S…
Đọc bài viết →Phát triển phần mềmJWT là gì? Mã thông báo Web JSON được giải thích bằng một ví dụ hoạt động
JWT là gì? Mã thông báo Web JSON đã giải thích: ba phần, mã thông báo được xây dựng và giả mạo trong mã chúng tôi đã chạy, JWT so với phiên, lưu trữ…
Đọc bài viết →Phát triển phần mềmGiải thích về vòng lặp sự kiện JavaScript: Ngăn xếp cuộc gọi, Microtask và bộ hẹn giờ kèm ví dụ
Vòng lặp sự kiện JavaScript được giải thích bằng mã chúng tôi đã chạy: ngăn xếp cuộc gọi, hàng đợi tác vụ và vi nhiệm, tại sao setTimeout 0 không di…
Đọc bài viết →Phát triển phần mềmGiải thích về trình tạo và năng suất của Python: Tiết kiệm bộ nhớ bằng các ví dụ thực tế
Trình tạo và lợi nhuận Python được giải thích bằng mã chúng tôi đã chạy: cách chúng tạm dừng và tiếp tục, đo mức tiết kiệm bộ nhớ, quy trình, chuỗi …
Đọc bài viết →Trí tuệ nhân tạoNhúng là gì? Giải thích sự tương đồng về vectơ và Cosine một cách đơn giản
nhúng là gì? Hướng dẫn bằng ngôn ngữ đơn giản về vectơ, độ tương tự cosine và tìm kiếm ngữ nghĩa, với một ví dụ nhỏ mà chúng tôi đã chạy, các cách s…
Đọc bài viết →DevOpsTriển khai Blue-Green và Canary: Sự khác biệt, sự đánh đổi và cách lựa chọn
Giải thích về triển khai Blue-green và Canary: cách hoạt động của từng loại, chi phí, rủi ro và khôi phục, nhóm người dùng ổn định mà chúng tôi đã t…
Đọc bài viết →Tự động hóa kiểm thửKiểm tra không ổn định: Nguyên nhân gây ra chúng và cách khắc phục chúng vĩnh viễn
Các thử nghiệm không ổn định được giải thích bằng các bản demo mà chúng tôi đã chạy: nguyên nhân chính, cách xác nhận và chẩn đoán nguyên nhân, cách…
Đọc bài viết →Kiểm thử phần mềmKiểm tra tải và kiểm tra căng thẳng: Sự khác biệt, số liệu và ví dụ về k6
Giải thích về thử nghiệm tải và thử nghiệm căng thẳng: mỗi thử nghiệm chứng minh điều gì, thử nghiệm tăng đột biến và ngâm, số liệu quan trọng, lý d…
Đọc bài viết →Kiểm thử phần mềmTrường hợp thử nghiệm và kịch bản thử nghiệm: Sự khác biệt chính, ví dụ và thời điểm sử dụng từng trường hợp
Giải thích trường hợp kiểm thử và kịch bản kiểm thử: định nghĩa rõ ràng, bảng cạnh nhau, một tính năng đặt lại mật khẩu được lấy từ các tình huống n…
Đọc bài viết →Cơ sở dữ liệu & SQLTối ưu hóa truy vấn SQL: Đọc kế hoạch thực thi và sửa các truy vấn chậm, có tính thời gian
Đã thử nghiệm tối ưu hóa truy vấn SQL trên một triệu hàng: đọc kế hoạch thực hiện, thêm chỉ mục phù hợp, sửa các bộ lọc không thể mở rộng, sử dụng c…
Đọc bài viết →Cơ sở dữ liệu & SQLSQL UNION và UNION ALL: Sự khác biệt, ví dụ và hiệu suất đã được kiểm tra
SQL UNION và UNION ALL được giải thích bằng các truy vấn chúng tôi đã chạy: trùng lặp, cả hai quy tắc đều tuân theo, lỗi dữ liệu thực, hiệu suất đượ…
Đọc bài viết →Phát triển phần mềmHướng dẫn API tìm nạp JavaScript: GET, POST, Xử lý lỗi và hết thời gian chờ
Hướng dẫn API tìm nạp JavaScript đã được thử nghiệm trên máy chủ cục bộ: GET và POST, tại sao 404 không gửi, trình trợ giúp có thể sử dụng lại, chuỗ…
Đọc bài viết →Phát triển phần mềmXử lý tệp Python: Đọc, ghi, CSV, JSON và pathlib kèm ví dụ
Việc xử lý tệp Python được giải thích bằng mã chúng tôi đã chạy: chế độ mở, với, đọc tệp lớn, CSV, JSON, pathlib, tệp nhị phân, ghi an toàn, xử lý l…
Đọc bài viết →Phát triển phần mềmCác lớp và đối tượng Python: Hướng dẫn OOP với các ví dụ thực tế
Các lớp và đối tượng Python được giải thích bằng mã mà chúng tôi đã chạy: __init__, các phương thức, thuộc tính lớp và phiên bản, tính kế thừa, thuộ…
Đọc bài viết →Trí tuệ nhân tạoMô hình ngôn ngữ lớn là gì? LLM hoạt động như thế nào, được giải thích mà không cường điệu hóa
Mô hình ngôn ngữ lớn là gì? LLM được giải thích bằng ngôn ngữ đơn giản: mã thông báo, phần nhúng, sự chú ý, đào tạo, cửa sổ nhiệt độ và ngữ cảnh, mộ…
Đọc bài viết →DevOpsCác lệnh Linux cho người mới bắt đầu: Hướng dẫn thiết bị đầu cuối cần thiết kèm ví dụ
Các lệnh Linux dành cho người mới bắt đầu, được nhóm theo tác vụ: điều hướng, tệp, xem nhật ký, grep, đường dẫn, quyền, quy trình và lưu trữ, cùng v…
Đọc bài viết →Tự động hóa kiểm thửSelenium vs Nhà viết kịch: Sự khác biệt chính, So sánh mã và nên chọn cái nào
Selenium và Playwright được so sánh: kiến trúc, chờ đợi, hỗ trợ trình duyệt và ngôn ngữ, gỡ lỗi, kiểm tra giống nhau ở cả hai công cụ, lời khuyên di…
Đọc bài viết →Kiểm thử phần mềmPhân vùng tương đương: Giải thích kỹ thuật thiết kế thử nghiệm bằng các ví dụ đã thực hiện
Giải thích về phân vùng tương đương: cách tìm các phân vùng hợp lệ và không hợp lệ, các ví dụ hoạt động theo độ tuổi, mật khẩu và phiếu giảm giá, cá…
Đọc bài viết →Kiểm thử phần mềmMức độ nghiêm trọng và mức độ ưu tiên trong kiểm thử phần mềm: Sự khác biệt, Ma trận và ví dụ thực tế
Giải thích về mức độ nghiêm trọng và mức độ ưu tiên trong kiểm thử phần mềm: định nghĩa rõ ràng, ma trận bốn chiều với các ví dụ, thang đo cấp độ, a…
Đọc bài viết →Cơ sở dữ liệu & SQLHướng dẫn về truy vấn con SQL: Các loại, truy vấn con tương quan và TỒN TẠI kèm ví dụ
Hướng dẫn về truy vấn con SQL với các truy vấn chúng tôi đã chạy: truy vấn con vô hướng, IN, FROM và SELECT, truy vấn con tương quan, EXISTS, bẫy và…
Đọc bài viết →Cơ sở dữ liệu & SQLGiải thích về giao dịch SQL và ACID: Các mức CAM KẾT, ROLLBACK và Cô lập
Các giao dịch SQL và ACID được giải thích bằng chuyển khoản ngân hàng mà chúng tôi đã thực hiện: CAM KẾT, ROLLBACK, điểm lưu trữ, khóa, mức cách ly,…
Đọc bài viết →Phát triển phần mềmGit merge vs rebase: khác biệt, ví dụ và khi nào dùng cái nào
Git merge vs rebase được giải thích bằng đầu ra log thực tế, bảng so sánh, quy tắc vàng của rebase và quy trình làm việc nhóm an toàn.
Đọc bài viết →Phát triển phần mềmList comprehension trong Python: cú pháp, ví dụ và khi nào nên tránh
List comprehension trong Python: cú pháp, lọc dữ liệu, if-else, vòng lặp lồng nhau, thời gian đo thực tế và khi nào vòng lặp for thông thường tốt hơn.
Đọc bài viết →Cơ sở dữ liệu & SQLGiải thích SQL JOIN kèm ví dụ (Inner, Left, Right, Full)
Hiểu SQL JOIN từng bước với bảng và truy vấn mẫu: INNER, LEFT, RIGHT, FULL, CROSS và SELF, cùng lỗi thường gặp và mẹo hiệu năng.
Đọc bài viết →