自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于DeepSeek + VSCode 實現(xiàn)AI輔助編程

人工智能
隨著人工智能技術的飛速發(fā)展,AI 輔助編程逐漸成為提升開發(fā)效率、優(yōu)化代碼質(zhì)量的重要工具。本文通過結合 DeepSeek 的強大語言模型和 VSCode 的高效開發(fā)環(huán)境,展示了如何利用 AI 輔助編程完成一個經(jīng)典的 MapReduce 詞頻統(tǒng)計任務。

隨著人工智能技術的飛速發(fā)展,AI 輔助編程逐漸成為提升開發(fā)效率、優(yōu)化代碼質(zhì)量的重要工具。本文通過結合 DeepSeek 的強大語言模型和 VSCode 的高效開發(fā)環(huán)境,展示了如何利用 AI 輔助編程完成一個經(jīng)典的 MapReduce 詞頻統(tǒng)計任務。這一實踐不僅展示了 AI 在編程中的應用潛力,還為開發(fā)者提供了一個高效、便捷的開發(fā)流程示例,幫助讀者快速上手 AI 輔助編程,并探索其在實際項目中的應用價值。

實驗環(huán)境:

  1. VSCode
  2. Cline
  3. DeepSeek
  4. Ubuntu 22.04
  5. Hadoop 3.3.5

以上實驗環(huán)境并不要求完全一致,能實現(xiàn)效果即可。

安裝與配置Cline

Cline 是一個 VSCode 插件,可以接入 DeepSeek 的 API,用于生成代碼、解釋代碼或者修復代碼問題。在VSCode左側(cè)“擴展”中搜索Cline并下載

圖片圖片

安裝完成后,我們點擊右上角齒輪圖案進入設置,選擇當前的AI輔助編程使用的大模型。對于DeepSeek,我們有兩種方案:

  • 使用已經(jīng)安裝好的本地Ollama服務:https://dblab.xmu.edu.cn/blog/5816/ 可以參考這篇博客中的Ollama安裝DeepSeek-r1,輸入對應的Ollama服務地址,如http://localhost:11434,如果Ollama服務正確運行,則會顯示你已經(jīng)安裝的模型,如下圖中的deepseek-r1-1.5b:latest

圖片圖片

  • 可以使用DeepSeek提供的API,至https://platform.deepseek.com/usage 中就可以購買并獲得API

配置完成后就可以開始使用Cline,具體的功能可以對照下圖

圖片圖片

AI輔助編程-以詞頻統(tǒng)計案例為例實現(xiàn)

為了更好地展示AI輔助編程的效果,筆者在這采用使用DeepSeek API的方式,這樣的請求方式能使用滿血的DeepSeek,方便讀者們看到效果,實際實驗的過程中,使用自己安裝的DeepSeek 7b也是可以的。

為了更好地實現(xiàn)輔助編程,我首先用maven創(chuàng)建了一個干凈的新項目,項目的架構圖為

demo
├─ pom.xml
├─ src
│  └─ main
│     └─ java
└─ target

我本機安裝的hadoop版本為3.3.5,因此我提前在pom.xml中引入基礎的包,方便AI使用

<?xml versinotallow="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocatinotallow="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>demo</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>demo</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <hadoop.version>3.3.5</hadoop.version> 
  </properties>

    <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- 導入hadoop依賴環(huán)境 -->
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-core</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-yarn-api</artifactId>
        <version>${hadoop.version}</version>
    </dependency>
  </dependencies>

  ...
</project>

之后新建對話的第一個問題就詳細描述我要完成的任務:

**任務目標**
使用JAVA語言,用MapReduce框架實現(xiàn)詞頻統(tǒng)計,要求輸出詞頻排序結果

**輸入數(shù)據(jù)**

1. txt格式
2. 請你隨意生成三個txt內(nèi)容用于測試,文件不用很大,每個文件有幾條數(shù)據(jù)即可

**開發(fā)要求**

1. 在我當前創(chuàng)建好的maven項目中開發(fā)
2. 輸入數(shù)據(jù)和輸出數(shù)據(jù)都保存在本地,不需要使用HDFS
3. 直接返回代碼,告訴我我該怎么做。

之后Cline根據(jù)我的要求,編寫好對應的promt去請求DeepSeek,并依次創(chuàng)建了測試數(shù)據(jù)文件

圖片圖片

接著又依次根據(jù)我的需求,創(chuàng)建了

WordCountMapper.java 

WordCountReducer.java 

WordCount.java

圖片圖片

package com.example;

import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class WordCountMapper extends Mapper<Object, Text, Text, IntWritable> {
    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context) 
            throws IOException, InterruptedException {
        StringTokenizer itr = new StringTokenizer(value.toString());
        while (itr.hasMoreTokens()) {
            word.set(itr.nextToken());
            context.write(word, one);
        }
    }
}
package com.example;

import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> values, Context context)
            throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable val : values) {
            sum += val.get();
        }
        result.set(sum);
        context.write(key, result);
    }
}
package com.example;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordCount {
    public static void main(String[] args) throws Exception {
        if (args.length != 2) {
            System.err.println("Usage: WordCount <input path> <output path>");
            System.exit(-1);
        }

        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "word count");
        job.setJarByClass(WordCount.class);
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

之后Cline認為代碼編寫完成,可以使用maven直接打包,并用hadoop指令運行,但這時候遇到了一個問題,我并沒有配置hadoop的環(huán)境變量(也就是說用hadoop指令需要到我安裝的hadoop目錄/usr/local/hadoop下),因此我提示了Cline這一點

圖片圖片

在這之后,項目成功被打包為jar包,并執(zhí)行,輸出結果至創(chuàng)建好的/output文件夾

圖片圖片

最終效果

最終Cline + DeepSeek自動創(chuàng)建的項目結構為:

圖片圖片

output文件夾中成功輸出了詞頻統(tǒng)計:

圖片圖片

本文驗證了AI輔助編程在MapReduce開發(fā)中的有效性,其代碼生成效率與質(zhì)量均達到專業(yè)開發(fā)標準。未來隨著AI模型對分布式系統(tǒng)知識的深化,該方法有望成為大規(guī)模數(shù)據(jù)處理任務的首選開發(fā)模式。

責任編輯:武曉燕 來源: 程序員wayn
相關推薦

2025-01-02 14:10:41

2025-01-07 09:00:00

2025-02-08 08:00:00

JavaDeepSeekIDEA

2024-04-22 15:00:00

AIAI輔助編程工具開發(fā)

2025-02-14 09:10:47

2025-02-14 08:13:05

AI技術開發(fā)

2025-03-03 00:05:00

AIJavaC++?

2025-03-03 02:00:00

DeepSeekAIToken

2024-05-11 07:54:29

AI輔助編程工具

2023-04-08 10:04:45

2024-02-26 12:51:20

2024-04-08 14:17:37

數(shù)據(jù)安全人工智能

2025-04-21 08:13:58

ChatGPTAINLP

2024-07-30 14:14:34

2024-10-07 08:13:44

AI輔助編程工具

2023-09-12 22:46:16

AI開發(fā)

2025-02-27 08:00:00

DeepSeek大模型人工智能
點贊
收藏

51CTO技術棧公眾號