小编ran*_*101的帖子

在Python中实现高效的队列

我一直在尝试在Python中实现队列,并且遇到了问题。

我试图使用列表来实现Queue数据结构,但是我不太清楚如何进行enqueuedequeueO(1)操作。

我在网上看到的每个示例似乎都只是追加enqueue操作,并从dequeue操作列表中删除第一个元素。但这会使dequeue操作O(n)(其中n是列表的大小)正确吗?

我有基本的东西想念吗?还是必须使用LinkedLists有效地实现队列?

import unittest

class Queue():
    def __init__(self):
        self._queue = []
        self.size = 0
        self.maxSize = 10

    def enqueue(self, item):
        if self.size < self.maxSize:
            self._queue.append(item)

    def dequeue(self):
        '''
        Removes an item from the front of the list. Remove first element of
        the array
        '''
        first = self._queue[0]
        del self._queue[0]
        return first
Run Code Online (Sandbox Code Playgroud)

python queue

10
推荐指数
2
解决办法
1万
查看次数

尝试使用fetch访问响应数据

我正在尝试一些简单的方法,我可以使用fetch API从我的应用程序的前端发出请求

let request = new Request('http://localhost:3000/add', {
    headers: new Headers({
        'Content-Type': 'text/json' 
    }),
    method: 'GET'
});

fetch(request).then((response) => {
    console.log(response);
});
Run Code Online (Sandbox Code Playgroud)

我在服务器上处理这个请求是这样的,

app.get('/add', (req, res) => {
    const data = {
        "number1": "2", 
        "number2": "4"
    };
    res.send(data);
});
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在前端console.log(响应)上访问我的数据时,我得到以下对象

Response {type: "basic", url: "http://localhost:3000/add", redirected: false, status: 200, ok: true…}
body:(...)
bodyUsed:false
headers:Headers
ok:true
redirected:false
status:200
statusText:"OK"
type:"basic"
url:"http://localhost:3000/add"
__proto__:Response
Run Code Online (Sandbox Code Playgroud)

响应正文是空的.我认为这是数据出现的地方?如何有效地从服务器传递数据?

javascript node.js fetch-api

9
推荐指数
1
解决办法
7015
查看次数

Multer 返回 req.file 未定义

我知道这个问题之前已经被问过很多次了,我已经尝试过实施这些解决方案,但它们对我来说并不真正有效。

我一直在努力弄清楚如何通过 Node.js 上传文件和读取文件大小。我最初尝试使用强大的 npm,它似乎不再维护,因为我找不到关于它的文档。我无法处理这些错误,所以我尝试使用 multer。但是,当我尝试记录 req.file 时,我反复收到未定义的日志。

我有下面的 server.js 代码

var express = require('express');
var formidable = require('formidable');
var multer = require('multer');
var path = require('path');
var upload = multer({dest: './uploads'});
var fs = require('fs');

var app = express();

var PORT = 8080;

app.use(express.static(__dirname+'/views'));

app.set('views', './views');

app.set('view engine', 'jade');

app.get('/', function(req, res){
   res.render('index.jade'); 
});

app.post('/upload', upload.single('Upload'),function(req, res){
    console.log(req.file);
});

app.listen(PORT, function(){
    console.log('Express listening on port: '+PORT);
});
Run Code Online (Sandbox Code Playgroud)

下面提供了我的带有 AJAX 调用的 javascript 代码

$('#upload-butt').on('change', function(){
      var file = $(this).get(0).files;
      console.log(typeof …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery node.js express

5
推荐指数
1
解决办法
772
查看次数

如何在 d3 中使用序数标度返回月份名称

我正在尝试使用 d3.scaleOrdinal() 为一组数据返回相应的月份名称。月份由原始数据集中 1 到 12 的整数提供,可在此处找到。(我在每个数据对象中手动添加了一个 monthName 字段)

https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/global-temperature.json

这是我尝试创建比例的方式

var y = d3.scaleOrdinal().range([height, 0]).domain(month);
chart.selectAll('.temp')
       .data(monthlyData)
       .enter().append('rect')
       .attr('class', 'temp')
       .attr('x', function(d){
          return x(new Date(d.year, 0))
       })
       .attr('y', function(d){
          return y(d.monthName)
       })
       .attr('transform', 'translate(30, 0)')
       .attr('width', gridWidth)
       .attr('height', gridHeight)
       .attr('fill', function(d){
           return colorScale(d.variance + data.baseTemperature)
       });
Run Code Online (Sandbox Code Playgroud)

然而,我得到了一个非常奇怪的结果,我的数据被分成两个带,一个在顶部,一个在底部,可以在这个代码笔中看到

http://codepen.io/redixhumayun/full/ZBgVax/

我该怎么做呢?

javascript d3.js

5
推荐指数
1
解决办法
1166
查看次数

为什么从 SQL 查询中删除 BINARY 函数调用会如此显着地改变查询计划?

我有一个 SQL 查询,它在表中查找特定值,然后在三个表之间进行内部联接以获取结果集。这三个表是fabric_barcode_oc, fabric_barcode_items&fabric_barcode_rolls

初始查询

查询的初始版本如下

EXPLAIN ANALYZE
SELECT `oc`.`oc_number` AS `ocNumber` , `roll`.`po_number` AS `poNumber` ,
`item`.`item_code` AS `itemCode` , `roll`.`roll_length` AS `rollLength` ,
`roll`.`roll_utilized` AS `rollUtilized`
FROM `fabric_barcode_rolls` AS `roll`
INNER JOIN `fabric_barcode_oc` AS `oc` ON `oc`.`oc_unique_id` = `roll`.`oc_unique_id`
INNER JOIN `fabric_barcode_items` AS `item` ON `item`.`item_unique_id` = `roll`.`item_unique_id_fk`
WHERE BINARY `roll`.`roll_number` = 'dZkzHJ_je8'
Run Code Online (Sandbox Code Playgroud)

EXPLAIN ANALYZE在此运行时,我得到以下信息

"-> Nested loop inner join  (cost=468160.85 rows=582047) (actual time=0.063..254.186 rows=1 loops=1)
    -> Nested loop inner join  (cost=264444.40 rows=582047) …
Run Code Online (Sandbox Code Playgroud)

mysql sql collation query-optimization query-planner

4
推荐指数
1
解决办法
255
查看次数

下面代码中的 db.createCollection 是否总是会建立一个新的数据库?

我的 Node 工作区的 server.js 文件中有以下代码。我的问题是,每次我从 bash 命令行运行 server.js 文件时,我是否会设置一个名为 polls 的新集合?或者 MongoDb 是否认识到该集合已经存在?当我终止与 Mongo 的连接然后从命令行重新启动它时会怎么样?

mongo.connect('mongodb://localhost:27017/url-shortener', function(err, newDb){
    if(err){
        throw new Error('Database failed to connect');
    }else{
        console.log('Successfully connected to MongoDb database');
    }
    db = newDb;
    db.createCollection('polls', {
        autoIndexId: true
    });
});
Run Code Online (Sandbox Code Playgroud)

bash mongodb node.js

3
推荐指数
1
解决办法
2868
查看次数

使用 Promise.all 解决 fetch 请求

我有一个包含 4 个请求对象的数组,我想在这些对象上使用 Fetch API 并取回承诺。然后我想解决这些承诺中的每一个并取回价值。

这是我构建请求对象的方式。

let requestsArray = urlArray.map((url) => {
        let request = new Request(url, {
            headers: new Headers({
                'Content-Type': 'text/json'
            }), 
            method: 'GET'
        });

        return request;
    });
Run Code Online (Sandbox Code Playgroud)

这是我尝试使用的方式 Promise.all()

Promise.all(requestsArray.map((request) => {
        return fetch(request).then((response) => {
            return response.json();
        }).then((data) => {
            return data;
        });
    })).then((values) => {
        console.log(values);
    });
Run Code Online (Sandbox Code Playgroud)

最后一个console.log(values)不会向控制台打印任何内容。我用Promise.all()错了吗?

我知道第一个请求通过了,当我单独运行每个请求时,它工作正常。唯一的问题是当我尝试同时运行它们时。

javascript promise

2
推荐指数
1
解决办法
9546
查看次数

为什么我的工具提示没有显示?

我用 D3 制作了一张地图,并使用了来自 nasa.gov 的一些数据(https://data.nasa.gov/resource/y77d-th95.geojson)这是代码笔 http://codepen.io/redixhumayun/full/ VPepqM/

我尝试使用以下代码制作工具提示。

//setting up the tooltip here
var div = svg.append('div')
    .attr('class', 'tooltip')
    .style('opacity', 0.7);

var meteorites = meteorite.selectAll('circle')
        .data(data.features)
        .enter()
        .append('circle')
        .attr('cx', function(d) {
            return projection([d.properties.reclong, d.properties.reclat])[0]
        })
        .attr('cy', function(d) {
            return projection([d.properties.reclong, d.properties.reclat])[1]
        })
        .attr('fill', function(d) {
            return color_scale(d.properties.mass)
        })
        .attr('stroke', 'black')
        .attr("stroke-width", 1)
        .attr('r', function(d) {
            return weight_scale(d.properties.mass);
        })
        .attr('fill-opacity', function(d) {
            if (weight_scale(d.properties.mass) > 7) {
                return 0.5
            }
            return 1;
        })
        .on('mouseover', function(d) {
            div.transition().duration(200)
                .style('opacity', 0.9) …
Run Code Online (Sandbox Code Playgroud)

javascript css d3.js

1
推荐指数
1
解决办法
2562
查看次数