Maven小知识点

1)Maven利用生命周期与对应的插件绑定来完成任务,为我们简化好多操作。执行Maven命令时,执行当前命令Maven按照生命周期会把
之前的命令全执行一遍,如执行mvn package时它会先执行mvn compile(编译)等操作。

2) Maven约定优于配置,如Maven工程的目录结构固定,如:src/main/java用于写业务代码,src/test/java用于写测试代码。

3)Maven坐标:Maven利用坐标,就可以到仓库去下载对应的jar包,利用groupId和artifactId就可以确定唯一坐标,省去了我们到各个网站去找对应的jar,从而节省时间。下载后的jar包在仓库里统一管理。
如当打成war包时,Maven再根据依赖把对应的jar包加载到工程对应的webapp下的lib文件夹下。

4)利用私服来减少对外网的访问从而减少带宽。

5)利用聚合来管理多模块,用继承来减少重复依赖。

6)与版本工具配合可以完成自动化部署。

7)groupId、artifactId
   groupId: 定义当前Maven项目隶属的实际项目,可以用公司域名的反转加上项目名。如:org.apache.shiro,org.apache.commons,其中org.apache是公司域名倒过来写,shiro是公司的项目名称。
   artifactId:是模块名,推荐是使用实际项目名做为artifactId的前缀。如shiro-core

<dependency>
 <groupId>org.apache.shiro</groupId>
 <artifactId>shiro-core</artifactId>
</dependency>

8) 可以既是聚合又是继承。
    <packaging>pom</packaging>
    <modules>
        <module>child1</module>
        <module>child2</module>
    </modules>

9) dependencyManagement父子模块都先不引入,只做依赖声明和版本号定义。插件依赖也有对应的pluginManagement用法类似。
dependencyManagement:既能让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性。在dependencyManagement元素下的依赖声明不会引入实际的依赖。
但它可以约束dependencies的使用。如版本号的定义。在父模块声明后在子模块要想使用相关的依赖。直接写出groupId、artifactId即可,因为版本号在父模块已经定义好了。

父模块
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
        <!-- 版本号最好定义在<properties></properties>里,用的时候用${}引入 -->
            <version>1.3.2</version> 
        </dependency>
    </dependencies>
</dependencyManagement>

子模块
<dependencies>
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
    </dependency>
</dependencies>

10)模块构建时修剪,即在多模块中可以指定具体的模块参与构建。 mvn -h 查看具体的选项。下面列出几个。
-am,同时构建所列模块的依赖模块。就加当于类加载,如果子类依赖父类,就顺带把父类也给加载了。
-amd,同时构建依赖所列模块的模块。就是如果构建父模块顺带把子模块也一起构建。
-pl,构建指定模块,多个模块之间用逗号分隔。
-rf,从指定模块开始构建,有点像字符串截取,比如有3个模块可以指定只构建后两个,也就是从第二个模块开始构建。

如:mvn clean install -pl module1 -amd -rf module2 其中module1和module2换成实际的模块名称。

本文参考《Maven实战》
 

资源下载链接为: https://pan.quark.cn/s/140386800631 通用大模型文本分类实践的基本原理是,借助大模型自身较强的理解和推理能力,在使用时需在prompt中明确分类任务目标,并详细解释每个类目概念,尤其要突出类目间的差别。 结合in-context learning思想,有效的prompt应包含分类任务介绍及细节、类目概念解释、每个类目对应的例子和待分类文本。但实际应用中,类目和样本较多易导致prompt过长,影响大模型推理效果,因此可先通过向量检索缩小范围,再由大模型做最终决策。 具体方案为:离线时提前配置好每个类目的概念及对应样本;在线时先对给定query进行向量召回,再将召回结果交给大模型决策。 该方法不更新任何模型参数,直接使用开源模型参数。其架构参考GPT-RE并结合相关实践改写,加入上下文学习以提高准确度,还使用BGE作为向量模型,K-BERT提取文本关键词,拼接召回的相似例子作为上下文输入大模型。 代码实现上,大模型用Qwen2-7B-Instruct,Embedding采用bge-base-zh-v1.5,向量库选择milvus。分类主函数的作用是在向量库中召回相似案例,拼接prompt后输入大模型。 结果方面,使用ICL时accuracy达0.94,比bert文本分类的0.98低0.04,错误类别6个,处理时添加“家居”类别,影响不大;不使用ICL时accuracy为0.88,错误58项,可能与未修改prompt有关。 优点是无需训练即可有较好结果,例子优质、类目界限清晰时效果更佳,适合围绕通用大模型api打造工具;缺点是上限不高,仅针对一个分类任务部署大模型不划算,推理速度慢,icl的token使用多,用收费api会有额外开销。 后续可优化的点是利用key-bert提取的关键词,因为核心词语有时比语意更重要。 参考资料包括
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值