如何在啥也不懂的情况下将你的公众号接入DeepSeek或其它大模型

前言

最近国产大模型的"顶流"DeepSeek可谓是红得发紫,朋友圈刷屏的AI神回复、公众号爆款推文,都少不了它的身影。

可当我们兴冲冲跑去官网体验时,却迎面撞上服务器被挤爆的盛况——问就服务器繁忙,请稍后再试,真是令人头大。

那么能不能将 DeepSeek 接入到自己的公众号,实现自动回复消息功能呢。

转折有点突兀是把,不要怀疑,这前言也是AI写的

但是估计是提示词没写好,就这样吧

下面内容默认你已经注册好了一个公众号和一个云服务器,如果你不知道如何购买云服务器,你可以像我一样问AI

实现

一、了解什么项目可以实现这个功能

假如我们现在啥也不会,第一步应该怎么干?

当然是先找个能联网的AI问了

我想要将deepseek r1模型接入到我的微信公众号内,实现ai自动回复消息,有没有什么开源项目可以实现这个功能

好,现在我们知道了有这样一个开源项目 chatgpt-on-wechat 可以实现这个功能,然后我们就可以去GitHub搜索这个项目,找到这个项目的主页:https://github.com/zhayujie/chatgpt-on-wechat

二、了解 chatgpt-on-wechat 这个项目

既然知道了 chatgpt-on-wechat 这个项目,我们就先了解一下这个项目

一般情况下,一个开源项目的主页会展示一篇 README,来介绍这个项目实现的功能和如何部署,正常流程是我们应该来仔细阅读一下这个项目的 README,但是AI时代,这个坏习惯该改一改了,开个玩笑,该看还得看,后面微信公众号后台配置部分还是得看文档

豆包在AI编程部分提供了引入GitHub仓库的功能,这时候我们只需要将chatgpt-on-wechat 这个项目交给豆包,他就能简单高效的帮你分析这个项目

然后我们就等AI的分析结果就好

这时候就直接问豆包

我想要快速简单的部署这个项目,请帮我介绍一下最简单方便的方法

这时候豆包应该会给你提供几种部署方案

然后我们再接着问

还有更简单的方式吗,文档中有没有对这几种部署方式介绍优劣,你能帮我列个表格分析一下,然后推荐出最好用的哪种部署方式吗

可以看到这个项目提供了一键安装启动脚本,那么我们就先用这个一键安装启动脚本来试一下

好,出问题了,因为操作系统版本太高和 Python 版本不匹配没法运行,所以我们需要切换AI推荐的第二种部署方式 Docker

三、Docker 部署项目

1、安装 docker

接着我们就问 AI

用docker部署这个项目应该如何操作

这时候 AI 应该就会告诉你要先安装 docker 及 docker-compose。安装成功的表现是执行 docker -v 和 docker-compose version(或 docker compose version)可以查看到版本号。

身为一个啥也不会的小白,肯定不知道 docker 及 docker-compose 和怎么安装啊

所以就需要接着问 AI

docker 及 docker-compose 应该怎么安装啊

AI 应该会给你一个具体的安装流程,但是当你跟着 AI 给的流程应该有 80% 的可能性安装失败,因为 docker 官方服务器在国内访问有些问题

所以正确操作应该是问 AI

我是Ubuntu24的操作系统,因为网络连接问题没法添加 Docker 的官方 GPG 密钥,请给我使用国内镜像安装docker的流程

这里涉及到一个使用大模型的技巧,就是你给AI的提示词一定要详细,这样大模型的返回结果才能足够精准

另外还有一个问题,就是你可能不知道是网络的原因,这时候应该怎么做?

很简单,你就把安装失败的报错信息发给 AI,AI应该就会告诉你是什么原因以及解决方案的。

安装好 docker 及 docker-compose 后,我们就可以返回前面 AI 介绍的 docker 部署chatgpt-on-wechat 部分内容

查看后面的步骤

2、编写 docker-compose.yml

AI提到我们可以下载 docker-compose.yml 这个配置文件,修改后运行

但是我们是一个小白,不知道怎么修改 docker-compose.yml 文件

这时候就可以直接让 AI 帮我们生成一个 docker-compose.yml 配置文件

根据这个开源项目,帮我生成一个使用docker部署的docker-compose.yml文件,要求如下采用 Deepseek 的 API 作为接入模型,然后我想要接入微信公众号,要有微信公众号相关配置,生成的docker-compose.yml每行应该有中文注释,方便我修改学习

这时 AI 应该会生成下面这样一个配置文件

version: '2.0'  # 指定 docker-compose 文件的版本
services: # 定义服务列表
chatgpt-on-wechat: # 服务名称
image: zhayujie/chatgpt-on-wechat # 使用的 Docker 镜像
container_name: chatgpt-on-wechat # 容器的名称
security_opt: # 安全选项
- seccomp:unconfined # 不限制容器的 seccomp 配置
environment: # 环境变量配置
TZ: 'Asia/Shanghai' # 时区设置为亚洲/上海
OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY' # Deepseek 的 API Key,需要替换为实际的 Key
MODEL: 'Deepseek Model' # 模型名称,这里应根据 Deepseek 实际模型名修改
PROXY: '' # 代理设置,默认为空
SINGLE_CHAT_PREFIX: '["bot", "@bot"]' # 单聊前缀
SINGLE_CHAT_REPLY_PREFIX: '"[bot] "' # 单聊回复前缀
GROUP_CHAT_PREFIX: '["@bot"]' # 群聊前缀
GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]' # 群名称白名单
IMAGE_CREATE_PREFIX: '["画", "看", "找"]' # 图片创建前缀
CONVERSATION_MAX_TOKENS: 1000 # 对话最大令牌数
SPEECH_RECOGNITION: 'False' # 语音识别开关,默认为关闭
CHARACTER_DESC: '你是基于 Deepseek 模型的助手,能够回答各种问题。' # 角色描述
EXPIRES_IN_SECONDS: 3600 # 过期时间,单位为秒
USE_GLOBAL_PLUGIN_CONFIG: 'True' # 是否使用全局插件配置
USE_LINKAI: 'False' # 是否使用 LinkAI,默认为关闭
LINKAI_API_KEY: '' # LinkAI 的 API Key,默认为空
LINKAI_APP_CODE: '' # LinkAI 的应用代码,默认为空
# 以下为微信公众号相关配置
CHANNEL_TYPE: 'wechatmp' # 通道类型设置为微信公众号
WECHATMP_TOKEN: 'YOUR_WECHATMP_TOKEN' # 微信公众平台的 Token,需要替换为实际的 Token
WECHATMP_PORT: 8080 # 微信公众平台的端口,需要端口转发到 80 或 443
WECHATMP_APP_ID: 'YOUR_WECHATMP_APP_ID' # 微信公众平台的 appID,需要替换为实际的 appID
WECHATMP_APP_SECRET: 'YOUR_WECHATMP_APP_SECRET' # 微信公众平台的 appsecret,需要替换为实际的 appsecret
WECHATMP_AES_KEY: '' # 微信公众平台的 EncodingAESKey,加密模式需要,默认为空

我们先简单看一下,AI生成的配置文件有没有什么问题

有微信公众号相关配置,也有 Deepseek 的 API 配置,看着好像没啥问题

我们先假设这个配置文件没有问题,那剩下的就是修改这份配置文件,将为微信公众号相关配置和deepseek相关配置修改为自己的

要修改这些信息,我们就要先去获得这些配置需要的数据

四、获取公众号配置与 DeepSeek API

1、获取公众号配置

登录微信公众号后台

选择设置与开发,开发接口管理

生成开发者密码,配置IP白名单为你服务器地址

然后修改服务器配置

其中 Token 和 EncodingAESKey 均为自己填写,并不是微信服务器生成的,所以你可以自己设置一个

      CHANNEL_TYPE: "wechatmp"  # 如果通过了微信认证,将"wechatmp"替换为"wechatmp_service",可极大的优化使用体验
WECHATMP_TOKEN: "" # 微信公众平台的Token,需要替换为你自己的
WECHATMP_PORT: 80 # 微信公众平台的端口,需要端口转发到80或443
WECHATMP_APP_ID: "wx0 3e5cb6" # 微信公众平台的appID,需要替换为你自己的
WECHATMP_APP_SECRET: "202********31" # 微信公众平台的appsecret,需要替换为你自己的
WECHATMP_AES_KEY: "*************" # 微信公众平台的EncodingAESKey,加密模式需要,如有则替换

可以参照官网这部分内容进行配置:https://docs.link-ai.tech/cow/multi-platform/wechat-mp

填写完这些配置后先不要提交,因为微信会用这些信息去验证你 chatgpt-on-wechat 项目的部署情况

如果你在服务器上还没有部署好这个项目,提交是不会通过的

2、 DeepSeek API 配置

在 DeepSeek 官网右上角,有一个 API 开放平台 https://platform.deepseek.com/usage

登陆后点进去 选择 API keys,创建 API Key

将生成的那串 API key 填写到配置文件 OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY' # Deepseek 的 API Key,需要替换为实际的 Key部分

模型名称点接口文档获取:https://api-docs.deepseek.com/zh-cn/

可以看到 deepseek-reasoner 就是最新的 DeepSeek R1 模型

所以 MODEL: 'deepseek-reasoner' # 模型名称,这里应根据 Deepseek 实际模型名修改 这里就填 deepseek-reasoner

但是我们看到 DeepSeek 文档里面写道还需要修改 base_url ,但是我们的配置文件里面没有修改 base_url 的选项,这时候就需要接着问一下 AI 了

docker-compose.yml中,修改openapi的base_url 环境变量是哪个

然后你就能知道上面的配置文件少了一个 OPEN_AI_API_BASE 的配置项

并且这个配置项的值为 https://api.deepseek.com/v1

      OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY'  # Deepseek 的 API Key,需要替换为实际的 Key
MODEL: 'deepseek-reasoner' # 模型名称,这里应根据 Deepseek 实际模型名修改
OPEN_AI_API_BASE: 'https://api.deepseek.com/v1'

五、运行 chatgpt-on-wechat

1、运行镜像

修改好 docker-compose.yml 文件后,我们应该就可以运行这个项目了

在你的服务器上新建一个文件夹,名称就叫 wechat 吧

mkdir wechat

进入文件夹

cd wechat

将 docker-compose.yml 上传到 wechat 下

然后执行

sudo docker compose up -d

这里涉及到的 Linux 命令我就不介绍了,有兴趣的可以直接问 AI

等待镜像加载完成,出现下面的字符

 Container chatgpt-on-wechat  Started

就表示镜像已经成功运行

2、返回微信公众号,提交服务器配置

如果镜像运行没有问题,那么我们点击提交应该会正常保存服务器信息

但是现在会出现错误

出现这个原因的问题是第一次 AI 给我们的 docker-compose.yml 配置文件缺少了一个配置

这时候我们就得接着问 AI

我按照你给的 docker-compose.yml 启动了容器,但是无法正常访问,请仔细检查看docker-compose.yml是不是缺少了什么配置

然后 AI 就会告诉你缺少了端口映射的配置

    ports:
- "80:80" # 假设服务监听 8080 端口,将主机的 8080 端口映射到容器的 8080 端口

接下来将上面这条配置项增加上去,删除上一个容器,重新启动新的容器镜像

# 查看当前运行镜像
sudo docker ps -a
# 停止运行 chatgpt-on-wechat 镜像
# 5a92cab89ef5 为容器的 CONTAINER ID
sudo docker stop 5a92cab89ef5
# 删除镜像
sudo docker rm 5a92cab89ef5
# 重新启动
sudo docker compose up -d

如果没啥问题,浏览器直接访问 http://ip/wx 应该会出现下面的界面

最后再次返回微信公众号,提交服务器配置,应该就能正常保存配置信息了

保存后返回,点击启用,启用服务器配置

六、发送消息测试

服务器执行

sudo docker logs -f chatgpt-on-wechat

打开日志窗口查看日志

然后手机点开你的公众号,给他发送一条消息

虽然服务器可以收到消息,但是没法返回消息,并且出现了下面的报错

[ERROR][2025-02-14 10:32:41][wechatmp_channel.py:301] - [wechatmp] Fail to generate reply to user, msgId=24904067473459103, exception=str expected, not NoneType
Traceback (most recent call last):
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/app/channel/chat_channel.py", line 170, in _handle
reply = self._generate_reply(context)
File "/app/channel/chat_channel.py", line 182, in _generate_reply
e_context = PluginManager().emit_event(
File "/app/plugins/plugin_manager.py", line 196, in emit_event
instance.handlers[e_context.event](e_context, *args, **kwargs)
File "/app/plugins/role/role.py", line 105, in on_handle_context
bot = Bridge().get_bot("chat")
File "/app/bridge/bridge.py", line 74, in get_bot
self.bots[typename] = create_bot(self.btype[typename])
File "/app/bot/bot_factory.py", line 54, in create_bot
return DashscopeBot()
File "/app/bot/dashscope/dashscope_bot.py", line 29, in __init__
os.environ["DASHSCOPE_API_KEY"] = self.api_key
File "/usr/local/lib/python3.10/os.py", line 685, in __setitem__
value = self.encodevalue(value)
File "/usr/local/lib/python3.10/os.py", line 757, in encode
raise TypeError("str expected, not %s" % type(value).__name__)
TypeError: str expected, not NoneType
172.20.0.1:44044 - - [14/Feb/2025 10:32:41] "HTTP/1.1 POST /wx" - 200 OK
[INFO][2025-02-14 10:32:58][passive_reply.py:97] - [wechatmp] Request 1 from oz1No1cH-6Uafl_f0916bp7ZvGPY 24904067723857883 172.20.0.1:44160
1
[INFO][2025-02-14 10:32:58][bridge.py:68] - create bot dashscope for chat
[ERROR][2025-02-14 10:32:58][wechatmp_channel.py:301] - [wechatmp] Fail to generate reply to user, msgId=24904067723857883, exception=str expected, not NoneType
Traceback (most recent call last):
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/app/channel/chat_channel.py", line 170, in _handle
reply = self._generate_reply(context)
File "/app/channel/chat_channel.py", line 182, in _generate_reply
e_context = PluginManager().emit_event(
File "/app/plugins/plugin_manager.py", line 196, in emit_event
instance.handlers[e_context.event](e_context, *args, **kwargs)
File "/app/plugins/role/role.py", line 105, in on_handle_context
bot = Bridge().get_bot("chat")
File "/app/bridge/bridge.py", line 74, in get_bot
self.bots[typename] = create_bot(self.btype[typename])
File "/app/bot/bot_factory.py", line 54, in create_bot
return DashscopeBot()
File "/app/bot/dashscope/dashscope_bot.py", line 29, in __init__
os.environ["DASHSCOPE_API_KEY"] = self.api_key
File "/usr/local/lib/python3.10/os.py", line 685, in __setitem__
value = self.encodevalue(value)
File "/usr/local/lib/python3.10/os.py", line 757, in encode
raise TypeError("str expected, not %s" % type(value).__name__)
TypeError: str expected, not NoneType
172.20.0.1:44160 - - [14/Feb/2025 10:32:58] "HTTP/1.1 POST /wx" - 200 OK

如何解决呢,很简单,复制错误信息给 AI

AI 就会告诉你是因为缺少环境变量 DASHSCOPE_API_KEY

所以我们需要接着修改 docker-compose.yml 文件,增加 DASHSCOPE_API_KEY 配置

这个值与 DeepSeek API 保持一致

      OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY'  # Deepseek 的 API Key,需要替换为实际的 Key
MODEL: 'deepseek-reasoner' # 模型名称,这里应根据 Deepseek 实际模型名修改
OPEN_AI_API_BASE: 'https://api.deepseek.com/v1'
DASHSCOPE_API_KEY: 'YOUR_DEEPSEEK_API_KEY'

删除镜像后重新启动容器,这是再发送消息,应该在手机上就能看到回复了

服务器端数据

至此,借助 AI,我们成功的将公众号接入了 DeepSeek 大模型

七、接入其它大模型

接入其它大模型流程与 DeepSeek 相同,只需要将

      OPEN_AI_API_KEY: 'YOUR_DEEPSEEK_API_KEY'  # Deepseek 的 API Key,需要替换为实际的 Key
MODEL: 'deepseek-reasoner' # 模型名称,这里应根据 Deepseek 实际模型名修改
OPEN_AI_API_BASE: 'https://api.deepseek.com/v1'
DASHSCOPE_API_KEY: 'YOUR_DEEPSEEK_API_KEY'

这部分配置修改为其它大模型的即可

八、其它配置项

我们想实现当用户关注后自动回复一条消息,这个应该怎么修改

很简单,在 docker-compose.yml 文件中新增一条配置项目即可

      "subscribe_msg": "感谢您关注不挂高数!\n分享日常和碰到的技术问题,包括但不限于Java,Spring,Vue,Python,C#什么的。反正和高数没啥关系,至于为什么叫这个名字,那是因为我上大学那会,高数挂了,博客:buguagaoshu.com\n至于网课答案,你可以将题目复制粘贴到对话框,AI会给你答案\n如果需要清除聊天记忆,请回复:#清除记忆"

完整配置参考

version: '2.0'
services:
chatgpt-on-wechat:
image: zhayujie/chatgpt-on-wechat
container_name: chatgpt-on-wechat
security_opt:
- seccomp:unconfined
ports:
- "80:80"
environment:
OPEN_AI_API_KEY: ''
DASHSCOPE_API_KEY: ''
MODEL: 'deepseek-reasoner'
open_ai_api_base: 'https://api.deepseek.com/v1'
SINGLE_CHAT_PREFIX: '[""]'
SINGLE_CHAT_REPLY_PREFIX: '""'
GROUP_CHAT_PREFIX: '["@bot"]'
GROUP_NAME_WHITE_LIST: '["ChatGPT测试群", "ChatGPT测试群2"]'
clear_memory_commands: '["#清除记忆"]'
# 微信公众号相关配置
"subscribe_msg": "感谢您关注不挂高数!\n分享日常和碰到的技术问题,包括但不限于Java,Spring,Vue,Python,C#什么的。反正和高数没啥关系,至于为什么叫这个名字,那是因为我上大学那会,高数挂了,博客:buguagaoshu.com\n至于网课答案,你可以将题目复制粘贴到对话框,AI会给你答案\n如果需要清除聊天记忆,请回复:#清除记忆"
CHANNEL_TYPE: "wechatmp" # 如果通过了微信认证,将"wechatmp"替换为"wechatmp_service",可极大的优化使用体验
WECHATMP_TOKEN: "" # 微信公众平台的Token,需要替换为你自己的
WECHATMP_PORT: 80 # 微信公众平台的端口,需要端口转发到80或443
WECHATMP_APP_ID: "" # 微信公众平台的appID,需要替换为你自己的
WECHATMP_APP_SECRET: "" # 微信公众平台的appsecret,需要替换为你自己的
WECHATMP_AES_KEY: "" # 微信公众平台的EncodingAESKey,加密模式需要,如有则替换
# IMAGE_CREATE_PREFIX: '["画", "看", "找"]'
CONVERSATION_MAX_TOKENS: 1000
SPEECH_RECOGNITION: 'False'
CHARACTER_DESC: '你是基于大语言模型的AI智能助手,旨在回答并解决人们的任何问题,并且可以使用多种语言与人交流。'
EXPIRES_IN_SECONDS: 3600
USE_GLOBAL_PLUGIN_CONFIG: 'True'
USE_LINKAI: 'False'
LINKAI_API_KEY: ''
LINKAI_APP_CODE: ''

探索其它更多配置,你可以接着问AI

版权

本文首发于:https://www.buguagaoshu.com/archives/gzhjrdmx

转载请注明出处

如何在啥也不懂的情况下将你的公众号接入DeepSeek或其它大模型的更多相关文章

  1. 新增线下、APP、公众号多处入口,小程序会再火起来么?

    现在,大多数互联网创业者最缺的是流量,第二缺的是钱.之前开发者们追捧小程序的重要原因就是在于认为这可能是下一个微信公众号体量的流量入口,因为大家都想从微信的8亿多用户中收获自己的一部分用户. 近期部分 ...

  2. Python分析【公众号】历史评论,看看大家的留言情况!

    大家好,我是辰哥~~~ 辰哥玩公众号有一段时间了,这期文章分析一波读者的留言情况,不仅可以对公众号的各位铁粉一目了然,还可以通过分析的结果对公众号的经营进行更好的规划.如读者留言的内容通常是内容是什么 ...

  3. 奇怪的bug,不懂Atom在添加markdown-themeable-pdf,在配置好phantomjs的情况下报错

    本来打算用一下atom但是导出pdf报错,可是在预览的情况下就没有问题,顺便吐槽一下谷歌浏览器自己的markdown在线预览插件无法适配,用搜狗搭载谷歌的插件才能导出pdf,一下感觉逼格少了很多,等忙 ...

  4. java 23种设计模式,一般情况下,常用的有哪些? 转载

    原址:http://wangle.iteye.com/blog/196972 工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式 ...

  5. 在ubuntu16.04+python3.5情况下安装nltk,以及gensim时pip3安装不成功的解决办法

    在ubuntu16.04+python3.5情况下安装nltk,以及gensim时pip3安装不成功的解决办法,我刚开始因为不太会用linux命令,所以一直依赖于python 的pip命令,可是怎么都 ...

  6. DNS分别在什么情况下使用UDP和TCP?

    看到一个题目问的是:DNS分别在什么情况下使用UDP和TCP? 仔细查了一下发现可查询的资料很少,大部分都把DNS所用协议归为UDP了其实不然,DNS同时占用UDP和TCP端口53,这种单个应用协议同 ...

  7. php 502 无错误行和报错文件的情况下使用gdb调试方法

    lnmp环境 gdb  /usr/local/php5.2/bin/php-cgi  /tmp/coredump-php-cgi.20503 source /home/tmp/lnmp1.4-full ...

  8. virtualBox中有线和无线两种情况下centos虚拟机和本地机互ping的方案

    之前写微信点餐系统的时候,刚开始是无线连接,然后每次进去虚拟机ip和本地ip都会改变,所以每次都需要配置一下nginx,还有本地的路径.之后换有线连接,就研究了一下桥接模式有线情况下虚拟机静态ip设置 ...

  9. SQL Server 在缺少文件组的情况下如何还原数据库

    SQL Server 在缺少文件组的情况下如何还原数据库 一.背景 我有一个A库,由于a,b两张表的数据量比较大,所以对表进行分区:在把A库迁移到一个新的集群上去,我只备份了A库的主分区过去进行还原为 ...

  10. 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库

    昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所 ...

随机推荐

  1. Win10使用SSH反向隧道(端口转发)连接远程桌面

    应用场景: 如果你有Linux云主机(腾讯.华为等),且公司有一台只有内网IP (或动态IP) 的Win10工作机:你计划在家里工作时,通过家里的电脑连接公司的工作机 (且不想使用类似Teamview ...

  2. Python版本与Jupyter记录

    最近使用Python的时候,遇到一个版本问题.我本地安装的Python版本是3.8.0,在使用match...case...语法时,提示如下报错: 查询之后,才知晓3.8.0还没有match语法,ma ...

  3. vue 新鼠标移入移出事件

    @mouseover 鼠标移入 @mouseleave 鼠标移出

  4. Flutter 设置安卓启动页报错 java.lang.RuntimeException: Canvas: trying to draw too large(106,975,232 bytes) bitmap.

    设置安卓启动页报错 首先设置安卓启动页 在android/app/src/main/AndroidManifest.xml中添加这一行 <meta-data android:name=" ...

  5. startup

    要提取startup/后面的字符,可以使用cut命令或awk命令.以下是两种方法: 使用cut命令: bash #!/bin/bash # 给定的字符串 STR1="startup/valu ...

  6. gitlab16 gitlab-runner

    gitlab-runner verify --delete FederatedKMeansSecureModelInference gitlab-runner register  --url http ...

  7. Error: Application Server not specified

    在IDEA中tomcat不能运行,点开Edit Configuration发现如下图情况:tomcat图标猫上有个红叉,且下面有警告提示:Error: Application Server not s ...

  8. C#/.NET/.NET Core技术前沿周刊 | 第 18 期(2024年12.16-12.22)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  9. [转]OpenLayers基于Vue项目的搭建

    主要内容上次介绍了什么是OpenLayers以及其他的可以GIS工具,这次说说如何基于Vue搭建OpenLayers的项目,并且实现地图的加载. 一.vue项目搭建1.全局安装vue-cil npm ...

  10. 墨卡托及Web墨卡托投影解析

    Google Maps.Virtual Earth等网络地理所使用的地图投影,常被称作Web Mercator(Web墨卡托投影)或Spherical Mercator(球面墨卡托投影),它与常规墨卡 ...