我使用连接池创建连接工厂的配置.我有一个连接池.大部分代码都是从Spring中复制的RedisAutoConfiguration,我因特殊原因而禁用了它.
@Configuration
@EnableConfigurationProperties(RedisProperties.class)
public class JedisConfiguration implements RedisConfiguration {
@Bean
@Scope("prototype")
@Override
public RedisConnectionFactory connectionFactory(RedisProperties redisProperties) {
return createFactory(redisProperties);
}
private static JedisConnectionFactory applyProperties(RedisProperties properties, JedisConnectionFactory factory) {
factory.setHostName(properties.getHost());
factory.setPort(properties.getPort());
factory.setDatabase(properties.getDatabase());
return factory;
}
private static JedisPoolConfig jedisPoolConfig(RedisProperties properties) {
return Optional.ofNullable(properties.getPool())
.map(props -> {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(props.getMaxActive());
config.setMaxIdle(props.getMaxIdle());
config.setMinIdle(props.getMinIdle());
config.setMaxWaitMillis(props.getMaxWait());
return config;
})
.orElseGet(JedisPoolConfig::new);
}
public static JedisConnectionFactory createFactory(RedisProperties properties) {
return applyProperties(properties, new JedisConnectionFactory(jedisPoolConfig(properties)));
}
}
Run Code Online (Sandbox Code Playgroud)
我有字符串键"A","B","C" …
所以我想在我的项目中获得一个字符串资源但是当我打电话时context.getResources().getString(...),我得到一个NullPointerException.在调试模式下,我发现上下文不是null但是看着它的成员,我发现它mResources是null.为什么没有为活动上下文加载资源?
编辑
显然,这是触发异常的原因
public class MyActivity extends Activity {
SomeClass someClass = new SomeClass(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
public class SomeClass {
private final Context mContext;
public SomeClass(Context context) {
mContext = context;
mContext.getResources().getString(R.string.app_name);
}
}
Run Code Online (Sandbox Code Playgroud)
我不得不按照CommonsWare的建议将初始化someClass移到后面.谢谢.super.onCreate()
所以我有一个方法返回一个CompletableFuture.在返回之前,此方法添加一个块,thenAccept在CompletableFuture完成后执行该块.
此方法的调用者还添加了另一个块thenAccept.显然,这可以继续多个链式调用.
调用CompletionStage返回的顺序是什么thenAccept?是否保证是添加它们的顺序?如果没有,如何保证它们按照添加顺序执行?
PS:我根据自己的经验CompletableFuture和本文提出这个问题
我目前正在使用 OpenCV 2.4 对二进制图像进行形态学变换
我刚刚注意到,使用 OpenCV 的内置函数,我所有像素的位置都向右和向下移动了一个(即之前位于 (i,j) 的像素现在位于 (i+1, j+1) )
import cv2
import numpy as np
from skimage.morphology import opening
image = cv2.imread('input.png', 0)
kernel = np.ones((16,16), np.uint8)
opening_opencv = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
opening_skimage = opening(image, kernel)
cv2.imwrite('opening_opencv.png', opening_opencv)
cv2.imwrite('opening_skimage.png', opening_skimage)
Run Code Online (Sandbox Code Playgroud)
输入 :

输出 :

由于我不明白为什么,我只是使用skimage绑定了相同的操作,并且在形态转换过程中并没有产生这种“间隙”。
输出:

关于这个问题的任何想法?
谢谢 !
我有一个在后台运行的NotificationListener服务,当我执行Settings.System.canWrite(Settings.java:3742)时会抛出异常
12-03 18:25:33.490 2754-2771/? W/System.err? java.lang.SecurityException: uid 10057 does not have android.permission.UPDATE_APP_OPS_STATS.
12-03 18:25:33.490 2754-2771/? W/System.err? at android.os.Parcel.readException(Parcel.java:1599)
12-03 18:25:33.490 2754-2771/? W/System.err? at android.os.Parcel.readException(Parcel.java:1552)
12-03 18:25:33.490 2754-2771/? W/System.err? at com.android.internal.app.IAppOpsService$Stub$Proxy.checkOperation(IAppOpsService.java:327)
12-03 18:25:33.490 2754-2771/? W/System.err? at android.app.AppOpsManager.checkOpNoThrow(AppOpsManager.java:1536)
12-03 18:25:33.490 2754-2771/? W/System.err? at android.provider.Settings.isCallingPackageAllowedToPerformAppOpsProtectedOperation(Settings.java:8425)
12-03 18:25:33.490 2754-2771/? W/System.err? at android.provider.Settings.isCallingPackageAllowedToWriteSettings(Settings.java:8320)
12-03 18:25:33.490 2754-2771/? W/System.err? at android.provider.Settings$System.canWrite(Settings.java:3742)
Run Code Online (Sandbox Code Playgroud)
这是因为提供的Context是一种服务,因为从活动调用时不会发生这种情况.
如何为嵌套的对象列表配置spring配置元数据json?
@ConfigurationProperties(prefix = "custom-config")
public class ConfigProperties {
private boolean booleanProperty;
private List<NestedObject> listProperty = new LinkedList<>();
//getters and setters
}
public class NestedObject {
private String stringProperty;
private boolean booleanProperty;
//getters and setters
}
Run Code Online (Sandbox Code Playgroud)
这是元数据json中自动生成的内容
{
"groups": [{
"name": "custom-config",
"type": "testing.config.properties.ConfigProperties",
"sourceType": "testing.config.properties.ConfigProperties"
}],
"properties": [
{
"name": "custom-config.boolean-property",
"type": "java.lang.Boolean",
"sourceType": "testing.config.properties.ConfigProperties",
"defaultValue": false
},
{
"name": "custom-config.list-property",
"type": "java.util.List<testing.config.properties.NestedObject>",
"sourceType": "testing.config.properties.ConfigProperties"
}
],
"hints": []
}
Run Code Online (Sandbox Code Playgroud)
如何在java代码或json中配置子属性?
如下所示,编辑器无法识别子属性.
我在CodinGame.com上解决了这个问题,我设法编写了一个代码,通过了最后一个测试用例的系统测试(一个非常大的测试用例).但是在我的笔记本电脑上编译我得到的输出为0而不是57330892800,代码从他们的机器给我.我用Visual Studio 2012 Express和Dev C++ 4.9.9.2编译.
我使用了一个递归函数,所以如果我的堆栈内存不足,我就会发现堆栈溢出错误,但是没有错误,没有错误,只有0的输出.为什么这会在我的系统上发生,而它工作得很好该网站的机器?什么可能导致这一点,我怀疑它是堆栈溢出?
#include<iostream>
#include<algorithm>
#include<stack>
#include<string>
#include<map>
#include<set>
#include<vector>
using namespace std;
typedef long long LONG;
string X[]={".-","-...","-.-.","-..",
".","..-.","--.","....",
"..",".---","-.-",".-..",
"--","-.","---",".--.",
"--.-",".-.","...","-",
"..-","...-",".--","-..-",
"-.--","--.."};
map<string, int> dict;
string morse(const string ret){
string s;
for(char c : ret) s+=X[c-'A'];
return s;
}
LONG decode(int start, string &word, vector<LONG> &mem){
if(start == word.size()) return 1;
else if(mem[start] != -1) return mem[start];
LONG res = 0;
string s;
for(int i=0; i<19*4 && …Run Code Online (Sandbox Code Playgroud) 我正在使用ZonedDateTime解析并根据时区获取当前时间.
当我解析以下内容时String,解析成功但输出String不同.这是为什么?
String dateTimeString = "2016-05-04T12:58:22+01:00[Europe/Paris]";
ZonedDateTime dateTime = ZonedDateTime.parse(dateTimeString, ISO_ZONED_DATE_TIME);
System.out.println(dateTimeString);
System.out.println(dateTime.toString());
Run Code Online (Sandbox Code Playgroud)
产量
2016-05-04T12:58:22+01:00[Europe/Paris]
2016-05-04T12:58:22+02:00[Europe/Paris]
Run Code Online (Sandbox Code Playgroud)
在哪一点它决定改变+1到+2,为什么没有异常抛出?
我知道括号中的参数[Europe/Paris]是可选的,但这里它优先于偏移量.
另一方面,以下代码
String dateTimeString = "2016-05-04T12:58:22+01:00";
ZonedDateTime dateTime = ZonedDateTime.parse(dateTimeString, ISO_ZONED_DATE_TIME);
System.out.println(dateTimeString);
System.out.println(dateTime.toString());
Run Code Online (Sandbox Code Playgroud)
产生输出
2016-05-04T12:58:22+01:00
2016-05-04T12:58:22+01:00
Run Code Online (Sandbox Code Playgroud) 我正在从事一个项目,我必须从社交网络(Twitter、Facebook 等)收集用户的实时流。我想使用Twitter Users Streams Api从注册用户那里获取实时推文更新,分析这些更新,然后将结果存储在数据库中。
我正在使用 spring 框架来注册用户,并且我会注册一个线程侦听器来获取实时推文。Spring框架可以做到这一点吗?如果是这样,我该怎么做,我无法通过 Google 搜索找到有用的信息。如果没有,最好的方法是什么?