建議 確定下小程序的ws服務(wù)器配置。
你直接在命令行里面cd到那個文件夾然后用ll或者是ls -al查看全部文件,就能看到被隱藏的.git文件夾
個人的一點點理解:
如果你的網(wǎng)站都是自己內(nèi)部的地址,那帶token應(yīng)該是沒什么問題的。但是如果在一些論壇之類的地方,一個網(wǎng)站上可能有各種鏈接,那就有問題了。
一個論壇網(wǎng)站W(wǎng):http://a.com,如果訪問論壇里面某個鏈接的地址是article.html?id=&token=, 這時候有個危險鏈接article.html?id=222&token=111,該頁面是用戶編輯的,里面掛了個誘惑性的地址http://d.com/danger.html, 在danger.html里面有個獲取Referer的方法,得到了一個token,還有一個圖<img src="http://a.com/modifyPwd?token=*">
非正則,且路徑對應(yīng)指令path值的最后一部分,如:
location /phpmyadmin/ {
alias /web/phpmyadmin/;
}
這個是建議使用root的(官方最佳實踐)
正則路徑,表達式里需要帶上匹配組,且應(yīng)該被alias引用,如:
location ~ ^/phpmyadmin/(.+?\.php)(/.*)?$ {
alias /web/$1;
}
在做你所述以上事情之前需要明確一點,那就是CPU架構(gòu)問題。
PC系統(tǒng)和嵌入式系統(tǒng)的CPU架構(gòu)不同,你可能需要了解:i386、x86_64、arm32、arm64、armv7、armv8(aarch32、aarch64)等cpu架構(gòu)的區(qū)別
很明顯,樹莓派屬于嵌入式系統(tǒng),使用的是arm架構(gòu),樹莓派3以上(包含3b和3b+)可支持64位cpu,也就是采用的是armv8架構(gòu),armv8支持兩種屬性,即:aarch32、aarch64,通俗的說就是最新發(fā)行的樹莓派已經(jīng)可以支持64位,而以往的版本僅支持32位
如果你的Docker是裝在PC上的或者是PC上的虛擬機里的(比如vm虛擬機之類的)那么Docker所使用的硬件是與宿主機共享硬件核心,所以,宿主機的硬件核心決定了docker的核心,換句話說就是docker并非虛擬機,并不能虛擬出一套與宿主機不同cpu架構(gòu)的硬件,即便是vm虛擬機,也是不能運行arm版本的操作系統(tǒng)的
在樹莓派中可以安裝centos系統(tǒng),并且centos官方有img鏡像,但僅是32位的。
在樹莓派中運行的centos系統(tǒng)一樣可以安裝Docker,值得注意的是Docker官方的文檔中指出:不建議嵌套Docker,也就是在Docker中創(chuàng)建一個centos鏡像容器,然后在此容器中又安裝一個Docker,雖然支持但不建議這樣做。
想要實現(xiàn)如你所述的測試環(huán)境,可以參考以下做法:
1、使用和樹莓派同樣cpu架構(gòu)的真機,也就是arm架構(gòu)的真實測試機器
2、使用qemu虛擬機,qemu是一個軟件模擬環(huán)境,可以模擬運行arm架構(gòu)的操作系統(tǒng),不過據(jù)說性能堪憂
3、使用交叉編譯環(huán)境,也就是讓pc上的Linux具有編譯不同cpu架構(gòu)程序的能力,程序經(jīng)過交叉編譯后即可移植到arm架構(gòu)的機器上去
以上所述如有偏頗或不同方案,希望不吝賜教。
偽靜態(tài)設(shè)置了嗎?
Nginx 偽靜態(tài)
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}CentOS 7使用systemd管理系統(tǒng)服務(wù),你需要花點時間去看看systemd的官方文檔
已經(jīng)解決了,跟umask有關(guān)。
原因:
linux默認umask為022,對應(yīng)權(quán)限為755,其它用戶可讀可執(zhí)行。可以vim /etc/profile,搜索umusk關(guān)鍵字查看
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
而tomcat8默認umask為027,對應(yīng)權(quán)限為750,也就是說其它用戶連可讀的權(quán)限都沒有。
可打開catalina.sh文件,搜索umask查看。
# Set UMASK unless it has been overridden
if [ -z "$UMASK" ]; then
UMASK="0027"
fi
umask $UMASK
解決方法:
修改catalina.sh中的umask為0022,與操作系統(tǒng)保持一致,然后重啟tomcat即可。
參考博客:
linux umask使用詳解。
有關(guān)Tomcat 8.0版本文件上傳后無權(quán)限訪問的問題
自己解決了,之前實在anaconda3下新建虛擬環(huán)境python2.7,所以會報錯
下載anconda2在安裝graphlab環(huán)境就好了,希望對需要的人有幫助。
這是 libevent 與 openssl 版本不兼容導(dǎo)致。
一般來說,它們的版本關(guān)系是這樣的
| libevent | openssl |
|---|---|
| 2.1.x | 1.1 |
| 2.0.x | 1.0 |
因此你有兩個選擇
下面針對第二種選擇做詳細說明,這種方法是通用的,適用于編譯其他軟件時出現(xiàn)版本不兼容問題。
首先安裝 openssl 1.0 版本,注意需要頭文件。你可以選擇從源碼安裝,或使用操作系統(tǒng)的倉庫下載安裝。
這類安裝包通常帶有 "*-dev" 字樣,比如 centos 發(fā)行版可能是這樣的
yum install openssl-devel-1.0xxx
openssl 安裝完成后,會有一個 pkgconfig/ 目錄,實際路徑取決于你上一步的操作,一般位于 /usr/lib 或 /usr/local/lib 下。
這里我們假設(shè)是 /usr/local/lib/openssl-1.0/pkgconfig/, 你需要將它設(shè)置成 PKG_CONFIG_PATH 的環(huán)境變量值,如
export PKG_CONFIG_PATH=/usr/local/lib/openssl-1.0/pkgconfig/
切換到 libevent 源碼目錄,把 openssl 頭文件路徑,及庫文件路徑加入 configure 配置變量,如
./configure CFLAGS="$(pkg-config --cflags openssl)" LDFLAGS="$(pkg-config --libs openssl)"
清除原內(nèi)容,并重新編譯即可
make clean
make -j8
報錯在最后一行: libgfortran.so.3: cannot open shared object file: No such file or directory
安裝這個lib理論上應(yīng)該就能解決 sudo apt install -y libgfortran3
你說不是就不是嘍
The -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables. After you exit from the editor, the modified crontab will be installed automatically. If neither of the environment variables is defined, then the default editor /usr/bin/editor is used.
在我的機器上的結(jié)果是
$ ls -al /usr/bin/editor
lrwxrwxrwx 1 root root 24 11月 25 2014 /usr/bin/editor -> /etc/alternatives/editor
$ ls -al /etc/alternatives/editor
lrwxrwxrwx 1 root root 16 1月 21 2016 /etc/alternatives/editor -> /usr/bin/emacs24
所以我機器上用的是emacs, 看看你的機器上是什么就知道了.
用`$ sudo update-alternatives --list editor` 查看本機器究竟有哪些editors,
/bin/ed
/bin/nano
/usr/bin/emacs24
/usr/bin/mcedit
/usr/bin/vim.basic
/usr/bin/vim.tiny
然后用sudo update-alternatives --set editor設(shè)置成你喜歡的.
內(nèi)存這個應(yīng)該不用觀察吧.
每個進程的內(nèi)存空間都是獨立的, 進程掛了, 操作系統(tǒng)給她分配的內(nèi)存都會回收掉.
至于其他需要釋放的資源怎么處理, 這里要看你說的資源都是啥.
內(nèi)存/文件/鎖/數(shù)據(jù)庫鏈接/共享消息等.
如果是進程內(nèi)資源, 那操作系統(tǒng)負責回收, 如果是跨進程的資源,比如和另外個進程共用一把鎖, 這個時候進程A掛了,進程B就拿不到鎖了, 如果進程B也沒有鎖的超時機制,那就有問題了.
更進一步, 如果你把"資源"限定在為一個一組對稱的操作的話, 也不會釋放. 比如進程啟動初始化了一堆文件, destroy的時候應(yīng)該全部刪除. 這個活兒操作系統(tǒng)不會幫你干,進程掛了的時候也沒有釋放.
proxy_intercept_errors on;
error_page 504 = @500;
location @500 {
default_type application/json;
return 500 '{"code": -1,"message":"failed to connect remote error"}';
}progress-stream獲取上傳進度如果只是想在服務(wù)端獲取上傳進度,可以試下如下代碼。注意,這個模塊跟express、multer并不是強綁定關(guān)系,可以獨立使用。
var fs = require('fs');
var express = require('express');
var multer = require('multer');
var progressStream = require('progress-stream');
var app = express();
var upload = multer({ dest: 'upload/' });
app.post('/upload', function (req, res, next) {
// 創(chuàng)建progress stream的實例
var progress = progressStream({length: '0'}); // 注意這里 length 設(shè)置為 '0'
req.pipe(progress);
progress.headers = req.headers;
// 獲取上傳文件的真實長度(針對 multipart)
progress.on('length', function nowIKnowMyLength (actualLength) {
console.log('actualLength: %s', actualLength);
progress.setLength(actualLength);
});
// 獲取上傳進度
progress.on('progress', function (obj) {
console.log('progress: %s', obj.percentage);
});
// 實際上傳文件
upload.single('logo')(progress, res, next);
});
app.post('/upload', function (req, res, next) {
res.send({ret_code: '0'});
});
app.get('/form', function(req, res, next){
var form = fs.readFileSync('./form.html', {encoding: 'utf8'});
res.send(form);
});
app.listen(3000);
multipart類型,需要監(jiān)聽length來獲取文件真實大小。(官方文檔里是通過conviction事件,其實是有問題的)
// 獲取上傳文件的真實長度(針對 multipart)
progress.on('length', function nowIKnowMyLength (actualLength) {
console.log('actualLength: %s', actualLength);
progress.setLength(actualLength);
});
progress-stream獲取真實文件大小的bug?針對multipart文件上傳,progress-stream 實例子初始化時,參數(shù)length需要傳遞非數(shù)值類型,不然你獲取到的進度要一直是0,最后就直接跳到100。
至于為什么會這樣,應(yīng)該是 progress-steram 模塊的bug,看下模塊的源碼。當length是number類型時,代碼直接跳過,因此你length一直被認為是0。
tr.on('pipe', function(stream) {
if (typeof length === 'number') return;
// Support http module
if (stream.readable && !stream.writable && stream.headers) {
return onlength(parseInt(stream.headers['content-length'] || 0));
}
// Support streams with a length property
if (typeof stream.length === 'number') {
return onlength(stream.length);
}
// Support request module
stream.on('response', function(res) {
if (!res || !res.headers) return;
if (res.headers['content-encoding'] === 'gzip') return;
if (res.headers['content-length']) {
return onlength(parseInt(res.headers['content-length']));
}
});
});
https://github.com/expressjs/...
https://github.com/freeall/pr...
session_handler相關(guān)函數(shù)貼一下,默認是存文件的,你存數(shù)據(jù)庫證明這里有修改
Go C++等語言的可執(zhí)行文件執(zhí)行是都是加載到內(nèi)存的
docker可以理解為一個簡單的虛擬機。所有在docker容器里的操作都是獨立的。使用python鏡像一定要啟動容器
子文件逐個刪除,居然能成功。。微軟傻逼了。。
把異步變同步,用async+await
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。