我写了下面的代码来检查它是否是回文.我还创建了在列表不是回文时插入元素的逻辑
reverse_list(Inputlist, Outputlist) :-
reverse(Inputlist, [], Outputlist).
reverse([], Outputlist, Outputlist).
reverse([Head|Tail], List1, List2) :-
reverse(Tail, [Head|List1], List2).
printList([]).
printList([X|List]) :-
write(X),
write(' '),
printList(List).
palindrome(List1) :-
reverse_list(List1, List2),
compareLists(List1, List1, List2, List2).
compareLists(L1, [], [], L2) :-
write("\nList is Palindrome").
compareLists(L1, [X|List1], [X|List2], L2) :-
compareLists(L1, List1, List2, L2),
!.
compareLists(L1, [X|List1], [Y|List2], [Z|L2]) :-
write("\nList is not Palindrome. "),
append(L1, L2, L),
printList(L).
Run Code Online (Sandbox Code Playgroud)
代码给出了正确的输出
palindrome([a,b,c,a]).
List is not Palindrome. a b c a c b a
palindrome([a,b,c]).
List is …Run Code Online (Sandbox Code Playgroud) 我试图XOR拖曳128位位组.
#include<iostream>
#include<bitset>
int main()
{
std::bitset<128> testing;
testing = std::bitset<128>(0x544F4E20776E69546F656E772020656F) ^
std::bitset<128>(0x5473206768204B20616D754674796E75);
std::cout<<testing;
}
Run Code Online (Sandbox Code Playgroud)
前64位为0,后64位为XOR.我也收到编译器警告
warning: integer constant is too large for its type
Run Code Online (Sandbox Code Playgroud)
有没有办法XOR 128位位集或我需要创建一个丑陋的黑客?
该Site课程由外部团队提供给我,有一个私人的构造函数。
public class Site
{
int id;
String brand;
private Site(int id, String brand)
{
this.id = id;
this.brand = brand;
}
}
Run Code Online (Sandbox Code Playgroud)
SiteUtil类(由团队控制)是
public class SiteUtil
{
public static Site getSite()
{
Site site;
//Logic
return site;
}
}
Run Code Online (Sandbox Code Playgroud)
getSite()函数对其应用逻辑的数据需要网络调用,因此需要对其进行模拟。它目前没有设置器(也许是为了保持与数据源的一致性,不太确定)
我如下模拟
Site mockSite = new Site(1,"Google");
PowerMockito.when(SiteUtil.getSite(1)).thenReturn(mockSite);
Run Code Online (Sandbox Code Playgroud)
当我使用公共构造函数时,上面的代码当然会编译。我读的解决方案是模拟Site对象的私有构造函数。但是,我对该方法一无所知(第一次编写单元测试!)
以下代码
struct Base
{
public:
Base()
{
std::cout<<"Base Ctr";
}
~Base()
{
std::cout<<"Base Dtr";
}
};
struct Derived : Base
{
Derived()
{
std::cout<<"Derived Ctr";
}
~Base()
{
std::cout<<"Derived Dtr";
}
};
int main()
{
Base* b = new Derived;
delete b;
}
Run Code Online (Sandbox Code Playgroud)
给我以下输出:
Base Ctr
Derived Ctr
Base Dtr
Run Code Online (Sandbox Code Playgroud)
解决方案是使基础析构函数成为虚拟的.
但是,当我使用没有虚拟基础析构函数的boost智能指针时.我得到了不同的输出.
int main()
{
boost::shared_ptr<Base> b = boost::make_shared<Derived>();
}
Run Code Online (Sandbox Code Playgroud)
输出是
Base Ctr
Derived Ctr
Derived Dtr
Base Dtr
Run Code Online (Sandbox Code Playgroud)
boost shared_ptr如何在不影响(我假设)Base和Derived类的情况下实现此目的.
它如何根据多级继承进行扩展,即基于dervderv的基点,其中dervderv是从derv继承的.
编辑:
大多数答案告诉我,"魔法"发生在make_shared中.但是,我对以下代码获得了相同的行为
boost::shared_ptr<Base> ptr(new Derived);
Run Code Online (Sandbox Code Playgroud) 我需要使用PostgresSql.我得到下表称钱作为输入
Cash | Adhoc | Collateral | Total
---------------------------------
20 | 30 | 40 | 90
32 | 12 | 40 | 84
10 | 12 | 40 | 62
13 | 20 | 50 | 83
Run Code Online (Sandbox Code Playgroud)
顾名思义,总和是该行的现金,临时和抵押价值的总和.
我需要以下输出表
ChangeType | ChangeAmount
---------------------------
Cash | 12
Adhoc | -18
Cash | -22
Cash | 3
Adhoc | 8
Collateral | 10
Run Code Online (Sandbox Code Playgroud)
这是阶段1.在下一阶段,将添加一个名为clientId的新列,并为每个特定客户端显示这些更改.假设client1是第1行,客户端2是第2行和第3行,然后client1再次是第4行.然后将使用row1和row4形成client1的比较表.
输出表将是
ChangeType | ChangeAmount | ClientId
------------------------------------------
Cash | 7 | client1
Adhoc | -10 | client1
Collateral …Run Code Online (Sandbox Code Playgroud) 我的 docker 容器需要设置 JAVA_HOME。我已将其添加到 Dockerfile 中,如下所示
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/jre
Run Code Online (Sandbox Code Playgroud)
但是,这是值的硬编码。有没有办法可以从图像本身动态获取这个值
我正在尝试使用我的Docker文件在Docker映像中安装证书
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
COPY app-module/src/main/resources/certificates/A.crt /etc/ssl/certs/
COPY app-module/src/main/resources/certificates/B.crt /etc/ssl/certs/
RUN $JAVA_HOME/bin/keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -file /etc/ssl/certs/A.crt -alias A
RUN $JAVA_HOME/bin/keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -file /etc/ssl/certs/B.crt -alias B
Run Code Online (Sandbox Code Playgroud)
我得到错误
keytool error: java.io.FileNotFoundException: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts (Permission denied)
Run Code Online (Sandbox Code Playgroud)
我发现的其他答案建议以root / administrator模式运行上述命令。但是,我正在Dockerfile中运行这些命令。我如何克服这个错误?
我的应用程序使用 AWS 上的 ElastiCache 进行缓存。我们当前的设置使用基本的 Redis 集群,没有分片或故障转移。我们现在需要迁移到启用了分片、故障转移等的集群 Redis 弹性缓存。在 AWS 上创建一个新集群很容易,但我们对如何修改 Java 代码以从集群读取和写入有点迷茫。
当前实现 - 初始化一个JedisPool.
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(100);
jedisPoolConfig.setMaxIdle(10);
jedisPoolConfig.setMaxWaitMillis(50);
jedisPoolConfig.setTestOnBorrow(true);
String host = "mycache.db8e1v.0001.usw2.cache.amazonaws.com";
int port = 6379;
int timeout = 50;
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout)
Run Code Online (Sandbox Code Playgroud)
每次我们需要执行操作时,都会从池中借用 Jedis 对象
Jedis jedis = JedisPool.getResource();
Run Code Online (Sandbox Code Playgroud)
新的实施将是
JedisPoolConfig jedisPoolConfig = ...
HostAndPort hostAndPort = new HostAndPort(host, port);
jedisCluster = new JedisCluster(Collections.singleton(hostAndPort), jedisPoolConfig);
Run Code Online (Sandbox Code Playgroud)
问题:文档说 JedisCluster 将用于代替 Jedis(而不是 JedisPool)。这是否意味着我需要在每个线程中创建和销毁一个 JedisCluster 对象。或者我可以重用同一个对象,它会处理线程安全吗?我什么时候完全关闭 JedisCluster 呢?在申请结束时?
以下是我的问题的说明.我目前不知道处理NullPointerException的方法.
public class Util
{
private Map<Integer, String> myMap;
public Util(Map<Integer, String> myMap)
{
this.myMap = myMap;
}
public String getVal(Integer region)
{
return myMap.get(region);
}
}
public class UtilTest {
@Test
public void testNull() throws Exception{
Map<Integer, String> myMap = null;
Util util = new Util(myMap);
util.getValue(1);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将按预期给出NullPointerException.我关心的是我应该在构造函数或函数本身中处理它
在构造函数中如下
public Util(Map<Integer, String> myMap)
{
if(myMap != null)
this.myMap = myMap;
else
this.myMap = new Map<>();
}
Run Code Online (Sandbox Code Playgroud)
在功能上,它将类似于
public String getVal(Integer region)
{
if(myMap != null)
return myMap.get(region); …Run Code Online (Sandbox Code Playgroud) c++ ×2
dockerfile ×2
java ×2
bitset ×1
boost ×1
certificate ×1
docker ×1
java-home ×1
jedis ×1
keytool ×1
list ×1
palindrome ×1
postgresql ×1
powermockito ×1
prolog ×1
shared-ptr ×1
sql ×1
unit-testing ×1