鍍金池/ 問(wèn)答/ 網(wǎng)絡(luò)安全問(wèn)答
骨殘心 回答

app.run()
它是調(diào)用flask內(nèi)置的自己實(shí)現(xiàn)的一個(gè)單線程服務(wù)器,通常是用在開(kāi)發(fā)測(cè)試的情況下,因?yàn)檎鎸?shí)情況下必須考慮到并發(fā),nginx + gunicorn,是利用nginx高并發(fā)的優(yōu)勢(shì),nginx收到http請(qǐng)求之后,把他轉(zhuǎn)發(fā)給wsgi服務(wù)器gunicorn,gunicorn上運(yùn)行flask應(yīng)用,處理請(qǐng)求之后再返回給nginx

下面這段是flask run函數(shù)的源碼,你可以找來(lái)看看

from werkzeug.serving import run_simple

try:
    run_simple(host, port, self, **options)
finally:
    # reset the first request information if the development server
    # reset normally.  This makes it possible to restart the server
    # without reloader and that stuff from an interactive shell.
    self._got_first_request = False
風(fēng)畔 回答

你好,你可先隨意在一臺(tái)slave的機(jī)器中看下broker打印的日志,該slave是否注冊(cè)到了namesrv中呢?也可以將HA方式改成同步雙寫(xiě)模式,就可以在producer發(fā)送消息會(huì)返回具體的問(wèn)題。

咕嚕嚕 回答

如果你有過(guò)微信支付開(kāi)發(fā)經(jīng)歷,這應(yīng)該是一個(gè)很簡(jiǎn)單的需求。
微信統(tǒng)一下單->用戶支付->驗(yàn)證支付狀態(tài)->用支付信息交換注冊(cè)碼->展示。
細(xì)節(jié)就不展開(kāi)了,只要跑通微信支付基本沒(méi)有什么技術(shù)難度

Click Element     //a[text()='${text}']

這樣就可以了,之前以為這個(gè)xpath定位對(duì)偽元素不生效,后來(lái)發(fā)現(xiàn)是寫(xiě)錯(cuò)了標(biāo)簽,之前寫(xiě)的標(biāo)簽是li,其實(shí)應(yīng)該用a,文字在哪一層標(biāo)簽下面,就用哪一層的標(biāo)簽。

法克魷 回答

你是不是裝了什么插件,把相關(guān)的插件刪掉應(yīng)該就可以了

挽歌 回答

16位MD5是通過(guò)32位截取過(guò)來(lái)的。一般是截取中間16位

substr(md5('xxx'), 8, 24)
離人歸 回答

業(yè)務(wù)中有圖片處理的需求,這個(gè)庫(kù)github.com/disintegration/imaging
還有就是opencv來(lái)搞的

艷骨 回答

沒(méi)人回答就自問(wèn)自答吧。
_ 我感覺(jué)就是個(gè)包裝器,類似于

def f(s:String)(r:String) = println(s"$s passed, and then $r passed")

val a = f("hello") _

就相當(dāng)于

val a = (r:String) => f("hello")(r)

對(duì)于 val b = 4 使用 val c = b _ 也會(huì)使得c成為一個(gè)匿名函數(shù),函數(shù)簽名為 ()=>Int
但是具體的機(jī)制怎么樣還沒(méi)弄明白。。。
對(duì)于函數(shù) f3,是關(guān)于 pp 的使用,pp 編譯器怎么編譯 pp 取決于 pp 出現(xiàn)的位置。pp 首先是一個(gè)對(duì)象,function1 之類的對(duì)象。有些地方會(huì)把 pp 當(dāng)作函數(shù)調(diào)用,有些地方會(huì)把 pp 當(dāng)作 函數(shù)對(duì)象。

這兩天寫(xiě)代碼的一些感想,不嚴(yán)格。。。

兔寶寶 回答

你可以使用 ORM的對(duì)象操作數(shù)據(jù)庫(kù),你也可以寫(xiě)DQL操作數(shù)據(jù),你可以寫(xiě) SQL來(lái)操作數(shù)據(jù)庫(kù)。

ORM 無(wú)法涵蓋所有的SQL標(biāo)準(zhǔn),直接寫(xiě)SQL又可能會(huì)有風(fēng)險(xiǎn)。就出了DQL,語(yǔ)法還和sql很像

墨小白 回答

Laravel的session機(jī)制是:在程序的運(yùn)行的過(guò)程中是把你的對(duì)session的操作用一個(gè)類記錄在內(nèi)存中,然后在response發(fā)送給用戶以后執(zhí)行session中間中的terminate方法把session數(shù)據(jù)持久化到相應(yīng)的介質(zhì)中去。如果在windows和linux下面沒(méi)問(wèn)題,到了mac下就出了題很有可能是最后持久化的時(shí)候出了問(wèn)題。
你是否更改了存儲(chǔ)介質(zhì),比如從redis變到了文件。那么那個(gè)文件有沒(méi)有寫(xiě)的權(quán)限?要給storage目錄足夠的權(quán)限
如果是用內(nèi)存存儲(chǔ)的session那么redis或者memerycache是否配置正確?
還有就像樓上說(shuō)的那樣,不要用dd,因?yàn)閐d完之后會(huì)終止程序,session就不會(huì)持久化,只是將運(yùn)行內(nèi)存中的值給你打印出來(lái)了而已。
還有一個(gè)debug方法,在Session::put()之后加一句

Session::save();

這句代碼是手動(dòng)持久化session。如果成功說(shuō)明你的session持久化沒(méi)問(wèn)題,只是你程序運(yùn)行的時(shí)候沒(méi)有到持久化這一步。
如果失敗回報(bào)失敗的原因。
有一次我遇到了session寫(xiě)不進(jìn)去是因?yàn)橛脖P(pán)滿了...

氕氘氚 回答

請(qǐng)編輯 Grunt 的配置文件 Gruntfile.js,參考下面的代碼:

module.exports = function (grunt) {
  grunt.initConfig({
    jshint: {                            
      all: 'js/*.js',
      options: {
        jshintrc: true
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-jshint');

  grunt.registerTask('default', ['jshint']);
};

然后,運(yùn)行 grunt

局外人 回答

你就不能用FTP 嗎,
大不了用java 實(shí)現(xiàn)一個(gè)FTP

心夠野 回答

現(xiàn)在開(kāi)發(fā)程序都不需要學(xué)習(xí)調(diào)試的嗎?

你的label的值要用引號(hào)引起來(lái)才能是字符串。

你的瞳 回答

在查看對(duì)比這個(gè)PNG解壓源碼與題主的操作流程,發(fā)現(xiàn)問(wèn)題在于少了undo_filter這一步。

在源碼png.py中

...
            while len(a) >= rb + 1:
                filter_type = a[0]
                scanline = a[1:rb+1]
                del a[:rb+1]
                recon = self.undo_filter(filter_type, scanline, recon)
...

可以看出,每行的第一個(gè)字節(jié)是代表filter_type, 不是行號(hào)?。ㄒ?yàn)橐膊恍枰。?br>00eb6100ff22ac38ffea68a2ff0122ac38ffc8bc6a0001f95e00
這里的00是沒(méi)有用濾波器,01是指用了減法濾波器

減法濾波器的定義:

 def sub():
            """Undo sub filter."""

            ai = 0
            # Loops starts at index fu.  Observe that the initial part
            # of the result is already filled in correctly with
            # scanline.
            for i in range(fu, len(result)):
                x = scanline[i]
                a = result[ai]
                result[i] = (x + a) & 0xff
                ai += 1

c8bc6a00+22ac38ff=ea68a2ff (注意忽略字節(jié)進(jìn)位,即 &ff的作用)

安淺陌 回答

1.錯(cuò)誤的意思是你不應(yīng)該給一個(gè)不存在的屬性賦值,可以是vue做了處理
2.為什么要把data掛在root上,如果需要在多個(gè)組件之間傳遞數(shù)據(jù),可以用vuex

陌離殤 回答

改東西沒(méi)有十足的把握前最好備份一份,環(huán)境變量改過(guò)之后web服務(wù)器、電腦最好都要重啟一下,實(shí)在不行就卸載了重新安裝一下VirtualBox.

瞄小懶 回答

你好,升級(jí)到4.3以后,新多出個(gè)HttpClient模塊,如果要使用攔截器,需要,將老的http改為,HttpClient.
相關(guān)代碼:

import { HttpClient } from '@angular/common/http';
this.http.get<UserResponse>('https://api.github.com/users/seeschweiler').subscribe(
  data => {
    console.log("User Login: " + data.login);
    console.log("Bio: " + data.bio);
    console.log("Company: " + data.company);
  },
  err => {
    console.log("Error occured.")
  }
);