大模型应用:基于Golang + 大模型构建简易的电商售前对话服务

在这里插入图片描述

1.背景

某X互联网电商公司为了解决当前大量用户的售前咨询问题,需要建设一个不需要客服介入的简易电商售前机器人,用于回答用户的售前问题,并给出基本可靠的咨询回答。
当前大模型如gpt、baichuan、文心等均有开放使用的OpenAPI接口,且调用费用低廉。可以基于大模型来构建简易的电商售前对话服务。
本文介绍一种基于Golang + gpt-3.5-turbo构建对话服务的方案。

2.概要设计

2.1.核心需求

对话服务的核心接口为Chat,即自动对话接口:

  • 输入:用户咨询文本
  • 输出:咨询结果

核心要求:

  1. 能够判断咨询内容是否与售卖商品相关
  2. 能够简单回答用户对于商品的咨询问题,如价格、材质、用途
  3. 能够以友好的语气回答用户问题
  4. 对于非商品售卖问题、暴力血腥问题等, 不给予回答

2.2.核心流程

在这里插入图片描述

3.详细设计

核心实现代码:https://github.com/pbrong/llm_hub/tree/master/module/chatbot

3.1.内容审查

OpenAI提供了内容审查的能力,可用于检查文本是否具有潜在危险内容,如暴力、血腥、性等输入内容。

  • 接口:v1/moderations
  • 入参:
{
    "input": "我要去轰炸米国"    
}
- 响应:
  - flagged:是否存在违规词
  - categories:文本违规分类
  - category_scores:文本违规分类得分
{
    "id": "modr-9Xh7J5zoVHoyb4rokiDHHvd1CYdPD",
    "model": "text-moderation-007",
    "results": [
        {
            "flagged": true,
            "categories": {
                "sexual": false,
                "hate": true,
                "harassment": true,
                "self-harm": false,
                "sexual/minors": false,
                "hate/threatening": false,
                "violence/graphic": false,
                "self-harm/intent": false,
                "self-harm/instructions": false,
                "harassment/threatening": true,
                "violence": true
            },
            "category_scores": {
                "sexual": 0.00008100192644633353,
                "hate": 0.5908858776092529,
                "harassment": 0.6599222421646118,
                "self-harm": 1.1431256297100845e-7,
                "sexual/minors": 9.379126595376874e-7,
                "hate/threatening": 0.09888827055692673,
                "violence/graphic": 0.000004452876964933239,
                "self-harm/intent": 1.831264739848848e-8,
                "self-harm/instructions": 1.7390346107593047e-10,
                "harassment/threatening": 0.8955895900726318,
                "violence": 0.9563981294631958
            }
        }
    ]
}

对于本次对话服务,直接按flagged来判断是否存在违规词即可。但对于某些儿童教育等应用,需直接判断违规分数,大于一定阈值即认定违规。

3.2.角色链拆分

一次对话流程如果都在一个Prompt中完成,那么这个Prompt会非常复杂且不利于维护和评估,可以按按照“角色链”来对复杂的Prompt进行拆分。
内容审查没问题后开始进入真正的问答环节,第一步是前置校验,会对用户的输入进行辨别,判断是否与电商咨询相关,如果询问的问题与咨询无关,则不进入下一步。
在前置校验完成后,确定是咨询问题,第二步进行真正的推理回答,回答过程中需要加载商品信息至Prompt输入中(即fewshot),让LLM能够根据商品信息进行推理回答。
在回答完成后,第三步将推理的回答进行语句优化,给出更良好体验的客服回答。

抽象接口

module
│   └── chatbot
│       ├── core_infer_role.go
│       ├── helper.go
│       ├── output_opt_role.go
│       └── pre_check_role.go

抽象出角色及角色链接口,方便扩展:

  • module/chatbot/helper.go
package chatbot

import "context"

var (
   // 前置校验角色
   PreCheckRole ChatRole
   // 核心对话推理角色
   CoreInferRole ChatRole
   // 对话输出优化角色
   OutputOptRole ChatRole
)

type ChatRole interface {
   Chat(ctx context.Context, input string, optArgs *OptArg) (output string, err error)
}

type OptArg struct {
   Products []string
}

type ChatChain []ChatRole

func NewChatChain(roles ...ChatRole) ChatChain {
   chain := ChatChain{}
   chain = append(chain, roles...)
   return chain
}

func (chain ChatChain) Run(ctx context.Context, input string, optArg *OptArg) (output string, err error) {
   for _, role := range chain {
      output, err = role.Chat(ctx, input, optArg)
      if err != nil {
         return "", err
      }
      if output == "N" {
         return "请咨询相关问题", nil
      }
      if output != "" && output != "Y" {
         input = output
      }
   }

   return output, nil
}

func Init() {
   PreCheckRole = NewPreCheckRole()
   CoreInferRole = NewCoreInferRole()
   OutputOptRole = NewOutputOptRole()
}

前置校验角色

  • module/chatbot/pre_check_role.go
package chatbot

import (
   "context"
   "fmt"
   "llm_hub/pkg/llm_caller"
)

type preCheckRole struct{}

func NewPreCheckRole() ChatRole {
   return &preCheckRole{}
}

func (role *preCheckRole) Chat(ctx context.Context, input string, optArg *OptArg) (output string, err error) {
   systemPrompt := `
      请仔细检查{}括起来的用户输入文本,判断该输入文本是否与电商咨询/售前咨询问题相关。
      你只可以输出Y或N,分别代表是相关咨询问题和不是相关咨询问题。
`
   gptCaller, err := llm_caller.NewGptLLMCaller(ctx, systemPrompt, 0, 1024)
   if err != nil {
      return "", err
   }
   completion, err := gptCaller.Call(ctx, fmt.Sprintf("用户输入:{%v}", input))
   if err != nil {
      return "", err
   }

   return completion, nil
}

推理回答角色

  • module/chatbot/core_infer_role.go
package chatbot

import (
   "context"
   "errors"
   "fmt"
   "llm_hub/pkg/llm_caller"
)

type coreInferRole struct{}

func NewCoreInferRole() ChatRole {
   return &coreInferRole{}
}

func (role *coreInferRole) Chat(ctx context.Context, input string, optArg *OptArg) (output string, err error) {
   if len(optArg.Products) == 0 {
      return "", errors.New("product not exist")
   }
   systemPrompt := `
      请仔细阅读并理解{}括起来的用户咨询问题,给出你的咨询回答。请严格遵循以下过程判断和回答:
      1-首先判断用户咨询的问题中,是否存在商品相关信息
      2-若存在商品相关信息,则结合{}括起来的商品信息进行回答
`
   gptCaller, err := llm_caller.NewGptLLMCaller(ctx, systemPrompt, 0, 2048)
   if err != nil {
      return "", err
   }
   completion, err := gptCaller.Call(ctx, fmt.Sprintf("用户咨询问题:{%v}\n商品信息:{%v}", input, optArg.Products))
   if err != nil {
      return "", err
   }

   return completion, nil
}

语句优化角色

  • module/chatbot/output_opt_role.go
package chatbot

import (
   "context"
   "fmt"
   "llm_hub/pkg/llm_caller"
)

type outputOptRole struct{}

func NewOutputOptRole() ChatRole {
   return &outputOptRole{}
}

func (role *outputOptRole) Chat(ctx context.Context, input string, optArg *OptArg) (output string, err error) {
   systemPrompt := `
      你是一个友好的客服机器人,现在需要对{}括起来的原始回答信息进行优化,并输出优化后的回答。
      要求:
      1-优化后的回答不能与原始回答存在歧义
      2-优化后的回答需要显示出耐心、友好和语句通顺
      3-将原始回答中的JSON格式优化为可以阅读的自然语言格式输出
      4-输出的优化回答中,不要带有经过优化等字样
`
   gptCaller, err := llm_caller.NewGptLLMCaller(ctx, systemPrompt, 0, 2048)
   if err != nil {
      return "", err
   }
   completion, err := gptCaller.Call(ctx, fmt.Sprintf("原始回答信息:{%v}", input))
   if err != nil {
      return "", err
   }

   return completion, nil
}

对话服务测试

  • service/chatbot/chatbot_service.go
package chatbot_service

import (
   "context"
   "llm_hub/module/chatbot"
)

var ChatBotServiceV1 = chatBotServiceV1{}

type ChatBotService interface {
   Chat(ctx context.Context, message string) (output string, err error)
}

type chatBotServiceV1 struct{}

func (service *chatBotServiceV1) Chat(ctx context.Context, message string) (output string, err error) {
   // 初始化角色链
   chain := chatbot.NewChatChain(
      chatbot.PreCheckRole,
      chatbot.CoreInferRole,
      chatbot.OutputOptRole)

   // 检索商品信息(RAG)
   products := retrievalProducts(ctx)

   // 调用llm
   output, err = chain.Run(ctx, message, &chatbot.OptArg{
      Products: products,
   })
   if err != nil {
      return "", err
   }

   return output, nil
}

func retrievalProducts(ctx context.Context) []string {
   // Mock一批数据,这里其实是一段RAG搜索逻辑(by向量匹配)
   return []string{
      `{
         "名称": "SoundMax Soundbar",
         "类别": "电视和家庭影院系统",
         "品牌": "SoundMax",
         "型号": "SM-SB50",
         "保修期": "1 year",
         "评分": 4.3,
         "特色": [
         "2.1 channel",
         "300W output",
         "Wireless subwoofer",
         "Bluetooth"
         ],
         "描述": "使用这款时尚而功能强大的声音,升级您电视的音频体验。",
         "价格": 199.99
         }`,
      `{
         "名称": "SoundMax Home Theater",
         "类别": "电视和家庭影院系统",
         "品牌": "SoundMax",
         "型号": "SM-HT100",
         "保修期": "1 year",
         "评分": 4.4,
         "特色": [3.3 生成用户查询的答案
         "5.1 channel",
         "1000W output",
         "Wireless subwoofer",
         "Bluetooth"
         ],
         "描述": "一款强大的家庭影院系统,提供沉浸式音频体验。",
         "价格": 399.99
      }`,
      `{
         "名称": "CineView OLED TV",
         "类别": "电视和家庭影院系统",
         "品牌": "CineView",
         "型号": "CV-OLED55",
         "保修期": "2 years",
         "评分": 4.7,
         "特色": [
         "55-inch display",
         "4K resolution",
         "HDR",
         "Smart TV"
         ],
         "描述": "通过这款OLED电视,体验真正的五彩斑斓。",
         "价格": 1499.99
      }`,
      `{
         "名称": "CineView 8K TV",
         "类别": "电视和家庭影院系统",
         "品牌": "CineView",
         "型号": "CV-8K65",
         "保修期": "2 years",
         "评分": 4.9,
         "特色": [
         "65-inch display",
         "8K resolution",
         "HDR",
         "Smart TV"
         ],
         "描述": "通过这款惊艳的8K电视,体验未来。",
         "价格": 2999.99
      }`,
      `{
         "名称": "CineView 4K TV",
         "类别": "电视和家庭影院系统",
         "品牌": "CineView",
         "型号": "CV-4K55",
         "保修期": "2 years",
         "评分": 4.8,
         "特色": [
         "55-inch display",
         "4K resolution",
         "HDR",
         "Smart TV"
         ],
         "描述": "一款色彩鲜艳、智能功能丰富的惊艳4K电视。",
         "价格": 599.99
      }`,
   }
}
  • service/chatbot/chatbot_service_test.go
package chatbot_service

import (
   "context"
   "github.com/stretchr/testify/require"
   "llm_hub/conf"
   "llm_hub/module/chatbot"
   "testing"
   "time"
)

func Test_chatBotServiceV1_Chat(t *testing.T) {
   conf.Init()
   chatbot.Init()
   ctx := context.Background()
   chatbotService := &chatBotServiceV1{}
   // 模拟用户咨询
   userConsults := []string{
      "你们有哪些产品?",
      "我可以咨询下现在天气怎么样?",
      "电视相关的产品有哪些?",
      "CineView OLED TV和SoundMax Home Theater有什么区别,介绍一下?",
   }
   for idx, consult := range userConsults {
      output, err := chatbotService.Chat(ctx, consult)
      require.Nil(t, err)
      t.Logf("用户咨询%v:%v\n机器人回答:%v", idx+1, consult, output)
      time.Sleep(time.Minute)
   }
}
  • 输出:
用户咨询1:你们有哪些产品?
机器人回答:我们有以下产品供您选择:
        
        1. **SoundMax Soundbar**
           - 类别:电视和家庭影院系统
           - 品牌:SoundMax
           - 型号:SM-SB50
           - 保修期:1- 评分:4.3
           - 特色:2.1声道、300W输出、无线低音炮、蓝牙
           - 描述:这款时尚而功能强大的声音系统可升级您电视的音频体验。
           - 价格:199.99
        
        2. **SoundMax Home Theater**
           - 类别:电视和家庭影院系统
           - 品牌:SoundMax
           - 型号:SM-HT100
           - 保修期:1- 评分:4.4
           - 特色:5.1声道、1000W输出、无线低音炮、蓝牙
           - 描述:这款强大的家庭影院系统提供沉浸式音频体验。
           - 价格:399.99
        
        3. **CineView OLED TV**
           - 类别:电视和家庭影院系统
           - 品牌:CineView
           - 型号:CV-OLED55
           - 保修期:2- 评分:4.7
           - 特色:55英寸显示屏、4K分辨率、HDR、智能电视
           - 描述:这款OLED电视让您体验真正的五彩斑斓。
           - 价格:1499.99
        
        4. **CineView 8K TV**
           - 类别:电视和家庭影院系统
           - 品牌:CineView
           - 型号:CV-8K65
           - 保修期:2- 评分:4.9
           - 特色:65英寸显示屏、8K分辨率、HDR、智能电视
           - 描述:这款惊艳的8K电视让您体验未来。
           - 价格:2999.99
        
        5. **CineView 4K TV**
           - 类别:电视和家庭影院系统
           - 品牌:CineView
           - 型号:CV-4K55
           - 保修期:2- 评分:4.8
           - 特色:55英寸显示屏、4K分辨率、HDR、智能电视
           - 描述:这款色彩鲜艳、智能功能丰富的惊艳4K电视让您体验视觉盛宴。
           - 价格:599.99
        
        以上是我们目前提供的产品列表,希望能满足您的需求。
        
用户咨询2:我可以咨询下现在天气怎么样?
机器人回答:请咨询相关问题

用户咨询3:电视相关的产品有哪些?
机器人回答:根据您的咨询,这里有一些与电视相关的产品信息供您参考:
        
        1. **SoundMax Soundbar**
           - 类别: 电视和家庭影院系统
           - 品牌: SoundMax
           - 型号: SM-SB50
           - 保修期: 1- 评分: 4.3
           - 特色: 2.1声道、300W输出、无线低音炮、蓝牙
           - 描述: 这款时尚而功能强大的声音设备可提升您电视的音频体验。
           - 价格: 199.99美元
        
        2. **SoundMax Home Theater**
           - 类别: 电视和家庭影院系统
           - 品牌: SoundMax
           - 型号: SM-HT100
           - 保修期: 1- 评分: 4.4
           - 特色: 5.1声道、1000W输出、无线低音炮、蓝牙
           - 描述: 这款强大的家庭影院系统可提供沉浸式音频体验。
           - 价格: 399.99美元
        
        3. **CineView OLED TV**
           - 类别: 电视和家庭影院系统
           - 品牌: CineView
           - 型号: CV-OLED55
           - 保修期: 2- 评分: 4.7
           - 特色: 55英寸显示屏、4K分辨率、HDR、智能电视
           - 描述: 这款OLED电视让您体验真正的五彩斑斓。
           - 价格: 1499.99美元
        
        4. **CineView 8K TV**
           - 类别: 电视和家庭影院系统
           - 品牌: CineView
           - 型号: CV-8K65
           - 保修期: 2- 评分: 4.9
           - 特色: 65英寸显示屏、8K分辨率、HDR、智能电视
           - 描述: 这款惊艳的8K电视让您体验未来。
           - 价格: 2999.99美元
        
        5. **CineView 4K TV**
           - 类别: 电视和家庭影院系统
           - 品牌: CineView
           - 型号: CV-4K55
           - 保修期: 2- 评分: 4.8
           - 特色: 55英寸显示屏、4K分辨率、HDR、智能电视
           - 描述: 这款色彩鲜艳、智能功能丰富的惊艳4K电视让您享受视听盛宴。
           - 价格: 599.99美元
        
        以上是一些与电视相关的产品信息,希望这些信息能帮助您根据自己的需求和预算选择适合的产品。如果您有任何疑问或需要进一步帮助,请随时告诉我。

用户咨询4:CineView OLED TV和SoundMax Home Theater有什么区别,介绍一下?
机器人回答:根据提供的商品信息,CineView OLED TV和SoundMax Home Theater有以下区别:
        
        1. **品牌和产品类型**- CineView OLED TV是CineView品牌的电视产品,专注于高清晰度和色彩表现。
           - SoundMax Home Theater是SoundMax品牌的家庭影院系统,致力于提供沉浸式音频体验。
        
        2. **功能和特点**- CineView OLED TV是一款55英寸的OLED电视,支持4K分辨率、HDR技术和智能电视功能,旨在提供优质的视觉体验。
           - SoundMax Home Theater采用5.1声道设计,具有1000W输出功率、无线低音炮和蓝牙连接,旨在提供沉浸式的音频体验。
        
        3. **价格和保修**- CineView OLED TV售价为1499.99美元,保修期为2年。
           - SoundMax Home Theater售价为399.99美元,保修期为1年。
        
        综上所述,CineView OLED TV注重提供优质的视觉体验,而SoundMax Home Theater专注于带来更加沉浸式的音频体验。用户可根据个人需求和预算选择适合的产品。

3.3.检索增强生成

检索增强生成(RAG)是一种通过在检索对话所需相关上下文信息,并将其与Prompt结合,一起输入给大模型以得到更加准确回答结果的技术。上文中chatbot_service的retrievalProducts方法,其实就是一个Mock的RAG。
检索增强生成一般用于复杂的需要依赖上下文信息的推理需求中使用,比如这次商品问答,必须有商品相关的信息给到LLM,LLM才能根据这部分信息,给出准确的回答。
在Fewshot(少样本提示)中,也会需要使用检索增强生成:
在这里插入图片描述

检索增强生成的关键技术是数据向量化、向量数据存储、向量数据检索召回:
在这里插入图片描述

后续有时间会发一篇检索增强生成系统的详细设计。

3.4.系统评估体系

这次拆分了三个角色来对问答系统进行支持,但如果后续Prompt语句需要调整,要如何验证是否能回答得更好,以及对比之前的回答表现呢?
这就涉及到系统评估系统的建设,一般来说每个LLM角色都需要建立对应的验证集,去验证每次Prompt调整后在验证集中的表现。
对于简单的LLM评估,如前置校验角色,我们可以通过拟定好的Y/N来计算评估得分,但对于复杂的LLM评估,如推理回答角色,其给出的回答并没有完全准确的“Y/N”,所以要如何来评估新的回答是否更好?现在流行的一种思路是通过另一个“评估专家LLM角色”,来对新旧回答做一次对比,由它来决定哪个回答更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/691574.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单片机+TN901非接触式红外测温设计

摘要 温度测量技术应用十分广泛,而且在现代设备故障检测领域中也是一项非常重要的技术。但在某些应用领域中,要求测量温度用的传感器不能与被测物体相接触,这就需要一种非接触的测温方式来满足上述测温需求。本论文正是应上述实际需求而设计的…

【Autopilot】没有自动添加本地管理员的问题处理

【问题】某公司选用了D记的笔记本电脑,约定出厂就预配置好Autopilot,当时向D记提供了三个信息: 1. M365的租户ID 2. 公司域名信息 3. Group Tag (某公司为跨国公司,通过Group Tag来区分国家,比如CHN-中国,L…

2024 IDEA最新永久使用码教程(2099版)

本篇文章我就来分享一下2024年当前最新版 IntelliJ IDEA 最新注册码,教程如下,可免费永久,亲测有效,适合Windows和Mac。 本教程适用于 J B 全系列产品,包括 Pycharm、IDEA、WebStorm、Phpstorm、Datagrip、RubyMine、…

Web LLM 攻击技术

概述 在ChatGPT问世以来,我也尝试挖掘过ChatGPT的漏洞,不过仅仅发现过一些小问题:无法显示xml的bug和错误信息泄露,虽然也挖到过一些开源LLM的漏洞,比如前段时间发现的Jan的漏洞,但是不得不说传统漏洞越来…

[Cloud Networking] Layer Protocol (continue)

文章目录 1. STP / RSTP / MSTP Protocol1.1 STP的作用1.2 STP 生成树算法的三个步骤1.3 STP缺点 2. ARP Protocol3. DHCP Protocol3.1 DHCP 三种分配方式3.2 DHCP 攻击 4. IPSEC / MACSEC 1. STP / RSTP / MSTP Protocol 1.1 STP的作用 消除二层环路:通过阻断冗余…

分享一个 .NET Core Console 项目使用依赖注入的详细例子

前言 依赖注入(Dependency Injection,简称DI)是一种软件设计模式,主要用于管理和组织一个软件系统中不同模块之间的依赖关系。 在依赖注入中,依赖项(也称为组件或服务)不是在代码内部创建或查…

Vitis HLS 学习笔记--global_array_RAM初始化及复位

目录 1. 简介 2. 示例代分析 2.1 源代码 2.2 URAM 不可用 2.3 代码功能解释 2.4 综合报告 2.4.1 顶层控制接口 2.4.2 软件 IO 信息 2.4.3 存储绑定 3. 对比两种 solution 3.1 solution_A 3.2 solution_B 4. 总结 1. 简介 在C程序中,数组是一种基本的…

每日5题Day18 - LeetCode 86 - 90

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:86. 分隔链表 - 力扣(LeetCode) /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;…

为下一波创新做准备:人工智能和元宇宙

人工智能和元宇宙的发展带来了独特的可能性和挑战。随着这些技术的发展,我们进入了一个沉浸式虚拟体验和智能系统的时代,我们正站在一个历史性的时刻。为迎接下一波创新,采取必要的措施是很重要的。 我们正在见证两项变革性技术的激动人心的发…

【TB作品】msp430f5529单片机,dht22,温湿度传感器,OLED显示屏

使用DHT22温湿度传感器和OLED显示屏的单片机项目 博客名称 利用MSP430单片机读取DHT22并显示温湿度 作品功能 本项目利用MSP430单片机读取DHT22温湿度传感器的数据,并将温湿度信息显示在OLED显示屏上。通过这个项目,您可以学习如何使用单片机与传感器…

计算机二级Access操作题总结——简单应用

查询设计 创建一个查询,能够在客人每次结账时根据客人的姓名提示统计这个客人已住天数和应交金额,并显示“姓名”、“房间号”、“已住天数”和“应交金额”,所建查询命名为“qT2”。 注:输入姓名时应提示“请输入姓名”。已住天…

vscode输出控制台中文显示乱码最有效解决办法

当VSCode的输出控制台中文显示乱码时,一个有效的解决办法是通过设置环境变量来确保编码的正确性。以下是解决方式: 首先,设置环境变量以修正乱码问题: 如果上述方法没有解决乱码问题,请继续以下步骤: 右键…

编译原理-语法分析(实验 C语言)

语法分析 1. 实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析 2. 实验要求 利用C语言编制递归下降分析程序,并对简单语言进行语法分析 2.1 待分析的简单语言的语法 用扩充的BNF表示如下: …

Spring AOP(实现,动态原理)详解版

Spring AOP 1.什么是AOP?1.1引入AOP依赖1.2编写AOP程序 2.Spring AOP核⼼概念2.1 切点(Pointcut)2.2连接点(Join Point)2.3通知(Advice)2.4 切⾯(Aspect) 3.通知类型3.1顺序3.2切⾯优先级 Order3.3 ⾃定义注解 MyAspect 4. Spring AOP 原理5 动态代理怎么实现5.1 JD…

BeagleBone Black入门总结

文章目录 参考连接重要路径系统镜像下载访问 BeagleBone 参考连接 镜像下载启动系统制作:SD卡烧录工具入门书籍推荐:BeagleBone cookbookBeagleBone概况? 重要路径 官方例程及脚本路径:/var/lib/cloud9BeagleBone Cookbook例程…

03-3.5.1~4 特殊矩阵的压缩存储

👋 Hi, I’m Beast Cheng👀 I’m interested in photography, hiking, landscape…🌱 I’m currently learning python, javascript, kotlin…📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

最新区块链论文速读--CCF A会议 CCS 2023 共25篇 附pdf下载(3/4)

Conference:ACM Conference on Computer and Communications Security (CCS) CCF level:CCF A Categories:network and information security Year:2023 Num:25 第1~7篇区块链文章请点击此处查看 第8~13篇区块链文…

【介绍下什么是Kubernetes编排系统】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

java线程池介绍

在Java中,线程池是用来管理和复用线程的一种机制,它可以显著提升程序性能,特别是在大量短期异步任务的场景下。以下是创建和使用线程池的基本步骤: 1.创建线程池: 使用java.util.concurrent.Executors类的静态工厂方法创建线程池&…

【c语言】自定义类型----结构体

结构体是c语言的一种自定义类型,自定义类型对于开发者及其重要的类型,它可以随意由开发者进行谱写功能,而今天的结构体可以用来表示一种变量的单个或多种具体属性,再编写代码时有着不可替代的作用!!&#x…