小编Mar*_*yeh的帖子

在时间O(n)中查找数组中的重复元素

在求职面试中我被问到这个问题,我一直想知道正确的答案.

您有一个从0到n-1的数字数组,其中一个数字被删除,并替换为数组中已有的数字,该数字与该数字重复.我们如何在时间O(n)中检测到这个重复?

例如,1,2,3,4将成为一个数组1,2,2,4.

时间O(n 2)的简单解决方案是使用嵌套循环来查找每个元素的副本.

java arrays algorithm

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

Linux:检查消息队列是否为空

我想知道队列消息是否为空.我使用msg_ctl()如下,它不起作用:

struct msqid_ds buf;
int num_messages;

rc = msgctl(msqid, IPC_STAT, &buf);
Run Code Online (Sandbox Code Playgroud)

我用过这个偷看功能:

int peek_message( int qid, long type )
{
    int result, length;
    if((result = msgrcv( qid, NULL, 0, type, IPC_NOWAIT)) == -1) {
        if(errno==E2BIG)
            return(1);
    }

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

在这两种情况下,我都会在向队列发送消息之前和之后得到相同的结果.

消息成功进入队列,我已经通过阅读我发送的内容进行了测试.

c linux ipc message-queue

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

休眠二级缓存总是在获取所有实体时调用数据库

我通过添加以下配置在我的 sprint boot 2.1.8 应用程序中启用了休眠二级缓存:

spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
Run Code Online (Sandbox Code Playgroud)

我还添加了eh缓存依赖如下:

     <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>5.3.11.Final</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我注释了一个实体是可缓存的:

@Entity(name = "entity")
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name = "entity")
@AttributeOverride(name = "id", column = @Column(name = "entity_id"))

    public class Entity extends ItemBase {
        private String n1;
        private String n2;
        private String n3;
        private int n4;
        @Column(name = "n_5")
        private int n5;
  //getters and setters
        }
Run Code Online (Sandbox Code Playgroud)

每次我调用存储库类(扩展 JpaCrudRepository)并调用 findAll(); 或 findOneById(),我看到休眠日志 HQL 查询和数据库实际上被调用。

所需的行为是从数据库中获取一次实体列表并将它们保存在缓存中,应该使用读写策略在那里更新它们。

知道如何实现吗?

java spring caching hibernate spring-boot

6
推荐指数
0
解决办法
284
查看次数

如何在主要活动中注册接收者?

我有一个SmsReceiver课程,我想在主要活动中注册,我应该怎么做?

我是安卓新手。

android broadcastreceiver android-activity

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

使用黄金比率(黄金数字)的斐波纳契递归

我可以做一个递归函数来计算第n个Fibonacci项,如下所示:

int rec (int i)
{
  if(i == 1 || i == 2)
    return i;
else return rec(i-1)+rec(i-2);
Run Code Online (Sandbox Code Playgroud)

}

但我想使用1.618的黄金数来计算斐波那契; 但是我的尝试失败了,我错了数字:

int rec (int i)
{
  if(i == 1 || i ==  2)
    return i;

  else return 1.618*rec(i-1);

 }
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?

c algorithm fibonacci

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