28 thg 3, 2010

Java - Find and get a substring form a string

    Bài viết này hướng đến việc làm một thao tác xử lý chuỗi là tìm kiếm và lấy ra một chuỗi con từ một chuỗi gốc theo một đặc điểm nào đó. Chuỗi gốc này phải có dạng tương tự như: param=value,....

     Trong tình huống trên, tôi muốn lấy chuỗi "value", thì làm thế nào?
     Trong Java, có một lớp có tên là StringTokenizer, cái từ token này chắc những ai đã từng học qua môn trình biên dịch thì không có lạ gì. StringTokenizer coi chuỗi mà ta truyền cho nó là một dãy gồm nhiều token và delimiter nằm xen kẽ nhau. Nó có 3 Constructor, còn cụ thể thì các bạn xem thêm trong "JavaTM 2 Platform" tại website: http://java.sun.com.
     Và đây là code cho ví dụ trên (nếu không phù hợp với bạn thì bạn có thể tùy biến nó lại):

public String getText(String str) {
  StringTokenizer strToken = new StringTokenizer(str, "=,");
  while (strToken.hasMoreTokens()) {
   if (strToken.nextToken().equals("text"))
       return strToken.nextToken();
  }
  return null;
 }

    Đây là cách mà tôi thấy nhanh và gọn nhất, nhưng đương nhiên đó là chỉ là một cách và có thể còn nhiều cách hay hơn nữa.
    Mong các bạn có thể áp dụng nó cho code của bạn!

3 thg 9, 2009

Flyweight pattern

Flyweight là một mẫu thiết kế phần mềm. Khi nhiều đối tượng (objects) phải được xử lí mà chương trình không thể chịu nổi một lượng dữ liệu khổng lồ, thì cần dùng flyweight.

Trong mẫu flyweight, dữ liệu không có các con trỏ (pointer) đến các phương thức của kiểu dữ liệu đó, vì như thế sẽ tốn rất nhiều bộ nhớ. Thay vào đó, các chương trình con (subroutine) sẽ được gọi trực tiếp. Trong một vài trường hợp, flyweight inheritance được thực hiện bằng cách "shift-in" và "shift-out" các data markers dưới dạng các chu trình tác vụ ở mức cao (higher-level operation cycles) thông qua một mảng các flyweight data.

Một ví dụ cổ điển của mẫu flyweight là các kí tự được lưu trong một bộ xử lí văn bản (word processor). Mỗi kí tự đại diện cho một đối tượng mà có dữ liệu là loại font (font face), kích thước font, và các dữ liệu định dạng khác. Bạn có thể tưởng tượng là, với một tài liệu (document) lơn với cấu trúc dữ liệu như thế này thì sẽ bộ xử lí văn bản sẽ khó mà có thể xử lí được. Hơn nữa, vì hầu hết dữ liệu dạng này là lặp lại, phải có một cách để giảm việc lưu giữ này - đó chính là mẫu Flyweight. Mỗi đối tượng kí tự sẽ chứa một tham khảo đến một đối tượng định dạng riêng rẽ mà chính đối tượng này sẽ chứa các thuộc tính cần thiết. Điều này sẽ giảm một lượng lớn sự lưu giữ bằng cách kết hợp mọi kí tự có định dạng giống nhau trở thành các đối tượng đơn chỉ chứa tham khảo đến cùng một đối tượng đơn chứa định dạng chung đó.

Cũng có một phiên bản của mẫu này dùng cho cấu trúc XML

Software design

Thiết kế phần mềm (Software design) là một quá trình giải quyết vấn đề và lập kế hoạch cho một giải pháp phần mềm.Sau khi các mục đích và đặc điểm kĩ thuật của phần mềm được quyết định, lập trình viên sẽ thiết kế hoặc thuê người thiết kế để phát triển một kế hoạch cho giải pháp phần mềm. Nó bao gồm các thành phần cấp thấp, các vấn đề thuật toán cũng như một khung nhìn kiến trúc.

ADSL là gì?

ADSL (Asymmetric Digital Subscriber Line - đường dây thuê bao số bất đối xứng), là một dạng của DSL.

ADSL cung cấp một phương thức truyền dữ liệu với băng thông rộng, tốc độ cao hơn nhiều so với phương thức truy cập qua đường dây điện thoại truyền thống theo phương thức quay số (Dial up).Khi truyền băng thông trên đường dây điện thoại được tách ra làm 2 phần, 1 phần nhỏ dùng cho các tín hiệu nhu Phone,Fax. phần lớn còn lại dùng cho truyền tải tín hiệu ADSL.

Ý nghĩa của cụm từ "bất đối xứng" trong ADSL là do lượng dữ liệu tải xuống và tải lên là không bằng nhau, với dữ liệu chủ yếu là tải xuống.

Bài đăng Phổ biến