IntelliJ-platform plugIn 插件开发专题内容介绍,学习指导(一)

这系列文章出炉对于笔者来说确实不容易,历时快两年了,先后迭代了3版本,暂时与官方最新版本API同步(2024.03),文章内容覆盖2022~2024版内容

专题由来

最早接触插件开发是源于公司一个国际化项目,当时公司有800多个应用要做本地语言转换,无奈本组就30多人真的无法靠人来堆。最后讨论后开发了这样一个idea插件,可实现源码扫描和k-v的抽取和自动翻译,准确率大概在95%左右。写这个插件时因为有工期限制,所以是连copy再堆的可以说代码烂的是一B。

  1. 后来有时间想系统学习下,但发现网上资料简直了。也花钱买过一些教程,发现基本没用;所以整理了一次(比较基础,就是已经发到CSDN上的这些);
  2. 整理完上述文章后又因为工作原因写过几个组内要用的插件,主要是和静态代码相关的;
  3. 再最后结合之前的积累,重新整理了一套完整的电子版,就是本专题要发布的这些文章。文章从零开始,涉及Intellij 的各个方面,包括项目、结构、配置、智能代码等等。

专题大纲

本开发指导手册由上册、下册以及附录三个独立的文档组成,全部手册由四部分内容组成:

  • 第一部分:上册,Intellij platform插件开发基础;
  • 第二部分:上册,Intellij platform图形化插件开发;
  • 第三部分:下册,Intellij platform语言类插件开发;
  • 第四部分:附录,详细罗列出Intellij platform插件开发所涉及的工具、参考资料等;
    如果您只想编写一些基于UI界面的插件,如框架集成、代码统计、效率工具类的插件,需要您详细了解第一、二、四三部分;
    如果您想编写一些高级插件或是收费类插件,如代码自动完成、代码依赖管理、代码检查或是其它基于代码的插件,则只需要您熟悉第一、三部分内容后,详细了解第三部分内容;

注:开发一个可被市场认可的插件并不是一件容易的事,需要大量的编码实践和多次的版本迭代,甚至想掌握Intellij
platform插件开发的基础内容,也需要大量的编码练习。

本开发指导手册基于官方指导、个人实践经验以及网上资料参考,虽然经过了多次总结和梳理,难免存在部分遗漏和错误之处,欢迎讨论指导!

第一部分:Intellij platform插件开发基础

在这里插入图片描述

大概分为17个章节,主要内容如下:
在这里插入图片描述
01 插件开发基础 1

  1. Intellij Platform 2
    1.1 术语 2
    1.2 IDE插件类型 2
  2. 插件开发要求 3
    2.1 开发环境要求 3
    2.2 开发技术要求 3
    2.3 手册示例开发环境 4
  3. 插件开发概述 4
    3.1 插件功能 4
    3.2 开发流程 5
    3.3 开发教程 5
    3.4 参考网站 7
    02 开发第一个插件 8
  4. 构建插件工程 9
    1.1 配置Intellij Idea工具 9
    1.2 创建Intellij插件工程 9
    1.3 Intellij插件工程配置 11
    1.4 测试插件工程配置 20
    1.5 编译运行插件 21
  5. 编写插件代码 21
    2.1 创建Action 21
    2.2 查看Action配置 22
    2.3 编写Action代码 22
    2.4 运行插件 23
    2.5 运行日志 24
  6. 本地发布插件 25
    3.1 本地发布插件 25
    3.2 开发环境目录 25
    03 插件内容结构 27
  7. 插件发布包结构 28
    1.1 没有依赖性的插件 28
    1.2 具有依赖性的插件 28
    1.3 开放API类型的插件 29
  8. 可自定义的插件内容 30
    2.1 Actions 30
    2.2 Extensions 31
    2.3 Extension Points 32
    2.3 Services 35
    2.4 Listeners 37
  9. 插件依赖项 41
    3.1 查找插件ID 42
    3.2 配置插件依赖项 42
    3.3 声明插件依赖 42
  10. plugin.xml配置说明 43
    4.1 basic配置 43
    4.2 Action配置 44
    4.3 Extentions和Services配置 44
    4.4 Listeners配置 45
    4.5 Extention Points配置 45
  11. 资源文件 46
    5.1 工具类 46
    5.2自动匹配 46
  12. 国际化 47
  13. 插件图标 47
    04 IDE基础设施 48
  14. 插件生命周期 49
    1.1 初始化 49
    1.2 资源注册 49
    1.3 插件关闭 50
    1.4 插件管理 51
  15. Intellij平台提供的线程 51
    2.1 数据读写 51
    2.2 线程控制 52
    2.3 获取线程进度 52
    2.4 耗时操作的处理 53
  16. 消息框架 53
    3.1 核心组成 54
    3.2 自定义消息实现 55
  17. 日志及运行信息获取 56
    4.1 日志 56
    4.2 获取IDE运行时信息 57
    4.3 设置插件帮助web页面 57
    4.4 省电模式 57
  18. 错误报告 57
    5.1 注册扩展点 58
    5.2 实现扩展点 58
    5.3 测试错误报告 59
    05 Intellij UI简介 61
  19. Swing图形化开发基础 62
    1.1 Swing UI组件 62
    1.2 Swing UI开发示例 64
  20. Intellij图形化开发基础 65
    2.1 Intellij UI体系 66
    2.2 JBTList和JBTree组件 67
    2.3 工具栏装饰器组件 67
  21. Intellij插件UI开发概述 67
    06 Intellij UI开发 69
  22. ToolWindow工具窗口 70
    1.1 概述 70
    1.2. 代码示例-添加新菜单 71
  23. Dialog对话窗口 73
    2.1 概述 73
    2.2 代码示例-Dialog对话框 74
  24. Popup弹出窗口 76
    3.1 概述 76
    3.2 代码示例-Popuo弹出窗口 76
  25. Notification通知 78
    4.1 概述 78
    4.2 代码示例-Balloon通知 79
  26. File选择器 80
    5.1 概述 80
    5.2 代码示例-文件选择 81
  27. Editor-文本编辑器 82
    6.1 概述 83
    6.2 代码示例-文本替换 84
    6.3 代码示例-文本插入 85
    6.4 代码示例-Handler实现文件操作 86
  28. Status Bar Widget状态栏 87
    7.1 实现 87
  29. Icon and Image图标和图像 88
    8.1 老UI 88
    8.2 新UI 90
    8.3 辅助工具 91
  30. JCEF 谷歌浏览器 91
    9.1 概述 91
    9.1 示例代码-IDE中嵌入浏览器 91
    9.2 示例代码-在IDEA中远程调用JCFF进行调试 92
    9.3 示例代码-JBCefJS查询 93
    07 AnAction动作 94
  31. 概述 95
    1.1 涉及的EP扩展点 95
    1.2 添加到工具栏 95
  32. AnAction类详解 96
    2.1 .actionPerformed() 96
    2.2 .update() 96
    2.3 .getActionUpdateThread() 97
  33. 配置详解 97
    3.1 基本配置 97
    3.2 快捷搜索 98
    3.3 资源文件 98
    3.4 添加位置 98
    3.5 自定义组 98
  34. 代码示例 100
    4.1 Action实现 100
    4.2 添加到菜单栏 101
    4.3 添加到右键菜单 101
    4.3 静态组添加 102
    4.4 动态组添加 103
    08 Setting设置面板 105
  35. 数据持久化 106
    1.1. 组件状态持久化 106
    1.2. 敏感数据持久化 108
  36. Settings设置 109
    2.1 概述 110
    2.2 代码示例-自定义设置面板 113
    2.3 功能测试 115
    09 File系统概述 117
  37. VFS虚拟文件系统 118
    1.1 快照文件的更新 118
    1.2 快照文件的删除 118
    1.3 监听VFS事件 118
  38. VF虚拟文件 119
    2.1 获取VF 119
    2.2 操作VF 120
  39. Document文档 120
    3.1 获取Document 120
    3.2 创建Document 120
    3.3 监听Document 121
    3.4 操作Document 121
    10 Document 编辑 122
  40. Document编辑基础 123
    1.1 基础对象 123
    1.2 文本操作 123
    1.3 坐标系统 125
    1.3 编辑器事件 127
  41. SelectHandler文本选择 129
  42. Caret插入模型 130
    3.1 插入位置选择 130
    3.2 EditorHandler编辑事件 130
    3.3 EditorDelegate可编辑的动作 130
    11 配置运行程序 132
  43. 架构设计 133
    1.1 基础架构 133
    1.2 执行流程 134
    1.3 执行监听器 136
  44. Configuration运行配置 136
    2.1 基础架构 136
    2.1 创建RunConfiguration实例 138
    2.2 验证RunConfiguration配置 139
    2.3 运行RunConfiguration实例 139
    2.4 存储RunConfiguration数据 140
    2.5 其它运行配置相关内容 140
  45. 代码示例 141
    3.1 实现ConfigurationType配置类型 142
    3.2注册ConfigurationType配置类型 142
    3.3 实施ConfigurationFactory配置工厂 142
    3.4 实现RunConfiguration配置项 143
    3.5 实现RunConfiguration配置项存储 143
    3.5 实现SettingsEditor配置项编辑器 144
    3.6 功能测试 144
    12 项目结构 145
  46. 项目结构 146
    1.1 项目基本信息获取 146
    1.2 改变项目结构 147
    1.3 项目侦听器 148
    1.4 代码示例-获取项目信息 148
  47. 可信任的项目 149
  48. 项目向导 149
    3.1 创建新模块类型 150
    3.2 添加项目创建向导 150
    3.3 导入已有项目 151
    3.4 代码示例-创建新建项目向导 151
  49. 项目视图 153
    4.1. 代码示例-过滤项目视图内容 154
    13 项目框架 156
  50. 创建FrameWork 157
    1.1 plugin.xml配置 157
    1.2 java代码实现 157
  51. 功能测试 158
    14 项目Module 159
  52. 概述 160
  53. 模块相关操作 160
    2.1 获取项目包含的模块列表 160
    2.2 获取模块的依赖项和类路径 160
    2.3 获得模块使用的SDK 161
    2.4 获得模块直接依赖的模块列表 161
    2.5 获得依赖于此模块的模块列表 161
    2.6 获得指定文件或PSI元素所属的模块 161
    2.7 访问路径 162
    2.8 模块更改侦听器 162
  54. 示例代码-获取模块信息 162
    3.1 plugin.xml配置 162
    3.2 java代码实现 163
    3.3 功能测试 163
    15 项目Library 164
  55. 概述 165
    1.1 Library分类 165
    1.2 访问Library以及jar 165
  56. 代码示例-查看依赖库 167
    2.1 plugin.xml配置 167
    2.2 java代码实现 167
    2.3 功能测试 169
  57. 代码示例-添加依赖库 169
    3.1 plugin.xml配置 169
    3.2 java代码实现 169
    3.3 功能测试 170
    16 项目Facet 171
    1、创建Facet 172
    1.1 定义FacetType 172
    1.2 定义Facet 172
    1.3 定义DemoFacetConfiguration 173
    1.4 定义State 173
    1.5 定义DemoFacetEditor 174
  58. 功能测试 175
    17 项目SDK 176
  59. 概述 177
    1.1 获取项目SDK信息 177
    1.2 设置项目SDK属性 177
    1.3 使用自定义SDK 177
    1.4 协助设置SDK 178
  60. 代码示例-更改项目SDK配置 178
    2.1 plugin.xml配置 178
    2.2 java代码实现 179
    2.3 功能测试 179
    结语 181

共记181页左右,5W+字(不算代码)

第二部分:Intellij platform插件图形化开发

在这里插入图片描述
大概8个章节,详细如下:
在这里插入图片描述

01 PSI程序结构接口 1

  1. 概述 2
    1.1. PSIFile 2
    获取PSIFile 2
    操作PSIFile 3
    侦听PSIFile 3
    1.2 FileViewProvider 3
    获取FileViewProvider 3
    操作FileViewProvider 4
    扩展FileViewProvider 4
    1.3 PSIElement 4
    获取PSIElement 4
    Element Patterns 4
  2. 浏览 PSI 6
    2.1 自上而下 6
    2.2 自下而上 6
    2.3 References 7
    搜索References 7
    处理多个解析结果 7
    2.4 常用的API 8
  3. 修改PSI 8
    创建新的PSI 9
    代码格式化处理 10
    结合PSI 和Document 10
    需要谨慎使用的操作 10
    缓存重计算的结果 10
  4. 代码示例-获取元素PSI对象 10
    4.1 plugin.xml配置 11
    4.2 java代码实现 11
    4.3 功能测试 12
    02 文件索引 13
  5. 概述 14
    1.1 Dumb 14
    1.2 Gist 14
  6. 基于File的索引 14
    2.1 实现基于文件的索引 14
    2.2 访问基于文件的索引 15
    2.3 索引的标准实现 15
  7. 基于Stub的索引 16
    3.1 创建Stud索引 16
    创建Stud树 16
    序列化Stud数据 17
    3.2 访问Stub索引 17
    03 UAST简介 19
  8. 概述 20
  9. 扩展 20
  10. 操作 20
    3.1 PSI与UAST互转 20
    psi2uast 20
    uast2psi 21
    3.2 访问UAST 21
    04 XML DOM 23
  11. 创建XML 24
    1.1 标签内容 24
    1.2 标签属性 25
    1.3 子标签 25
    1.4 命名空间 26
  12. 编辑XML 26
    2.1 连接XML PSI 26
    2.2 获取XML树结构 27
    2.3 节点有效性验证 27
    2.4 反射 27
    2.5 Presentation 27
    2.6 Event 27
    2.7 注解突出显示 28
    2.8 自动高亮显示 28
  13. Mock and Stable 28
    3.1 Mock数据 28
    3.2 Stable​​​​​​​状态 28
  14. Visitor 29
  15. 特殊的取值方法 29
  16. 跨多个文件的模型 29
  17. XML Stud 30
    05 代码编辑 31
    1.实时模板 32
    1.1 创建实时模板 32
    plugin.xml配置 32
    java代码实现 33
    功能测试 33
    1.1 创建预定义函数和变量 33
    java代码实现 33
    添加自定义函数 34
    plugin.xml配置 34
  18. 文件和代码模板 35
    2.1 概述 35
    2.2 自定义模板变量 35
    2.3 以编程方式使用文件模板 36
    从模板创建新文件 37
    发布新模板 37
    自定义“从模板创建文件”操作 37
    将文件另存为模板 38
  19. 帮助文档 38
  20. 意图 39
    5.1 Intentions预览 40
    5.2 实现自定义Intentions预览 40
    5.3 示例代码-代码意图提示 40
    plugin.xml配置 40
    java代码实现 41
    template配置 43
    06 代码分析 44
  21. 语法错误 45
    1.1 忽略 HTML 文件中不匹配的结束标记 45
    1.2 忽略 Markdown 代码块中代码的语法错误 45
  22. 控制高亮显示 46
    2.1 在调试器代码编辑器中禁止报告未处理的异常 47
    2.2 使用 Lombok时禁止报告项目中的误报错误 47
  23. 代码检查和纠正 51
    3.1 声明性检查 51
    3.2 基于UI的检查 52
    单个复选框 52
    多个复选框 52
  24. 代码示例-检查使用==比较string 53
    4.1 plugin.xml配置 53
    4.2 相关的配置文件 53
    .properties配置 53
    .html错误帮助文档提示 54
    4.2 java代码实现 54
    工具类 54
    检查类实现 54
    4.3 功能测试 57
    4.4 功能单元测试 57
    07 项目视图 59
  25. 概述 60
  26. 代码示例-过滤项目视图内容 60
    2.1 plugin.xml配置 60
    2.2 java代码实现 60
    2.3 功能测试 61
  27. 代码示例-替换项目视图文件图标 61
    3.1 plugin.xml 61
    3.2 java代码实现 61
    自定义新的ProjectViewNode 61
    自定义项目面板 64
    08 项目构建 67
  28. 外部构建流程工作流程 68
    1.1. 增量构建 68
  29. 外部构建器 69
    2.1 扩展外部构建器服务 69
    2.2 为外部构建器注册插件 69
    2.3 调试外部构建器插件 69
    2.4 分析外部构建过程 69
    2.5 从外部构建访问项目模型和配置 70
    2.6 实现自定义构建器 70

第三部分:Intellij platform插件智能代码

在这里插入图片描述
大概6个章节,详细如下:
在这里插入图片描述

09 自定义语言-注册新语言 71

  1. 文件类型 73
    1.1 注册文件类型 73
    1.2 验证文件类型 74
    1.3. 与操作系统关联 74
  2. 实现Lexer词汇分析器 75
    2.1 Lexer状态 75
    2.2 Lexer实现 75
    2.3 Token类型 76
    2.4 嵌入式语言 77
  3. 实现Parser和PSI 77
    3.1 实现Parser 78
    空格和注释 80
    3.2 实现PSI 80
  4. 语法错误和高亮显示 81
    4.1 突出显示文本范围 81
    4.2 文本颜色设置 81
    4.3 Lexer高亮显示 82
    4.4 Annotator 85
    10 自定义语言-代码编辑 88
  5. 元素引用 89
    1.1 PSI引用 89
    1.2实现逻辑 91
  6. 元素声明 92
    2.1 引用参考 92
    自身引用 92
    外部引用 93
    隐式引用 93
  7. 代码代码导航 93
    3.1 直接导航 93
    3.2 符号导航 93
    3.3 显示用法 93
  8. 代码完成 94
    4.1 reference completion 94
    4.2 Contributor-based completion 94
    4.3 Lookup items 94
    11 自定义语言-代码重构 96
  9. 查找用法 97
    1.1 实现步骤 97
    1.2 结果分组 98
  10. 重命名 99
    2.1 名称验证 99
    2.2 自定义重命名UI和工作流程 101
  11. 安全删除 104
    12 自定义语言-高级编辑 106
  12. 代码格式化 107
    1.1 非空白修改 108
    前置处理器 108
    后置处理器 110
    代码重编排 112
    1.2 代码样式设置 112
  13. 代码检查与意图 112
    2.1 代码检查 113
    2.2 代码意图 115
  14. 文件结构视图 116
  15. 导航栏(面包屑) 120
    4.1 静态导航栏 121
    4.2 动态导航栏 121
  16. 代码围绕 121
  17. Go to Class/Symbol 122
  18. 文档 123
    7.1 获取文档 123
    文档EP 123
    文档目标 124
  19. 参数信息 127
    8.1 实现 128
    初始阶段 128
    更新阶段 128
    更多提示 129
  20. 镶嵌提示 131
    9.1 实现 131
    简单镶嵌提示 131
    高级镶嵌提示 133
    更多提示 134
  21. 拼写检查 134
    10.1拼写检查策略 135
    Tokenize分词器 135
    10.2 禁止拼写检查 139
    10.3 基于字典的检查 142
    运行时字典提供者 142
    13 自定义语言-基它功能 143
  22. 括号匹配 144
  23. quote处理 144
  24. comment代码 144
  25. 代码折叠 147
  26. 加入线 147
  27. 智能进入 147
  28. 左/右移动元素 147
  29. 命名建议 148
  30. 语义高亮使用 148
  31. TODO视图 148
  32. 上下文信息 148
  33. 颜色预览/选择器 148
  34. 包含文件 148
  35. 识别复杂的块表达式 149
  36. 面包屑 149
  37. 阅读器模式 149
  38. 编辑器和项目视图背景颜色 149
  39. 编辑器选项卡的自定义名称和工具提示 149
  40. 防止错误突出显示文件 150
  41. 为元素提供完全限定名称(FQN) 150
  42. 将文件标记为测试文件 150
  43. 在编辑器中上下移动语句 150
    14 自定义语言-实战 151
  44. 定义语言和文件类型 152
    1.1 代码实现 152
    定义Language 152
    定义LanguageIcon 152
    定义LanguageFileType 152
    1.2 plugin.xml配置 153
    1.3 功能测试 153
  45. 定义文件语法和语法解析器 154
    2.1 代码实现 154
    定义TokenType 154
    定义ElementType 155
    2.2 定义语法 155
    配置PSI生成工具类 155
    定义属性搜索工具类 157
    2.3 生成语法解析器 158
  46. 实现Lexer和解析器 159
    3.1 代码实现 159
    生成Lexer 159
    生成Lexer解析类 160
    定义Lexer适配器 161
    定义PSI root根文件 161
    定义TokenSets 161
    定义解析器 162
    注册解析器 163
    3.2 功能测试 163
  47. 代码高亮与颜色设置 163
    4.1 SyntxHighlighter代码高亮显示 163
    定义SyntxHighlighter工厂 165
    注册SyntxHighlighter工厂 165
    代码高亮功能测试 165
    4.2 SyntxHighlighter代码高亮颜色配置页面 165
    定义配置页面 165
    代码高亮颜色测试 167
    4.3 Annotator代码注释辅助显示 167
    代码实现 168
    功能测试 170
  48. gutter图标设置 170
    5.1 标记实现 170
    5.2 注册标记 171
    5.3 功能测试 171
  49. 代码自动完成 172
    6.1 基于预定义的实现 172
    代码实现 172
    注册自动完成 172
    功能测试 173
    6.2 基于动态引用的实现 173
    实现PsiNamedElement 173
    实现基于引用的实现 174
    支持引用实现的重构 175
    功能测试 176
  50. 查找用法 176
    7.1 代码实现 176
    7.2 注册查找功能 177
    7.3 功能测试 178
  51. 引用折叠 178
    8.1 代码实现 178
    8.2 注册折叠器 180
    8.3 功能测试 180
  52. 查找声明 180
    9.1 代码实现 180
    9.2 注册查找声明 181
    9.3 功能测试 181
  53. 结构视图 182
    10.1 定义模型 182
    10.2 定义元素 182
    10.3 定义工厂 184
    10.4 注册工厂 184
    10.5 功能测试 184
  54. 结构感知面包屑 184
    11.1 代码实现 185
    11.2 注册 185
    11.3 功能测试 185
  55. 代码样式设置 186
    12.1 代码格式化 186
    定义块 186
    定义格式化模型 187
    注册格式化模型 187
    12.2 代码样式 187
    定义代码样式设置 187
    定义代码样式设置提供程序 188
    注册代码样式设置提供程序 188
    定义语言代码样式设置提供程序 189
    注册语言代码样式设置提供程序 189
    功能测试 190
  56. 注释支持 190
    13.1 代码实现 190
    13.2 plugin.xml配置 191
    13.3 功能测试 191
  57. 快速修复 191
    14.1 定义元素工厂 191
    14.2 定义意向动作 192
    14.3 定义注解器 193
    14.4 注册注解器 194
    14.5 功能测试 194
  58. 拼写检查 195
    15.1 代码实现 195
    15.2 功能注册 196
    15.3 功能测试 196
  59. 文档关联 197
    16.1 实现方式一 197
    定义文档来源 197
    延迟文档显示 200
    注册扩展点 201
    16.2 实现方式二 201

共计10W(不算代码)

第四部分:Intellij platform插件开发附录

这部分内容比较杂,主要是测试、发布、资源生态等的描述
在这里插入图片描述
大概6个章节,详细如下:
在这里插入图片描述
这部分内容可直接下载笔者整理的电子书:
Intellij platform plugin开发指导手册,java集成开发环境Intellij idea插件开发

在这里插入图片描述

第五部分:Intellij platform插件实战

这里会讲两个笔者公司现在用到的自已开发的插件:

i18n国际化插件

在这里插入图片描述

服务编排流程引擎

在这里插入图片描述

文章内容

内容安排

每一篇文章大纲都可以零基础学习,内容安排有:

  • 概念:
  • 术语:
  • API讲解:
  • 相关示例:
  • 注意事项:

内容示例

概述部分

在这里插入图片描述

API详解

在这里插入图片描述

示例代码和效果演示

<action id="org.intellij.sdk.action.PopupDialogAction" class="org.intellij.sdk.action.PopupDialogAction"
        text="Pop Dialog Action" description="SDK action example"
        icon="SdkIcons.Sdk_default_icon">
  <add-to-group group-id="ToolsMenu" anchor="first"/>
  <override-text place="MainMenu" text="Pop Dialog Action"/>
</action>

在这里插入图片描述

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

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

相关文章

什么是网络安全,企业如何做好网络安全等级评测

网络安全从其本质上讲就是网络上的信息安全&#xff0c;指网络系统的硬件、软件及数据受到保护。不遭受破坏、更改、泄露&#xff0c;系统可靠正常地运行&#xff0c;网络服务不中断。从用户的角度&#xff0c;他们希望涉及到个人和商业的信息在网络上传输时受到机密性、完整性…

Meta Llama 3 简介

文章目录 要点我们对 Llama 3 的目标最先进的性能模型架构训练数据扩大预训练规模指令微调与 Llama 3 一起建造系统级责任方法大规模部署 Llama 3Llama 3 的下一步是什么&#xff1f;立即尝试 Meta Llama 3 本文翻译自&#xff1a;https://ai.meta.com/blog/meta-llama-3/ 要点…

【个人博客搭建】(5)Sqlsugar实体创建数据库数据

1、在appsettings.json文件中配置SqlServer数据库连接字符串信息。&#xff08;后续考虑添加MySQL数据库等类型&#xff09; "DBS": [/*对应下边的 DBTypeMySql 0,SqlServer 1,*/{"ConnId": "plateau.poetize.2024","DBType": 1,&qu…

便携式HD-SDI模拟源测试设备

便携式HD-SDI模拟源测试设备 平台简介 便携式手提CameraLink模拟源测试设备&#xff0c;以PCIe的HD-SDI播出卡和X86主板为基础&#xff0c;构建便携式的手提设备。 平台默认操作系统为win7 64位系统&#xff1b;具备丰富的外设接口&#xff0c;如VGA、HDMI、千兆网口、USB2.0/3…

ADOP 万兆电口光模块:SFP+转RJ45端口解决方案

&#x1f335;在数据中心的接入层中&#xff0c;大多数服务器网卡&#xff08;NIC&#xff09;和存储设备都采用10GBASE-T RJ45端口&#xff0c;而与之相连的TOR&#xff08;机架顶部&#xff09;交换机通常配备SFP端口&#xff0c;且二者无法直接相连。为了解决该问题&#xf…

[大模型]Qwen-7B-hat Transformers 部署调用

Qwen-7B-hat Transformers 部署调用 环境准备 在autodl平台中租一个3090等24G显存的显卡机器&#xff0c;如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下…

AI大模型探索之路-应用篇17:GLM大模型-大数据自助查询平台架构实践

文章目录 前言一、技术架构设计二、本地知识库准备三、SQLServer服务1. 数据库准备步骤1&#xff1a;安装MySQL数据库步骤2&#xff1a;启动MySQL数据库步骤3&#xff1a;登录MySQL数据库步骤4&#xff1a;创建数据库用户glm步骤5&#xff1a;给数据库用户赋权限步骤6&#xff…

分布式锁(Redis)

一、序言 本文和大家聊聊分布式锁以及常见的解决方案。 二、什么是分布式锁 假设一个场景&#xff1a;一个库存服务部署在上面三台机器上&#xff0c;数据库里有 100 件库存&#xff0c;现有 300 个客户同时下单。并且这 300 个客户均摊到上面的三台机器上&#xff08;即三台…

AI绘画 究竟在哪些方面降低了门槛

AI绘画的产物是图像。图像对人类的认知、情感和文化发展起着重要的作用&#xff0c;包括信息传递、创造性表达、历史记录、审美享受和交流。 从原来的纸笔调色板到数字时代的数字板、绘图软件&#xff0c;再到AI绘画时代&#xff0c;任何人都可以用几行简单的文字创作出高质量…

在PostgreSQL中如何创建和使用自定义函数,包括内置语言(如PL/pgSQL)和外部语言(如Python、C等)?

文章目录 一、使用内置语言 PL/pgSQL 创建自定义函数示例代码使用方法 二、使用外部语言 Python 创建自定义函数安装 PL/Python 扩展示例代码使用方法 三、使用外部语言 C 创建自定义函数编写 C 代码编译为共享库在 PostgreSQL 中注册函数注意事项 总结 PostgreSQL 是一个强大的…

【Java开发指南 | 第十七篇】Java 方法

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 简介语法实例构造方法 简介 Java中的方法是用来执行特定任务的一组语句&#xff0c;可以重复使用。它们包含在类或对象中&#xff0c;并通过调用来执行。 举个例子&#xff0c;println() 是一个方法&#xff…

论文阅读:BEVBert: Multimodal Map Pre-training for Language-guided Navigation

BEVBert&#xff1a;语言引导导航的多模态地图预训练 摘要 现存的问题&#xff1a;目前大多数现有的预训练方法都采用离散的全景图来学习视觉-文本关联。这要求模型隐式关联全景图中不完整、重复的观察结果&#xff0c;这可能会损害智能体的空间理解。 本文解决方案&#xf…

Android开发:应用百度智能云中的身份证识别OCR实现获取个人信息的功能

百度智能云&#xff1a; 百度智能云是百度提供的公有云平台&#xff0c;于2015年正式开放运营。该平台秉承“用科技力量推动社会创新”的愿景&#xff0c;致力于将百度在云计算、大数据、人工智能的技术能力向社会输出。 百度智能云为金融、城市、医疗、客服与营销、能源、制造…

【漏洞复现】泛微e-cology ProcessOverRequestByXml接口存在任意文件读取漏洞

漏洞描述 泛微e-cology依托全新的设计理念,全新的管理思想。 为中大型组织创建全新的高效协同办公环境。 智能语音办公,简化软件操作界面。 身份认证、电子签名、电子签章、数据存证让合同全程数字化。泛微e-cology ProcessOverRequestByXml接口存在任意文件读取漏洞 免责声…

怎么看自己是不是公网IP?

当我们需要进行网络连接或者网络配置的时候&#xff0c;经常会遇到需要知道自己是否拥有公网IP的情况。公网IP是全球唯一的IP地址&#xff0c;在互联网上可直接访问和被访问&#xff0c;而私有IP则是在本地网络中使用&#xff0c;无法从互联网上直接访问。我们将介绍如何查看自…

Java - 阿里巴巴命名规范

文章目录 前言一、编程规约(一) 命名风格(二) 常量定义(三) 代码格式(四) OOP 规约(五) 日期时间(六) 集合处理(七) 并发处理(八) 控制语句(九) 注释规约(十) 前后端规约(十一) 其他 二、异常日志(一) 错误码(二) 异常处理(三) 日志规约 三、单元测试四、安全规约五、MySQL 数据…

C# winform s7.net expected 22 bytes.”

S7.Net.PlcException:“Received 12 bytes: 32-02-00-00-00-00-00-00-00-00-81-04, expected 22 bytes.” 原因是博图的连接机制未勾选

【Java框架】Spring框架(二)——Spring基本核心(AOP)

目录 面向切面编程AOPAOP的目标&#xff1a;让我们可以“专心做事”专心做事专心做事解决方案1.0专心做事解决方案2.0蓝图 AOP应用场景AOP原理AOP相关术语术语理解 AOP案例实现前置/后置/异常/最终增强的配置实现1.依赖2.业务类3.日志类4.配置切入点表达式匹配规则举例 环绕增强…

Spring AOP (二)

本篇将介绍Spring AOP的相关原理。 一、代理模式 Spring 在实现AOP时使用了代理模式这种设计模式&#xff0c;什么是代理模式呢我们来了解一下。 代理模式可以理解为当我们需要调用某个类的方法时&#xff0c;在我们与这个目标类之间增加一个代理类&#xff0c;我们要使用目标…

vue2响应式 VS vue3响应式

Vue2响应式 存在问题&#xff1a; 新增属性&#xff0c;删除属性&#xff0c;界面不会更新。 直接通过下标修改数组界面不会自动更新。 Vue2使用object.defineProperty来劫持数据是否发生改变&#xff0c;如下&#xff1a; 能监测到获取和修改属性&#xff1a; 新增的属性…
最新文章