大家好,我是二哥呀。
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写插入内存屏障后生成的指令序列示意图
StoreStore; // 保证写入之前的操作不会重排
volatile_write(); // 写入 volatile 变量
StoreLoad; // 保证写入后,其他线程立即可见
在 x86 架构下,通常会使用
lock
指令来实现写屏障,例如:
mov [a], 2 ; 将值 2 写入内存地址 a
lock add [a], 0 ; lock 指令充当写屏障,确保内存可见性
当线程对 volatile 变量进行读操作时,JVM 会插入一个读屏障指令,这个指令会强制让本地内存中的变量值失效,从而重新从主内存中读取最新的值。
三分恶面渣逆袭:volatile写插入内存屏障后生成的指令序列示意图
我们来声明一个 volatile 变量 x: