专栏名称: 沉默王二
技术文通俗易懂,吹水文风趣幽默。学 Java,认准二哥的网站 javabetter.cn
目录
相关文章推荐
51好读  ›  专栏  ›  沉默王二

Deepseek装进IDEA 也是香的不行

沉默王二  · 公众号  ·  · 2025-02-09 14:04

正文

大家好,我是二哥呀。

deepseek 官方并没有出 IntelliJ IDEA 的插件,但作为菜逼程序员的我,却很想体验一下在 IDEA 中装入 deepseek 的那种起飞的感觉。

一共三种方式,第一种是通过 IDEA 官方的 AI Assistant 来调用本地的 deepseek;另外两种是通过 Continue 和 CodeGPT 两款插件来曲线救锅。

①、AI Assistant

AI Assistant 是新版 IDEA 自带的一个功能,属于 JetBrains 官方集成的 AI 编程助手,妥妥的嫡长子。

能提供代码补全、代码生成、优化建议、代码解释等功能。 官方已经集成了 openai 的 4o,Google 的 gemini 等,开箱即用。

也支持本地 AI,比如说我们在本地已经通过 ollama 运行了 deepseek 2b 版本的大模型,就可以直接点击 connect 跳转到 enable 复选框这里。

测试连接通过后,我们就可以调用 deepseek 大模型,比如说,我们让他对 DeepSeekIntegration 这个类进行解释。

他就能告诉我们:

  • 发现它依赖于 okHttp 库来处理网络请求。这说明该类主要负责与外部服务 DeepSeek 进行交互。
  • 类中有两个工厂方法: executeStreamChat executeStreamChat(List list, EventSourceListener listener) 。这两个方法都用于创建 EventSource 并发送聊天请求到 DeepSeek。流式交互支持意味着该类可以处理分片传输的数据,逐部分地发送给服务器,然后逐步处理返回的数据。

我超,真的好用啊!

谁告诉我本地的 deepseek 没用的,脸伸过来,我保证不打肿!

这基本的代码学习,很香啊,免费,服务器不繁忙,还特么很到位。

②、安装 Continue

Continue 是一款开源的 AI 代码助手插件,可以无缝安装在 IDEA 或者 VSCode 中。通过 Continue 可以加载任意大模型,从而实现代码的自动补全和聊天体验。

安装方式比较简单,直接在 IDEA 的插件中搜“Continue”关键字,然后选择下载量最高的那个就行了。

安装完成后,也有两种方式,一种是配置 deepseek 的 API Key,这个就需要充值了。

不过由于算力紧张,API 这块经常处于宕机状态。

另外一种,也是连接本地 ollama,然后去加载之前我们运行起来的 deepseek 模型。

最好拉取 coder 版本。

③、安装 CodeGPT

CodeGPT 也是一个由 AI 驱动的代码助手,官方直接说了,可以是 GitHub Copilot 的替代品。

安装完成后,同样需要在 settings 中配置 deepseek API 的 keys。

当然,也可以在这一步中切换到 ollama 的本地 deepseek。

CodeGPT 比较智能的一点是,当你在编辑器中打开了某一个类,它就会自动关联到聊天窗口。

并且能把 deepseek-R1 的整个思考过程展示出来,所以我是强烈大家按照我之前的教程在本地部署一个 7b 的本地版。

比 deepseek 官方稳定多了,毕竟本地没有上万人的同时在线给你竞争

赶紧行动起来,以后阅读源码可就不用老大难了。

三分恶面渣逆袭

看到很多球友都下载了面渣逆袭 JVM 篇的 2.0 版,就觉得付出的劳动成果终于物尽其用了,并发编程篇已经修改 1/3 了,我会再加快一点速度。

点击屏幕左下方的【 关注 】按钮,带走她,这份在 GitHub 上星标 13000+ 的面渣逆袭 PDF。

25.volatile 怎么保证可见性的?

当线程对 volatile 变量进行写操作时,JVM 会在这个变量写入之后插入一个写屏障指令,这个指令会强制将本地内存中的变量值刷新到主内存中。

三分恶面渣逆袭:volatile写插入内存屏障后生成的指令序列示意图
三分恶面渣逆袭:volatile写插入内存屏障后生成的指令序列示意图
StoreStore;   // 保证写入之前的操作不会重排
volatile_write(); // 写入 volatile 变量
StoreLoad;    // 保证写入后,其他线程立即可见

在 x86 架构下,通常会使用 lock 指令来实现写屏障,例如:

mov [a], 2          ; 将值 2 写入内存地址 a
lock add [a], 0     ; lock 指令充当写屏障,确保内存可见性

当线程对 volatile 变量进行读操作时,JVM 会插入一个读屏障指令,这个指令会强制让本地内存中的变量值失效,从而重新从主内存中读取最新的值。

三分恶面渣逆袭:volatile写插入内存屏障后生成的指令序列示意图
三分恶面渣逆袭:volatile写插入内存屏障后生成的指令序列示意图

我们来声明一个 volatile 变量 x:







请到「今天看啥」查看全文