小编MMa*_*udi的帖子

如何正确停止前台服务?

我使用 startForeground 使我的服务在后台“持久化”而不会被操作系统杀死。
我通过调用 stopForeground 和 stopService 删除了主活动 onDestroy 方法中的服务。问题是,当我从最近的应用程序中清除我的应用程序以杀死它时,调试会话仍在运行,而在“正常”功能(不使用 startForeground)中,调试会话正确终止。
使用 adb shell 确认应用程序仍在运行。
startForeground 以某种方式创建了一个无法通过简单地停止前台和服务来停止的“特殊”运行线程。
请问有什么想法吗?

service android foreground-service

9
推荐指数
2
解决办法
9409
查看次数

DeltaLake 合并具有空值的列

我正在使用 DeltaLake API 使用下面的代码更新表中的行

DeltaTable.forPath(sparkSession, cleanDataPath)
          .as("target")
          .merge(df.as("source"), "target.desk_mirror_name = source.desk_mirror_name AND target.price = source.price AND target.valuationdate = source.valuationdate AND target.valuationversion = source.valuationversion")
          .whenMatched()
          .updateAll()
          .whenNotMatched()
          .insertAll()
          .execute();
Run Code Online (Sandbox Code Playgroud)

这应该匹配源表和目标表之间的所有列,除了列valuationtag

合并之前,目标表如下所示

+----------------+------+-------------+----------------+------------+
|desk_mirror_name| price|valuationdate|valuationversion|valuationtag|
+----------------+------+-------------+----------------+------------+
|          Sample|499.97|   2021-06-10|    210611170317|210611170317|
|          Sample|967.93|   2021-06-10|    210611170317|210611170317|
|          Sample| 500.0|   2021-06-10|    210611170317|210611170317|
+----------------+------+-------------+----------------+------------+
Run Code Online (Sandbox Code Playgroud)

源表(应更新目标表)如下

+----------------+------+-------------+----------------+------------+
|desk_mirror_name| price|valuationdate|valuationversion|valuationtag|
+----------------+------+-------------+----------------+------------+
|          Sample|499.97|   2021-06-10|    210611170317|    OFFICIAL|
|          Sample| 500.0|   2021-06-10|    210611170317|    OFFICIAL|
|          Sample|967.93|   2021-06-10|    210611170317|    OFFICIAL|
+----------------+------+-------------+----------------+------------+
Run Code Online (Sandbox Code Playgroud)

valuationtag更改为OFFICIAL。有了这个,更新后的表是

+----------------+------+-------------+----------------+------------+
|desk_mirror_name| price|valuationdate|valuationversion|valuationtag|
+----------------+------+-------------+----------------+------------+ …
Run Code Online (Sandbox Code Playgroud)

merge apache-spark apache-spark-sql delta-lake

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

隐藏一个特定的块,Git

使用 Git,我只想将一个块存储在一个特定文件中,以便提交其余的更改。因此,我可以通过从储藏室中取出临时零钱来恢复它。但是,我能找到的唯一方法是隐藏整个未暂存的文件。

git

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

如何仅保留下一行相同的行

我尝试使用sed命令解析文件,并仅在下一行分别保留重复的行。

例子

(写在名为的文件中test

line
line
line
line1
line
line3
line1
line2
line2
line
Run Code Online (Sandbox Code Playgroud)

预期产量

line
line
line2
Run Code Online (Sandbox Code Playgroud)

我的shell命令

cat test | sed -rn '$!N; /^(.*)\n\1/P; D'
Run Code Online (Sandbox Code Playgroud)

输出量

line
line
line
line
line2
Run Code Online (Sandbox Code Playgroud)

我想知道此命令有什么问题吗?为什么还要再增加2个line

bash shell awk sed

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