我们在Google Play商店中使用测试阶段.对于应用程序端强制更新功能,我们希望检测我们的应用程序是来自测试阶段还是来自Google Play商店的生产阶段.这在Android应用程序中是否可行?
在我们在Jdk 8上运行的应用程序中,我们使用VisualVM来跟踪加载类的使用情况和元空间的使用情况.
在我们的应用程序运行的某个时间点,我们看到加载的类的数量不再增加,但是在我们的程序运行时,元空间的大小仍然增加.那么除了类之外还有哪些东西存储在元空间中,这可能会导致这种情况呢?
我们构建了一个自定义Kafka Connect接收器,后者又调用远程REST API.如何将背压传播到Kafka Connect基础架构,因此在远程系统比内部消费者向put()传递消息的速度慢的情况下,调用put()的频率较低?Kafka连接文档说我们不应该在put()中阻塞,而是在flush()中阻塞.但是put()中没有阻塞意味着我们必须缓冲数据,如果put()被调用的频率高于flush(),那么在某些时候肯定会导致OOM异常.我已经看到允许kafka使用者在循环()中调用pause()或阻塞.是否有可能在卡夫卡连接接收器中利用它?
在Mockito Mocks(Matchers)中使用Scala的值类会导致NullPointerException,请参阅以下示例:
import org.scalatest.FunSuite
import org.scalatest.mock.MockitoSugar._
import org.mockito.{Matchers, Mockito}
class Id(val underlying: Int) extends AnyVal
class MockitoValueClassSuite extends FunSuite {
trait Sample {
def doIt(id: Id) : Int
}
test("Check value classes in scala with mockito") {
val sampleMock = mock[Sample]
val id = new Id(1)
Mockito.when(sampleMock.doIt(Matchers.eq(id))).thenReturn(5)
assert(sampleMock.doIt(id) == 5)
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
java.lang.NullPointerException was thrown.
java.lang.NullPointerException
at net.gutefrage.service.user.service.MockitoValueClassSuite$$anonfun$1.apply$mcV$sp(MockitoValueClassSuite.scala:21)
at net.gutefrage.service.user.service.MockitoValueClassSuite$$anonfun$1.apply(MockitoValueClassSuite.scala:16)
at net.gutefrage.service.user.service.MockitoValueClassSuite$$anonfun$1.apply(MockitoValueClassSuite.scala:16)
at org.scalatest.Transformer$$anonfun$apply$1.apply(Transformer.scala:22)
Run Code Online (Sandbox Code Playgroud)
有什么提示可以在这做什么?
我们有一些模式匹配代码,我们期望编译器警告匹配并非详尽无遗,但我们得不到.是否存在无法进行详尽检查的情况?
例如我们的例子(使用scalactic Good + Bad):
(maybeModelIdOrFailure, maybeMake) match {
case (Some(Good(modelId)), Some(makeId)) if modelId >= 0 && taxonomyService.isValidModel(makeId, modelId) =>
Good(Some(MakeModelParameters(makeId, Some(modelId), modelLineId = None, index)))
case (Some(Good(modelLineId)), Some(makeId)) if modelLineId < 0 && taxonomyService.isValidModelLine(makeId, -1 * modelLineId) =>
Good(Some(MakeModelParameters(makeId, modelId = None, modelLineId = Some(-1 * modelLineId), index)))
case (Some(Good(modelOrModelLineId)), Some(makeId)) =>
Bad(One(IdNotFound(modelIdKeyName, modelOrModelLineId)))
case (Some(Good(modelId)), None) if modelId >= 0 =>
Bad(One(IdInvalid(modelIdKeyName, "Model Id without Make Id")))
case (Some(Good(modelLineId)), None) if modelLineId < 0 =>
Bad(One(IdInvalid(modelIdKeyName, "Model Line …Run Code Online (Sandbox Code Playgroud) 我们都知道泛型类型在Java和Scala下受类型擦除的影响.但是我们使用Jackson和Scala Jackson Module在Scala中遇到了一个奇怪的问题.
我创建了一个小测试来显示问题.
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
object GenericTest {
case class TestWithInt(id: Option[Int])
case class TestWithInteger(id: Option[Integer])
def main(args: Array[String]) {
val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)
// Test with scala's Int
val test = mapper.readValue[TestWithInt]("""{ "id" : 5 }""", classOf[TestWithInt])
print("Test 1: ")
println(test.id.get + 1)
val test2 = mapper.readValue[TestWithInt]("""{ "id" : "5" }""", classOf[TestWithInt])
print("Test 2: ")
try {
println(test2.id.get + 1)
} catch {
case e: ClassCastException => println(e.getMessage)
}
// Test with java.lang.Integer
val …Run Code Online (Sandbox Code Playgroud) 我使用 Scala 的 Avro 的 Java API,想知道是否有一种简单的编程方法可以使用 Avro GenericRecord / SchemaBuilder API 将字段添加到现有记录模式?
是否可以在预编译的Slick查询中将集合用作参数?
就像是:
private val findByIds = for {
ids <- Parameters[Set[Int]]
meta <- AssetMetadatas if meta.id inSet ids
} yield meta
Run Code Online (Sandbox Code Playgroud)
不幸的是上面没有编译:
不知道如何拆开scala.collection.immutable.Set [INT]到scala.collection.immutable.Set [INT]和包装,以任何IDS < - 参数[设置[INT]] ^
如何指定我需要例如ClassTag和T的订购?
例
def sort[T: ClassTag <and> Ordering](future: Future[Seq[T]]): Future[Seq[T]]
我们正在编写一个自定义接收器连接器,用于将带有avro消息的主题内容写入CEPH存储.
为此,我们提供了SinkRecords,它具有Kafka Connect架构,它是我们的avro架构的映射版本.由于我们要将avro写入CEPH,因此我们使用connect API方法将Connect架构转换回Avro.为什么我们需要这样做?引入Kafka Connect Schema而不使用更常用的Avro Schema有什么好处?
仅供参考:我问这个是因为我们与Avro工会有一些问题.他们与Kafka Connect Schema的映射仍存在一些问题,例如https://github.com/confluentinc/schema-registry/commit/31648f0d34b10c1b36e8ec6f4c1236ed3fe86495#diff-0a8d4f17f8d4a68f2f0d2dcd9211df84
avro apache-kafka apache-kafka-connect confluent-schema-registry
我们有一个MySQL表,其中包含几个布尔列,用于指定用户可能拥有的角色.是否可以使用光滑的提升嵌入来编写一个类型映射器,它将这些多个列组合并转换为案例类中的一个字段用户,如下所示?
case class User(id: Option[Int], nickname: String, role: Seq[Role.Role])
object Users extends Table[(User)]("ask_user") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def nickname = column[String]("nickname")
def is_editor = column[Boolean]("is_editor")
def is_moderator = column[Boolean]("is_moderator")
def is_administrator = column[Boolean]("is_administrator")
def is_usermoderator = column[Boolean]("is_usermoderator")
def is_usermoderator2 = column[Boolean]("is_usermoderator2")
def is_partner = column[Boolean]("is_partner")
def is_premium_partner = column[Boolean]("is_premium_partner")
def is_corporate_paid = column[Boolean]("is_corporate_paid")
}
Run Code Online (Sandbox Code Playgroud) 如何确定对象是否为值类类型,以便在下面的示例中测试将打印出id是AnyVal?
class MyId(val underlying: Int) extends AnyVal
class AnyValSuite extends FunSuite {
class Sample {
def doIt[T](t: T)(implicit tag: TypeTag[T]): Unit = {
if(???) println(s"$t is an AnyVal")
}
}
test("Getting info if a type is a value class") {
new Sample().doIt(new MyId(1))
}
}
Run Code Online (Sandbox Code Playgroud)
@senia:谢谢你的回答.工作完美.是否也可以找出Value类包装的原始类型?
现在扩展示例:
class MyId(val underlying: Int) extends AnyVal
class NonAnyValId(val underlying: Int)
class AnyValSuite extends FunSuite {
class Sample {
def doIt[T](t: T)(implicit tag: TypeTag[T]): Unit = {
if(implicitly[TypeTag[T]].tpe <:< typeOf[AnyVal]) println(s"$t is an AnyVal") …Run Code Online (Sandbox Code Playgroud)