我使用 startForeground 使我的服务在后台“持久化”而不会被操作系统杀死。
我通过调用 stopForeground 和 stopService 删除了主活动 onDestroy 方法中的服务。问题是,当我从最近的应用程序中清除我的应用程序以杀死它时,调试会话仍在运行,而在“正常”功能(不使用 startForeground)中,调试会话正确终止。
使用 adb shell 确认应用程序仍在运行。
startForeground 以某种方式创建了一个无法通过简单地停止前台和服务来停止的“特殊”运行线程。
请问有什么想法吗?
我正在使用 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) 使用 Git,我只想将一个块存储在一个特定文件中,以便提交其余的更改。因此,我可以通过从储藏室中取出临时零钱来恢复它。但是,我能找到的唯一方法是隐藏整个未暂存的文件。
我尝试使用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)
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?
android ×1
apache-spark ×1
awk ×1
bash ×1
delta-lake ×1
git ×1
merge ×1
sed ×1
service ×1
shell ×1