Jenkins入门手册

news2024/11/19 1:24:48

目录

第一章、Jenkins是什么?

1、Jenkins的由来

1.1 、Jenkins 的目标

第二章、Jenkins安装与配置

2、Jenkins 安装

3、Jenkins 配置

3.1    系统管理

3.1.1 、提示信息

3.1.1.1 、Utf-8 编码

3.1.1.2 、新的版本

3.1.1.3、安全设置

3.1.2、系统设置

3.1.2.1、 JDK、Maven、Ant 配置

3.1.2.2、邮件通知配置

3.1.2.2.1、配置发件人地址

3.1.2.2.2、配置邮件通知 ​编辑

3.1.2.3、 Subvers i on 配置

3.1.3 、Configure Global Security(安全设置)

3.1.4 、管理用户设置

3.1.5 、管理插件设置

3.2、项目构建设置

3.2.1、构建自由风格的Job

3. 2.1.1、新建自由风格构建任务

3.2.1.2、构建任务配置

3.2.1.2.1、源码管理配置

3.2.1.2.2 、构建触发器

3.2.1.2、 Ant构建配置

3.2.2、构建Maven风格的Job

3. 2. 2.1、新建Maven构建任务​编辑

3. 2. 2. 2、构建任务配置​编辑

3.2.2.2.1、源码管理配置

3.2.2.2.2、构建触发器

3.2.2.2.3、Maven构建设置​编辑

3.2.2.2.4、构建maven项目的心得

3.2.3、 邮件通知设置

3.2.4、War文件部署设置

3.3、监控

4、Jenkins 插件

4.1 、Jenkins插件安装

4. 2、Jenkins插件安装示例


第一章、Jenkins是什么?

Jenkins是一个可扩展的持续集成引擎。
主要用于:
•    持续、自动地构建/测试软件项目。
•    监控一些定时执行的任务。
Jenkins拥有的特性包括:
•    易于安装-只要把jenkins. war部署到servlet容器,不需要数据库支持。
•    易于配置-所有配置都是通过其提供的web界面实现。
•    集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
•    生成JUnit/TestNG测试报告。
•    分布式构建支持Jenkins能够让多台计算机一起构建/测试。
•    文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
•    插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。

1、Jenkins的由来

目前持续集成(ci)己成为当前许多软件开发团队在整个软件开发生命周期内侧重于保 证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您 的开发团队应对如下挑战:
•    软件构建自动化:配置完成后,ci系统会依照预先制定的时间表,或 者针对某一特定事件,对目标软件进行构建。
•    构建可持续的自动化检查:CI系统能持续地获取新增或修改后签入的 源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的 代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构 建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费 的时间和精力(说直接一点也是钱啊,呵呵)。
•    构建可持续的自动化测试:构建检查的扩展部分,构建后执行预先制定 的一套测试规则,完成后触发通知(Email, RSS等等)给相关的当事人。
•    生成后后续过程的自动化:当自动化检查和测试成功完成,软件构建的 周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构 件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户 使用。
部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包 含构建脚本的项目。
下图概括了 CI系统的基本结构:

图1 CI系统的基本结构

该系统的各个组成部分是按如下顺序来发挥作用的:
1    .开发者检入代码到源代码仓库.
2    . CI系统会为每一个项目创建了一个单独的工作区.当预设或请求一次新的构建时, 它将把源代码仓库的源码存放到对应的工作区.
3    . CI系统会在对应的工作区内执行构建过程。
4    .(配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试. 完成后触发通知(Email, RSS等等)给相关的当事人。
5    .(配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用 服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也 可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、SourceForge之类的 网站。
6    . CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些 构建好的构件。
Jenkins就是这么一个CI系统。之前叫做Hudsono
以下是使用Jenkins的一些理由:
•    是所有CI产品中在安装和配置上最简单的。
•    基于肥b访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了 AJAX 的即时反馈.
•    Jenkins是基于Java开发的(如果你是一个Java开发人员,这是非常有用的),但 它不仅限于构建基于Java的软件。
•    Jenkins拥有大量的插件。这些插件极大的扩展了 Jenkins的功能:它们都是开源 的,而且它们可以直接通过web界面来进行安装与管理.


1.1 、Jenkins 的目标

Jenkins的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。
CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时, 它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员, 然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。
特别是它具有以下优点:
•    Jenkins 一切配置都可以在web界面上完成。有些配置如MAVEN JOIE和Email,只需要 配置一次,所有的项目就都能用。当然也可以通过修改XML进行配置。
•    支持Maven的模块(Module), Jenkins对Maven做了优化,因此它能自动识别Module, 每个Module可以配置成一个job。相当灵活。
•    测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他CI, 这几乎是件不可能完成的任务。
•    构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需 任何配置就可以方便的浏览下载。


第二章、Jenkins安装与配置

2、Jenkins 安装

在最简单的情况下,Jenkins只需要两个步骤:
1    .下载最新的版本(一个WAR文件)。Jenkins官方网址:http://Jenkins~ci.org/
2    .运行 java -jar jenkins. war
注意:Jenkins需要运行Java 5以及以上的版本。
还有一种安装方式就是将下载的war包文件部署到servlet容器,然后启动容器,在浏 览器的URL地址栏中输入类似http://k)calhost:8080/ienkins/这样的地址即可。下图是安装成 功后的界面(使用的是Linux+Tomcat6+Java6环境):

图2 Jenkins主界面 

3、Jenkins 配置

写在配置前的一些话:Jenkins的配置不可能全部都说到的,大部分配置是有英文说明的, 点击输入框后面的问号就可以看见了。英文不会用翻译工具,连蒙带猜的,多测试几次,你 就懂了。


3.1    系统管理

在己运行的Jenkins主页中,点击左侧的系统管理进入如下界面:


图3 Jekins系统管理

3.1.1 、提示信息

Ps:版本不同提示的消息有可能不同


3.1.1.1 、Utf-8 编码

Your container doesn't use UTF-8 to decode URLs. If you use non-ASCII characters as a job name etc, this will cause problems. See Containers : and Tomcat il8n for more details.
Jenkins建议在tomcat中使用ut&8编码,配置tomcat下conf目录的server.xml文件:

图4 URIEncoding编码设置

Ps:如果Job的控制台中文输出乱码,请将URIEncoding="utf-8"更改为 useBodyEncodingForURI="true"


3.1.1.2 、新的版本

New version of Jenkins (1.518.JENKINS-14362-jzlib) is available fc download f changelog j.
提示有新的版本可以下载了,喜欢更新的点击download去下载吧!


3.1.1.3、安全设置


图5安全提示消息

詹金斯允许网络上的任何人代表您启动进程。考虑至少启用身份验证来阻止滥用。点击 Dismiss忽略该消息,点击Setup Security进入设置界面.详细设置请参考Configure Global Security(安全设置)章节


3.1.2、系统设置

在己运行的Jenkins主页中,点击左侧的系统管理—>系统设置进入如下界面:

图6 系统设置界面

3.1.2.1、 JDK、Maven、Ant 配置

配置一个JDK、Ant、Maven实例,请在每一节下面单击Add(新增)按钮,这里将添加实例 的名称和绝对地址。下图描述了这两个部分。

图7 JDK配置界面

JDK别名:给你看的,随便你自己,叫阿猫阿狗都可以
JAVA_HOME:这个是本机JDK的安装路径(错误的路径会有红字提示你的)
自动安装:不推荐这个选项
后面Ant与Maven的配置是一样的,JDK去oracle官网下载,Ant与Maven去apache官网下载
Ps:每个文本框后面都有个问号,点击问号就会出现帮助信息


3.1.2.2、邮件通知配置
3.1.2.2.1、配置发件人地址

图8发件人地址配置界面


System Admin e-mail address: Jenkins邮件发送地址,如果你这个没有配置,等着发邮件的时候报 错吧,当时我也是这儿没有配置,郁闷了我一周的时间。

3.1.2.2.2、配置邮件通知
 

图9邮件通知

这个就非常的简单了,根据的的邮箱提供者的参数配置就行了。
Ps:小技巧:用户默认邮件后缀配置了后,以后你填写邮件地址只需要@之前的就行了


3.1.2.3、 Subvers i on 配置


图 10 Subversion 配置

Subversion Workspace Version: Subversion的版本号,选择你对应的版本号就行了


3.1.3 、Configure Global Security(安全设置)

在已运行的Jenkins主页中,点击左侧的系统管理—>Configurc Global Security进入如 下界面:

设置如上图,保存后系统管理中就出现管理用户的选项。页面右上角也会出现登录/注册的 选项。


3.1.4 、管理用户设置

在右上角点击注册


图12 注册用户界面


点击sign up按钮,提示你现在已经登录.返回首页.
登录后和匿名账号看到的首页有几点不同,如下图红框所示:

图13用户登录界面


3.1.5 、管理插件设置

建议先阅读Jenkins插件章节,在回来安装如下所示的插件。这个插件将生成的构件(war 或者ear)部署到主流的服务器上。
插件名称:DeplQv Plugin
插件介绍:This plugin takes a war/ear file and deploys that to a running remote application server at the end of a build


3.2、项目构建设置

3.2.1、构建自由风格的Job
3. 2.1.1、新建自由风格构建任务

在已运行的Jenkins主页中,点击左侧的新建Job进入如下界面:

图14 新建Job界面

这时,需要为新的构建任务指定一个名称。(这里输入的任务名称;Ant_test)这里有几种的任务类型可供选择,鉴于初步介绍,先选择构建一个自由风格的软件项目,对于其他类型,经常使用的是拷贝已存在任务,这主要为了能在现有的任务基础上新建任务,点击OK按钮。


3.2.1.2、构建任务配置
3.2.1.2.1、源码管理配置

演示是使用Subversion的链接,在Repository URL中输入你的项目链接,如果没有权限则会提示 如下图:

图15 Subversion配置界面


点击enter credential输入用户名和密码(我猜大家一般都是使用的用户名和密码登陆的)

图16 Subversion权限认证界面


Ps: svn的用户名和密码设置了是没有办法在web界面修改的。如果要修改则先去Jenkins 目录删除hudson.scm.SubversionSCM.xml文件(点到为止,毕竟这只是入门教程)


3.2.1.2.2 、构建触发器

在其他项目构建完成后才执行构建:指定的项目完成构建后,触发此项目的构建。
Poll SCM :这是CI系统中常见的选项。当您选择此选项,您可以指定一个定时作业表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次 构建。例如,表达式中填写0,15,30,45 ****将使Jenkins每隔15分钟就检查一次您源码仓 库的变化。
Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不 管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很有帮助。


3.2.1.2、 Ant构建配置

因为我的项目是用ant脚本实现的编译和打包,所以我选择的是Invoke Ant, Ant Version选 择你Ant配置的那个名字,注意不要选择default喔,那个选择了没有用。

图17 Ant构建配置界面

如果你的构建脚本build.xml不在workspace根目录、或者说你的构建脚本不叫build.xmL那么需要
在高级里设置Build File选项的路径,指明你的脚本。注意:是相对路径
 

3.2.2、构建Maven风格的Job
3. 2. 2.1、新建Maven构建任务

图18新建Job界面

这时,需要为新的构建任务指定一个名称。(这里输入的任务名称为:mavenjest)这里有 几种的任务类型可供选择,鉴于初步介绍,先选择构建一个maven2/3项目。对于其他的类 型,经常使用的是拷贝已存在任务;这主要为了能在现有的任务基础上新建任务。点击0K按钮。


3. 2. 2. 2、构建任务配置

图19构建任务配置界面


3.2.2.2.1、源码管理配置

演示是使用Subversion的链接,在Repository URL中输入你的项目链接,如果没有权限则会提示 如下图:


图20 Subversion配置界面

点击enter credential输入用户名和密码(我猜大家一般都是使用的用户名和密码登陆的)

图21 Subversion权限认证界面

Ps: svn的用户名和密码设置了是没有办法在web界面修改的。如果要修改则先去Jenkins 目录删除hudson.scm.SubversionSCM.xml文件(点到为止,毕竟这只是入门教程)


3.2.2.2.2、构建触发器

在其他项目构建完成后才执行构建:指定的项目完成构建后,触发此项目的构建。
Poll SCM :这是CI系统中常见的选项。当您选择此选项,您可以指定一个定时作业 表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次 构建。例如,表达式中填写0,15,30,45 ****将使Jenkins每隔15分钟就检查一次您源码仓 库的变化。
Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不 管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很有帮助。


3.2.2.2.3、Maven构建设置

图22 Maven构建配置界面


2013-08-22 ^b^E Goals and options : clean install -Dmaven.test.skip=true    #加入了跳过测
试的代码
Root POM:填写你项目的pom.xml文件的位置,注意:是相对位置,如果该文件不存在,会有红色字提 示。


3.2.2.2.4、构建maven项目的心得

使用Jenkins构建maven项目的一点小心得:
maven项目的构建是比较麻烦的,如果你的项目是下图这种结构。那么恭喜你!你新建一个job就可以 了,因为只有一个根。如果你的 svn 地址是:https://192.xxx/Pe_Project/root-pom,那么 Root POM 只需要保持默认就行了,因为Jenkins可以再workspace目录下面找到pom.xml文件
如果你的 svn 地址是:https://192.xxx/Pe_Project,那么 Root POM 需要指定为 root-pom/pom.xml,因为 Jenkins可以再workspace/root-pom目录下面找到pom.xml文件

图23 Maven项目结构界面1


上面这种方法打包的时候非常简单,但是用eclipse开发的时候你就不右键run as —>tomca 启动了,如果你想使用这种方式,将tomcat换成jetty即可。
如果你的项目是下图这种结构,那么非常悲剧的告诉你,你要建立好几个job来构建这一个项目,因为这个项目有4个根:


图24 Maven项目结构界面2

上面这种方法打包的时候比较麻烦,但是用eclipse开发的时候你就可以使用右键run as->tomca 启动了


3.2.3、 邮件通知设置

图26收件人列表界面

在Recipients中输入收件人邮件地址,如果用多个收件人用“,”英文逗号隔开


3.2.4、War文件部署设置

首先你必须安装好Deploy Plugin插件,然后在tomcat的conf目录配置tomcat-users.xml 文件,在<tomcat-users>节点里添加如下内容:

<role rolename=,'manager-gui"/>


<role rolename=,'manager-script"/>
<role rolename=,'managerjmx'7>
<role rolename=,'manager-status"/>
<user username="usernameM password="password,'
roles="manager-gui,manager-script,manager-jmx,manager-status'7>

引号里的username和password可以随便替换,待会要用的。 好了,回到Jenkins项目配置页面:

图27构建后操作界面


选择 Add post-build action,然后选择 Deploy war/ear to a container,如下图:

图28远程部署配置界面

WAR/EAR files: war文件的存放位置,如:target/test.war注意:相对路径,target前是没有/的。 Context path:访问时需要输入的内容,如 ofCard 访问时如下:http:〃192.168.x.x:8080/ofCard/ 如果为空,默认是war包的名字。
Container:选择你的 web 容器,如 tomca6.x
Manager user name:填入 tomcat-users.xml 配置的 username 内容
Manager password:填入 tomcat-users.xml 配置的 password 内容
Tomcat URL:填入 http:〃192.168.x.x:8080/
Deploy on failure:构建失败依然部署,一般不选择
注意:虽然这种部署方法可能会导致tomcat加载时出现卡死的现象。但是也是最简单的部署方式。如果 卡死了重启下就好了,将tomcat的java内存参数调高可以解决这个问题。
最后不要忘记点击保存喔。
好了!到此一个项目的获取源码,打包,远程部署,邮件通知就完成了。


3.3、监控

当任务一旦运行,您将会看到这个任务正在队列中的仪表板和当前工作主页上运行。这 两种显示如下。

图29主页监控(左),项目监控(右)


一旦构建完成后,完成后的任务将会有三个地方进行显示。 你可以在Jenkins的控制面板上看到它,如下图。

图30主页项目界面

在上面展示的截图中,您将注意到有两个图标描述当前作业的状态。S栏目代表着"最新构 建状态”,W栏目代表着"构建稳定性”。Jenkins使用这两个概念来介绍一个作业的总体状 况:
构建状态:下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态:

Successful:完成构建,且被认为是稳定的。
Unstable:完成构建,但被认为不稳定。
Failed:构建失败。
Disabled:构建己禁用。

图31构建状态界面

构建稳定性:当一个Job中构建己完成并生成了一个未发布的目标构件,如果您准备评估此 次构建的稳定性,Jenkins会基于一些后处理器任务为构建发布一个稳健指数(从0T00 ), 这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和 静态代码分析(FindBugs)。分数越高,表明构建越稳定。下图中分级符号概述了稳定性的评 分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。

图33项目主界面

你也可以在当前job主界面看到它,如下图左下部分:

图33 项目主界面

当前作业主页上还包含了一些有趣的条目。左侧栏的链接主要控制Job的配置、删除作 业、构建作业。右边部分的链接指向最新的项目报告和构件。
通过点击构建历史(Build History)中某个具体的构建链接,您就能跳转到Jenkins为这 个构建实例而创建的构建主页上。如下图


图34构建历史界面

如果你想通过视图输出界面来监控当前任务的进展情况。你可以单击Console Output (控制 台输出)。如果工作己完成,这将显示构建脚本产生的静态输出;如果作业仍然在运行中, Jenkins将不断刷新网页的内容,以便您可以看到它运行时的输出。如下图:

图35控制台输出界面


4、Jenkins 插件

从Jenkins现有的功能扩展或开发者们为Jenkins提供的新功能都可以称之为Jenkins 插件。有些插件可以无缝添加到您的构建过程,而其它,诸如除CVS和Subversion的SCM 插件则需要源代码控制系统的支持。


4.1 、Jenkins插件安装

Jenkins插件管理器允许您安装新的插件,和更新您Jenkins服务器上的插件。管理者 将连接到联机资料库,检索可用的和己更新的插件。如果您的Jenkins服务器无法直接连 接到外部资源,您可以从Jenkins网站上下载。
在己运行的Jenkins主页中,点击左侧的系统管理—>管理插件进入如下界面:

图36插件管理界面

它包含四个标签:
更新:清单中列示了 Jenkins为某些插件搜索到了可用的更新。列出的每个插件可以被选择 并应用更新。
可选安装:清单中列示了可用于安装(而不是目前己安装的)的所有插件。列出的每个插件 都可以被选择并安装。
已安装:清单中列示了己经安装的插件。
高级:允许您通过设定HTTP代理的方式使Jenkins与在线插件库建立连接。此外,还提供了 一个上传设备,可以安装你在Jenkins以外已下载的那些插件。
由上图可知,Jenkins缺省集成了 maven2插件,并且一旦插件有新版本,会提示更新新 版本插件。
如果想安装新的插件,可以点击tab分页中的可选插件。如下图:


从图可知,各种Jenkins插件根据之前所记述的类型进行分门别类。可勾选任意想安装的Jenkins插件,点击Install without restart按钮进行安装。安装后,所有插件以hpi作 为后缀名放置在plugins文件夹下。如果是高级用户还可以自行开发插件方便具体项目使用。 注意:安装完成后需要重启Jenkins部署的容器。这样才能使用新装的插件。


4. 2、Jenkins插件安装示例

Jenkins运行自动部署war包到servlet容器内,要实现这个功能必须安装一个插件。

图38 安装插件界面 

安装/升级插件:

 图39 插件安装界面

好了,至此Deploy Plugin插件安装完成!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go语言深度优先搜索(DFS)

Go 语言代码段实现了深度优先搜索&#xff08;DFS&#xff09;算法&#xff0c;该算法用于遍历图数据结构。以下是代码的主要要点和执行流程的总结&#xff1a; 深度优先搜索函数 (DFS): 接收图的邻接表 (map[int][]int)、访问记录 (map[int]bool) 和当前节点作为参数。将当前…

go sort.Search()

函数 func Search(n int, f func(int) bool) int {} 函数作用 通过二分法查找&#xff0c;找到已经排序好的数组[0,n)中第一个使f为true的索引&#xff0c;如果没有找到返回n 为什么要用二分查找&#xff1f; 因为二分查找相比普通依次遍历而言&#xff0c;速度能有巨幅提升…

延时消息+递归导致重复消费爆炸问题

背景 公司所用消息队列为RoucketMQ&#xff0c;版本为4.x。最近公司有业务需要&#xff0c;将某个处理延迟到第二天的白天再进行。由于4.x版本队列&#xff0c;默认延时时间是按等级来延时的&#xff0c;默认有18个等级&#xff0c;如下图&#xff1a; 默认的延时等级&#xff…

我对迁移学习的一点理解(系列2)

文章目录 我对迁移学习的一点理解 我对迁移学习的一点理解 源域和目标域是相对的概念&#xff0c;指的是在迁移学习任务中涉及到的两个不同的数据集或领域。 源域&#xff08;Source Domain&#xff09;通常指的是已经进行过训练和学习的数据集&#xff0c;它被用来提取特征、…

盒马补贴量价-2021KDD

概述&#xff1a; 电商商品定价三个关键问题&#xff1a; 在只有观测数据的时候&#xff0c;怎么构建价格弹性&#xff0c;现在来看这就是一个反事实推断的问题&#xff0c;不仅是如何做的问题&#xff0c;还有如何评估的问题。长周期的规划决策问题怎么建模 & 求解&#…

基于状态机的单片机编程

前言 在设计锂离子电池充电器时&#xff0c;对于以前的根据系统状态进行判断&#xff0c;置标志位的方法&#xff0c;会显得程序臃肿&#xff0c;且架构混乱&#xff0c;变量交错复杂&#xff0c;移植困难。 所以结合实际项目&#xff0c;给出了一种基于状态机的编程方法。 …

线程上下文切换

线程上下文切换 巧妙地利用了时间片轮转的方式, CPU 给每个任务都服务一定的时间&#xff0c;然后把当前任务的状态保存下来&#xff0c;在加载下一任务的状态后&#xff0c;继续服务下一任务&#xff0c;任务的状态保存及再加载, 这段过程就叫做上下文切换。时间片轮转的方式…

对String类的操作 (超细节+演示)

[本节目标] 1.认识String类 2.了解String类的基本用法 3.熟练掌握String类的常见操作 4.认识字符串常量池 5.认识StringBuffer和StringBuilder 1.String类的重要性 在C语言中已经涉及到字符串了&#xff0c;但是在C语言中要表示字符串只能使用字符数组或者字符指针&…

差异计算基础知识 - 了解期末业务操作、WIP 和差异

原文地址&#xff1a;Basics of variance calculation-Understanding Period End activities, WIP and Variances | SAP Blogs 大家好&#xff0c; 这是我在成本核算方面的第六份文件&#xff0c;旨在解释期末的差异计算和相关活动。 我将引导您完成期末活动和差异计算。在本文…

Spring Cloud Gateway 网关的基础使用

1. 什么是网关&#xff1f;网关有什么用&#xff1f; 在微服务架构中&#xff0c;网关就是一个提供统一访问地址的组件&#xff0c;它解决了内部微服务与外部的交互问题。网关主要负责流量的路由和转发&#xff0c;将外部请求引到对应的微服务实例上。同时提供身份认证、授权、…

前后端数据传输格式(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 上篇主要复习了HTTP以及…

解释AI决策,这10个强大的 Python 库记得收藏!

本文整理了10个常用于可解释AI的Python库&#xff0c;方便我们更好的理解AI模型的决策。 什么是XAI&#xff1f; XAI&#xff08;Explainable AI&#xff09;的目标是为模型的行为和决策提供合理的解释&#xff0c;这有助于增加信任、提供问责制和模型决策的透明度。XAI 不仅…

鸿蒙生态开发就业前景到底好不好

鸿蒙生态开发是指基于华为自主研发的操作系统鸿蒙&#xff08;HarmonyOS&#xff09;进行应用程序开发和生态建设。目前&#xff0c;鸿蒙生态开发的前景非常好&#xff0c;原因如下&#xff1a;做鸿蒙应用开发到底学习些啥&#xff1f; (qq.com) 1&#xff1a;政府支持&#x…

高德地图vue实现自定义标点热力图效果(缩放时展示不同数据)

高德地图插件引入省略。。。样式和vue基础组件省略。。。 如果每个标点没有数值&#xff0c;则可以用点聚合来实现功能下面例子&#xff0c;每个标点会有按市统计的数值&#xff0c;而且缩放一定程度时&#xff0c;需要展示按省统计的标点&#xff0c;因此需要自定义标点样式和…

Ubuntu中编译出Windows的可执行程序(.exe)

1、前言 在嵌入式开发中&#xff0c;交叉编译是很常见的情况&#xff0c;如果你把Windows电脑也看做一块高性能的开发板&#xff0c;那在Ubuntu中编译出Windows上运行的可执行程序也是很好理解的行为。 2、安装mingw64环境 sudo apt-get install mingw-w64 3、测试编译链是否安…

特权FPGA 学习笔记

存储器可用于异步时钟域的信号处理&#xff0c;双口RAM多用于交互式数据&#xff0c;FIFO多用于单向数据传输&#xff1b;以task的方式封装testbench子程序&#xff0c;以提高复用程度&#xff1b;模板中&#xff0c;vho是vhdl模板&#xff0c;veo是verilog模板&#xff1b;run…

第七届中老越三国丢包狂欢节暨2023年中老越三国(普洱)边境商品交易会新闻发布会在昆明召开

12月8日&#xff0c;第七届中老越三国丢包狂欢节暨2023年中老越三国&#xff08;普洱&#xff09;边境商品交易会新闻发布会在昆明召开。据悉&#xff0c;本届丢包节暨边交会将于2023年12月22日至26日在普洱市江城哈尼族彝族自治县举办。 发布会现场 中老越三国丢包狂欢节自200…

解决 php 连接mysql数据库时报错:Fatal error: Class ‘mysqli’ not found in问题

在使用php对mysql进行连接的过程中&#xff0c;出现了Fatal error: Uncaught Error: Class "mysqli" not found in的问题 解决方案 这个错误通常表示您的PHP代码中缺少MySQL扩展或者没有启用MySQL扩展。 我们首先确认一下PHP环境中已经安装了MySQL扩展。检查一下自己…

v4l2接收流程

内核media驱动目录结构 目录media/driver,子目录说明如下&#xff0c;主要列举本文中使用到的目录 目录功能I2C摄像头&#xff0c;解串器&#xff08;max9296/9295等&#xff09;platform控制器的驱动&#xff0c;例如mipi控制等v4l2_coreioctl 入口等media\common\videobuf2…

哈希表的几种实现方式与比较

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 哈希表概述 哈希表&#xff08;Hash Table&#xff09;是一种常用的数据结构&#xff0c;用于实现键值对的映射关系。它通过哈希函数将键映射到一个特定的索引位置&#xf…