在求职面试中我被问到这个问题,我一直想知道正确的答案.
您有一个从0到n-1的数字数组,其中一个数字被删除,并替换为数组中已有的数字,该数字与该数字重复.我们如何在时间O(n)中检测到这个重复?
例如,1,2,3,4
将成为一个数组1,2,2,4
.
时间O(n 2)的简单解决方案是使用嵌套循环来查找每个元素的副本.
我想知道队列消息是否为空.我使用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)
在这两种情况下,我都会在向队列发送消息之前和之后得到相同的结果.
消息成功进入队列,我已经通过阅读我发送的内容进行了测试.
我通过添加以下配置在我的 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 查询和数据库实际上被调用。
所需的行为是从数据库中获取一次实体列表并将它们保存在缓存中,应该使用读写策略在那里更新它们。
知道如何实现吗?
我有一个SmsReceiver
课程,我想在主要活动中注册,我应该怎么做?
我是安卓新手。
我可以做一个递归函数来计算第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)
我怎样才能让它发挥作用?