预览
Active Choices 插件用于自由式Jenkins参数化工作创建脚本化、动态和交互式作业参数 。主动选择参数 可以动态更新 ,并可以呈现为组合框,复选框,单选按钮或丰富的HTML UI小部件 。
主动选择参数使用Groovy编写脚本,或者(可选)Scriptler Groovy脚本。
这些定制脚本支持使用Jenkins Java API、系统环境变量、全局节点属性,以及可能的外部Java和Javascript库。
安装插件后,有三种新的参数类型可用:
主动选择参数
主动选择反应参数
主动选择反应引用参数
NOTE: 反应引用参数允许参数以格式化的HTML形式显示。在使用此特性配置作业时,请记住参数将如何呈现,以及它是否会造成安全问题。
NOTE: 该插件的开发在很大程度上依赖于Jenkins UI的HTML/DOM。我们使用JavaScript导航DOM以创建参数之间的关系和反应性。
Follow JENKINS-63284 获得不需要UI的版本的更新。
当这个问题被解决后,插件应该可以很好地处理Pipelines、DSL、定timers器、cron、 REST-API-triggered jobs等等。
Active Choices parameters允许用户为作业参数选择值。参数值为:
dynamically generated 动态生成 (使用Groovy或Scriptler脚本)
dynamically updated based on other UI parameters基于其他UI参数动态更新
multi-valued(可以有多个值)
rendered with a variety of UI controls, including dynamic HTML 使用多种UI控件渲染,包括动态HTML
我们将通过简要描述其行为和呈现特征来介绍基于活动选择的UI控件。然后,我们将提供它们的配置指南。
Active Choices Parameter 主动选择参数
Behavior
Active Choices参数使用Groovy脚本或Scriptler目录中的脚本动态生成构建参数的值选项列表。
Rendering
Active Choices parameters 可以呈现为标准的选择列表、复选框和单选按钮。
可以选择显示文本框筛选器来帮助筛选值选项。
Active Choices Reactive and Reactive Reference Parameters
这两个参数都有其他有用的行为,Reactive Reference有一些独特的呈现选项
Behavior
类似于上面的 Active Choices Parameter:
Active Choices Reactive 和 Reactive Reference parameters 使用Groovy脚本或Scriptler脚本动态地为构建参数生成值选项
此外:
当其他作业UI控件的值发生变化时,Active Choices Reactive 和 Reactive Reference parameters 可以动态更新(级联更新)
Rendering Options 呈现选项
Active Choices Reactive
Active Choices Reactive parameters 可以呈现为标准的选择列表、复选框和单选按钮。
可以选择显示文本框筛选器来帮助筛选值选项。
Active Choices Reactive Reference
Active Choices Reactive Reference parameters 用于增强带有参考信息的Jenkins作业表单UI。
记住这个用例,Reactive Reference UI控件可以呈现为:
An HTML list (bulleted or numbered):HTML列表(项目符号或编号)
An HTML input text box:一个HTML输入文本框
Dynamically generated HTML (image, iframe, etc.):动态生成HTML (image, iframe, etc.)
动态生成的HTML选项适用于Groovy脚本返回的任何格式良好的HTML。它能够呈现各种HTML元素,包括图片、内联框架、超链接、格式丰富的文本 等。
此外,Reactive Reference parameters可以从UI中隐藏 ,从而提供动态生成隐藏构建参数的选项。这些选项将在Reactive Reference configuration一节中进一步讨论。
Rendering Example 呈现示例
在上面的例子中,当“Gender”参数改变时,“Professions”参数的值选项也会更新。
此外,当“Gender”参数更新时,作为图片呈现的 Reactive Reference parameter “Gender_Balance”也会动态更新。
Behavior and Rendering Summary 行为和呈现摘要
下表总结了三种 Active Choices parameter 类型的行为和呈现特征.
Active Choices Parameter Type Configuration
插件中包含以下参数:
Active Choices Parameter
Active Choices Reactive Parameter
Active Choices Reactive Reference Parameter
现在我们来描述它们的配置细节。
Active Choices Parameter: Configuration Options (Example 01)
An Active Choices Parameter 通过在参数配置中设置以下选项来配置
The ‘Name’ and ‘Description’
这些是典型的参数名称和描述,对所有Jenkins参数都是常见的
The ‘Script’
‘Script’ 是会动态生成参数值选项的 Groovy 代码 或 Scriptlet 脚本
通过选择这两个单选按钮选项中的任何一个,您可以直接键入Groovy脚本,也可以使用Scriptler脚本
脚本必须返回一个 java.util.List , 一个 Array(数组) 或者一个 java.util.Map ,如下例所示:
return ['Option 1', 'Option 2', 'Option 3']
The ‘Fallback Script’
The ‘Fallback Script’ 配置选项提供了备用的参数值选项,以防主脚本因抛出异常或不返回 java.util.List, Array or java.util.Map 而失败。
The ‘Choice Type’
’Choice Type ’ 选项为选项值提供了四种不同的呈现选项:
允许单个选择的列表框
允许多个选择的列表框
复选框列表(允许多个选择)
单选按钮列表(允许单个选择)
The ‘Enable Filter’
The ‘Enable Filter ’ 选项将在UI控件中提供一个文本框过滤器,可以在其中输入文本过滤器,然后只列出包含文本的值选项。
这个 filter(过滤器)是独立于控件之外的。
Active Choice Parameter Rendering (Example 01)
The Example 01 Active Choice parameter 配置生成以下构建表单UI控件。用户可以从一个可筛选的下拉列表中选择一个“State”选项。
Making ‘Default’ selections
当控件初始化时,可以默认选中 Active Choices UI control 中显示的一些选项.
您可以通过添加后缀来定义缺省值选择 ,从脚本返回的元素中选择 要作为默认选择的元素.
在下面的例子中,当参数UI控件呈现时,我们将“Parana”状态作为默认选择。
Making ‘Disabled’ selections
您还可以通过添加后缀来定义禁用的选择 ;
添加 :disabled 到您希望禁用的元素.
在下面的示例中,我们将使各种元素被禁用和不可更改。
然后你会发现,:selected 和 :disabled 能够同时被选中.
我们将 Active Choices 的实现归功于 Dynamic Parameter plugin(动态参数插件)的开发人员的一些初始概念和代码。
然而,Active Choices 插件和原来的 Dynamic Parameter 插件之间有几个重要的区别和改进:
Active Choices 参数可以呈现 为一个多选择控件(组合框或复选框),允许用户为该参数选择多个值
**可以筛选参数选项值列表。**如果 “Enable Filters ” 选项被选中了,将显示一个额外的输入框,允许用户筛选选项。
如果值生成器脚本引发异常,可以定义一个’fallback ’行为。
可以在动态生成的值列表中定义默认值选择
Active Choices Reactive Parameter: Configuration Options (Example 02)
Active Choices Reactive 参数配置了一组与上述活动选项参数类似的选项。 但是,Reactive 参数提供了附加的“Referenced parameters ”配置选项。
This option, takes a list of job parameters that trigger an auto-refresh of the Reactive Parameter when any of the ‘Referenced parameters’ change
此选项接受一列作业参数,当任何“引用参数”发生更改时,该作业参数将触发响应性参数的自动刷新
The ‘Referenced parameters’
“Referenced parameters ”文本字段包含一列逗号分隔的参数名称 (来自当前作业),当它们的值发生变化时,将触发响应性参数的刷新。
在重新执行脚本之前,这些参数的值被传递给脚本绑定上下文,以便为Active Choices控件生成一组新的选项值。
Active Choices Reactive Parameter Rendering (Example 02)
让我们检查一下使用Active Choices Reactive 参数呈现的Jenkins构建表单,该表单满足以下需求。
The form:
允许用户选择几个巴西州之一
提供一个附加控件,其中动态显示属于所选状态的一组城市
允许用户选择一个或多个显示的城市
Job UI由两个参数组成:
1) States: An Active Choice Parameter
第一个参数是States 示例01中的Active Choice 参数. 它允许用户选择几个巴西州之一。 我们也可以简单地使用Jenkins选择参数,但是我们使用了 Active Choice 参数(如示例01所示)。用于此的Groovy脚本是:
return[
'Sao Paulo',
'Rio de Janeiro',
'Parana',
'Acre'
]
2) Cities: An Active Choices Reactive Parameter
第二个参数是 Cities ,Active Choices Reactive Parameter 该参数动态显示 一组属于所选状态的城市,并允许用户选择多个值。城市参数配置如上例02所示。
注意:
城市Reactive 参数引用前面定义的状态参数(‘Referenced parameters’=States);
The ‘Choice Type’ 被设置为复选框。这将允许用户通过选择多个复选框来选择一个或多个城市。
一个自定义的 ‘Groovy Script’ 将用于生成如下所示的城市值选项(脚本返回的最后一个列表值)
if (States.equals("Sao Paulo")) {
return ["Barretos", "Sao Paulo", "Itu"]
} else if (States.equals("Rio de Janeiro")) {
return ["Rio de Janeiro", "Mangaratiba"]
} else if (States.equals("Parana")) {
return ["Curitiba", "Ponta Grossa"]
} else if (States.equals("Acre")) {
return ["Rio Branco", "Acrelandia"]
} else {
return ["Unknown state"]
}
每当用户更改States参数的选项时,Cities参数将得到动态更新。注意,状态 引用参数是如何在脚本绑定中使用的,并且可以直接使用。
您可以使用反应性参数类型来处理一些事情,比如显示给定的组ID的Maven工件列表。
Active Choices Reactive Reference Parameter: Configuration Options
A Reactive Reference parameter 配置了一组类似于上面所示的Active Choices Reactive参数选项。
但是, Reactive Reference 参数提供了一组独特的呈现选项 (see ‘Choice Type’).
Input text box:输入文本框
Numbered list:编号列表
Bullet items list:项目列表
Formatted HTML:格式化的HTML
Formatted Hidden HTML:格式化隐藏HTML
鉴于各种各样的呈现选项,Active Choices Groovy脚本必须为每个选项返回以下类型的变量:
Choice Type
Groovy Returns
Comment
Input text box
String
返回的字符串出现在一个简单的文本框中
Numbered list
List
返回列表显示为一个编号列表
Bullet items list
List
返回列表显示为项目符号列表
Formatted HTML
String
返回的字符串必须是格式化良好的HTML才能正确显示。你可以在这里加入任何HTML标签,例如:一些
Reactive Reference 参数的典型应用程序是动态显示参考信息,可用于指导用户对另一个作业参数进行适当的值选择。
按照设计,除了一个重要的例外,Reactive Reference 参数的值不会传递给构建环境。当选择类型被设置为格式化HTML 或格式化隐藏HTML ,并且HTML是一个“输入”元素时,值可以被传递给构建。
参见“高级用法”一节了解更多说明。
Example Configuration: Active Choices Reactive Reference Parameter
我们展示了3个具有不同选择类型的反应性引用示例,以及在Jenkins job UI中相应的呈现。
考虑这样一个例子,用户需要选择一种食物来补充可用的葡萄酒。如果能提供一些有用的参考信息,用户在选择特定的葡萄酒时就会更加容易。我们将此引用信息称为WINE_RULE,并且可以使用反应性引用变量轻松实现它。
当用户从WINE_MENU中进行新选择时,WINE_RULE会自动更新(注意引用的参数=WINE_MENU)。因此,当我们做一个WINE_MENU选择时,我们还会得到一个WINE_RULE来指导FOOD_MENU 的选择。
Reactive Reference Configuration (Example 03)
WINE_RULE参数的完整配置如下所示。
Reactive Reference Groovy script (Example 03)
为每个选项生成WINE_RULE 格式化的HTML 的groovy脚本如下所示。
switch(WINE_MENU){
case~/.*Champagne.*/:
winerec='Champagne is perfect with anything salty'
return "${winerec} "
break
case ~/.*Sauvignon Blanc.*/:
winerec='Sauvignon Blanc goes with tart dressings and sauces'
return "${winerec} "
break
case~/.*Grüner Veltliner.*/:
winerec='Choose Grüner Veltliner when a dish has lots of fresh herbs'
return "${winerec} "
break
case~/.*Pinot Grigio.*/:
winerec='Pinot Grigio pairs well with light fish dishes'
return "${winerec} "
break
case ~/.*Chardonnay.*/:
winerec='Choose Chardonnay for fatty fish or fish in a rich sauce'
return "${winerec} "
break
case~/.*Off-Dry Riesling.*/:
winerec='Off-Dry Riesling pairs with sweet & spicy dishes'
return "${winerec} "
break
case~/.*Moscato dAsti.*/:
winerec='Moscato dAsti loves fruit desserts'
return "${winerec} "
break
case ~/.*dry Rosé.*/:
winerec='Pair a dry Rosé with rich, cheesy dishes'
return "${winerec} "
break
case~/.*Pinot Noir.*/:
winerec='Pinot Noir is great for dishes with earthy flavors'
return "${winerec} "
break
}
Advanced Usage Notes 高级用法说明
编写Groovy脚本时的注意事项
你的Groovy脚本绑定可以使用另外两个变量:
jenkinsProject -> Jenkins项目对象
jenkinsBuild -> Jenkins构建对象
将 Reactive Reference 值传递给构建
如前所述,Reactive Reference 参数的值通常不会传递给构建。但是,在一些场景中,传递这些值的能力是很有意义的。
有关此特性的更广泛讨论,请阅读这里here.
场景1:传递一个可由用户编辑的动态创建的值
在这个场景中,我们希望为用户提供一个可编辑的动态默认值。这可以通过以下反应性参考配置来实现:
选择类型: Formatted HTML
Groovy脚本返回一个带有动态默认值的HTML输入元素
高级选项设置为
场景2:传递一个动态创建的值,该值是隐藏的 (用户不能编辑)
在这个场景中,我们希望构建能够访问UI中由用户输入/选项选择 生成的动态参数。该参数是通过编程方式创建的,不能由用户编辑。这可以通过以下反应性参考配置来实现:
选择类型: Formatted Hidden HTML
Groovy脚本返回一个带有动态默认值的HTML输入元素
高级选项设置为
当你想要计算在构建中使用的值时,一个“Formatted Hidden HTML”选择类型是有用的,但是这些值不应该被用户修改(例如。来计算部署URL)。
在这两种情况下,groovy脚本都必须返回格式化如下的HTML元素:
return " "
**ReactiveRefParam** is the Reactive Reference value that will be passed to the build
#### Scenario 3: Create an input control with dynamic HTML and pass its value to the build
This is an interesting application of the Reactive Reference parameter. It allows you to create custom UI parameter controls with improved interactivity. See [example](https://wiki.jenkins-ci.org/display/JENKINS/Reactive+Reference+Dynamic+Parameter+Controls)
### Advanced Option: Omit Value Field
By default Reactive References pass to the build a hidden \ . It means that your Reactive Reference parameter will always be empty, but you can use a Formatted HTML parameter and instruct the plug-in to not include this hidden value parameter.
You can click the Advanced button and there you will find an option to omit the value field. This will you let you define a value for the hidden parameter.

### Using Active Choices with Scriptler scripts
We assume users that need to use Scriptler generated parameters are already familiar with the Scriptler Plug-in. If you need further information on how to use the Scriptler Plug-in, please refer to [its Wiki page](https://wiki.jenkins-ci.org/display/JENKINS/Scriptler+Plugin) first.
Similarly to a Groovy script, a Scriptler script is also written in Groovy and used to render the parameter. Your Scriptler script is also expected to return a java.util.List, Array or java.util.Map for Active Choices and Reactive parameters, or custom HTML elements for the Reactive Reference parameter. Note that the value of other build parameters (when using Scriptler in combination with Active Choices) will be available in the Scriptler script context. You do not need to define such parameters in the Scriptler interface, or during the job definition.
However, **the main advantage that the Scriptler Plug-in** provides is the creation of a **reusable** **Groovy script catalog** that can be used across multiple jobs or even for automation.
To make your Scriptler scripts reusable across multiple projects you should parameterize them and assign script parameters using build parameters.
#### Example
`Environments.groovy` in Scriptler
```syntaxhighlighter-pre
return ["Select:selected", "DEV", "TEST", "STAGE", "PROD"]
HostsInEnv.groovy
in Scriptler
// Static content examples. These lists can be generated dynamically as an alternative.
List devList = ["Select:selected", "dev1", "dev2"]
List testList = ["Select:selected", "test1", "test2", "test3"]
List stageList = ["Select:selected", "stage1"]
List prodList = ["Select:selected", "prod1", "prod2", "prod3", "prod4"]
List default_item = ["None"]
if (Environment.equals('DEV')) {
return devList
} else if (Environment.equals('TEST')) {
return testList
} else if (Environment.equals('STAGE')) {
return stageList
} else if (Environment.equals('PROD')) {
return prodList
} else {
return default_item
}
Pipeline in Jenkinsfile
properties([
parameters([
[
$class: 'ChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
name: 'Environment',
script: [
$class: 'ScriptlerScript',
scriptlerScriptId:'Environments.groovy'
]
],
[
$class: 'CascadeChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
name: 'Host',
referencedParameters: 'Environment',
script: [
$class: 'ScriptlerScript',
scriptlerScriptId:'HostsInEnv.groovy',
parameters: [
[name:'Environment', value: '$Environment']
]
]
]
])
])
pipeline {
agent any
stages {
stage('Build') {
steps {
echo "${params.Environment}"
echo "${params.Host}"
}
}
}
}
Filter Supports Regular Expressions 过滤器支持正则表达式
请注意,尽管可用于活动选项参数的文本“Filter”框通过简单地键入一些文本提供了简单的不区分大小写的过滤,但它还支持使用正则表达式进行更复杂的过滤。
下面的示例展示了使用正则表达式筛选复杂选项列表的示例:
Security 安全
Active Choice versions before v2.0 使用可能不安全。在使用旧版本之前,请查看以下警告:
Arbitrary code execution vulnerability:任意代码执行漏洞
Stored cross-site scripting ulnerability:存储跨站点脚本易损性
从 Active Choices v2.0 开始 ,用于Active Choices Reactive Reference Parameter 的 沙箱 Groovy 脚本将不再提出认为HTML是不安全的,例如
标签.
这可能会在 Build With Parameters 表单上导致n个行为改变,比如缺少元素。
要解决这个问题,需要将Groovy脚本发出的HTML配置为在脚本安全沙箱之外运行,可能需要在***进程内脚本审批***中单独进行管理员审批。
Active Choices 将额外加载两个文件:Javascript files, JQuery and unochoice.js.
Languages Supported 支持的语言
English
Portuguese (Brazil)) Work in Progress
If you want to include yours, send us a pull request with the messages.properties files or get in touch!
Known Limitations 已知的限制
这些参数应该只由人来处理,而在由插件、API或脚本触发作业时,它们并不工作。
Please see this issue for more.
在归档问题之前,请查看故障排除页面: Troubleshooting Page
你可能感兴趣的:(Devops,Jenkins,参数化构建,多项参数)
英伟达靠什么支撑起了4万亿?AI泡沫还能撑多久?
英伟达市值突破4万亿美元,既是AI算力需求爆发的直接体现,也暗含市场对未来的狂热预期。其支撑逻辑与潜在风险并存,而AI泡沫的可持续性则取决于技术、商业与地缘政治的复杂博弈。⚙️一、英伟达4万亿市值的核心支撑因素技术垄断与生态壁垒硬件优势:英伟达GPU在AI训练市场占有率超87%,H100芯片的FP16算力达1979TFLOPS,领先竞品3-5倍。CUDA生态:400万开发者构建的软件护城河,成为A
Flowable 高级扩展:自定义元素与性能优化实战
练习时长两年半的程序员小胡
Flowable 流程引擎实战指南 流程图 flowable BPMN 流程引擎 java
在前五篇文章中,我们从基础概念、流程设计、API实战、SpringBoot集成,到外部系统协同,逐步构建了Flowable的应用体系。但企业级复杂场景中,原生功能往往难以满足定制化需求——比如需要特殊的审批规则网关、与决策引擎联动实现动态路由,或是在高并发场景下优化流程引擎性能。本文将聚焦Flowable的高级扩展能力,详解如何自定义流程元素、集成规则引擎,并掌握大型系统中的性能调优策略。一、自定
Java | 多线程经典问题 - 售票
Ada54
一、售票需求1)同一个票池2)多个窗口卖票,不能出售同一张票二、售票问题代码实现(线程与进程小总结,请戳:Java|线程和进程,创建线程)step1:定义SaleWindow类实现Runnable接口,覆盖run方法step2:实例化SaleWindow对象,创建Thread对象,将SaleWindow作为参数传给Thread类的构造函数,然后通过Thread.start()方法启动线程step3
车载诊断架构 --- 关于诊断时间参数P4的浅析
汽车电子实验室
车载电子电气架构 漫谈UDS诊断协议系列 架构 开发语言 关于网关转发性能引起的思考 汽车中央控制单元HPC软件架构 车载诊断进阶篇
关于诊断时间参数P4的浅析我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的豁达,往不幸上面喷“香水”来掩盖问题。无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦
深入理解汇编语言子程序设计与系统调用
网安spinage
汇编语言 开发语言 汇编 算法
本文将全面解析汇编语言中子程序设计的核心技术以及系统调用的实现方法,涵盖参数传递的多种方式、堆栈管理、API调用等关键知识点,并提供实际案例演示。一、子程序设计:参数传递的艺术1.寄存器传参:高效简洁.386.modelflat,stdcalloptioncasemap:none.dataxdd5;定义变量ydd6sumdd?.code;函数定义:addxy1addxy1procpushebpmo
基于redis的Zset实现作者的轻量级排名
周童學
Java redis 数据库 缓存
基于redis的Zset实现轻量级作者排名系统在今天的技术架构中,Redis是一种广泛使用的内存数据存储系统,尤其在需要高效检索和排序的场景中表现优异。在本篇博客中,我们将深入探讨如何使用Redis的有序集合(ZSet)构建一个高效的笔记排行榜系统,并提供相关代码示例和详细的解析。1.功能背景与需求假设我们有一个笔记分享平台,用户可以发布各种笔记,系统需要根据用户发布的笔记数量来生成一个实时更新的
北斗短报文兜底、5G-A增强:AORO P1100三防平板构建应急通信网络
公网中断的灾区现场,泥石流阻断了最后一条光缆。一支救援队却在废墟间有序穿行,队长手中的三防平板正闪烁着北斗卫星信号,定位坐标与伤亡信息化作一行行短报文,穿透通信孤岛直达指挥中心。这是AOROP1100三防平板搭载的北斗短报文功能在应急救援中的真实场景,更代表了工业移动终端在极端环境下的能力跃迁。AOROP1100三防平板作为遨游通讯2025年推出的旗舰三防设备,AOROP1100三防平板的技术基底
C++ :vector的模拟
诚自然成
c++ 开发语言
目录一、vector的迭代器二、vector的构造函数默认构造函数参数构造函数迭代器范围构造函数拷贝构造函数swap:交换vector重载赋值符析构函数reserve:扩容vectorresize:调整大小push_back:添加元素empty:判空pop_back:后删获取大小与容量:size(),capacity()重载operator[]:元素访问insert:插入元素erase:删除一个元
Redis + Caffeine 实现高效的两级缓存架构
周童學
Java 缓存 redis 架构
Redis+Caffeine实现高效的两级缓存架构引言在现代高并发系统中,缓存是提升系统性能的关键组件之一。传统的单一缓存方案往往难以同时满足高性能和高可用性的需求。本文将介绍如何结合Redis和Caffeine构建一个高效的两级缓存系统,并通过三个版本的演进展示如何逐步优化代码结构。项目源代码:github地址、gitee地址两级缓存架构概述两级缓存通常由本地缓存(如Caffeine)和分布式缓
uniapp微信小程序 - 详解微信小程序平台用户授权登录全流程,uniapp v3版本中小程序端开发下用户点击登录后获取手机号/昵称/性别/头像等信息完成登录(提供完整示例代码,一键复制开箱即用)
十一猫咪爱养鱼
前端组件与功能(开箱即用) uniapp常见问题解决 uniapp vue3 uniapp3小程序授权登录 微信小程序登录获取用户信息教程 获取用户昵称手机号头像信息登录 vue3版本小程序平台授权登录 uniap小程序端用户登录流程 uni完整的小程序平台登录源码
效果图在uniapp微信小程序端开发中,超详细实现用户授权登录完整功能源码,用户授权后获取手机号/昵称/头像/性别等,提供完整思路流程及逻辑讲解。uniappVue3和Vue2都能用,你也可以直接复制粘贴,然后改下参数放到你的项目中去就行。整体思路做功能之前,先来看一下整体流程是
元宇宙中的视觉技术:虚拟化身与场景生成
xcLeigh
计算机视觉CV 元宇宙 虚拟化身 场景生成 AIGC 数字孪生
元宇宙中的视觉技术:虚拟化身与场景生成前言一、元宇宙与视觉技术的深度关联1.1元宇宙概念深度剖析1.2视觉技术:元宇宙的“灵魂之窗”二、虚拟化身:数字世界的“第二自我”2.1虚拟化身技术的深度解析2.1.1核心技术构成2.1.2技术实现原理与流程2.2虚拟化身的应用领域及案例展示2.2.1游戏娱乐领域2.2.2教育培训领域三、场景生成:构建元宇宙的虚拟天地3.1场景生成技术全景透视3.1.1关键技
C++编程基础与面向对象概念解析
侯昂
面向对象编程 C++语法 函数 类与对象 继承与多态性
C++编程基础与面向对象概念解析背景简介C++是一种广泛使用的面向对象编程语言,它允许开发者创建高效、灵活且功能强大的程序。本文基于《C++Primer》一书的章节内容,深入解析C++的核心概念和面向对象编程原则,旨在帮助读者构建扎实的C++编程基础。面向对象编程的原则软件危机与进化介绍了软件危机的产生和软件进化的必要性,强调了面向对象编程(OOP)在应对这些问题中的优势。面向对象编程范式讨论了面
听覃杰007写作精进课第五天分享心得
曹端春
早上听覃老大直播007写作精进课程第五天,获益良多。关于写作的黄金三法:多读,多写,多动,确实说到了写作的真谛。一,多读,扩大阅读面,精读相关经典作家的经典作品,逐步构建自己的知识体系;阅读方面推荐指读法,这是聪明人用的笨办法,读本离眼睛远些,可让视野更开阔些,能提高30%的速度;二,多写,象高手一样靠汗水写作,写不出来硬写,找准自己的定位,在一个行业内了解100个关键词,输出糸列文章,并且多分享
Qwen3 大模型实战:使用 vLLM 部署与函数调用(Function Call)全攻略
曦紫沐
大模型 大模型部署 Qwen3 vLLM 函数调用
文章摘要本文将带你从零开始,深入掌握如何使用Qwen3-8B大语言模型,结合vLLM进行高性能部署,并通过函数调用(FunctionCall)实现模型与外部工具的智能联动。我们将详细讲解部署命令、调用方式、代码示例及实际应用场景,帮助你快速构建基于Qwen3的智能应用。一、Qwen3简介与部署环境准备Qwen3是通义千问系列的最新一代大语言模型,具备强大的自然语言理解和生成能力,尤其在函数调用、工
链商拉不到人能赚钱么,谈谈我的看法
糖葫芦不甜
链商作为一种新兴的商业形态,往往依赖于用户网络的扩展和交易量的增加来实现价值增长,但这并不意味着没有直接拉新就无法盈利。以下是我对这一问题的几点看法:招合作伙伴↓微信在文章底部。首先,链商能否赚钱,关键在于其是否能提供独特且有价值的产品或服务。如果链商平台能够构建出高效、透明、安全的价值交换体系,解决行业痛点,提升用户体验,那么即使没有大规模的拉新活动,也能通过现有用户的口碑传播和持续使用来产生稳
基于DeepSeek的下一代大型游戏开发革命:架构、核心技术与项目管理实践
Liudef06小白
特殊专栏 人工智能 AIGC 架构 人工智能 deepseek
基于DeepSeek的下一代大型游戏开发革命:架构、核心技术与项目管理实践DeepSeek大模型正重塑游戏开发范式,本文将深入解析如何利用这一革命性技术构建下一代大型游戏,涵盖从架构设计到项目管理的全流程实践。目录DeepSeek游戏引擎核心架构1.1神经符号系统融合架构1.2动态世界生成引擎智能NPC与剧情系统2.1角色人格建模技术2.2动态叙事生成算法大型项目管理体系3.1敏捷-AI混合开发流
量子计算解决气候变化:科学家找到了新方法
大力出奇迹985
量子计算
气候变化已成为全球面临的严峻挑战,传统计算方法在应对与之相关的复杂问题时存在诸多局限。而量子计算作为新兴技术,为解决气候变化难题带来曙光。本文深入剖析科学家利用量子计算应对气候变化的新方法。量子计算凭借独特的量子比特与量子特性,在加速气候模型计算、优化模型参数、预测极端天气事件等方面展现出巨大优势。同时,在可再生能源整合、电网管理、碳捕获等实际应用场景中也发挥着重要作用。尽管目前面临硬件和算法等方
基于Python的AI健康助手:开发与部署全攻略
AI算力网络与通信
AI算力网络与通信原理 AI人工智能大数据架构 python 人工智能 开发语言 ai
基于Python的AI健康助手:开发与部署全攻略关键词:Python、AI健康助手、机器学习、自然语言处理、Flask、部署、健康管理摘要:本文将详细介绍如何使用Python开发一个AI健康助手,从需求分析、技术选型到核心功能实现,再到最终部署上线的完整过程。我们将使用自然语言处理技术理解用户健康咨询,通过机器学习模型提供个性化建议,并展示如何用Flask框架构建Web应用接口。文章包含大量实际代
lesson20:Python函数的标注
你的电影很有趣
python 开发语言
目录引言:为什么函数标注是现代Python开发的必备技能一、函数标注的基础语法1.1参数与返回值标注1.2支持的标注类型1.3Python3.9+的重大改进:标准集合泛型二、高级标注技巧与最佳实践2.1复杂参数结构标注2.2函数类型与回调标注2.3变量注解与类型别名三、静态类型检查工具应用3.1mypy:最流行的类型检查器3.2Pyright与IDE集成3.3运行时类型验证四、函数标注的工程价值与
C#中的设计模式:构建更加优雅的代码
Envyᥫᩣᩚ
c# 开发语言
C#在面向对象编程(OOP)方面的强大支持,我们可以探讨“C#中的设计模式”。这不仅有助于理解如何更好地组织代码,还能提高代码的可维护性和可扩展性。引言设计模式是软件工程中经过实践验证的解决方案模板,它们提供了一种标准化的方法来解决常见的开发问题。对于使用C#进行开发的程序员来说,理解和应用这些模式可以帮助创建结构良好、易于维护和扩展的应用程序。本文将介绍几种常用的设计模式,并展示如何用C#实现它
【大模型微调实战】4. P-Tuning爆款文案生成:让模型学会小红书“爽感”写作,转化率提升300%
AI_DL_CODE
大模型微调 P-Tuning 小红书文案 爆款生成 情绪强化 自然语言生成 提示工程
摘要:在内容营销竞争白热化的当下,普通文案已难以突破流量壁垒。本文聚焦P-Tuning技术在小红书爆款文案生成中的落地应用,通过参数化提示向量优化,将抽象的“爽感”写作转化为可量化、可训练的技术指标。文中提出“六步成文法”,从情绪化数据集构建到爆款元素复刻,完整拆解如何用RTX3060级显卡实现0.1%参数量微调,使文案点击率从2.1%提升至8.7%,爆文率提高5倍,单条文案带货超8万元。核心创新
Mac OSX 下的mysql数据库文件存放位置
Bruuuces
mysql mac osx 位置 存放
之前我的mysql的系统数据库里的表被我玩坏了,万般无奈之下只得删除所有mysql的东西重新构建数据库。按照网上搜到的内容删除后重装发现数据库没有什么变化。于是自己在每个可能存放数据库文件的目录查找,最终确认目录位置如下:使用HomeBrew安装为/usr/local/var/mysql使用官方下载的dmg镜像安装为/usr/local/mysql删除这个目录再重新安装mysql就会重新生成系统数
大学生入门:初识方法及其易踩坑的点
在java学习过程中,我们不难发现有很多重复使用的功能代码块,每次使用如果都要重新写一遍,岂不是很麻烦,就算是“cv”大法,感觉也不是很方便,那么,有什么办法可以解决这个问题呢?方法!java中,一段可重用的,用于执行特定功能的代码块叫做方法,它可以接收参数、返回结果,并且可以被多次使用。一、方法的基本结构[修饰符]返回值类型方法名([参数列表])[throws异常类型]{//方法体}[throw
C++中std::variant的使用详解和实战代码示例
点云SLAM
C++ c++ 开发语言 variant C++泛型编程 联合体 C++ 类型擦除机制 C++17
std::variant是C++17引入的一个类型安全的联合体(type-safeunion),它可以在多个类型之间存储一个值,并在编译时进行类型检查。它是现代C++类型擦除与泛型编程的核心工具之一,适用于构建可变类型结构、消息传递系统、状态机等。一、基本概念#includestd::variantv;类似于联合体union,但类型安全。std::variant只能存储其中一个类型的值。默认构造时
前端数据库:IndexedDB从基础到高级使用指南
文章目录前端数据库:IndexedDB从基础到高级使用指南引言一、IndexedDB概述1.1什么是IndexedDB1.2与其他存储方案的比较二、基础使用2.1打开/创建数据库2.2基本CRUD操作添加数据读取数据更新数据删除数据三、高级特性3.1复杂查询与游标3.2事务高级用法3.3性能优化技巧四、实战案例:构建离线优先的待办事项应用4.1数据库设计4.2同步策略实现五、常见问题与解决方案5.
使用Python和Gradio构建实时数据可视化工具
PythonAI编程架构实战家
信息可视化 python 开发语言 ai
使用Python和Gradio构建实时数据可视化工具关键词:Python、Gradio、数据可视化、实时数据、Web应用、交互式界面、数据科学摘要:本文将详细介绍如何使用Python和Gradio框架构建一个实时数据可视化工具。我们将从基础概念开始,逐步深入到核心算法实现,包括数据处理、可视化技术以及Gradio的交互式界面设计。通过实际项目案例,读者将学习如何创建一个功能完整、响应迅速的实时数据
Python Gradio:实现交互式图像编辑
PythonAI编程架构实战家
Python编程之道 python 开发语言 ai
PythonGradio:实现交互式图像编辑关键词:Python,Gradio,交互式图像编辑,计算机视觉,深度学习,图像处理,Web应用摘要:本文将深入探讨如何使用Python的Gradio库构建交互式图像编辑应用。我们将从基础概念开始,逐步介绍Gradio的核心功能,并通过实际代码示例展示如何实现各种图像处理功能。文章将涵盖图像滤镜应用、对象检测、风格迁移等高级功能,同时提供完整的项目实战案例
从零到一:基于差分隐私决策树的客户购买预测系统实战开发
笙囧同学
决策树 算法 机器学习
作者简介:笙囧同学,中科院计算机大模型方向硕士,全栈开发爱好者联系方式:
[email protected] 各大平台账号:笙囧同学座右铭:偷懒是人生进步的阶梯文章导航快速导航前言-项目背景与价值项目概览-系统架构与功能技术深度解析-核心算法原理️系统实现详解-工程实践细节性能评估与分析-实验结果分析Web系统开发-前后端开发部署与运维-DevOps实践完整复现指南-手把手教程️实践案例与故障排除-问
从零到一:打造基于GigaChat AI的艺术创作平台 | 笙囧同学的全栈开发实战
作者简介:笙囧同学,中科院计算机大模型方向硕士,全栈开发爱好者联系方式:
[email protected] 各大平台账号:笙囧同学座右铭:偷懒是人生进步的阶梯前言在AI技术飞速发展的今天,如何将前沿的大模型技术与实际应用相结合,一直是我们开发者关注的焦点。今天,笙囧同学将带大家从零开始,构建一个基于GigaChatAI的艺术创作平台,实现React前端+Django后端的完整全栈解决方案。这不仅仅是
如何运用深度学习打造高效AI人工智能系统
AI智能探索者
AI Agent 智能体开发实战 人工智能 深度学习 ai
如何运用深度学习打造高效AI人工智能系统关键词:深度学习、AI系统、神经网络、模型优化、实战开发摘要:本文将从深度学习的核心概念出发,结合生活实例和代码实战,系统讲解如何构建高效AI系统。我们会拆解数据准备、模型设计、训练优化、部署落地的全流程,揭秘“数据-模型-训练-推理”的协同机制,并通过具体案例演示从0到1开发AI系统的关键技巧,帮助开发者掌握打造高效AI系统的底层逻辑。背景介绍目的和范围在
开发者关心的那些事
圣子足道
ios 游戏 编程 apple 支付
我要在app里添加IAP,必须要注册自己的产品标识符(product identifiers)。产品标识符是什么?
产品标识符(Product Identifiers)是一串字符串,它用来识别你在应用内贩卖的每件商品。App Store用产品标识符来检索产品信息,标识符只能包含大小写字母(A-Z)、数字(0-9)、下划线(-)、以及圆点(.)。你可以任意排列这些元素,但我们建议你创建标识符时使用
负载均衡器技术Nginx和F5的优缺点对比
bijian1013
nginx F5
对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器。
目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡、本地/全局负载均衡、更高
LeetCode[Math] - #9 Palindrome Number
Cwind
java Algorithm 题解 LeetCode Math
原题链接:#9 Palindrome Number
要求:
判断一个整数是否是回文数,不要使用额外的存储空间
难度:简单
分析:
题目限制不允许使用额外的存储空间应指不允许使用O(n)的内存空间,O(1)的内存用于存储中间结果是可以接受的。于是考虑将该整型数反转,然后与原数字进行比较。
注:没有看到有关负数是否可以是回文数的明确结论,例如
画图板的基本实现
15700786134
画图板
要实现画图板的基本功能,除了在qq登陆界面中用到的组件和方法外,还需要添加鼠标监听器,和接口实现。
首先,需要显示一个JFrame界面:
public class DrameFrame extends JFrame { //显示
linux的ps命令
被触发
linux
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行
Android 音乐播放器 下一曲 连续跳几首歌
肆无忌惮_
android
最近在写安卓音乐播放器的时候遇到个问题。在MediaPlayer播放结束时会回调
player.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
Log.i("H
java导出txt文件的例子
知了ing
java servlet
代码很简单就一个servlet,如下:
package com.eastcom.servlet;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.Resu
Scala stack试玩, 提高第三方依赖下载速度
矮蛋蛋
scala sbt
原文地址:
http://segmentfault.com/a/1190000002894524
sbt下载速度实在是惨不忍睹, 需要做些配置优化
下载typesafe离线包, 保存为ivy本地库
wget http://downloads.typesafe.com/typesafe-activator/1.3.4/typesafe-activator-1.3.4.zip
解压r
phantomjs安装(linux,附带环境变量设置) ,以及casperjs安装。
alleni123
linux spider
1. 首先从官网
http://phantomjs.org/下载phantomjs压缩包,解压缩到/root/phantomjs文件夹。
2. 安装依赖
sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
3. 配置环境变量
vi /etc/profil
JAVA IO FileInputStream和FileOutputStream,字节流的打包输出
百合不是茶
java核心思想 JAVA IO操作 字节流
在程序设计语言中,数据的保存是基本,如果某程序语言不能保存数据那么该语言是不可能存在的,JAVA是当今最流行的面向对象设计语言之一,在保存数据中也有自己独特的一面,字节流和字符流
1,字节流是由字节构成的,字符流是由字符构成的 字节流和字符流都是继承的InputStream和OutPutStream ,java中两种最基本的就是字节流和字符流
类 FileInputStream
Spring基础实例(依赖注入和控制反转)
bijian1013
spring
前提条件:在http://www.springsource.org/download网站上下载Spring框架,并将spring.jar、log4j-1.2.15.jar、commons-logging.jar加载至工程1.武器接口
package com.bijian.spring.base3;
public interface Weapon {
void kil
HR看重的十大技能
bijian1013
提升 能力 HR 成长
一个人掌握何种技能取决于他的兴趣、能力和聪明程度,也取决于他所能支配的资源以及制定的事业目标,拥有过硬技能的人有更多的工作机会。但是,由于经济发展前景不确定,掌握对你的事业有所帮助的技能显得尤为重要。以下是最受雇主欢迎的十种技能。 一、解决问题的能力 每天,我们都要在生活和工作中解决一些综合性的问题。那些能够发现问题、解决问题并迅速作出有效决
【Thrift一】Thrift编译安装
bit1129
thrift
什么是Thrift
The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and s
【Avro三】Hadoop MapReduce读写Avro文件
bit1129
mapreduce
Avro是Doug Cutting(此人绝对是神一般的存在)牵头开发的。 开发之初就是围绕着完善Hadoop生态系统的数据处理而开展的(使用Avro作为Hadoop MapReduce需要处理数据序列化和反序列化的场景),因此Hadoop MapReduce集成Avro也就是自然而然的事情。
这个例子是一个简单的Hadoop MapReduce读取Avro格式的源文件进行计数统计,然后将计算结果
nginx定制500,502,503,504页面
ronin47
nginx 错误显示
server {
listen 80;
error_page 500/500.html;
error_page 502/502.html;
error_page 503/503.html;
error_page 504/504.html;
location /test {return502;}}
配置很简单,和配
java-1.二叉查找树转为双向链表
bylijinnan
二叉查找树
import java.util.ArrayList;
import java.util.List;
public class BSTreeToLinkedList {
/*
把二元查找树转变成排序的双向链表
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/ \
6 14
/ \
Netty源码学习-HTTP-tunnel
bylijinnan
java netty
Netty关于HTTP tunnel的说明:
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/socket/http/package-summary.html#package_description
这个说明有点太简略了
一个完整的例子在这里:
https://github.com/bylijinnan
JSONUtil.serialize(map)和JSON.toJSONString(map)的区别
coder_xpf
jquery json map val()
JSONUtil.serialize(map)和JSON.toJSONString(map)的区别
数据库查询出来的map有一个字段为空
通过System.out.println()输出 JSONUtil.serialize(map): {"one":"1","two":"nul
Hibernate缓存总结
cuishikuan
开源 ssh javaweb hibernate缓存 三大框架
一、为什么要用Hibernate缓存?
Hibernate是一个持久层框架,经常访问物理数据库。
为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。
缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。
二、Hibernate缓存原理是怎样的?
Hibernate缓存包括两大类:Hib
CentOs6
dalan_123
centos
首先su - 切换到root下面1、首先要先安装GCC GCC-C++ Openssl等以来模块:yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel2、再安装ncurses模块yum -y install ncurses-develyum install ncurses-devel3、下载Erang
10款用 jquery 实现滚动条至页面底端自动加载数据效果
dcj3sjt126com
JavaScript
无限滚动自动翻页可以说是web2.0时代的一项堪称伟大的技术,它让我们在浏览页面的时候只需要把滚动条拉到网页底部就能自动显示下一页的结果,改变了一直以来只能通过点击下一页来翻页这种常规做法。
无限滚动自动翻页技术的鼻祖是微博的先驱:推特(twitter),后来必应图片搜索、谷歌图片搜索、google reader、箱包批发网等纷纷抄袭了这一项技术,于是靠滚动浏览器滚动条
ImageButton去边框&Button或者ImageButton的背景透明
dcj3sjt126com
imagebutton
在ImageButton中载入图片后,很多人会觉得有图片周围的白边会影响到美观,其实解决这个问题有两种方法
一种方法是将ImageButton的背景改为所需要的图片。如:android:background="@drawable/XXX"
第二种方法就是将ImageButton背景改为透明,这个方法更常用
在XML里;
<ImageBut
JSP之c:foreach
eksliang
jsp forearch
原文出自:http://www.cnblogs.com/draem0507/archive/2012/09/24/2699745.html
<c:forEach>标签用于通用数据循环,它有以下属性 属 性 描 述 是否必须 缺省值 items 进行循环的项目 否 无 begin 开始条件 否 0 end 结束条件 否 集合中的最后一个项目 step 步长 否 1
Android实现主动连接蓝牙耳机
gqdy365
android
在Android程序中可以实现自动扫描蓝牙、配对蓝牙、建立数据通道。蓝牙分不同类型,这篇文字只讨论如何与蓝牙耳机连接。
大致可以分三步:
一、扫描蓝牙设备:
1、注册并监听广播:
BluetoothAdapter.ACTION_DISCOVERY_STARTED
BluetoothDevice.ACTION_FOUND
BluetoothAdapter.ACTION_DIS
android学习轨迹之四:org.json.JSONException: No value for
hyz301
json
org.json.JSONException: No value for items
在JSON解析中会遇到一种错误,很常见的错误
06-21 12:19:08.714 2098-2127/com.jikexueyuan.secret I/System.out﹕ Result:{"status":1,"page":1,&
干货分享:从零开始学编程 系列汇总
justjavac
编程
程序员总爱重新发明轮子,于是做了要给轮子汇总。
从零开始写个编译器吧系列 (知乎专栏)
从零开始写一个简单的操作系统 (伯乐在线)
从零开始写JavaScript框架 (图灵社区)
从零开始写jQuery框架 (蓝色理想 )
从零开始nodejs系列文章 (粉丝日志)
从零开始编写网络游戏 
jquery-autocomplete 使用手册
macroli
jquery Ajax 脚本
jquery-autocomplete学习
一、用前必备
官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
当前版本:1.1
需要JQuery版本:1.2.6
二、使用
<script src="./jquery-1.3.2.js" type="text/ja
PLSQL-Developer或者Navicat等工具连接远程oracle数据库的详细配置以及数据库编码的修改
超声波
oracle plsql
在服务器上将Oracle安装好之后接下来要做的就是通过本地机器来远程连接服务器端的oracle数据库,常用的客户端连接工具就是PLSQL-Developer或者Navicat这些工具了。刚开始也是各种报错,什么TNS:no listener;TNS:lost connection;TNS:target hosts...花了一天的时间终于让PLSQL-Developer和Navicat等这些客户
数据仓库数据模型之:极限存储--历史拉链表
superlxw1234
极限存储 数据仓库 数据模型 拉链历史表
在数据仓库的数据模型设计过程中,经常会遇到这样的需求:
1. 数据量比较大; 2. 表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等; 3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态, 比如,查看某一个用户在过去某一段时间内,更新过几次等等; 4. 变化的比例和频率不是很大,比如,总共有10
10点睛Spring MVC4.1-全局异常处理
wiselyman
spring mvc
10.1 全局异常处理
使用@ControllerAdvice注解来实现全局异常处理;
使用@ControllerAdvice的属性缩小处理范围
10.2 演示
演示控制器
package com.wisely.web;
import org.springframework.stereotype.Controller;
import org.spring