小编Eri*_*ric的帖子

为什么TreeSet迭代O(n)而不是O(n*logn)?

我读了一个关于TreeSet的时间复杂度的前一个问题,答案是它需要O(n)时间.但是,我不明白为什么O(n)迭代而不是O(n*nlogn).

每次下一次调用都需要O(logn)时间

所以,如果我像这样迭代一个TreeSet:

while (iterator.hasNext()){ //Runs N times
   System.out.println(iterator.next() + " "); //each next is O(logn)
}
Run Code Online (Sandbox Code Playgroud)

我希望它是O(n*logn)而不是O(n),因为while循环有N次迭代,每次iterator.next()调用需要O(logn)时间.

java algorithm tree treeset data-structures

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

创建与 FormData 一起使用的可读流

我正在使用API 上传 CSV 文件。我从字符串在内存中创建 CSV 文件,并使用request模块上传它。但是,我在从字符串创建可读流时遇到问题。我遵循了关于How to create Streams from string in Node.Js 的答案。这是我的解决方案的代码:

var importResponse = function(csv, callback){
    stringify(csv, function(err, output){

        const s = new Readable();
        s._read = () => {}; 
        s.push(output);
        s.push(null);

        request.post({
          headers: {'X-API-TOKEN':token, 'content-type' : 'multipart/form-data'},
          url: 'https://ca1.qualtrics.com/API/v3/responseimports',
          formData: {
            surveyId: 'SV_123',
            file: {
                value: s,
                options: {
                    contentType: 'text/csv; charset=utf-8'
                }
            }
          }
        }, function(err, res, body){
            if(err || res.statusCode !== 200){
              console.log(err || "Error status code: " + …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

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

C#sql为每个查询创建一个连接并打开和关闭

我最近继承了一个C#Web应用程序,为每个查询创建一个新连接,如下所示:

public class QueryForm
{
    public bool getStudents()
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
        conn.Open();
        //commands
        conn.Close();
    }

    protected void getProfessors()
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
        conn.Open();
        //Commands
        conn.Close();
    }


    protected void getProfessors()
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
        conn.Open();
        //Commands
        conn.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这通常是最好的方法,但是让构造函数创建连接对象是可接受的或"最佳实践",然后打开每个方法/ Query然后关闭该连接:

public class QueryForm
{
    SqlConnection conn;

    public QueryForm()
    {
        conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
    }

    public bool getStudents()
    {
        conn.Open();
        //commands
        conn.Close();
    }

    protected void getProfessors()
    {
        conn.Open();
        //Commands
        conn.Close();
    }

    protected void getCourses() …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server

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

在c ++中将字符串向量转换为char数组

我正在尝试将字符串向量转换为c ++中的char数组.

更具体地说,我要做的是通过使用以下方法拆分像"ls -latr"这样的shell命令:

istringstream f(x);
while (getline(f, x, ' '))
{
    strings.push_back(x);
}
Run Code Online (Sandbox Code Playgroud)

我相信这会给我strings[0] == "ls"strings[1]==" -latr".

我正在尝试执行以下操作:

execvp(strings[0], strings);
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

错误:无法将'std :: basic_string,std :: allocator>'转换为'const char*'以将参数'1'转换为'int execvp(const char*,char*const*)'

因此,我试图找出如何将字符串转换为char数组.

c++

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

传递具有可变大小的2D数组

我正在尝试将2D数组从函数传递到另一个函数.但是,数组的大小不是恒定的.大小由用户决定.

我试图研究这个,但没有太多运气.大多数代码和解释都是针对数组的恒定大小.

在我的函数中,A我声明了变量然后我稍微操作它,然后它必须传递给Function B.

void A()
{
      int n;
      cout << "What is the size?: ";
      cin >> n;

      int Arr[n-1][n];

      //Arr gets manipulated here

      B(n, Arr);
}

void B(int n, int Arr[][])
{
    //printing out Arr and other things

}
Run Code Online (Sandbox Code Playgroud)

c++ arrays

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

MigLayout JLabel超出了约束条件

我用以下方式使用MigLayout

    panel.setLayout(new MigLayout("",
            "[][600!][]",
            "[][][][][][][][][]"));
    panel.add(composerTitle);
    panel.add(composerText, "wmax 600");
    panel.add(lblCount, "push, align right, wrap");
    panel.add(costTitle);
    panel.add(costText, "wrap,wmax 600");
    panel.add(titleTitle);
    panel.add(titleText, "wrap,wmax 600");
    panel.add(publisherTitle);
    panel.add(publisherText, "wrap,wmax 600");
    panel.add(scoreinfoTitle);
    panel.add(scoreinfoText, "wrap,wmax 600");
    panel.add(languageTitle);
    panel.add(languageText, "wrap,wmax 600");
    panel.add(collectionTitle);
    panel.add(collectionText, "wrap,wmax 600");
    panel.add(numbersTitle);
    panel.add(numbers, "grow, span 2, wrap");//JTextArea that uses line wrap
    panel.add(contentTitle);
    panel.add(content, "grow, span 2, wrap");//JTextArea
Run Code Online (Sandbox Code Playgroud)

有时我的标签可能超过600!我为列添加了约束.因此,我预计标签永远不会超过600,因为max设置为600.但是,如果标签有足够的文本,它就是这样做的.因此,我不得不为每个"wmax 600"添加约束.没有这个限制,我的标签正在运行框架.

有没有办法做到这一点,所以我不必为我添加的每个标签添加"wmax 600".这似乎打败了600的目的!列的约束.

java swing miglayout layout-manager

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

MouseEntered和KeyPressed在同一时间Java Swing

使用Java Swing我有20个JLabels.每个JLabel都有一个MouseListener和一个KeyListener.我一直试图找到一种方法(没有运气),以便能够知道鼠标已经进入/悬停在哪个标签上以及何时按下删除键.

例如,当按下删除键并且鼠标位于JLabel5时.我想要对JLabel 5执行操作.

我知道如何使用MouseListenerKeyListener独立,但我不知道如何一起使用它们.

这是我正在尝试做的事情.

    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_DELETE){
            //Get the JLabel that the mouse has entered/hovering over
            //Perform action on that JLabel

        }
    }
Run Code Online (Sandbox Code Playgroud)

如果它很重要,我正在使用所有JLabel的List.

java swing keylistener mouselistener

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