11.27每日总结

发布时间 2023-12-27 23:01:27作者: 想不起来好名字
今日完成所有大作业实验

 

 

实验一:百度机器翻译SDK实验

一、实验要求

实验一:百度机器翻译SDK实验(2023.11.29日完成)

    任务一:下载配置百度翻译Java相关库及环境(占10%)。

    任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。

    任务三:完成百度翻译相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。

    任务四:完成百度翻译GUI相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。

    实验总结:(占10%)

    实验效果样例图:

    

    参考资料:https://ai.baidu.com/ai-doc/index/MT

    https://cloud.baidu.com/doc/MT/index.html

    https://console.bce.baidu.com/tools/?_=1669807341890#/api?product=AI&project=%E6%9C%BA%E5%99%A8%E7%BF%BB%E8%AF%91&parent=%E9%89%B4%E6%9D%83%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6&api=oauth%2F2.0%2Ftoken&method=post

二、实验步骤

 

任务一:

 

 

 

 

任务二:

百度翻译是一款由百度公司开发的在线翻译工具,提供了多种语言之间的翻译服务。

其中,文本翻译主要包括通用版和词典版两个功能。百度翻译SDK是一个提供机器翻译服务的软件开发工具包,可以帮助开发者将文本进行翻译。它提供了两个版本的翻译功能:通用版和词典版。通用版翻译功能可以实现语种间的互相翻译,包括中文、英文、日文、韩文等多种语言。您可以将中文翻译成其他语言,或将其他语言翻译成中文。词典版翻译功能可以提供更加准确的翻译结果,支持单词、短语和句子级别的翻译,并提供更多的词义解释和例句。这可以帮助用户更好地理解翻译结果。

1文本翻译-通用版:

该功能能够进行多种语言之间的文本翻译,支持语音输入、手写输入等多种输入方式。用户可以将待翻译的文字直接输入到输入框中,或者通过剪贴板将文本粘贴到输入框中,然后选择需要翻译的语言,即可获取翻译结果。此外,该功能还支持对长文本进行分段翻译,并且可以调整翻译质量等级,以满足用户不同的翻译需求。

 

2文本翻译-词典版:

该功能主要提供单词、词组、专业名词等方面的翻译服务。用户可以输入需要查询的单词或词组,系统会返回该单词或词组的基本释义、常用搭配、例句等信息。同时,该功能还提供了音标、英美发音等特色功能,帮助用户更准确地理解和掌握所查询的单词或词组。

总的来说,百度翻译具有便捷、快速、准确的特点,适合用户在日常工作、学习和生活中进行多语言交流和沟通。

任务三:

 

 

 

 

 

 

 

 

package baidu.com;

 

import okhttp3.*;

 

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

 

import java.io.*;

 

public class Sample {

    public static final String API_KEY = "etPiMNBgi0xZlHbBGWPWKQNl";

    public static final String SECRET_KEY = "HsKTYpaSxUwFONZddMN1rIdNamv6ClpK";

 

    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();

 

    public static String trans(String t) throws IOException{

        MediaType mediaType = MediaType.parse("application/json");

        RequestBody body = RequestBody.create(mediaType, "{\"from\":\"en\",\"to\":\"zh\",\"q\":\""+t+"\"}");

        Request request = new Request.Builder()

            .url("https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + getAccessToken())

            .method("POST", body)

            .addHeader("Content-Type", "application/json")

            .addHeader("Accept", "application/json")

            .build();

        Response response = HTTP_CLIENT.newCall(request).execute();

        //System.out.println(response.body().string());

        String jsonStr = response.body().string();

        try {

            JSONObject jsonObject = new JSONObject(jsonStr);

            JSONObject resultObject = jsonObject.getJSONObject("result");

            JSONArray transResultArray = resultObject.getJSONArray("trans_result");

 

            for (int i = 0; < transResultArray.length(); i++) {

 

                JSONObject transObj = transResultArray.getJSONObject(i);

                String translation = transObj.getString("dst");

                System.out.println(translation);

                return translation;

            }

        } catch (JSONException e) {

            e.printStackTrace();

        }

return t;

    }

    

    

    /**

     * 从用户的AK,SK生成鉴权签名(Access Token)

     *

     * @return 鉴权签名(Access Token)

     * @throws IOException IO异常

     */

    static String getAccessToken() throws IOException {

        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");

        RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY

                + "&client_secret=" + SECRET_KEY);

        Request request = new Request.Builder()

                .url("https://aip.baidubce.com/oauth/2.0/token")

                .method("POST", body)

                .addHeader("Content-Type", "application/x-www-form-urlencoded")

                .build();

        Response response = HTTP_CLIENT.newCall(request).execute();

        return new JSONObject(response.body().string()).getString("access_token");

    }

    

}

 

 

package baidu.com;

 

import javax.swing.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.IOException;

 

public class TranslationGUI extends JFrame {

    private JTextField inputTextField;

    private JButton translateButton;

    private JTextArea outputTextArea;

 

    public TranslationGUI() {

        setTitle("翻译软件");

        setSize(400, 300);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLayout(null);

 

        inputTextField = new JTextField();

        inputTextField.setBounds(20, 20, 200, 30);

        add(inputTextField);

 

        translateButton = new JButton("翻译");

        translateButton.setBounds(230, 20, 100, 30);

        translateButton.addActionListener(new ActionListener() {

            @Override

            public void actionPerformed(ActionEvent e) {

                translateText();

            }

        });

        add(translateButton);

 

        outputTextArea = new JTextArea();

        outputTextArea.setBounds(20, 70, 350, 180);

        add(outputTextArea);

 

        setVisible(true);

    }

 

    private void translateText() {

        // TODO: Add your translation logic using Baidu Translation SDK here

        String inputText = inputTextField.getText();

        String translatedText = performTranslation(inputText);

        outputTextArea.setText(translatedText);

    }

 

    private String performTranslation(String inputText) {

        // TODO: Implement your translation logic using Baidu Translation SDK here

        // Replace this placeholder code with actual translation logic

        if (inputText.equals("你好")) {

            return "Hello";

        } else if (inputText.equals("Hello")) {

            return "你好";

        } else {

            try {

return Sample.trans(inputText);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

        }

return inputText;

    }

 

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override

            public void run() {

                new TranslationGUI();

            }

        });

    }

}

 

三、实验总结

通过这次实验我学会了调用百度翻译的接口实现翻译的效果,学会了下载配置百度翻译Java相关库及环境,并写gui实现这一功能实现汉译英,英译汉的功能,受益匪浅,学会了巩固java知识点

实验二:百度图像增强与特效SDK实验

一、实验要求

实验二:百度图像增强与特效SDK实验(2023.12.6日完成)

    任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。

    任务二:了解百度图像增强与特效相关功能并进行总结(占20%)。

    任务三:完成图像增强GUI相关功能代码并测试调用,要求上传自己的模糊照片进行图像增强(占30%)。

    任务四:完成图像特效GUI相关功能代码并测试调用,要求上传自己的照片进行图像特效(占30%)。

    实验总结:(占10%)

 

 

二、实验步骤

 

任务一:

 

 

 

 

 

 

任务二:

百度图像增强与特效相关功能主要包括两个方面:

 

图像增强

百度提供了一系列图像增强的API,可以通过调用API来对图像进行降噪、去模糊、增加对比度等操作。以下是主要的图像增强API

 

图像超分辨率:将低分辨率图像转换为高分辨率图像,提高图像清晰度。

去雾:去除图像中的雾霾,提高图像的视觉效果。

图像对比度增强:提高图像的对比度,使图像更加鲜明。

图像去模糊:去除图像中的模糊,提高图像的清晰度。

图像锐化:增强图像的轮廓和细节,使图像更加清晰。

特效处理

百度还提供了一系列特效处理的API,可以通过调用API来对图像进行美颜、滤镜、换脸等处理。以下是主要的特效处理API

 

人脸美颜:对人脸图像进行美颜处理,包括磨皮、美白、祛斑等。

人脸滤镜:为人脸图像添加各种滤镜效果,如黑白、素描、卡通等。

人脸融合:将两张人脸图像进行融合,实现换脸效果。

图像分割:将图像中的不同区域进行分割,便于后续处理。

总的来说,百度图像增强与特效相关功能可以帮助开发者快速地对图像进行处理,提高图像的质量和视觉效果,同时也可以为各种应用场景提供更多的可能性。

任务三:

 

 

 

 

 

任务

 

 

 

 

 

 

三、实验总结

这次实验我学会调用百度的图片的接口,通过百度图片的接口实现图片的任务漫画效果,模糊增强效果,实现了用Gui的效果来设置图片,非常有趣味性。我遇到64编码转图片的问题,之前不会,还出现空格%的格式问题,我都解决了

 

 

 

实验三:JFinal极速开发框架实验

一、实验要求

验二:百度图像增强与特效SDK实验(2023.12.6日完成)

    任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。

    任务二:了解百度图像增强与特效相关功能并进行总结(占20%)。

    任务三:完成图像增强GUI相关功能代码并测试调用,要求上传自己的模糊照片进行图像增强(占30%)。

    任务四:完成图像特效GUI相关功能代码并测试调用,要求上传自己的照片进行图像特效(占30%)。

    实验总结:(占10%)

 

二、实验步骤

任务一:

Maven 是一个流行的项目管理工具,主要用于构建和管理 Java 项目。它提供了一种结构化的方式来组织项目代码、构建过程和依赖关系

项目结构管理:Maven 规定了标准的项目结构,使得项目的组织和管理更加简单和一致。通过约定俗成的目录结构,开发者可以快速找到源代码、资源文件、测试代码等。

1、构建自动化:Maven 提供了一个强大的构建系统,可以自动完成编译、测试、打包、部署等一系列构建任务。开发者只需要定义项目的依赖关系和构建脚本,Maven 就可以根据配置自动执行这些任务。

2、依赖管理:Maven 管理项目的依赖关系非常方便。通过在项目配置文件中声明依赖,Maven 可以自动下载所需的依赖库,并且能够解决依赖之间的冲突。这样,开发者无需手动下载和管理依赖库,可以更加专注于项目开发。

3、插件扩展:Maven 提供

4、多模块管理:对于大型项目,Maven 支持多模块管理。开发者可以将一个大型项目分解为多个子模块,每个模块都有自己的独立构建配置。这样可以提高代码的可维护性和复用性,同时简化了团队协作。

5、文档生成:Maven 可以根据项目中的 Javadoc 注释自动生成文档,并且支持生成各种格式的文档,如 HTMLPDF 等。这有助于团队成员了解项目的接口和使用方法。

总之,Maven 提供了一种标准化的项目管理方式,可以帮助开发者更加高效地构建、管理和维护 Java 项目。它简化了项目的构建过程和依赖管理,提供了丰富的插件扩展和文档生成功能,是 Java 开发中不可或缺的工具之一。

 

 

任务二:

JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有rubypythonphp等动态语言的开发效率!

JFinal有如下主要特点:

MVC架构,设计精巧,使用简单

 

遵循COC原则,支持零配置,无xml

 

独创Db + Record模式,灵活便利

 

ActiveRecord支持,使数据库开发极致快速

 

自动加载修改后的java文件,开发过程中无需重启 web server

 

AOP支持,拦截器配置灵活,功能强大

 

Plugin体系结构,扩展性强

 

多视图支持,支持 EnjoyFreeMarkerJSP

 

强大的Validator后端校验功能

 

功能齐全,拥有struts2的绝大部分功能

 

体积小仅 723 KB,且无第三方依赖

 

任务三:

 

 

三、实验总结

项目启动步骤

1: 使用 blog.sql 中的 sql 语句创建数据库与数据库表

2: 修改 src/main/resources/demo-config-dev.txt 文件,填入正确的数据库连接用户名、密码

3: 将项目导入 eclipse。推荐使用 Eclipse IDE for Java EE Developers

4: 打开 com.demo.common包下的 DemoConfig 文件,右键单击该文件并选择 Debug As ---> Java Application

5: 打开浏览器输入  localhost 即可查看运行效果

注意: 请确保安装了 JavaSE 1.8 或更高版本

我学会了怎么打开这个项目,让我自己写真不会,可是在这个基础上去改善我还是可以的,通过这个我知道了jfinall的运行结构逻辑,代码结构,巩固了增删改查,为我以后写大作业打基础,这遇到问题是我找不到一些目录来修改页面,终于在同学的帮助下,先改善页面,再学数据库的改善到最后增删改查,一步一个脚印终于完成

 

 

 

 

大作业:

一、实验要求

位同学可根据自身情况进行选择:

    选项一:根据实验一、二、三完成如下任务:

        任务一:基于Jfinal构建信息管理系统,要求包含用户管理,翻译业务模块管理,图片优化模块管理(占30%)。

        任务二:要求不同用户登录后可进行文字翻译和图片优化业务处理,并且可查看提交业务处理结果,时间,处理列表,图形汇总等(占30%)。

        任务三:要求管理员登录后可查看不同用户的各项业务使用情况(占30%)。

 

四、实验步骤

项目启动步骤

1: 使用 blog.sql 中的 sql 语句创建数据库与数据库表

2: 修改 src/main/resources/demo-config-dev.txt 文件,填入正确的数据库连接用户名、密码

3: 将项目导入 eclipse。推荐使用 Eclipse IDE for Java EE Developers

4: 打开 com.demo.common包下的 DemoConfig 文件,右键单击该文件并选择 Debug As ---> Java Application

5: 打开浏览器输入  localhost 即可查看运行效果

注意: 请确保安装了 JavaSE 1.8 或更高版本

 

 

任务一:

 

任务二:

 

任务三:

 

二、实验总结

我学会了,基于Jfinal构建信息管理系统,要求包含用户管理,翻译业务模块管理,图片优化模块管理,jfinall实现多功能的实现图片存储,数据存到数据库中,中途遇到很多问题,由于这个框架不了解,我不知道怎么修改页面,图片中途64转码出了很多问题,而且过程很麻烦,不同用户管理员之间的关系,解决方案,边写边学,满满觉得有头绪了,大作业写完觉得自己增长了很多知识,这个框架的方便性也体会到了,巩固了百度接口的调用问题