NodeJS的學習分享(踩坑記錄

2021-09-27 10:59:28 字數 1876 閱讀 3088

新手從demo入手了解程式執行過程是乙個不錯的方法,下面是網上搜的乙個單請求方法,就像是很多語言初始執行的「hello world「,請注意**裡的注釋:

const cheerio = require('cheerio');// cheerio實現了jquery的乙個子集,呼叫.load()後的使用方式基本與jquery一致,比如選擇器$(selector)與.find()函式

const http = require('http'); //介面請求包

const iconv = require('iconv-lite'); //轉碼包

});

在持續開發專案的過程中,也發現了一些值得記錄的地方:

1.mysql資料庫儲存(mysql  npm)

const mysqls = require('mysql');

let pool = mysqls.createpool();

pool.getconnection(function (err, connection)

let item =

connection.query("insert into test_a(`a`,`b`,??) values(?,?,?)", ["c", 2, [3, 4]], function (error, results, fields)

})})

①如果不小心傳入了object型別的引數,模組會列舉其屬性並按update引數格式化,如傳入

val =
轉換後為"`a` = 1, `b` = 2, `c` = 3",這個用在修改物件資料時應該很方便,只需乙個佔位符「?」。除了物件,還可以是具體值或陣列;如果為」??「,則對應的是乙個或一組欄位名 ,執行上方程式會有如下執行結果:

②返回結果集results型別是陣列,即使是查詢數量的count()函式也一樣,所以需要用遍歷的方式取值

2.正規表示式的使用(js自帶)

宣告方式:

①函式:new regexq("\\d","g")     用雙反斜槓轉義

②單斜槓:var reg= /\d/g           用反斜槓轉義

當用符號「g」標識全域性模式時,exec()會迭代更新匹配字元的最後定位,即下一次查詢會從上一次的最後定位開始查詢,迴圈呼叫則能獲取到所有匹配的非null值。

3.同步標識async、await

async與await是es7繼promise後出現的同步標識,使**更加簡潔且增強可讀性,十分好用。

async表示方法可不加物件鎖執行,await是等待完成的標識,有執行完當前函式體內阻塞方法的功能,如是巢狀鏈都要有await標識,舉個例子(假定有非同步方法async()):

//可行:

firstfun();

async function firstfun()

async function secondfun()

//不可行:

firstfun();

async function firstfun()

async function secondfun()

附一些便捷的方法

任意型別判空:obj||』』 === 『』

字元拼接工具可以用string-format

用node-excel讀取位元組陣列型別的excel檔案: require("xlsx").read(new uint8array(data))

Python 踩坑記錄

1.浮點數判斷 工作中遇到類似下面邏輯判斷 i 1 while i 1.5 i i 0.1 print i在想象中i應該停止在1.5就不輸出了,但是實際的輸出結果是無限迴圈。這是因為在計算機的邏輯中,浮點數的儲存規則決定了不是所有的浮點數都能準確表示,有些是不準確的,只是無限接近。如0.1轉換為二進...

Java踩坑記錄

1.quartz整合spring框架service層物件注入為null解決方案 jobdetailfactorybean中注入的是乙個cn.itcast.quartz.hellojob實現類的全路徑,底層會反射建立出乙個hellojob的物件,但是該物件不是由spring管理的,所以業務層的物件無法...

SSD踩坑記錄

原github專案位址,借用大神的模型自己訓練ssd 1 error default maxpoolingop only supports nhwc on device type cpu data format nchw 修改為 nhwc 2 關於dataset name 將影象資料轉換為tfrec...