你為什么使用 Node.js 呢? Node.js 適合哪些應(yīng)用場(chǎng)景? 哪些場(chǎng)景不應(yīng)該使用 Node.js? 內(nèi)容較多,具體詳見(jiàn): http://docs.breword.com/92hackers-translate-articles/why-the-hell-would-you-use-nodejs?language=zh-CN 我使用 Breword 翻譯工具快速翻譯了這篇文章,為我節(jié)省很多時(shí)間,如果你也想翻譯自己的文章,歡迎使用 Breword 翻譯工具: www.breword.com , 以便提高翻譯效率。
如何用 Node.js 處理一個(gè) 2.55 Gb 的文件,并按要求提取,統(tǒng)計(jì)出需要的信息? 文章完整地址為: http://docs.breword.com/92hackers-translate-articles/use-nodejs-read-large-files?language=zh-CN 我使用 Breword 翻譯工具快速翻譯了這篇文章,為我節(jié)省很多時(shí)間,如果你也想翻譯自己的文章,歡迎使用 Breword 翻譯工具: www.breword.com , 以便提高翻譯效率。
electron app 有一個(gè) DLL 庫(kù) 方法是這樣定義的 SMART_EXPORTS bool getCameraFrameRGB(int handle, unsigned char *pdata, int *height, int *width, int channels, int type); 其中的第二個(gè)參數(shù) unsigned char *pdata 不太清楚用什么方式去調(diào)用 嘗試過(guò)好幾種方案 都有問(wèn)題 要么調(diào)用結(jié)束后獲取到值為 0 要么控制臺(tái)崩潰 let VEncode = new ffi.Library(dllFilePath, { getCameraFrameRGB: [ ref.types.bool, [ ref.types.int, ref.refType(ref.types.uchar), 'int *', 'int *', ref.types.int, ref.types.int ] ], // 獲取圖片數(shù)據(jù) })
最近,Node.js 和 Python 都因其廣泛的特性和功能在市場(chǎng)上大受歡迎。在你開(kāi)發(fā) Web 應(yīng)用程序的后端時(shí),這兩種技術(shù)都是你的首選。 眾所周知,每個(gè)項(xiàng)目都有其自己的規(guī)范和需求,因此,選擇一個(gè)合適的編程語(yǔ)言進(jìn)行開(kāi)發(fā)勢(shì)在必行。在本文中,我們將會(huì)詳細(xì)討論這兩種技術(shù),列出其優(yōu)缺點(diǎn),并得出結(jié)論,希望能為你在項(xiàng)目選擇哪種技術(shù)時(shí)提供一些幫助。 在開(kāi)始對(duì)比這兩種技術(shù)之前,讓我們先來(lái)簡(jiǎn)單了解一下 Node.js 和 Python 的基礎(chǔ)知識(shí)。 什么是 Node.js ? 用一種簡(jiǎn)單易懂的語(yǔ)言來(lái)說(shuō),Node.js 是一個(gè)服務(wù)器端平臺(tái),它是在 Google Chrome 的 JavaScript 引擎(稱為 V8 引擎)上開(kāi)發(fā)的。Node.js 由 Ryan Dahl 于 2009 年開(kāi)發(fā),是一個(gè)開(kāi)源服務(wù)器環(huán)境,主要在 Windows 、Linux 、Unix 、MacOSX 等不同平臺(tái)上運(yùn)行。 使用 Node.js ,開(kāi)發(fā)人員可以使用 JavaScript 編寫(xiě)命令行工具和服務(wù)器端腳本功能。由于這樣便捷、全棧的開(kāi)發(fā)方式,它被認(rèn)為是構(gòu)建游戲平臺(tái)、論壇和廣告服務(wù)等應(yīng)用程序的首選技術(shù)。對(duì)于所有同時(shí)具有高速和密集 I/O(輸入 /輸出)的連接或應(yīng)用程序,以及其他一些應(yīng)用程序(如生產(chǎn)力應(yīng)用程序)的項(xiàng)目來(lái)說(shuō),它都是一個(gè)很好的選擇。 讓我們接下來(lái)一起去看看什么是 Python,以及使用它可以開(kāi)發(fā)哪些應(yīng)用程序吧。 什么是 Python ? Python 是一種具有動(dòng)態(tài)語(yǔ)義的開(kāi)源面向?qū)ο缶幊陶Z(yǔ)言。它是一種高級(jí)開(kāi)發(fā)語(yǔ)言,高層次的數(shù)據(jù)結(jié)構(gòu)、動(dòng)態(tài)類型和動(dòng)態(tài)綁定等功能,使得它非常適合開(kāi)發(fā)人員開(kāi)發(fā)高級(jí)應(yīng)用程序,同時(shí),也適合作為膠水語(yǔ)言連接已有的軟件組件。 它是一種簡(jiǎn)單易學(xué)的語(yǔ)言,其語(yǔ)法主要集中在可讀性上,從而降低程序維護(hù)成本。Python 支持模塊和包,支持程序模塊化和代碼重用。使用這種基于技術(shù)的高級(jí)語(yǔ)言,開(kāi)發(fā)人員可以快速構(gòu)建業(yè)務(wù)應(yīng)用程序、教育平臺(tái)、桌面用戶界面、游戲和娛樂(lè)應(yīng)用程序。 在簡(jiǎn)單的了解了兩種語(yǔ)言后,下面我們將對(duì)這兩種語(yǔ)言進(jìn)行詳細(xì)的對(duì)比? Node.js 與 Python:對(duì)比 1. 靈活性和可擴(kuò)展性 在 Node.js 和 Python 之間選擇一個(gè)選項(xiàng)時(shí),考慮其靈活性和可擴(kuò)展性非常重要。眾所周知,靈活性和可擴(kuò)展性被視為在不影響應(yīng)用程序性能和速度的情況下執(zhí)行不同數(shù)量請(qǐng)求的應(yīng)用程序能力。 在開(kāi)發(fā)大量基于內(nèi)容的應(yīng)用程序和擁有各種用戶的應(yīng)用程序時(shí),這兩者(靈活性和可擴(kuò)展性)都起著至關(guān)重要的作用。 Node.js 在 Node.js 中,開(kāi)發(fā)人員在開(kāi)發(fā) Web 應(yīng)用程序或任何其他類型的應(yīng)用程序時(shí)都可以很容易地實(shí)現(xiàn)可擴(kuò)展性,因?yàn)檫@種技術(shù)對(duì)于在單線程中開(kāi)發(fā)同步架構(gòu)非常流行。 如前所述,Node.js 是使用 V8 引擎進(jìn)行解釋的,因此它的性能非常出色,從而使開(kāi)發(fā)人員在開(kāi)發(fā)應(yīng)用程序時(shí)能夠靈活自如地工作。 這項(xiàng)技術(shù)的最好之處在于,它啟用了單模塊緩存,從而減少了應(yīng)用程序的加載時(shí)間,并使響應(yīng)速度比以前更快。 包括 Python 和 JavaScript 在內(nèi)的這兩種技術(shù)都被稱為解釋語(yǔ)言。但在 V8 這樣的黑科技加持下,Python 的執(zhí)行效率還是輸給了 Node.js 。 使 Python 落后于 Node.js 的另一點(diǎn)是,它不支持異步體系結(jié)構(gòu),因此它的擴(kuò)展性比 Node.js 差些。 Python _ 總結(jié): __Python__在靈活性和可擴(kuò)展性方面落后于__Node.js?_ 。 2.程序庫(kù) 如你所知,程序庫(kù)是不同功能,方法的集合,這些功能,方法和技巧使用戶無(wú)需編寫(xiě)額外的代碼只需引入即可執(zhí)行不同的操作。使用庫(kù),開(kāi)發(fā)人員可以在編碼時(shí)節(jié)省一些時(shí)間和精力。 Node.js 與程序庫(kù)不同,Node.js 通過(guò)不同的模塊和包在 NPM(節(jié)點(diǎn)包管理器)中進(jìn)行管理。NPM 本身有著比較容易上手的文檔,并且非常容易使用,所以使用起來(lái)易用且好上手。 談到 Python 庫(kù)和打包程序,它們是在 PIP 中管理的,PIP 代表 Python Package Index,對(duì)于軟件開(kāi)發(fā)人員來(lái)說(shuō)學(xué)習(xí)和使用起來(lái)非常容易和流暢。Python 中的每個(gè)庫(kù)都附帶了一系列有用的模塊,您可以為日常編程導(dǎo)入這些模塊。 Python _ 總結(jié): __在引入程序庫(kù)這一方面,_ Node.js__和__Python__表現(xiàn)類似,因?yàn)樗鼈兌加凶约贺S富的庫(kù)和模塊供開(kāi)發(fā)人員使用,使開(kāi)發(fā)人員的精力集中在業(yè)務(wù)上,而不必在基礎(chǔ)的功能方面耗費(fèi)大量的時(shí)間成本。 3.項(xiàng)目的適用性 每個(gè)公司都有自己的項(xiàng)目和要求,因此必須選擇有助于企業(yè)在短時(shí)間內(nèi)使項(xiàng)目取得成功的正確技術(shù)。 Node.js 在開(kāi)發(fā)游戲平臺(tái)、基于高內(nèi)容的應(yīng)用程序、復(fù)雜的單頁(yè)應(yīng)用程序、實(shí)時(shí)聊天、Trello 之類的協(xié)作工具以及流應(yīng)用程序方面,Node.js 是最佳選擇。小型公司和初創(chuàng)公司可以輕松利用 Node.js 技術(shù)來(lái)構(gòu)建網(wǎng)站和 Web 應(yīng)用程序。 Python 適用于各種項(xiàng)目,例如科學(xué)數(shù)值計(jì)算、網(wǎng)絡(luò)編程和 Web 應(yīng)用程序。大部分成功的公司在使用 Python 語(yǔ)言。 使用 Python 語(yǔ)言,您可以為比特幣創(chuàng)建一個(gè)復(fù)雜的計(jì)算器,挖掘推特?cái)?shù)據(jù),挖掘微博數(shù)據(jù),封裝推特提要,等等。 Python 結(jié)論 在這篇文章中,我們比較了 Node.js 和 Python,并討論了這些技術(shù)最適合什么類型的項(xiàng)目。根據(jù)您的項(xiàng)目需求和業(yè)務(wù)類型,您可以選擇這些技術(shù)中的任何一種,然后開(kāi)始開(kāi)發(fā)你自己的項(xiàng)目。 如果你有什么想說(shuō)的內(nèi)容或是反饋,歡迎通過(guò)下面的留言框告訴我們。
因?yàn)?npm 的設(shè)計(jì)原因,安裝個(gè)東西會(huì)生產(chǎn)成千上萬(wàn)的 http 請(qǐng)求,用代理的速度不是太理想,所以我用了國(guó)內(nèi)淘寶源。但項(xiàng)目用了幾個(gè)包安裝時(shí)需要從 github 下東西,而你知道的那是完全下不動(dòng)的。那問(wèn)題就來(lái)了,設(shè)置了 npm proxy 的話連國(guó)內(nèi)源的請(qǐng)求也被代理了,是不是有我不知道的方式可以解決這個(gè)問(wèn)題?
Github 之前經(jīng)常需要和運(yùn)營(yíng)同事打交道,將她們 Google Spreadsheet 上維護(hù)的內(nèi)容映射到數(shù)據(jù)庫(kù)里,如果數(shù)據(jù)變動(dòng)比較頻繁,這種需求又要單獨(dú)做成一個(gè)運(yùn)營(yíng)后臺(tái),非常麻煩。與此同時(shí),她們也會(huì)需要看到一些 sheets 上數(shù)據(jù)在生產(chǎn)上的反饋,比如每條內(nèi)容的點(diǎn)擊量。 但如果 Spreadsheet 自身就是一個(gè)可以增刪改查的數(shù)據(jù)庫(kù),運(yùn)營(yíng)可以編輯她自己的內(nèi)容,程序也可以反過(guò)來(lái)寫(xiě)入一些反饋數(shù)據(jù)到 sheets 中的其他列中去。這樣完全不需要什么運(yùn)營(yíng)后臺(tái),對(duì)開(kāi)發(fā)和運(yùn)營(yíng)都是個(gè)好事。所以寫(xiě)了這個(gè) SheetSQL 的庫(kù),在很多數(shù)據(jù)量不大,實(shí)時(shí)性要求不那么高的場(chǎng)景非常適合。 Example const db = new Database({ db: '1ya2Tl2ev9M80xYwspv7FJaoWq0oVOMBk3VF0f0MXv2s', table: 'Sheet1', // optional, default = Sheet1 keyFile: './google-serviceaccount.json', cacheTimeoutMs: 5000, // optional, default = 5000 }) // load schema and data from google spreadsheet await db.load() // insert multiple documents let docs = await db.insert([ { name: 'joway', age: 18, }, ]) // find documents and update them docs = await db.update( { name: 'joway', }, { age: 100, }, ) // find documents docs = await db.find({ name: 'joway', }) // find all documents docs = await db.find({}) // find documents and remove them docs = await db.remove({ name: 'joway', })
typescript unit test 是用 jest 寫(xiě)的。 很多測(cè)試文件,但有一部分測(cè)試文件,跑的時(shí)候,jest 顯示“紅色”10s 。 這個(gè)應(yīng)該是指明該測(cè)試文件有性能問(wèn)題。unit test 跑的時(shí)間太長(zhǎng)了。 可是,如果我單獨(dú)跑這個(gè)測(cè)試文件,大概 5s 左右,每一個(gè)小的 case 都是 10ms 以內(nèi) /左右。并看不出來(lái)哪個(gè) test 有性能問(wèn)題呢。 node ".\node_modules\jest\bin\jest.js" ".\
這里有一個(gè)很基本的函數(shù): function box(val){ console.log('假設(shè)這是函數(shù)原有代碼'); val(); //這是回調(diào)函數(shù) } 現(xiàn)在控制臺(tái)運(yùn)行它的結(jié)果是這樣的: box(function(){console.log('回調(diào)函數(shù) 01')}); //返回 [假設(shè)這是函數(shù)原有代碼] + [回調(diào)函數(shù) 01 ] box(function(){console.log('回調(diào)函數(shù) 02')}); //返回 [假設(shè)這是函數(shù)原有代碼] + [回調(diào)函數(shù) 02 ] 很正常,上一次的結(jié)果被這次的參數(shù)替代掉了 現(xiàn)在要達(dá)到的需求: box(function(){console.log('回調(diào)函數(shù) 01')}); //返回 [假設(shè)這是函數(shù)原有代碼] + [回調(diào)函數(shù) 01 ] box(function(){console.log('回調(diào)函數(shù) 02')}); //返回 [假設(shè)這是函數(shù)原有代碼] + [回調(diào)函數(shù) 01 ] + [回調(diào)函數(shù) 02 ] 說(shuō)簡(jiǎn)單點(diǎn)就是:如何在一個(gè)函數(shù)內(nèi)追加新的代碼片段,更新這個(gè) box 函數(shù),還不能執(zhí)行它(它也是回調(diào)函數(shù),有條件才能激活的) 請(qǐng)問(wèn)該如何做到,如果有懂得 v 友,還希望不要吝嗇賜教。
如上所述。滑動(dòng)元素下面的元素就是簡(jiǎn)單的 form 里套了 10 多個(gè) div,div 里面就是幾個(gè)簡(jiǎn)單文字,然后以 form 為單位,達(dá)到 100 多個(gè)的時(shí)候就比較明顯卡頓了。
RT,項(xiàng)目使用的 snap.svg 框架繪制圖案,需要頻繁的獲取坐標(biāo)進(jìn)行計(jì)算,所以會(huì)不停的調(diào)用 getBBox,結(jié)果造成繪制效率極其地下,各位,有什么替代的方法嗎,提高繪制性能。 求各位幫忙,感激不盡啊~~~~~~~~~~~~~~~~~~
現(xiàn)實(shí)需求: 執(zhí)行‘npm install phantomjs-prebuilt’后,發(fā)現(xiàn)下載很慢,半個(gè)小時(shí)才走了 2%。 于是直接從 github 上下載了‘’phantomjs-prebuilt‘’的源代碼,但是怎么把這個(gè)開(kāi)源代碼安裝到項(xiàng)目的 node_modules 模塊,卻發(fā)現(xiàn)無(wú)從下手。跪求好心人指導(dǎo)一下,越詳細(xì)越好,謝謝。 那個(gè)包 github 上面是一堆文件.
起因:客戶需要匹配一個(gè)量比較大的列表,并且隨時(shí)都會(huì)更新內(nèi)容,點(diǎn)擊還得綁定事件,所以理所當(dāng)然的使用了 js 的事件托管,但實(shí)踐中卻發(fā)現(xiàn)了問(wèn)題,以下是代碼:
html 代碼
測(cè)試文字
測(cè)試文字
測(cè)試文字
js 代碼 var body = document.querySelector('body'); body.addEventListener('click',function(event){ var event = event || window.event; var tisTag = event.srcElement || event.target; if(tisTag.className == 'test'){ alert('li 被點(diǎn)擊了!'); } });
出現(xiàn)的問(wèn)題: 點(diǎn)擊 li 列表后,激活的對(duì)象是 p 標(biāo)簽和 img 標(biāo)簽,導(dǎo)致預(yù)先編寫(xiě)的針對(duì) li 標(biāo)簽的代碼沒(méi)有反應(yīng)。有沒(méi)有辦法忽略子元素 p 和 img ?
各位鐵計(jì),各位大佬有需要用到云服務(wù)器、數(shù)據(jù)庫(kù)等阿里云各類云產(chǎn)品的可以聯(lián)系我,在官網(wǎng)實(shí)際支付價(jià)格后在返點(diǎn),優(yōu)惠咨詢 VX:aliyun9898
1.阿里云渠道合作,你有需求,我有渠道 2.官網(wǎng)優(yōu)惠+返現(xiàn)優(yōu)惠雙享優(yōu)惠 3.新老賬號(hào)都可以,招代理 4.其他平臺(tái)可電話或 vx 詳詢:一五三八七六二一三二一
有用到云服務(wù)器、數(shù)據(jù)庫(kù)等阿里云各類產(chǎn)品的可以聯(lián)系我,阿里云官網(wǎng)購(gòu)買享受官網(wǎng)任何優(yōu)惠后在反現(xiàn)訂單金額 10-15 個(gè)點(diǎn),發(fā)放抵代金券等你來(lái)拿!自用節(jié)約成本,幫助客戶溝買額外盈利!優(yōu)惠咨詢 VX:Aliyun_CYY
最近在調(diào)研阿里云的彈性伸縮服務(wù),目前對(duì)于代碼部署這塊有點(diǎn)疑問(wèn): 1.怎么保持所有實(shí)例的一致性 2.在伸縮過(guò)程中部署了代碼,那怎么更新所有實(shí)例 看了下阿里云的文檔,推薦是建立自啟動(dòng)腳本來(lái)做代碼的更新工作,那怎么保證在代碼更新完成之后才正式提供服務(wù)呢?有推薦放共享存儲(chǔ)的,實(shí)例只有運(yùn)行環(huán)境,那哪種共享存儲(chǔ)合適呢?以前有共享塊存儲(chǔ),現(xiàn)在阿里云官網(wǎng)看不到這個(gè)產(chǎn)品了,用 NAS 是否有讀寫(xiě)性能問(wèn)題?希望有經(jīng)驗(yàn)的大佬指教下。
主要用來(lái)存實(shí)驗(yàn)數(shù)據(jù)(還有 djj )小文件特別多( 300 萬(wàn)個(gè)),加起來(lái)沒(méi)多大,4T 左右。百度盤超級(jí)會(huì)員還有 2 年,前幾天公開(kāi)課被百度替換成 8 秒教育片,實(shí)在忍不了,開(kāi)了一個(gè)月 10TB Google One (因?yàn)?G Suite 有 40 萬(wàn)文件限制),rclone 用了半個(gè)月傳完,發(fā)現(xiàn)文件夾大小都看不了,文件傳沒(méi)傳完都不知道,打算自建。目前服務(wù)器用的是 Nextcloud,別的沒(méi)問(wèn)題,3900X + 32GB RAM 的服務(wù)器 300 萬(wàn)文件光索引就用了 2 天。干什么都要掃描 2 天,搜索一次 20 分鐘沒(méi)出結(jié)果。查了下有人推薦 Filerun 聽(tīng)說(shuō)對(duì)大量文件支持很好。不知道有沒(méi) V 友用過(guò)?
流量包都取消了,不是更少人用了嗎?怎么線路感覺(jué)變差了 白天工作時(shí)間也會(huì)偶而丟包,連接的遠(yuǎn)程斷開(kāi) 有同感的嗎?
虛擬化采用的 KVM CPU 是英特爾鉑金 8160 IO 很穩(wěn)定 上車地址: aHR0cHM6Ly9oaS41OGdhLmNvbS8= base64 編譯速度這真的快。包年才 860 元,覺(jué)得很合算 遂分享給大家! 祝各位周末愉快。
請(qǐng)問(wèn)有沒(méi)有阿里云 /騰訊云的代理商?都是老用戶. 我每年消費(fèi) 10 萬(wàn)+ 今年已消費(fèi) 15 萬(wàn). 微信: emhhbmd3ZWl5aXpoaXphaXhpYW4=
各位老哥公司或者自用需要阿里云的產(chǎn)品的話,可以聯(lián)系我采購(gòu),新購(gòu)續(xù)費(fèi)升級(jí)都可以反,24 小時(shí)內(nèi)直接打到指定賬號(hào),不影響發(fā)票,新老用賬號(hào)都可以參加
我所理解的 pv 是單個(gè)頁(yè)面點(diǎn)擊的次數(shù), 但是我們目前只是提供 api 接口數(shù)據(jù)供第三方調(diào)用,平均每分鐘調(diào)用在 300w 次,每天 31 億次調(diào)用,可以說(shuō) 300wpv/分鐘嗎? 第二 阿里云的 SLB 監(jiān)控加起來(lái)一共是每秒 6 萬(wàn)左右的 qps,那是不是可以理解成 6w 的 tps 還是 3w ?。
#kubectl create configmap test --from-file=/configmap_dir/ Error from server (RequestEntityTooLarge): Request entity too large: limit is 3145728 但是 /configmap_dir/目錄文件不超過(guò) 3M 呀。。有沒(méi)有大佬解釋一下??
嘗試用 operator-sdk 實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的 kubernetes operator,感覺(jué)挺容易實(shí)現(xiàn)的gayhub 倉(cāng)庫(kù): https://github.com/ica10888/multi-tenancy-operator operator 也就是開(kāi)發(fā)利用 CRD 模型實(shí)現(xiàn)自己需要的邏輯。事實(shí)上 kubernetes API 的很多思想也是基于使用 yaml 來(lái)管理環(huán)境狀態(tài),把基礎(chǔ)設(shè)施當(dāng)作一種數(shù)據(jù)庫(kù)來(lái)使用 。 而實(shí)時(shí)上就目前而言,很多數(shù)據(jù)庫(kù),中間件都在使用 operator 來(lái)實(shí)現(xiàn)管理集群狀態(tài)。如 tidb-operator , mysql-operator , elasticsearch-operator (ECK) , 這樣使部署復(fù)雜集群(如主從,備份,集群多節(jié)點(diǎn)通訊等)和更改集群配置變得簡(jiǎn)單 嘗試用了一下 operator 實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的 k8s 的管理邏輯。感覺(jué)這是一種趨勢(shì),kubernetes 團(tuán)隊(duì)都可以去試一下
從源碼級(jí)別定制自己的 Linux 可能有點(diǎn)難,那要不要換定制「云原生時(shí)代的 Linux 系統(tǒng)」——Kubernetes ?最新博文給大家演示如何從源碼編譯出屬于你自己的 Kubernetes: https://davidlovezoe.club/build-ur-own-k8s
用 readinessProbe 去探活 tomcat 端口不是很靠譜,有時(shí)候應(yīng)用啟動(dòng)異常了,端口一樣能啟動(dòng)起來(lái);而且現(xiàn)在應(yīng)用沒(méi)有暴露出健康檢查的接口?,F(xiàn)在的想法是用 readinessProbe 去 tail catalina.log ,檢查日志里有特定沒(méi)有異常,如果有,就證明 Tomcat 啟動(dòng)異常。有沒(méi)有更優(yōu)雅、靠譜的判斷 tomcat 是否正常啟動(dòng)的方法呢?
需要收集 app containers 的日志并統(tǒng)一管理,日志是打印到標(biāo)準(zhǔn)輸出上的,而且我也沒(méi)有宿主機(jī)的權(quán)限,所以沒(méi)辦法直擊在宿主機(jī)節(jié)點(diǎn)上去收集日志,sidecar container 有沒(méi)有辦法去獲取 app container 的標(biāo)準(zhǔn)輸出呢?謝謝!
問(wèn)題 ConfigMap 主要的用法有兩種,一種是掛載變成環(huán)境變量,第二種是掛載變成目錄或者文件 但是實(shí)際還有一種情況,無(wú)法覆蓋到,那就是數(shù)據(jù)庫(kù)連接配置,有 N 個(gè)項(xiàng)目對(duì)應(yīng) N 個(gè) pod 。 假如我創(chuàng)建一個(gè) Secret,其中包含線上的數(shù)據(jù)庫(kù)連接地址、和賬號(hào)密碼配置。(鍵值對(duì)映射方式) 那么我怎么把對(duì)應(yīng)的配置文件中的數(shù)據(jù)配置替換成 Secret 中的 PS:可以通過(guò)掛載文件的方式覆蓋項(xiàng)目配置文件,但是數(shù)據(jù)庫(kù)連接配置不能這樣子,假如我有 N 個(gè)項(xiàng)目,我要修改數(shù)據(jù)庫(kù)密碼,不可能每個(gè)項(xiàng)目對(duì)應(yīng)的 configmap 都去修改一遍這個(gè)效率太低了 方案 我想到的方式是假如 dockerfile 中的 CMD 命令是啟動(dòng) catalina.sh ,那么新建一個(gè) sh 腳本文件,里面包含讀取 Secret 環(huán)境變量(或者讀取掛載文件)中的數(shù)據(jù)庫(kù)配置信息然后替換掉對(duì)應(yīng)的項(xiàng)目中的配置,再啟動(dòng) catalina.sh 。 PS:pod yaml 文件 containers 中的 command 改成新建的 sh 腳本文件( command 可以覆蓋 dockerfile CMD ) 思考 不曉得還有沒(méi)有其他的方式?
啟動(dòng)容器時(shí) configMap 文件 config-env.sh ,掛載到 /u/app/env AA=123 BB=456 ...大幾十條... 我在 Dockerfile 中寫(xiě)了 ENTRYPOINT ["sh", "-c", "${WAIT_FOR} java -jar a.jar"] ENTRYPOINT 改成了 CMD 也不行 我 K8s 傳遞的時(shí)候使用: env: # NOT OK - name: WAIT_FOR value: "source /u/app/env/config-env.sh && " 容器應(yīng)該是啟動(dòng)不成功,不停重啟 CrashLoopBackOff 由于平臺(tái)限制,盡量使用 configMap 掛載文件的方式。 如果一條一條設(shè)置 env,也不好。 因?yàn)檫@個(gè)需要甲方人手動(dòng)一個(gè)一個(gè)添加進(jìn)去。 (他們不用原始的 kubectl 的 yaml 文件,而是是通過(guò)某家的 k8s 平臺(tái)管理 web 操作)
kubeadm 創(chuàng)建 k8s 集群證書(shū)過(guò)期 k8s 版本 v1.14.3 os ubuntu 16.04 更新證書(shū) kubeadm alpha certs renew all 更新 kubeadm (因?yàn)?apt 源的因素,本文更新到 v1.17.3 最低可用版本未驗(yàn)證) apt update apt install kubeadm 更新配置文件中的證書(shū) kubeadm alpha certs renew admin.conf kubeadm alpha certs renew controller-manager.conf kubeadm alpha certs renew scheduler.conf 查看證書(shū)有效期, 確保全部更新 kubeadm alpha certs check-expiration 生成臨時(shí) token (需要 api-server 正常運(yùn)行) 注意: 在完成之前步驟中,經(jīng)過(guò)不少嘗試配置,因此可能會(huì)存在遺漏的配置 kubeadm token create $(kubeadm token generate) 更新所有節(jié)點(diǎn) bootstrap-kubelet.conf , 刪除失效的 kubelet.conf , 并重啟節(jié)點(diǎn)上的 kubelet 將前一步生成的 token 替換 bootstrap-kubelet.conf 中的 token 多節(jié)點(diǎn)建議用自動(dòng)化工具(編者使用 ansible) - name: update kubelet bootstrap token replace: path: /var/lib/kubelet/kubeadm-flags.env regexp: 'old.token' replace: 'new.token' - name: remove the old kubelet.conf file: path: /etc/kubernetes/kubelet.conf state: absent - name: reload service kubelet, in all cases systemd: name: kubelet state: restarted 更新 kubectl 配置 cp /etc/kubernetes/admin.conf ~/.kube/config 驗(yàn)證集群是否恢復(fù)正常
先說(shuō)一下一下 K8S 用的是 1.13 版本的,網(wǎng)絡(luò)插件用的 Calico 3.1.3,連接模式是 IPIP 模式( IP 隧道模式),禁用 VxLAN 。集群的拓?fù)淙鐖D所示,其實(shí)原來(lái)沒(méi)有物理機(jī) A 這個(gè)機(jī)器,最近加上的,但是有很多和物理機(jī) B 、C 的 CIDR 相同的機(jī)器,如 10.237.79.4x 、10.237.79.5x 等,無(wú)論是任意物理機(jī)上 POD (也就是圖中的虛擬機(jī))相互 PING,還是 POD 和物理機(jī)之間相互 PING 都是沒(méi)有問(wèn)題的,舉個(gè)例子:虛擬機(jī) B1 -> 虛擬機(jī) C1,虛擬機(jī) C1 -> 虛擬機(jī) B1 相互 PING 都是通的。但對(duì)于物理機(jī) A,這臺(tái)物理網(wǎng)卡只能 PING 通其他物理機(jī)的物理網(wǎng)卡,但沒(méi)法 PING 通其他機(jī)器上的 POD,反過(guò)來(lái)從 POD 中訪問(wèn)物理機(jī) A 的物理網(wǎng)卡是沒(méi)有問(wèn)題的。舉個(gè)例子:物理網(wǎng)卡 A -> 虛擬機(jī) B1 不通,但虛擬機(jī) B1 -> 物理網(wǎng)卡 A 通。還有一點(diǎn),從物理網(wǎng)卡 A 上 PING 虛擬機(jī) B1 時(shí)抓包發(fā)現(xiàn):物理網(wǎng)卡 B 沒(méi)有收到來(lái)自物理網(wǎng)卡 A 或虛擬網(wǎng)卡 A 的包。現(xiàn)在我懷疑未知網(wǎng)絡(luò)拓?fù)淠菈K可能過(guò)了某個(gè)路由器,它不支持或者沒(méi)有配置 IP 隧道。大家怎么看呢?
在瀏覽器前端 JS,不使用 API 情況下,有沒(méi)有辦法獲取域名解析的 IP 。 或者有沒(méi)有什么瀏覽器插件可以?而且能在頁(yè)面里調(diào)用的。
以下是一個(gè)商品,我想當(dāng)客人選好了日期之后,數(shù)量會(huì)由 0 自動(dòng)調(diào)成 1 ,不知可否用 js 達(dá)成 這是最開(kāi)始的狀態(tài) 求解救 html link 1: here html link 2 - codepen . io: here
如題,需求是前端想要修改后端渲染好的圖表。 API 是同源的,代碼完全自主,但是后端改代碼比較麻煩,所以想試試能不能直接用前端加點(diǎn)小補(bǔ)丁的方式,所以需要接管 iframe 當(dāng)中的 dom 內(nèi)容。 開(kāi)發(fā)框架是 Vue,在 Vue 的 mounted 中嘗試了一下 document.getElementById() 發(fā)現(xiàn)并不能獲取到 iframe 內(nèi)部的 ID 名,如果是在網(wǎng)頁(yè) F12 控制臺(tái)執(zhí)行這段代碼是能獲取到的,但是在 Vue 中獲取不到,不知道什么原因。 所以有辦法獲取 dom 嗎?謝謝大家
想寫(xiě)個(gè)點(diǎn)擊那個(gè) tab 時(shí)那個(gè) tab 的下邊框變橙色,但是 js 里不能寫(xiě) - 符號(hào),想問(wèn)問(wèn)這種情況該怎么解決 tab[i].onclick = function(){ tab[x].style.border-bottom = '0'; tab[this.index].style.border = 'lightsalmon solid 4px'; songContent[x].style.display = 'none' songContent[this.index].style.display = 'block' x=this.index }
如題,想給代碼做個(gè)高亮,現(xiàn)在有這么個(gè)需求 比如現(xiàn)在有 html 字符串如下: 2020-01-01 20:20:20 [INFO] log test 1 2020-02-02 10:10:10 [INFO] log test 2 我想講這個(gè)字符串修改為這樣 2020-01-01 20:20:20 [INFO] log test 1 2020-02-02 10:10:10 [INFO] log test 2 即用正則表達(dá)式匹配到時(shí)間,然后再將匹配到的字符串兩邊加上 , 正則的部分很簡(jiǎn)單可以匹配到,但是替換怎么搞呢? 有沒(méi)有 js 大佬講解一下這個(gè)需求能不能通過(guò) string.replace(/regexp/g , 'target') 這種命令來(lái)完成,還是說(shuō)要寫(xiě)一大段搜索-替換的邏輯才行
我的項(xiàng)目要部署在域名的二級(jí)路徑上,比如 http://test.com/demo 上
首先 nuxt.js 做了如下配置 { router: { base: '/demo/' } }
這樣,所有的 js,css 資源會(huì)自動(dòng)加上 /demo/前綴
但是,static 文件夾下的靜態(tài)資源訪問(wèn)的路徑不對(duì)。比如我有這樣一張圖片: /static/images/a.png ,之前我只需要
就能訪問(wèn)到,現(xiàn)在我需要手動(dòng)在所有的地方機(jī)上前綴,就像這樣
。
我想問(wèn):這樣手動(dòng)加前綴的工作,nuxt 是否有提供一個(gè)配置的地方(就像上面的 router.base ),可以統(tǒng)一給所有的靜態(tài)資源加上前綴?如果 nuxt 沒(méi)有提供配置,是否有其它較好的解決方案?
如題,vue-cli4 構(gòu)建的項(xiàng)目,現(xiàn)有一需求是某組件需要畫(huà)圖表 想要實(shí)現(xiàn)的效果是,在這個(gè)只有加載這個(gè)組件時(shí)才會(huì)引入 echarts,而不是綁定到 vue 全局,不會(huì)導(dǎo)致打包出來(lái)程序過(guò)大。應(yīng)該怎么實(shí)現(xiàn)呢? 一個(gè)簡(jiǎn)單想法是,直接在.vue 文件的部分里輸入 echarts.min.js 的地址,是否可行? 比如這樣
先直接拋出問(wèn)題: 以下代碼報(bào)錯(cuò),求解該怎么 具體分析 這個(gè)錯(cuò)誤發(fā)生的原因? (目測(cè)是受 ES6 塊作用域 TDZ 的影響在 編譯階段 拋出的問(wèn)題) { var foo = 1; // 該句報(bào)錯(cuò),“foo 重復(fù)聲明” function foo(){}; console.log(typeof(foo)); } 以下理解是否正確?(希望各位 dalao 不吝賜教 個(gè)人理解的變量提升(只考慮 var 的情況)步驟為: 區(qū)分 函數(shù)聲明 / 變量聲明 。 函數(shù)聲明 的標(biāo)識(shí)符先提升至 函數(shù)作用域 頂部, 函數(shù)定義 提升至 塊作用域 頂部。 變量聲明 的標(biāo)識(shí)符提升至 函數(shù)作用域 的頂部。 賦值語(yǔ)句留在原地等待執(zhí)行階段。 小白的心路歷程 (自學(xué) js 中)最近在看《 you-dont-know-js 》—— js 的變量提升部分( 一版,中文 ) 在 作用域-函數(shù)優(yōu)先 部分有如下代碼: foo(); // "b" var a = true; if (a) { function foo() { console.log( "a" ); } } else { function foo() { console.log( "b" ); } } 實(shí)際運(yùn)行時(shí)發(fā)現(xiàn) foo(); 一行報(bào) TypeError: foo is not a function 錯(cuò)誤。 思考之后覺(jué)得應(yīng)該是 es6 塊作用域的問(wèn)題,導(dǎo)致 foo 的變量提升不如預(yù)期。遂更換 node 版本至 4.9 果然成功輸出了 "b" 我的理解如下: var foo; var a; foo(); // 此次相當(dāng)于 foo 已聲明,但未定義,暫為 undefined 。故報(bào)錯(cuò) a = true; if(a){ foo = function(){console.log("a")}; }else{ foo = function(){console.log("b")} } 在理解上面這個(gè)出錯(cuò)問(wèn)題的時(shí)候發(fā)現(xiàn)在塊作用域下 var foo 變量聲明和 foo 函數(shù)聲明放在一起會(huì)報(bào) 重復(fù)聲明 錯(cuò)。如下: { var foo = 1; // 該句報(bào)錯(cuò),“foo 重復(fù)聲明” function foo(){}; console.log(typeof(foo)); } 已知 var 可重復(fù)聲明,該情況(指同標(biāo)識(shí)符的變量聲明與函數(shù)聲明)在全局、函數(shù)作用域下無(wú) 重復(fù)聲明 問(wèn)題。 (后測(cè)試同樣的代碼 node4.9 版本無(wú)此問(wèn)題,個(gè)人考慮定位至塊作用域特性相關(guān)問(wèn)題,調(diào)試發(fā)現(xiàn)在還沒(méi)執(zhí)行下去的時(shí)候就已報(bào)錯(cuò)了,應(yīng)該是 編譯階段 就拋出的問(wèn)題。 個(gè)人基礎(chǔ)較差,再往下就沒(méi)啥頭緒了,搜索"塊作用域 var 函數(shù)聲明 重復(fù)聲明"相關(guān)字符也沒(méi)找到結(jié)果。 希望各位 dalao 不吝賜教,指點(diǎn)以下該怎么分析這個(gè)問(wèn)題(特性? 實(shí)際代碼運(yùn)行的時(shí)候是怎么樣的情況?
本人剛開(kāi)始用 react-redux ,目前在異步 dispatch 的時(shí)候,暫時(shí)用的 redux-thunk 求助: dispatch(asyncFunc).then(...) 和 asyncFunc().then(dispatch) 有什么區(qū)別? (如果用錯(cuò)了請(qǐng)指出,確實(shí)是剛開(kāi)始用)