jenkins java_具有WildFly,Arquillian,Jenkins和OpenShift的Java EE 7部署管道

jenkins java

技术提示#54展示了如何Arquillianate(Arquillianize?)一个现有的Java EE项目并在WildFly在已知主机和端口上运行的远程模式下运行这些测试。 技术提示#55展示了当WildFly在OpenShift中运行时如何运行这些测试。 这两个技巧都使用Maven配置文件来分隔“ pom.xml”中的相应Arquillian依赖项和“ arquillian.xml”中的<container>配置,以定义WildFy在何处运行以及如何连接。

本技巧将展示如何在OpenShift中配置Jenkins以及如何从Jenkins调用这些测试。 让我们首先来看它!



从OpenShift上的Jenkins连接到OpenShift上的WildFly实例所需的配置与从本地计算机到OpenShift上的WildFly连接所需的配置相似。 此配置在“ arquillian.xml”中指定,我们可以指定一些参数,然后可以在Jenkins中定义这些参数。

概括地说,这是我们要做的:

  • 使用在技术提示#54和#55中创建的代码,并为Arquillian / Jenkins / OpenShift添加配置
  • 启用詹金斯
  • 创建一个新的WildFly Test实例
  • 配置Jenkins在测试实例上运行测试
  • 仅当测试通过测试实例时,才将应用程序推入生产环境

让我们开始吧!

  1. 从技术提示#55中创建的WildFly git repo中删除现有的样板源代码,仅删除src目录。
    mywildfly> git rm -rf src/ pom.xml
    rm 'pom.xml'
    rm 'src/main/java/.gitkeep'
    rm 'src/main/resources/.gitkeep'
    rm 'src/main/webapp/WEB-INF/web.xml'
    rm 'src/main/webapp/images/jbosscorp_logo.png'
    rm 'src/main/webapp/index.html'
    rm 'src/main/webapp/snoop.jsp'
    mywildfly> git commit . -m"removing source and pom"
    [master 564b275] removing source and pom7 files changed, 647 deletions(-)delete mode 100644 pom.xmldelete mode 100644 src/main/java/.gitkeepdelete mode 100644 src/main/resources/.gitkeepdelete mode 100644 src/main/webapp/WEB-INF/web.xmldelete mode 100644 src/main/webapp/images/jbosscorp_logo.pngdelete mode 100644 src/main/webapp/index.htmldelete mode 100644 src/main/webapp/snoop.jsp
  2. 将新的远程设置为javaee7-continuous-delivery存储库:
    mywildfly> git remote add javaee7 https://github.com/arun-gupta/javaee7-continuous-delivery.git
    mywildfly> git remote -v
    javaee7	https://github.com/arun-gupta/javaee7-continuous-delivery.git (fetch)
    javaee7	https://github.com/arun-gupta/javaee7-continuous-delivery.git (push)
    origin	ssh://54699516ecb8d41cb8000016@mywildfly-milestogo.rhcloud.com/~/git/mywildfly.git/ (fetch)
    origin	ssh://54699516ecb8d41cb8000016@mywildfly-milestogo.rhcloud.com/~/git/mywildfly.git/ (push)
  3. 从新的遥控器中提取代码:
    mywildfly> git pull javaee7 master
    warning: no common commits
    remote: Counting objects: 62, done.
    remote: Compressing objects: 100% (45/45), done.
    remote: Total 62 (delta 14), reused 53 (delta 5)
    Unpacking objects: 100% (62/62), done.
    From https://github.com/arun-gupta/javaee7-continuous-delivery* branch            master     -> FETCH_HEAD* [new branch]      master     -> javaee7/master
    Merge made by the 'recursive' strategy..gitignore                                           |   6 +++README.asciidoc                                      |  15 ++++++pom.xml                                              | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++src/main/java/org/javaee7/sample/MyApplication.java  |   9 ++++src/main/java/org/javaee7/sample/Person.java         |  31 ++++++++++++src/main/java/org/javaee7/sample/PersonDatabase.java |  39 ++++++++++++++src/main/java/org/javaee7/sample/PersonResource.java |  29 +++++++++++src/main/webapp/index.jsp                            |  13 +++++src/test/java/org/javaee7/sample/PersonTest.java     |  77 ++++++++++++++++++++++++++++src/test/resources/arquillian.xml                    |  26 ++++++++++10 files changed, 442 insertions(+)create mode 100644 .gitignorecreate mode 100644 README.asciidoccreate mode 100644 pom.xmlcreate mode 100644 src/main/java/org/javaee7/sample/MyApplication.javacreate mode 100644 src/main/java/org/javaee7/sample/Person.javacreate mode 100644 src/main/java/org/javaee7/sample/PersonDatabase.javacreate mode 100644 src/main/java/org/javaee7/sample/PersonResource.javacreate mode 100644 src/main/webapp/index.jspcreate mode 100644 src/test/java/org/javaee7/sample/PersonTest.javacreate mode 100644 src/test/resources/arquillian.xml

    这将带来所有源代码,包括我们的REST端点,网页,测试,更新的“ pom.xml”和“ arquillian.xml”。 更新的“ pom.xml”具有两个新的配置文件。

    openshiftorg.apache.maven.pluginsmaven-war-plugin2.3falsedeploymentsROOTjenkins-openshiftmaven-surefire-plugin2.14.1jenkins-openshiftorg.jboss.arquillian.containerarquillian-openshift1.0.0.Final-SNAPSHOTtest

    这里要注意的几点:

    1. 在OpenShift上构建应用程序时使用“ openshift”配置文件。 这是创建应用程序的WAR文件并将其部署到WildFly的地方。
    2. 添加了新的配置文件“ jenkins-openshift”,供OpenShift中的Jenkins实例(即将启用)使用它来运行测试。
    3. “ arquillian-openshift”依赖项与技术提示#55中使用的依赖项相同,并且允许在OpenShift的WildFly实例上运行Arquillian测试。
    4. 此配置文件引用将在“ arquillian.xml”中定义的“ jenkins-openshift”容器配置。

    更新的“ src / test / resources / arquillian.xml”具有以下容器:

    <container qualifier="jenkins-openshift"><configuration><property name="namespace">${env.ARQ_DOMAIN}</property><property name="application">${env.ARQ_APPLICATION}</property><property name="libraDomain">rhcloud.com</property><property name="sshUserName">${env.ARQ_SSH_USER_NAME}</property><property name="login">arungupta@redhat.com</property><property name="deploymentTimeoutInSeconds">300</property><property name="disableStrictHostChecking">true</property> </configuration>
    </container>

    此容器配置类似于技术提示#55中添加的容器配置。 唯一的区别是,已对域名,应用程序名称和SSH用户名进行了参数设置。 这些属性的值在Jenkins实例的配置中定义,并允许针对单独的测试节点运行测试。

  4. 在将更改推送到远程存储库之前,还需要完成两件事。 首先是创建一个WildFly Test实例,该实例可用于运行测试。 可以很容易地完成,如下所示:
    workspaces> rhc app-create mywildflytest jboss-wildfly-8
    Application Options
    -------------------
    Domain:     milestogo
    Cartridges: jboss-wildfly-8
    Gear Size:  default
    Scaling:    noCreating application 'mywildflytest' ... Artifacts deployed: ./ROOT.war
    doneWildFly 8 administrator added.  Please make note of these credentials:Username: adminITJt7YhPassword: yXP2mUd1w4_8run 'rhc port-forward mywildflytest' to access the web admin area on port 9990.Waiting for your DNS name to be available ... doneCloning into 'mywildflytest'...
    Warning: Permanently added the RSA host key for IP address '54.205.69.88' to the list of known hosts.Your application 'mywildflytest' is now available.URL:        http://mywildflytest-milestogo.rhcloud.com/SSH to:     546e3743ecb8d49ca9000014@mywildflytest-milestogo.rhcloud.comGit remote: ssh://546e3743ecb8d49ca9000014@mywildflytest-milestogo.rhcloud.com/~/git/mywildflytest.git/Cloned to:  /Users/arungupta/workspaces/javaee7/mywildflytestRun 'rhc show-app mywildflytest' for more details about your app.

    请注意,这里的域是milestogo ,应用程序名称是mywildflytest ,SSH用户名称是546e3743ecb8d49ca9000014 。 这些将传递给Arquillian进行测试。

  5. 其次是启用和配置Jenkins。在您的OpenShift控制台中 ,选择“ mywildfly”应用程序,然后单击“ Enable Jenkins”链接,如下所示:

    techtip56-enable-jenkins 请记住,这不是您的Test实例,因为所有源代码都位于先前创建的实例上。提供适当的名称,例如jenkins-milestogo.rhcloud.com(在我的情况下),然后单击“添加Jenkins”按钮。 这将提供一个Jenkins实例(如果尚未存在的话),并使用脚本配置项目以构建和部署应用程序。 记下名称和密码凭据。
  6. 使用凭据登录到您的Jenkins实例。在这种情况下,选择适当的版本“ mywildfly-build”。 向下滚动到“ Build”部分,然后在Execute Shell中的“#Run tests here”之后添加以下脚本:
    export ARQ_DOMAIN=milestogo
    export ARQ_SSH_USER_NAME=546e3743ecb8d49ca9000014
    export ARQ_APPLICATION=mywildflytest
    mvn test -Pjenkins-openshift

    单击“保存”以保存配置。 这将允许在Test实例上运行Arquillian测试。 如果测试通过,则将部署该应用程序。 如果测试失败,则该步骤之后的所有步骤均不会执行,因此不会部署该应用程序。

  7. 现在让我们将更改推送到远程仓库:
    mywildfly> git push
    Counting objects: 68, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (49/49), done.
    Writing objects: 100% (61/61), 8.85 KiB | 0 bytes/s, done.
    Total 61 (delta 14), reused 0 (delta 0)
    remote: Executing Jenkins build.
    remote: 
    remote: You can track your build at https://jenkins-milestogo.rhcloud.com/job/mywildfly-build
    remote: 
    remote: Waiting for build to schedule............................................................................................Done
    remote: Waiting for job to complete................................................................................................................................................................................................................................................................................................................................................................................................Done
    remote: SUCCESS
    remote: New build has been deployed.
    remote: -------------------------
    remote: Git Post-Receive Result: success
    remote: Deployment completed with status: success
    To ssh://546cef93ecb8d4ff37000003@mywildfly-milestogo.rhcloud.com/~/git/mywildfly.git/e8f6c61..e9ad206  master -> master

    点的数量表示等待特定任务,并且很可能会因运行不同而有所不同。 而Jenkins控制台( jenkins-milestogo.rhcloud.com/job/mywildfly-build/1/console )将输出显示为:

    -------------------------------------------------------T E S T S
    -------------------------------------------------------
    Running org.javaee7.sample.PersonTest
    Nov 20, 2014 2:54:56 PM org.jboss.arquillian.container.openshift.OpenShiftContainer start
    INFO: Preparing Arquillian OpenShift container at http://mywildflytest-milestogo.rhcloud.com
    Nov 20, 2014 2:55:48 PM org.jboss.arquillian.container.openshift.OpenShiftRepository push
    INFO: Pushed to the remote repository ssh://546e3743ecb8d49ca9000014@mywildflytest-milestogo.rhcloud.com/~/git/mywildflytest.git/
    Nov 20, 2014 2:56:37 PM org.jboss.arquillian.container.openshift.OpenShiftRepository push
    INFO: Pushed to the remote repository ssh://546e3743ecb8d49ca9000014@mywildflytest-milestogo.rhcloud.com/~/git/mywildflytest.git/
    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 103.056 sec
    Nov 20, 2014 2:56:37 PM org.jboss.arquillian.container.openshift.OpenShiftContainer stop
    INFO: Shutting down Arquillian OpenShift container at http://mywildflytest-milestogo.rhcloud.com
    Results :Tests run: 2, Failures: 0, Errors: 0, Skipped: 0[INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 3:13.069s
    [INFO] Finished at: Thu Nov 20 14:57:34 EST 2014
    [INFO] Final Memory: 10M/101M
    [INFO] ------------------------------------------------------------------------
    + /usr/libexec/openshift/cartridges/jenkins/bin/git_ssh_wrapper.sh 546e36e5e0b8cd4e2a000007@mywildfly-milestogo.rhcloud.com 'gear stop --conditional'
    Warning: Permanently added 'mywildfly-milestogo.rhcloud.com,10.5.171.43' (RSA) to the list of known hosts.
    Stopping gear...
    Stopping wildfly cart
    Sending SIGTERM to wildfly:418673 ...
    + rsync --delete-after -azO -e /usr/libexec/openshift/cartridges/jenkins/bin/git_ssh_wrapper.sh /var/lib/openshift/546e46304382ec3f29000012//.m2/ '546e36e5e0b8cd4e2a000007@mywildfly-milestogo.rhcloud.com:~/.m2/'
    Warning: Permanently added 'mywildfly-milestogo.rhcloud.com,10.5.171.43' (RSA) to the list of known hosts.
    + rsync --delete-after -azO -e /usr/libexec/openshift/cartridges/jenkins/bin/git_ssh_wrapper.sh /var/lib/openshift/546e46304382ec3f29000012/app-root/runtime/repo/deployments/ '546e36e5e0b8cd4e2a000007@mywildfly-milestogo.rhcloud.com:${OPENSHIFT_REPO_DIR}deployments/'
    Warning: Permanently added 'mywildfly-milestogo.rhcloud.com,10.5.171.43' (RSA) to the list of known hosts.
    + rsync --delete-after -azO -e /usr/libexec/openshift/cartridges/jenkins/bin/git_ssh_wrapper.sh /var/lib/openshift/546e46304382ec3f29000012/app-root/runtime/repo/.openshift/ '546e36e5e0b8cd4e2a000007@mywildfly-milestogo.rhcloud.com:${OPENSHIFT_REPO_DIR}.openshift/'
    Warning: Permanently added 'mywildfly-milestogo.rhcloud.com,10.5.171.43' (RSA) to the list of known hosts.
    + /usr/libexec/openshift/cartridges/jenkins/bin/git_ssh_wrapper.sh 546e36e5e0b8cd4e2a000007@mywildfly-milestogo.rhcloud.com 'gear remotedeploy'
    Warning: Permanently added 'mywildfly-milestogo.rhcloud.com,10.5.171.43' (RSA) to the list of known hosts.
    Preparing build for deployment
    Deployment id is dff28e58
    Activating deployment
    Deploying WildFly
    Starting wildfly cart
    Found 127.12.255.129:8080 listening port
    Found 127.12.255.129:9990 listening port
    /var/lib/openshift/546e36e5e0b8cd4e2a000007/wildfly/standalone/deployments /var/lib/openshift/546e36e5e0b8cd4e2a000007/wildfly
    /var/lib/openshift/546e36e5e0b8cd4e2a000007/wildfly
    CLIENT_MESSAGE: Artifacts deployed: ./ROOT.war
    Archiving artifacts
    Finished: SUCCESS

    可以查看Jenkins的日志文件,如下所示:

    Nov 20, 2014 2:51:11 PM hudson.plugins.openshift.OpenShiftCloud provision
    INFO: Provisioning new node for workload = 2 and label = mywildfly-build in domain milestogo
    Nov 20, 2014 2:51:11 PM hudson.plugins.openshift.OpenShiftCloud getOpenShiftConnection
    INFO: Initiating Java Client Service - Configured for OpenShift Server https://openshift.redhat.com
    Nov 20, 2014 2:51:11 PM com.openshift.internal.client.RestService request
    INFO: Requesting GET with protocol 1.2 on https://openshift.redhat.com/broker/rest/api
    Nov 20, 2014 2:51:11 PM com.openshift.internal.client.RestService request
    INFO: Requesting GET with protocol 1.2 on https://openshift.redhat.com/broker/rest/user
    Nov 20, 2014 2:51:11 PM com.openshift.internal.client.RestService request. . .INFO: Checking availability of computer hudson.plugins.openshift.OpenShiftSlave@8ce21115
    Nov 20, 2014 2:53:35 PM com.openshift.internal.client.RestService request
    INFO: Requesting GET with protocol 1.2 on https://openshift.redhat.com/broker/rest/domain/milestogo/application/mywildflybldr/gear_groups
    Nov 20, 2014 2:53:35 PM hudson.plugins.openshift.OpenShiftComputerLauncher launch
    INFO: Checking SSH access to application mywildflybldr-milestogo.rhcloud.com
    Nov 20, 2014 2:53:35 PM hudson.plugins.openshift.OpenShiftComputerLauncher launch
    INFO: Connecting via SSH '546e46304382ec3f29000012' 'mywildflybldr-milestogo.rhcloud.com' '/var/lib/openshift/546e393e5973ca0492000070/app-root/data/.ssh/jenkins_id_rsa'
    Nov 20, 2014 2:53:35 PM hudson.slaves.NodeProvisioner update
    INFO: mywildfly-build provisioningE successfully completed. We have now 2 computer(s)
    Nov 20, 2014 2:53:35 PM hudson.plugins.openshift.OpenShiftComputerLauncher launch
    INFO: Connected via SSH.
    Nov 20, 2014 2:53:35 PM hudson.plugins.openshift.OpenShiftComputerLauncher launch
    INFO: Exec mkdir -p $OPENSHIFT_DATA_DIR/jenkins && cd $OPENSHIFT_DATA_DIR/jenkins && rm -f slave.jar && wget -q --no-check-certificate https://jenkins-milestogo.rhcloud.com/jnlpJars/slave.jar
    Nov 20, 2014 2:53:42 PM hudson.plugins.openshift.OpenShiftComputerLauncher launch
    INFO: Slave connected.
    Nov 20, 2014 2:58:24 PM hudson.model.Run execute
    INFO: mywildfly-build #1 main build action completed: SUCCESS

    这表明该应用程序已成功部署在mywildfly-milestogo.rhcloud.com/index.jsp上 ,如下所示:

    techtip56-mywildfly输出测试通过

现在更改“ src / main / webapp / index.jsp”以显示不同的标题。 并更改“ src / test / java / org / javaee7 / sample / PersonTest.java”以使其中一项测试失败。 进行“ git commit”和“ git push”会在命令行上显示以下结果:

mywildfly> git commit . -m"breaking the test"
[master ff2de09] breaking the test2 files changed, 2 insertions(+), 2 deletions(-)
mywildfly> git push
Counting objects: 23, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (12/12), 771 bytes | 0 bytes/s, done.
Total 12 (delta 5), reused 0 (delta 0)
remote: Executing Jenkins build.
remote: 
remote: You can track your build at https://jenkins-milestogo.rhcloud.com/job/mywildfly-build
remote: 
remote: Waiting for build to schedule.......Done
remote: Waiting for job to complete.....................................................................................................................................................................Done
remote: FAILED
remote: !!!!!!!!
remote: Deployment Halted!
remote: If the build failed before the deploy step, your previous
remote: build is still running.  Otherwise, your application may be
remote: partially deployed or inaccessible.
remote: Fix the build and try again.
remote: !!!!!!!!
remote: An error occurred executing 'gear postreceive' (exit code: 1)
remote: Error message: CLIENT_ERROR: Failed to execute: 'control post-receive' for /var/lib/openshift/546e36e5e0b8cd4e2a000007/jenkins-client
remote: 
remote: For more details about the problem, try running the command again with the '--trace' option.
To ssh://546e36e5e0b8cd4e2a000007@mywildfly-milestogo.rhcloud.com/~/git/mywildfly.git/d618fad..ff2de09  master -> master

要注意的关键声明是,测试失败后,将停止部署。 您可以通过重新访问mywildfly-milestogo.rhcloud.com/index.jsp并检查更新后的“ index.jsp”是否不可见来验证这一点。

简而言之,测试通过,网站已更新。 测试失败,该网站未更新。 因此,您已经使用WildFly,OpenShift,Arquillian和Jenkins为Java EE 7建立了一个简单的部署管道!

翻译自: https://www.javacodegeeks.com/2014/12/deployment-pipeline-for-java-ee-7-with-wildfly-arquillian-jenkins-and-openshift.html

jenkins java

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

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

相关文章

matplotlib 折线图_漂亮图表也可信手拈来,一文学会用Python绘制堆积折线图

今天咱们还是接着上次的话题&#xff0c;继续和大家聊聊关于Python绘图相关的东东哦&#xff0c;上次已经和大家讨论完了如何给自己所绘制的图表中添加装饰线以及修改装饰线密度的方法&#xff0c;今天呢&#xff0c;咱们再聊点的新的东东哦&#xff0c;还是和大家继续深耕Pyth…

C语言 | 赋值与运算符

本章以鸡兔同笼为例&#xff0c;讲解赋值语句和一些简单的运算符。相关知识点&#xff1a;scanf(" %d " , &i ); 输入函数&#xff0c;表示输入一个整数&#xff08;%d&#xff09;&#xff0c;赋值给 i&#xff08;&i&#xff09;C语言中加法运算符为 减法…

响应式多级菜单 侧边菜单栏_使用纯HTML和OmniFaces构建动态响应的多级菜单

响应式多级菜单 侧边菜单栏最近&#xff0c;我不得不使用JSF 2.2创建一个响应式多级菜单。 要求&#xff1a;菜单应&#xff1a; 从后端使用动态结构创建 React灵敏&#xff0c;例如对桌面和移动设备友好 有带有导航链接的子菜单项 支持触摸事件 支持键盘辅助功能 PrimeF…

C语言中的头文件

头文件是扩展名为 .h 的文件&#xff0c;包含了 C 函数声明和宏定义&#xff0c;被多个源文件中引用共享。有两种类型的头文件&#xff1a;程序员编写的头文件和编译器自带的头文件。在程序中要使用头文件&#xff0c;需要使用 C 预处理指令 #include 来引用它。前面我们已经看…

set trans 必须是事务处理的第一个语句_MySQL中特别实用的几种SQL语句送给大家

在写SQL时&#xff0c;经常灵活运用一些SQL语句编写的技巧&#xff0c;可以大大简化程序逻辑。减少程序与数据库的交互次数&#xff0c;有利于数据库高可用性&#xff0c;同时也能显得你的SQL很牛B&#xff0c;让同事们眼前一亮。实用的SQL1.插入或替换如果我们想插入一条新记录…

C语言预处理命令总结

预处理指令是以#号开头的代码行&#xff0c;# 号必须是该行除了任何空白字符外的第一个字符。# 后是指令关键字&#xff0c;在关键字和 # 号之间允许存在任意个数的空白字符&#xff0c;整行语句构成了一条预处理指令&#xff0c;该指令将在编译器进行编译之前对源代码做某些转…

突破极限–如何使用AeroGear Unified Push for Java EE和Node.js

在2014年底的AeroGear队宣布红帽的JBoss统一推送服务器的可用性xPaaS 。 让我们仔细看看&#xff01; 总览 统一推送服务器允许开发人员将本地推送消息发送到Apple的推送通知服务&#xff08;APNS&#xff09;和Google的云消息传递&#xff08;GCM&#xff09;。 它具有内置的…

mysql 分词搜索_实战 | canal 实现Mysql到Elasticsearch实时增量同步

题记关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题&#xff0c;也是社区、QQ群等讨论最多的问题之一。 问题包含但不限于&#xff1a; 1、Mysql如何同步到Elasticsearch? 2、Logstash、kafka_connector、canal选型有什么不同&#xff0c;如何取舍&#xff1…

C memset 踩坑

一、前言memset 作为对内存初始化的函数&#xff0c;还是有不少坑和误区的&#xff0c;今天就来对这个函数作一个总结。二、函数作用最简单的调用就是将一个数组清零&#xff0c;代码如下&#xff1a;const int maxn 1024; int a[maxn]; memset(a, 0, sizeof(a)); // a[0]a[1…

eap和psk_针对WildFly和EAP运行Java Mission Control和Flight Recorder

eap和pskJava Mission Control &#xff08;JMC&#xff09;使您可以监视和管理Java应用程序&#xff0c;而无需引入通常与这些类型的工具相关的性能开销。 它使用为正常的JVM动态优化而收集的数据&#xff0c;从而形成了一种非常轻量级的方法来观察和分析应用程序代码中的问题…

C语言合法标识符

Problem Description输入一个字符串&#xff0c;判断其是否是C的合法标识符。Input输入数据包含多个测试实例&#xff0c;数据的第一行是一个整数n,表示测试实例的个数&#xff0c;然后是n行输入数据&#xff0c;每行是一个长度不超过50的字符串。Output对于每组输入数据&#…

线程魔术技巧:使用Java线程可以做的5件事

Java线程最鲜为人知的事实和用例是什么&#xff1f; 有些人喜欢爬山&#xff0c;有些人喜欢跳伞。 我&#xff0c;我喜欢Java。 我喜欢它的一件事是&#xff0c;您永不停止学习。 您每天使用的工具通常可以为您带来全新的面貌&#xff0c;以及您还没有机会看到的方法和有趣的用…

java webview框架_java - Android WebView 无法正常显示网页图表

Android客户端中混搭HTML页面&#xff0c;会出现虽然HTML内容载入完成&#xff0c;标题也正常显示&#xff0c;但是整个网页需要等到近5秒(甚至更多)时间才会显示出来。研究了很久&#xff0c;搜遍了国外很多网站&#xff0c;也看过PhoneGap的代码&#xff0c;一直无解。 …

每日干货丨C语言数组知识点总结

一&#xff0e;一维数组1. 初始化方法第一种&#xff1a;完全初始化。依次赋值如&#xff1a;a[5] {2&#xff0c;3&#xff0c;4, 5, 6}&#xff1b;a[] {1&#xff0c;2, 3, 4, 5, 6};第二种&#xff1a;不完全初始化。初始化式中的值从a[0]开始&#xff0c;依次向后赋值&a…

C语言指南-数组之谜

前言在C语言中&#xff0c;数组和指针似乎总是“暧昧不清”&#xff0c;有时候很容易把它们混淆。本文就来理一理数组和指针之间到底有哪些异同。数组回顾在分析之前&#xff0c;我们不妨回顾一下数组的知识。数组是可以存储一个固定大小的相同类型元素的顺序集合。为了便于我们…

python生成uuid_咸鱼高赞回答:有什么相见恨晚的Python技巧,附赠python最新教程...

日常工作几乎离不python。一路走来&#xff0c;他积累了不少有用的技巧和tips&#xff0c;现在就将这些技巧分享给大家。这些技巧将根据其首字母按A-Z的顺序进行展示。Python相关学习资料获取方式&#xff1a;转发文章关注私信【Python】ALL OR ANYPython之所以成为这么一门受欢…

java用十字链表实现无向图_实验四:图的实现与应用

20162317袁逸灏 实验四&#xff1a;图的实现与应用实验内容用邻接矩阵十字链表实现无向图中的添加结点删除结点添加边删除边size()isEmpty()广度优先迭代器深度优先迭代器方法实验要求实验1&#xff1a;用邻接矩阵实现无向图(边和顶点都要保存)&#xff0c;实现在包含添加和删除…

C语言指针变量的运算

前言指针变量也是可以进行运算的&#xff0c;如指针变量对其自身加上某个整数或减去某个整数&#xff0c;这在内存上体现为&#xff1a;相对这个指针向后偏移多少个单位或向前偏移了多少个单位&#xff0c;这里的单位与指针变量的类型有关。在32bit环境下&#xff0c;int类型占…

关于n对角矩阵数据结构_机器学习与线性代数 - 特殊矩阵

在线性代数中&#xff0c;有一些特殊的矩阵具有易于分析和操作的特性。它们的特征向量可能具有特定的特征值或特殊关系。还有一些方法可以将一个矩阵分解成这些“更简单”的矩阵。操作复杂性的降低提高了可伸缩性。然而&#xff0c;即使这些矩阵都是特殊的&#xff0c;它们也不…

C语言内存/指针相关

内存数据类型–更好的内存管理数据类型&#xff1a;固定大小内存的别名typedef结构体的别名 typedef struct Student MyStudent给指针起别名 typedef char * PCHAR给变量起别名 typedef longlong mylong_t注意&#xff1a;void类型不能typedefvoid只能对函数返回和参数的限定vo…