Spring深入学习
Spring概述 Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 的编程模型来促进良好的编程实践。
Spring的三层架构
表现层 Web层,MVC是表现层的一个设计模型
业务层 Service层
持久层 Dao层
Spring的优良特性
非侵入式:基于 Spring 开发的应用中的对象可以不依赖于 Spring 的API
控制反转:IOC——Inversion of Control,指的是将对象的创建权交给 Spring 去创建。使用 Spring 之前,对象的创建都是由我们自己在代码中new创建。而使用 Spring 之后。对象的创建都是给了 Spring 框架。
依赖注入:DI——Dependency Injection,是指依赖的 ...
基于大模型与向量数据库构建针对arXiv的知识问答系统
基础要求:
给定一个入口,用户可以输入提问
用户通过对话进行交互
系统寻找与问题相关的论文abstract
使用用户的请求对向量数据库进行请求
寻找与问题最为相关的abstract
系统根据问题和论文abstract回答用户问题,并给出解答问题的信息来源
进阶要求:
用户给出的问题或陈述不一定能够匹配向量数据库的查询,所以使用大模型对用户的输入进行润色,提高找到对应文档的概率
单次的查询可能无法寻找到用户所期望的答案,需要通过多轮的搜索和尝试才能获得较为准确的答案
相关资源部署:Qwen2.5-14B 模型已接入 LangChain Openai API,调用示例如下:
from langchain.llms import OpenAI, OpenAIChatimport osos.environ["OPENAI_API_KEY"] = "None"os.environ["OPENAI_API_BASE"] = "http://10.58.0.2:8000/v1"llm_completion = O ...
基于Qwen2.5-14B的Agent智能选课系统
系统要求:实现一个只需要使用语言即可使用的选课系统,不包含任何GUI。被调用的函数可以使用copilot生成,不需要使用数据库,只需要能够模拟对应功能。
基础功能:
查询:带有筛选的查询,可以筛选必修或选修
选课:选择需要的课程,智能返回结果,成功返回选课结果,未成功返回错误
删除:删除选择的课程,智能返回结果
进阶功能:
查询增强,根据描述返回用户最为感兴趣的课程。例如:用户喜欢体育,羽毛球等放在前面
选择增强:当用户在选课和删除时提供的课程不准确时,智能提供可能用户想提的课程
环境搭建:python库:https://github.com/QwenLM/Qwen-Agent调用模型的设置可以参考如下:
'model' : 'Qwen2.5-14B','model_server' : 'http://10.58.0.2:8000/v1', ;'api_key' : 'None',
程序代码:
import pprintimport urllib.parse ...
Hadoop以及MapReduce构建推荐系统
项目概述本项目旨在构建一个基于 Hadoop 和 MapReduce 的电影推荐系统,利用大规模数据处理技术和多种推荐算法,为用户提供个性化的电影推荐。项目分为两部分:
MapReduce部分:负责数据预处理和分布式计算
Python部分:负责推荐算法的实现与性能评估
项目目标
使用 Hadoop 和 MapReduce 处理大规模电影评分数据
实现多种推荐算法(基于用户的协同过滤、基于物品的协同过滤、矩阵分解)
对比不同算法的性能,选择最优算法
提供用户友好的推荐结果
技术栈
数据处理:Hadoop、MapReduce(Java)
推荐算法:Python(NumPy、pandas、scikit-learn)
评估指标:RMSE(均方根误差)、MAE(平均绝对误差)
项目流程
数据预处理:使用 MapReduce 清洗和格式化原始数据
推荐算法实现:使用 Python 实现多种推荐算法
算法对比:评估不同算法的性能,选择最优算法
结果生成:为用户生成个性化推荐结果
系统架构与模块设计系统架构系统架构分为三层:
数据层:存储原始数据(MovieLens数据集)以及 MapRe ...
高级软件设计
工厂方法模式-创建型模式如何理解工厂方法模式 工厂方法模式定义了一个创建对象的接口(抽象工厂),但让子类(具体工厂)决定要实例化的类(具体产品)是哪一个。工厂方法让类的实例化延迟到子类。 一个便于理解的实例:汽车工厂(抽象工厂)造车(抽象产品),汽车工厂有宝马(具体工厂)、奔驰(具体工厂),对应造的是宝马汽车(具体产品)和奔驰汽车(具体产品)。
工厂方法模式的类图
工厂方法模式的组成
抽象工厂:具体工厂的父类;描述具体工厂的公共接口
具体工厂:抽象工厂的子类,被外界调用;描述具体工厂,用于创建产品实例
抽象产品:具体产品的父类;描述具体产品的公共接口
具体产品:抽象产品的子类,由工厂类创建;描述要生产的具体产品
工厂方法模式的代码实例//抽象工厂类,工厂里有制造产品的方法public abstract class Factory{ public abstract Product Manufacture();//抽象类里的方法加上abstract限定}//抽象产品类,产品里有自己独特的方法public abstract class Product ...
高级算法
算法设计思想本章学习要求:掌握蛮力、分治、减治、变治和时空权衡等算法设计思想的特点。
蛮力法-选择排序、冒泡排序选择排序:每次遍历未排序的整个列表,选择一个最小的与第一卦没有被交换的进行交换,下次从被交换的下一个元素开始遍历。
public class SelectSort { public static void main(String[] args) { int[] arr = {10, 8, 7, 5, 6, 1, 2, 3, 9, 4}; // 调用选择排序方法 selectionSort(arr); } public static void selectionSort(int[] arr) { int n = arr.length; // 遍历数组 for (int i = 0; i < n - 1; i++) { // 假设当前索引为最小值的索引 int ...