小编Paw*_*lov的帖子

What's the difference between gradlewAssembleRelease, gradlewInstallRelease, and gradlew bundleRelease and when to use which?

When I want to upload an Android application to the Play Store, which one should I use?

I have tried the above but I am still confused about which one is the most effective?

./gradlew assembleRelease
./gradlew installRelease
./gradlew bundleRelease
Run Code Online (Sandbox Code Playgroud)

I expect the best way to do the above.

java android kotlin react-native

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

跨源 iframe 中的 JavaScript 对话框 alert()、confirm() 和 prompt() 不再起作用

应用程序脚本 Web 应用程序在<iframe>. Chrome 似乎不再支持alert(), confirm(), 在 web app 上推广这些功能。

有什么解决方法吗?

  • Chrome 版本 92.0.4515.107 (Official Build) (64-bit) -- 不工作
  • Edge 版本 91.0.864.71(官方版本)(64 位)——有效

试图替换alert()window.alert(),但仍然无法正常工作。

exec:1 一个不同的源子框架试图创建一个 JavaScript 对话框。这不再被允许并被阻止。有关更多详细信息,请参阅https://www.chromestatus.com/feature/5148698084376576

javascript confirm alert google-chrome prompt

24
推荐指数
1
解决办法
7818
查看次数

mongodb:upserting:仅在插入文档时设置值

考虑一个简单的mongo文档结构:

{_ id,firstTime,lastTime}

客户端需要插入具有已知ID的文档,或更新现有文档.'lastTime'应始终设置为某个最新时间.对于'firstTime',如果正在插入文档,则应将'firstTime'设置为当前时间.但是,如果已创建文档,则"firstTime"保持不变.我想纯粹用upserts(以避免仰视)来做.

我已经抓取了http://www.mongodb.org/display/DOCS/Updating,但我不知道如何完成特定的操作.

我不相信这是不合理的,有$ push和$ addToSet操作可以在数组字段上有效地执行此操作,只是在简单字段上没有任何相同的操作.这就像应该有$ setIf操作.

mongodb

20
推荐指数
1
解决办法
6647
查看次数

Java堆被无法访问的对象所淹没

我们已经开始在Java EE应用程序中遇到一些严重问题.具体来说,应用程序在启动后几分钟内运行高达99%的旧代堆.没有抛出任何OOM,但有效的是JVM没有响应.jstat显示老一代的大小根本没有减少,没有垃圾收集,kill -3说:

Heap
 PSYoungGen      total 682688K, used 506415K [0xc1840000, 0xf3840000, 0xf3840000)
  eden space 546176K, 92% used [0xc1840000,0xe06cd020,0xe2da0000)
  from space 136512K, 0% used [0xe2da0000,0xe2da0000,0xeb2f0000)
  to   space 136512K, 0% used [0xeb2f0000,0xeb2f0000,0xf3840000)
 PSOldGen        total 1536000K, used 1535999K [0x63c40000, 0xc1840000, 0xc1840000)
  object space 1536000K, 99% used [0x63c40000,0xc183fff8,0xc1840000)
Run Code Online (Sandbox Code Playgroud)

VM选项包括:

-Xmx2300m -Xms2300m -XX:NewSize=800m -XX:MaxNewSize=800m -XX:SurvivorRatio=4 -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+UseParallelGC -XX:ParallelGCThreads=4 
Run Code Online (Sandbox Code Playgroud)

(我改为拥有2300m堆/ 1800m新发,试图解决问题)

一旦JVM达到"内存不足"状态(永远占用),我就接受了JVM的堆转储,并在其上运行Eclipse Memory Analyzer.

结果很有趣.各种对象占用大约200Mb(有一些比其他对象更多),但其余的,1.9Gb都无法访问(可能值得注意的是,大多数被GSON对象占用,但我认为不是任何事物的指示,只表示我们在服务器运行期间通过大量的GSON对象流失).

有关为什么VM有这么多无法访问的对象的任何解释,并且根本无法收集它们?

JVM:

$ /0/bin/java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) Server VM (build 20.12-b01, …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection jvm

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

如何从另一个Android应用程序启动Android服务

我在从另一个Android应用程序(API 17)启动服务时遇到问题.但是,如果我从shell运行'am',服务就会正常运行.

# am startservice com.xxx.yyy/.SyncService
Starting service: Intent { act=android.intent.action.MAIN cat=
[android.intent.category.LAUNCHER] cmp=com.xxx.yyy/.SyncService }
(service starts fine at this point)
# am to-intent-uri com.xxx.yyy/.SyncService
intent:#Intent;action=android.intent.action.MAIN;
category=android.intent.category.LAUNCHER;
component=com.xxx.yyy/.SyncService;end
Run Code Online (Sandbox Code Playgroud)

所以,当我在代码中执行相同操作时,看起来我并没有遗漏任何意图:

Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.setComponent(new ComponentName("com.xxx.yyy", ".SyncService"));
ComponentName c = ctx.startService(i);
if (c == null) { Log.e(TAG, "failed to start with "+i); }
Run Code Online (Sandbox Code Playgroud)

我得到的是(该服务当时没有运行):

E/tag( 4026): failed to start with Intent { 
act=android.intent.action.MAIN 
cat=[android.intent.category.LAUNCHER] 
cmp=com.xxx.yyy/.SyncService }
Run Code Online (Sandbox Code Playgroud)

我没有关于服务的意图过滤器,我不想设置一个,我真的想要了解我做错了什么,通过它的组件名称启动它,或者什么可能使它不可能这样做.

android android-intent

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

如何在Java 8中以相反的顺序从列表中获取有序流

是否有一种理智的方式从列表中获取有序流(具体来说,数组列表,但它应该无关紧要)流式元素与它们在原始列表中的方式相反?

我正在寻找一种不涉及缓冲数据的解决方案(收集器,另一个列表,数组等,因为它们复制了浪费的容器),或者使用Collections.reverse(因为它修改了列表).

到目前为止,我在这里看到的最干净的方法之一是实现我自己的版本的SpliteratorORDERED和在列表中反向前进,或实施Iterator反向迭代是,并使用Spliterators.spliteratorUnknownSize(iterator,ORDERED)它.

注意这个问题不同于Java 8流逆序:其他问题询问如何反转流(一般情况下这是不可能的),并且答案提供了以某种方式反转源(我不想这样做),然后传输反向源.逆转源的成本是O(N),如果可能的话我想完全避免它.

java java-8 java-stream

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

无法连接到Linux"抽象"unix socket

我正在尝试使用UNIX套接字进行线程间通信.该程序仅适用于在Linux上运行.为了避免创建套接字文件,我想使用"抽象"套接字,如unix(7)中所述.

但是,我似乎无法连接到这些套接字.但是,如果我使用"pathname"套接字,一切都会正常工作.

这是代码(我没有引用任何错误处理,但它已经完成):线程#1:

int log_socket = socket(AF_LOCAL, SOCK_STREAM, 0);
struct sockaddr_un logaddr;
socklen_t sun_len = sizeof(struct sockaddr_un);
logaddr.sun_family = AF_UNIX;
logaddr.sun_path[0] = 0;
strcpy(logaddr.sun_path+1, "futurama");
bind(log_socket, &logaddr, sun_len);
listen(log_socket, 5);
accept(log_socket, &logaddr, &sun_len);
... // send - receive
Run Code Online (Sandbox Code Playgroud)

线#2:

struct sockaddr_un tolog;
int sock = socket(AF_LOCAL, SOCK_STREAM, 0);
tolog.sun_family = AF_UNIX;
tolog.sun_path[0] = 0;
strcpy(tolog.sun_path+1, "futurama");
connect(sock, (struct sockaddr*)&tolog, sizeof(struct sockaddr_un));
Run Code Online (Sandbox Code Playgroud)

如果我在上面的代码中所做的只是将sun_path更改为没有前导\ 0,那么事情就完美了.

strace输出:

t1: socket(PF_FILE, SOCK_STREAM, 0)         = 0
t1: bind(0, {sa_family=AF_FILE, path=@"futurama"}, 110)
t1: listen(0, 5)
t2: socket(PF_FILE, …
Run Code Online (Sandbox Code Playgroud)

linux unix-socket

10
推荐指数
1
解决办法
9955
查看次数

如何让 Maven 在从命令行执行依赖插件时使用凭据

我有一个私有 Maven 存储库。它在项目的pom.xml中定义

    <repository>
        <id>some.id</id>
        <url>https://some.host/artifactory/some.id</url>
    </repository>
Run Code Online (Sandbox Code Playgroud)

在我的中~/.m2/settings.xml,我有正确的身份验证块:

    <server>
        <id>some.id</id>
        <username>pawel.veselov@domain.com</username>
        <password>{some-fancy-password-hash-goes-here}</password>
    </server>
Run Code Online (Sandbox Code Playgroud)

构建项目时,Maven 能够毫无问题地访问存储库,正如它应该的那样。在调试输出中,我可以看到它应用了凭据。

但是当我尝试直接下载工件时,Maven 似乎根本没有考虑设置文件。

mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get \
  -DremoteRepositories=some.id::::https://some.host/artifactory/some.id \
  -Dartifact=groupId:artifactId:1.1.1
Run Code Online (Sandbox Code Playgroud)

不传输用户名。我可以在调试输出中看到,调用时BasicRepositoryConnector没有用户名/密码组合。

所以问题是 - 是否可以调用一个插件,以便执行任何使 Maven 考虑使用其设置文件中声明的身份验证的过程?

maven maven-dependency-plugin

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

Kotlin:[内部错误] java.lang.NoClassDefFoundError:无法初始化类 com.intellij.pom.java.LanguageLevel

我刚刚写的

fun main() {
    println("Hello World")
}
Run Code Online (Sandbox Code Playgroud)

但是Project\src\HelloWorld.kt ,我遇到了这个错误:java.lang.NoClassDefFoundError。我想知道为什么它不起作用,因为我看到相同的打印代码运行。

我该如何解决这个错误?以下是错误内容。

Kotlin: [Internal Error] java.lang.NoClassDefFoundError: Could not initialize class com.intellij.pom.java.LanguageLevel
    at com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
    at com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:226)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:152)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
    at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1500)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
    at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
    at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:691)
    at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea kotlin

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

用于 JSON Web 加密的 mime 类型是什么

查看RFC 7515RFC 7516,我试图了解 JWE 的正确 mime 类型应该是什么。看起来 JWE 和 JWS 共享 JOSE 标头信息,并且 JWS 将其 mime 类型定义为application/jose. JWE 没有明确的媒体类型信息。但由于名称是“jose”并且都使用 JOSE 标头,我假设两者应该使用相同的 mime 类型(也因为 JOSE 代表...签名和加密)。

在这种情况下,如何区分签名和/或加密的消息?按财产价值alg?或者通过财产的存在/价值enc

总结一下:

  1. “application/jose”是用于 JWE 的 mime 类型吗?如果不是,那么应该是什么?
  2. 如果是,如何可靠地区分 JWE 和 JWS 消息?

json rfc mime-types jwe

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