小编veg*_*dio的帖子

使自定义发布者在 Swift Combine 上的不同 DispatchQueue 上运行

我创建了一个函数,该函数使用以下代码在 Swift Combine 中返回一个自定义发布者:

func customPubliher() -> AnyPublisher<Bool, Never> {
    return Future<Bool, Never> { promise in
        promise(.success(true))
    }.eraseToAnyPublisher()
}
Run Code Online (Sandbox Code Playgroud)

然后我使用以下代码订阅了这个发布者:

customPublisher()
    .subscribe(on: DispatchQueue.global())
    .map { _ in
        print(Thread.isMainThread)
    }
    .sink(receiveCompletion: { _ in }, receiveValue: { value in
        // Do something with the value received
    }).store(in: &disposables)
Run Code Online (Sandbox Code Playgroud)

但是,即使我说行.subscribe(on: DispatchQueue.global()),当我做了申购,代码不是在不同的队列(已执行print.map产出如此)。

但是,例如,如果我将自定义发布者替换为一个内置的 Combine 发布者Just()(见下文),则相同的代码将在不同的队列上正常执行:

Just(true)
    .subscribe(on: DispatchQueue.global())
    .map { _ in
        print(Thread.isMainThread)
    }
    .sink(receiveCompletion: { _ in }, receiveValue: { value in …
Run Code Online (Sandbox Code Playgroud)

ios swift combine

14
推荐指数
2
解决办法
3221
查看次数

用Java解压缩GZIP字符串

可能重复:
如何解压缩字节数组中的gzip压缩数据?

我有一个Gzip字节数组,我只想解压缩它并打印输出.它是这样的:

byte[] gzip = getGZIPByteArray();

/* Code do uncompress the GZIP */

System.out.print(uncompressedGZIP);
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我处理中间的代码吗?

java

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

Spring Boot不适用于JBoss

我正在盯着Spring Boot,我试图创建网站上提供的示例(http://projects.spring.io/spring-boot/#quick-start).当我将示例作为独立应用程序(.jar)运行并在我的Tomcat服务器中作为Web应用程序(.war)运行时,一切正常.

但是当我将同样在Tomcat上工作的.war文件移动到JBoss 7.1服务器上时,它就不再起作用了.我收到这个错误:

Error calling onStartup for servlet container initializer: org.springframework.web.SpringServletContainerInitializer: java.lang.NoSuchMethodError: org.slf4j.bridge.SLF4JBridgeHandler.removeHandlersForRootLogger()V
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样.我google'd但找不到任何与Spring Boot相关的东西.有人可以帮帮我吗?完整的堆栈跟踪如下.提前致谢!

13:43:10,009 WARN  [org.jboss.as.ee] (MSC service thread 1-3) JBAS011006: Not installing optional component org.springframework.http.server.ServletServerHttpAsyncRequestControl due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.springframework.http.server.ServletServerHttpAsyncRequestControl
    at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)
    at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_10-ea]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_10-ea]
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_10-ea]

13:43:10,014 WARN  [org.jboss.as.ee] (MSC service thread 1-3) JBAS011006: Not installing …
Run Code Online (Sandbox Code Playgroud)

java jboss spring-boot

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

如果类是使用 Kotlin 创建的,则无法调试我的 Android 库

我创建了一个最初使用 Java 编码的 Android 库,它输出一个.aar我在一些项目中使用的文件。

当我将此库包含在项目(使用 Kotlin 创建的 Android 项目)中并且决定调试该项目中的代码时,当调试器到达包含库的类的行时,它会成功进入该类,并且我可以看到源代码当我调试该类的代码时。我可以在库的类中继续逐行调试,一切都按预期工作。

然而,我最近决定将此库转换为 Kotlin,但现在,当调试器到达该库的类之一并且我进入该类继续在那里调试时,我无法再看到整个源代码。我只能看到方法签名,但看不到方法定义。我只看到类似的东西:

public class ClassA {
    public fun function1(): kotlin.Unit

    public fun function2(): kotlin.Unit

    public fun function3(): kotlin.Unit
}
Run Code Online (Sandbox Code Playgroud)

我没有在库的项目设置中做任何其他事情。我只是将文件从 转换.java.kt.

到目前为止,我尝试过以下一些方法来解决此问题:

  • 我确认我将 Kotlin 的标准库包含在build.gradle库中文件的依赖项列表中。
  • 我禁用了 ProGuard(这从来都不是问题,但我将其删除以防万一)。
  • 我禁用了代码缩小(这也从来都不是问题,但此时我愿意尝试任何事情)。

任何人都知道为什么会发生这种情况?

java android kotlin aar

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

Apple Pay 应用内配置的设备选择

我在一家金融科技公司工作,该公司在我们的卡中提供对 Apple Pay 的支持,即我们的用户可以选择使用我们的应用程序(应用程序内配置)将他们的卡添加到 Apple Pay。我们公司已经从 Apple 获得了适当的应用内配置权利,并且整个应用内配置流程正在按预期进行。

当用户点击我们应用程序中的“添加到 Apple Wallet”按钮来配置他的卡时,我们将调用以下代码:

let config = PKAddPaymentPassRequestConfiguration()
config.cardholderName = "\(firstName) \(lastName)"
config.localizedDescription = "MyApp Card"
config.primaryAccountSuffix = String(cardSuffix)
config.paymentNetwork = .visa

// Present the Apple Pay ViewController
let controller = PKAddPaymentPassViewController(requestConfiguration: config, delegate: self)
UIApplication.shared.delegate?.window??.rootViewController?.present(controller!, animated: true)
Run Code Online (Sandbox Code Playgroud)

如果用户已配对 Apple Watch,则会出现一个屏幕,要求他选择要在哪个设备上添加卡:在 iPhone 上还是在 Apple Watch 上(请参阅随附的屏幕截图)。用户选择设备后,配置过程将按预期成功继续。

但是,如果用户点击“添加到 Apple 钱包”按钮,并且他已经将卡添加到其中一台设备(例如 Apple Watch),那么上面的代码将再次被调用,但他会再次受到欢迎同一屏幕要求他选择要在 iPhone 或 Apple Watch 上添加该卡的设备,即使该卡已添加到 Apple Watch 上。

据我了解,由于该卡已添加到 Apple Watch 上,因此只有 iPhone 应该显示为添加该卡的有效选项。

在上面的代码中我还需要做些什么来确保只有可用的设备(我的意思是,只有尚未在 Apple Pay 上添加该卡的设备)才会在设备选择中列出?

ios swift applepay

4
推荐指数
1
解决办法
934
查看次数

标签 统计

java ×3

ios ×2

swift ×2

aar ×1

android ×1

applepay ×1

combine ×1

jboss ×1

kotlin ×1

spring-boot ×1