我正在为一个库编写一个DSL,我想使用这样的具体类型参数提供类型元数据:
val config = Config.create()
.consumerFor<MyType>{
// consume
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我只能reified在inline函数和函数中使用关键字inline我不能使用像这样的实例字段:
inline fun <reified T> consumerFor(consumer: (T) -> Unit) {
consumers.put(T::class.java, consumer)
return this
}
Run Code Online (Sandbox Code Playgroud)
因为我收到一个错误:
Public-API内联函数无法访问非公共API的私有最终val消费者...
到目前为止,我似乎无法使用最有用的reified类型参数.这有解决方法吗?
我已使用建议的默认值配置了 RDS,并且没有公共访问权限。
然后,我通过创建 VPC 连接器将 AppRunner 实例放入与 RDS 相同的安全组中。我可以看到两侧列出了相同的 VPC 和子网,但不知为何我仍然无法连接到 RDS(我的 AppRunner 实例无法连接)。我究竟做错了什么?把它们放在同一个安全组和VPC中还不够吗?
我想知道是否打破一个带有span标签的单词来改变第一个字母的字体大小,会影响谷歌机器人读取这个单词的能力吗?受此影响的词语是关键词.
什么是"好"的java代码生成库?我在JaxMe中找到了一代人,但它很穷而且年老.我喜欢通过java代码生成java代码.所以基本上使用一个lib告诉它必须生成一个具体的类或接口与X字段,Y方法等,然后写入文件系统..我知道框架使用它们,但找不到一个独立的lib .. - Ed
我的问题是leiningen没有在我的电脑上工作.我得到这样的错误:
Could not transfer artifact lein-ring:lein-ring:pom:0.4.5 from/to central (http://repo1.maven.org/maven2): Connection to http://repo1.maven.org r
Could not transfer artifact lein-ring:lein-ring:pom:0.4.5 from/to clojars (https://clojars.org/repo/): Connection to https://clojars.org refused
Run Code Online (Sandbox Code Playgroud)
我认为问题是我在我的maven安装的settings.xml中配置了镜像.如何告诉leiningen使用嵌入式maven或其他没有自定义配置的maven安装?
我正在将maven用于其他java项目,并且它与leiningen有某种冲突.
我和我的同事现在有几个星期有争议.我想听听社区对此的看法.
我们在申请中使用guice.在这个应用程序的UI部分,我更喜欢通过DI和自定义注释(也就是工厂的位置)来实例化所有字段和组件,并在buildUI方法中将它们连接起来.
看起来如下:
我的方法:
@Inject
@PreConfigured(caption="foo", width="100%")
Label field;
private void buildUI() {
this.addComponent(field);
}
Run Code Online (Sandbox Code Playgroud)
我还写了一些数据绑定和i18n的注释.
我的同事这样做:
他的方法:
private Label field;
private void buildUI() {
field = new Label();
field.setCaption("foo");
field.setWidth("100%");
this.addComponent(field);
}
Run Code Online (Sandbox Code Playgroud)
这里的代码可能很长.考虑到数据绑定和其他主题,第二个代码可以变得更长,而我的方法只是另一个注释.
我的理由是:
他的理由是:
但是,我还阅读了福勒的一些文章,他说,定位注射(用场注射替代)是一个糟糕的设计决定.但是在其他项目中没有重用的视图呢?
Field Injection是一个糟糕的设计吗?或者上面介绍的另一种方式更优雅?
亲切的问候基督徒
PS:我知道讨论只是基于意见而开始,但这是一个长期持续的讨论(setter vs constructor injection),这可能是值得放手的.
我试图在我的应用程序上实现二级缓存,但它返回以下错误.我对setCacheMode很怀疑.
的hibernate.cfg.xml
...
<property name="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
<property name="hibernate.cache.use_query_cache">true</property>
...
Run Code Online (Sandbox Code Playgroud)
Product.Java
public class Product implements Serializable {
...
@Id
@GeneratedValue
@Column(name = "id")
@Cache(usage= CacheConcurrencyStrategy.READ_ONLY)
public long getID() {
return ID;
}
...
}
Run Code Online (Sandbox Code Playgroud)
Model.Java
....
final Session session = HibernateUtil.getSession();
try {
final Transaction tx = session.beginTransaction();
try {
Product product = (Product) session.get(Product.class, id);
session.setCacheMode(CacheMode.NORMAL);
tx.commit();
return product;
} catch (Exception e) {
tx.rollback();
e.printStackTrace();
}
} finally {
HibernateUtil.closeSession();
}
.....
Run Code Online (Sandbox Code Playgroud)
错误
INFO: ** Exception in SessionFactory …Run Code Online (Sandbox Code Playgroud) 为什么ConcurrentHashMap.Segment和ConcurrentHashMap.HashEntry类是静态的?为什么这样设计?
假设我的100.000文件系统中有很多目录(比方说),并且每个目录中都有相似数量的目录.每个目录可以包含任意数量的文件,但通常不会超过几个.该结构变为恒定深度(10).
我的问题是,如果我从这个目录结构中读取一个文件,那么时间复杂度(在读取操作中)是否存在差异:/dir-34/dir-215/dir-345/file1使用Paths.get() 与从这样的简单文件系统读取文件相比:
/dir1
/dir2
/dir3
file1
/dir4
file2
Run Code Online (Sandbox Code Playgroud)
注意:这只是一个理论问题我只想知道我尝试打开文件的目录中的目录/文件数是否对读取操作的速度有任何影响.
我有一个PublishSubject和一个Subscriber我用来处理(可能)无限的预处理数据流.问题是某些元素可能包含一些错误.我想忽略它们并继续处理.我怎么能这样做?我尝试过这样的事情:
val subject = PublishSubject.create<String>()
subject.retry().subscribe({
println("next: $it")
}, {
println("error")
}, {
println("complete")
})
subject.onNext("foo")
subject.onNext("bar")
subject.onError(RuntimeException())
subject.onNext("wom")
subject.onComplete()
Run Code Online (Sandbox Code Playgroud)
我的问题是没有任何错误处理方法可以帮助我:
onErrorResumeNext()- 指示Observable在遇到错误时发出一系列项目
onErrorReturn(?)- 指示Observable在遇到错误时发出特定项目
onExceptionResumeNext(?)- 指示Observable在遇到异常后继续发出项目(但不是另一种可抛出的项目)
retry(?)- 如果源Observable发出错误,请重新订阅它,希望它能完成而不会出错
retryWhen(?)- 如果源Observable发出错误,请将该错误传递给另一个Observable以确定是否重新订阅源
我尝试retry()了例子,但它无限期地在错误之后挂起我的进程.
我也试过,onErrorResumeNext()但它没有按预期工作:
val backupSubject = PublishSubject.create<String>()
val subject = PublishSubject.create<String>()
var currentSubject = subject
subject.onErrorResumeNext(backupSubject).subscribe({
println("next: $it")
}, {
println("error")
currentSubject = backupSubject
}, {
println("complete")
})
backupSubject.subscribe({
println("backup")
}, {
println("backup error")
})
currentSubject.onNext("foo")
currentSubject.onNext("bar") …Run Code Online (Sandbox Code Playgroud) java ×7
kotlin ×2
amazon-rds ×1
amazon-vpc ×1
clojure ×1
concurrency ×1
css ×1
filesystems ×1
hibernate ×1
html ×1
leiningen ×1
linux ×1
maven ×1
reification ×1
rx-java2 ×1
seo ×1