sso集成shiro_Keycloak SSO集成到jBPM和Drools Workbench中

sso集成shiro

介绍

单一登录(SSO)和相关令牌交换机制正在成为Web上不同环境中身份验证和授权的最常见方案,尤其是在迁移到云中时。

本文讨论了Keycloak与jBPM或Drools应用程序的集成,以便使用Keycloak上提供的所有功能。 Keycloak是用于浏览器应用程序和RESTful Web服务的集成SSO和IDM。 在Keycloak的主页上进一步了解它。

与Keycloak集成的结果具有许多优势,例如:

  • 为包括jBPM和Drools工作台在内的不同客户提供集成的SSO和IDM环境
  • 社交登录–使用您的Facebook,Google,Linkedin等帐户
  • 用户会话管理
  • 以及更多…

下一节将介绍Keycloak的以下集成点:

  • 通过Keycloak服务器进行工作台身份验证 :它基本上包括通过Keycloak SSO保护Web客户端和远程服务客户端。 因此,无论是Web界面还是远程服务使用者(无论是用户还是服务)都将通过KC进行身份验证。
  • 通过Keycloak服务器执行服务器认证 :包括保护执行服务器提供的远程服务(因为它不提供Web界面)。 任何远程服务使用者(无论是用户还是服务)都将通过KC进行身份验证。
  • 消费远程服务 :本节描述第三方客户端如何使用由Workbench和Execution Server提供的远程服务端点。

情境

将下图视为本文示例的环境:

KeyCloak +方法

示例场景

Keycloak是一个独立的过程,可提供远程身份验证,授权和管理服务,这些服务可能会被一个或多个jBPM应用程序通过网络使用。

考虑以下用于构建此环境的主要步骤:

  • 安装和设置Keycloak服务器
  • 为此示例创建和设置领域-配置领域的客户端,用户和角色
  • 安装和设置SSO客户端适配器和jBPM应用程序

笔记:

  • 最终的环境和本文的不同配置均基于jBPM(KIE)工作台,但是相同的环境也可以应用于KIE Drools工作台。
  • 本示例使用最新的6.4.0.CR2社区发行版

步骤1 –安装和设置Keycloak服务器

Keycloak提供了广泛的文档以及有关在不同环境中进行安装的几篇文章。 本节介绍了用于构建示例的集成环境的最小设置。 如果需要更多信息,请参考Keycloak文档 。

以下是最小化Keycloak安装和设置的步骤:

  1. 从下载部分下载最新版本的Keycloak。 本示例基于Keycloak 1.9.0.Final。
  2. 将下载的Keycloak发行版解压缩到一个文件夹中,我们将其称为$KC_HOME
  3. 运行KC服务器–此示例基于在同一主机上同时运行Keycloak和jBPM。 为了避免端口冲突,可以将Keycloak服务器的端口偏移量用作:
    $KC_HOME/bin/standalone.sh -Djboss.socket.binding.port-offset=100
  4. 创建Keycloak的管理用户–执行以下命令以创建此示例的管理员用户:
    $KC_HOME/bin/add-user.sh -r master -u 'admin' -p 'admin'

Keycloak管理控制台将位于http:// localhost:8180 / auth / admin (使用admin / admin作为登录凭据)。

第2步–创建并设置演示领域

安全领域用于限制对不同应用程序资源的访问。

Keycloak服务器运行之后,下一步就是创建领域。 该领域将为jBPM应用程序提供不同的用户,角色,会话等。

Keycloak提供了几个领域创建和管理的示例 ,从官方示例到带有更多示例的不同文章。

您可以手动创建领域,也可以仅导入给定的json文件。

逐步创建领域

请按照以下步骤操作,以创建本文稍后使用的演示领域:

  1. 转到Keycloak 管理控制台 ,然后单击“ 添加领域”按钮。 给它命名为demo
  2. 转到“客户端”部分(从管理控制台主菜单),然后为演示领域创建一个新客户端:
    • 客户编号: kie
    • 客户端协议: openid-connect
    • 访问类型: 机密
    • 根URL: http:// localhost:8080
    • 基本网址: /kie-wb-6.4.0.Final
    • 重定向URI: /kie-wb-6.4.0.Final/*

生成的kie客户端设置屏幕:

KIE客户端的设置

KIE客户端的设置

注意 :如您在上述设置中所看到的,它被认为是应用程序上下文路径的值kie-wb-6.4.0.Final 。 如果将jbpm应用程序部署在其他上下文路径,主机或端口上,请在此处使用您的具体设置。

能够使用jBPM工作台中的演示领域的最后一步是创建应用程序的用户和角色:

  • 转到“角色”部分,并创建角色adminkiemgmtrest-all
  • 转到“用户”部分并创建管理员用户。 在“凭据”选项卡中将密码设置为“ password”,然后取消设置临时开关。
  • 在“用户”部分中,导航到“ 角色映射”选项卡,然后将admin, kiegmmtrest-all角色分配给admin用户
admin_user_roles

管理员用户的角色映射

导入演示领域

两者都导入:

  • 演示领域–单击“ 添加领域”并使用demo-realm.json文件
  • 领域用户–导入演示领域后,在主菜单中单击“ 导入” ,然后使用demo-users-0.json文件作为导入源

此时,Keycloak服务器正在主机上运行,​​并使用最小配置集进行设置。 让我们转到jBPM工作台设置。

步骤3 –安装和设置jBPM工作台

对于本教程,让我们将Wildfly用作jBPM工作台的应用程序服务器,就像jBPM安装程序默认情况下那样。

让我们假设,在运行jBPM安装程序之后,将$ JBPM_HOME作为已部署应用程序的Wildfly服务器的根路径。

步骤3.1 –安装KC适配器

为了使用jBPM应用程序中的Keycloak身份验证和授权模块,必须在$ JBPM_HOME的服务器上安装用于Wildfly的Keycloak适配器 。 Keycloak开箱即用为不同容器提供了多个适配器,如果您正在使用另一个容器或需要使用另一个适配器,请查看Keycloak文档中的适配器配置 。 以下是安装和设置Wildfly 8.2.x适配器的步骤:

  1. 从此处下载适配器
  2. 执行以下命令:
    cd $JBPM_HOME/
    unzip keycloak-wf8-adapter-dist.zip // Install the KC client adaptercd $JBPM_HOME/bin
    ./standalone.sh -c standalone-full.xml // Setup the KC client adapter.// ** Once server is up, open a new command line terminal and run:
    cd $JBPM_HOME/bin
    ./jboss-cli.sh -c --file=adapter-install.cli

步骤3.2 –配置KC适配器

将KC适配器安装到Wildfly中后,下一步是配置适配器,以指定不同的设置,例如身份验证服务器的位置,要使用的领域等。

Keycloak提供了两种配置适配器的方法:

  • 每个WAR配置
  • 通过Keycloak子系统

在此示例中,我们使用第二个选项,使用Keycloak子系统,因此我们的WAR不受此类设置的影响。 如果要使用per WAR方法,请在此处查看 。

编辑配置文件$ JBPM_HOME / standalone / configuration / standalone-full.xml并找到子系统配置部分。 添加以下内容:

<subsystem xmlns="urn:jboss:domain:keycloak:1.1"><secure-deployment name="kie-wb-6.4.0-Final.war"><realm>demo</realm><realm-public-key>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Q3RNbrVBcY7xbpkB2ELjbYvyx2Z5NOM/9gfkOkBLqk0mWYoOIgyBj4ixmG/eu/NL2+sja6nzC4VP4G3BzpefelGduUGxRMbPzdXfm6eSIKsUx3sSFl1P1L5mIk34vHHwWYR+OUZddtAB+5VpMZlwpr3hOlfxJgkMg5/8036uebbn4h+JPpvtn8ilVAzrCWqyaIUbaEH7cPe3ecou0ATIF02svz8o+HIVQESLr2zPwbKCebAXmY2p2t5MUv3rFE5jjFkBaY25u4LiS2/AiScpilJD+BNIr/ZIwpk6ksivBIwyfZbTtUN6UjPRXe6SS/c1LaQYyUrYDlDpdnNt6RboQIDAQAB</realm-public-key><auth-server-url>http://localhost:8180/auth</auth-server-url><ssl-required>external</ssl-required><resource>kie</resource><enable-basic-auth>true</enable-basic-auth><credential name="secret">925f9190-a7c1-4cfd-8a3c-004f9c73dae6</credential><principal-attribute>preferred_username</principal-attribute></secure-deployment>
</subsystem>

如果您在第2步中从本文中导入了示例json文件,则可以通过使用具体的部署名称来使用与上述相同的配置。 否则,请使用您的值进行以下配置:

  • 安全部署的名称 –使用具体应用程序的WAR文件名
  • 领域 –是应用程序将使用的领域,在我们的示例中,是在步骤2中创建的演示领域。
  • 领域公钥 –在此提供演示领域的公钥。 这不是强制性的,如果未指定,将从服务器中检索它。 否则,您可以在Keycloak管理控制台->领域设置(用于演示领域)->密钥中找到它
  • 身份验证服务器URL – Keycloak身份验证服务器的URL
  • 资源 –在步骤2中创建的客户端的名称。在我们的示例中,使用值kie
  • 启用基本身份验证 –在此示例中,我们还启用基本身份验证机制,因此客户端可以同时使用令牌(Baerer)和基本方法来执行请求。
  • 凭据 –使用kie客户端的密码值。 您可以在Keycloak管理控制台->客户端-> kie->凭据选项卡->复制密钥值中找到它。

对于此示例,您必须注意将您的具体值用于安全部署名称realm-public-key凭据密码。 您可以在此处找到有关KC适配器配置的详细信息。

步骤3.3 –运行环境

此时,Keycloak服务器已在主机上启动并运行,并且已为jBPM应用程序服务器安装并配置了KC适配器。 您可以使用以下命令运行该应用程序:

$JBPM_HOME/bin/standalone.sh -c standalone-full.xml

服务器启动后,您可以导航到该应用程序: http:// localhost:8080 / kie-wb-6.4.0.Final

jbpm_login_screen

jBPM和SSO –登录页面

使用Keycloak的管理员用户凭据登录: admin / password

通过Keycloak保护工作台远程服务

jBPM和Drools工作台都提供了不同的远程服务端点,第三方客户端可以使用远程API来使用这些端点。

为了通过Keycloak验证这些服务,必须禁用BasicAuthSecurityFilter ,对jBPM的WAR文件中的WEB-INF / web.xml文件(应用程序部署描述符)进行那些修改:

  1. 卸下过滤器:
    < filter >
    <filter-name>HTTP Basic Auth Filter</filter-name><filter-class>org.uberfire.ext.security.server.BasicAuthSecurityFilter</filter-class><init-param><param-name>realmName</param-name><param-value>KIE Workbench Realm</param-value></init-param>
    </filter><filter-mapping><filter-name>HTTP Basic Auth Filter</filter-name><url-pattern>/rest/*</url-pattern><url-pattern>/maven2/*</url-pattern><url-pattern>/ws/*</url-pattern>
    </filter-mapping>
  2. 将远程服务网址格式限制为:
    <security-constraint><web-resource-collection><web-resource-name>remote-services</web-resource-name><url-pattern>/rest/*</url-pattern><url-pattern>/maven2/*</url-pattern><url-pattern>/ws/*</url-pattern></web-resource-collection><auth-constraint><role-name>rest-all</role-name></auth-constraint>
    </security-constraint>

重要说明 :使用远程服务的用户必须是角色rest-all的成员。 如第2步所述,此示例中的admin用户已经是rest-all角色的成员。

执行服务器

KIE Execution Server提供的REST API比任何第三方客户端都可以使用。 本节介绍如何将KIE Execution Server与Keycloak SSO集成在一起,以便将第三方客户端身份管理委派给SSO服务器。

考虑到以上环境正在运行,因此请考虑具有以下条件:

  • 在http:// localhost:8180 / auth上运行并侦听的Keycloak服务器
  • 一个名为demo的领域,其jBPM Workbench的客户端名为kie
  • 在http:// localhost:8080 / kie-wb-6.4.0-Final运行的jBPM工作台

请按照以下步骤将执行服务器添加到此环境中:

  • 在Keycloak上为执行服务器创建客户端
  • 安装安装程序和执行服务器(带有KC客户端适配器)

步骤1 –在Keycloak上为执行服务器创建客户端

根据要部署的每个执行服务器,您必须在Keycloak的演示领域中创建一个新客户端。

  1. 转到KC管理控制台 ->客户端->新客户端
  2. 名称: kie-execution-server
  3. 根URL:http:// localhost:8280 /
  4. 客户端协议:openid-connect
  5. 访问类型:机密(如果需要,则为公开,但不建议公开)
  6. 有效的重定向URI:/kie-server-6.4.0.Final/*
  7. 基本网址:/kie-server-6.4.0.Final

在此示例中,先前步骤中已经创建的admin用户是用于客户端请求的管理员用户。 因此,请确保管理员用户是角色kie-server的成员,以便使用执行服务器的远程服务。 如果角色不存在,请创建它。

注意:此示例认为执行服务器将配置为使用200端口偏移量运行,因此HTTP端口将在localhost:8280可用

步骤2 –安装和设置KC客户端适配器和执行服务器

此时,一个名为kie-execution-server的客户端已准备就绪,可以在KC服务器上从执行服务器上使用。 让我们安装,设置和部署执行服务器:

  1. 安装另一个Wildfly服务器以用于执行服务器和KC客户端适配器。 您可以按照上面有关工作台的说明进行操作,也可以遵循官方的适配器文档 。
  2. 从Wildfly服务器的配置路径中编辑standalone-full.xml文件,并将KC子系统适配器配置为:
    <secure-deployment name="kie-server-6.4.0.Final.war"><realm>demo</realm><realm-public-key>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB</realm-public-key><auth-server-url>http://localhost:8180/auth</auth-server-url><ssl-required>external</ssl-required><resource>kie-execution-server</resource><enable-basic-auth>true</enable-basic-auth><credential name="secret">e92ec68d-6177-4239-be05-28ef2f3460ff</credential><principal-attribute>preferred_username</principal-attribute>
    </secure-deployment>

如果与本示例不同,请考虑您的具体环境设置:

  • 安全部署名称->使用正在部署的执行服务器war文件的名称
  • 公钥->使用演示领域公钥或将其保留为空白,如果是这样,服务器将提供一个
  • 资源->这次,而不是WB配置中使用的kie客户端,请使用kie-execution-server客户端
  • 启用基本身份验证->由您决定。 您可以为第三方服务使用者启用基本身份验证
  • 凭据->将密钥用于kie-execution-server客户端。 您可以在KC管理控制台的“ 凭据”标签中找到它。

步骤3 –部署和运行执行服务器

只需使用任何可用机制在Wildfly中部署执行服务器即可。

使用以下命令运行执行服务器:

$EXEC_SERVER_HOME/bin/standalone.sh -c standalone-full.xml -Djboss.socket.binding.port-offset=200 -Dorg.kie.server.id=<ID> -Dorg.kie.server.user=<USER> -Dorg.kie.server.pwd=<PWD> -Dorg.kie.server.location=<LOCATION_URL>  -Dorg.kie.server.controller=<CONTROLLER_URL> -Dorg.kie.server.controller.user=<CONTROLLER_USER> -Dorg.kie.server.controller.pwd=<CONTOLLER_PASSWORD>

例:

$EXEC_SERVER_HOME/bin/standalone.sh -c standalone-full.xml -Djboss.socket.binding.port-offset=200 -Dorg.kie.server.id=kieserver1 -Dorg.kie.server.user=admin -Dorg.kie.server.pwd=password -Dorg.kie.server.location=http://localhost:8280/kie-server-6.4.0.Final/services/rest/server -Dorg.kie.server.controller=http://localhost:8080/kie-wb-6.4.0.Final/rest/controller -Dorg.kie.server.controller.user=admin -Dorg.kie.server.controller.pwd=password

重要说明 :将使用执行服务器远程服务端点的用户必须具有分配的角色kie-server。 因此,在KC管理控制台中为将使用执行服务器远程服务的用户创建并分配此角色。

一旦启动,您可以将服务器状态检查为(针对该请求考虑使用基本身份验证,请参阅下一个使用远程服务以获取更多信息):

curl http://admin:password@localhost:8280/kie-server-6.4.0.Final/services/rest/server/

消费远程服务

为了使用工作台或执行服务器提供的不同远程服务,您的客户端必须在KC服务器上进行身份验证,并且必须具有有效的令牌才能执行请求。

注意 :请记住,为了使用远程服务,经过身份验证的用户必须已分配:

  • 使用WB远程服务的所有角色
  • 使用Execution Server远程服务的角色kie-server

请确保已创建必要的角色并将其分配给将在Keycloak管理控制台上使用远程服务的用户。

您有两个选择可以使用不同的删除服务端点:

  • 如果应用程序的客户端支持基本身份验证,则使用它
  • 使用基于承载(令牌)的身份验证

使用基本身份验证

如果KC客户端适配器配置启用了基本身份验证(如本指南中针对WB( 步骤3.2 )和Execution Server所建议的那样),则可以避免令牌授予/刷新调用,而只需调用服务即可,如以下示例所示。

WB远程存储库端点的示例:

curl http://admin:password@localhost:8080/kie-wb-6.4.0.Final/rest/repositories

检查执行服务器状态的示例:

curl http://admin:password@localhost:8280/kie-server-6.4.0.Final/services/rest/server/

使用基于令牌的身份验证

第一步是在Keycloak上创建一个新客户端,该客户端允许第三方远程服务客户端获取令牌。 可以通过以下方式完成:

  • 转到KC管理控制台,然后使用以下配置创建新客户端
    • 客户编号: kie-remote
  • 当我们将要手动获取令牌并调用服务时,让我们稍微延长令牌的寿命。 在生产访问令牌中,令牌应具有相对较低的超时,最好少于5分钟:
    • 转到KC管理控制台

创建用于远程客户端的公共客户端后,您现在可以通过对KC服务器的令牌端点执行HTTP请求来获取令牌。 这是命令行示例:

RESULT=`curl --data "grant_type=password&client_id=kie-remote&username=admin&passwordpassword=<the_client_secret>" http://localhost:8180/auth/realms/demo/protocol/openid-connect/token`TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'`

此时,如果您回显$ TOKEN ,它将输出从KC服务器获得的令牌字符串,该令牌字符串现在可用于授权对远程端点的进一步调用。 例如,如果要检查内部jBPM存储库:

curl -H "Authorization: bearer $TOKEN" http://localhost:8080/kie-wb-6.4.0.Final/rest/repositories

翻译自: https://www.javacodegeeks.com/2016/03/keycloak-sso-integration-jbpm-drools-workbench.html

sso集成shiro

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

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

相关文章

jbpm 和 drools_jBPM和Drools工作台中的用户和组管理

jbpm 和 drools介绍 本文讨论了一项新功能&#xff0c;该功能允许使用集成在jBPM和Drools Workbenches中的直观友好的用户界面来管理应用程序的用户和组。 用户和组管理 在安装&#xff0c;设置和使用此功能之前&#xff0c;本文讨论了一些以前的概念&#xff0c;需要进一步理…

从事java编程技能要求_5道Java视频课程,提高您的编程技能

从事java编程技能要求作为Web开发人员&#xff0c;跟上技术知识可能会很棘手。 新技术似乎每天都在弹出&#xff0c;而基本技术也看到了重复迭代的浪潮&#xff0c;增加了新的功能。 Java开发人员应该做什么&#xff1f; 这是在线教育平台发挥作用的地方。 它们可以帮助您快速…

sqlserver存储过程加锁后怎么解锁_【缺陷周话】第59期:重复加锁

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01;*声明&#xff1a;《缺陷周话》栏目系列文章由奇安信代码卫士团队原创出品。未经许可&#xff0c;禁止转载。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。代码审计是使用静态分析发现源代码中安全缺陷的方法&…

idea添加jboss_如何将云持久存储添加到JBoss Cool Store

idea添加jboss我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 带有JBoss Cool Store的App Dev Cloud 上个月&#xff0c;我们带来了一个完整的零售示例&#xff0c;其中的JBoss Cool Store运行在您的堆栈的OpenShift Enterprise层上&…

ssm影城项目_影场与属性访问器界面

ssm影城项目卡尔迪亚&#xff08;Carl Dea&#xff09;最近跟踪了我的一篇名为“ 保存内存”的博客文章&#xff01; 为属性使用阴影字段 。 在他的博客中&#xff0c;他建议使用称为“属性访问器”的接口来消除大量使用样板代码所需的样板代码。 卡尔还提到他尚未用大量数据测…

java流写入数据库_Java 8:在2分钟内将智能流与数据库一起使用

java流写入数据库快速流媒体 当Java 8最终问世时&#xff0c;我和一些大学开始了一个开源项目&#xff0c;以利用Java 8的流库使整个Java / DB问题更进一步&#xff0c;以便将数据库表视为纯Java 8流。 速度诞生了&#xff01; 哇&#xff0c;现在我们可以做类型安全的数据库应…

小米摄像头有onvif协议_监控摄像头完好但图像不行,肯定逃不过这10个问题

摄像头仅仅是视频监控系统的一部分&#xff0c;即使摄像头完好无损&#xff0c;监控画面也可能会出现不显示、卡顿、丢失等情况。想要彻底解决网络监控的问题&#xff0c;往往需要排查各个连接设备才可以判断。下面我们就总结了10个问题&#xff0c;彻底解决网络监控的问题。一…

java对话_您应该保持联系的十大高级Java对话

java对话在线讲座和视频是学习软件开发新事物的主要资源之一。 您可以找到Java专家与您分享他们的经验&#xff0c;而不必坐下来。 在下面的文章中&#xff0c;我们收集了10位我们最喜欢的演讲者和主题&#xff0c;我们相信每个Java开发人员都应该注意。 获取爆米花&#xff0…

【WebRTC---源码篇】(三)Windows/Linux音视频采集封装模块

视频采集相关类图 DeviceInfo接口提供了设备枚举相关功能。 NumberOfDevices枚举设备个数。 GetDeviceName获取某个设备名称。 GetCapability枚举某个设备所支持的所有能力(VideoCaptureCapability: 分辨率,最大帧率,颜色类型) VideoCaptureModule视频采集模块的基类: …

java设计单词英译汉小助手_拣单词|第八期第3天:第521528个单词宝藏

宝藏坚持每天拣单词积累你的词汇宝藏打好英语学习基本功怎么学&#xff1f;每天预留15分钟&#xff0c;积累你的词汇宝藏&#xff01;每周一、二、三&#xff0c;发布新单词每周四、五、六&#xff0c;乱序复习单词周日测试(仅限入群的学员)遇到新单词&#xff0c;你可以&#…

spring多个视图解析器_在Spring中配置多个View解析器

spring多个视图解析器1.简介 在Spring中&#xff0c;提供了View Resolver来使用模型中可用的数据来解析视图&#xff0c;而无需与JSP&#xff0c;Velocity或Thymeleaf等View技术紧密绑定。 Spring可以根据需要轻松灵活地配置一个或多个View Resolver 。 2. Spring MVC应用程序…

单选按钮:after_选择的按钮:将ToggleButtons用作单选按钮

单选按钮:after对于MQTT.fx&#xff0c;我想使用ToggleButtons例如选择MQTT消息或QoS级别的解码&#xff1a; 我发现在ToggleGroup的上下文中&#xff0c;ToggleButton在选择/取消选择方面的行为与RadioButtons不同&#xff1a;与RadioButtons不同&#xff0c;ToggleButtons仍…

【技术解决方案】开发工具源码安装包大全

汇总下载链接 下载地址 QT下载以及安装 各版本QT下载地址 1.安装中根据不同的开发环境勾选相应的&#xff0c;如果使用VS编译请先安装VS和SDK然后再安装QT。 使用VS时CDB调试支持需要勾选 QTCreator断点调试需要下载SDK,Windows的SDK下载地址&#xff0c;只需要安装勾选如…

垃圾收集算法,垃圾收集器_确定活动的热点垃圾收集器

垃圾收集算法,垃圾收集器StackOverflow问题查找正在运行哪种类型的垃圾收集 器&#xff0c;jvm的默认垃圾收集器 &#xff0c; 如何通过查看gc日志来查看正在运行的垃圾收集器&#xff1f; &#xff0c;以及如何知道HotSpot jvm的当前GC策略&#xff1f; 以及博客文章如何以编程…

树与堆的基本概念

当看到这里的时候&#xff0c;相信你的链表&#xff0c;队列&#xff0c;栈学的也差不多可以了&#xff0c;那么接下来让我们一起进入树的学习吧&#xff01; 一.树的概念以及一些知识记忆 树的定义&#xff1a; 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08…

jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端

jboss war包放哪我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 我们从头到尾讨论了各个层次&#xff0c;但尚未为您提供除Red Hat Container Development Kit&#xff08;CDK&#xff09;之外的任何应用程序开发工具。 到目前为止&am…

hotspot 垃圾收集器_HotSpot增量Java垃圾收集器

hotspot 垃圾收集器在我最近的博客文章“ 确定活动的HotSpot垃圾收集器”中 &#xff0c;我描述了可用于确定HotSpot JVM &#xff08;Java进程&#xff09;正在使用的垃圾收集器&#xff08;当从命令行参数&#xff08;标志&#xff09;中变得不明显时&#xff09;的不同方法。…

【安卓开发 】Android初级开发(一)控件通用属性

控件通用属性 match_parent 是指和父容器宽高相等的值&#xff0c;其他的同理可证。 android:layout_marginTop"XXXXXXdp" 距离顶部的距离 Android TextView属性详解 该控件相关属性 Android EditText属性大全 相关属性查看地址 事件监听处理 package com.examp…

认证令牌_Java应用程序的令牌认证

认证令牌建筑物身份管理&#xff0c;包括身份验证和授权&#xff1f; 尝试Stormpath&#xff01; 我们的REST API和强大的Java SDK支持可以消除您的安全风险&#xff0c;并且可以在几分钟内实现。 注册 &#xff0c;再也不会建立auth了&#xff01; 2016年5月12日更新&#xf…

java package报错_Java基础知识总结 - 超详细篇(上)

1&#xff0c;JDK&#xff1a;Java Development Kit&#xff0c;java的开发和运行环境&#xff0c;java的开发工具和jre。2&#xff0c;JRE&#xff1a;Java Runtime Environment&#xff0c;java程序的运行环境&#xff0c;java运行的所需的类库JVM(java虚拟机)。3&#xff0c…