偶现来电时手机操作出现重启

问题描述:偶现来电时手机操作出现重启

问题分析:从系统Log看

09-06 10:22:44.791829  1400  1425 W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in handler on main thread (main)
09-06 10:22:44.794133  1400  1425 W Watchdog: main annotated stack trace:
09-06 10:22:44.794535  1400  1425 W Watchdog:     at com.android.server.telecom.SystemStateHelper$1.onReceive(SystemStateHelper.java:80)
09-06 10:22:44.794992  1400  1425 W Watchdog:     - waiting to lock <0x000060ed> (a com.android.server.telecom.TelecomSystem$1)
09-06 10:22:44.795265  1400  1425 W Watchdog:     at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$android-app-LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1809)
09-06 10:22:44.795402  1400  1425 W Watchdog:     at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(Unknown Source:2)
09-06 10:22:44.795508  1400  1425 W Watchdog:     at android.os.Handler.handleCallback(Handler.java:942)
09-06 10:22:44.795605  1400  1425 W Watchdog:     at android.os.Handler.dispatchMessage(Handler.java:99)
09-06 10:22:44.795740  1400  1425 W Watchdog:     at android.os.Looper.loopOnce(Looper.java:204)
09-06 10:22:44.795843  1400  1425 W Watchdog:     at android.os.Looper.loop(Looper.java:291)
09-06 10:22:44.795940  1400  1425 W Watchdog:     at com.android.server.SystemServer.run(SystemServer.java:1020)
09-06 10:22:44.796036  1400  1425 W Watchdog:     at com.android.server.SystemServer.main(SystemServer.java:692)
09-06 10:22:44.796127  1400  1425 W Watchdog:     at java.lang.reflect.Method.invoke(Native Method)
09-06 10:22:44.796247  1400  1425 W Watchdog:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
09-06 10:22:44.796398  1400  1425 W Watchdog:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1114)
09-06 10:22:44.796527  1400  1425 W Watchdog: *** GOODBYE!

从Log看,而Telecom一直等待如下锁 waiting to lock <0x000060ed>,引发WatchDog

Telecom的系统进程为1400

Trace 分析如下:

Telecom 1400主线程一直waiting to lock <0x000060ed>

"main" prio=5 tid=1 Blocked
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x713e81b8 self=0xf0242a10
  | sysTid=1400 nice=-2 cgrp=default sched=1073741824/0 handle=0xf752b470
  | state=S schedstat=( 17127376404 10774636406 33180 ) utm=1285 stm=427 core=7 HZ=100
  | stack=0xff605000-0xff607000 stackSize=8188KB
  | held mutexes=
  at com.android.server.telecom.SystemStateHelper$1.onReceive(SystemStateHelper.java:80)
  - waiting to lock <0x000060ed> (a com.android.server.telecom.TelecomSystem$1) held by thread 68
  at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$android-app-LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1809)
  at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(unavailable:2)
  at android.os.Handler.handleCallback(Handler.java:942)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loopOnce(Looper.java:204)
  at android.os.Looper.loop(Looper.java:291)
  at com.android.server.SystemServer.run(SystemServer.java:1020)
  at com.android.server.SystemServer.main(SystemServer.java:692)
  at java.lang.reflect.Method.invoke(Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1114)

1、1400:1400等待1400:1487

该锁又被 1400:1487所持有

"binder:1400_4" prio=5 tid=68 Native
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x16a80eb0 self=0xf0271010
  | sysTid=1487 nice=0 cgrp=default sched=1073741824/0 handle=0xba4c11c0
  | state=S schedstat=( 6412454401 8041460075 15557 ) utm=477 stm=163 core=2 HZ=100
  | stack=0xba3c6000-0xba3c8000 stackSize=1004KB
  | held mutexes=
  native: #00 pc 000744ac  /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+8) (BuildId: 25891ab1dc6076962f6709f412e9da4e)
  native: #01 pc 000404c7  /apex/com.android.runtime/lib/bionic/libc.so (ioctl+26) (BuildId: 25891ab1dc6076962f6709f412e9da4e)
  native: #02 pc 00040827  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+206) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #03 pc 00041a17  /system/lib/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+78) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #04 pc 0004179b  /system/lib/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+134) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #05 pc 0003b92f  /system/lib/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+118) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #06 pc 000fd4e9  /system/lib/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+84) (BuildId: f8da374b10c090ef6df2144d297bf32f)
  at android.os.BinderProxy.transactNative(Native method)
  at android.os.BinderProxy.transact(BinderProxy.java:602)
  at com.android.internal.telephony.ISms$Stub$Proxy.sendTextForSubscriber(ISms.java:1481)
  at android.telephony.SmsManager$1.onSuccess(SmsManager.java:639)
  at android.telephony.SmsManager.sendResolverResult(SmsManager.java:1651)
  at android.telephony.SmsManager.resolveSubscriptionForOperation(SmsManager.java:1612)
  at android.telephony.SmsManager.sendTextMessageInternal(SmsManager.java:634)
  at android.telephony.SmsManager.sendMultipartTextMessageInternal(SmsManager.java:1076)
  at android.telephony.SmsManager.sendMultipartTextMessage(SmsManager.java:1003)
  at com.android.server.telecom.RespondViaSmsManager.rejectCallWithMessage(RespondViaSmsManager.java:217)
  at com.android.server.telecom.RespondViaSmsManager.onIncomingCallRejected(RespondViaSmsManager.java:147)
  at com.android.server.telecom.CallsManager.rejectCall(CallsManager.java:2901)
  at com.android.server.telecom.InCallAdapter.rejectCall(InCallAdapter.java:128)
  - locked <0x000060ed> (a com.android.server.telecom.TelecomSystem$1)
  at com.android.internal.telecom.IInCallAdapter$Stub.onTransact(IInCallAdapter.java:350)
  at android.os.Binder.execTransactInternal(Binder.java:1286)
  at android.os.Binder.execTransact(Binder.java:1245)

为啥1400:1487一直不到释放锁呢,从Trace log中看到1400:1487与1793:2325进行交互

context binder
  thread 1793: l 10 need_return 0 tr 0
    outgoing transaction 899363: 0000000000000000 from 1793:1793 to 1400:3633 code 5 flags 10 pri 0:120 r1
    transaction complete
  thread 2325: l 01 need_return 0 tr 0
    incoming transaction 898886: 0000000000000000 from 1400:1487 to 1793:2325 code 5 flags 10 pri 0:120 r1 node 39006 size 272:8 data 0000000000000000
  buffer 898886: 0000000000000000 size 272:8:0 active
  buffer 899156: 0000000000000000 size 12:0:0 delivered

2、1400:1487等待1793:2325

我们在看1793:2325的堆栈,它在处理什么呢

"binder:1793_8" prio=5 tid=74 Waiting
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x15dc3c70 self=0xc2482a10
  | sysTid=2325 nice=0 cgrp=default sched=1073741824/0 handle=0xc1afb1c0
  | state=S schedstat=( 934387147 1124625611 3593 ) utm=63 stm=30 core=2 HZ=100
  | stack=0xc1a00000-0xc1a02000 stackSize=1004KB
  | held mutexes=
  at jdk.internal.misc.Unsafe.park(Native method)
  - waiting on an unknown object
  at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
  at java.util.concurrent.CompletableFuture$Signaller.block(CompletableFuture.java:1772)
  at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3129)
  at java.util.concurrent.CompletableFuture.waitingGet(CompletableFuture.java:1799)
  at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1974)
  at com.android.internal.telephony.ims.ImsResolver.getConfiguredImsServicePackageName(ImsResolver.java:1040)
  at com.android.internal.telephony.CarrierSmsUtils.getImsRcsPackage(CarrierSmsUtils.java:85)
  at com.android.internal.telephony.CarrierSmsUtils.getImsRcsPackageForIntent(CarrierSmsUtils.java:50)
  at com.android.internal.telephony.SMSDispatcher.getCarrierAppPackageName(SMSDispatcher.java:2801)
  at com.android.internal.telephony.SMSDispatcher.sendSmsByCarrierApp(SMSDispatcher.java:1355)
  at com.android.internal.telephony.SMSDispatcher.sendText(SMSDispatcher.java:1318)
  at com.android.internal.telephony.SmsDispatchersController.sendText(SmsDispatchersController.java:809)
  at com.android.internal.telephony.IccSmsInterfaceManager.sendTextInternal(IccSmsInterfaceManager.java:561)
  at com.mediatek.internal.telephony.MtkIccSmsInterfaceManager.sendTextInternal(MtkIccSmsInterfaceManager.java:417)
  at com.android.internal.telephony.IccSmsInterfaceManager.sendText(IccSmsInterfaceManager.java:474)
  at com.android.internal.telephony.SmsController.sendIccText(SmsController.java:239)
  at com.android.internal.telephony.SmsController.sendTextForSubscriber(SmsController.java:216)
  at com.android.internal.telephony.ISms$Stub.onTransact(ISms.java:874)
  at android.os.Binder.execTransactInternal(Binder.java:1286)
  at android.os.Binder.execTransact(Binder.java:1245)

1793:2325相关线程处于waiting状态,此处需要看代码

packageNameFuture.get(),该函数卡在此处,为什么卡住呢?它需要等待mHandler post的那个runable 执行完毕后,等待才释放,而mHandler运行在主线程中,即1793

3、1793:2325等待1793:1793

1793:1793在干什么呢?导致一直不返回,从Trace中知道1793:1793与1400:3633进行binder交互

context binder
  thread 1793: l 10 need_return 0 tr 0
    outgoing transaction 899363: 0000000000000000 from 1793:1793 to 1400:3633 code 5 flags 10 pri 0:120 r1

"main" prio=5 tid=1 Native
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x713e81b8 self=0xf0242a10
  | sysTid=1793 nice=0 cgrp=default sched=1073741824/0 handle=0xf752b470
  | state=S schedstat=( 13556171224 13027625187 31126 ) utm=971 stm=383 core=1 HZ=100
  | stack=0xff605000-0xff607000 stackSize=8188KB
  | held mutexes=
  native: #00 pc 000744ac  /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+8) (BuildId: 25891ab1dc6076962f6709f412e9da4e)
  native: #01 pc 000404c7  /apex/com.android.runtime/lib/bionic/libc.so (ioctl+26) (BuildId: 25891ab1dc6076962f6709f412e9da4e)
  native: #02 pc 00040827  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+206) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #03 pc 000419f3  /system/lib/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+42) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #04 pc 0004179b  /system/lib/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+134) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #05 pc 0003b92f  /system/lib/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+118) (BuildId: 4e1f7dff9859f87a85bf606ccf092d4e)
  native: #06 pc 000fd4e9  /system/lib/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+84) (BuildId: f8da374b10c090ef6df2144d297bf32f)
  at android.os.BinderProxy.transactNative(Native method)
  at android.os.BinderProxy.transact(BinderProxy.java:602)
  at com.android.internal.telecom.ITelecomService$Stub$Proxy.getCallCapablePhoneAccounts(ITelecomService.java:1583)
  at android.telecom.TelecomManager.getCallCapablePhoneAccounts(TelecomManager.java:1368)
  at android.telecom.TelecomManager.getCallCapablePhoneAccounts(TelecomManager.java:1291)
  at com.android.phone.vvm.CarrierVvmPackageInstalledReceiver.onReceive(CarrierVvmPackageInstalledReceiver.java:78)
  at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$android-app-LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1809)
  at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(unavailable:2)
  at android.os.Handler.handleCallback(Handler.java:942)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loopOnce(Looper.java:204)
  at android.os.Looper.loop(Looper.java:291)
  at android.app.ActivityThread.main(ActivityThread.java:8154)
  at java.lang.reflect.Method.invoke(Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1136)

1793:1793此时在收一个广播,而这个广播和Telecom进行交互

4、1793:1793等待1400:3633

我们需要看下1400:3633在做什么呢,为啥1793:1793的广播无法很快返回呢?

"binder:1400_E" prio=5 tid=257 Blocked
  | group="main" sCount=1 ucsCount=0 flags=1 obj=0x1464b290 self=0xbc4e3010
  | sysTid=3633 nice=0 cgrp=default sched=1073741824/0 handle=0xa953c1c0
  | state=S schedstat=( 6045942672 7249409656 14813 ) utm=444 stm=160 core=7 HZ=100
  | stack=0xa9441000-0xa9443000 stackSize=1004KB
  | held mutexes=
  at com.android.server.telecom.TelecomServiceImpl$1.getCallCapablePhoneAccounts(TelecomServiceImpl.java:230)
  - waiting to lock <0x000060ed> (a com.android.server.telecom.TelecomSystem$1) held by thread 68
  at com.android.internal.telecom.ITelecomService$Stub.onTransact(ITelecomService.java:776)
  at android.os.Binder.execTransactInternal(Binder.java:1286)
  at android.os.Binder.execTransact(Binder.java:1245)

从Trace看1400:3633也在等这个锁waiting to lock <0x000060ed>,这个锁谁持有呢?

从上面的分析知道1400:1487持有这个锁

5、1400:3633等待1400:1487

将这些锁归纳下:

1、1400:1400等待1400:1487

2、1400:1487等待1793:2325

3、1793:2325等待1793:1793

4、1793:1793等待1400:3633

5、1400:3633等待1400:1487

有发现什么规律吗?2-5两个进程不同线程之间形成了死锁状态

另外,1400 binder耗尽,且1400:1400处于Block状态

解决方案

1、破解死锁即可

2、相关Log链接

https://download.csdn.net/download/tjpuzm/88344419

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/139916.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【2023华为杯B题】DFT类矩阵的整数分解逼近(思路及代码下载)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Golang代码漏洞扫描工具介绍——trivy

Golang代码漏洞扫描工具介绍——trivy Golang作为一款近年来最火热的服务端语言之一&#xff0c;深受广大程序员的喜爱&#xff0c;笔者最近也在用&#xff0c;特别是高并发的场景下&#xff0c;golang易用性的优势十分明显&#xff0c;但笔者这次想要介绍的并不是golang本身&a…

华为云云耀云服务器L实例评测|netdata的部署与应用

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 看这里 前言何为netdata安装 前言 前两天&#xff0c;给大家介绍了下关于使用华为云云耀云服务器L实例做了几个案例应用&#xff0c;分别为&#xff1a; 华为云云耀云服务器L实例评测|一个…

mysql集群使用nginx配置负载均衡

参考链接&#xff1a;https://mu-sl.com//archives/mysql%E9%9B%86%E7%BE%A4%E4%BD%BF%E7%94%A8nginx%E9%85%8D%E7%BD%AE%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1 配置文件nginx_tcp.conf 示例 load_module modules/ngx_stream_module.so;stream{upstream tcpssh{hash $remote_…

Intel酷睿和AMD锐龙

Intel酷睿系列&#xff0c;主要分i3、i5、i7、i9 如&#xff1a;Intel 酷睿i5 10210U i5&#xff1a;品牌修饰符。 10&#xff1a;代次指示符。 210&#xff1a;sku编号。 常见后缀&#xff1a; G1-G7&#xff1a;集显等级。 U&#xff1a;低功耗。 H&#xff1a;标压版…

Unity制作旋转光束

Unity制作旋转光束 大家好&#xff0c;我是阿赵。 这是一个在很多游戏里面可能都看到过的效果&#xff0c;在传送门、魔法阵、角色等脚底下往上散发出一束拉丝形状的光&#xff0c;然后在不停的旋转。 这次来在Unity引擎里面做一下这种效果。 一、准备材料 需要准备的素材很简…

14:00面试,14:06就出来了,问的问题过于变态了。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

2023-2024年最新大数据学习路线

文章目录 2023-2024年最新大数据学习路线大数据开发入门*01*阶段案例实战 大数据核心基础*02*阶段案例实战 千亿级数仓技术*03*阶段项目实战 PB级内存计算04阶段项目实战 亚秒级实时计算*05*阶段项目实战 大厂面试*06* 2023-2024年最新大数据学习路线 新路线图在Spark一章不再…

SpringBoot 员工管理---通用模板 ---苍穹外卖day2

感谢点击 希望你有所收获! 目录 1.新增员工 需求分析:根据页面原型进行业务分析 接口设计 数据库设计 代码开发 功能测试 如何在接口文档中统一添加JWT令牌 ​ 获取当前登录员工的ID 2.员工分页查询 需求分析 代码开发 如何将日期格式化 ​3.启用禁用员工 1.新…

Spring | 事件监听器应用与最佳实践

引言 在复杂的软件开发环境中&#xff0c;组件之间的通信和信息交流显得尤为重要。Spring框架&#xff0c;作为Java世界中最受欢迎的开发框架之一&#xff0c;提供了一种强大的事件监听器模型&#xff0c;使得组件间的通信变得更加灵活和解耦。本文主要探讨Spring事件监听器的…

设备巡检电力水利物业巡检小程序开源版开发

设备巡检电力水利物业巡检小程序开源版开发 以下是设备巡检电力水利物业巡检小程序开源版的可能功能列表&#xff1a; 用户登录/注册&#xff1a;用户可以通过手机号或其他方式进行登录和注册。 首页展示&#xff1a;展示设备巡检电力水利物业巡检小程序的基本信息和操作指南…

Linux内核源码分析 (B.2)深入理解 Linux 物理内存管理

Linux内核源码分析 (B.2)深入理解 Linux 物理内存管理 文章目录 Linux内核源码分析 (B.2)深入理解 Linux 物理内存管理[TOC] 1\. 前文回顾2\. 从 CPU 角度看物理内存模型2.1 FLATMEM 平坦内存模型2.2 DISCONTIGMEM 非连续内存模型2.3 SPARSEMEM 稀疏内存模型2.3.1 物理内存热插…

瑞芯微RK3568:Debian系统如何安装Docker

本文基于HD-RK3568-IOT评估板演示Debian系统安装Docker&#xff0c;该方法适用于RK356X全系产品。 HD-RK3568-IOT评估板基于HD-RK3568-CORE 工业级核心板设计&#xff08;双网口、双CAN、5路串口&#xff09;&#xff0c;接口丰富&#xff0c;适用于工业现场应用需求&#xff…

每日一题 1993. 树上的操作

难度&#xff1a;中等 思路&#xff1a; 首先为了更好的访问每个节点的子节点&#xff0c;我们创建一个字典来表示key节点下的所有子节点&#xff0c;其次上锁&#xff0c;解锁不用多说升级过程&#xff0c;对于条件一和三可以理解为同一个&#xff0c;即包括它本身在内的所有…

电路的基本定律——基尔霍夫定律

基尔霍夫定律 &#x1f391;预备知识&#x1f391;基尔霍夫电流定律(KCL)&#x1f383;基尔霍夫电流定律的本质&#xff1a;节点上电荷具有连续性(不会突变)&#x1f383;基尔霍夫电流定律的推广&#xff1a; &#x1f391;基尔霍夫的电压定律(KVL)&#x1f383;基尔霍夫电压定…

CSS 选择器的几种方法

CSS 选择器的几种方法 业余选手爱记笔记示例代码用否定伪类伪元素用代数式法同胞选择符 ~相邻同胞选择符 业余选手爱记笔记 CSS权威指南&#xff08;第四版&#xff09;是一本好书&#xff0c;看了一遍第二章的选择符有些受益&#xff0c;记录一点读后感和练习。我已将该书电…

软件定义世界,工程引领未来——中山大学软件工程学院 软件工程导论大作业

目录 软件工程&#xff0c;理解加深 个人困惑 软件与软件工程的定义 学习思路的启发 软件危机的认识及思考 软件测试的初步认识 科技前沿&#xff0c;守正创新 代码有智能&#xff0c;教育有情怀 深入浅出&#xff0c;引人入胜 再接再厉&#xff0c;未来可期 “软件…

创建表

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 创建表 语法格式: create table 表名(列名1 数据类型,列名2 数据类型,... ,列名n, 数据类型 ); 练习:在czwbkl库中,创建一格test01表 跟大家说…

用flask框架flask-sock和websocket创建一个自己的聊天界面

WebSocket 协议在10年前就已经标准化了(在2011年&#xff0c;你能相信吗?)所以我相信你不需要介绍。但是如果你不熟悉它&#xff0c;WebSocket 是 HTTP 协议的一个扩展&#xff0c;它在客户端和服务器之间提供了一个永久的、双向的通信通道&#xff0c;在这里双方可以实时地发…

Docker实战技巧(二):Kubernetes基础操作实战

Kubernetes定位在Saas层,重点解决了微服务大规模部署时的服务编排问题 1、关闭防火墙并设置开机禁用   systemctl stop firewalld   systemctl disable firewalld 2、配置repo   cd /etc/yum.repos.d/   下载Docker repo   wget https://mirrors.aliyun.com/docker-…