我的应用程序首次安装到手机上后显示以下警告(仅在 Android 14 中):
This app isn't compatible with the latest version of Android.
check for an update or contact the app's developer.
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能解决这个警告?以及我应该如何调试我的代码以找到问题。
我升级了应用程序库并检查了清单文件是否与 Android 14 存在任何冲突。
这是我的 build.gradle 文件
apply plugin: 'com.android.application'
//repositories {
// mavenCentral()
// google()
// maven {
// url "https://linphone.org/maven_repository"
// }
//}
configurations {
compile.exclude module: 'support-v4'
}
configurations.all {
// exclude group: 'com.google.firebase', module: 'firebase-core'
exclude group: 'androidx.recyclerview', module: 'recyclerview'
}
dependencies {
implementation 'androidx.core:core:1.10.1'
implementation 'androidx.palette:palette:1.0.0'
implementation 'androidx.exifinterface:exifinterface:1.3.7'
implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0'
implementation …Run Code Online (Sandbox Code Playgroud) 为什么两个结果打印出来是一样的?
final list1 = [ "a", "b", "c" ];
final result1 = true ? list1 : list1..removeWhere((e) => e == "a");
print(result1); // prints ["b", "c"]
final list2 = [ "a", "b", "c" ];
final result2 = false ? list2 : list2..removeWhere((e) => e == "a");
print(result2); // prints ["b", "c"]
Run Code Online (Sandbox Code Playgroud)
这种情况仅发生在三元条件下。当在正常的 if-else 中时,这工作得很好。
我想使用 dt1 中变量的条件合并两个 data.table。请参见以下示例:
\nlibrary(data.table)\n\n# Example data tables\ndt1 <- data.table(id = 1:5, var1 = c(1, 0, 1, 0, 1), name1 = c("A", "B", "C", "D", "E"))\ndt2 <- data.table(name2 = c("A", "B", "C", "D", "E"), other_var = 101:105)\nRun Code Online (Sandbox Code Playgroud)\n> dt1\n id var1 name1\n1: 1 1 A\n2: 2 0 B\n3: 3 1 C\n4: 4 0 D\n5: 5 1 E\n> dt2\n name2 other_var\n1: A 101\n2: B 102\n3: C 103\n4: D 104\n5: E 105\nRun Code Online (Sandbox Code Playgroud)\n我想做的是合并 dt1 和 dt2,这样只有当 dt1 中 var1 …
我在 Elixir 脚本中编写了一个模块 SC wget.exs,. 该模块SC 利用 Erlang 的操作系统模块来执行复杂的命令并将其输出打印在屏幕上。我在脚本中使用该模块一次下载多个包wget:
#!/usr/bin/env elixir\n\ndefmodule SC do\n def run(cmmnd) do\n output = :os.cmd(String.to_charlist(cmmnd)) \n IO.puts output\n end\nend\n\ndefmodule Downloader do\n def download_packages do\n lst_f_pckgs = "wget-list-sysv"\n\n #System.cmd("wget", ["https://www.linuxfromscratch.org/lfs/view/stable/#{lst_f_pckgs}"])\n SC.run("wget -c https://www.linuxfromscratch.org/lfs/view/stable/#{lst_f_pckgs}")\n \n {:ok, file_content} = File.read(lst_f_pckgs)\n arr_f_pckgs = String.split(file_content, ~r/\\s+/)\n\n tasks =\n arr_f_pckgs\n |> Enum.map(fn l ->\n #Task.async(fn -> System.cmd("wget", [l]) end)\n Task.async(fn -> SC.run("wget -c #{l}") end)\n end)\n\n tasks\n |> Enum.each(&Task.await/1)\n\n IO.puts "All of them are downloaded."\n …Run Code Online (Sandbox Code Playgroud) 在微控制器上,为了避免加载之前固件版本的设置,我还存储编译时间,在加载时检查该时间。
\n该微控制器项目是使用MikroElektronika 的“ mikroC PRO for ARM”构建的。
\n为了方便调试,我在PC上用minGW编写了代码,左右检查后,将其放入microC中。
\n使用该检查的代码无法正常工作。经过一晚令人沮丧的调试后,我发现sizeof("...")在两个平台上产生了不同的值,并因此导致缓冲区溢出。
但现在我不知道这是谁的错。
\n要重新创建问题,请使用以下代码:
\n#define SAVEFILECHECK_COMPILE_DATE __DATE__ " " __TIME__\n\nchar strA[sizeof(SAVEFILECHECK_COMPILE_DATE)];\nchar strB[] = SAVEFILECHECK_COMPILE_DATE;\n\nprintf("sizeof(#def): %d\\n", (int)sizeof(SAVEFILECHECK_COMPILE_DATE));\nprintf("sizeof(strA): %d\\n", (int)sizeof(strA));\nprintf("sizeof(strB): %d\\n", (int)sizeof(strB));\nRun Code Online (Sandbox Code Playgroud)\n在 MinGW 上它返回(如预期):
\n#define SAVEFILECHECK_COMPILE_DATE __DATE__ " " __TIME__\n\nchar strA[sizeof(SAVEFILECHECK_COMPILE_DATE)];\nchar strB[] = SAVEFILECHECK_COMPILE_DATE;\n\nprintf("sizeof(#def): %d\\n", (int)sizeof(SAVEFILECHECK_COMPILE_DATE));\nprintf("sizeof(strA): %d\\n", (int)sizeof(strA));\nprintf("sizeof(strB): %d\\n", (int)sizeof(strB));\nRun Code Online (Sandbox Code Playgroud)\n然而,在“mikroC PRO for ARM”上,它返回:
\nsizeof(#def): 21\nsizeof(strA): 21\nsizeof(strB): 21\nRun Code Online (Sandbox Code Playgroud)\n这种差异导致了缓冲区溢出(覆盖了指针 \xe2\x80\x93 的字节零)。
\n21 是我期望的答案:20 个字符和 \'\\0\' …
如何通过动态调度来表示一堆实现相同特征的不可变无状态单例?
类型/值在编译时不会被知道,因此需要虚拟方法。
理想情况下,所有值都形成可区分的联合,但我已经知道不可能在 Rust 中实现枚举值。
即相当于以下 Scala 代码:
sealed trait Kind {
def name(): String
}
object A extends Kind {
def name() = "A"
}
object B extends Kind {
def name() = "B"
}
def use(x: Kind) = {
println(s"Kind is ${x.name()}")
}
def main() = {
use(A)
}
Run Code Online (Sandbox Code Playgroud)
对于不了解 Scala 的人 - 上面的示例仅分配 2 个对象,然后传递一个引用(简单指针)。
我想出了这样的东西,但发现它很糟糕:
trait Kind {
fn name(&self) -> String;
}
struct A;
struct B;
impl Kind for A {
fn name(&self) -> String …Run Code Online (Sandbox Code Playgroud) 使用 C++23,我们可以漂亮地打印范围,目前在{fmt}. 例如,std::set格式为{},而序列容器如std::vector格式为[]。在内部,formatter类模板根据嵌套 typedef 的存在key_type(std::set有或std::vector没有)进行调度。
通过管道将 astd::set插入任何类型view都会删除key_typetypedef 并将其漂亮地打印为std::vector.
#include <ranges>
#include <set>
#include <fmt/ranges.h>
int main()
{
auto s = std::set<int>({ 2, 3, 5, 7 });
fmt::println("{}", s); // nice, formats as { 2, 3, 5, 7 }
fmt::println("{}", s | std::views::reverse); // meh, now uses [] instead of {}
fmt::println("{}", s | std::views::reverse …Run Code Online (Sandbox Code Playgroud) UPD:根据埃德·莫顿的回答,这个问题不仅仅与选项有关-E。
阅读 Brian W. Kernighan 和 Rob Pike 撰写的《Unix 编程环境》。
进行一项练习,应使用 查找单词列表中的所有回文grep -E。
我能够在网上找到并理解的最简洁的解决方案是
'^(.?)(.?)(.?)(.?)(.?).?\5\4\3\2\1$',它应该找到最多 11 个字符的所有回文。
For some reason though, grep in my terminal gives me results that I can't explain:
me@machine:~/test$ cat sample
a
ab
abba
abcdef
abcba
zufolo
me@machine:~/test$ grep -E '^(.?)(.?)(.?)(.?)(.?).?\5\4\3\2\1$' sample
a
abba
abcba
zufolo
me@machine:~/test$ grep -E '^(.?)(.?)(.?)(.?).?\4\3\2\1$' sample
a
abba
abcba
Run Code Online (Sandbox Code Playgroud)
Why would it add zufolo to the results (while not coloring any matches as …
在 ghci 终端中,允许进行以下变量赋值:
a = [2:x | x <- [1, 1, 1]]
Run Code Online (Sandbox Code Playgroud)
但是a打印的时候出现如下错误:
- No instance for (Num [Integer]) arising from a use of 'it'
- In the first argument of 'print', namely 'it'
- In a stmt of an interactive GHCi command: print it
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
我发现了一个奇怪的行为,我想知道我是否滥用了 JPA 或者它是否是 Spring 回归。
这是我的实体:
@Entity
public class Brand {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false)
@EqualsAndHashCode.Include
@Schema(description = "Brand's id", example = "1")
private Long id;
// ...
}
@Entity
public class Product {
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "product_brands", joinColumns = @JoinColumn(name = "product_id"),
inverseJoinColumns = @JoinColumn(name = "brands_id"))
private List<Brand> brands;
// ...
}
Run Code Online (Sandbox Code Playgroud)
我有这个请求:
@Query("select new com.mypackage.Statistic(br, count(p)) " +
"from Lot l join l.products p join p.brands br " +
"group by br …Run Code Online (Sandbox Code Playgroud)