nttuyen’s weblog

Hôm nay mới học được chiêu dùng  Proxy để viết connection pool, chia sẻ lên đây với mọi người  🙂

ConnectionPool.java

Download về, đổi tên thành ConnectionPool.java

Để xem chi tiết hơn về Persistence-lib của mình, vui lòng truy cập qua SVN: http://svn6.assembla.com/svn/nttuyen/nttuyen-java-lib/trunk/

Cuối cùng thì mình cũng kết thúc 4.5 năm ĐH. Buổi tốt nghiệp cũng không thấy vui lắm. Nhưng thôi, đằng nào cũng xong rồi, post nốt cái slide lên đây, để có gì xem lại sau nữa vậy

Bữa trước, khi làm đồ án, định dùng  Hibernate nhưng thấy nó hơi khó hiểu và thừa. Ngồi nhẩn nha viết một cái Persistence chơi. Vừa là học code, làm đồ án, vừa là để hiểu hơn về Hibernate, hy vọng sau này nếu cần làm sẽ nắm bắt được nó nhanh hơn 🙂

Cái Persistence lib của mình thực hiện công việc map các Entity class vào với table của  CSDL quan hệ, sử  dụng annotation.

Persistence lib có hỗ trợ connection pool.

Persistence lib này hiện chưa support kế thừa, các quan hệ một – một, một – nhiều và nhiều – nhiều.

Persistence lib này cũng chưa hỗ trợ Transaction.

Nếu có time, mình sẽ thử  làm thêm phần support các quan hệ 1 – 1, 1 – n xem thế nào.  Còn giờ, chia sẻ lên đây để mọi người cùng xem và đóng góp (nếu có thể)

SVN Source: http://svn6.assembla.com/svn/nttuyen/nttuyen-java-lib/tags/

Trong cuộc sống luôn có những điểm giới hạn. Nếu bước qua giới hạn này, cuộc đời bạn sẽ bước sang một trang mới!……

Sẽ có những giới hạn mà chúng ta cần cố gắng bước qua, và cũng có những giới hạn mà ta cần tự nhủ với mình rằng không bao giờ được đi qua nó…!

1. You think that inception = requirements, elaboration = design, and construction = implementation (that is, superimposing a waterfall lifecycle on to the UP)

2.***** You think that the purpose of elaboration is to fully and carefully define models, which are translated into code during construction

3.** You try to define most of the requirements before starting design or implementation

4. ***** You try to define most of the design before starting implementation; you try to fully define and commit to an architecture before iterative programming and testing.

5. A “long time” is spend doing requirements of design work before programming starts.

6. You believe that a suitable iteration length is four months long, rather than four weeks long(excluding project with hundreds of developers).

7. You thinks UML diagramming and design activities are a time to fully and accurately define design and models in great detail, and programming as a simple mechanical translation of these into code.

8. You think that adoping the UP means to do many of the possible activities and create many documents, and thinks of or experiences the UP as a formal, fussy process with many steps to be followed.

9.*** You try to plan a project in detail from start to finish; you try to speculatively predict all the iterations, and what should happen in each one.

10.*** You want believable plans and estimates for projects before the elaboration phase is finished.

Ngồi nghĩ và hình dung mãi mới hình dung ra cái kiến trúc sẽ như thế này. Mọi người xem có góp ý gì thì góp ý giúp mình với 🙂

Ảnh về kiến trúc hệ tư vấn

Kiến trúc hệ tư vấn

cheer up!

Internet và www mang đến cho con người nhiều tiện ích khác nhau. Tuy nhiên nó cũng tạo ra một cuộc bùng nổ thông tin. Đặc biệt cùng với sự tham gia của thương mại điện tử, số lượng thông tin trao đổi trên internet đang tăng theo cấp số nhân. Ngày nay, bạn có thể tìm bất cứ thông tin hoặc sản phẩm mình cần thông qua internet. Tuy nhiên, càng ngày bạn càng mất nhiều thời gian trong việc tìm xem sản phẩm hay thông tin nào phù hợp với mình. Bạn gặp rất nhiều khó khăn bởi không biết sản phẩm nào sẽ phù hợp với mình nhất.

Một số công cụ tìm kiếm với từ khóa, điển hình như google, yahoo… và mới đây nhất là bing giúp chúng ta rất nhiều trong tìm kiếm những thông tin cần thiết. Nhưng với lượng thông tin tăng lên nhanh chóng, các công cụ tìm kiếm theo từ khóa cũng đang dần tỏ ra không hoàn toàn đáp ứng được nhu cầu của con người. Hàng ngày bạn phải bỏ ra quá nhiều thời gian để lọc những thông tin tìm kiếm được trên google. Thêm nữa, đôi khi người dùng cũng không hiểu hết nhu cầu của mình, không biết được từ khóa chính xác mình muốn tìm kiếm, do đó rất khó để tìm được thông tin mình cần.

Nhu cầu đặt ra là cần có một hệ tư vấn. Các hệ thống tư vấn này sẽ tính toán và dự đoán khả năng người dùng sẽ thích sản phẩm hay thông tin nào đó. Từ đó đưa ra những gợi ý về sản phẩm hay thông tin có thể phù hợp với người dùng nhất.

Để làm được điều này, các hệ tư vấn đi xây dựng hồ sơ (Profile) của người dùng. Hồ sơ của người dùng bao gồm thông tin rõ ràng và thông tin ẩn. Những thông tin rõ ràng là những thông tin được người dùng cung cấp cụ thể thông qua việc trả lời các câu hỏi, hay những thể hiện cụ thể như: người dùng mua sản phẩm, người dùng đưa đánh giá cho một sản phẩm hay một bản tin nào đó hay sở thích của người dùng là gì?… Tuy nhiên, những thông tin rõ ràng này ta rất khó thu thập và đôi khi không đủ để ta dự đoán và tính toán độ phù hợp với người dùng. Ta phải sử dụng thêm những thông tin ẩn chẳng hạn như: lịch sử các từ khóa tìm kiếm, tần số lặp lại các từ khóa, độ tương tự hay sự liên quan trong nghĩa của các từ khóa mà người dùng tìm kiếm… Trong nhiều hệ tư vấn, những thông tin ẩn này đóng vai trò quyết định trong kết quả tư vấn.

Từ hồ sơ của người dùng, hệ tư vấn tính toán khả năng người dùng sẽ thích thông tin hay sản phẩm nào đó. Việc tính toán này có nhiều cách khác nhau, tuy nhiên có hai loại chủ yếu đó là: phương pháp lọc dựa trên nội dung và phương pháp lọc cộng tác.

Trong phương pháp lọc dựa trên nội dung, hệ thống sẽ phân tích và so sánh nội dung của các thông tin, các sản phẩm từ đó đánh giá khả năng người dùng sẽ thích sản phẩm đó. Phương pháp lọc dựa trên nội dung dựa trên nguyên lý người dùng thích sản phẩm hay thông tin A sẽ thích sản phẩm hay thông tin B tương tự với sản phẩm A. Phương pháp lọc dựa trên nội dung còn so sánh nội dung của sản phẩm hay thông tin với sở thích mà người dùng cung cấp. Chẳng hạn người dùng quan tâm tới những thông tin về chứng khoán thì sẽ được tư vấn những bản tin nói về chứng khoán… Tuy nhiên, phương pháp lọc dựa trên nội dung cũng gặp một số khó khăn. Với những thông tin mà nội dung không có sắn(chẳng hạn như một đoạn video, một bản nhạc…) thì sẽ rất khó phân tích, và khó có thể tư vấn được. Hơn nữa, vì hệ này chủ yếu so sánh dựa trên nội dung nên khó có thể tạo ra được sự bất ngờ trong tư vấn, đôi khi nó còn tư vấn cho người dùng những sản phẩm mà người dùng đã biết hoặc sử dụng trước đó.

Một phương pháp khác trong các hệ tư vấn là phương pháp lọc dựa trên nội dung. Bản chất của phương pháp này chính là hình thức tư vấn truyền miệng tự động. Trong phương pháp này, hệ thống sẽ so sánh, tính toán độ tương tự nhau giữa những người dùng hay sản phẩm, từ đó người dùng sẽ được tư vấn những thông tin, sản phẩm được ưa chuộng nhất bởi những người dùng có cùng thị hiếu. Trong phương pháp này, hệ thống thường xây dựng các ma trận đánh giá bởi người dùng lên các sản phẩm, bản tin. Từ đó tính toán độ tương tự giữa họ. Các hệ tư vấn dựa trên lọc cộng tác không yêu cầu quá nặng vào việc tính toán, do đó nó có thể đưa ra những tư vấn có độ chính xác cao và nhanh chóng cho một số lượng lớn người dùng. Hơn nữa, hệ tư vấn này không yêu cầu mô tả nội dung tường mình mà chỉ sử dụng đánh giá của người dùng để ước lượng, do đó những hệ này có khả năng tư vấn phong phú và thường tạo ra những tư vấn bất ngờ cho người dùng.

Hiện nay có rất nhiều hệ thống có hệ tư vấn như: Amazon với hệ tư vấn sách, CD và rất nhiều sản phẩm khác, MovieLens trong tư vấn điện ảnh, iLike trong tư vấn âm nhạc, eBay với tư vấn sản phẩm bán lẻ, đấu giá…

Các hệ thống tư vấn có thể sử dụng phương pháp lọc dựa trên nội dung, lọc cộng tác hay sử dụng phương pháp kết hợp tùy vào trường hợp cụ thể. Ví dụ, trong những trang tin tức, ta nên sử dụng phương pháp tư vấn dựa trên nội dung bởi người dùng chỉ thích đọc những thông tin mà mình quan tâm, do đó có thể so sánh dựa trên nội dung. Hay trong những trang thương mại điện tử, người dùng thường có xu hướng mua nhiều loại sản phẩm, do đó lọc cộng tác tỏ ra hiệu quả hơn bởi sẽ tạo ra được những tư vấn ất ngờ.

Xu hướng tất yếu trong công nghệ tư vấn hiện nay đó là tư vấn kết hợp. Ở đó, người dùng không chỉ được tư vấn một sản phẩm đơn lẻ, mà sẽ được tư vấn một loạt sản phẩm phù hợp. Chẳng hạn, hệ thống có thể tư vấn cho người dùng một chuyến du lịch dài ngày với việc sử dụng phương tiện đi lại của hãng nào, ở khách sạn nào, ăn uống tại nhà hàng nào ở đâu…

Trong các bài sau mình tập trung vào phương pháp tư vấn dựa trên lọc cộng tác. Dự kiến bài tiếp theo sẽ là những khó khăn trong hệ tư vấn(có thể chỉ là trong lọc cộng tác.).

(Bài viết đang trong quá trình cập nhật!)

Danh mục

My Twitter

Error: Twitter did not respond. Please wait a few minutes and refresh this page.