小编Ada*_*old的帖子

如何在Kotlin的实例字段中存储已知类型的数据?

我正在为一个库编写一个DSL,我想使用这样的具体类型参数提供类型元数据:

    val config = Config.create()
            .consumerFor<MyType>{
              // consume
            }
Run Code Online (Sandbox Code Playgroud)

我的问题是我只能reifiedinline函数和函数中使用关键字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类型参数.这有解决方法吗?

java reification kotlin

6
推荐指数
1
解决办法
508
查看次数

如何将我的 AppRunner 实例连接到 RDS?

我已使用建议的默认值配置了 RDS,并且没有公共访问权限。

然后,我通过创建 VPC 连接器将 AppRunner 实例放入与 RDS 相同的安全组中。我可以看到两侧列出了相同的 VPC 和子网,但不知为何我仍然无法连接到 RDS(我的 AppRunner 实例无法连接)。我究竟做错了什么?把它们放在同一个安全组和VPC中还不够吗?

amazon-web-services amazon-rds amazon-vpc

6
推荐指数
0
解决办法
244
查看次数

用span标签效果seo打破一个单词

我想知道是否打破一个带有span标签的单词来改变第一个字母的字体大小,会影响谷歌机器人读取这个单词的能力吗?受此影响的词语是关键词.

html css seo

5
推荐指数
2
解决办法
2882
查看次数

寻找一个java代码生成库

什么是"好"的java代码生成库?我在JaxMe中找到了一代人,但它很穷而且年老.我喜欢通过java代码生成java代码.所以基本上使用一个lib告诉它必须生成一个具体的类或接口与X字段,Y方法等,然后写入文件系统..我知道框架使用它们,但找不到一个独立的lib .. - Ed

java code-generation

5
推荐指数
1
解决办法
5117
查看次数

如何配置leiningen的maven用法?

我的问题是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有某种冲突.

clojure maven leiningen

5
推荐指数
1
解决办法
2061
查看次数

现场注射 - 这是一个坏习惯吗?

我和我的同事现在有几个星期有争议.我想听听社区对此的看法.

我们在申请中使用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)

这里的代码可能很长.考虑到数据绑定和其他主题,第二个代码可以变得更长,而我的方法只是另一个注释.

我的理由是:

  1. 配置所有组件的行为和外观的中心位置
  2. 代码重用
  3. 性能 - 在长时间运行的应用程序中,组件的初始化代码变得"热",jit对其进行更多优化.
  4. 更具可读性.

他的理由是:

  1. 可读性
  2. 视图代码不会遍布整个地方.
  3. 该课程没有DI
  4. 依赖注入的灵活性被高估,特别是如果注入具体类.
  5. 使用DI的唯一有效方法是构造函数注入.

但是,我还阅读了福勒的一些文章,他说,定位注射(用场注射替代)是一个糟糕的设计决定.但是在其他项目中没有重用的视图呢?

Field Injection是一个糟糕的设计吗?或者上面介绍的另一种方式更优雅?

亲切的问候基督徒

PS:我知道讨论只是基于意见而开始,但这是一个长期持续的讨论(setter vs constructor injection),这可能是值得放手的.

java dependency-injection

5
推荐指数
1
解决办法
2094
查看次数

为什么我的二级缓存实现会出错?

我试图在我的应用程序上实现二级缓存,但它返回以下错误.我对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)

java hibernate

5
推荐指数
1
解决办法
8697
查看次数

为什么ConcurrentHashMap.Segment和ConcurrentHashMap.HashEntry类是静态的?

为什么ConcurrentHashMap.SegmentConcurrentHashMap.HashEntry类是静态的?为什么这样设计?

java concurrency design-patterns

5
推荐指数
2
解决办法
429
查看次数

从Linux文件系统读取文件的时间复杂度是多少?

假设我的100.000文件系统中有很多目录(比方说),并且每个目录中都有相似数量的目录.每个目录可以包含任意数量的文件,但通常不会超过几个.该结构变为恒定深度(10).

我的问题是,如果我从这个目录结构中读取一个文件,那么时间复杂度(在读取操作中)是否存在差异:/dir-34/dir-215/dir-345/file1使用Paths.get() 与从这样的简单文件系统读取文件相比:

/dir1
  /dir2
  /dir3
    file1
  /dir4
    file2
Run Code Online (Sandbox Code Playgroud)

注意:这只是一个理论问题我只想知道我尝试打开文件的目录中的目录/文件数是否对读取操作的速度有任何影响.

java linux filesystems

5
推荐指数
1
解决办法
2336
查看次数

如何在RxJava 2中发生错误后继续处理?

我有一个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 kotlin rx-java2

5
推荐指数
1
解决办法
2522
查看次数