小编Mar*_*k D的帖子

即使使用slf4j,你应该保护你的日志吗?

在这里帮我辩论.. :)

这里的slf4j站点http://www.slf4j.org/faq.html#logging_performance表示由于参数化日志记录,不需要日志记录保护.即不是写作:

if(logger.isDebugEnabled()) {
  logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
}
Run Code Online (Sandbox Code Playgroud)

你可以逃脱:

Object entry = new SomeObject();
logger.debug("The entry is {}.", entry);
Run Code Online (Sandbox Code Playgroud)

这真的没问题,或者它是否会产生(虽然更低)创建传递给trace方法的静态字符串的成本..?

java performance logging slf4j

34
推荐指数
3
解决办法
2万
查看次数

如何在Avro中将GenericRecord转换为SpecificRecord以获得兼容的模式

Avro SpecificRecord(即生成的java类)是否与模式演变兼容?即如果我有Avro消息来源(在我的情况下,kafka)并且我想将这些消息反序列化为特定记录,是否可以安全地进行?

我所看到的:

  • 在模式的末尾添加一个字段工作正常 - 可以反序列化ok到specificrecord
  • 向中间添加字段不会 - 即打破现有客户端

即使消息兼容,这也是一个问题.

如果我可以找到新的模式(使用例如汇合模式注册表),我可以反序列化为GenericRecord,但似乎没有办法从genericrecord映射到不同模式的specificrecord.

MySpecificType message = (T SpecificData.get().deepCopy(MySpecificType.SCHEMA$, genericMessage);
Run Code Online (Sandbox Code Playgroud)

在各个地方都提到了Deepcopy,但它使用了索引,所以不起作用..

当你有两个模式并且它们兼容时,有没有安全的方法在两个avro对象之间进行映射?即使我可以从genercrecord映射到genericrecord,这样我也可以使用deepcopy技巧来完成这项工作.

java avro

9
推荐指数
1
解决办法
8342
查看次数

C#泛型 - 可以用n个泛型类型创建一个方法..?

我不认为这是可能的,但这里......

我想添加可以处理泛型的数字的方法.例如 :

bool<T> MyMethod() where T: Isomething
{
}
Run Code Online (Sandbox Code Playgroud)

将适用于一种类型

bool<T,K> MyMethod() where T: Isomething
{
}
Run Code Online (Sandbox Code Playgroud)

将适用于两种类型

有没有办法处理n种类型 - 例如

bool<T[]> MyMethod() where T: Isomething
{
}
Run Code Online (Sandbox Code Playgroud)

我想要这样做的原因是实现一个静态的nhibernate辅助方法,它可以从多个程序集加载 - 现在它适用于一个程序集.我目前的方法如下所示:

        public static ISessionFactory GetMySqlSessionFactory<T>(string connectionString, bool BuildSchema)
    {
        //configuring is meant to be costly so just do it once for each db and store statically
        if (!AllFactories.ContainsKey(connectionString))
        {
            var configuration =
            Fluently.Configure()
            .Database(MySQLConfiguration.Standard
                      .ConnectionString(connectionString)
                      .ShowSql() //for development/debug only..
                      .UseOuterJoin()
                      .QuerySubstitutions("true 1, false 0, yes 'Y', no 'N'"))
            .Mappings(m …
Run Code Online (Sandbox Code Playgroud)

.net c# generics nhibernate

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

扩展Spring Boot WebMvcConfigurationSupport时出现静态资源问题

我扩展了WebMvcConfigurationSupport以实现api版本控制方案 - 即

@Configuration
public class ApiVersionConfiguration extends WebMvcConfigurationSupport {

    @Override
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        return new ApiVersionRequestMappingHandlerMapping(readDateToVersionMap());
    }}
Run Code Online (Sandbox Code Playgroud)

这使用自定义处理程序映射来对api进行版本化并且工作得非常好.

但是它似乎也禁用了@EnableAutoConfiguration bean,因此现在不提供静态资源(如本问题所述,是否可以扩展WebMvcConfigurationSupport并使用WebMvcAutoConfiguration?).

好吧,我想,让我们在上面的类中添加一个资源处理程序 - 即

@Configuration
public class ApiVersionConfiguration extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("classpath:/public/").addResourceLocations("/");
    }

    @Override
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        return new ApiVersionRequestMappingHandlerMapping(readDateToVersionMap());
    }}
Run Code Online (Sandbox Code Playgroud)

但是..这不起作用..?当我浏览到/index.html时出现此错误:

No mapping found for HTTP request with URI [/index.html] in DispatcherServlet with name 'dispatcherServlet' 
Run Code Online (Sandbox Code Playgroud)

..如果我禁用这个类,那么这些资源可以通过@EnableAutoConfiguration magic来提供.

我一直在玩各种选项来提供静态内容,扩展了WebMvcConfigurationSupport,但迄今为止没有成功.

有任何想法吗?

resources static spring-boot

3
推荐指数
1
解决办法
1334
查看次数

标签 统计

java ×2

.net ×1

avro ×1

c# ×1

generics ×1

logging ×1

nhibernate ×1

performance ×1

resources ×1

slf4j ×1

spring-boot ×1

static ×1