使用 Dify 和 AWS Bedrock 玩转 Anthropic Claude 3

本篇文章,聊聊怎么比较稳定的使用 Anthropic Claude 3,以及基于目前表现非常好的模型,来做一些有趣的 AI Native 小工具。

写在前面

在实际体验了半个多月,月初上线的 Anthropic Claude Pro 后,发现 Claude 3 系列模型能力确实很不错(Opus、Sonnet、Haiku),在指令遵循和响应速度上都有比较明显的变化。

Anthropic Claude Pro 氪金体验

不过,个人注册的账号和去年的 ChatGPT Plus 一样,借给朋友体验使用,因为不同的客户端登录(登录 IP 切换),很容易遇到风控问题,比如:需要不确定时间的协助登录确认,更麻烦的会遇到账号封禁,要提工单解除账号限制。

前一阵,亚马逊 AWS 的 Bedrock 基础模型(FM)平台上更新了 Anthropic Claude 3 模型。周末花了一些时间,我对上一篇文章中提到的 Dify 做了一些模型适配工作,现在只需要几条命令,我们就能够通过 Docker 快速地启动一套基于 Claude 3 的 AI 小东西啦,比如 Chat Claude3、Claude3 AI Apps、Claude 3 Bot 的懒人工具啦。

可以快速搭建类似这样的 AI 应用

针对 Dify 的相关代码改动已经提交至 Dify 官方仓库,目测官方应用这些功能调整应该还需要一段时间。所以,想快速尝鲜的同学,可以先访问和使用我的仓库来获取配置或者自行构建 Docker 镜像:soulteary/dify。

当然,如果你想使用更现成一些的应用,可以下载网盘中的 Docker 镜像,来快速体验如何分分钟搭建属于你自己的 “Claude3 AI 应用”。

还是先从准备工作开始。

准备工作

需要准备的内容,一共有三项:

  1. 能够运行 Docker 应用的设备环境(本地或云主机都行)。
  2. 下载我构建好的 Dify 应用镜像,或使用我提供的源代码仓库进行手动构建。
  3. 申请亚马逊 AWS Bedrock Claude 3 模型使用权限。

准备工作:Docker 运行环境

借助 Docker,我们能够在投入很少额外资源的情况下,快速获得纯净、可复现的、一致性非常棒的环境。

不论你的设备硬件或云主机是否包含显卡,都可以根据自己的操作系统喜好,参考这两篇来完成基础环境的配置《基于 Docker 的深度学习环境:Windows 篇》、《基于 Docker 的深度学习环境:入门篇》。当然,安装 Docker 之后,还可以做很多其他的有趣的事情,比如:之前几十篇有关 Docker 的实践,在此就不赘述啦。

如果你已经有了一个可以运行 Docker 的环境,我们可以来准备下一项内容。

准备工作:下载或构建修改后的 Dify 应用镜像

晚些时候,我会上传构建好的镜像到网盘,你可以在专栏的评论区找到资源下载地址。镜像下载完毕后,可以使用下面的命令加载镜像:

docker load -i dify-api-claude3.tar

如果你更喜欢从头构建,可以执行下面的命令:

git clone https://github.com/soulteary/dify.git
cd dify/api
git checkout wow/so-lazy
docker build -t soulteary/dify-api:claude3 .

等待命令执行完毕,镜像相关的准备工作就完成啦。

准备工作:AWS Bedrock 的 Claude3 使用权限申请

账号注册等一系列“一路 Next”的简单操作,我们这里就不花时间赘述啦。

当我们登录 “AWS Bedrock”,打开模型访问权限管理页面,默认情况下可能并没有 “Anthropic Claude3” 模型的使用权限。这个时候提交工单申请开通权限即可。

默认情况,可能没有 Claude 3 模型权限

等权限开通后,模型权限页面就能够看到“一切就绪”啦。

获取到的 Claude 3 模型权限

访问“用户凭证管理”页面,创建一个凭证后,下载凭证文件(credentials)后,我们的准备工作就都完成啦。

实践开始

这里同样包括三个步骤:

  1. 使用 Docker 启动 Dify,完成应用基础配置,让我们能够在浏览器中管理和配置后续搭建的具体 AI 应用。
  2. 在 Dify 里完成 Claude3 或者其他的模型资源的配置,让我们的程序能够调用这些模型来进行内容生成。
  3. 使用 Dify 简单的折腾几个常见应用,比如 ChatBot,最简单的知识库。

快速完成 Dify 的配置和启动

想要快速的使用 Docker 启动 Dify,我们只需要准备两个文件,分别是 Docker 编排文件 docker-compose.yml 和 Nginx 配置文件nginx.conf

version: '3.1'
services:# API serviceapi:image: soulteary/dify-api:claude3restart: alwaysenvironment:# Startup mode, 'api' starts the API server.MODE: api# The log level for the application. Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`LOG_LEVEL: INFO# A secret key that is used for securely signing the session cookie and encrypting sensitive information on the database. You can generate a strong key using `openssl rand -base64 42`.SECRET_KEY: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U# The base URL of console application web frontend, refers to the Console base URL of WEB service if console domain is# different from api or web app domain.# example: http://cloud.dify.aiCONSOLE_WEB_URL: ''# Password for admin user initialization.# If left unset, admin user will not be prompted for a password when creating the initial admin account.INIT_PASSWORD: ''# The base URL of console application api server, refers to the Console base URL of WEB service if console domain is# different from api or web app domain.# example: http://cloud.dify.aiCONSOLE_API_URL: ''# The URL prefix for Service API endpoints, refers to the base URL of the current API service if api domain is# different from console domain.# example: http://api.dify.aiSERVICE_API_URL: ''# The URL prefix for Web APP frontend, refers to the Web App base URL of WEB service if web app domain is different from# console or api domain.# example: http://udify.appAPP_WEB_URL: ''# File preview or download Url prefix.# used to display File preview or download Url to the front-end or as Multi-model inputs;# Url is signed and has expiration time.FILES_URL: ''# When enabled, migrations will be executed prior to application startup and the application will start after the migrations have completed.MIGRATION_ENABLED: 'true'# The configurations of postgres database connection.# It is consistent with the configuration in the 'db' service below.DB_USERNAME: postgresDB_PASSWORD: difyai123456DB_HOST: dbDB_PORT: 5432DB_DATABASE: dify# The configurations of redis connection.# It is consistent with the configuration in the 'redis' service below.REDIS_HOST: redisREDIS_PORT: 6379REDIS_USERNAME: ''REDIS_PASSWORD: difyai123456REDIS_USE_SSL: 'false'# use redis db 0 for redis cacheREDIS_DB: 0# The configurations of celery broker.# Use redis as the broker, and redis db 1 for celery broker.CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1# Specifies the allowed origins for cross-origin requests to the Web API, e.g. https://dify.app or * for all origins.WEB_API_CORS_ALLOW_ORIGINS: '*'# Specifies the allowed origins for cross-origin requests to the console API, e.g. https://cloud.dify.ai or * for all origins.CONSOLE_CORS_ALLOW_ORIGINS: '*'# The type of storage to use for storing user files. Supported values are `local` and `s3`, Default: `local`STORAGE_TYPE: local# The path to the local storage directory, the directory relative the root path of API service codes or absolute path. Default: `storage` or `/home/john/storage`.# only available when STORAGE_TYPE is `local`.STORAGE_LOCAL_PATH: storage# The S3 storage configurations, only available when STORAGE_TYPE is `s3`.S3_ENDPOINT: 'https://xxx.r2.cloudflarestorage.com'S3_BUCKET_NAME: 'difyai'S3_ACCESS_KEY: 'ak-difyai'S3_SECRET_KEY: 'sk-difyai'S3_REGION: 'us-east-1'# The type of vector store to use. Supported values are `weaviate`, `qdrant`, `milvus`.VECTOR_STORE: weaviate# The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`.WEAVIATE_ENDPOINT: http://weaviate:8080# The Weaviate API key.WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih# Mail configuration, support: resend, smtpMAIL_TYPE: ''# default send from email address, if not specifiedMAIL_DEFAULT_SEND_FROM: 'YOUR EMAIL FROM (eg: no-reply <no-reply@dify.ai>)'SMTP_SERVER: ''SMTP_PORT: 587SMTP_USERNAME: ''SMTP_PASSWORD: ''SMTP_USE_TLS: 'true'# the api-key for resend (https://resend.com)RESEND_API_KEY: ''RESEND_API_URL: https://api.resend.com# The DSN for Sentry error reporting. If not set, Sentry error reporting will be disabled.SENTRY_DSN: ''# The sample rate for Sentry events. Default: `1.0`SENTRY_TRACES_SAMPLE_RATE: 1.0# The sample rate for Sentry profiles. Default: `1.0`SENTRY_PROFILES_SAMPLE_RATE: 1.0depends_on:- db- redisvolumes:# Mount the storage directory to the container, for storing user files.- ./volumes/app/storage:/app/api/storage# worker service# The Celery worker for processing the queue.worker:image: soulteary/dify-api:claude3restart: alwaysenvironment:# Startup mode, 'worker' starts the Celery worker for processing the queue.MODE: worker# --- All the configurations below are the same as those in the 'api' service. ---# The log level for the application. Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`LOG_LEVEL: INFO# A secret key that is used for securely signing the session cookie and encrypting sensitive information on the database. You can generate a strong key using `openssl rand -base64 42`.# same as the API serviceSECRET_KEY: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U# The configurations of postgres database connection.# It is consistent with the configuration in the 'db' service below.DB_USERNAME: postgresDB_PASSWORD: difyai123456DB_HOST: dbDB_PORT: 5432DB_DATABASE: dify# The configurations of redis cache connection.REDIS_HOST: redisREDIS_PORT: 6379REDIS_USERNAME: ''REDIS_PASSWORD: difyai123456REDIS_DB: 0REDIS_USE_SSL: 'false'# The configurations of celery broker.CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1# The type of storage to use for storing user files. Supported values are `local` and `s3`, Default: `local`STORAGE_TYPE: localSTORAGE_LOCAL_PATH: storage# The type of vector store to use. Supported values are `weaviate`, `qdrant`, `milvus`.VECTOR_STORE: weaviate# The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`.WEAVIATE_ENDPOINT: http://weaviate:8080# The Weaviate API key.WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih# Mail configuration, support: resendMAIL_TYPE: ''# default send from email address, if not specifiedMAIL_DEFAULT_SEND_FROM: 'YOUR EMAIL FROM (eg: no-reply <no-reply@dify.ai>)'# the api-key for resend (https://resend.com)RESEND_API_KEY: ''RESEND_API_URL: https://api.resend.comdepends_on:- db- redisvolumes:# Mount the storage directory to the container, for storing user files.- ./volumes/app/storage:/app/api/storage# Frontend web application.web:image: langgenius/dify-web:0.5.9restart: alwaysenvironment:EDITION: SELF_HOSTED# The base URL of console application api server, refers to the Console base URL of WEB service if console domain is# different from api or web app domain.# example: http://cloud.dify.aiCONSOLE_API_URL: ''# The URL for Web APP api server, refers to the Web App base URL of WEB service if web app domain is different from# console or api domain.# example: http://udify.appAPP_API_URL: ''# The DSN for Sentry error reporting. If not set, Sentry error reporting will be disabled.SENTRY_DSN: ''# The postgres database.db:image: postgres:15-alpinerestart: alwaysenvironment:PGUSER: postgres# The password for the default postgres user.POSTGRES_PASSWORD: difyai123456# The name of the default postgres database.POSTGRES_DB: dify# postgres data directoryPGDATA: /var/lib/postgresql/data/pgdatavolumes:- ./volumes/db/data:/var/lib/postgresql/datahealthcheck:test: [ "CMD", "pg_isready" ]interval: 1stimeout: 3sretries: 30# The redis cache.redis:image: redis:6-alpinerestart: alwaysvolumes:# Mount the redis data directory to the container.- ./volumes/redis/data:/data# Set the redis password when startup redis server.command: redis-server --requirepass difyai123456healthcheck:test: [ "CMD", "redis-cli", "ping" ]# The Weaviate vector store.weaviate:image: semitechnologies/weaviate:1.19.0restart: alwaysvolumes:# Mount the Weaviate data directory to the container.- ./volumes/weaviate:/var/lib/weaviateenvironment:# The Weaviate configurations# You can refer to the [Weaviate](https://weaviate.io/developers/weaviate/config-refs/env-vars) documentation for more information.QUERY_DEFAULTS_LIMIT: 25AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'PERSISTENCE_DATA_PATH: '/var/lib/weaviate'DEFAULT_VECTORIZER_MODULE: 'none'CLUSTER_HOSTNAME: 'node1'AUTHENTICATION_APIKEY_ENABLED: 'true'AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih'AUTHENTICATION_APIKEY_USERS: 'hello@dify.ai'AUTHORIZATION_ADMINLIST_ENABLED: 'true'AUTHORIZATION_ADMINLIST_USERS: 'hello@dify.ai'# The nginx reverse proxy.# used for reverse proxying the API service and Web service.nginx:image: nginx:latestrestart: alwaysvolumes:- ./nginx.conf:/etc/nginx/nginx.confdepends_on:- api- webports:- "80:80"

上面是 docker-compose.yml 文件的内容,保存在 soulteary/dify/docker/docker-compose.yml,默认配置中我们将使用 Nginx 将各种服务串起来,在 80 端口提供访问服务。你可以根据你自己的需求,来进行配置调整。当然,如果你是 traefik 用户,可以参考这个配置文件:soulteary/dify/docker/docker-compose.traefik.yml。搞定 Docker 配置后,大概完成了这个阶段 50% 的工作。

让我们继续来完成剩下 50% 的工作,在 docker-compose.yml 相同目录下,创建一个名为 nginx.conf 的文件(soulteary/dify/docker/nginx.conf):

user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;keepalive_timeout  65;client_max_body_size 15M;server {listen 80;server_name _;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_http_version 1.1;proxy_set_header Connection "";proxy_buffering off;proxy_read_timeout 3600s;proxy_send_timeout 3600s;location @backend {proxy_pass http://api:5001;}location @frontend {proxy_pass http://web:3000;}location /console/api {try_files $uri $uri/ @backend;}location /api {try_files $uri $uri/ @backend;}location /v1 {try_files $uri $uri/ @backend;}location /files {try_files $uri $uri/ @backend;}location / {try_files $uri $uri/ @frontend;}}
}

创建并保存了上面两个配置文件后,我们执行 docker compose up -d,稍等片刻,等待服务运行完毕,就能够在浏览器中访问 Dify 啦。

# docker compose up -d
[+] Running 7/7✔ Container docker-weaviate-1  Started                                                                                                                                                                 0.6s ✔ Container docker-web-1       Started                                                                                                                                                                 0.6s ✔ Container docker-db-1        Started                                                                                                                                                                 0.8s ✔ Container docker-redis-1     Started                                                                                                                                                                 0.7s ✔ Container docker-worker-1    Started                                                                                                                                                                 1.0s ✔ Container docker-api-1       Started                                                                                                                                                                 1.0s ✔ Container docker-nginx-1     Started                              

当 Docker 中的程序都跑起来之后,我们在浏览器中访问运行 Docker 程序的设备 IP 和端口,比如: http://IP:80 ( 本地运行的话,会是http://127.0.0.1),就能够看到 Dify 的管理员账号设置界面啦。

首次使用,需要先设置管理员账号

设置完毕管理员账号后,登录程序,就能够访问 Dify 的控制面板啦,我们可以在这里随意的创建基于 Prompt 的 AI 应用。

Dify 控制面板默认界面

当然,在搭建 AI 应用前,我们还需要进行一个步骤,配置可以使用的模型资源。

配置 Claude 3 等模型服务

点击界面右上角的用户头像,在下拉菜单中点击“设置”,在弹出窗口中选择左侧的“模型供应商”菜单,能够看到 Dify 支持配置使用的所有模型类型。

打开设置选项中的“模型供应商”

如果你的 AWS Claude 3 模型使用权限申请就绪,那么可以点击 “AWS Bedrock” 模型,打开设置界面。

AWS Bedrock 模型设置界面

在设置页面中,填写我们从上文中获取到的 AWS 用户凭据信息(Access KeySecret Access Key),你开通资源访问的云服务资源区域,如果你没有获取所有的模型访问权限,为了能够配置成功,你需要在界面最后一栏中填写一个你拥有权限的模型名称。

成功获取 AWS Bedrock 模型列表

全部配置结束后,点击“模型供应商”这个弹窗顶部的“系统模型设置”按钮,在弹出的下拉菜单中,更新默认的系统推理模型,建议选择能力相对比较强的模型,可以大幅提升你使用 Dify 过程中的用户体验。

更新默认系统推理模型

好啦,接下来我们就可以正式开始搭建 AI 应用啦。

先快速搭建一个 AI 应用

回到主界面,点击“创建应用”按钮,能够看到一个“开始创建一个新应用”的弹窗。

创建应用

我们可以在弹出的窗口中,选择要创建应用的类型,以及应用的名称和图标,这里我们先创建一个聊天机器人。

先选择“助手”类型的应用

点击创建后,我们会自动进入应用编辑页面,默认情况下会弹出应用模型配置下拉菜单,我们可以根据自己的需求调整应用使用的模型。调试阶段,我这里选择的是响应速度更快、成本也更经济的 Claude3 Haiku。

更新应用的模型后端服务

在选择好模型之后,我们点击模型按钮,能够看到模型的具体配置菜单。这里建议“采样相关参数”只开启一个即可,通常情况下,尤其是在调试阶段,我们只使用“温度”就行(增加多样性),当结果差不多符合预期后,再调整 top-ptop-k 来提高相关性。。

调整模型参数

通常情况下,模型(尤其海外模型)对于英文指令遵循能力是更强的,所以这里我们可以在 system (prompt) 中设置一个简单的要求:

# 只使用中文回答内容,必须是要一句简短的电影台词来进行响应。Respond only in Chinese. User response must be replied to using only a simple movie line.

然后我们点击页面下方的“添加功能”按钮,在弹出的功能选项框里,可以根据需求启用一些好玩的功能,我这里启用了 “对话开场白”、“下一步问题建议”。

添加一些有趣的交互功能

如果你也启动了“开场白”功能,那么你可以和我一样,在界面中新出现的聊天增强区域写几个“开场问题”。

填写一些预设的交互内容

搞定后,页面右侧的调试预览区域,就能够看到机器人的预设交互啦。

调试验证刚刚配置好的应用

我们随便点击一个问题按钮,问题会自动发送到模型,然后模型会携带我们配置好的参数进行内容回复,当我们交互完毕,模型会根据上面的聊天内容生成几个推荐的问题。是不是还蛮简单的?

调试验证刚刚配置好的应用

点击左侧侧边栏的“概览”,能够看到这个应用的模型调用情况,以及看到 “页面应用地址”、“端口 API 地址”。前者能够让我们打开一个独立的页面应用,来提供服务或者避免在调试预览的体验过程中,误动模型参数。

使用 Dify 配置生成的 AI 应用

后者,则可以让我们将这个应用的能力使用编程的方式,在其他的地方进行调用。目前 Dify 的 SDK 还在建设中,如果你也是 Golang 爱好者,可以使用我之前写的 soulteary/dify-go-sdk 来快速调用模型应用的接口,完成更复杂的应用。

应用调用日志

在应用调用日志界面,我们能够看到所有的调用记录,我个人认为这里后续可能是一个重点功能,因为我们可以通过收集、整理(点赞、点踩、编辑或标注内容),来从具体场景应用进行模型训练内容的收集和整理。如果官方支持比较晚的话,我可能会考虑实现一个小工具,来低成本完成这个事情。

最后

这篇文章先写到这里,下一篇相关的文章,我们来聊聊进阶玩法,一如文章开头中图片中的例子们。

–EOF


我们有一个小小的折腾群,里面聚集了一些喜欢折腾、彼此坦诚相待的小伙伴。

我们在里面会一起聊聊软硬件、HomeLab、编程上、生活里以及职场中的一些问题,偶尔也在群里不定期的分享一些技术资料。

关于交友的标准,请参考下面的文章:

苏洋:致新朋友:为生活投票,不断寻找更好的朋友

当然,通过下面这篇文章添加好友时,请备注实名和公司或学校、注明来源和目的,珍惜彼此的时间 😄

苏洋:关于折腾群入群的那些事


本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

本文作者: 苏洋

创建时间: 2024年03月18日
统计字数: 15595字
阅读时间: 32分钟阅读
本文链接: https://soulteary.com/2024/03/18/play-with-anthropopic-claude-3-using-dify-and-aws-bedrock.html

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习几个地图组件(基于react)

去年开发时用的公司封装的地图组件&#xff0c;挺方便的&#xff0c;但是拓展性不强&#xff0c;所以看看有哪些优秀的开源地图组件吧 1、React Leaflet 介绍&#xff1a;开源的JavaScript库&#xff0c;用于在web上制作交互式地图&#xff0c;允许你使用React组件的方式在应…

QT作业。。

1.使用手动连接&#xff0c;将登录框中的取消按钮使用t4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数将登录按钮使用t5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断u界面上输入的账号是否为"admin"&#xff0c;密码是否为&q…

Web前端笔记+表单练习+五彩导航

一、笔记 表单&#xff1a;数据交互的一种方式 登录、注册、搜索 <from> <input type""> --- <input type"text"> --- 普通输入框&#xff0c;内容在一行显示 <input type"password"> --- 密码框 <input type"…

内存卡损坏怎么修复数据,内存卡损坏修复数据方法

内存卡损坏是许多用户都可能面临的问题。当我们的内存卡损坏时,其中存储的重要数据可能会受到威胁,承载着我们无尽回忆的数据,一旦失去,将成为大家心中永远的遗憾。因此我们迫切需要找到一种方法来修复这些数据。本文将介绍一些内存卡损坏修复数据方法,帮助大家解决因为内…

【计算机视觉】Gaussian Splatting源码解读补充(一)

本文旨在补充gwpscut创作的博文学习笔记之——3D Gaussian Splatting源码解读。 Gaussian Splatting Github地址&#xff1a;https://github.com/graphdeco-inria/gaussian-splatting 论文地址&#xff1a;https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gauss…

物联网数据报表分析

随着物联网技术的迅猛发展&#xff0c;越来越多的企业开始将物联网解决方案应用于各个领域&#xff0c;从提高生产效率到优化用户体验&#xff0c;物联网都发挥着至关重要的作用。然而&#xff0c;如何有效地分析和管理物联网产生的海量数据&#xff0c;成为企业面临的挑战之一…

Linux centos7安装nginx-1.24.0并且实现自启动

1.安装之前的操作 ps -ef|grep nginx 查看是否有运行 如果有就杀掉 kill -9 pid find / -name nginx 查看nginx文件 rm -rf file /usr/local/nginx* 通通删掉删掉 yum remove nginx 限载一下服务 1.2.下载安装包 地址 nginx: download 2.减压文件 tar…

学习笔记Day14:Linux下软件安装

软件安装 Anaconda 所有语言的包(package)、依赖(dependency)和环境(environment)管理器&#xff0c;类似应用商店 Conda < Miniconda < Anaconda&#xff08;有交互界面&#xff09; Linux下Miniconda即可 安装Miniconda 搜索北外/清华miniconda镜像网站&#xff…

【09】进阶JavaScript事件循环Promise

一、事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有了进程后,就可以运行程序的代码了。 运行代码的「人」称之…

Linux信号处理

Linux信号处理 什么是linux信号 本质是一种通知机制&#xff0c;用户 or 操作系统通过发送一定的信号&#xff0c;通知进程&#xff0c;某些事情已经发生&#xff0c;你可以在后续进行处理。 信号产生是随机的&#xff0c;进程可能正在忙自己的事情&#xff0c;所以&#xf…

目标检测——PP-YOLOE-R算法解读

PP-YOLO系列&#xff0c;均是基于百度自研PaddlePaddle深度学习框架发布的算法&#xff0c;2020年基于YOLOv3改进发布PP-YOLO&#xff0c;2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet&#xff0c;2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列&#xff0c;所以放一起解…

二、阅读器的开发(初始)-- 2、阅读器开发

1、epubjs核心工作原理 1.1 epubjs的核心工作原理解析 epub电子书&#xff0c;会通过epubjs去实例化一个Book对象&#xff0c;Book对象会对电子书进行解析。Book对象可以通过renderTo方法去生成一个Rendition对象&#xff0c;Rendition主要负责电子书的渲染&#xff0c;通过R…

java网络原理(三)----三次握手四次挥手

三次握手 三次握手是建立连接的过程&#xff0c;四次挥手是断开连接的过程&#xff0c;三次握手发生在socket.accept()之前。 客户端和服务器尝试建立连接的时候服务器就会和客户端进行一系列的数据交换称为握手&#xff0c;这个过程建立完了后&#xff0c;连接就好了。 A和B…

python的BBS论坛系统flask-django-nodejs-php

为了更好地发挥本系统的技术优势&#xff0c;根据BBS论坛系统的需求&#xff0c;本文尝试以B/S架构设计模式中的django/flask框架&#xff0c;python语言为基础&#xff0c;通过必要的编码处理、BBS论坛系统整体框架、功能服务多样化和有效性的高级经验和技术实现方法&#xff…

数据挖掘与分析学习笔记

一、Numpy NumPy&#xff08;Numerical Python&#xff09;是一种开源的Python库&#xff0c;专注于数值计算和处理多维数组。它是Python数据科学和机器学习生态系统的基础工具包之一&#xff0c;因为它高效地实现了向量化计算&#xff0c;并提供了对大型多维数组和矩阵的支持…

2024年企业级通用人工智能的关键技术趋势

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

爬虫(七)

1.批量爬取知网数据 lxml:是 Python 的一个功能强大且易用的 XML 和 HTML 处理库。它提供了简单又轻巧的 API,使得解析、构建和操作 XML 和 HTML 文档变得非常方便。lxml 库通常用于处理 XML 和 HTML 文档,例如解析网页、处理配置文件等。openpyxl:是 Python 中用于操作 Ex…

二、Kubernetes(k8s)中部署项目wordpress(php博客项目,数据库mysql)

前期准备 1、关机顺序 2、开机顺序 (1)、k8s-ha1、k8s-ha2 (2)、master01、master02、master03 (3)、node01、node02 一、集群服务对外提供访问&#xff0c;需要通过Ingress代理发布域名 mast01上传 ingress-nginx.yaml node01、node02 上传 ingress-nginx.tar 、kube-webh…

五、C#归并排序算法

简介 归并排序是一种常见的排序算法&#xff0c;它采用分治法的思想&#xff0c;在排序过程中不断将待排序序列分割成更小的子序列&#xff0c;直到每个子序列中只剩下一个元素&#xff0c;然后将这些子序列两两合并排序&#xff0c;最终得到一个有序的序列。 归并排序实现原…

Android Studio实现内容丰富的安卓校园二手交易平台(带聊天功能)

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号083 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看二手商品列表 3.发布二手商品 4.商品详情 5.聊天功能…