java - 从 ArrayAdapter 调用 AsyncTask 会产生 SIGSEGV 错误
问题描述
我ArrayList
在每一行都有一个按钮。单击上的按钮时,将调用ArrayList
扩展的类AsyncTask
来更新我的数据库。当httpURLConnection.setDoOutput(true)
在此类中执行时,应用程序在调试时崩溃,并给出以下错误消息。如果我在没有调试器的情况下运行应用程序,应用程序不会崩溃,但它似乎也不会执行在.php
扩展类中调用的文件AsyncTask
。
除其他外,这篇文章
Android 致命信号 11 (SIGSEGV) 位于 0x636f7d89 (code=1)。如何追踪它?
建议 SIGSEV 的一个常见原因是画布绘制的东西是空的。这可能是我遇到的问题,因为我在错误消息中有一个空指针取消引用。
如何排除故障和/或解决以下错误消息?我的相关代码遵循错误消息。
编辑 190910
下面列出的错误可能与在 asyncTask 完成之前调用 notifyDataSetChanged() 有关。在 asyncTask 完成后,我将编辑我的代码以调用 notifyDataSetChanged()。一旦我得到结果,我会报告。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="75dp"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/phoneTV"
android:layout_width="176dp"
android:layout_height="35dp"
android:layout_marginTop="18dp"
android:layout_marginLeft="18dp"
android:hint="(999) 999-9999"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/delButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete"
android:layout_marginLeft="8dp"
android:layout_marginTop="11dp"
app:layout_constraintLeft_toRightOf="@+id/phoneTV"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
AdapterAcceptedNumber.java
public class AdapterAcceptedNumber extends ArrayAdapter<String> {
List<String> acceptedNums = new ArrayList();
Context context;
public AdapterAcceptedNumber(Context context,int resource){
super(context,resource);
this.context = context;
}
@Override
public int getCount() {
return acceptedNums.size();
}
@Nullable
@Override
public String getItem(int position) {
return acceptedNums.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View row;
row = convertView;
AdapterAcceptedNumber.ViewHolder holder = null;
//row is null until user moves the list on the screen
if(row == null) {
LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.row_layout_text_button, parent, false);
holder = new AdapterAcceptedNumber.ViewHolder();
holder.acceptedNumTV = (TextView)row.findViewById(R.id.phoneTV);
holder.delButt = (Button)row.findViewById(R.id.delButton);
// holder.delButt.setOnClickListener((PhoneAcceptedActivity)this.getContext());
holder.delButt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String CollectorPhoneNumberToDelete = getNumber(position);
SharedPreferences sharedPref = context.getSharedPreferences(context.getString(R.string.preferenceKeyFile),MODE_PRIVATE);
String gid = sharedPref.getString("groupID","error");
BackgroundWorker backgroundWorker = new BackgroundWorker(context);
backgroundWorker.execute("DeleteLogin",CollectorPhoneNumberToDelete,gid);
}
});
row.setTag(holder);
}else{
holder=(AdapterAcceptedNumber.ViewHolder)row.getTag();
}
String digits = acceptedNums.get(position);
holder.acceptedNumTV.setText(digits);
return row;
}
public void updateRecord(List<String> phoneNums){
acceptedNums = phoneNums;
notifyDataSetChanged();
}
public void delPhoneNumber(int positionToDelete){
acceptedNums.remove(positionToDelete);
notifyDataSetChanged();
}
public String getNumber(int position){
return acceptedNums.get(position);
}
private static class ViewHolder
{
TextView acceptedNumTV;
Button delButt;
}
}
public class BackgroundWorker extends AsyncTask<String, String, String> {
Context context;
BackgroundWorker(Context ctx){
context = ctx;
}
//https://www.youtube.com/watch?v=eldh8l8yPew
@Override
protected String doInBackground(String... params) {
String type = params[0];
String deleteLogin_url = "file.php";
}else if (type.equals("DeleteLogin")){
try {
String phoneNumberToDelete = "";
String gid = "";
if(!params[1].equals("null"))
phoneNumberToDelete = params[1];
if(!params[2].equals("null"))
gid = params[2];
URL urlAddress = new URL(deleteLogin_url);
HttpURLConnection httpURLConnection = (HttpURLConnection)urlAddress.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true); //crashes here when debugging
httpURLConnection.setDoInput(true);
OutputStream outputStreamAddress = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStreamAddress,"UTF-8"));
String postData = URLEncoder.encode("gid","UTF-8") + "=" + URLEncoder.encode(gid,"UTF-8") + "&"
+ URLEncoder.encode("collectorNumberToDelete","UTF-8") + "=" + URLEncoder.encode(phoneNumberToDelete,"UTF-8"); //post to php page
bufferedWriter.write(postData);
bufferedWriter.flush();
bufferedWriter.close();
outputStreamAddress.close();
InputStream inputStreamAddress = httpURLConnection.getInputStream();
//BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1")); worked for local host
BufferedReader bufferedReaderAddress = new BufferedReader(new InputStreamReader(inputStreamAddress));
resultAddress = "";
String lineAddress = "";
while ( (lineAddress = bufferedReaderAddress.readLine()) != null){
resultAddress += lineAddress;
}
bufferedReaderAddress.close();
inputStreamAddress.close();
httpURLConnection.disconnect();
return "goBack";
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Log:
>2019-09-08 20:34:51.792 8403-9265/com.rc.rentcollection W/zygote64: Got a deoptimization request on un-deoptimizable method java.net.InetAddress[] libcore.io.Linux.android_getaddrinfo(java.lang.String, android.system.StructAddrinfo, int)
>2019-09-08 20:34:51.994 8403-9265/com.rc.rentcollection W/zygote64: Got a deoptimization request on un-deoptimizable method java.lang.String com.rc.rentcollection.BackgroundWorker.doInBackground(java.lang.String[])
>2019-09-08 20:34:52.334 8403-9265/com.rc.rentcollection W/zygote64: Got a deoptimization request on un-deoptimizable method java.lang.String com.rc.rentcollection.BackgroundWorker.doInBackground(java.lang.String[])
>2019-09-08 20:34:54.448 8403-9265/com.rc.rentcollection A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xc in tid 9265 (AsyncTask #6), pid 8403 (.rentcollection)
>2019-09-08 20:34:54.500 9277-9277/? E/propClient: PropClient failed to load
>2019-09-08 20:34:54.547 2832-2903/? E/QC-NETMGR-LIB: Unsupported attribute type, ignoring 0x8
>2019-09-08 20:34:54.547 2832-2903/? E/QC-NETMGR-LIB: unrecognized ifindex 20
>2019-09-08 20:34:54.548 2832-2903/? E/QC-NETMGR-LIB: Unsupported attribute type, ignoring 0x8
>2019-09-08 20:34:54.548 2832-2903/? E/QC-NETMGR-LIB: unrecognized ifindex 20
>2019-09-08 20:34:54.558 9278-9278/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: Build fingerprint: 'Verizon/j7popltevzwpp/j7popltevzw:8.1.0/M1AJQ/J727VPPVRS3BSD1:user/release-keys'
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: Revision: '5'
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: ABI: 'arm64'
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: pid: 8403, tid: 9265, name: AsyncTask #6 >>> com.rc.rentcollection <<<
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xc
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: Cause: null pointer dereference
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: x0 0000000000000000 x1 0000000000000001 x2 0000000000000008 x3 0000000000000003
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: x4 0000006fd834190e x5 0000006fcf0185d8 x6 20646f6874656d20 x7 20646f6874656d20
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: x8 0000006fbf502f20 x9 6891c97f3b1a61c6 x10 0000006fcf0185d0 x11 0000000000000010
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: x12 0000006fcf0b49d0 x13 6c62617a696d6974 x14 0000000000000028 x15 0000006fbeded000
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: x16 0000006fd83ce528 x17 000000705b6fc870 x18 0000006fbf5017cc x19 0000006fbf502f20
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: x20 0000000000000000 x21 0000000000000001 x22 0000006fbf503588 x23 0000000000000000
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: x24 0000006fbf502f20 x25 0000006fbf503588 x26 0000006fbeded0a0 x27 0000000000000001
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: x28 0000000000000043 x29 0000006fbf502f10 x30 0000006fd8246768
>2019-09-08 20:34:54.559 9278-9278/? A/DEBUG: sp 0000006fbf502df0 pc 0000006fd7e8027c pstate 0000000060000000
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: backtrace:
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #00 pc 00000000000dd27c /system/lib64/libart.so (art::ArtMethod::PrettyMethod(bool)+56)
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #01 pc 00000000004a3764 /system/lib64/libart.so (art::Thread::QuickDeliverException()+564)
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #02 pc 0000000000521d14 /system/lib64/libart.so (artDeliverPendingExceptionFromCode+8)
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #03 pc 00000000005507a8 /system/lib64/libart.so (art_quick_to_interpreter_bridge+248)
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #04 pc 0000000000547588 /system/lib64/libart.so (art_quick_invoke_stub+584)
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #05 pc 00000000000dd0b4 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #06 pc 000000000046bca4 /system/lib64/libart.so (art::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::ArgArray*, art::JValue*, char const*)+104)
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #07 pc 000000000046ce34 /system/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+772)
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #08 pc 0000000000493718 /system/lib64/libart.so (art::Thread::CreateCallback(void*)+1120)
>2019-09-08 20:34:54.582 9278-9278/? A/DEBUG: #09 pc 0000000000069974 /system/lib64/libc.so (__pthread_start(void*)+36)
>2019-09-08 20:34:54.583 9278-9278/? A/DEBUG: #10 pc 000000000001f864 /system/lib64/libc.so (__start_thread+68)
>2019-09-08 20:34:55.507 2685-2685/? E//system/bin/tombstoned: Tombstone written to: /data/tombstones/tombstone_01
>2019-09-08 20:34:55.512 3218-9279/? W/ActivityManager: crash : com.rc.rentcollection,0
>2019-09-08 20:34:55.515 3218-9279/? W/ActivityManager: Force finishing activity com.rc.rentcollection/.PhoneAcceptedActivity
>2019-09-08 20:34:55.519 2643-2643/? E/audit: type=1701 audit(1567992895.507:817): auid=4294967295 uid=10221 gid=10221 ses=4294967295 subj=u:r:untrusted_app:s0:c512,c768 pid=8403 comm=4173796E635461736B202336 exe="/system/bin/app_process64" sig=11
>2019-09-08 20:34:55.525 3218-3294/? W/Choreographer: Frame time is 12.38591 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
>2019-09-08 20:34:55.528 3218-3235/? W/zygote64: kill(-8376, 9) failed: No such process
>2019-09-08 20:34:55.544 3218-3235/? W/zygote64: kill(-8376, 9) failed: No such process
>2019-09-08 20:34:55.545 3218-3325/? W/InputDispatcher: channel ~ Consumer closed input channel or an error occurred. events=0x9
>2019-09-08 20:34:55.545 3218-3325/? E/InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed!
>2019-09-08 20:34:55.545 3218-3325/? W/InputDispatcher: channel ~ Consumer closed input channel or an error occurred. events=0x9
>2019-09-08 20:34:55.545 3218-3325/? E/InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed!
>2019-09-08 20:34:55.549 3218-3325/? W/InputDispatcher: channel ~ Consumer closed input channel or an error occurred. events=0x9
>2019-09-08 20:34:55.549 3218-3325/? E/InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed!
>2019-09-08 20:34:55.550 3218-3325/? W/InputDispatcher: channel ~ Consumer closed input channel or an error occurred. events=0x9
>2019-09-08 20:34:55.550 3218-3325/? E/InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed!
>2019-09-08 20:34:55.550 3218-3235/? W/zygote64: kill(-8403, 9) failed: No such process
>2019-09-08 20:34:55.553 3218-3995/? W/InputDispatcher: Attempted to unregister already unregistered input channel
>2019-09-08 20:34:55.557 3218-16036/? W/InputDispatcher: Attempted to unregister already unregistered input channel
>2019-09-08 20:34:55.579 8496-8496/? W/ContextImpl: Calling a method in the system process without a qualified user: android.app.ContextImpl.startService:1545 android.content.ContextWrapper.startService:669 android.content.ContextWrapper.startService:669 com.samsung.android.sm.common.SmartManagerReceiver.a:240 com.samsung.android.sm.common.SmartManagerReceiver.onReceive:119
>2019-09-08 20:34:55.580 3218-3707/? W/InputDispatcher: Attempted to unregister already unregistered input channel
>2019-09-08 20:34:55.583 3218-3969/? W/InputDispatcher: Attempted to unregister already unregistered input channel
>2019-09-08 20:34:55.599 501-629/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only
>2019-09-08 20:34:55.618 9281-9281/? E/Zygote: isWhitelistProcess - Process is Whitelisted
>2019-09-08 20:34:55.618 9281-9281/? E/libpersona: scanKnoxPersonas
>2019-09-08 20:34:55.618 9281-9281/? E/libpersona: Couldn't open the File - /data/system/users/0/personalist.xml - No such file or directory
>2019-09-08 20:34:55.621 9281-9281/? W/SELinux: SELinux selinux_android_compute_policy_index : Policy Index[2], Con:u:r:zygote:s0 RAM:SEPF_SM-J727VPP_8.1.0_0008, [-1 -1 -1 -1 0 1]
>2019-09-08 20:34:55.627 3218-3235/? W/zygote64: kill(-8233, 9) failed: No such process
>2019-09-08 20:34:55.628 3218-3242/? W/ActivityManager: setHasOverlayUi called on unknown pid: 8403
>2019-09-08 20:34:55.632 3218-3235/? W/zygote64: kill(-8233, 9) failed: No such process
>2019-09-08 20:34:55.638 3218-3235/? W/zygote64: kill(-8233, 9) failed: No such process
>2019-09-08 20:34:55.643 3218-3235/? W/zygote64: kill(-8233, 9) failed: No such process
>2019-09-08 20:34:55.644 3218-9006/? W/BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
>2019-09-08 20:34:55.644 3218-3233/? W/BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
>2019-09-08 20:34:55.644 3218-3234/? W/Looper: Dispatch took 119ms on android.ui, h=Handler (com.android.server.am.ActivityManagerService$UiHandler) {4215cc} cb=null msg=1
>2019-09-08 20:34:55.648 3218-3235/? W/zygote64: kill(-8233, 9) failed: No such process
>2019-09-08 20:34:55.707 8533-8612/? W/PkgUtils: p: com.rc.rentcollection, u:0
>2019-09-08 20:34:55.716 9302-9302/? E/propClient: PropClient failed to load
>2019-09-08 20:34:55.750 9305-9305/? E/propClient: PropClient failed to load
>2019-09-08 20:34:55.750 9304-9304/? E/propClient: PropClient failed to load
>2019-09-08 20:34:55.764 9307-9307/? E/propClient: PropClient failed to load
>2019-09-08 20:34:55.855 9281-9312/com.rc.rentcollection W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
>2019-09-08 20:34:55.872 9281-9314/com.rc.rentcollection W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
>2019-09-08 20:34:56.363 9307-9307/? E/propClient: PropClient failed to load
>2019-09-08 20:34:56.370 9307-9307/? W/ADebug: Failed to get property persist.sys.media.traces
>2019-09-08 20:34:56.390 9307-9307/? E/appproc: Enhanced Zygote ASLR: ro.knox.enhance.zygote.aslr != 1. Enhanced Zygote ASLR is DISABLED!
>2019-09-08 20:34:56.733 3218-3294/? W/Choreographer: Frame time is 13.006558 ms in the future! Check that graphics HAL is generating vsync timestamps using the correct timebase.
>2019-09-08 20:34:56.836 9307-9307/? E/SemAffinityControl: SemAffinityControl: registerfunction enter
>2019-09-08 20:34:56.896 3218-3242/? E/ANDR-PERF-JNI: com_qualcomm_qtiperformance_native_perf_io_prefetch_start
>2019-09-08 20:34:56.920 9307-9334/? W/MessageQueue: Handler (android.os.Handler) {384f244} sending message to a Handler on a dead thread
java.lang.IllegalStateException: Handler (android.os.Handler) {384f244} sending message to a Handler on a dead thread
at android.os.MessageQueue.enqueueMessage(MessageQueue.java:545)
at android.os.Handler.enqueueMessage(Handler.java:662)
at android.os.Handler.sendMessageAtTime(Handler.java:631)
at android.os.Handler.sendMessageDelayed(Handler.java:601)
at android.os.Handler.post(Handler.java:357)
at android.os.ResultReceiver$MyResultReceiver.send(ResultReceiver.java:57)
at com.android.internal.os.IResultReceiver$Stub.onTransact(IResultReceiver.java:58)
at android.os.Binder.execTransact(Binder.java:705)
>2019-09-08 20:34:56.957 9338-9338/? E/propClient: PropClient failed to load
>2019-09-08 20:34:57.063 3218-3294/? E/WindowManager: win=Window{df00e56 u0 Splash Screen com.rc.rentcollection EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:553 com.android.server.wm.DisplayContent.lambda$-com_android_server_wm_DisplayContent_21292:465
>2019-09-08 20:34:57.312 9338-9338/? E/propClient: PropClient failed to load
>2019-09-08 20:34:57.314 9338-9338/? W/ADebug: Failed to get property persist.sys.media.traces
>2019-09-08 20:34:57.320 9338-9338/? E/appproc: Enhanced Zygote ASLR: ro.knox.enhance.zygote.aslr != 1. Enhanced Zygote ASLR is DISABLED!
>2019-09-08 20:34:57.494 9338-9338/? E/SemAffinityControl: SemAffinityControl: registerfunction enter
>2019-09-08 20:34:57.512 9338-9347/? W/MessageQueue: Handler (android.os.Handler) {81641c0} sending message to a Handler on a dead thread
java.lang.IllegalStateException: Handler (android.os.Handler) {81641c0} sending message to a Handler on a dead thread
at android.os.MessageQueue.enqueueMessage(MessageQueue.java:545)
at android.os.Handler.enqueueMessage(Handler.java:662)
at android.os.Handler.sendMessageAtTime(Handler.java:631)
at android.os.Handler.sendMessageDelayed(Handler.java:601)
at android.os.Handler.post(Handler.java:357)
at android.os.ResultReceiver$MyResultReceiver.send(ResultReceiver.java:57)
at com.android.internal.os.IResultReceiver$Stub.onTransact(IResultReceiver.java:58)
at android.os.Binder.execTransact(Binder.java:705)
解决方案
我解决了这个问题。不幸的是,我在原始问题中没有提供足够的信息。我犯了三个错误:
1) 在 AsynTask 执行时调用 notifyDataSetChanged() 似乎会导致问题。我通过使我的 AsynTask 成为内部类来改变程序流程,这样我就可以在 AsynTask 完成后调用适配器并执行 notifyDataSetChanged()。
2) 我的 .php 文件中缺少括号。问题出在我在测试文件时注释掉的文件的一部分中。我有
$var = mysqli_real_escape_string($conn,$_POST["var"];
而且我应该有
$var = mysqli_real_escape_string($conn,$_POST["var"]);
3) 最后一个问题产生了一个 IllegalStateException。这篇文章帮助我解决了使用 HttpURLConnection 时出现的“非法状态异常:已连接”问题。
我希望这些信息可以帮助其他人。
推荐阅读
- python - Pandas:对于列中的查询,为这些值创建一个输入 = True 的新列,否则为 False
- python - 无法使用 V100 GPU 运行分布式 TensorFlow
- objective-c - 通过 ios 上的 Action 扩展加载 React 本机时,Javascript 似乎没有运行
- php - 如果我们使用单独的逗号发送数据,如何生成 uniq id
- java - 我如何以编程方式检查附加程序是否在 log4j2 中启动,如果未启动则启动它?
- python - 在 Retina 显示屏上使用带有 Jupyter 交互式窗口的 Visual Studio Code Python 扩展
- java - 无法连接到主机,端口:smtp.gmail.com, 587;超时 -1
- android - 片段回栈和替换
- batch-file - 我需要找到并插入一个值
- javascript - Cypress.io - 使用 JavaScript window.prompt 保存价值