LangChain4J-(1)-Hello World

一、LangChain4J是什么?

LangChain4J 是一個專為 Java 生態系統設計的開源框架,用于簡化與大語言模型(LLM,如 OpenAI 的 GPT 系列、Google 的 Gemini、Anthropic 的 Claude 等)的集成和交互。它借鑒了 Python 生態中 LangChain 的核心思想,但專為 Java 開發者優化,提供了更符合 Java 編程習慣的 API 和功能。

1.1 核心定位與價值

LangChain4J 的核心目標是降低開發基于大語言模型的應用的門檻,幫助開發者快速實現以下功能:
  • 與各類大語言模型(LLM)進行交互(發送提示詞、處理響應);
  • 管理對話記憶(保存上下文,實現多輪對話);
  • 集成外部工具(如數據庫查詢、API 調用、計算器等,讓 LLM 具備實際操作能力);
  • 處理提示詞模板(動態生成結構化提示);
  • 構建復雜的 AI 工作流(如鏈(Chain)、代理(Agent)等)。

1.2 主要特性

  1. 多模型支持
內置對主流大語言模型的支持,包括 OpenAI、Gemini、Anthropic、LLaMA、通義千問等,開發者無需關注不同模型的 API 差異,通過統一接口調用。
  1. 對話記憶管理
提供多種記憶組件(如基于窗口的記憶、持久化記憶),自動保存對話上下文,讓 LLM 能夠 “記住” 歷史對話內容,支持多輪交互。
  1. 工具調用能力
允許 LLM 根據需求需求自動調用外部工具(如查詢數據庫、調用 REST API、執行代碼等),擴展 LLM 的實際應用能力(例如讓 AI 查天氣、查股票、操作數據)。
  1. 提示詞工程支持
提供提示詞模板、格式化工具,幫助開發者構建結構化提示,提升 LLM 響應質量。
  1. 輕量靈活
可與 Java 原生項目集成,也可通過 Spring Boot Starter 與 Spring 生態無縫結合,支持從小型工具到大型應用的各種場景。
  1. 擴展性
支持自定義組件(如自定義記憶存儲、工具適配器),滿足個性化需求。

1.3 典型使用場景

  • 構建聊天機器人(帶上下文記憶的多輪對話);
  • 開發 AI 驅動的問答系統(結合知識庫);
  • 實現智能助手(自動調用工具完成任務,如生成報告、數據分析);
  • 集成 LLM 到現有 Java 應用(如在企業系統中添加 AI 客服、自動文檔處理功能)。

1.4 與 Python LangChain 的關系

LangChain4J 受 Python 版 LangChain 啟發,目標類似,但專為 Java 生態設計,API 風格更符合 Java 開發者習慣,且與 Spring Boot 等主流 Java 框架有更好的集成性。兩者均致力于解決 LLM 應用開發中的共性問題(如記憶、工具調用、流程編排),但分屬不同編程語言生態。

1.5 總結

LangChain4J 是 Java 開發者集成大語言模型的得力工具,它抽象了與 LLM 交互的復雜性,提供了標準化的組件和流程,讓開發者可以更專注于業務邏輯,而非底層交互細節。無論是簡單的提示詞調用,還是復雜的 AI 代理系統,都能通過 LangChain4J 快速實現。

二、Hello World

2.1 獲取阿里百煉API KEY

1、獲取APIKEY

2、把APIKEY配置到環境變量中

3、模型名與BASE_URL

點紅色箭頭進去看模型名,點綠色箭頭進去看BASE_URL

2.2 建項目

新建maven聚合工程,父工程pom如下:
<?xml version="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:schemaLocation="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.bbchat.demo</groupId><artifactId>langchain4j-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><name>langchain4j-demo父工程pom配置</name><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- Spring Boot --><spring-boot.version>3.5.0</spring-boot.version><!-- Spring AI --><spring-ai.version>1.0.0</spring-ai.version><!-- Spring AI Alibaba --><spring-ai-alibaba.version>1.0.0-M6.1</spring-ai-alibaba.version><!-- langchain4j --><langchain4j.version>1.0.1</langchain4j.version><!--langchain4j-community 引入阿里云百煉平臺依賴管理清單--><langchain4j-community.version>1.0.1-beta6</langchain4j-community.version><!-- maven plugin --><maven-deploy-plugin.version>3.1.1</maven-deploy-plugin.version><flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version><maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version></properties><dependencyManagement><dependencies><!-- Spring Boot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring AI --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring AI Alibaba --><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>${spring-ai-alibaba.version}</version></dependency><!--langchain4j的依賴清單,加載BOM后所有langchain4j版本號可以被統一管理起來https://docs.langchain4j.dev/get-started--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-bom</artifactId><version>${langchain4j.version}</version><type>pom</type><scope>import</scope></dependency><!--引入阿里云百煉平臺依賴管理清單https://docs.langchain4j.dev/integrations/language-models/dashscope--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-bom</artifactId><version>${langchain4j-community.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>${maven-deploy-plugin.version}</version><configuration><skip>true</skip></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><release>${java.version}</release><compilerArgs><compilerArg>-parameters</compilerArg></compilerArgs></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>${flatten-maven-plugin.version}</version><inherited>true</inherited><executions><execution><id>flatten</id><phase>process-resources</phase><goals><goal>flatten</goal></goals><configuration><updatePomFile>true</updatePomFile><flattenMode>ossrh</flattenMode><pomElements><distributionManagement>remove</distributionManagement><dependencyManagement>remove</dependencyManagement><repositories>remove</repositories><scm>keep</scm><url>keep</url><organization>resolve</organization></pomElements></configuration></execution><execution><id>flatten.clean</id><phase>clean</phase><goals><goal>clean</goal></goals></execution></executions></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository><repository><id>aliyunmaven</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories>
</project>

2.3 建Module

新建子工程,pom文件內容如下:
<?xml version="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:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.bbchat.demo</groupId><artifactId>langchain4j-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>langchain4j-0101-helloword</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--langchain4j-open-ai 基礎--><!--所有調用均基于 OpenAI 協議標準,實現一致的接口設計與規范LangChain4j 提供與許多 LLM 提供商的集成從最簡單的開始方式是從 OpenAI 集成開始https://docs.langchain4j.dev/get-started    --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId></dependency><!--langchain4j 高階--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2.4 寫properties

為子工程新建application.properties,內容如下:
server.port=9001 ? spring.application.name=langchain4j-0101-helloword

2.5 寫主啟動類

package com.bbchat.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Main {public static void main(String[] args) {System.out.printf("Hello and welcome!");SpringApplication.run(Main.class,args);}
}

2.6 寫配置類

package com.bbchat.demo.config;import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class LLMConfig {@Beanpublic ChatModel chatModelQwen(){return OpenAiChatModel.builder().apiKey(System.getenv("aliqwen-apikey")).modelName("qwen-plus").baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1").build();}
}

2.7 寫controller

package com.bbchat.demo.controller;import dev.langchain4j.model.chat.ChatModel;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@Slf4j
public class HelloLangChain4JController {@Resourceprivate ChatModel chatModelQwen;// http://localhost:9001/langchain4j/hello?prompt=如何學習大模型應用開發@GetMapping(value = "/langchain4j/hello")public String hello(@RequestParam(value = "prompt", defaultValue = "你是誰") String prompt){String result = chatModelQwen.chat(prompt);System.out.println("通過langchain4j調用模型返回結果:\n"+result);return result;}
}

2.8 測試

三、Sprngboot整合LangChain4J

LangChain4J官方文檔:Spring Boot Integration | LangChain4j
按照官網上的說法是:
LangChain4J 作為 Java 生態中集成大語言模型(LLM)的框架,其 “原生整合” 和 “Boot 整合” 是兩種主流使用方式,核心差異在于是否依賴 Spring Boot 生態,適用于不同場景。

3.1 原生整合的特點

  • 優點
:輕量(無額外框架依賴)、靈活度高(可完全控制組件生命周期)、適合嵌入非 Spring 項目(如傳統 Java 桌面應用)。
  • 缺點
:配置分散在代碼中、需手動管理依賴和組件(如記憶、工具調用)、缺乏自動配置和依賴注入能力。

3.2 Boot整合的特點

  • 優點
:配置集中化(通過 application.yml)、依賴注入簡化組件管理、與 Spring 生態無縫集成(如結合 Spring MVC 暴露 API、Spring Security 處理權限)、自動支持高級功能(如記憶、工具調用)。
  • 缺點
:引入 Spring Boot 依賴,增加項目體積,不適合純輕量 Java 項目。

3.3 手敲兩種整合

1、POM文件

在maven聚合工程中新建一個module,我們在子工程的pom文件中把兩種集成方式所需要的依賴都寫上,其中紅框是原生整合、綠框是boot整合。
附完整Module的POM文件
<?xml version="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:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.bbchat.demo</groupId><artifactId>langchain4j-demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>langchain4j-0102-boot</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--langchain4j-open-ai 基礎--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId></dependency><!--langchain4j 高階--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId></dependency><!--1 LangChain4j 整合boot底層支持--><!--   https://docs.langchain4j.dev/tutorials/spring-boot-integration  --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai-spring-boot-starter</artifactId></dependency><!--2 LangChain4j 整合boot高階支持--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-spring-boot-starter</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-core</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2、application.properties

其中的apiqwen-apikey環境變量是本文第二章節中配置的
server.port=9002spring.application.name=langchain4j-0102-bootlangchain4j.open-ai.chat-model.api-key=${aliqwen-apikey}
langchain4j.open-ai.chat-model.model-name=qwen-plus
langchain4j.open-ai.chat-model.base-url=https://dashscope.aliyuncs.com/compatible-mode/v1

3、寫主啟動類

package com.bbchat.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Main {public static void main(String[] args) {System.out.printf("welcome langchain4j-0102-boot!");SpringApplication.run(Main.class,args);}}

4、編寫原生整合

新建PopularIntegrationController,代碼如下:
package com.bbchat.demo.controller;import dev.langchain4j.model.chat.ChatModel;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PopularIntegrationController {@Resourceprivate ChatModel chatModel;// http://localhost:9002/lc4j/boot/chat@GetMapping(value = "/lc4j/boot/chat")public String chat(@RequestParam(value = "prompt", defaultValue = "你是誰") String prompt){return chatModel.chat(prompt);}
}

5、編寫boot整合

新建service接口類,代碼如下:
package com.bbchat.demo.service;import dev.langchain4j.service.spring.AiService;@AiService
public interface ChatAssistant {String chat(String prompt);
}
新建DeclarativeAIServiceController,代碼如下:
package com.bbchat.demo.controller;import com.bbchat.demo.service.ChatAssistant;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class DeclarativeAIServiceController {@Resourceprivate ChatAssistant chatAssistantQwen;// http://localhost:9002/lc4j/boot/declarative@GetMapping(value = "/lc4j/boot/declarative")public String declarative(@RequestParam(value = "prompt", defaultValue = "你是誰") String prompt){return chatAssistantQwen.chat(prompt);}
}

6、驗證

作者驗證時用的9003端口,大家玩的時候以代碼里面的端口為準。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95394.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95394.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95394.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTTPS應用層協議-中間攻擊人

HTTPS應用層協議-中間攻擊人 ? Man-in-the-MiddleAttack&#xff0c;簡稱“MITM 攻擊” 確實&#xff0c;在方案 2/3/4 中&#xff0c;客戶端獲取到公鑰 S 之后&#xff0c;對客戶端形成的對稱秘鑰 X 用服務端給客戶端的公鑰 S 進行加密&#xff0c;中間人即使竊取到了數據&am…

利用 Makefile 高效啟動 VIVADO 軟件:深入解析與實踐

利用 Makefile 高效啟動 VIVADO 軟件&#xff1a;深入解析與實踐 系列文章目錄 1、VMware Workstation Pro安裝指南&#xff1a;詳細步驟與配置選項說明 2、VMware 下 Ubuntu 操作系統下載與安裝指南 3.基于 Ubuntu 的 Linux 系統中 Vivado 2020.1 下載安裝教程 文章目錄利用 …

[前端算法]排序算法

默認情況下&#xff0c;sort() 會將元素轉換為字符串&#xff0c;然后按照 Unicode 編碼的順序進行排序&#xff1a; const fruits [apple, banana, cherry, date]; fruits.sort(); console.log(fruits); // 輸出: ["apple", "banana", "cherry"…

C#標簽批量打印程序開發

C#標簽批量打印程序開發&#xff08;集成Bartender解決方案&#xff09;一、系統架構設計 1. 核心模塊劃分 public class LabelPrintingSystem {private IDataLoader _dataLoader; // 數據加載器private ITemplateEngine _templateEngine; // 模板引擎private IPrintControl…

ECC的原理、背景、工作機制和數學基礎

ECC的原理、背景、工作機制和數學基礎摘要&#xff1a;本文首先詳細介紹ECC&#xff08;Error-Correcting Code&#xff0c;糾錯碼&#xff09;的原理&#xff0c;包括背景、工作機制和數學基礎。然后&#xff0c;解釋ECC在SRAM&#xff08;Static Random-Access Memory&#x…

計算機網絡2-2:物理層下面的傳輸媒體

目錄 導引型傳輸媒體 同軸電纜 雙絞線 光纖 電力線 非導引型傳輸媒體 無線電波 微波 紅外線 可見光 無線電頻譜管理機構 導引型傳輸媒體 同軸電纜 雙絞線 光纖 光在光纖中傳播的基本原理 電力線 非導引型傳輸媒體 無線電波 微波 紅外線 可見光 LiFi(可見光通信) …

Dify 從入門到精通(第 32/100 篇):Dify 的日志分析與監控

Dify 從入門到精通&#xff08;第 32/100 篇&#xff09;&#xff1a;Dify 的日志分析與監控 Dify 入門到精通系列文章目錄 第一篇《Dify 究竟是什么&#xff1f;真能開啟低代碼 AI 應用開發的未來&#xff1f;》介紹了 Dify 的定位與優勢第二篇《Dify 的核心組件&#xff1a…

【IntelliJ IDEA】修改堆內存

idea卡頓&#xff0c;鼠標漂移修改idea文件打開 idea 安裝路徑&#xff0c;【bin】目錄下【idea64.exe.vmoptions】文件修改【-Xms】最小內存【-Xmx】最大內存-Xms2048m -Xmx9216midea更改內存設置工具欄幫助更改內存設置設置堆大小上限為 文件 設置的最大內存保存并重啟Leslie…

Docker與Docker Compose:容器世界的“單兵作戰”與“軍團指揮官”

在容器化技術的浪潮中&#xff0c;Docker和Docker Compose如同“雙子星”&#xff0c;一個專注于單兵作戰&#xff0c;一個擅長軍團指揮。它們看似相似&#xff0c;卻各司其職。對于開發者來說&#xff0c;理解它們的區別不僅能讓代碼部署事半功倍&#xff0c;更能避免踩坑。本…

進階向:Python編寫自動化郵件發送程序

Python編寫自動化郵件發送程序&#xff1a;從零開始詳解在數字化時代&#xff0c;自動化郵件發送功能已成為企業和個人提升工作效率的重要工具。據統計&#xff0c;全球每天發送的商業郵件超過30億封&#xff0c;其中約40%是通過自動化系統發送的。這種功能被廣泛應用于多種場景…

ChatGpt 5系列文章1——編碼與智能體

人工智能技術正在以驚人的速度發展&#xff0c;重新定義著開發人員的工作方式。2025年8月&#xff0c;OpenAI正式發布了面向開發人員的GPT-5 一、GPT-5的編碼能力突破 GPT-5在關鍵編碼基準測試中創造了行業新紀錄(SOTA)&#xff0c;在SWE-bench Verified測試中得分74.9%&…

力扣top100(day02-05)--二叉樹 02

102. 二叉樹的層序遍歷 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right)…

開疆智能Ethernet轉ModbusTCP網關連接發那科機器人與三菱PLC配置案例

本案例是三菱FX5U PLC通過ethernet/IP轉ModbusTCP網關對發那科機器人進行控制的配置案例。PLC端主要配置以太網端口設置在通信測試中&#xff0c;PLC作為主站&#xff0c;在PLC設置中選擇“以太網端口”非常關鍵&#xff0c;以確保通信測試的正常進行。1、首先&#xff0c;在PL…

VUE+SPRINGBOOT從0-1打造前后端-前后臺系統-系統首頁

在現代Web應用開發中&#xff0c;管理后臺是幾乎所有企業級應用不可或缺的部分。一個優秀的后臺首頁不僅需要提供清晰的信息展示&#xff0c;還需要具備良好的用戶體驗和視覺效果。本文將詳細介紹如何使用Vue.js框架配合Element UI組件庫和ECharts圖表庫&#xff0c;構建一個功…

第6節 torch.nn介紹

6.1 torch.nn.Module介紹 torch.nn.Module是 PyTorch 中構建神經網絡的基礎類&#xff0c;所有的神經網絡模塊都應該繼承這個類。它提供了一種便捷的方式來組織和管理網絡中的各個組件&#xff0c;包括層、參數等&#xff0c;同時還內置了許多用于模型訓練和推理的功能。 官網…

python自學筆記7 可視化初步

圖像的組成工具庫 Matplotlib&#xff1a;繪制靜態圖 Plotly: 可以繪制交互式圖片 圖像的繪制&#xff08;Matplotlib&#xff09; 創建圖形&#xff0c;軸對象 創造等差數列 # 包含后端點 arr np.linspace(0, 1, num11) # 不包含后端點 arr_no_endpoint np.linspace(0, 1, n…

GIS 常用的矢量與柵格分析工具

矢量處理工具作用典型應用緩沖區分析Buffer環境影響區域&#xff0c;空間鄰近度分析等&#xff0c;例如道路周圍一公里內的學校&#xff0c;噪音污染影響的范圍裁剪Clip例如使用A市圖層裁剪全國道路數據&#xff0c;獲取A市道路數據交集Intersect識別與LUCC、分區洪水區、基礎設…

http與https協議區別;vue3本地連接https地址接口報500

文章目錄問題解決方案一、問題原因分析二、解決方案詳解1. 保持當前配置&#xff08;推薦臨時方案&#xff09;2. 更安全的方案&#xff08;推薦&#xff09;3. 環境區分配置&#xff08;最佳實踐&#xff09;三、為什么開發環境不用配置&#xff1f;問題 問題&#xff1a;本地…

C語言——深入理解指針(三)

C語言——深入理解指針&#xff08;三&#xff09; 1.回調函數是什么&#xff1f; 首先我們來回顧一下函數的直接調用&#xff1a;而回調函數就是通過函數指針調用的函數。我們將函數的指針&#xff08;地址&#xff09;作為參數傳遞給另一個函數&#xff0c;當這個指針被用來調…

kettle 8.2 ETL項目【四、加載數據】

一、dim_store表結構,數據來源于業務表,且隨時間會有增加,屬于緩慢變化維(SCD)類型二 轉換步驟如下 詳細步驟如下