真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言開發(fā)安裝app go語言 app

如何用Go語言開發(fā)Android應用

Go 語言是一個試圖結合動態(tài)類型和靜態(tài)類型,編譯效率和安全性以及語言的易用性等眾多特性與一體的一種嘗試。他的另一個目標是支持現(xiàn)代的基于網(wǎng)絡的、基于多核的計算。最后,Go 還是非??斓?,他可以在單個計算機上僅僅花費幾秒時間構建一個龐大的應用程序。使用GO語言開發(fā)android語言步驟如下:

網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了坪山免費建站歡迎大家使用!

1. 下載安裝Go語言(版本1.5+)

Golang鏈接

回到頂部

2. 下載安裝 gomobile

下載

$ go get golang.org/x/mobile/cmd/gomobile

安裝(需要等待幾分鐘)

gomobile init

回到頂部

3. Golang開發(fā)手機應用有兩種方式

a. 原生應用開發(fā)

$ go get -d golang.org/x/mobile/example/basic

主要應用領域:

應用控制管理與配置

OpenGL ES 2 綁定

Asset 管理

Event 管理

試驗中的包,含有OpenAL 綁定、音頻、字體、圖形以及運動傳感器

Android開發(fā)

$ gomobile build -target=android golang.org/x/mobile/example/basic

此命令會生成名為basic的apk安裝包

$ gomobile install golang.org/x/mobile/example/basic

此命令將安裝apk包到已連接的android設備

如何Golang開發(fā)Android應用

環(huán)境配置好復雜,我不得不嘮叨幾句。

需要下載golang1.4rc版,下載ndk,然后編譯。 然后用go get 下載gobind這個工具, 然后,將寫好的代碼用gobind轉化下,然后使用特殊的編譯命令,將代碼編譯成.so文件,將生成的相關文件,放到android studio的項目中。然后java代碼中,利用jni調用引用的代碼。

... 好,接著往下看吧。

環(huán)境準備

一臺Linux 64的機器

一個帶有AndroidStudioIDE的開發(fā)機器

因為環(huán)境配置實在復雜,所以我們引入的docker。

docker pull codeskyblue/docker-goandroid

docker run --rm -ti codeskyblue/docker-goandroid bash

cd example; echo "view example projects

docker起來之后,什么就都配置好了,NDK啦,java啦,GO的環(huán)境變量了,等等,并且還預裝了vim,gradle,tmux,git,syncthing,svn

開始寫代碼

寫代碼之前,先約定下目錄結構

go的代碼都放在src/golib下,編譯使用make.bash編譯腳本,看下這個文件樹

.

|-- app.iml

|-- build.gradle

|-- libs/armeabi-v7a # go編譯生成的so文件

| `-- libgojni.so

|-- main.go_tmpl # 一個模板文件,先不用管它

|-- make.bash # 編譯腳本,用來生成.so和Java代碼

`-- src

|-- golib

| |-- hi

| | |-- go_hi?0?2?0?2?0?2 # 自動生成的代碼

| | | `-- go_hi.go

| | `-- hi.go # 需要編寫的代碼

| `-- main.go

`-- main

|-- AndroidManifest.xml

|-- java

| |-- go # 自動生成的代碼

| | |-- Go.java

| | |-- Seq.java

| | `-- hi

| | `-- Hi.java

| `-- me/shengxiang/gohello # 主要的邏輯代碼

| `-- MainActivity.java

`-- res

我已經(jīng)寫了一個例子,先直接搞下來

編譯下,試試行不行(就算不行問題應該也不大,因為大問題都被我消滅了)

cd GoHello/app

./make.bash

../gradlew build

一切順利的話在build/outputs/apk下應該可以看到app-debug.apk這個文件。(劇透下,這個文件只有800多K)

編譯好的我放到qiniu上了,可以點擊下載看看

下面可以嘗試改改,我拋磚引玉說下

打開hi.go這個文件

hi.go的內(nèi)容,比較簡單,我們寫Go代碼主要就是這部分

// Package hi provides a function for saying hello.

package hi

import "fmt"

func Hello(name string) {

fmt.Printf("Hello, %s!\n", name)

return "(Go)World"

}

文件末尾添加下面這行代碼

func Welcome(name string) string {

return fmt.Sprintf("Welcome %s to the go world", name)

}

使用./make.bash重新編譯下

打開MainActivity.java 修改下OnClickListener事件

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

String message = Hi.Welcome("yourname");

Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();

}

});

編譯運行下,把生成的apk安裝到手機上試試。

原理解讀(有興趣的接著看)

首先說下gobind這個工具。

go_hi/go_hi.go這個文件時通過gobind這個工具生成的,用來配合一個簡單的程序,生成.so文件

// go_hi.go

package go_hi

import (

"golang.org/x/mobile/bind/seq"

"example/hi"

)

func proxy_Hello(out, in *seq.Buffer) {

param_name := in.ReadUTF16()

hi.Hello(param_name)

}

func init() {

seq.Register("hi", 1, proxy_Hello)

}

這個簡單的程序內(nèi)容是這樣的

// main.go

package main

import (

"golang.org/x/mobile/app"

_ "golang.org/x/mobile/bind/java"

_ "example/hi/go_hi"

)

func main() {

app.Run(app.Callbacks{})

}

src/MyActivity.java文件內(nèi)容是這樣的

import ...

import go.Go; // 引入Go這個包

import go.hi.Hi; // gobind生成的代碼

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Go.init(getApplicationContext()); // 初始化兩個線程

Hi.Hello("world");

}

}

其中有一句Go.init(...)這里再看go.Go這個包是什么樣子的

public final class Go {

// init loads libgojni.so and starts the runtime.

public static void init(Context context) {

... 判斷該函數(shù)是否該執(zhí)行的代碼 -- 省略 --

System.loadLibrary("gojni"); // gojni需要這句

new Thread("GoMain") {

public void run() {

Go.run(); // run()是一個native方法

}

}.start();

Go.waitForRun(); // 這個也是一個native方法

// 這部分可以理解為,啟動了一個后臺線程不斷的接收結果到緩存中。

new Thread("GoReceive") {

public void run() { Seq.receive(); }

}.start();

}

private static boolean running = false;

private static native void run();

private static native void waitForRun();

}

MyActivity.java中還有段代碼是 Hi.Hello("world");,打開Hi.java路徑在src/go/hi/Hi.java,這個文件也是gobind生成的,是用來給java方便的調用.so文件

// Hi.java

// File is generated by gobind. Do not edit.

package go.hi;

import go.Seq;

public abstract class Hi {

private Hi() {} // uninstantiable

public static void Hello(String name) {

go.Seq _in = new go.Seq();

go.Seq _out = new go.Seq();

_in.writeUTF16(name);

Seq.send(DESCRIPTOR, CALL_Hello, _in, _out); // 下面接著說

}

private static final int CALL_Hello = 1;

private static final String DESCRIPTOR = "hi";

}

Seq.send這部分實際上最終調用的是一段go代碼

func Send(descriptor string, code int, req *C.uint8_t, reqlen C.size_t, res **C.uint8_t, reslen *C.size_t) {

fn := seq.Registry[descriptor][code]

in := new(seq.Buffer)

if reqlen 0 {

in.Data = (*[maxSliceLen]byte)(unsafe.Pointer(req))[:reqlen]

}

out := new(seq.Buffer)

fn(out, in)

seqToBuf(res, reslen, out)

}

如何部署Golang應用

如何部署Golang應用

安裝supervisord

# 通過載入程式 ez_setup.py 來安裝。這個載入程式會聯(lián)網(wǎng)下載最新版本setuptools來安裝,同時也可以更新本地的setuptools。

wget :peak.telemunity./dist/ez_setup.py

sudo python ez_setup.py

# 更新setuptools:

sudo python ez_setup.py -U setuptools

# 安裝supervisor

easy_install supervisor

# 生成配置檔案

echo_supervisord_conf /etc/supervisord.conf

# 編輯配置檔案

vim /etc/supervisord.conf

# 進入vim后找到最后兩行,開啟注釋(取消前面的分號),

# [include]

# files = supervisor.d/*.ini

# 將所有的supervisor配置都放到 /etc/supervisor.d目錄

mkdir /etc/supervisor.d

建立 supervisor 對應程式的配置檔案

其中的一些路徑需要換成自己對應的,這里將 zankbo 這個web 應用放在了對應的使用者目錄下

通過在生產(chǎn)伺服器上設定environment可以在程式里判斷是線上還是開發(fā)模式,如 zankbo 的 debug判斷

當然也可已在啟動命令處加入引數(shù),如 mand = /home/zankbo/gopath/src/zankbo/zankbo -d 來關閉Debug模式。

if os.Getenv("APP_NAME") == "ZANKBO_PRODUCT" {

beego.RunMode = "prod"

}

vim /etc/supervisor.d/zankbo.ini

# 寫入

[program:zankbo]

directory = /home/zankbo/gopath/src/zankbo

environment=APP_NAME="ZANKBO_PRODUCT"

mand = /home/zankbo/gopath/src/zankbo/zankbo

autostart = true

startsecs = 5

user = zankbo

redirect_stderr = true

stdout_logfile = /home/zankbo/log/zankbo.log

建立對應的使用者

useradd zankbo

# 將使用者加入到zankbo使用者組,Nginx以使用者執(zhí)行

usermod -a -G zankbo

# 更改使用者家目錄使用者組的許可權,使Nginx可以訪問

chmod g+rx /home/zankbo

部署Go環(huán)境

其中的目錄為,go:Go安裝目錄 gopath:Go工作目錄,下面有src、pkg、bin三個目錄 log:日志資料夾

[zankbo@MyCloudServer ~]$ pwd

/home/zankbo

[zankbo@MyCloudServer ~]$ vim .bashrc

# 設定Go環(huán)境變數(shù),在.bashrc檔案末尾寫下如下內(nèi)容

export GOROOT=$HOME/go

export GOPATH=$HOME/gopath

export PATH=$PATH:$GOROOT/bin:$GOPATH/bi

# 切換到使用者家目錄

[root@MyCloudServer ~]# su - zankbo

[zankbo@MyCloudServer ~]$ ls

go gopath log

將專案程式碼放到gopath/src下面,如我的播客專案:

[zankbo@MyCloudServer ~]$ tree -L 2 gopath/src/

gopath/src/

├── github.

│ ├── astaxie

│ ├── beego

│ ├── go-sql-driver

│ ├── howeyc

│ ├── jacobsa

│ ├── *** artystreets

│ └── wendal

└── zankbo

├── admin

├── blog

├── build_pkg.sh

├── mon

├── conf

├── controllers

├── dbstruct.mwb

├── main.go

├── models

├── static

├── views

└── zankbo

匯入專案sql檔案到資料庫

在專案資料夾執(zhí)行build

[zankbo@MyCloudServer zankbo]$ pwd

/home/zankbo/gopath/src/zankbo

[zankbo@MyCloudServer zankbo]$ go build

會在專案下生成與包名對應的可執(zhí)行檔案,這里為:zankbo,build的時候可能會遇到錯誤,比如mysql的密碼之類的,可根據(jù)提示排錯。

通過supervisor 來啟動服務

# supervisorctl start zankbo

配置Nginx

server {

listen 80;

server_name zankbo. zankbo.;

root /home/zankbo/gopath/src/zankbo;

error_log logs/zankbo..error.log warn ;

location /static/ {

root /home/zankbo/gopath/src/zankbo;

location ~ .*\.(js|css)$ {

aess_log off;

expires 1d;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

gzip off;

aess_log off;

expires 3d;

}

}

location / {

proxy_pass :127.0.0.1:8080;

}

}

如何部署thinkphp 應用

1、首先在官方網(wǎng)站下載ThinkPHP最新版本。

2、下載后的壓縮檔案解壓到WEB目錄(或者任何目錄都可以),框架的目錄結構為:

├─ThinkPHP.php 框架入口檔案

├─Common 框架公共檔案

├─Conf 框架配置檔案

├─Extend 框架擴充套件目錄

├─Lang 核心語言包目錄

├─Lib 核心類庫目錄

│ ├─Behavior 核心行為類庫

│ ├─Core 核心基類庫

│ ├─Driver 內(nèi)建驅動

│ │ ├─Cache 內(nèi)建快取驅動

│ │ ├─Db 內(nèi)建資料庫驅動

│ │ ├─TagLib 內(nèi)建標簽驅動

│ │ └─Template 內(nèi)建模板引擎驅動

│ └─Template 內(nèi)建模板引擎

└─Tpl 系統(tǒng)模板目錄

注意,框架的公共入口檔案ThinkPHP.php是不能直接執(zhí)行的,該檔案只能在專案入口檔案中呼叫才能正常執(zhí)行,這是很多新手很容易犯的一個錯誤。

3、接下來先在WEB根目錄下面建立一個app子目錄(這個就是app就是專案名),然后在該目錄下面建立一個index.php檔案,新增一行簡單的程式碼:

require '/ThinkPHP框架所在目錄/ThinkPHP.php';

這行程式碼的作用就是載入ThinkPHP框架的入口檔案ThinkPHP.php,這是所有基于ThinkPHP開發(fā)應用的第一步。然后,在瀏覽器中訪問這個入口檔案。

如何部署應用到was上

websphere的預設使用記憶體應該是256的 你的38的war包部署 不應該出現(xiàn)記憶體崩掉的問題呀。

部署系統(tǒng)也很簡單么,就是打成war包,記得打war包得時候要檢查web.xml的格式 websphere很在意這個東東的。

然后一步一步的部署就可以了。was慢 但是不會你那么慢得??梢再Nerror出來看看

如何部署python3 的應用

mod_python,這是apache內(nèi)建的模組,很嚴重的依賴于mod_python編譯使用的python版本,和apache配套使用,不推薦

cgi,這個太old,不推薦,而且nginx不支援cgi方式,只能用ligd或者apache

fastcgi ,這個是目前流行最廣的做法,通過flup模組來支援的,在nginx里對應的配置指令是 fastcgi_pass

spawn-fcgi,這個是fastcgi多程序管理程式,ligd安裝包附帶的,和

flup效果一樣,區(qū)別是flup是

python程式碼級引入,spawn-fcgi是外部程式。spawn-fcgi用途很廣,可以支援任意語言開發(fā)的代

碼,php,python,perl,只要你程式碼實現(xiàn)了fastcgi介面,它都可以幫你管理你的程序

scgi,全名是Simple Common Gateway Interface,也是cgi的替代版本,scgi協(xié)議很簡單,我覺得和fastcgi差不多,只是沒有怎么推廣開來,nginx對應的配置指令是scgi_pass,你想用就用,flup也支援。

,nginx使用proxy_pass轉發(fā),這個要求后端appplication必須內(nèi)建一個能處理高并發(fā)的 server,在python的web框架當中,只能選擇tornado.

python程式設計師喜歡發(fā)明輪子,tornado除了是一個web framework之外,它還可以單獨提供高效能

server,所以,如果你采用其他python框架寫程式碼,比如說bottle,也一樣可以通過import

tornado 來啟動一個高效能的

server,同樣的可以采用協(xié)議和nginx一起來部署。擴充套件開來,python包里面能處理高并發(fā)的

server還有很多,比如說gevent,也可以被其他框架引用來支援方式部署。

現(xiàn)實當中,用java來做web程式,通常就用和nginx配合,應用伺服器選擇tomcat或者jetty

uwsgi,包括4部分組成,

nginx從0.8.4開始內(nèi)建支援uwsgi協(xié)議,uwsgi協(xié)議非常簡單,一個4個位元組header+一個body,body可以是很多協(xié)議的

包,比如說,cgi等(通過header里面欄位標示),我曾經(jīng)做個一個小規(guī)模的效能對比測試,結果表明,uwsgi和fastcgi相比,效能

沒有太明顯的優(yōu)勢,也可能是資料集較小的原因

uwsgi的特點在于自帶的程序控制程式.它是用c語言編寫,使用natvie函式,其實和spawn-fcgi/php-fpm類似。所以uwsgi可以支援多種應用框架,包括(python,lua,ruby,erlang,go)等等

uwsgi協(xié)議

web server內(nèi)建支援協(xié)議模組

application伺服器協(xié)議支援模組

程序控制程式

Gunicorn,和uwsgi類似的工具,從rails的部署工具(Unicorn)移植過來的。但是它使用的協(xié)議是 WSGI,全稱是Python Web Server Gateway Interface ,這是python2.5時定義的官方標準(PEP 333 ),根紅苗正,而且部署比較簡單,:gunicorn./ 上有詳細教程

mod_wsgi,apache的一個module,也是支援WSGI協(xié)議,:code.google./p/modwsgi/

如何部署簡單python + flask應用

python是一款應用非常廣泛的指令碼程式語言,谷歌公司的網(wǎng)頁就是用python編寫。python在生物資訊、統(tǒng)計、網(wǎng)頁制作、計算等多個領域都體現(xiàn)出了強大的功能。python和其他指令碼語言如java、R、Perl 一樣,都可以直接在命令列里執(zhí)行指令碼程式。

所需工具:

python3.4

flask

nginx

gunicorn

supervisor

系統(tǒng)環(huán)境:

Ubuntu 14.04LTS

我們先寫一個最基本的flask應用:

demo.py

from flask import Flask

app = Flask(**name**)

@app.route('\')

def index():

return 'Hello World.'

if __name__ == __main__:

app.run()

執(zhí)行這個py檔案,開啟瀏覽器訪問127.0.0.1:5000就能看到顯示Hello World的頁面 .

如果讓這個flask引用監(jiān)聽來自公網(wǎng)ip的請求,理論上你跑此程式的機器就相當于一個伺服器了,然而這個伺服器并不完美,所以我們需要nginx和gunicorn來增加它的功能,讓它真刀真槍上生產(chǎn)環(huán)境的時候能按要求執(zhí)行。

flask自帶的WSGI框架效能很差勁,只能適用于開發(fā)環(huán)境除錯使用。我們用專業(yè)一點的gunicorn(還有很多其他優(yōu)秀的框架)替代flask自帶的WSGI框架。

配置完后,通過命令’/usr/local/bin/gunicorn -b127.0.0.1:5000‘啟動應用。開啟瀏覽器訪問127.0.0.1:5000,同樣能夠得到返回頁面

然而gunicorn也僅僅是一個python的WSGI框架而已,要讓它真正處理來自網(wǎng)際網(wǎng)路的各類訪問功能還是有點欠缺,這時候就需要用到大名鼎鼎的nginx 伺服器來替gunicorn遮風擋雨了。

Ubuntu下安裝nginx可以用命令

sudo apt-get install nginx

安裝后需要進行下配置:

cd /etc/nginx/sites-available

sudo vi test (test為配置名稱,可以根據(jù)自己專案進行命名)

test檔案的配置為:

server {

listen 80; # 監(jiān)聽80埠

location / {

proxy_pass :127.0.0.1:5000; # 代理本機127.0.0.1:5000的服務

}

location /static {

alias /home/ubuntu/myproject/myblog/app/static; # 負載均衡

}

}

cd ..

cd sites-enable

sudo ln -s ../sites-available/lwhile . (建立軟連結,別漏掉最后的.)

sudo service nginx reload

sudo service nginx restart

這樣nginx的基本配置檔案就寫好了 接下來我們配置程序管理工具supervisor supervisor可以在后面啟動你的python程序,這樣很方便

1.cd /etc/supervisor/conf.d

2.sudo vi test.conf (test為檔名)

[program:test]

mand = /usr/local/bin/gunicorn -b127.0.0.1:5000 /home/ubuntu/myproject/test.py

3.sudo supervisorctl

4.reload

5.start test

如果一切正常,做完這所有步驟之后,現(xiàn)在公網(wǎng)的ip訪問你的主機,就可以開啟你的flask應用了

python是一款應用非常廣泛的指令碼程式語言,谷歌公司的網(wǎng)頁就是用python編寫。python在生物資訊、統(tǒng)計、網(wǎng)頁制作、計算等多個領域都體現(xiàn)出了強大的功能。python和其他指令碼語言如java、R、Perl 一樣,都可以直接在命令列里執(zhí)行指令碼程式。工具/原料

python;CMD命令列;windows作業(yè)系統(tǒng)

方法/步驟

1、首先下載安裝python,建議安裝2.7版本以上,3.0版本以下,由于3.0版本以上不向下相容,體驗較差。

2、開啟文字編輯器,推薦editplus,notepad等,將檔案儲存成 .py格式,editplus和notepad支援識別python語法。

指令碼第一行一定要寫上 #!usr/bin/python

表示該指令碼檔案是可執(zhí)行python指令碼

如果python目錄不在usr/bin目錄下,則替換成當前python執(zhí)行程式的目錄。

3、編寫完指令碼之后注意除錯、可以直接用editplus除錯。除錯方法可自行百度。指令碼寫完之后,開啟CMD命令列,前提是python 已經(jīng)被加入到環(huán)境變數(shù)中,如果沒有加入到環(huán)境變數(shù),請百度

4、在CMD命令列中,輸入 “python” + “空格”,即 ”python “;將已經(jīng)寫好的指令碼檔案拖拽到當前游標位置,然后敲回車執(zhí)行即可。

go語言支持開發(fā)桌面級應用嗎?

go 可以開發(fā)桌面應用,但并不是很舒適。

可以使用的GUI庫有:

1、goqt,LiteIDE作者出品,Go和QT的綁定,還未發(fā)布

2、go.uik,純Go實現(xiàn)的并發(fā)UI工具

3、walk,Windows Application Library Kit

4、gform,Windows GUI framework

目前的話walk用得比較多

不過go的GUI庫用起來沒有C#、C/C++的那么順手。

這個問題不久之后應該會有所改善,畢竟用Go開發(fā)桌面的需求在不斷增加。

目前我采用的是用go http 做后端,Webkit+HTML5 做界面,表現(xiàn)力很好,前端不需要學習新知識,一般的管理類應用都能搞定。


網(wǎng)站標題:go語言開發(fā)安裝app go語言 app
當前網(wǎng)址:http://weahome.cn/article/doijsop.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部