鍍金池/ 問(wèn)答
凹凸曼 回答

當(dāng)前的服務(wù)器是堡壘機(jī)嗎?重新配置一下ssh免輸入登陸呢

注意:python3以后才支持yield from語(yǔ)法

import collections


def flatten(d, prefix="", sep="_"):
    def _take_prefix(k, v, p):
        if p:
            yield from flatten(v, "{}{}{}".format(p, sep, k))
        else:
            yield from flatten(v, str(k))

    if isinstance(d, dict):
        for k, v in d.items():
            if isinstance(v, str) or not isinstance(v, collections.Iterable):
                if prefix:
                    yield "{}{}{}".format(prefix, sep, k), v
                else:
                    yield k, v
            elif isinstance(v, dict):
                yield from _take_prefix(k, v, prefix)
            elif isinstance(v, list):
                for i in v:
                    yield from _take_prefix(k, i, prefix)
            else:
                pass
    else:
        pass

dic = {your dataset}
for key, value in flatten(dic):
    print("{}: {}".format(key, value))

結(jié)果如下,應(yīng)該能拍平了

status: changed
dataset_id: 5a4b463c855d783af4f5f695
dataset_name: AE_E
dataset_label: 1- ADVERSE EVENTS - Not Analyzed
details_variables_variable_id: 5a4b4647855d783b494f9d3f
details_variables_variable_name: CPEVENT
details_variables_variable_label: CPEVENT
details_variables_status: changed
details_variables_details_r_type_new_value: unary
details_variables_details_r_type_old_value: factor
details_variables_message: Variable with different R Type
details_variables_variable_id: 5a4b4647855d783b494f9d25
details_variables_variable_name: CPEVENT2
details_variables_variable_label: CPEVENT2
details_variables_status: changed
details_variables_details_r_type_new_value: unary
details_variables_details_r_type_old_value: binary
details_variables_message: Variable with different R Type
details_variables_variable_id: 5a4b4647855d783b494f9d26
details_variables_variable_name: CP_UNSCHEDULED
details_variables_variable_label: CP_UNSCHEDULED
details_variables_status: changed
details_variables_details_r_type_new_value: undefined
details_variables_details_r_type_old_value: unary
details_variables_message: Variable with different R Type
details_variables_variable_id: 5a4b4647855d783b494f9d02
details_variables_variable_name: VISIT_NUMBER
details_variables_variable_label: VISIT_NUMBER
details_variables_status: changed
details_variables_details_r_type_new_value: unary
details_variables_details_r_type_old_value: integer
details_variables_message: Variable with different R Type
details_variables_variable_id: 5a4b4647855d783b494f9ccf
details_variables_variable_name: VISIT_NUMBER2
details_variables_variable_label: VISIT_NUMBER2
details_variables_status: changed
details_variables_details_r_type_new_value: unary
details_variables_details_r_type_old_value: binary
details_variables_message: Variable with different R Type
details_many_visits: None

針對(duì)你修改后的問(wèn)題, 再加個(gè)函數(shù)就搞定:

# 這個(gè)fuck_all函數(shù)比較特例, 完全是針對(duì)你要區(qū)分的dataset下面的N個(gè)變量信息這種需求
def fuck_all(dic, prefix="details_variables"):
    lst = list(flatten(dic))  # flatten函數(shù)則比較通用,任何嵌套數(shù)據(jù)集都可以用它拍平
    lines = []
    top = {k: v for k, v in lst if not k.startswith(prefix)}
    index = 0
    for key, value in lst:
        if not key.startswith(prefix):
            continue
        else:
            if not lines:
                lines.append(top.copy())
        if key in lines[index].keys():
            index += 1
            lines.append(top.copy())
        lines[index][key] = value
    return lines

d = {your dataset}
for i in fuck_all(d):
    print(i)    

結(jié)果長(zhǎng)這樣,應(yīng)該是能滿足你需求了

{'status': 'changed', 'dataset_id': '5a4b463c855d783af4f5f695', 'dataset_name': 'AE_E', 'dataset_label': '1- ADVERSE EVENTS - Not Analyzed', 'details_many_visits': None, 'details_variables_variable_id': '5a4b4647855d783b494f9d3f', 'details_variables_variable_name': 'CPEVENT', 'details_variables_variable_label': 'CPEVENT', 'details_variables_status': 'changed', 'details_variables_details_r_type_new_value': 'unary', 'details_variables_details_r_type_old_value': 'factor', 'details_variables_message': 'Variable with different R Type'}
{'status': 'changed', 'dataset_id': '5a4b463c855d783af4f5f695', 'dataset_name': 'AE_E', 'dataset_label': '1- ADVERSE EVENTS - Not Analyzed', 'details_many_visits': None, 'details_variables_variable_id': '5a4b4647855d783b494f9d25', 'details_variables_variable_name': 'CPEVENT2', 'details_variables_variable_label': 'CPEVENT2', 'details_variables_status': 'changed', 'details_variables_details_r_type_new_value': 'unary', 'details_variables_details_r_type_old_value': 'binary', 'details_variables_message': 'Variable with different R Type'}
{'status': 'changed', 'dataset_id': '5a4b463c855d783af4f5f695', 'dataset_name': 'AE_E', 'dataset_label': '1- ADVERSE EVENTS - Not Analyzed', 'details_many_visits': None, 'details_variables_variable_id': '5a4b4647855d783b494f9d26', 'details_variables_variable_name': 'CP_UNSCHEDULED', 'details_variables_variable_label': 'CP_UNSCHEDULED', 'details_variables_status': 'changed', 'details_variables_details_r_type_new_value': 'undefined', 'details_variables_details_r_type_old_value': 'unary', 'details_variables_message': 'Variable with different R Type'}
{'status': 'changed', 'dataset_id': '5a4b463c855d783af4f5f695', 'dataset_name': 'AE_E', 'dataset_label': '1- ADVERSE EVENTS - Not Analyzed', 'details_many_visits': None, 'details_variables_variable_id': '5a4b4647855d783b494f9d02', 'details_variables_variable_name': 'VISIT_NUMBER', 'details_variables_variable_label': 'VISIT_NUMBER', 'details_variables_status': 'changed', 'details_variables_details_r_type_new_value': 'unary', 'details_variables_details_r_type_old_value': 'integer', 'details_variables_message': 'Variable with different R Type'}
{'status': 'changed', 'dataset_id': '5a4b463c855d783af4f5f695', 'dataset_name': 'AE_E', 'dataset_label': '1- ADVERSE EVENTS - Not Analyzed', 'details_many_visits': None, 'details_variables_variable_id': '5a4b4647855d783b494f9ccf', 'details_variables_variable_name': 'VISIT_NUMBER2', 'details_variables_variable_label': 'VISIT_NUMBER2', 'details_variables_status': 'changed', 'details_variables_details_r_type_new_value': 'unary', 'details_variables_details_r_type_old_value': 'binary', 'details_variables_message': 'Variable with different R Type'}

送佛送到西好了

from functools import reduce
import json

import pandas as pd


with open("your dataset file", "r") as fh:
    dic = json.load(fh)

df = pd.DataFrame(reduce(lambda x, y: x + y, (fuck_all(i) for i in dic)))
df.to_csv("out.csv", index=False)

成品

clipboard.png

@admin.route('/ImageUpdate', methods=['POST'])
def getimage():
    file = request.files['wangEditorH5File']
氕氘氚 回答

請(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

九年囚 回答

dns里面設(shè)置url轉(zhuǎn)發(fā),或者做全站301都可以啊

心夠野 回答

WeixinJSBridge.call('closeWindow');
微信JSSDKwx.closeWindow();

去mysql設(shè)置對(duì)應(yīng)字段的默認(rèn)值

念初 回答

是的,這種寫(xiě)法的確是創(chuàng)建了很多的線程池。
但是當(dāng)我們使用Executors.newXXXThreadPool()的時(shí)候是我們需要有這么一個(gè)線程池。
如果你想在全局中使用同一個(gè)線程池中的話,可以試著去配置一個(gè)spring的bean作為線程池

clipboard.png
然后通過(guò)@Autowired 注入
` @Autowired
@Qualifier("poolTaskExecutor")
Executor executor;
`
使用線程中管理的線程

苦妄 回答

PureComponent的本質(zhì)是幫你寫(xiě)了一個(gè)shouldComponentUpdate,做一層淺比較,實(shí)現(xiàn)渲染時(shí)優(yōu)化。
如果是簡(jiǎn)單類(lèi)型的比較,就不用自己寫(xiě)shouldComponentUpdate了。
需要注意的是:PureComponent和shouldComponentUpdate不能共存

眼雜 回答

可以監(jiān)聽(tīng)el-carousel的change事件,示例如下:

<el-carousel height="320px" @change="onChange">
    ...
</el-carousel>
...
methods: {
    onChange(currentIndex, oldIndex) {
        console.log(`當(dāng)前索引:${currentIndex},原索引:${oldIndex}`);
    }
}
心上人 回答

&表示參數(shù)+1;你可以理解為 ,url : this.apiUrlSaveFavourite ,data:{questionid:questionId,userid:userId}

小曖昧 回答

window.getSelection().toString()
這個(gè)能取到選中的文本

大佬們,看得明白我的描述嗎?請(qǐng)問(wèn)為什么會(huì)這樣子呢?很急,一直沒(méi)解決,幫幫忙,會(huì)的幫忙解答一下了,謝謝!!

乞許 回答

我寫(xiě)了一個(gè)demo,在你那上面精簡(jiǎn)了不少,思路就是這樣,你運(yùn)行看看效果:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>example</title>
</head>
<body>
    <div id="app">
        <div class="total">
            <span>總共  {{totalCount}}  道</span>
            <span>合計(jì): ¥  {{totalPrice}}</span>
            <p>選擇的折扣:<span>{{selectDiscount}}</span></p>
            折后金額:<span>{{afterDiscount}}</span>
            <p>選擇折扣:</p><span v-for="item in discount" :key="item.id" @click="addDiscount(item)" style="cursor:pointer;"> {{item.name}}</span>
        </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <script type="text/javascript">
        new Vue({
            el: "#app",
            data: {
                totalCount: 5,
                totalPrice: 155.24,
                selectDiscount: null,
                discount: [{
                    id: 1,
                    name: 0.9
                }, {
                    id: 2,
                    name: 0.8
                }, {
                    id: 3,
                    name: 0.7
                }, {
                    id: 4,
                    name: 0.6
                }, {
                    id: 5,
                    name: 0.5
                }, {
                    id: 6,
                    name: 0.4
                }]
            },
            computed: {
                afterDiscount() {
                    return (this.totalPrice * this.selectDiscount).toFixed(2);
                }
            },
            methods: {
                addDiscount(item) {
                    return this.selectDiscount = item.name;
                }
            }
        })
    </script>
</body>
</html>
櫻花霓 回答

樓主是需要自己搭建服務(wù)器嗎,自己部署私有云?工作量怎么來(lái)說(shuō)呢?沒(méi)有辦法給一個(gè)具體的定位,還是要看你的具體的需求。網(wǎng)上相關(guān)的開(kāi)源代碼也是挺多的,比如webrtc開(kāi)源了所有的代碼,比如tucodec免費(fèi)提供了SDK。你在這些SDK的基礎(chǔ)上,完成自己服務(wù)器搭建和UI設(shè)計(jì)就可以了~

哚蕾咪 回答

lazyload是一個(gè)插件功能,不能一個(gè)事件~,所以不存在委托什么的

你可以在批量添加完一批圖片時(shí),統(tǒng)一的添加上一個(gè)自定義的標(biāo)識(shí)類(lèi)
例如.watched,避免已經(jīng)被lazyload標(biāo)識(shí)過(guò)的被再次lazyload.
可能這個(gè)特性在lazyload中已經(jīng)存在,我相應(yīng)會(huì)有的
然后通過(guò)

$(".img.lazy:not(.watched)").lazyload({
    effect : "fadeIn"
});

lazyLoad基本上使用如下方法實(shí)現(xiàn)

function lazyLoad(imgDOM,resultCallback){
    var imgSrc,tempImg;
    if($(imgDOM).hasClass("watched")||$(imgDOM).attr("data-loaded")==="done"){
       return;
    }
    imgSrc=$(imgDOM).attr("data-origin-src");
    tempImg=new Image();
    tempImg.onload=function(){
        $(imgDOM).attr("src",imgSrc);
        $(imgDOM).attr("data-loaded","done");
        doneFlag=true;
        resultCallback&&resultCallback.apply(imgDOM,[]);
        tempImg=null;
    }
    tempImg.src=imgSrc;
}
貓小柒 回答

你這路由 很厲害啊。。。 path / 就 三個(gè)。。。。
去掉這行試試clipboard.png 重定向了把 然后你path 3個(gè)

亮瞎她 回答
<input type="file" @click="open">

methods:{
    open:function(){
        console.log('open')
    }
}