1. 程式人生 > >SonarQube環境搭建與實踐應用

SonarQube環境搭建與實踐應用

1. 簡要介紹

SonarQube能夠提供對程式碼的一整套檢查掃描和分析功能,擁有一套伺服器端程式,然後再通過客戶端或者別的軟體的外掛的形式完成對各開發環境和軟體的支援。

  • 對程式語言的支援非常廣泛,包括C、C++、Java、Objective C、Python、JavaScript、PHP、C#、Swift、Erlang、Groovy等眾多語言
  • 提供了對HTML、CSS、JSON、XML、CSV、SQL、JSP/JSF等型別的文件的支援
  • 提供了以FindBugs、PMD、CheckStyle方式執行程式碼分析和測試檢查的功能
  • 登入認證方式支援LDAP、Bitbucket、Azure Active Directory(AAD)、Crowd等方式
  • 提供了優美的3D檢視方式下檢視程式碼分析和測試結果報告

1. 環境要求

本文中,我們假定我們的伺服器IP是192.168.100.194

1.1 軟體環境要求

1.1.1 JDK

現在最新的SonarQube版本是6.1,要求JDK8及以上版本,官方要求如果是在Mac OS X系統上,使用Oracle JDK8取代Oracle JRE8,否則可能因為環境不完整而導致執行出現錯誤。

1.1.2 資料庫

  1. 綁定了Microsoft JDBC驅動的情況下,對於Microsoft SQL Server,支援2012(MSSQL Server 11.0)和2014(MSSQL Server 12.0),並且在Windows系統上的操作物件是區分大小寫的
  2. 綁定了MySQL JDBC驅動的情況下,對於MySQL,支援5.6和5.7,並且MySQL資料庫的資料集必須配置為UTF8字符集,並且操作物件也是區分大小寫的,並且僅支援InnoDB儲存引擎,不支援MyISAM儲存引擎
  3. 對於Oracle資料庫,支援11G和12C,但是12.x的驅動是不被支援的,XE版本是支援的,必須設定為使用UTF8字符集,並且支援BINARY排序,資料庫模式僅支援thin,不支援OCI
  4. PostgreSQL,支援8.x和9.x,必須配置為使用UTF8字符集

CentOS下預設的MySQL的資料庫版本是5.1,是不被受支援的,如果直接部署和執行SonarQube,會無法使用,所以需要更新MySQL資料庫版本,然而直接使用新版本覆蓋安裝Linux發行版自帶的5.1會有N多的問題,坑太多,所以最好的解決方法是先備份現有的資料庫,然後再刪除5.1版的MySQL,再安裝新的,再將舊的資料導進來。重要的事情說三遍:先備份舊資料庫,先備份舊資料庫,先備份舊資料庫,然後再刪除,再安裝新的

。具體的操作方法如下:
先從連結http://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm上下載新版本的釋出安裝包資訊。然後再執行命令

md5sum mysql57-community-release-el6-9.noarch.rpm

驗證包的MD5,務必要和官方給出的保持一致,確認無誤才行。
現在,執行命令

rpm -ivh mysql57-community-release-el6-9.noarch.rpm

-i 是安裝指令install的簡寫,-v是詳盡模式verbose的簡寫,-h是列印要安裝的包的Hash碼(與-v組合使用)

開始安裝MySQL的釋出包,這個過程會瞬間完成。輸出類似於下面這樣的資訊:

Preparing...                ########################################### [100%]
   1:mysql57-community-relea########################################### [100%]

現在我們就可以獲取到官網上最新的穩定的Release版本5.7.16了。執行下面的命令即可:

yum install -y mysql-community-client mysql-community-server

這個過程會需要一些時間,並且不再需要我們的確認即可完成安裝,並且會明確提示會使用5.7.16替換已經存在的5.1.73,輸出類似於這樣的資訊說明:

==================================================================================================================================================================================================
 Package                                                   Arch                                 Version                                     Repository                                       Size
==================================================================================================================================================================================================
Installing:
 mysql-community-client                                    x86_64                               5.7.16-1.el6                                mysql57-community                                23 M
     replacing  mysql.x86_64 5.1.73-7.el6
 mysql-community-libs                                      x86_64                               5.7.16-1.el6                                mysql57-community                               2.1 M
     replacing  mysql-libs.x86_64 5.1.73-7.el6
 mysql-community-libs-compat                               x86_64                               5.7.16-1.el6                                mysql57-community                               1.6 M
     replacing  mysql-libs.x86_64 5.1.73-7.el6
 mysql-community-server                                    x86_64                               5.7.16-1.el6                                mysql57-community                               144 M
     replacing  mysql-server.x86_64 5.1.73-7.el6
Installing for dependencies:
 mysql-community-common                                    x86_64                               5.7.16-1.el6                                mysql57-community                               327 k

完成之後會給出這樣的結果輸出

Installed:
  mysql-community-client.x86_64 0:5.7.16-1.el6   mysql-community-libs.x86_64 0:5.7.16-1.el6   mysql-community-libs-compat.x86_64 0:5.7.16-1.el6   mysql-community-server.x86_64 0:5.7.16-1.el6  

Dependency Installed:
  mysql-community-common.x86_64 0:5.7.16-1.el6                                                                                                                                                    

Replaced:
  mysql.x86_64 0:5.1.73-7.el6                                 mysql-libs.x86_64 0:5.1.73-7.el6                                 mysql-server.x86_64 0:5.1.73-7.el6                                

Complete!

安裝完成之後,還需要設定資料庫的字符集,開啟/etc/my.cnf,在[mysqld]這個節下面新增這兩行:

character_set_server=utf8  
init_connect='SET NAMES utf8'

然後重新啟動mysqld服務。如果啟動mysqld服務時卡在Installing validate password plugin:這個步驟過不去,可以先中止這個過程,然後開啟/etc/my.cnf,在[mysqld]這個節下面新增一行內容:

validate_password=off

這是臨時禁止密碼驗證外掛,可以在以後需要的時候再配置即可。

此時的資料庫已經正常工作了,還是我們還不能使用,需要開啟/var/log/mysqld.log,找到類似於下面的內容:

A temporary password is generated for [email protected]: -?i;XHTuh5eH

這裡的-?i;XHTuh5eH就是臨時密碼,使用它可以在鍵入

mysql -u root -p

之後再輸入密碼,成功登入到MySQL,此時再使用命令

alter user 'root'@'localhost' identified by '123';

更新root使用者的預設密碼,5.6以後的版本安全機制增強了,臨時密碼只允許登入,不允許操作資料庫,所以必須更改。
此時已經完全可以操作資料庫了,驗證方法是敲入下面的命令能夠看到正確的結果:

select host,user from user;

但是現在我們只能在本地使用,無法使用遠端客戶端連線資料庫,因此需要再次配置一下:

update user set host='%' where user='root';
flush privileges;

現在,就可以使用Navicat之類的工具進行遠端訪問了。

1.1.3 瀏覽器

  • IE9,不支援
  • IE10,不支援
  • IE11,支援
  • Microsoft Edge,支援
  • Mozilla Firefox,支援
  • Google Chrome,支援
  • Opera,未測試,情況不明
  • Safari,支援

1.2 硬體環境要求

  1. 系統安裝記憶體不小於2GB,系統可用記憶體不小於1GB
  2. 磁碟空間需求的大小,依賴於SonarQube Server上分析的專案的數量和大小,官方稱,SonarQube.com上公開的SonarQube中的例項中,2500萬行的程式碼分析,累計了4年以上的時間,消耗磁碟空間達到10GB
  3. SonarQube安裝的硬碟裝置必須具備有可讀可寫的許可權,尤其重要的是資料目錄(data folder)在ElasticSearch引擎建立索引的時候,以及SonarQube Server啟動和執行期間,會有大量的I/O操作,因此效能消耗會比較大

2. 初步應用

2.1 下載安裝

  • 從官網下載zip包
  • 在本地解壓
  • 進入bin目錄,再進入相應的作業系統版本,執行即可,在64位的Linux為例,進入sonarqube-6.1/bin/linux-x86-64,再執行命令nohup ./sonar.sh start &即可
    此時使用的是一個內建的小型資料庫,僅支援體驗產品功能,無法規模化使用,要想規模化使用,需要與資料庫連線,我們以MySQL為例:

現在登入到資料庫,輸入下面的命令為SonarQube Server端建立資料庫:

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

建立SonarQube Server訪問資料庫的使用者:

CREATE USER 'sonar' IDENTIFIED BY 'sonar';

配置SonarQube Server訪問資料庫使用者的許可權

GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
flush privileges;

開啟SonarQube目錄下的conf/sonar.properties檔案,配置它的資料庫連線,啟用和配置下面的選項:

sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

事實上這個檔案中還有很多選項可以設定,我們先保持預設值,以後再說。現在儲存退出之後,轉到SonarQube目錄下的bin/linux-x86-64目錄去,執行下面的命令啟動SonarQube

nohup ./sonar.sh start

現在,就可以開始訪問了,SonarQube預設的埠號是9000,請確認它沒有被佔用,如果佔用了,就繼續在sonar.properties中修改sonar.web.port這個選項的值並且啟用它。現在我們就以下面的地址為例:

http://192.168.100.194:9000

訪問成功時會顯示下面的畫面:


SonarQube DashboardSonarQube Dashboard

配置成功之後,再次從客戶端使用瀏覽器開啟SonarQube,不會再在頁面下沿提示使用臨時資料庫面不能規模化使用的提示。

3. 與Jenkins聯合應用

3.1 安裝Jenkins外掛並配置選項

在Jenkins中安裝和使用SonarQube的先決條件:

  • 安裝外掛SonarQube Plugin,並且Jenkins外掛SonarQube Plugin在配置位置Jenkins->Configuration->Configure System->SonarQube servers中的選項Server URL要配置正確,使用已經安裝好的SonarQube Server的URL

3.2 第一種做法(Pipeline指令碼方式)

這種做法的要點是通過呼叫SonarQube的Server外掛和安裝在Jenkins伺服器上的SonarScanner來完成對程式碼的掃描和檢查。所以需要在Jenkins所在伺服器上安裝SonarScanner,這個步驟其實很簡單,將SonarScanner下載之後解壓到任意位置就可以了。然後需要確認下面的配置正確有效:

  • SonarScanner安裝目錄中配置檔案conf/sonar-scanner.properties中的選項sonar.host.url

配置成功之後,在Pipeline指令碼中新增下面的程式碼:

stage 'analysis'
def scannerHome = tool 'SonarQube Scanner';
withSonarQubeEnv('SonarQube server') {
    sh "${scannerHome}/bin/sonar-scanner"
}

程式碼中,第2行是引用Jenkins的SonarQube Plugin的配置名稱,第3行是在外掛中對SonarQube Server的配置名稱,表示在此處指定使用這個伺服器的配置環境執行檢查,如果你配置了多個SonarQube Sever,它們是支援通過這種方式隨時任意切換的,甚至支援根據特定條件走不同的伺服器配置和檢查流程,這就是Pipeline指令碼帶來的巨大優勢了。

到此為止,我們以為立即可以見到結果了,其實不然,會報失敗,原因是我們缺少一個名叫Project root configuration file的東西,其實這個檔案就是一個Java的Properties檔案,我們建立一個名叫sonar-project.properties的檔案,放在專案的根目錄,然後和pom.xml放在一起,當然,也可以放在其他位置。檔案的內容大概是這個樣子的:

# 指定一個專案Key,SonarQube會以這個去建立Scanner例項,所以它必須是唯一的
sonar.projectKey=ptkfz:testweb_mvn
# 下面指定的專案名稱和版本號將會在SonarQube介面上顯示出來
sonar.projectName=testweb_mvn
sonar.projectVersion=0.0.1-SNAPSHOT
 
# 相對於配置檔案sonar-project.properties file的原始碼路徑
# 自SonarQube 4.2之後,這個選項在sonar.modules已經設定了的情況下會被忽略
# 如果沒有設定,SonarQube將會從包含了sonar-project.properties檔案的目錄中開始查詢
# 原始碼檔案
sonar.sources=.
 
# 原始碼檔案的字元編碼,預設使用作業系統的編碼方案
sonar.sourceEncoding=UTF-8

再次提交,然後我們將Pipeline指令碼改一下,讓SonarScanner能夠找到我們配置的這個檔案:

stage 'analysis'
def scannerHome = tool 'SonarQube Scanner';
withSonarQubeEnv('SonarQube server') {
    sh "${scannerHome}/bin/sonar-scanner -Dproject.settings=testweb_mvn/sonar-project.properties"
}

現在就可以成功了。結果如下圖所示:


https://raw.githubusercontent.com/ccpwcn/GitRepository/master/resource/sonarqube/Jenkins%26Pipeline%26SonarScanner.pnghttps://raw.githubusercontent.com/ccpwcn/GitRepository/master/resource/sonarqube/Jenkins%26Pipeline%26SonarScanner.png

構建成功之後我們登入到SonarQube伺服器上去,就能看到剛才構建的任務的分析情況了,如下圖所示:


https://raw.githubusercontent.com/ccpwcn/GitRepository/master/resource/sonarqube/SonarQube%20Dashboard%20001.pnghttps://raw.githubusercontent.com/ccpwcn/GitRepository/master/resource/sonarqube/SonarQube%20Dashboard%20001.png

細節報表圖:


https://raw.githubusercontent.com/ccpwcn/GitRepository/master/resource/sonarqube/SonarQube%20Dashboard%20002.pnghttps://raw.githubusercontent.com/ccpwcn/GitRepository/master/resource/sonarqube/SonarQube%20Dashboard%20002.png

使用Pipeline這種做法的好處顯而易見,不需要做全域性範圍的配置改動,適用於不同專案的不同策略,具有很強的個性化配置功能。

3.3 第二種做法(傳統Maven專案)

這種做法的要點是通過Maven對Sonar的支援來完成,它有一個要求,要修改Maven的setting.xml的配置,否則不能生效。

修改Maven配置之後,在Maven構建指令上加上一個Goals即可:

$SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL

上面的指令中,$SONAR_MAVEN_GOAL的值一般是sonar:sonar,$SONAR_HOST_URL的值是SonarQube server的實際地址。注意:通過對Jenkins中的Maven專案配置Post-build Action for Maven analysis這種方式實現呼叫Sonar對程式碼進行分析檢查現在仍然是可用的,但是它已經被官方宣告為廢棄的做法,以後將不會被支援。

這種做法的特點是一旦全域性配置了,可以隨時在任何專案上立即啟用Sonar程式碼檢查機制,但是它的影響面比較大,需要團隊協同才能做好。

3.4 結果處理與分析

4. 與Eclipse聯合應用

Sonar與Eclipse聯合應用非常簡單,只需要安裝一個外掛SonarLint for Eclipse即可,下載連結http://www.sonarlint.org/eclipse/,安裝之後在Eclipse中建立一個專案,然後在 編寫程式碼的時候,我們隨時就可以在SonarLint Console上看到Sonar對我們的程式碼的分析情況了,如下圖所示:

https://raw.githubusercontent.com/ccpwcn/GitRepository/master/resource/sonarqube/Eclipse%20SonarLint%20001.pnghttps://raw.githubusercontent.com/ccpwcn/GitRepository/master/resource/sonarqube/Eclipse%20SonarLint%20001.png

還可以在工程上點選右鍵,選擇SonarLint->Bind to SonarQube project,這個選項的目的是將當前工程直接與SonarQube Server相繫結,程式碼分析質量情況隨時會上傳到SonarQube Server上去,供團隊使用,也是很方便的。

5. 附加資訊

5.1 MySQL升級之故障與除錯

將MySQL從5.1升級到5.7.16之後,再次輸入下面的命令啟動服務

service mysqld start

結果會啟動失敗,此時檢查/var/log/mysqld.log,會發現首先是提示/var/lib/mysql/ib_buffer_pool這個檔案找不到,那麼我們建立一個,使用下面的命令

touch /var/lib/mysql/ib_buffer_pool

兩次嘗試,仍然沒有能夠啟動成功,報的錯誤是

2016-11-01T07:22:07.120868Z 0 [Warning] Failed to open optimizer cost constant tables

2016-11-01T07:22:07.121704Z 0 [ERROR] Fatal error: mysql.user table is damaged. Please run mysql_upgrade.
2016-11-01T07:22:07.121845Z 0 [ERROR] Aborting

看提示是MySQL使用者表出現了錯誤,被損壞了,需要升級,那麼我們使用下面的命令

mysqld -initialize --user=mysql

命令沒有報任何錯誤,再次嘗試啟動mysqld服務的時候,又失敗了,再查日誌,仍然是mysql.user table is damaged這個錯誤,找半天原因,發現在/etc/init.d/mysqld啟動指令碼109行中有這樣的命令項

action $"Initializing MySQL database: " /usr/sbin/mysqld --initialize --datadir="$datadir" --user=mysql

事實上所謂的MySQL使用者表損壞了要初始化修復,是個偽命題,原因很簡單,看上面這個檔案內容就知道,呼叫mysqld的start函式的時候,會自動呼叫這個命令的,手動操作也是徒勞。當然了,也並非一無所獲,因為距離109行不遠的91行有這樣的命令選項

if [ ! -d "$datadir/mysql" ] ; then

這是在判斷mysql不是一個有效的檔案的時候,才會走這個邏輯,並且在這個邏輯之前,還有一個判斷,在第93-96行,是這樣的

if [ ! -e "$datadir" -a ! -h "$datadir" ]
then
mkdir -p "$datadir" || exit 1
fi

如果mysql的資料目錄不存在,就會執行建立,看樣子問題有可能出在這裡,緊接著這裡,123-124行上,還有這樣的命令選項:

chown mysql:mysql "$datadir"
chmod 0751 "$datadir"

看樣子不光要檢查這個資料目錄的有效性,還要設定許可權的,那我們先檢查mysql這個使用者和組是否存在吧,使用下面的命令:

cat /etc/passwd | grep mysql

確認沒問題,再檢查組:

cat /etc/group | grep mysql

也是存在的,那麼現在我們去解決資料目錄的問題。開啟/etc/my.cnf這個檔案,可以看到確實是這樣配置的

datadir=/var/lib/mysql

我們現在把它改成這個樣子的:

datadir=/var/lib/mysql5.7
socket=/var/lib/mysql5.7/mysql.sock

儲存退出,再啟動mysqld服務

5.2 安裝新版本的MySQL失敗時回滾操作

備份已經安裝的MySQL的資料

tar -cjf old_mysql_files.tar.bz2 /var/lib/mysql

刪除所有已經安裝的MySQL

yum remove mysql*
find / -name mysql
rm -rf mysql****

重新安裝MySQL伺服器端,然後恢復資料,並且重啟MySQL服務

yum install mysql-server
tar -jxvf old_mysql_files.tar.bz2
service mysqld start

5.3 刪除MySQL

刪除以yum方式安裝的包

yum remove mysql

刪除配置檔案

rm /etc/my.cnf
rm /etc/my.cnf.rpmsave

刪除資料檔案

rm -r -f /var/lib/mysql

刪除執行檔案

rm -r -f /usr/lib64/mysql

刪除以rpm方式安裝的包,要刪除到直到使用rpm -qa | grep mysql查不到MySQL的包資訊為止

rpm -qa | grep mysql
rpm -e --nodeps mysql57-community-release-el6-9.noarch
rpm -e --nodeps mysql-community-libs-5.7.16-1.el6.x86_64
rpm -e --nodeps mysql-community-common-5.7.16-1.el6.x86_64

檢視其他存在的MySQL項:

find / -name mysql

相關推薦

SonarQube環境搭建實踐應用

1. 簡要介紹SonarQube能夠提供對程式碼的一整套檢查掃描和分析功能,擁有一套伺服器端程式,然後再通過客戶端或者別的軟體的外掛的形式完成對各開發環境和軟體的支援。對程式語言的支援非常廣泛,包括C、C++、Java、Objective C、Python、JavaScript、PHP、C#、Swift、Er

Spring Boot / Spring MVC 入門實踐 (一) :環境搭建第一個專案

宣告 本系列文章系本人原創,歡迎轉載,轉載請註明出處。 本系列文章通過具體的例子,介紹如何通過Spring Boot來幫助簡化Spring MVC開發Web Application的過程,旨在通過具體的實踐,使讀者能夠入門利用Spring Boot開發Web

Mac下的Docker及Kubernetes(k8s)本地環境搭建應用部署

mac安裝docker: brew cask install docker 當然也可以直接去官網下載docker的pkg檔案安裝 mac的docker國內映象:網易的映象地址:http://hub-mirror.c.163.com。   下載kubernetes 如圖所示,mac新版

tomcat8+jdk1.8.0_131環境搭建添加用戶(win764位)

tomcattomcat8下載地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.14/bin/apache-tomcat-8.5.14-windows-x64.zip jdk1.8.0下載地址:http://download.

elk5.x環境搭建常用插件安裝

elk ELK 5.X 環境搭建與常用插件安裝環境介紹:ip: 192.168.250.131os: CentOS 7.1.1503 (Core)內存不要給的太低,至少4G吧,否則elasticsearch啟動會報錯。軟件及其版本 這裏軟件包都解壓在了/opt下,註意!logstash-

Java環境搭建配置

下一步 javase 環境 分享 sys ++ jdk1.8 8.0 java環境搭建   JDK下載與安裝   俗話說,工欲善其事,必先利其器。首先開發Java,先需要下載JDK安裝包,官網下載地址:http://www.oracle.com/technetwork/ja

dubbo開發環境搭建tomcat集成、DEMO示例(最完整版本、帶管理控制臺、監控中心、zookeeper)

-s http服務 ppr context 正常 windows web容器 web.xml配置 web.xml 以windows為例,linux基本相同,開發環境一般linux,個人環境一般windows(如果不開額外vm的話)。 示例以dubbo官方自帶demo為例子

roboframework環境搭建使用

過程 rip 窗口 style 雙擊 用例 new t images run 環境搭建 一安裝python2.7(python3.4版本的話後面ride工具裝不上,要是有高手python3.4裝成功了請指教) 1下載安裝包 2一直點擊下一步(中間過程可以自定義目錄) 二安裝

hadoop環境搭建測試

sla pre person n! count track 查看 4.2 lin 搭建參看: http://blog.csdn.net/w13770269691/article/details/16883663/ 查看集群狀態: [[email pr

安卓第一課:android studio 的環境搭建真機運行以及遇到的問題

自己的 安卓 structure 最好 not found 創建過程 cor 虛擬 col AS的下載: https://developer.android.com/studio/index.html AS的安裝: android studio, sdk, virtual

[lisp] scheme環境搭建編譯運行

文件格式 .com book factorial 加載過程 牛頓法 搭建 mac 代碼 搭建環境參考這篇 http://leochin.com/mac-scheme-install/ 用文本編輯器寫代碼 保存文件格式為 .scm 在終端中cd到scm文件所在文件夾, 執行

MongoDB(一)環境搭建初始配置

dba 註意 管理員 開機自啟動 拓展 width 間接 face 環境搭建 前言   最近的項目中需要用到MongoDB,所這段時間需要學習知道怎麽去使用這個數據庫。   這裏我先簡單的介紹一下什麽是MongoDB,後面還會詳細的介紹:     MongoDB 是一

Spring4學習筆記一:環境搭建插件安裝

str nag j2e 容器 獲取 相關 market 至少 ips 一:環境搭建 1:開發環境:JDK安裝、Eclipse安裝 2:數據庫:Mysql、Sequel Pro(數據庫可視化操作工具) 3:web服務器:Tomcat下載,並且把tomcat配置到Eclip

WIN10網狐開發環境搭建Android客戶端編譯

ces text water cto img term 技術 分享 環境 http://i2.51cto.com/images/blog/201802/09/2e8eb644b82d1642df8b920f053a7bb0.png?x-oss-process=image/w

Linux-LAMP環境搭建配置

Linux-LAMP查詢Linux系統是多少位# uname -i下載# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz # wget http://archive.apache.o

使用JAVA開發微信公眾平臺(一)——環境搭建開發接入

iges 微信平臺 校驗 後臺服務 結果 png 交互 package app 一、 初始微信公眾平臺 微信公眾平臺,即我們平時所說的“公眾號”,曾用名“官方平臺”、“媒體平臺”,但最終命名為&ldq

Notes 20180507 : Java程序設計之環境搭建HelloWord

用戶 html 自己的 notes 添加 版本 devel demo 單選 3 HelloWorld     不管從事什麽工作那麽一個工作環境總是必不可少的,那怕你只是要寫篇文章,一張平坦的書桌和流利的書寫筆總是能幫助我們完成工作的,Java開發更是如此。在開始今天的He

CUDA並行程序設計 開發環境搭建遠程調試

not -m 每次 修改ns shell 參考 搭建 安裝ubuntu 筆記本 課題需要用到GPU加速。目前使用的臺式電腦只有核心顯卡,而實驗室有一臺服務器裝有NVIDIA GTX980獨顯。因此,想搭建一個CUDA的開發環境,來實現在臺式機上面開發cuda程序,程序在服務

LAMP環境搭建配置

lin option defaults etc con 環境搭建 源碼包 com between 基本概念 LAMP是 Linux Apache MySQL PHP 的簡寫,LAMP一般用來組件Web應用平臺 Apache是最常用的Web服務軟件。 MySQL是小

zookeeper環境搭建啟動

zookeeper環境搭建與啟動解壓 [root@localhost zookeeper-3.4.6]# tar zxvf zookeeper-3.4.6.tar.gz [root@localhost zookeeper-3.4.6]# pwd /home/zookeeper/zookeeper-3.4.6