Avatar
2
TungDP Beginner
TungDP Beginner
Cách nhúng đối tượng tương tự như @Autowired của Spring boot?
<em>Đặt vấn đề:</em> Lúc đọc cuốn "Những Nguyên Tắc Sống Còn Trong Lập Trình" của anh Tạ Văn Dũng, em có khá ấn tượng về cách anh giải thích về ý tưởng Inversion-of-control. Sau đó, em cũng vọc vạch làm thử 1 cái tương tự, đại ý là em làm như này: <ul> <li>Bước 1: Dùng Reflection quét package của file Main để tìm ra toàn bộ các class được khai báo trong package, đưa vào 1 HashSet.</li> <li>Bước 2: Tạo annotation @Instance, chạy vòng lặp: những class nào có đánh dấu @Instance thì khởi tạo instance cho nó, lưu vào 1 HashMap<Class<?>, Object>.</li> <li>Bước 3: Tạo annotation @Inject, và tiếp tục lặp qua HashMap ở bước 2, nếu instance nào mà có các field được đánh dấu @Inject thì gắn object đã được tạo trong HashMap(bước 2) vào field đó.</li></ul> <em>Khó khăn:</em> Nhưng em gặp vấn đề khó khi @Inject được đánh dấu vào field mà user lại sử dụng interface chứ không phải trực tiếp class. <img src="/api/v1/media/cd1910f38bf831716e6e1968e01cbfaa484f3b5b6e9846d940157d2fd6e5cdd1.png" alt="2024-02-17_15-22.png"> <em>Câu hỏi:</em> Lúc này làm sao để có thể tìm được tất cả các class implements interface đó và chọn ra được class phù hợp để inject vào ạ?
Answer
Avatar
2
hovanvydut Beginner
hovanvydut Beginner
Cách mà ezyfox quản lý các bean
Dạ em chào anh, em có pull source code ezyfox server và chạy thử example hello word của anh.<p> Em có đọc qua source code nhưng vẫn chưa hiểu hết, và có một số thắc mắc, có gì nhờ anh giúp đỡ ạ: </p> <p> Em thấy trong source example của anh có ví dụ sau: </p> <div class="markdown-block position-relative overflow-auto source-java"> <pre> <span class="pl-s">@Setter</span> <span class="pl-s">@EzyPrototype</span> <span class="pl-s">@EzyObjectBinding</span>(write = false) <span class="pl-s">@EzyRequestListener</span>(GREET) <span class="pl-k">public</span> <span class="pl-k">class</span> GreetRequestHandler <span class="pl-k">extends</span> ClientRequestHandler <span class="pl-k">implements</span> EzyDataBinding { private String who; <span class="pl-s">@EzyAutoBind</span> private Greeting greeting; <span class="pl-s">@Override</span> <span class="pl-k">protected</span> <span class="pl-k">void</span> execute() throws EzyBadRequestException { responseFactory.newObjectResponse() .command(GREET) .param(<span class="pl-s">"message"</span>, greeting.greet(who)) .session(session) .execute(); } } </pre> </div>Và trước kia em thắc mắc làm sao để biết command nào để biết listen handler tương ứng. Sau khi đọc thì em thấy anh quản lý các lớp này bằng cách đưa nó vào một cái <code class="markdown-inline">singletonSet</code> ở <code class="markdown-inline">EzySimpleFactoryClass</code>. Và lúc có request gửi lên anh dựa vào command id để lấy listener tương ứng. Tuy nhiên em "KHÔNG THẤY" đoạn anh khởi tạo và add các listener này vào <code class="markdown-inline">singletonSet</code> ở <code class="markdown-inline">EzySimpleFactoryClass</code>. Em chỉ thấy đoạn get này ở <code class="markdown-inline">EzyUserRequestSingletonController</code>:<div class="markdown-block position-relative overflow-auto source-java"> <pre> private Map&lt;String, EzyUserRequestHandlerProxy&gt; extractRequestHandlersFromListener() { List&lt;Object&gt; clientRequestHandlers = getClientRequestHandlers(); Map&lt;String, EzyUserRequestHandlerProxy&gt; handlers = <span class="pl-k">new</span> HashMap&lt;&gt;(); <span class="pl-k">for</span> (Object handler : clientRequestHandlers) { Class&lt;?&gt; handleType = handler.getClass(); EzyRequestListener annotation = handleType.getAnnotation(EzyRequestListener.class); String command = EzyRequestListenerAnnotations.getCommand(annotation); handlers.put(command, <span class="pl-k">new</span> EzyUserRequestHandlerProxy((EzyUserRequestHandler) handler)); logger.debug("add command {} and request handler {}", command, handler); } <span class="pl-k">return</span> handlers; } private List&lt;Object&gt; getClientRequestHandlers() { <span class="pl-k">return</span> singletonFactory.getSingletons(EzyRequestListener.class); } </pre> </div>và <code class="markdown-inline">getSingletons</code> ở EzySimpleSingletonFactory là anh duyệt qua <code class="markdown-inline">singletonSet</code> để tìm instance có chưa annotation <code class="markdown-inline">EzyRequestListener</code><div class="markdown-block position-relative overflow-auto source-java"> <pre> <span class="pl-k">public</span> List getSingletons(Class... annotationClasses) { <span class="pl-k">return</span> this.getSingletons((o) -&gt; { Class[] var2 = annotationClasses; <span class="pl-k">int</span> var3 = annotationClasses.length; <span class="pl-k">for</span>(int var4 = 0; var4 &lt; var3; ++var4) { Class annotationClass = var2[var4]; <span class="pl-k">if</span> (o.getClass().isAnnotationPresent(annotationClass)) { <span class="pl-k">return</span> true; } } <span class="pl-k">return</span> false; }); } <span class="pl-k">public</span> List getSingletons(Predicate filter) { List list = <span class="pl-k">new</span> ArrayList(); Iterator var3 = this.singletonSet.iterator(); <span class="pl-k">while</span>(var3.hasNext()) { Object object = var3.next(); <span class="pl-k">if</span> (filter.test(object)) { list.add(object); } } <span class="pl-k">return</span> list; } </pre> </div>
Answer
Avatar
2
tvd12 Enlightened
tvd12 Enlightened
Đầu tư cho bản thân là gì?
Đầu tư cho bản thân là gì?
Answer
Avatar
2
triandn Beginner
triandn Beginner
ứng dụng chatGPT
Chào anh Dũng!<p> Lại là em đây, em có một chút khó khăn sau. Chuyện là em ứng dụng chatGPT vào trong website đặt tour du lịch của mình. Nhưng chỉ dùng API để tích hợp vào thì nó khá bị động. Em tính hỏi anh là mình có thể huấn luyện mô hình GPT theo dữ liệu của mình được không! Và cách làm sẽ như thế nào ạ! </p> <p> Kết quả em mong muốn là: Em có thể hỏi chatbot về tour nổi bật thì nó sẽ gợi ý sản phẩm từ website của mình! </p> <p> Em cảm ơn anh </p>
Answer
Avatar
2
toilahtc Beginner
toilahtc Beginner
[REST API ] hỏi về các chuẩn của việc viết API
Khi 1 GET Request có quá nhiều param thì có nên chuyển hóa thành POST request và dùng Requestbody thay cho RequestParam không?
Answer
Avatar
2
Khoi Nguyen Beginner
Khoi Nguyen Beginner
Không kết nối được với database khi chuyển từ spring boot 2 lên spring boot 3
Em có dùng bản spring boot 2 quen rồi nay đổi lên bản spring boot 3. JPA không kết nối được với database. Cho em hỏi cách giải quyết với ạ.<p> org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] </p> <p> Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.hibernate.dialect.MySQL5InnoDBDialect </p>
Answer
Avatar
2
Tài Nguyễn Trung Beginner
Vấn đề network
Ở công ty em gặp một trường hợp như thế này.  Em gọi đến một domain bên ngoài (chả hạn trang tapchiphapluat.vn ) sử dụng postman gọi thì vẫn thực hiện được request và nhận về data. Nhưng em thực hiện code bằng java để gọi thì request bị timeout không nhận về data được, em có thử ping domain bằng terminal thì cũng bị timeout . Anh có biết nguyên nhân và cách nào để em có thể gọi đến domain đó nhận data về bằng Java không ạ? Chắc thằng Postman có cách cấu hình nào đó không bị timeout mà em chưa rõ?
Answer
Avatar
2
Nguyễn Văn Thịnh Beginner
Devops fresher requirement
Chào mọi người. Anh em có thể chia sẻ để đạt yêu cầu fresher/junior devops thì cần những kỹ năng và kiến thức như thế nào không ?
Answer
Avatar
2
Nguyen An Beginner
Nguyen An Beginner
ĐỒ ÁN TỐT NGHIỆP
Chào anh, lại là em đây! <p> </p> <p> Khoảng 2 tháng nữa là em bắt đầu thực hiện đồ án tốt nghiệp! Sau 2 tuần tìm kiếm ý tưởng cho đề tài thì em thấy đề tài của mình chưa có mức đột phá, chỉ dừng lại ở mức quản lý. </p> <p> </p> <p> Vì vậy hôm nay em lên đây hỏi anh. Anh có thể gợi ý cho em một số đề tài hay chủ đề nào có mức đột phá, mới mẻ được không ạ! </p> <p> </p> <p> Em cảm ơn anh. </p>
Answer
Avatar
3
an nguyen Beginner
an nguyen Beginner
Decentralized Exchange
Chào Anh Dũng và mọi người, <p> </p> <p> Em đã theo dõi anh và team rất nhiều, trước tiên rất cảm ơn anh và team đã cho ra sản phẩm Ezyfox. </p> <p> Bên cạnh đó cũng cảm ơn anh đã hướng dẩn rất nhiều bài viết hai về Blockchain. </p> <p> Hiện tại em có vài câu hỏi hy vọng anh và team giả đáp giúp, em rất cảm ơn. </p> <p> Em đã research về blockchain mới đây, có ý tưởng về Decentralized Exchange và muốn tìm hiểu và xây 1 Dex thử. Thì anh cho em hỏi hiện nay cần xác định những bước đi như thế nào để xây dụng 1 sàn Dex và nên sử dụng smart contracts platform nào có thể support multi chain nhiều nhất và đầy đủ nhất hiện nay bao gồm (Ethereum, Polygon(Matic), Binance Smart Chain, Cardano(ADA), Polkadot, Solana). </p> <p> </p> <p> Em xin lỗi nếu kiến thức và cách đặt câu hỏi của em không hay mong anh và team bỏ qua. </p> <p> Em cảm ơn anh và team. </p>
Answer
Avatar
3
monkey Enlightened
monkey Enlightened
[Deep Learning] Làm thế nào để xác định được cái hàm tuyến tính nào cần dùng
Bài toán của anh là recommendation: matching sự kiện có liên quan đến người dùng nhất để bán. Ngày trước anh dùng phương pháp tìm hàm sai số với Linear Regression. Thực ra lúc đó anh cũng đoán mò cái hàm ban đầu là <code>f(x) = a1x1 +a2x2 + .. + anxn + b;</code> cơ mà anh cứ sợ nó sai. Theo anh hiểu thì có 2 cách để xác định cái hàm tuyến tính ban đầu: <p> </p> <ol start="1"> <li>Sử dụng công cụ đồ hoạ chiếu tất cả các điểm về dạng đồ thì 2 chiều từ đó nhìn vào mật độ phân bố để đoán ra được hàm tuyến tính </li> <li>Có 1 định lý toán học nào đó hoặc có 1 kiểu toán học nào đó có thể áp dụng để suy ra được cái hàm tuyến tính ban đầu này </li> </ol> <p> </p> <p> Anh hiểu vậy đúng không em? </p>
Answer
Avatar
4
tvd12 Enlightened
tvd12 Enlightened
Performance của ezyfox server thế nào?
Performance của ezyfox server thế nào?
Answer