当前位置: 首页 > news >正文

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发(发布)-SelectCamelWords[选中驼峰单词](idea源代码)

参考文档

  • Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html
  • 代码地址:https://github.com/yangfeng20/selected-camel-words
  • 整体流程文档:https://github.com/yangfeng20/idea-plugin-dev-guide/

视频教程地址

  • https://www.bilibili.com/video/BV1TZ421u7dX/

背景介绍

  • 痛点:在idea开发过程中,希望按需驼峰选中文本。
  • 现在默认是一整个单词选中,只有在设置–>智能按键 中开启了使用"CamelHumps单词"时能够驼峰选中。但是这种情况比较粗暴,直接全局开启了。但是在日常开发中,其实选中大部分是整个单词一起选中。只有少部分情况是按照驼峰选中。

image.png

  • 所以就需要一块插件,能够快捷开关驼峰选中的能力,仅在需要的时候开启。

安装Plugin DevKit插件

  • Idea 2023.3 以下版本可以不用安装当前插件。idea自带。2023.3版本及之后的版本没有当前查询,需要自己安装。

image.png

  • 插件商店搜索Plugin DevKit用于安装插件,安装完成之后建议先重启一下,不然可能开发工具可能出不来。

image.png

开启IDEA内部模式(使用UI检查器定位代码)

  • 主菜单栏–>帮助(Help)–>编辑自定义属性

image.png

  • 输入idea.is.internal=true开启内部模式,重启后生效。
  • 参考链接 https://plugins.jetbrains.com/docs/intellij/enabling-internal.html
  • 后面介绍如何使用UI检查器来定位代码位置

新建插件项目

  • 新建项目选择Idea插件(如果没有Plugin DevKit插件,这里就没有当前选项)。

image.png

  • 同时注意jdk版本需要和idea对应。参考:https://plugins.jetbrains.com/docs/intellij/creating-plugin-project.html#creating-a-plugin-with-new-project-wizard

image.png

修改Gradle相关配置

取消gradle构建

  • 先取消默认的gradle构建。先修改一些配置在重新构建。

修改依赖远程仓库地址

  • 修改build.gradle.kts中的repositories,注释中央仓库(mavenCentral)。配置阿里云地址。
repositories {//    mavenCentral()maven {url = uri("https://maven.aliyun.com/repository/public")}
}
  • 如果文件名不是kts结尾,而是gradle结尾,配置可能有些区别。

修改使用本地Idea调试

  • 注释intellij中的version和type(如果指定,需要下载),使用本地安装的idea进行调试。
  • 使用localPath设置本地idea的安装路径。参考:https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
intellij {localPath.set("D:\\Program Files\\JetBrains\\IntelliJ IDEA 2024.1.2")//    version.set("2023.2.6")//    type.set("IC") // Target IDE Platformplugins.set(listOf(/* Plugin Dependencies */))
}

image.png

重新加载Gradle变更

  • 点击Gradle图标重新加载变更。

image.png

  • 等待构建完成,初次可能比较慢,需要下载依赖等。构建完成之后,文件也就有高亮显示了。

image.png

其他build.gradle相关配置说明

  • https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#ide-configuration

plugin.xml解读

  • 参考:https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html#configuration-structure-overview
  • plugin.xml文件可以理解是当前插件的相关配置。是插件开发中非常重要的一个文件。

image.png

  • 构建完成之后,它会报错,是因为不能使用默认的模版字符。我们改掉就可以了。

image.png

防止报错

  • kotlin目录名修改为java。选中kotlin目录,按shift+f6修改目录名为java。不修改后面可能会报错。

image.png

创建Action

  • idea中的action概念可以理解为idea中的任意一个动作,点击了某个按钮,就会执行它绑定的Action类的代码。
  • 使用Plugin DevKit 创建一个Action。

image.png

  • 填写actionId,类名,功能名称,功能描述,添加到目标位置。

image.png

  • 创建成功之后就会生成一个Action类和在plugin中注册一个action,表说明他的位置。

image.png

运行插件

  • 点击gradle运行idea插件,它会重新启动一个idea环境,来运行idea插件。

image.png

  • 第一次运行可能较慢,需要等待一会儿。运行成功之后,在工具栏中显示了我们的插件Action。

image.png

  • 点击插件Action,后台也打印了相应的结果。

image.png

找不到你的插件注册的Action,并且控制台报错ClassNotFoundException?

  • 需要将上面说的kotlin目录修改为java。

控制台中文乱码,报错?

  • 修改build.gradle.kts,解决编译中文报错和控制台中文乱码问题。
tasks {// Set the JVM compatibility versionswithType<JavaCompile> {sourceCompatibility = "17"targetCompatibility = "17"// 解决编译时中文报错options.encoding = "UTF-8"}// 添加以下内容,解决运行时控制台中文乱码withType<JavaExec> {jvmArgs = listOf("-Dfile.encoding=UTF-8", "-Dsun.stdout.encoding=UTF-8", "-Dsun.stderr.encoding=UTF-8")}...
}

image.png

定位Action插入位置

  • 我是需要将Action插入到主菜单栏中的Tools菜单,要如何定位呢。这就只要使用我们之前说的内部工具,ui检查器了。
  • 开启内部模式之后,按ctrl+alt+鼠标左键点击ui,就能显示当前ui的详细信息。找到他的Group Id然后创建action时搜索选择就好了。

image.png

定位Idea相关代码

  • 在前面提到,idea设置中的智能按键有提供全局的驼峰选中能力,开启之后的就能够实现驼峰选中了。
  • 我们插件的逻辑也很简单,就是在编辑器中能够快捷开启这个开关。
  • 那我们要如何实现快捷开关呢,其实也很简单,我们只需要去看idea是怎么实现的就好了。

使用ui检查器定位智能按键逻辑

  • 在设置中使用ui检查器定位智能按键的配置类。

image.png

  • 打开idea源代码,搜索类EditorSmartKeysConfigurable

image.png

  • 然后搜索关键字camel,定位到配置,可以看到当前配置项有一个获取配置的方法,和更新配置的方法。然后查看这个editorSettings的来源。可以看到editorSettings的数据源是EditorSettingsExternalizable.getInstance()

image.png

  • 那这样就可以在我的项目中使用当前类的方法去设置快捷开关了。

编写插件逻辑(驼峰选中快捷开关)

  • 在我们的Action中获取到刚刚的编辑器设置,然后对配置项CamelWords的状态取反就可以了。
public class SelectCamelWordsAction extends AnAction {@Overridepublic void actionPerformed(AnActionEvent e) {// 获取到编辑器设置EditorSettingsExternalizable editorSettingsExternalizable = EditorSettingsExternalizable.getInstance();// 对之前的状态取反editorSettingsExternalizable.setCamelWords(!editorSettingsExternalizable.isCamelWords());}
}
  • 运行插件,通过ToolMenu中的SelectCamelWords就能够快捷开启关闭驼峰选中的功能。
  • 但是这还是很麻烦啊,不能够快捷启动。接下来就要使用监听器来监听按键实现对应的快捷启动。

使用监听器监听键盘按键

  • 参考文档:https://plugins.jetbrains.com/docs/intellij/plugin-listeners.html#defining-application-level-listeners
  • 在plugin.xml中注册应用激活时监听,并绑定到我们的监听器中。
<applicationListeners><listener class="com.maple.plugindemo.MyKeyListener" topic="com.intellij.openapi.application.ApplicationActivationListener"/>
</applicationListeners>
  • 添加我们的自定义分发器
public class MyKeyListener implements ApplicationActivationListener {private final KeyEventDispatcher dispatcher = new MyKeyEventDispatcher();@Overridepublic void applicationActivated(@NotNull IdeFrame ideFrame) {KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(dispatcher);}@Overridepublic void applicationDeactivated(@NotNull IdeFrame ideFrame) {KeyboardFocusManager.getCurrentKeyboardFocusManager().removeKeyEventDispatcher(dispatcher);}private static class MyKeyEventDispatcher implements KeyEventDispatcher {// 分发器逻辑}
}
  • 在自定义的事件分发器中监听shift+ctrl+win按下,开启驼峰选中。win键抬起,关闭驼峰选中。
private static class MyKeyEventDispatcher implements KeyEventDispatcher {private boolean shiftPressed = false;private boolean ctrlPressed = false;private boolean winPressed = false;private final EditorSettingsExternalizable editorSettingsExternalizable = EditorSettingsExternalizable.getInstance();@Overridepublic boolean dispatchKeyEvent(KeyEvent e) {int keyCode = e.getKeyCode();int id = e.getID();if (id == KeyEvent.KEY_PRESSED) {switch (keyCode) {case KeyEvent.VK_SHIFT:shiftPressed = true;break;case KeyEvent.VK_CONTROL:ctrlPressed = true;break;case KeyEvent.VK_WINDOWS:winPressed = true;break;}if (shiftPressed && ctrlPressed && winPressed) {// 开启驼峰选中System.out.println("Shift + Ctrl + Win 按下!");editorSettingsExternalizable.setCamelWords(true);}} else if (id == KeyEvent.KEY_RELEASED) {switch (keyCode) {case KeyEvent.VK_WINDOWS:if (shiftPressed && ctrlPressed) {// 关闭驼峰选中System.out.println("Win 键抬起!");editorSettingsExternalizable.setCamelWords(false);}winPressed = false;break;case KeyEvent.VK_SHIFT:shiftPressed = false;break;case KeyEvent.VK_CONTROL:ctrlPressed = false;break;}}return false; // 继续分发事件}
}
  • 至此,插件逻辑就已经大功告成了。由于我没有mac,不清楚mac的快捷键,就没有适配mac快捷键。大家也可以去我的仓库提交pr。

打包插件

  • 通过gradle的task打包插件。构建jar包,最终会输出到build–>libs下

image.png

本地安装验证

  • 打开插件仓库,选择本地安装,找到打包之后的jar

image.png

  • 安装成功,确认,然后测试插件

image.png

发布插件

  • 进入jetbrains插件开发平台:https://plugins.jetbrains.com/developers/intellij-platform
  • 点击登录,或者注册账号

image.png

  • 点击Upload Plugin上传插件,上传插件jar包,填写相关信息,点击upload Plugin.

image.png

  • 上传成功,等待审核。

image.png

兼容不同的idea版本

  • idea-version参考: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html#idea-plugin__idea-version
  • 内部版本号映射参考:https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html#earlier-versions
  • 修改build.gradle.kts中的patchPluginXml,它用来不是兼容的idea版本。该值会覆盖plugin.xml中的idea-versin标签,所有可以直接把兼容版本写在这里。
patchPluginXml {// 最低版本sinceBuild.set("232")// 最高版本untilBuild.set("242.*")
}
<idea-version since-build="232" until-build="242.*"/>
  • 要做到多版本兼容,就是要将最低版本设置的尽可能的小,但是同时需要你设置的版本有你插件当前使用的api。例如applicationListeners就在193.0之后发布,我的最低版本就只能设置193.0。最大版本不设置。

image.png

  • 发布前jetbrains会校验当前插件的兼容性,我这边就是校验通过,显示可以使用的版本。

image.png

后记

  • 插件比较简单,主要是解决开发中的痛点,然后监听按键按下和释放的逻辑是直接让ai写的,可能有一些小bug。
  • 然后mac端我不太清楚选中的快捷键是什么,也就没有做兼容。
  • 感兴趣的话,可以点个在github 点个star。欢迎大家把项目拉下来,然后提交pr。

相关文章:

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发&#xff08;发布&#xff09;-SelectCamelWords[选中驼峰单词]&#xff08;idea源代码&#xff09; 参考文档 Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html代码地址&#xff1a;https://github.com/yangfeng…...

【网络安全】网络安全基础精讲 - 网络安全入门第一篇

目录 一、网络安全基础 1.1网络安全定义 1.2网络系统安全 1.3网络信息安全 1.4网络安全的威胁 1.5网络安全的特征 二、入侵方式 2.1黑客 2.1.1黑客入侵方式 2.1.2系统的威胁 2.2 IP欺骗 2.2.1 TCP等IP欺骗 2.2.2 IP欺骗可行的原因 2.3 Sniffer探测 2.4端口扫描技术…...

初识 GPT-4 和 ChatGPT

文章目录 LLM 概述理解 Transformer 架构及其在 LLM 中的作用解密 GPT 模型的标记化和预测步骤 想象这样⼀个世界&#xff1a;在这个世界里&#xff0c;你可以像和朋友聊天⼀样快速地与计算机交互。那会是怎样的体验&#xff1f;你可以创造出什么样的应用程序&#xff1f;这正是…...

【C语言】解决C语言报错:Array Index Out of Bounds

文章目录 简介什么是Array Index Out of BoundsArray Index Out of Bounds的常见原因如何检测和调试Array Index Out of Bounds解决Array Index Out of Bounds的最佳实践详细实例解析示例1&#xff1a;访问负索引示例2&#xff1a;访问超出上限的索引示例3&#xff1a;循环边界…...

【C++】一个极简但完整的C++程序

一、一个极简但完整的C程序 我们编写程序是为了解决问题和任务的。 1、任务&#xff1a; 某个书店将每本售出的图书的书名和出版社&#xff0c;输入到一个文件中&#xff0c;这些信息以书售出的时间顺序输入&#xff0c;每两周店主会手工计算每本书的销售量、以及每个出版社的…...

Lua迭代器详解(附加红点功能实例)

Lua迭代器详解与用法 1. 什么是迭代器2. 为什么需要理解迭代器的原理3. 迭代器的实现0. 闭包1. 有状态迭代器2. 无状态迭代器 4. 红点树系统基础 1. 什么是迭代器 迭代器是一种能让我们遍历一个集合中的所有元素的代码结构。比如常用ipairs()和pairs()。 2. 为什么需要理解迭代…...

锂磷硫(LPS)属于硫化物固态电解质 Li7P3S11是代表性产品

锂磷硫&#xff08;LPS&#xff09;属于硫化物固态电解质 Li7P3S11是代表性产品 锂磷硫&#xff08;LPS&#xff09;&#xff0c;为非晶态材料&#xff0c;是硫化物固态电解质代表性产品之一&#xff0c;具有热稳定性好、成本较低等优点&#xff0c;在固态电解质中离子电导率较…...

PointCloudLib 点云边缘点提取 C++版本

0.实现效果 1.算法原理 PCL(Point Cloud Library)中获取点云边界的算法主要基于点云数据的几何特征和法向量信息。以下是对该算法的详细解释,按照清晰的格式进行归纳: 算法概述 PCL中的点云边界提取算法主要用于从3D点云数据中识别并提取出位于物体边界上的点。这些边界…...

【Qt】QList<QVariantMap>中数据修改

1. 问题 QList<QVariantMap> 类型中&#xff0c;修改QVariantMap中的值。 2. 代码 //有效代码1QVariantMap itemMap itemList.at(0);itemMap.insert("title", "test");itemList.replace(0, itemMap);//有效代码 2itemList.operator [](0).insert(…...

如何避免vue的url中使用hash符号?

目录 1. 安装 Vue Router 2. 配置 Vue Router 使用 history 模式 3. 更新 main.js 4. 配置服务器以支持 history 模式&#xff08;此处需要仔细测试&#xff09; a. Nginx 配置 b. Apache 配置 5. 部署并测试 总结 在 Vue.js 项目中&#xff0c;避免 URL 中出现 # 符号的…...

Java学习 - MySQL存储过程、函数和触发器练习实例

存储过程 存储过程是什么 存储过程是一组已经编译好的SQL语句存储过程优点有什么 安全 性能高 提高代码复用性创建存储过程的语法 DELIMITER $ # 不能加分号CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名 参数类型) BEGIN存储过程语句块 END;$DELIMITER ;创建一个无参的存储…...

【深度神经网络 (DNN)】

深度神经网络 (DNN) 深度神经网络 (DNN) 是机器学习领域中一种强大的工具&#xff0c;它由多层神经元组成&#xff0c;能够学习复杂的数据模式&#xff0c;解决各种任务&#xff0c;如图像识别、语音识别、自然语言处理等。 DNN 的构成&#xff1a; 神经元: DNN 的基本单元&…...

ES全文检索支持繁简和IK分词检索

ES全文检索支持繁简和IK分词检索 1. 前言2. 引入繁简转换插件analysis-stconvert2.1 下载已有作者编译后的包文件2.2 下载源码进行编译2.3 复制解压插件到es安装目录的plugins文件夹下 3. 引入ik分词器插件3.1 已有作者编译后的包文件3.2 只有源代码的版本3.3 安装ik分词插件 4…...

解决Visual Studio Code在Ubuntu上崩溃的问题

解决Visual Studio Code在Ubuntu上崩溃的问题 我正在使用Ubuntu系统&#xff0c;每次打开Visual Studio Code时&#xff0c;只能短暂打开一秒钟&#xff0c;然后就会崩溃。当通过终端使用code --verbose命令启动Visual Studio Code时&#xff0c;出现以下错误信息&#xff1a;…...

【OpenGauss源码学习 —— (ALTER TABLE(SET attribute_option))】

ALTER TABLE&#xff08;SET attribute_option&#xff09; ATExecSetOptions 函数 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们尊重他人的知识产权和学术成果&#xff0c;力求遵循合理使用原则&#xff0c;并在适用的情况下注明引用来源。…...

Elasticsearch 数据提取 - 最适合这项工作的工具是什么?

作者&#xff1a;来自 Elastic Josh Asres 了解在 Elasticsearch 中为你的搜索用例提取数据的所有不同方式。 对于搜索用例&#xff0c;高效采集和处理来自各种来源的数据的能力至关重要。无论你处理的是 SQL 数据库、CRM 还是任何自定义数据源&#xff0c;选择正确的数据采集…...

‘浔川画板v5.1’即将上线!——浔川python社

1 简介&#xff1a; 浔川画板是一款专业的数字绘画和漫画创作软件&#xff0c;它为艺术家和设计师提供了丰富的绘画工具、色彩管理功能以及易于使用的界面。用户可以使用浔川画板进行手绘风格的绘画、精细的素描、漫画分格、UI设计等多种创作。该软件支持多种笔刷和特效&#…...

RockChip Android12 System之Datetime

一:概述 本文将针对Android12 Settings二级菜单System中Date&time的UI修改进行说明。 二:Date&Time 1、Activity packages/apps/Settings/AndroidManifest.xml <activityandroid:name="Settings$DateTimeSettingsActivity"android:label="@stri…...

详解 ClickHouse 的副本机制

一、简介 副本功能只支持 MergeTree Family 的表引擎&#xff0c;参考文档&#xff1a;https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/ ClickHouse 副本的目的主要是保障数据的高可用性&#xff0c;即使一台 ClickHouse 节点宕机&#…...

速卖通测评成本低见效快,自养号测评的实操指南,快速积累销量和好评

对于初入速卖通的新卖家而言&#xff0c;销量和评价的积累显得尤为关键。由于新店铺往往难以获得平台活动的青睐&#xff0c;因此流量的获取成为了一大挑战。在这样的背景下&#xff0c;进行产品测评以积累正面的用户反馈和销售记录&#xff0c;成为了提升店铺信誉和吸引潜在顾…...

php反序列化漏洞简介

目录 php序列化和反序列化简介 序列化 反序列化 类中定义的属性 序列化实例 反序列化实例 反序列化漏洞 序列化返回的字符串格式 魔术方法和反序列化利用 绕过wakeup 靶场实战 修复方法 php序列化和反序列化简介 序列化 将对象状态转换为可保持或可传输的格式的…...

力扣随机一题 模拟+字符串

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 1910.删除一个字符串中所有出现的给定子字符串【中等】 题目&#xff1a; …...

java-正则表达式 1

Java中的正则表达式 1. 正则表达式的基本概念 正则表达式&#xff08;Regular Expression, regex&#xff09;是一种用于匹配字符串中字符组合的模式。正则表达式广泛应用于字符串搜索、替换和解析。Java通过java.util.regex包提供了对正则表达式的支持&#xff0c;该包包含两…...

Python xlrd库:读excel表格

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

开发中遇到的一个bug

遇到的报错信息是这样的&#xff1a; java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [hm-api,hm-common,hm-service] are excluded from annotation processing 翻译过来就是存在循环引用的情况&#xff0c;导…...

Java面试题:对比不同的垃圾收集器(如Serial、Parallel、CMS、G1)及其适用场景

Java虚拟机&#xff08;JVM&#xff09;提供了多种垃圾收集器&#xff0c;每种垃圾收集器在性能和适用场景上各有不同。以下是对几种常见垃圾收集器&#xff08;Serial、Parallel、CMS、G1&#xff09;的对比及其适用场景的详细介绍&#xff1a; 1. Serial 垃圾收集器 Serial…...

每日一题——冒泡排序

C语言——冒泡排序 冒泡排序练习 前言&#xff1a;CSDN的小伙伴们&#xff0c;大家好&#xff01;今天我来给大家分享一种解题思想——冒泡排序。 冒泡排序 冒泡法的核心思想&#xff1a;两两相邻的元素进行比较 2.冒泡排序的算法描述如下。 (1)比较相邻的元素。如果第一 个比…...

javascript浏览器对象模型

BOM对象&#xff1a; BOM 是浏览器对象模型的简称。JavaScript 将整个浏览器窗口按照实现的功能不同拆分成若干个对象&#xff1b; 包含&#xff1a;window 对象、history 对象、location 对象和 document 对象等 window对象&#xff1a; 常用方法&#xff1a; 1.prompt();…...

C语言之链表以及单链表的实现

一&#xff1a;链表的引入 1&#xff1a;从数组的缺陷说起 &#xff08;1&#xff09;数组有两个缺陷。一个是数组中所有元素类型必须一致&#xff0c;第二是数组的元素个数必须事先指定并且一旦指定后不能更改 &#xff08;2&#xff09;如何解决数组的两个缺陷&#xff1a;数…...

AI在线免费视频工具2:视频配声音;图片说话hedra

1、视频配声音 https://deepmind.google/discover/blog/generating-audio-for-video/ https://www.videotosoundeffects.com/ &#xff08;免费在线使用&#xff09; 2、图片说话在线图片生成播报hedra hedra 上传音频与图片即可合成 https://www.hedra.com/ https://www.…...

企业网站目的/手机注册网站

概念及注意事项1、组函数:对一组数据进行操作&#xff0c;最后返回一个值&#xff0c;用作统计分析&#xff0c;求所有的非空值。2、关键字DISTINCT可以排除重复值。3、参数的类型可以是CHAR,VARCHAR2,NUMBER,DATE4、除了COUNT(*)外&#xff0c;其他所有组函数都忽略空值&#…...

分销pc网站/长沙seo管理

自动化始终只是辅助测试工作的一个手段&#xff0c;对于测试人员而言&#xff0c;测试基础和测试用例的设计才是核心。如果测试用例的覆盖率或者质量不高&#xff0c;那将这部分用例实现为自动化用例的意义也就不大了。 那么&#xff0c;接口测试用例应该怎么编写呢&#xff1f…...

口碑好网站建设/推广计划怎么做

超时时间已到。在操作完成之前超时时间已过或服务器未响应”初步分析原因为对MSSQL操作时连接超时&#xff0c;知道这事&#xff0c;以前没留意&#xff0c;大概是在配置文件中设置连接时限&#xff0c;在网上找了下解决方法&#xff0c;大多说在数据库连接字符串里解决 SqlCo…...

功能网站开发/win7优化

很多新手电脑屏幕亮度不知道如何调整&#xff0c;这是一个非常重要的问题。电脑屏幕的亮度不仅关系到电脑的节能和使用寿命&#xff0c;而且对我们的眼睛也有很大的影响。很多游戏迷&#xff0c;上班族或学生&#xff0c;整天在哭眼睛疼&#xff0c;眼睛累&#xff0c;但又必须…...

安康市滴滴公司电话/快速排名优化推广价格

游戏服务器高可用负载均衡 内容精选换一换共享型负载均衡不支持&#xff0c;必须是华为云后端服务器。点击了解更多后端服务器介绍相关内容。独享型负载均衡实例支持混合负载均衡的能力&#xff0c;后端服务器组不仅支持添加云上VPC内的服务器&#xff0c;还支持添加其他VPC、其…...

国企网站建设合同/深圳网站设计公司

文章目录一.原型链机制1. 原型链的本质2. 引用类型的构造函数3. 基本类型的包装类二. 对象与属性1. 对象直接打点验证某个属性是否存在4. instanceof 运算符三. 继承1. 原型链继承2. 构造函数继承3. 组合继承一.原型链机制 1. 原型链的本质 只要是对象&#xff0c;一定有原型…...