小编ash*_*hur的帖子

如何在不使用Set的情况下有效地从数组中删除重复项

我被要求编写自己的实现来删除数组中的重复值.这就是我创造的.但经过1,000,000个元素的测试后,需要很长时间才能完成.我可以做些什么来改进我的算法或删除任何错误?

我需要写我自己的实现-不使用Set,HashSet等等.或者任何其他工具,如迭代器.只需一个数组即可删除重复项.

public static int[] removeDuplicates(int[] arr) {

    int end = arr.length;

    for (int i = 0; i < end; i++) {
        for (int j = i + 1; j < end; j++) {
            if (arr[i] == arr[j]) {                  
                int shiftLeft = j;
                for (int k = j+1; k < end; k++, shiftLeft++) {
                    arr[shiftLeft] = arr[k];
                }
                end--;
                j--;
            }
        }
    }

    int[] whitelist = new int[end];
    for(int i = 0; i < end; …
Run Code Online (Sandbox Code Playgroud)

java arrays optimization

39
推荐指数
9
解决办法
34万
查看次数

如何在32位int上检测整数溢出?

我知道这样的话题被问过好几次,但我的问题是关于整个32位int的溢出.例如:

  11111111111111111111111111111111 +
  00000000000000000000000000000001 =
  00000000000000000000000000000000   //overflow!
Run Code Online (Sandbox Code Playgroud)

我找到了类似问题的主题,但算法并不完美.

  11111111111111111111111111111111 +
  00000000000000000000000000000000 =
  00000000000000000000000000000000  //overflow!
Run Code Online (Sandbox Code Playgroud)

有没有简单快捷的方法来检查这个?

java integer bit-manipulation integer-overflow integer-arithmetic

25
推荐指数
3
解决办法
2万
查看次数

C++:通过指针调用成员函数

我有这个使用指向成员函数的示例代码,我想在运行时更改它,但我无法使其工作.我已经试过了this->*_currentPtr(4,5) (*this)._currentPtr(4, 5).在同一个类中调用指向方法的正确方法是什么?

错误:表达式必须具有(指针指向)函数类型

#include <iostream>
#include <cstdlib>

class A {

public:

    void setPtr(int v);
    void useFoo();

private:
    typedef int (A::*fooPtr)(int a, int b);

    fooPtr _currentPtr;

    int foo1(int a, int b);
    int foo2(int a, int b);
};

void A::setPtr(int v){
    if(v == 1){
        _currentPtr = foo1;
    } else {
        _currentPtr = foo2;
    }
}

void A::useFoo(){

    //std::cout << this->*_currentPtr(4,5); // ERROR
}

int A::foo1(int a, int b){
    return a - b;
}

int A::foo2(int a, int b){ …
Run Code Online (Sandbox Code Playgroud)

c++ function-pointers

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

Pygame:绘制单个像素

我正在寻找允许我在显示屏上绘制单个像素的方法.例如,当我点击鼠标时,我想要点击像素的位置来改变颜色.我知道如何阅读鼠标pos,但我找不到简单的像素绘制(有screen.fill方法,但它没有按我的意愿工作).

python pygame

15
推荐指数
3
解决办法
3万
查看次数

InputStream,mark(),reset()

如何mark()reset()方法一步一步完成(在下面的代码中)?我试着编写自己的例子,但是开始抛出错误的标记异常或类似的东西,我无法理解在这段代码中放置标记和重置方法有什么意义,因为我看不出这个或没有区别.

import java.io.*;

class BufferedInputStreamDemo {
    public static void main(String args[]) {
        String s = "&copy; is a copyright symbol, "
                + "however &copy isn't.\n";
        byte buf[] = s.getBytes();

        ByteArrayInputStream in = new ByteArrayInputStream(buf);
        int c;
        boolean marked = false;

        //try_with_resources
        try (BufferedInputStream f = new BufferedInputStream(in)) {
            while ((c = f.read()) != -1) {
                switch (c) {
                    case '&':
                        if (!marked) {
                            f.mark(32);
                            marked = true;
                        } else {
                            marked = false;
                        }
                        break;
                    case …
Run Code Online (Sandbox Code Playgroud)

java java-io

12
推荐指数
2
解决办法
3万
查看次数

骆驼生产者消费混乱

Camel in Action书中的生产者和消费者的定义对我来说有点混乱.我已经读过类似问题的其他两个答案,但我仍然觉得不是那样的.

生产者是Camel抽象,它指的是能够创建消息并将消息发送到端点的实体.图1.10说明了生产者适应其他Camel概念的位置.当需要将消息发送到端点时,生产者将创建交换并使用与该特定端点兼容的数据填充它.例如,a FileProducer会将消息正文写入文件.甲JmsProducer,在另一方面,将映射骆驼消息到javax.jms.Message其发送到JMS目的地之前.这是Camel的一个重要特性,因为它隐藏了与特定传输交互的复杂性.

使用者是接收生产者生成的消息的服务,将它们包装在交换中,然后发送它们进行处理.消费者是在Camel中路由交换的来源.回顾图1.10,我们可以看到消费者与其他Camel概念的契合程度.要创建新的交换,消费者将使用包装正在使用的有效负载的端点.然后使用处理器使用路由引擎启动Camel中的交换路由.

谁在实际创建交易所?典型的沟通渠道的哪一方是生产者和消费者?从上面的文字我不能真正说出谁对此负责.如果有人可以提供一张照片(书中的那张照片对我来说还不清楚),那将是很棒的,其中究竟是生产者和消费者,并解释他们如何以简单的方式工作.也许一些例子也会有用.

好吧也许最好举一个例子,有人可以告诉我它是如何工作的.想象一下,我们想要从文件夹中获取文件并将它们放在JMS队列中,然后从那里发送它们以进行进一步处理,最终保存在磁盘上.

根据我的照片,生产者,消费者到底在哪里?我意识到什么是组件和端点.

java apache-camel

11
推荐指数
2
解决办法
4034
查看次数

C++:STL multimap.equal_range()

我有这个代码,我无法理解equal_range方法返回迭代器的部分.我知道范围是配对对象里面有两个多图对象,但是我没有得到,这就是为什么'for (it = range.first; it != range.second; ++it)'- 这究竟是 什么意思?

// multmap.cpp -- use a multimap
#include <iostream>
#include <string>
#include <map>
#include <algorithm>

typedef int KeyType;
typedef std::pair<const KeyType, std::string> Pair;
typedef std::multimap<KeyType, std::string> MapCode;

int main()
{
using namespace std;
MapCode codes;
codes.insert(Pair(415, "San Francisco"));
codes.insert(Pair(510, "Oakland"));
codes.insert(Pair(718, "Brooklyn"));
 codes.insert(Pair(718, "Staten Island"));
  codes.insert(Pair(415, "San Rafael"));
  codes.insert(Pair(510, "Berkeley"));

  cout << "Number of cities with area code 415: "
    << codes.count(415) << endl;
  cout …
Run Code Online (Sandbox Code Playgroud)

c++ stl multimap

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

在工作单元克隆中遇到JPA Null或零主键

我了解JPA并负责制作数据库并为其插入一些值.我想知道如何找出最近插入的对象的ID是什么,所以我找到了一种方法,我需要使用flush方法EntityManager.

不幸的是我得到了

在工作单元克隆中遇到零或零主键

我使用上述方法时的异常.我认为问题在于我的数据库已全部ID's设置为自动增量(我使用ORACLE 11G Express),所以在提交之前它null有价值并且它回滚事务.

我能做些什么来修复它?

这是DB(ID是自动增量[oracle中的序列和触发器]):

public class Client {    
    public static void main(String[] args) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("JpaIntroductionPU");        
        EntityManager em = emf.createEntityManager();
        EntityTransaction et = em.getTransaction();

        et.begin();

        Address ad1 = new Address();
        ad1.setStreet("Skaraktki");
        ad1.setCode("64-340");

        em.persist(ad1);
        em.flush();

        System.out.println(ad1.getAId());
        et.commit();
    }   
}
Run Code Online (Sandbox Code Playgroud)

地址类

@Entity
@Table(name = "ADDRESS")
@NamedQueries({
    @NamedQuery(name = "Address.findAll", query = "SELECT a FROM Address a"),
    @NamedQuery(name = "Address.findByAId", query = "SELECT a FROM …
Run Code Online (Sandbox Code Playgroud)

java sql oracle jpa java-ee

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

使用Map接口将元素放入HashMap

我正在尝试Kotlin,我遇到了一个我无法解决的小问题.当我有以下结构时,我可以将元素放入地图中:

val map = HashMap<String, String>()
map["asd"] = "s"
map.put("34", "354")
Run Code Online (Sandbox Code Playgroud)

然而,当我创建一个带有Map界面的地图时,我只能阅读它们,我做错了什么?

val map: Map<String, String> = HashMap<String, String>();
map.put("24", "34") //error
map["23"] = "23" //error
Run Code Online (Sandbox Code Playgroud)

或者也许我对Kotlin中的接口感到困惑?

java dictionary kotlin

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

SpringFramework:实例化异常

我是Spring Framework的新手,所以我决定买一本书("Spring in action"第3版).目前我的第一章涵盖了基础知识 - 依赖注入(DI)和面向方面编程(AOP).

我设法运行显示DI的代码.

1#骑士实施的界面

package com.springinaction.knights;

public interface Knight {
  void embarkOnQuest() throws QuestException;
}
Run Code Online (Sandbox Code Playgroud)

1#骑士班

package com.springinaction.knights;

public class BraveKnight implements Knight {
  private Quest quest;

  public BraveKnight(Quest quest) {
    this.quest = quest;       //<co id="co_injectedQuest"/>
  }

  public void embarkOnQuest() throws QuestException {
    quest.embark();
  }
}
Run Code Online (Sandbox Code Playgroud)

#2Quest界面

package com.springinaction.knights;

public interface Quest {
  void embark() throws QuestException;
}
Run Code Online (Sandbox Code Playgroud)

#2Quest例外

package com.springinaction.knights;

public class QuestException extends RuntimeException {
  private static final long serialVersionUID = 1L;
}
Run Code Online (Sandbox Code Playgroud)

#2Quest类型类实现 …

java aop spring spring-aop

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