这可能有点难以描述,因此我将尝试给出我正在尝试做的具体示例.
假设我们有一个Facade接口和类(在Java中),如下所示:
interface FacadeInterface<T> {
void method(String from, String via);
}
class Facade<T> implements FacadeInterface<T> {
private Class<T> mClazz;
public Facade(Class<T> clazz) {
mClazz = clazz;
}
@Override
public void method(String from, String via) {
System.out.println("Method called from " + from + " via " + via);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我需要有多个单例来保存外观的实例.真正的外观有额外的设置/配置参数,但这些与此无关.
在我开始使用kotlin之前,我会有一个类,它包含一个静态的外观实例(不是真正的单例,但在我的情况下,它起到了类似的作用)代理了对外观的调用,如下所示:
public class Singleton {
private static final FacadeInterface<String> sFacade = new Facade<>(String.class);
private Singleton() {
}
public static void method(String from, String via) {
sFacade.method(from, via);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,有了Kotlin,我们有类代表,允许我写这样的东西: …
看一下Volley库的源代码,我很好奇调度程序线程的"清理"是如何工作的.A RequestQueue包含一个CacheDispatcher实例和一个实例数组NetworkDispatcher.这两个调度程序类都会扩展Thread并在创建后立即启动.之后,它们以无限循环运行,直到quit()调用它们的方法.
我的问题是,这些线程是如何实际停止的(即,如果有的话,阻止它们无限期地运行直到系统杀死应用程序),例如当用户离开应用程序时.quit()调度程序的方法只能从RequestQueues stop()方法调用,但除了start()在初始化新的调度程序之前清除可能的先前调度程序的方法之外,该方法本身不会从Volley中的任何位置调用.
我的目标是问题是空闲线程有多少问题,以及当任务(即一组活动)从前台传到后台并挂起一段时间时它们的行为方式.Androids任务切换器可以容纳相当多的应用程序(尽管其中一些可能已经被弹出/停止),并且大多数应用程序可能使用像volley/okhttp/picasso这样有自己的线程池的库.从理论上讲,这可能会增加相当多的线程(尽管是空闲的).
我理解这是一个相当低级的问题,可能需要很多理论才能正确解释,如果有人可以提供一个满意的答案,触及上面的大胆的东西,我会很乐意接受它.
我使用Jenkins和LDAP服务器作为我的安全领域.授权类型设置为"基于项目的矩阵授权策略"(PBMAS).授权/ LDAP本身按预期工作,但是当我想添加新用户(到PBMAS下的表)时,Jenkins会自动将以下两行添加到其配置文件(位于其下/var/lib/jenkins/config.xml),<securityRealm>标记:
<managerDN>my_username</managerDN>
<managerPassword>caVSGEy5X7J=</managerPassword>
Run Code Online (Sandbox Code Playgroud)
密码已组成,但格式相同,managerDN包含我的Jenkins(LDAP)用户名.现在,所有后续登录尝试都失败,并显示以下消息(找到/var/log/jenkins/jenkins.log):
WARNING: Failed to search LDAP for username=my_username
org.acegisecurity.ldap.LdapDataAccessException: Failed to obtain
InitialDirContext due to unexpected exception; nested exception is
javax.naming.InvalidNameException: [LDAP: error code 34 - invalid DN]
( ... stacktrace continues ... )
Run Code Online (Sandbox Code Playgroud)
服务器是CentOS,Jenkins v1.550,LDAP插件1.8(我知道有新版本,但如果没有必要,我宁愿不更新,特别是因为声明新版本与当前版本不兼容).
我可以以某种方式解决此问题,以便在添加新用户时这些行不会自动添加到Jenkins配置中(我需要为每个用户提供总读取权限,否则他们看不到任何内容并在登录时出错)?