『壹』 一道nodejs+ES6的練習題,求大神給解題思路
1、分析數據來源
首先我們觀察study.txt文件中的內容格式:
studentID+空格+賺的錢數,且每一行只有一條記錄,我們需要做的就是聲明一個變數:
var studyData = { };
2、在nodejs中有自帶的fs庫處理文件。利用fs庫讀取文件,再利用js原生函數split將 studentID和賺的錢數分割開來並賦值到studyData中,如:studyData = {"wang": 60, "xiaoli": 80, "wang": 40 },再對studyData進行處理,將其中key值相等的合並在一起,最後變成這樣:studyData = {"wang": 100, "xiaoli": 80 },到這一步,我們已經知道了每個同學各自賺到多少錢了。
3、根據json對象的屬性對studyData進行排序,sort()。
生成按照總額排序的表,這里的表題主指的是excel表格吧,我們可以使用"xlsx"庫,將已經排好序的數據直接生成excel表格,xlsx鏈接,至此,完成。
『貳』 2019學java還是python
Java和Python兩門語言都是目前非常熱門的語言,可謂北喬峰南慕容,二者不分上下,棋逢對手。但是對於初學者來說,非常困惑,因為時間和精力有限,上手必須要先學一門,到底選那個好呢,今天3分鍾帶你透徹了解。
1.運行速度
Java是靜態語言靜態編譯的,速度上要比Python快的很多,而Python動態類型語言,一邊執行一邊編譯,速度要上慢一些。
2.對Legacy代碼的支持
對於legacy代碼的支持,由於Java大量的用於電商,互聯網後端,銀行等大型系統,所以對於legacy的代碼的數量要遠大於Python。而Python要更輕量級一些,沒有那麼多legacy的問題。尤其是Py3即將全面推廣,Py2要退出歷史舞台。
相關推薦:《Python教程》
3.代碼開發效率
Python代碼開發效率非常高,同樣的函數功能,Java需要十幾行,Python只要幾行,代碼數量要遠小於Java,這樣開發的時間和效率比Java高很多。目前為止我認為Python是最優美的語言。
4.資料庫的支持
Java跟資料庫結合更緊密一些,有大量的資料庫支持Java,類似JDBC這樣的封裝,使得的Java使用資料庫更容易。Python雖然沒有他倆關系那麼鐵,但是目前支持Python的資料庫也非常多,而且很多主流資料庫SQL,Mongodb,Redis都有API支持Python, 可以說Python最不缺的就是庫。
5.應用領域
Java主要的戰場是在Android手機開發和Web後端開發,而Python主要應用在數據科學,機器學習,人工智慧領域和IOT.可以說兩個都是各自領域的霸主,但是隨著谷歌扶植Kotlin來取代Java,而後端開發NodeJS強勢崛起,所以Java的後端開發霸主地位正在被挑戰。
6.薪資收入
月薪收入Python略勝一籌,主要是因為人工智慧太火了,起步價都在30k左右,所以應屆生的薪資要高於Java。但是對於資深工程師來說,就不一定嘍,看下面的圖:
6年以上的資深工程師,明顯Java程序員的薪資要比Python高一些,但是也只是略高一點點。哇一個月都是60多K,這個收入還是很誘人的,國內應該沒有這么高。
7.語法
Python的語法應該是遠勝於Java,簡潔優美,而且庫非常非常多。如果上手學Python,Python的學習成本和難度要低很多,這也是為啥K12的學生首選語言都是Python。
所以綜合來看,Python是一門上手非常快,容易學的語言,如果選擇人工智慧,機器學習,Python是你最佳選擇。如果你從來沒有學過編程也建議你先學Python比較好一點。
而對於後端開發Java目前更占優勢,因為legacy的後端市場java的份額比較大,但是對於小公司或者創業公司,後端市場Django,NodeJS也是非常有競爭力的。
『叄』 如何編寫Nodejs程序
您好:
var traceur = require('traceur');
var rocore = require('rocore');
var fs = require('fs');
var path = require('path');
var source = '/home/king/box-fork/dist';
var target = '/home/king/box-fork-compile';
rocore.readSync([source], 0, function (type, pathname) {
var newPath = path.join(target, pathname.replace(new RegExp('^' + source.replace(/\//g,'\/').replace(/\\/g,'\\')), ''));
if (type === 'file') {
if (path.extname(pathname) !== '.js') {
console.log(' %s %s', pathname, newPath);
fs.writeFileSync(newPath, fs.readFileSync(pathname));
return;
}
console.log('traceur %s %s', pathname, newPath);
var src = fs.readFileSync(pathname, {encoding:'utf8'});
var options = {};
var compiled = traceur.compile(src, options);
fs.writeFileSync(newPath, compiled, {encoding:'utf8'});
}
if (type === 'directory') {
console.log('mkdir %s', newPath);
fs.mkdirSync(newPath);
}
});
『肆』 nodejs每秒並發多高
因為並發數受帶寬及其它很多因素影響,不能單就node.js來說並發多高。
如果無限帶寬,無限計算力,無限存……你可以認為node.js並發數也是無限的,但這沒有意義,在同樣的情況下,就算是IIS,並發數也可以認為是無限的。
它是通過非阻塞來達到高並發的目標的,我們用node.js也是用它的非阻塞這個特點。
在優化線程池,以及埠復用等技術的基礎上,對於簡單的業務處,使用其它的模型也可以達到高並發的目標,但在面臨業務邏輯耗時長的問題時,node.js的優勢就比較明顯。
如果一個事務請求涉及三個業務邏輯,比如登錄(login)這個事務,假設我們定義它有三個業務邏輯:
verify:驗證用戶是否合法(用戶名,密碼什麼的);
user:獲取身份信息(許可權什麼的);
moles:返回他可用的業務介面列表(商品管理,用戶管理,訂單審核等)
我們假設:只有1完成了才可以進行2,2完成了才可以進行3,上述每個業務邏輯都需要1秒去完成(客戶的登錄請求這個事務需要3秒才能完成)。
同時,我們也假設,這三個業務邏輯服務都是在其它的伺服器上,它們的並發數無上限。
然後,我們在「一瞬間」我向這個服務發出1000個login請求
那麼,我們來看看node.js與純java的不同。
nodejs調用它們來完成,因為它是非阻塞的,它調了verify後,不再等待它返回結果,就可以處理另一個事務請求了,當verify請求有返回結果時,它再來處理結果,決定是否調用user……,整個過程,只在一個進程中就完成了。
它收到這1000個請求後,在這個進程中向verify發出了1000個請求,過了一秒,收到回應又有900個驗證成功,它返回了100個登錄失敗的信息,並向user發出了900個請求,又過了一秒,返回了900個moles的結果。
這樣的結果,在客戶端看來,發出請求後1秒,收到了100個登錄失敗,又過了兩秒,收到了900個可用功能列表(因為非同步機制,它還會稍微長一點點,假設是3.003秒吧)
現在,在帶寬與計算力不受限的情況下,同樣的內存,看看純Java是怎麼個情況。如果使用純java來做這個事,java不使用非同步模式的話,一個線程響應一個請求。
java同樣「一瞬間」收到了1000個請求,java開啟了1000個線程去響應它們,然後這1000個線程在第一秒里都在等待verify,第一秒結束時,返回100個登錄失敗,關閉了100個線程,又過了兩秒,900個線程得到了各自的moles結果,並返回給客戶端。
對於客戶端來說,感覺就是3秒,沒有那個0.003。
好,至此,node.js與純java的區別已經很明顯了。純java在不使用非阻塞機制的情況下,它需要開啟1000個線程(或者進程,這個成本更高)而node.js則需要更多的時間。
在內存受限的情況下,node.js就有優勢了。
假設一個進程需要1M內存,為了能同時開1000進程,你需要額外的1G內存來給它。而對於node.js,它可能只需要20M來完成這個事,代價就是每個客戶端都需要多等那麼一小會。
嚴格來說,並不提倡在node.js中實現業務邏輯,node.js最好是只用於以非阻塞模式連接多個阻塞模式的業務邏輯。
『伍』 如何用nodejs實現mysql多表查詢並顯示結果及刪除
你要在entity中創建一個多表查詢屬性的實體類。這樣才能承裝查詢出來的數據,之後將數據傳入作用域中或者是以json字元串返回前台,前台再進行解析
『陸』 用nodejs進行mysql的循環添加
你是哪裡有問題? 調用了select()
還有 你為什麼不用連接池
『柒』 JS中String類型轉換Date類型
1、比較常用的方法,但繁瑣,參考如下:
主要使用Date的構造方法:(int year , int month , int day)
<script>
var str1 = "2009-8-9";
var arr1 = str1.split("-");
var date1 = new Date(arr1[0],parseInt(arr1[1])-1,arr1[2]);
var str2 = "2009-8-4";
var arr2 = str2.split("-");
var date2 = new Date(arr2[0],parseInt(arr2[1])-1,arr2[2]);
alert(date1>date2);//true
</script>
2、相對簡便的方法,參考如下:
var str = "2005-12-15";
var d = new Date(str.replace(/-/g, "/"));
Example:
<script>
var s = "2010-09-11";
var s1 = "2010-09-12";
var d = new Date(s.replace(/-/g,"/"));
var d1 = new Date(s1.replace(/-/g,"/"));
var m = (d1.getTime()-d.getTime())/(1000*60*60);
alert(m); //24
</script>
『捌』 nodejs express 怎麼清除session
Note: By connect/express's default, session cookies are set to expire when the user closes their browser (maxAge: null). In accordance with standard instry practices, connect-mongo will set these sessions to expire two weeks from their last 'set'. You can override this behavior by manually setting the maxAge for your cookies -- just keep in mind that any value less than 60 seconds is pointless, as mongod will only delete expired documents in a TTL collection every minute.
『玖』 nodejs的net模塊出現這個問題怎麼回事,各位大神幫忙看一下
如果是這個提示的話:
Error: This socket has been ended by the other party
at Socket.writeAfterFIN [as write] (net.js:274:12)
at broadcast (C:\nodejs\app.js:19:15)
at Socket.<anonymous> (C:\nodejs\app.js:60:5)
at Socket.EventEmitter.emit (events.js:95:17)
at Socket.<anonymous> (stream_readable.js:710:14)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable (_stream_readable.js:382:10)
at emitReadable (_stream_readable.js:378:5)
at readableAddChunk (_stream_readable.js:143:7)
at Socket.Readable.push (_stream_readable.js:113:10)
是延時發送造成的,結束了延時發送就找不到socket了
『拾』 nodejs怎麼清除cookie
var date=new Date(); date.setTime(date.getTime()+30*60*1000); //設置來date為當源前時間+30分 document.cookie="key=value; expires="+date.toGMTString(); //將date賦值給expires