亚洲色成人网站www永久,亚洲欧美人成视频一区在线,亚洲国产成人高清在线观看,亚洲精品久久久久久动漫,亚洲国产精品久久电影欧美

數(shù)據(jù)專欄

智能大數(shù)據(jù)搬運(yùn)工,你想要的我們都有

科技資訊

科技學(xué)院

科技百科

科技書籍

網(wǎng)站大全

軟件大全

HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 小弟在某地廣電網(wǎng)絡(luò)工作,因?yàn)闅v史及其他原因?qū)е聶C(jī)房數(shù)據(jù)設(shè)備廠商較多,且相互之間網(wǎng)管不兼容。為了工作便利便謀發(fā)了自己開發(fā)一套管理系統(tǒng)的想法,目前WEB前臺(tái)已完成,但在設(shè)備對(duì)接這塊卡住了。 ------------------------------------華麗的分割線【暗號(hào)就不對(duì)了】-------------------------------------------- 1.需要管理的設(shè)備如下 OLT+EOC 2.實(shí)現(xiàn)方法 查閱了很多信息,目前市面上的網(wǎng)管都是用snmp協(xié)議來做的,一線廠商如26、28都是公開了設(shè)備的mib庫,所以可以很輕松實(shí)現(xiàn)。但是現(xiàn)實(shí)很骨感,我們的幾家設(shè)備廠商mib庫被他們視為傳家寶,拒絕提供。小弟人微言輕這條路基本沒什么希望了。 然后我就想到了telnet,因?yàn)樵O(shè)備的指令和返回信息格式都是固定的,所以我就想通過telnet方式來實(shí)現(xiàn),雖然實(shí)現(xiàn)起來相關(guān)困難(需要針對(duì)不同設(shè)備廠商編寫不同的解析程序),但好處也比較明顯。在不需要廠商mib的情況下,只有設(shè)備支持telnet操作就可以了。 3.遇到的困難 項(xiàng)目使用apache conmens net包,該包提供了telnet/SSH操作類,參照官網(wǎng)例子寫了一個(gè)telnet工具類。 目前遇到的困難就是,在遇到返回信息過長(zhǎng)需要繼續(xù)輸入空格鍵繼續(xù)輸入下一業(yè)列表是進(jìn)入red線程死循環(huán),請(qǐng)問有沒有大神做過類似的功能?或者提供相應(yīng)的解決方法 package com.gd.olt.util.kt; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.net.SocketException; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.net.telnet.TelnetClient; import com.gd.olt.pojo.OnuEntity; public class KtOnuList { Object lock = new Object(); TelnetClient telnet = null; private InputStream in; private PrintStream out; private static final String ORIG_CODEC = "ISO8859-1"; private static final String TRANSLATE_CODEC = "GBK"; List objs = new ArrayList();// 鍒涘緩ONU鍒楄〃瀵硅薄闆嗗悎 private String oltId; private String oltTypeCode; private String oltTypeName; private void connect(String ip) throws SocketException, IOException { telnet = new TelnetClient("VT100");// VT100 VT52 VT220 VTNT ANSI telnet.connect(ip, 23); in = telnet.getInputStream(); out = new PrintStream(telnet.getOutputStream()); } private void readToEnd() { ReadThread readThread = new ReadThread(); readThread.start(); try { readThread.join(); } catch (Exception e) { } readThread = null; } private void readUntil(String str) { char last = str.charAt(str.length() - 1); String[] ss; try { StringBuffer sb = new StringBuffer(); char c; int code = -1; boolean ansiControl = false; boolean start = true; while ((code = (in.read())) != -1) { c = (char) code; if (c == '\033') {// vt100鎺у埗鐮侀兘鏄互\033寮?澶寸殑銆? ansiControl = true; int code2 = in.read(); char cc = (char) code2; if (cc == '[' || cc == '(') { } } if (!ansiControl) { if (c == '\r') { String outstr = new String(sb.toString().getBytes( ORIG_CODEC), TRANSLATE_CODEC); // 姝e垯鍖歸厤 String regEx = "^\\d+\\/\\d+\\:"; Pattern pat = Pattern.compile(regEx); Matcher mat = pat.matcher(outstr.trim()); if (mat.find()) { OnuEntity entity = setOnu(outstr); if (entity != null) { objs.add(entity); } } if (sb.lastIndexOf(str) != -1) { break; } sb.delete(0, sb.length()); } else if (c == '\n') { // break; } else sb.append(c); if (sb.lastIndexOf(str) != -1) { break; } } if (ansiControl) { if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '"') { ansiControl = false; } } } System.out.println(new String(sb.toString().getBytes(ORIG_CODEC), TRANSLATE_CODEC)); } catch (Exception e) { e.printStackTrace(); } } private void write(String s) { try { out.write(s.getBytes()); out.flush(); } catch (Exception e) { } } private void write(String s, int sleep) { write(s); try { Thread.sleep(sleep); } catch (Exception e) { } } /** * 瀹屾垚涔嬪悗蹇呴』鍏抽棴 */ private void close() { if (out != null) out.close(); if (in != null) try { in.close(); } catch (IOException e1) { } if (telnet != null) try { telnet.disconnect(); } catch (IOException e) { } } /** * 璇誨彇涓葷嚎紼嬶紝璐熻矗綆$悊瀛愮嚎紼嬨?傞槻姝㈣鍙栨椂涓嶅姩浜?jiǎn)锛寴q欐椂灝辨姏寮冭鍙栧瓙綰跨▼ * * @author chruan * */ private class ReadThread extends Thread { public void run() { synchronized (lock) {// 鍙兘涓?涓鍙? SubReadThread sub = new SubReadThread(); sub.start(); int last = sub.count; while (true) { try { Thread.sleep(100); } catch (InterruptedException e) { } if (last == sub.count) { sub.stop(); break; } else { last = sub.count; } } String s = sub.sb.toString(); try { System.out.println(new String(s.getBytes(ORIG_CODEC), TRANSLATE_CODEC)); } catch (UnsupportedEncodingException e) { System.out.println(s); } sub = null; } // System.out.println("===========ReadThread end============="); } } /** * 璇誨彇瀛愮嚎紼嬶紝瀹屾垚瀹為檯璇誨彇 * * @author chruan * */ private class SubReadThread extends Thread { int count = 0; StringBuffer sb = new StringBuffer(2048); public void read() { try { char c; int code = -1; boolean ansiControl = false; boolean start = true; while ((code = (in.read())) != -1) { count++; c = (char) code; if (c == '\033') { ansiControl = true; int code2 = in.read(); char cc = (char) code2; count++; if (cc == '[' || cc == '(') { } } if (!ansiControl) { if (c == '\r') { String olds = new String(sb.toString().getBytes( ORIG_CODEC), TRANSLATE_CODEC); sb.delete(0, sb.length()); } else if (c == '\n') ; else sb.append(c); } if (ansiControl) { if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '"') { ansiControl = false; } } } } catch (Exception e) { } } public void run() { read(); } } /*** * * @param entity浼犲叆OLT * 錛屼富瑕両P錛岀敤鎴峰悕瀵嗙爜 * @return 榪斿洖ONUentity鐨凩IST闆嗗悎 */ public List loadOnuListInfo(String id, String ip, String oltName, String oltPwd, String oltTypeCode, String oltTypeName) { this.oltId = id; this.oltTypeCode = oltTypeCode; this.oltTypeName = oltTypeName; try { this.connect(ip); // -----------------鎵ц鍛戒護(hù)寮?濮?------------------- readUntil("olt login: ");//登錄名 write(oltName);//命令輸出 write("\n"); readUntil("Password: ");//輸入密碼 write(oltPwd); write("\n"); readUntil("> "); write(" enable ");//進(jìn)入配置模式 write("\n"); readUntil("# "); write(" configure terminal ");//進(jìn)入全局配置模式 write("\n"); readUntil("(config)# "); write("show onu-list-info ");//查詢ONU列表 write("\n");// 鍙戦?佺‘璁ら敭 // for (int i = 0; i < 5; i++) { // write(" ");// // } // readUntil("--More--");//如果返回結(jié)尾為--More-- ******就表示列表未完成,輸入空格下一頁 // write(" "); // write("\n"); // readUntil("# "); // -----------------鎵ц鍛戒護(hù)緇撴潫------------------- this.readToEnd(); } catch (Exception e) { e.printStackTrace(); } finally { this.close(); } return objs; } private OnuEntity setOnu(String str) { // 1/1: 1 鍦ㄧ嚎 4920 1 0 192.168.10.1 000F.1EA0.5747 String[] ss = str.split(" "); StringBuffer sb = new StringBuffer(); for (int i = 0; i < ss.length; i++) { String tempStr = ss[i]; if (null == tempStr || "".equals(tempStr.trim())) { } else { sb.append("#" + tempStr); } } String e = sb.toString(); String[] en = e.split("#"); // for (int i = 0; i < en.length; i++) { // String tempStr = en[i]; // System.out.println(tempStr.trim() + "...." + i); // } String llid = en[1].replaceAll(" ", "0");// LLID String status = en[2].trim();// 鐘舵?? String dist = en[3];// 璺濈 String[] ipmac = en[6].split(" "); String mac = ipmac[1]; return new OnuEntity(llid, status, dist, mac, null, oltId, oltTypeCode, oltTypeName); } }
來源:開源中國(guó)
發(fā)布時(shí)間:2016-03-23 12:49:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 怎么用libssh編寫服務(wù)端應(yīng)用,自己找了很久也沒有找到相關(guān)的資料,請(qǐng)大神給指點(diǎn),非常感謝!
來源:開源中國(guó)
發(fā)布時(shí)間:2015-05-19 09:41:00
痛點(diǎn) 隨著應(yīng)用逐漸復(fù)雜化,構(gòu)建的流程與依賴都變得越來越復(fù)雜; 參與的人員越來越多,大家使用的開發(fā)環(huán)境難免不一致; 很多時(shí)候編譯環(huán)境帶來的問題是潛在的(例如路徑處理等等),無法在打包過程就發(fā)現(xiàn); 當(dāng)然,在正式發(fā)布時(shí),大多數(shù)團(tuán)隊(duì)通常都會(huì)采用 CI 系統(tǒng)構(gòu)建出安全的包,以此規(guī)避。 然鵝,在平時(shí)開發(fā)中我們難免遇到臨時(shí)驗(yàn)證問題的場(chǎng)景出現(xiàn),在很多團(tuán)隊(duì)里,開發(fā)人員會(huì)在本地機(jī)器里直接構(gòu)建之后將產(chǎn)物丟給測(cè)試驗(yàn)證,這個(gè)過程就容易因?yàn)榄h(huán)境因素而遺漏問題。 根本痛點(diǎn): 開發(fā)環(huán)境沒有標(biāo)準(zhǔn)化 想法 docker 在運(yùn)維領(lǐng)域已經(jīng)被廣泛應(yīng)用,很適合用于統(tǒng)一環(huán)境。而在本地開發(fā)里它出現(xiàn)得卻很少。通常我們更傾向于用它負(fù)責(zé)構(gòu)建與部署。本地使用 docker 最主要的障礙有兩個(gè): 起步麻煩:你至少需要知道 docker 是什么,怎么運(yùn)作,及一些基本的概念,這有一些學(xué)習(xí)成本; 使用體驗(yàn):即便現(xiàn)在有 gui 的存在,創(chuàng)建容器與鏡像時(shí)還是需要記住一些配置,手敲命令,這有一些記憶成本; 如上面提到的,我們要解決的是環(huán)境標(biāo)準(zhǔn)化的問題,了解使用 docker 是一個(gè)解決過程,而不是方法。對(duì)于大多數(shù)人來說,他們的訴求只是一個(gè)容易用的標(biāo)準(zhǔn)環(huán)境,而不是多花時(shí)間去學(xué)一個(gè)新東西。 做了什么 設(shè)計(jì)這個(gè)東西,目標(biāo)有三個(gè): 環(huán)境標(biāo)準(zhǔn)化 使用門檻超低 易于團(tuán)隊(duì)協(xié)同 解決方法: docker 命令行啟動(dòng),少打字 配置化,配置文件跟倉(cāng)庫走 可能有人會(huì)問,docker 已經(jīng)有了 Dockerfile 與 compose,為什么還要一個(gè)配置文件。他們的關(guān)系是這樣的: compose:描述我們需要一批什么樣的容器 Dockerfile:描述我們需要什么鏡像 新配置:描述我們需要一個(gè)什么樣的容器,如何與我們的工作區(qū)關(guān)聯(lián)起來,并 check in 設(shè)計(jì)思路很簡(jiǎn)單粗暴,但效果看起來是不錯(cuò)的: 而你只需要配一個(gè)簡(jiǎn)單的 json 在你的倉(cāng)庫里: { "env": { "name": "hello", "image": "maven:slim" } } 這么做之后,你的團(tuán)隊(duì)只需要預(yù)先構(gòu)建好一個(gè) image,配進(jìn)倉(cāng)庫,所有人就可以統(tǒng)一環(huán)境啦! 項(xiàng)目 https://github.com/williamfzc/devcube 最后 歡迎各位一起討論 :) 歡迎進(jìn)來寫 features
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:05:21
v1.1.4 ( 2020.08.08) 重構(gòu)圖片整理功能 支持建立標(biāo)簽體系,為圖片打標(biāo)簽,快速定位圖片 支持文件夾整理,多層級(jí)分類歸類 支持建立智能文件夾,按名稱、標(biāo)簽、顏色等條件自動(dòng)分類圖片 支持按顏色、關(guān)鍵字、形狀、尺寸、類型等條件查找篩選圖片 支持自適應(yīng)、瀑布流、網(wǎng)格布局瀏覽圖片 支持智能任務(wù)相似圖片的篩選 支持標(biāo)簽、注釋、評(píng)分等信息的 iCloud 同步、多機(jī)協(xié)同 源碼上模塊化圖片整理、屏幕截圖、圖片查看、圖片編輯、圖片導(dǎo)出 優(yōu)化性能、修復(fù)一些問題 老版本升級(jí)重置用戶數(shù)據(jù) Picsee 素材整理模塊的設(shè)計(jì)說明 初心:構(gòu)建快速、直接、可擴(kuò)展、磁盤讀寫效率高的素材管理模式和應(yīng)用。 管理素材的方式 通過引用,監(jiān)控文件夾的方式管理素材圖片。對(duì)于加入資源束中的素材,在 Picsee 中不會(huì)復(fù)制拷貝,生成另一份,甚至每一個(gè)素材也不會(huì)必然對(duì)應(yīng)生成一個(gè)縮略圖留存下來,但是會(huì)解析素材圖片的相關(guān)屬性,例如大小、尺寸、創(chuàng)建時(shí)間、顏色、Exif 信息存進(jìn)數(shù)據(jù)庫。 資源庫和資源束 通過資源庫、資源束、文件夾的形式管理素材。一個(gè)資源庫管理多個(gè)資源束,資源束是素材圖片的集合。一個(gè)資源束管理多個(gè)文件夾,即被監(jiān)控的文件目錄,存放素材圖片的具體位置,通過切換資源束可管理不同的素材圖片集合。 素材索引構(gòu)建模式 通過素材在磁盤上的位置來定位和判斷唯一性。添加資源束中的素材后,Picsee 會(huì)在后臺(tái)異步解析素材圖片的相關(guān)屬性,構(gòu)建索引,存入 Realm 數(shù)據(jù)庫。UI 層監(jiān)控?cái)?shù)據(jù)庫的變化,進(jìn)行刷新。查找、篩選、排序、分欄等都是基于數(shù)據(jù)庫層面的操作來支持。 素材縮略圖問題 素材圖片的解析過程不會(huì)產(chǎn)生縮略圖,素材圖片的瀏覽會(huì)產(chǎn)生縮略圖,但是只有瀏覽到的素材圖片才會(huì)產(chǎn)生縮略圖。Picsee 會(huì)在合適的時(shí)候清除很久沒有訪問過的素材圖片的縮略圖。 文件夾監(jiān)控說明 加入到資源束的文件夾,都是被實(shí)時(shí)監(jiān)控管理,在文件夾中的素材圖片的變動(dòng),會(huì)及時(shí)反饋到 Picsee 中。但是建議在 Picsee 中操作圖片素材,在 Finder 中操作的素材圖片,包括刪除、移動(dòng)、重命名等,會(huì)在 Picsee 中體現(xiàn),但相關(guān)的打過的標(biāo)簽、評(píng)分、寫過的注釋等會(huì)丟失。 云同步的實(shí)現(xiàn) 通過云盤同步素材圖片、iCloud 同步素材圖片自定義擴(kuò)展屬性(標(biāo)簽、評(píng)分、注釋等)、管理的文件夾綁定目錄位置,三種途徑實(shí)現(xiàn)云同步,多機(jī)、多人協(xié)作。素材圖片存放在磁盤文件夾中,可通過堅(jiān)果云、Dropbox 等主流云盤實(shí)現(xiàn)多臺(tái)電腦的同步;而資源束、智能任務(wù)、智能文件夾、素材圖片的擴(kuò)展信息等,通過用戶的 iCloud 云端私有數(shù)據(jù)庫實(shí)現(xiàn)多機(jī)的同步;由于,在不同電腦上,資源束中管理的文件夾,可能存放在不同的磁盤目錄路徑中,因此,被同步的資源束,初始需要重新綁定管理文件夾的指向的位置,即指向此時(shí)本機(jī)上,對(duì)應(yīng)的通過堅(jiān)果云、Dropbox 等云盤同步過來的文件夾。 下載 聯(lián)系 詳細(xì)介紹: https://picsee.chitaner.com 郵件聯(lián)系: [email?protected] Telegram: ( https://t.me/joinchat/LLvGKBYvdMtz6z7SgYxJUQ) QQ 群:663988917
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:05:15
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 如題,我想要新創(chuàng)建的Stage有一個(gè)固定的寬度和高度,而不是全屏。非全屏模式下是沒有問題的。 運(yùn)行環(huán)境: Mac :10.15.3 。 openjdk 14, openjx 14 public class Main extends Application { private Stage primaryStage; @Override public void start(Stage primaryStage) throws Exception { this.primaryStage = primaryStage; VBox box = new VBox(); Scene scene = new Scene(box); Button button = new Button("new stage"); box.getChildren().add(button); button.setOnAction(event -> { stage(); }); primaryStage.setScene(scene); primaryStage.setFullScreen(true); primaryStage.show(); } private void stage(){ Stage stage = new Stage(); VBox box = new VBox(); Scene scene = new Scene(box); Label label = new Label("Label"); box.getChildren().add(label); stage.setScene(scene); stage.setFullScreen(false); stage.setResizable(false); stage.show(); } }
來源:開源中國(guó)
發(fā)布時(shí)間:2020-03-31 10:27:00
起因 前段時(shí)間寫了個(gè) API 文檔生成工具 mkdoc ,因?yàn)椴]有像 swag-go 一樣依賴 go CLI 后來就在想能不能把他編譯到 wasm 然后放到網(wǎng)頁上,這樣就能方便大家 0 部署就能對(duì)他有個(gè)了解。 成果 ?? 在線體驗(yàn) ?? ( : 如果你對(duì) mkdoc 感興趣,歡迎 fork&star 一些問題 工具里用到了文件系統(tǒng),go 提供的 wasm_exec.js 中沒有實(shí)現(xiàn)文件系統(tǒng) 用到了 os.Getwd 系統(tǒng)調(diào)用,syscall/js 沒有直接支持 一些 go 和 js 之間的交互問題 解決 文件系統(tǒng) 在 wasm_exec.js 中可以看到一個(gè)未實(shí)現(xiàn)的 node fs API ,那我們只要在瀏覽器中按照 node fs API 實(shí)現(xiàn)一個(gè) memory filesystem ,就能解決文件系統(tǒng)的問題。 但是自己去造輪子太麻煩,找來找去找到了 memfs 這個(gè)庫(給作者點(diǎn) 100 個(gè)??)。有了 memfs,我按照他的的使用方式把他提供的 fs 賦值到 window.fs 上,go 就會(huì)用這個(gè) fs 了。 系統(tǒng)調(diào)用 看先 os.Getwd 的源碼 // Getwd returns a rooted path name corresponding to the // current directory. If the current directory can be // reached via multiple paths (due to symbolic links), // Getwd may return any one of them. func Getwd() (dir string, err error) { if runtime.GOOS == "windows" || runtime.GOOS == "plan9" { return syscall.Getwd() } // Clumsy but widespread kludge: // if $PWD is set and matches ".", use it. dot, err := statNolog(".") if err != nil { return "", err } dir = Getenv("PWD") if len(dir) > 0 && dir[0] == '/' { d, err := statNolog(dir) if err == nil && SameFile(dot, d) { return dir, nil } } 發(fā)現(xiàn)他會(huì)檢查 PWD 環(huán)境變量,如果發(fā)現(xiàn)當(dāng)前就是 $PWD 則會(huì)直接使用$PWD 的值, 所以在啟動(dòng)的時(shí)候加一句 set env 就能 getwd 的目錄不正確的問題了。 func initJS() { //... os.Setenv("PWD", "/") } 交互 這里主要寫一個(gè)把 go 的 log.Println 綁定到 js console.log 的方法,其他看文檔就可以了。 func (c *ConsoleWriter) Write(p []byte) (n int, err error) { js.Global().Get("console").Call("log", string(p)) return len(p), nil } func (c *ConsoleWriter) Log(s string) { c.Write([]byte(s)) } var console = new(ConsoleWriter) func initJS() { log.SetOutput(console) // ... }
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:05:08
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 項(xiàng)目結(jié)構(gòu) Controller.java代碼: import javafx.fxml.FXML; import javafx.scene.control.ListView; public class Controller { @FXML private ListView listView; } Main.java import cn.lsj.musicplayer.util.AudioFilePlayer; import javafx.application.Application; import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.stage.WindowEvent; public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception{ Parent root = FXMLLoader.load(getClass().getResource("sample.fxml")); primaryStage.setTitle("音樂播放器"); Scene scene = new Scene(root, 1250, 750); primaryStage.setResizable(false);//固定窗口大小 primaryStage.setScene(scene); scene.getStylesheets().add(Main.class.getResource("style.css").toExternalForm()); primaryStage.show(); //窗口關(guān)閉事件監(jiān)聽 primaryStage.setOnCloseRequest(new EventHandler() { @Override public void handle(WindowEvent event) { AudioFilePlayer.stopPlaying(); } }); } public static void main(String[] args) { launch(args); } }
來源:開源中國(guó)
發(fā)布時(shí)間:2019-11-20 12:27:00
[上哪課] 花最少的時(shí)間找最適合的課程站點(diǎn)鏈接: http://www.shangnake.com 歡迎體驗(yàn),反饋 ,交流 。
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:05:01
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 在MainStageController控制器中點(diǎn)擊按鈕會(huì)打開一個(gè)新窗口,怎么在第二次點(diǎn)擊時(shí)判斷如果彈出過這個(gè)窗口了,就不彈了 @FXML private void handleSubmitButtonAction(ActionEvent event) { actionTarget.setText("登錄中..."); /** * 得到對(duì)應(yīng)視圖的stage */ Stage stage = (Stage) rootGridPane.getScene().getWindow(); stage.close(); // 創(chuàng)建新的stage Stage secondStage = new Stage(); final JmetroStageView view = new JmetroStageView(); ApplicationContext context = SpringContextUtil.getApplicationContext(); view.setApplicationContext(context); secondStage.setScene(new Scene(view.getView())); secondStage.show(); }
來源:開源中國(guó)
發(fā)布時(shí)間:2018-11-25 21:43:02
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 編譯環(huán)境: jdk 1.8.0_131 ide IDEA Community 2017.3 功能描述: 本人嘗試編寫一個(gè)這樣的用戶界面,BorderPane左側(cè)為L(zhǎng)istView,中心為一個(gè)Label和TextField外加一個(gè)名為Submit的Button。當(dāng)在TextField中輸入字符串,并點(diǎn)擊Submit后,被輸入的字符串及創(chuàng)建的時(shí)間,還有一個(gè)狀態(tài)Pass將被顯示在左側(cè)的ListView中。 為了實(shí)現(xiàn)此顯示功能,我重新設(shè)置了ListView的CellFactory。在CellFactory中返回一個(gè)內(nèi)部類TitleCell繼承了ListCell類,重寫其updateItem方法。如下: private class TitleCell extends ListCell { @Override public void updateItem(SimpleDocument item, boolean empty){ super.updateItem(item, empty); if(!empty && item != null){ BorderPane cell = new BorderPane(); Text title = new Text(item.getTitle()); title.setFont(Font.font(14)); Text date = new Text(item.getDate().toString()); date.setFont(Font.font(10)); Text source = new Text(item.getStatus()); source.setFont(Font.font(10)); cell.setTop(title); cell.setLeft(date); cell.setRight(source); setGraphic(cell); } } 問題出現(xiàn): 編譯通過,執(zhí)行程序。向TextField輸入字符串"abc"點(diǎn)擊Submit結(jié)果正常。如圖: 再次向TextField輸入字符串"def",點(diǎn)擊Submit,問題出現(xiàn)。 如上圖,出現(xiàn)顯示了兩次def的問題。 為什么會(huì)如此,怎樣解決?還請(qǐng)各位大神不吝賜教。 附源代碼鏈接: 代碼
來源:開源中國(guó)
發(fā)布時(shí)間:2018-01-16 16:25:00
pwgen 算法是 password = remap(sha512(username: [email?protected] )) 。具體用法請(qǐng)看 readme.md 。 ps: 我還想用 gits 的 api 來做同步,但是考慮到需要記的東西很少,完全沒有必要。 ps:《紫塞秋風(fēng)》這支線任務(wù)我服了……還好沒買,其實(shí)《巫師 3 》玩到后面也想吐。
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:04:44
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 如圖,啟動(dòng)報(bào)錯(cuò)。網(wǎng)上查過了,說是要安裝jvm,jre難道不包含jvm。JDK難道不包含jvm?
來源:開源中國(guó)
發(fā)布時(shí)間:2017-06-30 13:33:00
https://github.com/zhxxch/git-lfs-one/ 以上是項(xiàng)目地址。LFS 是個(gè)好東西但 GitHub 給的容量有點(diǎn)少,套餐也不大合適,如果把文件放到對(duì)象存儲(chǔ)上,速度就快多了…… 所以我做了一個(gè) serverless 、完全彈性伸縮、可以通過資源模板一鍵部署在阿里云的 LFS 服務(wù)器( nodejs )。存儲(chǔ)和文件鎖由 OSS 和 OTS 支持。 外加一個(gè)把 LFS 托管在 OneDrive 上的小工具: https://lfs-one.inv.ariant.cn/
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:04:37
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 報(bào)錯(cuò)信息如下: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to javafx.beans.value.ObservableValue at ruiyi.gui.controller.special.AbstractSpecificAnalysisView.lambda$bindDataToJFXTreeTableColumnDT$1(AbstractSpecificAnalysisView.java:106) at javafx.scene.control.TreeTableColumn.getCellObservableValue(TreeTableColumn.java:563) at javafx.scene.control.TreeTableColumn.getCellObservableValue(TreeTableColumn.java:548) at javafx.scene.control.TreeTableCell.updateItem(TreeTableCell.java:635) at javafx.scene.control.TreeTableCell.indexChanged(TreeTableCell.java:457) at javafx.scene.control.IndexedCell.updateIndex(IndexedCell.java:116) at com.sun.javafx.scene.control.skin.TableRowSkinBase.updateCells(TableRowSkinBase.java:533) at com.sun.javafx.scene.control.skin.TreeTableRowSkin.updateCells(TreeTableRowSkin.java:220) at com.sun.javafx.scene.control.skin.TableRowSkinBase.init(TableRowSkinBase.java:147) at com.sun.javafx.scene.control.skin.TreeTableRowSkin.(TreeTableRowSkin.java:89) at com.jfoenix.skins.JFXTreeTableRowSkin.(JFXTreeTableRowSkin.java:59) at com.jfoenix.controls.JFXTreeTableRow.createDefaultSkin(JFXTreeTableRow.java:45) at javafx.scene.control.Control.impl_processCSS(Control.java:872) at javafx.scene.Node.processCSS(Node.java:9056) at javafx.scene.Node.applyCss(Node.java:9153) at com.sun.javafx.scene.control.skin.VirtualFlow.setCellIndex(VirtualFlow.java:1964) at com.sun.javafx.scene.control.skin.VirtualFlow.getCell(VirtualFlow.java:1797) at com.sun.javafx.scene.control.skin.VirtualFlow.getCellLength(VirtualFlow.java:1879) at com.sun.javafx.scene.control.skin.VirtualFlow.computeViewportOffset(VirtualFlow.java:2528) at com.sun.javafx.scene.control.skin.VirtualFlow.layoutChildren(VirtualFlow.java:1189) at javafx.scene.Parent.layout(Parent.java:1087) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Parent.layout(Parent.java:1093) at javafx.scene.Scene.doLayoutPass(Scene.java:552) at javafx.scene.Scene.preferredSize(Scene.java:1646) at javafx.scene.Scene.impl_preferredSize(Scene.java:1720) at javafx.stage.Window$9.invalidated(Window.java:846) at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:109) at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:144) at javafx.stage.Window.setShowing(Window.java:922) at javafx.stage.Window.show(Window.java:937) at javafx.stage.Stage.show(Stage.java:259) at application.Main.start(Main.java:80) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 這里的ObservableValue是javafx.beans.value包下的interface 我的代碼是這樣的: protected void bindDataToJFXTreeTableColumnDT(JFXTreeTableColumn column, String key) { // 數(shù)據(jù)查找綁定到table view column.setCellValueFactory((TreeTableColumn.CellDataFeatures param) -> { if (column.validateValue(param)) return param.getValue().getValue().getValue(key); else return column.getComputedValue(param); }); } 我同事寫的代碼是這樣的 protected void bindDataToJFXTreeTableColumn(JFXTreeTableColumn column, String key) { // 數(shù)據(jù)查找綁定到table view column.setCellValueFactory((TreeTableColumn.CellDataFeatures param) -> { if (column.validateValue(param)) return param.getValue().getValue().getValue(key); else return column.getComputedValue(param); }); } 同事的代碼執(zhí)行不報(bào)錯(cuò),我的報(bào)錯(cuò)。
來源:開源中國(guó)
發(fā)布時(shí)間:2017-08-02 10:22:00
這個(gè)微信小程序是在早兩三個(gè)月前舔狗日記剛火時(shí)花了一兩天時(shí)間寫的,到目前為止廣告累計(jì)收入 600+,網(wǎng)上也看到有逆向狗扒了源碼整合到自己工具庫里的家伙,所以想了想還是分享出來算了,也沒多大用處,需要的自取吧。 截圖
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:04:27
Code Snippit 這是一個(gè)代碼分享網(wǎng)站。類似 Gist,但加入了多文件在線編譯運(yùn)行,Web 代碼在線預(yù)覽的功能。 舉個(gè)例子: https://code-snippet.cn/s/3f99e39e-52a3-4fda-b14f-4862cf93d9e8 這個(gè) C 語言 main 函數(shù)調(diào)用了一個(gè)外部文件的 add 函數(shù),還有讀取一個(gè) some.txt 的文件。這些皆是一個(gè) Snippet 的一部分。 那么開啟運(yùn)行后,就會(huì)將這些文件一并編譯??梢灾苯荧@取到執(zhí)行結(jié)果: 另外執(zhí)行也支持 stdin 。比如: https://code-snippet.cn/s/29901b20-55f4-4759-8372-65ea9f695c65 那么在 Execute 對(duì)話框中的 Input 輸入的內(nèi)容就可以被程序獲?。? 此外,不僅僅可以編譯代碼,可以預(yù)覽編寫的網(wǎng)頁: https://code-snippet.cn/s/c57c3f23-50ad-4d0a-94ef-12b45f6a4f84 如果發(fā)現(xiàn)文件后綴名為 html ,就會(huì)出現(xiàn)一個(gè)瀏覽器圖標(biāo),點(diǎn)擊即可預(yù)覽編寫的網(wǎng)頁,和編譯代碼一樣,可以通過相對(duì)路徑引用 Snippet 內(nèi)的文件。 除此之外,基本的代碼高亮,評(píng)論,Star,F(xiàn)ork 與 Gist 沒有太大差別。 ?? 歡迎大家注冊(cè)試用,有什么 bug 反饋或需求更新,可以在下面評(píng)論或上 GitHub 提 Issue: https://github.com/imlinhanchao/code-snippet/issues
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:04:21
這個(gè)工具有兩個(gè)作用: 并排顯示多個(gè)庫的狀態(tài)信息,比如分支名,編輯狀態(tài),提交信息等 在任何目錄下(批處理)代理執(zhí)行 git 指令 地址 https://github.com/nosarthur/gita 中文文檔 https://github.com/nosarthur/gita/blob/master/doc/README_CN.md 適用場(chǎng)景: 如果有幾個(gè) git 庫是相關(guān)的,我們會(huì)希望同時(shí)看到他們的狀態(tài)信息;換目錄才能執(zhí)行 git 命令也會(huì)比較麻煩
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:04:13
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> for(int i = 1; i <= 60; i++){ Line l1 = new Line(centerX + clockRadius*Math.sin(i *(2 * Math.PI/60)),centerY - clockRadius*Math.cos(i * (2 * Math.PI/60)),(centerX + clockRadius*Math.sin(i * (2 * Math.PI/60)))-(clockRadius /10)*Math.sin(i * (2 * Math.PI/60)),(centerY - clockRadius*Math.cos(i * (2 * Math.PI/60)))+(clockRadius /10)*Math.cos(i * (2 * Math.PI/60))); } 為什么此方法不能遍歷鐘表上的小刻度,其他方法又怎么做?謝謝!
來源:開源中國(guó)
發(fā)布時(shí)間:2017-04-16 16:02:00
項(xiàng)目起因: 1 、 https://www.v2ex.com/t/598406 2 、 https://www.v2ex.com/t/689142 最早本來是自用拿來替代按鍵精靈寫游戲腳本的,后面又加了點(diǎn)東西拿來寫 android 爬蟲監(jiān)控拼夕夕。 最近發(fā)現(xiàn)居然真的有人在用我的框架,因此抽空狠狠更新了一波,目前支持了 root 、xposed 、無障礙三種底層實(shí)現(xiàn),應(yīng)用層能夠無縫切換。支持按鍵精靈那樣的找點(diǎn),找圖。支持 Tesseract 文字識(shí)別。另外,在我自己應(yīng)用里面,還引入 Tensorflow 做驗(yàn)證碼識(shí)別(這個(gè)沒開源) 另外,你不懂 android 開發(fā)?沒關(guān)系,我提供了 http api,你可以使用任何你喜歡的編程語言進(jìn)行開發(fā)^_^ 就在剛剛,我懷著極其激動(dòng)的心情發(fā)布了 2.2 版本。這個(gè)版本里面,我基于 android sendevent 工具的原理,使用 golang 重新實(shí)現(xiàn)了一個(gè) sendevent 工具,通過 root 權(quán)限完成點(diǎn)擊操作。第一次寫這么底層的開發(fā),在自己手機(jī)上測(cè)試通過后相當(dāng)激動(dòng),第一時(shí)間發(fā)布了出來。 最后,歡迎各位使用,有任何使用問題,bug,建議都可以提 issuse,一定第一時(shí)間回復(fù)。順便再征集一個(gè) logo,不知道有沒有哪位大俠能夠順手幫忙畫一個(gè)??
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:04:02
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 使用JavaFX,想要使Tableview中的某一列 TableColumn 是按鈕button ,該如何實(shí)現(xiàn) ??? 急求,謝謝!!!
來源:開源中國(guó)
發(fā)布時(shí)間:2016-03-23 16:17:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 想拿javaFx練習(xí)做一個(gè)簡(jiǎn)單的增刪改查,,可是在tableview中如何加入CheckBox并判斷是都行是否被選中,目前用的如下方式:colSelect.setCellFactory(CheckBoxTableCell.forTableColumn(colSelect));但是不知道如何判斷某一行被選中
來源:開源中國(guó)
發(fā)布時(shí)間:2016-11-11 16:10:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 我想從javafx 的webview 里面實(shí)現(xiàn)文件的下載,但是不知道怎樣做。比如我在javafx中打開了一個(gè)網(wǎng)頁https://www.baidu.com/s?f=8&rsv_bp=1&rsv_idx=1&word=mysql%E4%B8%8B%E8%BD%BD&tn=97124639_hao_pg 然后我普通下載mysql:https://www.baidu.com/link?url=ZpEcQHYVjfMQ3eNlwsIwA5zhsOg8N1AASYhYe9qDcmsrL3aOENHdun35yT50zGrBkjJFtwcCocjazV54GIkaJPxqkCXhGH8dxRHl2mLgpdm&wd=&eqid=bc66678b000006d40000000657ee056a 正常的瀏覽器都會(huì)彈出一個(gè)框來保存文件,但是javafx webview中沒有自帶這樣的框,要自己寫,應(yīng)該怎樣寫呢?請(qǐng)各位大神給點(diǎn)思路。
來源:開源中國(guó)
發(fā)布時(shí)間:2016-09-30 14:27:00
平時(shí)做動(dòng)態(tài)網(wǎng)頁動(dòng)態(tài)網(wǎng)站 ,做一些簡(jiǎn)單的增刪改查,大家都習(xí)慣了用 PHP 。 我去年在做一個(gè) web 查詢應(yīng)用的時(shí)候,在 github 上面發(fā)現(xiàn)一個(gè)開源項(xiàng)目非常適合我使用,但是它是用 python 搞的。沒辦法,我就只能嘗試學(xué)習(xí)使用 python 做一個(gè) web 的增刪改查,根據(jù)網(wǎng)上推薦,我選用了 Nginx 、 uWSGI 和 Flask 。 用 Nginx 、 uWSGI 和 Flask 搭建 web 應(yīng)用,對(duì)于新人來說,最難的就是 uWSGI 以及 Nginx 配置,接入 ssl 證書也是很麻煩,如果在一個(gè) nginx 下部署多個(gè)應(yīng)用,那更加復(fù)雜了,當(dāng)時(shí)剛開始玩就被折磨的很慘,一個(gè)又一個(gè)奇怪問題出現(xiàn),雖然根據(jù)教程按部就班最終成功了,但是下次如果再次搭建這樣的應(yīng)用,肯定也是一臉懵逼。 今年,我發(fā)現(xiàn)寶塔面板提供了 python 項(xiàng)目管理器,通過它就非常方便搭建 python 的 web 應(yīng)用,并且它提供多個(gè)虛擬的 python 執(zhí)行環(huán)境,快速為應(yīng)用映射域名,部署 ssl ,真的非常省心省力。 hu.is 這個(gè)就是目前部署在寶塔面板的 whois 查詢應(yīng)用,基于 python 的 uWSGI 和 Flask 。 另外我目前對(duì)于 Nginx 、 uWSGI 和 Flask 的作用和關(guān)系簡(jiǎn)單粗暴理解如下,如有錯(cuò)誤,請(qǐng)大佬指出: Nginx 就是公司前臺(tái)妹子,如果有萌新面試 PHP 工程師,那么前臺(tái)就會(huì)打電話告知 HR ,有人要面試 HR 就是 uWSGI ,她知道項(xiàng)目經(jīng)理在哪里,并且了解項(xiàng)目經(jīng)理的需求,她就會(huì)把萌新帶到一個(gè)小黑屋,這就是項(xiàng)目經(jīng)理要面試考核的地方 項(xiàng)目經(jīng)理就是 Flask ,他會(huì)考核萌新的 PHP 能力,并且最終決定要不要招聘這個(gè)萌新
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:03:48
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> Javafx開發(fā)的桌面應(yīng)用程序,當(dāng)我點(diǎn)擊退出按鈕退出后,系統(tǒng)的后臺(tái)進(jìn)程中仍然有對(duì)應(yīng)的進(jìn)程,這是什么原因引起的呢?求問
來源:開源中國(guó)
發(fā)布時(shí)間:2015-01-16 16:43:00
GitHub 地址: https://github.com/dukewan/canvas-photo-markup 有時(shí)使用 iPhone 截圖之后,想標(biāo)注一下圖片,不是很喜歡系統(tǒng)自帶的圖片標(biāo)注,也不支持打馬賽克,于是用 Canvas 自己實(shí)現(xiàn)了一個(gè)。 Demo 支持桌面和移動(dòng)端,還可以通過 Safari 保存網(wǎng)頁到桌面,就可以快速訪問啦。 支持以下功能: 箭頭 矩形 橢圓形 畫筆 文字輸入 馬賽克 調(diào)整畫筆大小 調(diào)整畫筆顏色 保存成圖片
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:03:38
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 在javafx中我想通過一個(gè)線程實(shí)現(xiàn)每隔幾秒鐘對(duì)javafx中的節(jié)點(diǎn)截一個(gè)圖,調(diào)用的是WritableImage snapshot(SnapshotParameters params, WritableImage image)方法,但是不行,因?yàn)檫@個(gè)函數(shù)首先會(huì)檢查調(diào)用的線程是否是當(dāng)前線程(主線程吧),我用了定時(shí)器后報(bào)的是同樣的錯(cuò)誤,我想java應(yīng)該也是這樣的吧,因此我想問各位大神如何在主線程之外實(shí)現(xiàn)每隔一段時(shí)間截一次圖,有什么方法,或者思路嗎?還請(qǐng)知道的大神不吝賜教
來源:開源中國(guó)
發(fā)布時(shí)間:2016-03-26 21:29:00
星火商店由深度科技論壇大佬 @shenmo 發(fā)起的星火工作組致力于豐富 Linux 生態(tài), 取“星星之火,可以燎原”之意,組建了星火應(yīng)用商店。 我們是個(gè)年輕的團(tuán)隊(duì),大部分成員是 00 后,有小學(xué)生,中學(xué)生,大學(xué)生,來自五湖四海。 盡管我們年齡不同,資歷不同,但是我們努力建設(shè) Linux 生態(tài)的目標(biāo)是相同的, 我們有信心、也有勇氣向著我們共同的目標(biāo)不斷前行! 官方網(wǎng)站 https://www.spark-app.store/ 宣傳片 https://b23.tv/GJRImO
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:03:27
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> @dongfangshangren 你好,想跟你請(qǐng)教個(gè)問題: javafx的TextField不能輸入中文,請(qǐng)問你知道怎么解決嗎?
來源:開源中國(guó)
發(fā)布時(shí)間:2015-08-17 18:25:00
有這個(gè)想法是有一次看到國(guó)外有專門賣類似的禮物周邊,實(shí)現(xiàn)的過程解決了很多問題https://h5.orangelovely.com/celestial?utm_source=v2ex 大家可以看看自己出生時(shí)的星空都長(zhǎng)什么樣子,而且朋友們還能在你的星空下留言。 祝大家七夕快樂!
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:03:19
上海按摩店踩坑地圖( 3 ~ 5 星的都可以去嘗試,3 星一下,還是算了吧…)地址: https://github.com/cobaltdisco/CN-Massage-Map 以及自己的另一個(gè)項(xiàng)目——谷歌中文搜索結(jié)果屏蔽黑名單 地址: https://github.com/cobaltdisco/Google-Chinese-Results-Blocklist
來源:V2EX
發(fā)布時(shí)間:2020-08-27 18:03:09
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> javafx 部署怎么創(chuàng)建ios包 就是dmg文件 ,我按教程來的,創(chuàng)建成功了,但是沒有dmg文件 有截圖,是不是我少文件,或者少其他東西沒裝?
來源:開源中國(guó)
發(fā)布時(shí)間:2016-04-18 14:42:00