1.如何在Java项目中优雅地集成 AI 大模型?
2.Java Hello world 源码执行流程详解
3.java源代码 求大神 明天就要上机
4.JDK编译时注解处理器结合Javapoet动态生成模板化Java源文件
如何在Java项目中优雅地集成 AI 大模型?
大家好,我是雅的源码优雅二哥呀。
周一,代码公司空降一名阿里巴巴的最优技术总监老王,我很不服气,雅的源码优雅就给他出了道难题,代码在线词典 源码限时 分钟把智谱 AI 的最优最新大模型 GLM-4-AllTools 对接进技术派的派聪明 AI 助手里。
结果没想到,雅的源码优雅他还真的代码完成了,完成的最优还挺优雅,让我佩服的雅的源码优雅五体投地。于是代码我就根据老王的代码写了一篇智谱AI大模型MaaS开放平台的接入体验,一起来欣赏下 ,最优据说把下面这两条项目经历润到简历上,雅的源码优雅投出去的代码简历一投一个准。
好,我们先来看一下效果。
直接问一道比较复杂的问题:“帮我查询年至年,每年五一假期全国旅游出行数据,并绘制成柱状图展示数据趋势。长风租赁软件源码”
讲真,这道题是有难度的,结果令我没想到的是,不到 毫秒,派聪明 AI 助手就给出了答案。
点开链接瞅一眼,这柱状图生成的可以啊, 年是最低谷,然后逐步回暖,果然是符合历史背景的。
作为一名严谨的程序员,我稍微查了一下,数据较为可靠( )。
牛啊,我只能说。
于是我到智谱AI大模型MaaS开放平台瞅了一眼,果然啊。
Alltools API 能够让我们在应用程序中构架高度专业化的 AI 助手,目前主要的小米网站程序源码功能有:智能编码助手、安全代码沙盒、实时联网搜索、绘图设计工具、函数调用能力等,未来还会有网页浏览工具、知识库增强检索等。
看到这,是不是大家就忍不住了,纷纷要问,老王是怎么实现的啊?如果大家也想接入 Alltools API 实现一个智能 AI 助手,那就跟着二哥的教程来吧,五步就能搞定。
第一步,登录智谱AI大模型MaaS开放平台,新用户注册能 万的 GLM-4 tokens,适用最新的 glm-4- 和 glm-4-alltools 模型推理。
bigmodel.cn/
第二步,获取 API keys,每家大模型都需要哦。django 源码分析 pdf
第三步,拉取技术派在 GitHub 上的最新源码,智谱 AI 的对接主要在 paicoding-core 这个 module 下。
github.com/itwanger/pai...
注意,Maas 平台已经帮我们对智谱 AI 大模型做了高度封装,Maven 项目可以直接在 pom.xml 文件中引入以下依赖就可以调用 API 接口了。
在技术派中,老王还通过设计模式对各个大模型进行了灵活配置,大家可以在 getRecommendAiSource 这个方法中添加其他大模型进来。
第四步,在 application.yaml 中配置智谱 AI 的 API keys,模型为glm-4-alltools。
第五步,启动 main 主类在浏览器里中打开/dev/ho...
最后,如果大家在对接 GLM-4-AllTools 的过程中遇到接不了的难题,也可以联系二哥哦,二哥不会的话,还可以找阿里巴巴的技术总监老王。
Java Hello world 源码执行流程详解
深入解析 Java "Hello World" 程序的8ppg源码执行流程,从源代码到屏幕显示,每一个步骤都充满技术奥秘。理解这一过程,不仅能加深对 Java 语言特性的认识,更能洞察计算机底层机制的精妙。 让我们从最简单的 "Hello World" 程序开始。虽然它看起来极其简单,但其执行逻辑却包含了对 Java 语言、操作系统的深入理解。 Java "Hello World" 程序的执行,始于源代码的编译过程。Java 代码经过编译器的词法语法语义分析,最终转化为字节码文件(.class)。字节码作为 Java 代码的中间表示形式,便于在不同平台间移植。 随后,字节码文件通过 JVM (Java 虚拟机) 转化为机器码文件。这一过程不仅实现了代码在不同操作系统间的执行,还确保了 Java 程序的跨平台特性。 具体流程如下: 编译过程:将 Java 源代码编译为字节码文件。这些文件包含程序逻辑的抽象表示,便于在 JVM 上执行。 类加载机制:Java 类的加载采用双亲委派机制,确保类加载的唯一性和一致性。加载过程包括验证、准备、解析和初始化阶段,确保类的安全性。 创建栈帧:在 JVM 内存中,为程序入口方法(如 main())创建栈帧。栈帧中包含了方法执行所需的局部变量、操作数栈等数据结构。 在栈帧中,字符串 "Hello World" 通过一系列操作被赋值至变量。具体步骤涉及类加载、字符串常量池、操作数栈的使用,以及方法区的字符常量池。使用工具如 `javap -c Main.class` 可解析 `.class` 文件,深入了解这些过程。 执行 `System.out.println()` 方法时,JVM 加载 `System` 类字节码文件,创建 `System.out` 对象,并调用其 `println` 方法输出字符串。这一过程涉及原始 IO 包的使用,以及字符串的 `toString()` 方法。 接下来,JVM 字节码执行引擎将字节码转换为机器码,分配 CPU 资源执行。CPU 执行包含取值、译码和执行操作,通过操作系统管理内存、磁盘和设备。程序执行涉及 I/O 操作的完成,从文件描述符写入字符串,到操作系统检查字符串位置,直至最终在屏幕上显示 "Hello World"。 这一系列复杂的步骤,从源代码编译到屏幕显示,展示了计算机程序执行的全貌。理解这一过程,不仅有助于提升编程技能,更能加深对计算机底层工作的认知。java源代码 求大神 明天就要上机
package com.uisftec;
import java.io.Serializable;
public class TestScores implements Serializable {
private double[] testScores;
public TestScores(double[] testScores) {
this.testScores = testScores;
}
public double getAverageScore() {
double sum = 0.0d;
for (int i = 0; i < testScores.length; i++) {
sum += testScores[i];
}
return sum / testScores.length;
}
}
package com.uisftec;
public class InvalidTestScore {
public InvalidTestScore(double[] testScores) {
if (testScores == null) {
throw new IllegalArgumentException("数组为空");
}
for (int i = 0; i < testScores.length; i++) {
if (testScores[i] < 0 || testScores[i] > ) {
throw new IllegalArgumentException("数组中包含的test Score不在0~这个范围内");
}
}
}
}
package com.uisftec;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
public class TestScoresSerialize {
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
// 创建5个对象
TestScores testScores1 = new TestScores(new double[] { 1.0, 2.0 });
TestScores testScores2 = new TestScores(new double[] { 5.0, 2.0 });
TestScores testScores3 = new TestScores(new double[] { .0, .0 });
TestScores testScores4 = new TestScores(new double[] { .0, .0 });
TestScores testScores5 = new TestScores(new double[] { .0, .0 });
// 创建数组
TestScores[] testScores = new TestScores[] { testScores1, testScores2, testScores3, testScores4, testScores5 };
// 写入到D盘testScores.dat
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("d:\\testscores.dat"));
for (TestScores testScores6 : testScores) {
out.writeObject(testScores6);
}
// D盘STOUT
File file = new File("D:\\STDOUT");
// 创建输出留
DataOutputStream outputStream = new DataOutputStream(new FileOutputStream(file));
// 创建读取d盘序列化对象
ObjectInputStream in = new ObjectInputStream(new FileInputStream("d:\\testscores.dat"));
// 打印平均分并写入到D盘STDOUT
TestScores testScores8 = (TestScores) in.readObject();
System.out.println(testScores8.getAverageScore());
outputStream.writeDouble(testScores8.getAverageScore());
TestScores testScores9 = (TestScores) in.readObject();
outputStream.writeDouble(testScores9.getAverageScore());
System.out.println(testScores9.getAverageScore());
TestScores testScores = (TestScores) in.readObject();
System.out.println(testScores.getAverageScore());
outputStream.writeDouble(testScores.getAverageScore());
TestScores testScores = (TestScores) in.readObject();
System.out.println(testScores.getAverageScore());
outputStream.writeDouble(testScores.getAverageScore());
TestScores testScores = (TestScores) in.readObject();
System.out.println(testScores.getAverageScore());
outputStream.writeDouble(testScores.getAverageScore());
// 关闭流
out.close();
in.close();
outputStream.close();
}
}
JDK编译时注解处理器结合Javapoet动态生成模板化Java源文件
面对繁复的业务代码和重复劳动,我们一直在寻求更高效的解决方案。Lombok的出现,通过其注解如@Data,能自动生成getter、setter等方法,简化了代码编写。然而,对于自定义对象和集合类型,如JPA中需要扩展AttributeConverter的情况,如何减少手动编写转换类的繁琐呢?
答案在于利用Java的编译时注解处理器(Annotation Processing Tool,APT)和JavaPoet源代码生成器。APT在编译阶段处理注解,通过动态生成.java源代码,能解决重复代码问题。JavaPoet则提供了优雅地生成代码的功能,让代码生成变得轻松。
具体步骤如下:首先,理解AttributeConverter的工作原理,它在Entity和数据库之间建立数据关联。我们创建一个通用的Converter基类,如AbstractJsonConverter,用于处理类型转换。接着,定义一个自定义注解JsonAutoConverter,标记需要生成Converter的类,由AnnotationProcessor扫描并处理,生成相应的源代码,如OrderNoticeEventConverter。
通过执行编译命令,我们能在生成的源文件中看到JavaPoet生成的Converter类,它继承自AbstractJsonConverter,实现了特定类型的转换。这个例子展示了如何利用JDK编译时注解处理器结合Javapoet动态生成模板化的Java源文件,以减少重复工作,提升编码效率。
开发中的"小技巧"往往隐藏在深处,只要我们愿意探索,就能发现并应用它们,打开新的编程世界。源码地址:/zhucan/extension-spring-boot-starter/tree/master/jpa-conversion,欢迎有兴趣的朋友查看和学习。