OpenShift Express:部署Java EE應用程序(支持AS7)

在過去的幾年中,我越來越聽到有關“云”服務的信息。 最初,我并不是很想嘗試一下。 但是幾個月后(一年?),我決定看看這是怎么回事。 我從事Java EE開發已經超過7年了,所以我決定看看將Java EE應用程序部署到云中需要什么。 我著手尋找文檔和其他常見的博客文章等。

那時,無論我想試用哪種云服務,都需要我提供我的信用卡詳細信息,甚至還可以試用試用應用程序。 我不太想提供我的信用卡詳細信息,只是為了嘗試我的一些應用程序。 因此,盡管我一直在閱讀有關其他開發人員在將其應用程序部署到云上的工作,但我還是有點放棄在云上試用我的應用程序的想法。

大約在同一時間,我遇到了一篇詳盡的文章,內容涉及一位開發人員如何在Google App Engine – Part1 , Part2上設置涉及Weld和JSF的應用程序。 該博客寫得很好,并解釋了在云服務上啟動并運行Java EE應用程序所需的條件。 但是這些文章中的重要信息是,擁有按Java EE標準(可移植)實現的應用程序的用戶必須更改許多應用程序部分才能使其在云上運行。 這是因為云服務提供商不支持許多Java EE技術。 這看起來對我沒有吸引力。 畢竟,這樣做會給我帶來什么好處。 因此,在那時,作為Java EE開發人員,我對在云上部署應用程序的實驗不太感興趣。


輸入OpenShift!

但是,本月,關于能夠將JBoss AS7 Java EE應用程序部署到云的OpenShift公告引起了我的注意。 順便說一句,我確實在RedHat工作,并且是JBoss AS7團隊的一員,但是我沒有一直在關注OpenShift團隊的工作,所以這一宣布令人驚喜! 因此,我決定嘗試一下。 閱讀項目站點上的一些文檔之后,我發現OpenShift提供了兩種不同的服務。 一個是“ OpenShift Express”,另一個是“ OpenShift Flex”。 OpenShift Express是免費使用的(對我來說是個好消息),而OpenShift Flex需要您的Amazon EC2憑證,您需要為EC2的使用付費(但是目前正在進行免費試用)。 我決定嘗試一下OpenShift Express,因為它是免費的,并且適合我目前的需要,只需嘗試快速簡單的Java EE應用程序部署以及對該應用程序的訪問即可。

因此,這就是我能夠將Java EE應用程序部署到OpenShift Express的過程,該應用程序使用Java EE6 Web配置文件中可用的技術,并且可以在本地AS7實例上很好地部署。 您可能已經猜到我不是OpenShift(或一般的云服務)專家,因此本文沒有任何高級技術細節,但包含更多有關將Java EE應用程序部署到OpenShift Express的方法。 。

因此,讓我們開始吧。

注冊

第一步是在這里注冊,為自己創建一個帳戶。 注冊僅需要一個有效的電子郵件地址,您的帳戶詳細信息將被發送到該電子郵件地址。 注冊后,您會收到一封郵件,其中包含用于激活您的帳戶的鏈接,并將帶您進入登錄屏幕。 使用您以前注冊的電子郵件ID和密碼登錄。

獲得對OpenShift Express的訪問權限

因此,讓我們進入OpenShift Express頁面 。 在該頁面上,您會注意到左側的“快速訪問訪問權限”按鈕。 單擊它可以訪問“快速”。 我們會通過郵件通知您(立即)您注冊的電子郵件ID。 檢查包含快速入門指南鏈接的郵件,以幫助您開始使用OpenShift Express。

安裝客戶端工具

快速入門包含指導您開始安裝過程的說明。 第一步包括在系統上安裝一些客戶端工具,以幫助您與OpenShift進行交互。 請按照這些說明來安裝客戶端工具(由于在該指南中已對此進行了很好的說明,因此在此不再贅述)。

建立網域

現在有了客戶端工具后,就可以在OpenShift云上設置“域”了。 設置域將創建可用于您的應用程序的唯一域名。 域名將是URL的一部分,您將使用該域名來訪問該應用程序,并將其發布給用戶以進行訪問。 創建域的命令很簡單:

rhc-create-domain -l <email-id-you-registered-with> -n <domain-name-of-your-choice>

運行該命令將詢問您用于注冊的密碼。 輸入該密碼,然后完成命令(幾秒鐘)。

“ rhc-create-domain”是您先前安裝的客戶端工具的一部分。 如果尚未安裝這些工具,那么您將無法使用這些命令,因此請不要錯過這一步! “ rhc-create-domain”接受更多可選參數。 要查看可接受的參數列表,可以運行以下命令:

rhc-create-domain --help

創建一個jbossas-7.0應用程序

成功創建域后,下一步就是創建“應用程序”。 當前,OpenShift Express支持不同的“類型”的應用程序,每個應用程序都由Git (版本控制系統)支持。 在撰寫本文時,支持的應用程序類型為jbossas-7.0,perl-5.10,rack-1.1,wsgi-3.2和php-5.3。 我對部署Java EE應用程序感興趣,因此我將創建一個“ jbossas-7.0”應用程序。 這種類型的應用程序在OpenShift云中為您提供了JBoss AS 7.0.0實例,您可以在其中部署應用程序。 現在讓我們創建一個類型為jbossas-7.0的應用程序。

請注意,術語“應用程序”可能有點令人困惑(至少我發現它有點令人困惑),因為此時您要做的只是設置JBoss AS7服務器。

創建應用程序的命令是rhc-create-app。 rhc-create-app接受多個選項。 有關選項的完整列表,請運行:

rhc-create-app --help

要創建jbossas-7.0應用程序,我們將運行以下命令:

rhc-create-app -a <application-name> -l <email-id-you-used-to-register> -t jbossas-7.0 -r <path-on-local-filesystem-for-the-repository>

運行該命令將詢問您用于注冊的密碼。 輸入該密碼,然后完成命令(幾秒鐘)。

-a選項可讓您指定應用程序的名稱。 該名稱將成為您用來訪問應用程序的URL的一部分。 如果您的應用程序名稱為“ foo”,(先前創建的)域名為“ bar”,則用于訪問您的應用程序的URL為http://foo-bar.rhcloud.com/。

該命令中的-t選項指定應用程序類型。 在我們的案例中,我們對jbossas-7.0感興趣

另一個重要的選項是-r選項,您將使用它來指向本地文件系統上的文件夾,OpenShift將在其中存儲與應用程序相關的所有數據。 該數據的一部分將是git repo(版本控制系統)的本地副本。 我們稍后將在此博客中更詳細地介紹這一點。

訪問您的服務器URL

因此,一旦您運行命令并成功完成命令,它將打印出該應用程序可用的URL。 您可以(立即)使用該URL訪問該應用程序。 訪問該URL時,您會注意到一個歡迎頁面,這表明該應用程序已成功安裝并且可以訪問。 對我來說,新創建的應用程序的URL是http://jaikiran-jbossas.rhcloud.com/ 。

因此,在這一點上,我們先創建了一個域,然后創建了一個應用程序,并確保世界可以訪問該域。 簡而言之,您的云服務器已啟動并正在運行,現在您可以將Java EE應用程序部署到該服務器上。

創建和部署Java EE應用程序

現在,讓我們轉到創建和部署Java EE應用程序的步驟。 我沒有任何特定的應用程序,但是想部署一個涉及訪問數據庫的應用程序。 我決定使用JBoss AS7隨附的一種快速入門應用程序,而不是創建一個全新的應用程序。 JBoss AS7的快速入門應用程序可在此處下載。 下載快速入門檔案后,將其解壓縮到您選擇的位置。 構建快速入門示例將需要在系統上安裝Maven構建工具。 有關快速啟動應用程序以及如何構建它們的詳細信息,請參見此處 。 那些有興趣親自嘗試的人可能會想看看該指南。

從這些快速入門中,我選擇了“ kitchensink”應用程序。 kitchensink應用程序使用Java持久性API(JPA)來實現持久性,并且默認情況下使用JBoss AS7默認提供的java:jboss / datasources / ExampleDS。 ExampleDS使用H2作為數據庫,這是persistence.xml的樣子:

<?xml version="1.0" encoding="UTF-8"?>  <persistence version="2.0"  xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="  http://java.sun.com/xml/ns/persistence  http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">  <persistence-unit name="primary">  <!-- If you are running in a production environment, add a managed   data source, the example data source is just for proofs of concept! -->  <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>  <properties>  <!-- Properties for Hibernate -->  <property name="hibernate.hbm2ddl.auto" value="create-drop" />  <property name="hibernate.show_sql" value="false" />  </properties>  </persistence-unit>  </persistence>

現在,這足以說明我如何部署應用程序以及OpenShift Express中可用的數據庫支持。

構建應用程序后 ,可部署的戰爭名為jboss-as-kitchensink.war,可在我的本地文件系統上使用。 下一步是將其部署到我們已在OpenShift Express云中設置的JBoss AS7服務器上。 讓我們看看如何完成。

將應用程序部署到OpenShift Express

記住,在使用rhc-create-app命令創建“應用程序”時,我們使用-r選項指向本地文件系統上的文件夾來創建應用程序存儲庫的本地副本。 那就是現在將用于部署我們的應用程序的地方。 就我而言,我使用/ home / jpai / OpenShift / myapps / demo作為存儲庫位置。 該文件夾的外觀如下:

demo  |  |--- deployments  |  |--- pom.xml  |  |--- README  |  |--- src

將應用程序部署到OpenShift Express的方法不止一種。 一種方法是編寫代碼,然后在本地存儲庫的src文件夾中提交源代碼,然后將更改推送到遠程git存儲庫。 然后,這將觸發您的項目在遠程存儲庫上的Maven構建。 有關此方法的更多詳細信息, 請參見此博客 。

在我們的案例中,我們將重點介紹如何將已構建的Java EE應用程序部署到您的OpenShift Express云服務器。 在上一步中,我們構建了jboss-as-kitchensink.war。 現在,將該戰爭文件復制到本地git存儲庫的“ deployments”子文件夾中。 在這種情況下,它是/ home / jpai / OpenShift / myapps / demo / deployments:

cp /home/jpai/jboss-as-quickstarts-7.0.0.Final/kitchensink/target/jboss-as-kitchensink.war /home/jpai/OpenShift/myapps/demo/deployments

將其復制到此處后,下一步是使用git commit命令“提交”此更改:

jpai@jpai-laptop:demo$ git add deployments/jboss-as-kitchensink.war  jpai@jpai-laptop:demo$ git commit -m "Deploy kitchensink application" deployments/jboss-as-kitchensink.war  [master 1637c21] Deploy kitchensink application  1 files changed, 0 insertions(+), 0 deletions(-)  create mode 100644 deployments/jboss-as-kitchensink.war

因此,此時您的廚房應用程序已提交到本地git repo。 接下來,我們應該將此提交“推送”到遠程git repo:

jpai@jpai-laptop:openshift$ git push origin master  Counting objects: 6, done.  Delta compression using up to 2 threads.  Compressing objects: 100% (4/4), done.  Writing objects: 100% (4/4), 393.71 KiB, done.  Total 4 (delta 1), reused 0 (delta 0)  remote: Stopping application...  remote: done  remote: Found .openshift/config/standalone.xml... copying to ...  ....  ....  ....  remote: Starting application...done  To ssh://6a7ff43a6c2246999de28219a5aaa4ae@jaikiran-jbossas.rhcloud.com/~/git/jaikiran.git/  6e57976..1637c21 master -> master

(從上面的輸出中整理了一些日志)。

因此,通過“推送”,我們現在將我們的應用程序部署到了遠程OpenShift Express JBoss AS7服務器。 jboss-as-kitchensink.war將部署在“ jboss-as-kitchensink” Web應用程序上下文中。 因此,用于訪問該應用程序的URL為http://jaikiran-jbossas.rhcloud.com/jboss-as-kitchensink 。 繼續并訪問該URL。 該應用程序沒有任何花哨的功能–它允許您添加用戶名,電子郵件和電話號碼,然后將其存儲在數據庫中。

就像我之前提到的,kitchensink應用程序使用ExampleDS數據源,該數據源由H2數據庫支持。 因此,所有數據都將遠程存儲在H2數據庫中。

使用OpenShift Express中可用的MySQL數據庫

創建jbossas-7.0應用程序類型時,OpenShift Express會為您設置MySQL數據源模板 。 數據庫的詳細信息可以在<path-to-local-repo> /。openshift / config / standalone.xml中找到:

<subsystem xmlns="urn:jboss:domain:datasources:1.0">  <datasources>  <datasource jndi-name="java:jboss/datasources/ExampleDS" enabled="true" use-java-context="true" pool-name="H2DS">  <connection-url>jdbc:h2:${jboss.server.data.dir}/test;DB_CLOSE_DELAY=-1</connection-url>  <driver>h2</driver>  <pool></pool>  <security>  <user-name>sa</user-name>  <password>sa</password>  </security>  <validation></validation>  <timeout></timeout>  <statement></statement>  </datasource>  <datasource jndi-name="java:jboss/datasources/MysqlDS" enabled="false" use-java-context="true" pool-name="MysqlDS">  <connection-url>jdbc:mysql://127.1.1.1:3306/mysql</connection-url>  <driver>mysql</driver>  <security>  <user-name>admin</user-name>  <password>changeme</password>  </security>  </datasource>  <drivers>  <driver name="h2" module="com.h2database.h2">  <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>  </driver>  <driver name="mysql" module="com.mysql.jdbc">  <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>  </driver>  </drivers>  </datasources>  </subsystem>

您會注意到,除了AS7中默認提供的ExampleDS外,OpenShift Express還設置了一個MySQL數據源,該數據源可從java:jboss / datasources / MysqlDS獲得。 這里要注意的重要一點是默認情況下它是禁用的(即enabled = false)。 另請注意,密碼為“ changeme”。 基本上,standalone.xml中MysqlDS的此數據源配置作為模板存在。 為了啟用該數據源,我們首先必須為我們的應用程序創建一個MySQL數據庫。 可以通過使用以下命令來完成:

jpai@jpai-laptop:openshift$ rhc-ctl-app -a <application-name> -l <email-id-we-used-to-register> -e add-mysql-5.1

rhc-ctl-app傳遞了應用程序名稱(這是我們在rhc-create-app期間使用的名稱)以及我們的帳戶ID。 此外,我們使用-e選項來指定我們要執行的操作。 在這種情況下,我們發出“ add-mysql-5.1”命令。 運行該命令將要求您輸入帳戶密碼,成功完成后將顯示類似以下內容的輸出:

RESULT:  Mysql 5.1 database added. Please make note of these credentials:  Root User: admin  Root Password: as43n34023n  Connection URL: mysql://127.1.1.1:3306/

記下用戶名,密碼和連接URL。 現在,在文本編輯器中打開<repo-home> /。openshift / config / standalone.xml,并更新MysqlDS配置以使用連接URL,用戶名和新密碼。 還將啟用標志設置為“ true”,以便啟用數據源。 最終,數據源配置將如下所示:

<datasource jndi-name="java:jboss/datasources/MysqlDS" enabled="true" use-java-context="true" pool-name="MysqlDS">  <connection-url>jdbc:mysql://127.1.1.1:3306/mysql</connection-url>  <driver>mysql</driver>  <security>  <user-name>admin</user-name>  <password>as43n34023n</password>  </security>  </datasource>

注意連接URL。 它的格式必須為jdbc:mysql:// <ip:port> / dbname。 通常,您根本不需要觸摸該連接URL,因為rhc-ctl-app add-mysql-5.1和數據源模板與IP /端口同步。 要更改的重要部分是密碼和啟用標志。

更新此文件后,保存更改并將其提交到本地git repo:

jpai@jpai-laptop:demo$ git commit -m "Enable the MysqlDS and fix the password" ./  [master dd7b58a] Fix the datasource password  1 files changed, 1 insertions(+), 1 deletions(-)  Push these changes to remote repo:  jpai@jpai-laptop:openshift$ git push origin master  Counting objects: 9, done.  Delta compression using up to 2 threads.  Compressing objects: 100% (4/4), done.  Writing objects: 100% (5/5), 494 bytes, done.  Total 5 (delta 2), reused 0 (delta 0)  remote: Stopping application...  remote: done  ....  .....  remote: Starting application...done  To ssh://6a7ff43a6c2246999de28219a5aaa4ae@jaikiran-jbossas.rhcloud.com/~/git/jaikiran.git/  2d38fa8..dd7b58a master -> master

因此,我們現在添加了MySQL DB并啟用了MysqlDS數據源,該數據源可從服務器上的java:jboss / datasources / MysqlDS jndi名稱獲得。 因此,如果kitchensink應用程序必須使用MySQL作為數據庫而不是H2,那么它所要做的就是使用java:jboss / datasources / MysqlDS。 現在,讓我們編輯前面看到的persistence.xml文件,并使用MysqlDS代替:

<?xml version="1.0" encoding="UTF-8"?>  <persistence version="2.0"  xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="  http://java.sun.com/xml/ns/persistence  http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">  <persistence-unit name="primary">  <!-- Changed to use MysqlDS -->  <jta-data-source>java:jboss/datasources/MysqlDS</jta-data-source>  <properties>  <!-- Properties for Hibernate -->  <property name="hibernate.hbm2ddl.auto" value="create-drop" />  <property name="hibernate.show_sql" value="false" />  </properties>  </persistence-unit>  </persistence>

另外,為了“表明”該新應用程序已被更新為使用MySQL數據庫,我還編輯了kitchensink應用程序的index.xhtml頁面,以在該頁面上添加一條有關正在使用的MySQL數據庫的消息:

<h3>  <span style="color: red;">  This application uses MySQL database as its persistence store  </span>  </h3>

接下來,我將使用Maven在本地構建kitchensink應用程序,以反映這些更改并生成新的jboss-as-kitchensink.war。 構建完成后,現在讓我們再次將其復制到本地git repo,然后提交更改并將其推送到遠程git repo:

jpai@jpai-laptop:kitchensink$ cp target/jboss-as-kitchensink.war /home/jpai/OpenShift/myapps/demo/deployments
jpai@jpai-laptop:demo$ git commit -m "Use MySQL database for kitchensink application" ./  [master ded2445] Use MySQL database for kitchensink application  1 files changed, 0 insertions(+), 0 deletions(-)
jpai@jpai-laptop:openshift$ git push origin master  Counting objects: 7, done.  Delta compression using up to 2 threads.  Compressing objects: 100% (4/4), done.  Writing objects: 100% (4/4), 1.35 KiB, done.  Total 4 (delta 2), reused 0 (delta 0)  remote: Stopping application...  remote: done  remote: Found .openshift/config/standalone.xml... copying to...  ...  ...  ...  remote: Starting application...done  To ssh://6a7ff43a6c2246999de28219a5aaa4ae@jaikiran-jbossas.rhcloud.com/~/git/jaikiran.git/  1637c21..ded2445 master -> master  jpai@jpai-laptop:demo$

(從輸出中整理了一些日志)

因此,在這一點上,我們現在已更改了廚房應用程序以使用MySQL數據庫,并將其部署到我們的OpenShift Express AS7服務器。 因此,讓我們再次訪問應用程序URL http://jaikiran-jbossas.rhcloud.com/jboss-as-kitchensink 。 如您所見,該頁面現在突出顯示了有關正在使用的MySQL DB的消息。 繼續并通過添加一些虛擬用戶信息來試用該應用程序。

而已! 我們已將應用程序成功部署到OpenShift Express服務器,并且該應用程序可供使用。

摘要

到目前為止,使用OpenShift一直是令人愉快的體驗。 我計劃在未來的幾天中使用OpenShift嘗試其他一些事情,并在博客中發布任何有趣的細節。

有用的資源

在部署此應用程序時,我不得不使用一些文檔和OpenShift社區的幫助來了解如何進行全部設置。 以下是與OpenShift相關的有用資源的列表:

OpenShift Express用戶指南
OpenShift論壇
irc.freenode.net上的OpenShift IRC #openshift。 這里的人非常有幫助! 斯科特·斯塔克(Scott Stark)的博客。 Scott的博客通常包含有關OpenShift和OpenShift上AS7的許多有用信息。 斯科特的博客絕對是必讀!

在哪里尋求幫助

通常,OpenShift問題可在OpenShift論壇中得到解答。 對于OpenShift上有關AS7的問題,最好的提問場所是JBoss Cloud Group。

參考: OpenShift Express:在Jaikiran My Wiki博客上從JCG合作伙伴 Jaikiran Pai 部署Java EE應用程序(支持AS7) 。

相關文章 :

  • 紅帽Openshift:入門–云中的Java EE6
  • Oracle WebLogic Java云服務–幕后花絮。
  • Java EE過去,現在和云7
  • 在云中開發和測試
  • 從Spring到Java EE 6

翻譯自: https://www.javacodegeeks.com/2012/01/openshift-express-deploy-java-ee.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374003.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

07 總結ProgressDialog 異步任務

1,ProgressDialog> //使用對象 設置標題 progressDialog.setTitle("標題"); //設置圖標 progressDialog.setIcon(R.drawable.ic_launcher); //設置展示的內容 progressDialog.setMessage(&q…

python函數封裝計算n運算_在Python里面怎么可以運算出999999999**999999999,求思路?...

>>> 999999999 * math.log(999999999, 2) / 8 / 1024 ** 33.480509950621777所以這個數字本身就差不多需要3.5GB內存&#xff0c;考慮到計算過程中需要存儲臨時結果&#xff0c;還需要翻個兩三倍吧而Python中的long可以到多少呢&#xff1a;#define MAX_LONG_DIGITS \…

C++中const關鍵字的使用總結

const是不變的意思&#xff0c;在C程序中&#xff0c;經常用const來限制對一個對象的操作: 1.1 const變量 例如&#xff1a; const int n3; 則這個變量的值不能改變&#xff0c;即不能對變量賦值。 1.2 const參數 出現在函數參數中的const表示在函數體中不能對這個參數做修改…

php封裝redis負載均衡類

$array array( master > array( "redis://127.0.0.1:6379?timeout1", ), slave > array( "redis://127.0.0.1:6479?timeout1", "redis://127.0.0.1:6579?timeout1", ) ); $redis R…

我今天對JavaFX的了解

如果您沒有聽說過&#xff0c;JavaFX 2是Java的新Desktop / web / client框架。 自JavaFX 1以來&#xff0c;它已經進行了相當大的改動&#xff08;坦率地說&#xff0c;效果并不那么令人印象深刻&#xff09;。 自定義腳本語言已經淘汰了&#xff0c;您可以使用標準Java和基于…

怎么解決xp系統不能安裝NET Framework4.0?

.net 4.0安裝不上解決方法&#xff1a; 引用 9 樓 MoreQuestion 的回復: 全部都不行&#xff01;就是用360軟件管家安裝那個就可以了。用了樓主的方法&#xff0c;果然可行啊 1.先安裝wic。 2.用360安裝.net40 本帖最后由 不懂 于 2014-6-6 00:56 編輯Windows Server 2003 如何…

C++內聯(inline)函數

內聯函數 內聯函數是一種特殊類型的函數&#xff0c;內聯函數在定義或聲明時前面加上“inline”關鍵字。比如&#xff1a; inline int max(int a,int b) { return (a>b)?a:b; } 內聯&#xff08;inline&#xff09;是內聯擴展&#xff08;inline expansion&#xff09;的簡…

我的python學習筆記全集_記錄我的Python學習筆記

不想再像以前那樣&#xff0c;什么都從頭開始學習語法、總結語法&#xff0c;這樣反而會過分糾結于語法&#xff0c;耽誤了開發&#xff0c;畢竟語言的主要屬性是工具&#xff0c;次要的屬性是語言本身。所以還是先熟練使用語言去進行開發&#xff0c;等足夠熟悉了&#xff0c;…

HDU 5794:A Simple Chess(Lucas + DP)

題目鏈接&#xff1a;http://acm.split.hdu.edu.cn/showproblem.php?pid5794 題意&#xff1a;讓一個棋子從&#xff08;1,1&#xff09;走到&#xff08;n&#xff0c;m&#xff09;&#xff0c;要求像馬一樣走日字型并只能往右下角走。里面還有r個障礙點不能經過或者到達&am…

php源碼分析之PHPAPI宏的作用

在PHP源碼中&#xff0c;我們經常會看到很多函數前面有個PHPAPI&#xff0c;但這是什么呢&#xff1f; 于是我在php源碼/main/php.h中找到了它的定義 #ifdef PHP_WIN32 # include "tsrm_win32.h" # include "win95nt.h" # ifdef PHP_EXPORTS # …

15分鐘內開始使用Amazon Web Services和全自動資源調配

在等待一個新項目時&#xff0c;我想學習一些有用的東西。 而且由于在許多項目中我們需要評估和測試正在開發的應用程序的性能&#xff0c;而很少有足夠的硬件來生成實際負載&#xff0c;因此我決定學習更多有關按需在云中按需配置虛擬機的知識&#xff0c;即Amazon Web Servic…

解析JVM內存區域組成

在方法&#xff08;代碼塊&#xff09;中定義一個變量時&#xff0c;java就在棧中為這個變量分配JVM內存空間&#xff0c;當超過變量的作用域后&#xff0c;java會自動釋放掉為該變量所分配的JVM內存空間&#xff1b;而在堆中分配的JVM內存由java虛擬機的自動垃圾回收器來管理。…

python打開瀏覽器后帶cookie_Python爬蟲使用瀏覽器的cookies:browsercookie

很多用Python的人可能都寫過網絡爬蟲&#xff0c;自動化獲取網絡數據確實是一件令人愉悅的事情&#xff0c;而Python很好的幫助我們達到這種愉悅。然而&#xff0c;爬蟲經常要碰到各種登錄、驗證的阻撓&#xff0c;讓人灰心喪氣(網站&#xff1a;天天碰到各種各樣的爬蟲抓我們網…

VS插件開發

參考資料: VS插件開發 - 個性化VS IDE編輯器 自己動手編寫一個VS插件&#xff08;一&#xff09; VS Addin插件基本開發入門 VS Addin插件配置、部署 轉載于:https://www.cnblogs.com/wangwangfei/p/5830081.html

使用AspectJ,Javassist和Java Proxy進行代碼注入的實用介紹

靜態地或在運行時將代碼片段注入已編譯的類和方法中的功能可能會很有幫助。 這尤其適用于在沒有源代碼的第三方庫中或在無法使用調試器或探查器的環境中對問題進行故障排除。 代碼注入對于處理涉及整個應用程序的問題&#xff08;例如性能監視&#xff09;也很有用。 以這種方式…

Java中的變量

java類的成員變量有兩種&#xff1a;一種是被static關鍵字修飾的變量&#xff0c;叫類變量或者靜態變量&#xff1b;另一種沒有static修飾&#xff0c;為實例變量。 在語法定義上的區別&#xff1a;靜態變量前要加static關鍵字&#xff0c;而實例變量前則不加。 在程序運行時的…

無限漫游

一、FAT AP架構下&#xff0c;AP設備不做認證時&#xff1a; (1) AP1&#xff0c;AP2正常工作&#xff0c;發送Beacon幀&#xff0c;向STA通告支持的無線服務&#xff1b; (2) STA搜索到AP1的信號&#xff0c;向AP1發Probe Request,請求獲取AP1所提供的無線服務&#xff1b;AP…

uni-app內置地圖軌跡_MIUI11 新增親情守護,支持安全圍欄、運動軌跡功能

點擊右上角關注我們&#xff0c;每天給您帶來最新最潮的科技資訊&#xff0c;讓您足不出戶也知道科技圈大事&#xff01;日前&#xff0c;小米 MIUI 體驗總負責人 MIUI小凡 在微博上為大家預告了 MIUI11 的新特性「親情守護」&#xff0c;并表示「在親情守護中&#xff0c;我們…

:before與:after偽類的應用

1.小三角樣式 .tip{ position:relative; display:inline-block; width:100px; margin:100px; padding:30px 20px; color:#fff; border:1px solid #666; border-radius:5px; background-color:rgba(0,153,51,1);}.tip:before{ content:; posit…

小心重載API方法

重載方法是API設計中的重要概念&#xff0c;尤其是當您的API是流利的API或DSL&#xff08; 特定于域的語言 &#xff09;時。 對于jOOQ就是這種情況&#xff0c;在這種情況下&#xff0c;您經常想使用與完全相同的方法名稱來與庫進行各種交互。 示例&#xff1a;jOOQ條件 pac…