cuốn sách gpt4 ai đã làm

Thiết kế mã hóa cho các câu hỏi (tiêu chuẩn?)

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 06:02:36 27 4
mua khóa gpt4 Nike

Có vẻ như một vấn đề đủ tiêu chuẩn để đảm bảo một thiết kế tiêu chuẩn trong giải pháp:

Giả sử tôi muốn viết chuỗi x+2 (hoặc ít hơn) vào một tệp. Chuỗi x tạo thành nội dung của một phần và hai chuỗi này tạo thành đầu trang và chân trang của phần đó. Một điều cần lưu ý là tôi sẽ không viết chuỗi đầu trang/chân trang nếu không có chuỗi nào trong nội dung. Hơn nữa, các chuỗi x này được viết từ những vị trí khác nhau trong mã. Vì vậy, quá trình hiện tại là:

  1. Viết chuỗi tiêu đề
  2. Viết chuỗi nội dung
  3. Viết chuỗi chân trang

Điều này khiến chuỗi đầu trang/chân trang được ghi ngay cả khi nội dung trống, tôi phải khắc phục điều này bằng cách không ghi chuỗi đầu trang/chân trang trong trường hợp này.

Giải pháp tôi có thể nghĩ đến là viết chuỗi tiêu đề trước khi chuỗi nội dung đầu tiên được viết (bằng cách viết từng chuỗi nội dung bằng cách ghi chuỗi tiêu đề và sử dụng cờ bool để ngăn nhiều chuỗi tiêu đề được ghi), sau đó chỉ là chuỗi chân trang được viết nếu chuỗi tiêu đề đã được viết (được điều khiển bởi cờ bool).

Đây là ý chính cấp cao nhất của nó, chỉ tự hỏi liệu có cách tiếp cận tiêu chuẩn nào cho loại tình huống này hay không.

Cảm ơn!

câu trả lời hay nhất

Có nhiều giải pháp:

  • Ghi các dòng đầu trang và dữ liệu vào bộ nhớ đệm và xuất chúng khi bạn cố gắng ghi chân trang (nhưng chỉ khihàng dữ liệu, nếu không thì không có gì xuất ra). <
  • Điều tương tự, nhưng sử dụng tệp tạm thời làm bộ đệm dữ liệu trong trường hợp nó quá lớn.
  • Hãy nhớ tiêu đề và liệu có xuất nó hay không.

Vì hai giải pháp đầu tiên không hiệu quả (có thể lưu trữ lượng lớn dữ liệu vào bộ nhớ đệm hoặc sử dụng bộ nhớ ngoài tương đối chậm), nên tôi sẽ tập trung vào giải pháp sau. Xem ghi chú ở phía dưới về cách thực hiện bộ nhớ đệm(Một).

Phương pháp không yêu cầu lưu trữ dữ liệu vào bộ đệm chỉ có một chỉ báo cho biết bạn đã viết tiêu đề hay chưa. Trước mỗi hàng dữ liệu, chỉ xuất tiêu đề (và đặt cờ) nếu cờ chưa được đặt. Bạn cũng có thể sử dụng cờ này để kiểm soát chân trang (nếu đầu trang không được xuất ra thì chân trang cũng không được xuất ra):

def outHeader (str):
tiêu đề = str
tiêu đề đã gửi = sai

dữ liệu def (str):
nếu không phải là headerSent:
viết tiêu đề
tiêu đề đã gửi = đúng
viết str

def outFooter (str):
nếu tiêu đề được gửi:
viết str

Giải pháp này có lẽ đơn giản hơn nhiều vì không yêu cầu lưu trữ dữ liệu vào bộ nhớ đệm.


(Một) Nếu bạn确实Muốn sử dụng giải pháp bộ đệm (mặc dù được khuyến nghị là giải pháp chưa tối ưu), mã giả sau đây cho thấy cách thực hiện điều này:

def outHeader (str):
cacheHeader = str
cacheData = ""

dữ liệu def (str):
cacheData = cacheData + str + "\n"

def outFooter (str):
nếu cachedData != "":
ghi tiêu đề được lưu vào bộ nhớ cache
ghi dữ liệu được lưu vào bộ nhớ đệm
viết str

Sự khác biệt duy nhất giữa bộ đệm trong bộ nhớ và bộ đệm dựa trên tệp là:

  • Tạo một tệp tạm thời trống và đặt lineCount thành 0. Bạn hiện đang ở outHeader() Được tạo ở dữ liệu được lưu trong bộ nhớ cache 的位置。
  • Sẽ str được gửi đến tập tin tạm thời và trong outData() tăng trung bình dòngĐếm.
  • sử dụng dòngĐếm phán xét chân trang ngoài nếu có dữ liệu được lưu trong bộ nhớ đệm trong đó và đọc lại các hàng từ tệp tạm thời dưới dạng dữ liệu đầu ra.

Về câu hỏi (tiêu chuẩn?) Về thiết kế mã hóa, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/15105367/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress