崩溃bug日志总结2

目录介绍

  • 1.1 java.lang.ClassNotFoundException类找不到异常
  • 1.2 java.util.concurrent.TimeoutException连接超时崩溃
  • 1.3 java.lang.NumberFormatException格式转化错误
  • 1.4 java.lang.IllegalStateException: Fragment not attached to Activity
  • 1.5 ArrayIndexOutOfBoundsException 角标越界异常
  • 1.6 IllegalAccessException 方法中构造方法权限异常
  • 1.7 android.view.WindowManager$BadTokenException,dialog弹窗异常
  • 1.8 java.lang.NoClassDefFoundError 找不到类异常
  • 1.9 Android出现:Your project path contains non-ASCII characters.

好消息

  • 博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计47篇[近20万字],转载请注明出处,谢谢!
  • 链接地址:https://github.com/yangchong211/YCBlogs
  • 如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变!

1.1 java.lang.ClassNotFoundException类找不到异常

  • A.详细崩溃日志信息
    Didn't find class "om.scwang.smartrefresh.layout.SmartRefreshLayout" on path: DexPathList[[zip file "/data/app/com.paidian.hwmc-EsIbVq6e0mFwE0-rPanqdg==/base.apk", zip file "/data/app/com.paidian.hwmc-EsIbVq6e0mFwE0-rPanqdg==/split_lib_dependencies_apk.apk", zip file "/data/app/com.paidian.hwmc-EsIbVq6e0mFwE0-rPanqdg==/split_lib_slice_0_apk.apk", zip file "/data/app/com.paidian.hwmc-EsIbVq6e0mFwE0-rPanqdg==/split_lib_slice_1_apk.apk", zip file "/data/app/com.paidian.hwmc-EsIbVq6e0mFwE0-rPanqdg==/split_lib_s com.paidian.hwmc.goods.activity.GoodsDetailsActivity.onCreate(GoodsDetailsActivity.java:209) 
  • B.查看崩溃类信息
    • 当应用程序尝试使用字符串名称加载类时引发:但无法找到具有指定名称的类的定义。从1.4版开始,已对此异常进行了修改,以符合通用的异常链接机制。在构建时提供并通过{@link#getException()}方法访问的“在加载类时引发的可选异常”现在称为原因,并且可以通过{@link Throwable#getCace()}方法以及前面提到的“遗留方法”进行访问。
    public class ClassNotFoundException extends ReflectiveOperationException { private static final long serialVersionUID = 9176873029745254542L; private Throwable ex; public ClassNotFoundException() { super((Throwable)null); // Disallow initCause } public ClassNotFoundException(String s) { super(s, null); // Disallow initCause } public ClassNotFoundException(String s, Throwable ex) { super(s, null); // Disallow initCause this.ex = ex; } public Throwable getException() { return ex; } public Throwable getCause() { return ex; } } 
  • C.项目中异常分析
    • 该异常表示在路径下,找不到指定类,通常是因为构建路径问题导致的。
  • D.引发崩溃日志的流程分析
  • F.解决办法
    • 类名是以字符串形式标识的,可信度比较低,在调用Class.forName(""),Class.findSystemClass(""),Class.loadClass("")等方法时,找不到类名时将会报错。如果找不到的Class是系统Class,那么可能是系统版本兼容,厂家Rom兼容的问题,找到对应的设备尝试重现,解决方法可以考虑更换Api,或用自己实现的Class替代。
    • 如果找不到的Class是应用自由Class(含第三方SDK的Class),可以通过反编译工具查看对应apk中是否真的缺少该Class,再进行定位,这种往往发生在:
      • 1.要找的Class被混淆了,存在但名字变了;
      • 2.要找的Class未被打入Dex,确实不存在,可能是因为自己的疏忽,或编译环境的冲突;
      • 3.要找的Class确实存在,但你的Classlorder找不到这个Class,往往因为这个Classloder是你自实现的(插件化应用中常见)。
  • G.其他延申

1.2 java.util.concurrent.TimeoutException连接超时崩溃

  • A.详细崩溃日志信息
    java.util.concurrent.TimeoutException: android.view.ThreadedRenderer.finalize() timed out after 10 seconds at android.view.ThreadedRenderer.nDeleteProxy(Native Method) at android.view.ThreadedRenderer.finalize(ThreadedRenderer.java:423) 
  • B.查看崩溃类信息
    • 当阻塞操作超时引发的异常。指定超时的阻塞操作需要一种方法来指示已发生超时。对于许多此类操作,可以返回指示超时的值;如果不可能或不需要,则应声明并抛出{@code TimeoutException}。
    public class TimeoutException extends Exception { private static final long serialVersionUID = 1900926677490660714L; public TimeoutException() {} public TimeoutException(String message) { super(message); } } 
  • C.项目中异常分析
  • D.引发崩溃日志的流程分析
  • F.解决办法
    • 一般是系统在gc时,调用对象的finalize超时导致,解决办法:
    • 1.检查分析finalize的实现为什么耗时较高,修复它;
    • 2.检查日志查看GC是否过于频繁,导致超时,减少内容开销,防止内存泄露。
  • G.其他延申

1.3 java.lang.NumberFormatException格式转化错误

  • A.详细崩溃日志信息
    Exception in thread "main" java.lang.NumberFormatException: For input string: "100 " at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:458) at java.lang.Integer.parseInt(Integer.java:499) 
  • B.查看崩溃类信息
    • 引发,以指示应用程序试图将字符串转换为数字类型之一,但该字符串没有适当的格式。
    public class NumberFormatException extends IllegalArgumentException { static final long serialVersionUID = -2848938806368998894L; public NumberFormatException () { super(); } public NumberFormatException (String s) { super (s); } static NumberFormatException forInputString(String s) { return new NumberFormatException("For input string: \"" + s + "\""); } } 
  • C.项目中异常分析
    • 错误关键字 java.lang.NumberFormatException 这句话明确告诉了我们是数字格式异常,接着后面有 For input string: "100 " 提示,这就告诉我们,当前想把 "100 " 转换成数字类型时出错了,这样就很确切了。
  • D.引发崩溃日志的流程分析
  • F.解决办法
    • 解决办法很简单,改成 Integer.parseInt(str.trim()),注意将字符串转化成整数数据类型时,注意需要trim一下。
  • G.其他延申

1.4 java.lang.IllegalStateException: Fragment not attached to Activity

  • A.详细崩溃日志信息
    java.lang.IllegalStateException: Fragment not attached to Activity
    
  • B.查看崩溃类信息
  • C.项目中异常分析
    • 出现该异常,是因为Fragment的还没有Attach到Activity时,调用了如getResource()等,需要上下文Content的函数。
    • 出现该异常,是因为Fragment还没有Attach到Activity时,调用了如getResource()等,需要上下文Context的函数。解决方法,就是等将调用的代码写在OnStart()中。
  • D.引发崩溃日志的流程分析
  • F.解决办法
    • 将调用的代码运行在Fragment Attached的生命周期内。
    • 第一种:在调用需要Context的函数之前,增加一个判断isAdded()
    if(isAdded()){//isAdded方法是Android系统提供的,只有在Fragment被添加到所属的Activity后才返回true activity.getResourses().getString(...); } 
    • 第二种:如下所示
    @Override
    public void onAttach(Context context) { super.onAttach(context); activity = (MainActivity) context; } @Override public void onDetach() { super.onDetach(); if (activity != null) { activity = null; } } 
  • G.其他延申
    • 发生场景:该错误经常发生在fragment的线程中执行了一个耗时操作,线程在执行完毕后会调用getResources来更新ui。如果在线程操作没有完成,就调用getActivity().recreate()重新加载activity或屏幕旋转,这时就会出现Fragment not attached to Activity的错误

1.5 ArrayIndexOutOfBoundsException 角标越界异常

  • A.详细崩溃日志信息
    • 该异常表示数组越界
    java.lang.ArrayIndexOutOfBoundsException: 0at com.example.mytest.CityAdapter.setDataNotify(CityAdapter.java:183) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
  • B.查看崩溃类信息
    • 引发,以指示已使用非法索引访问数组。索引不是负的,就是大于或等于数组的大小。
    public class ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException { private static final long serialVersionUID = -5116101128118950844L; public ArrayIndexOutOfBoundsException() { super(); } public ArrayIndexOutOfBoundsException(int index) { super("Array index out of range: " + index); } public ArrayIndexOutOfBoundsException(String s) { super(s); } public ArrayIndexOutOfBoundsException(int sourceLength, int index) { super("length=" + sourceLength + "; index=" + index); } public ArrayIndexOutOfBoundsException(int sourceLength, int offset, int count) { super("length=" + sourceLength + "; regionStart=" + offset + "; regionLength=" + count); } } 
  • C.项目中异常分析
  • D.引发崩溃日志的流程分析
  • F.解决办法
    • 这种情况一般要在数组循环前做好length判断,index超出length上限和下限时都会报错。举例如下:一个数组int test[N],一共有N个元素分别是test[0]~test[N-1],如果调用test[N],将会报错。建议读取时,不要超过数组的长度(array.length)。
    • Android中一种常见情形就是上拉刷新中header也会作为listview的第0个位置,如果判断失误很容易造成越界。
  • G.其他延申

1.6 IllegalAccessException 方法中构造方法权限异常

  • A.详细崩溃日志信息
    Unable to instantiate application com.pedaily.yc.meblurry.App: java.lang.IllegalAccessException 
  • B.查看崩溃类信息
    • 当应用程序试图反射地创建实例(数组除外)、设置或获取字段或调用方法时,将引发IllegalAccessException,但当前执行的方法无法访问指定的类、字段、方法或构造函数的定义。
    public class IllegalAccessException extends ReflectiveOperationException { private static final long serialVersionUID = 6616958222490762034L; public IllegalAccessException() { super(); } public IllegalAccessException(String s) { super(s); } } 
  • C.项目中异常分析
    • 错误提示是,构造方法的权限不对
  • D.引发崩溃日志的流程分析
  • F.解决办法
    • 检查了整个Application,才发现,原来有一个无参数的构造方法,被设计成private。修改其为public即可。
  • G.其他延申
    • android BroadcastReceiver遇到java.lang.IllegalAccessException解决方法,错误原因主要是app中其他地方调用了默认的构造函数,必须增加默认构造函数且访问权限为public

1.7 android.view.WindowManager$BadTokenException,dialog弹窗异常

  • A.详细崩溃日志信息
    Unable to add window -- token android.os.BinderProxy@9a57804 is not valid; is your activity running? android.view.ViewRootImpl.setView(ViewRootImpl.java:907) 
  • B.查看崩溃类信息
    • 在WindowManager中可以找到这个异常类,主要发生在尝试添加视图时引发的
    public static class BadTokenException extends RuntimeException { public BadTokenException() { } public BadTokenException(String name) { super(name); } } 
  • C.项目中异常分析
    • 该异常表示不能添加窗口,通常是所要依附的view已经不存在导致的。
  • D.引发崩溃日志的流程分析
  • F.解决办法
    • 之前项目中有一个自定义弹窗,偶尔会报这个错。解决办法如下代码所示
    • 主要逻辑是在弹窗show或者dismiss的时候,都增加了逻辑判断,判断宿主activity存在。
    /*** 展示加载窗* @param context               上下文* @param isCancel 是否可以取消 */ public static void show(Context context, boolean isCancel) { if(context == null){ return; } if (context instanceof Activity) { if (((Activity) context).isFinishing()) { return; } } if (loadDialog != null && loadDialog.isShowing()) { return; } loadDialog = new LoadLayoutDialog(context, isCancel); loadDialog.show(); } /** * 销毁加载窗 * @param context 上下文 */ public static void dismiss(Context context) { if(context == null){ return; } try { if (context instanceof Activity) { if (((Activity) context).isFinishing()) { loadDialog = null; return; } } if (loadDialog != null && loadDialog.isShowing()) { Context loadContext = loadDialog.getContext(); if (loadContext instanceof Activity) { if (((Activity) loadContext).isFinishing()) { loadDialog = null; return; } } loadDialog.dismiss(); loadDialog = null; } } catch (Exception e) { e.printStackTrace(); loadDialog = null; } } 
  • G.其他延申
    • Dialog&AlertDialog,Toast,WindowManager不能正确使用时,经常会报出该异常,原因比较多,几个常见的场景如下:
      • 1.上一个页面没有destroy的时候,之前的Activity已经接收到了广播。如果此时之前的Activity进行UI层面的操作处理,就会造成crash。UI层面的刷新,一定要注意时机,建议使用set_result来代替广播的形式进行刷新操作,避免使用广播的方式,代码不直观且容易出错。
      • 2.Dialog在Actitivty退出后弹出。在Dialog调用show方法进行显示时,必须要有一个Activity作为窗口的载体,如果Activity被销毁,那么导致Dialog的窗口载体找不到。建议在Dialog调用show方法之前先判断Activity是否已经被销毁。
      • 3.Service&Application弹出对话框或WindowManager添加view时,没有设置window type为TYPE_SYSTEM_ALERT。需要在调用dialog.show()方法前添加dialog.getWindow().SetType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)。
      • 4.6.0的系统上, (非定制 rom 行为)若没有给予悬浮窗权限, 会弹出该问题, 可以通过Settings.canDrawOverlays来判断是否有该权限.
      • 5.某些不稳定的MIUI系统bug引起的权限问题,系统把Toast也当成了系统级弹窗,android6.0的系统Dialog弹窗需要用户手动授权,若果app没有加入SYSTEM_ALERT_WINDOW权限就会报这个错。需要加入给app加系统Dialog弹窗权限,并动态申请权限,不满足第一条会出现没权限闪退,不满足第二条会出现没有Toast的情况。

1.8 java.lang.NoClassDefFoundError 找不到类异常

  • A.详细崩溃日志信息
  • B.查看崩溃类信息
    • 如果Java虚拟机或ClassLoader实例试图加载类的定义(作为普通方法调用的一部分或使用新的表达式创建新实例的一部分),则抛出该类的定义。编译当前执行的类时存在搜索类定义,但无法再找到该定义。
    public class NoClassDefFoundError extends LinkageError { private static final long serialVersionUID = 9095859863287012458L; public NoClassDefFoundError() { super(); } public NoClassDefFoundError(String s) { super(s); } private NoClassDefFoundError(String detailMessage, Throwable throwable) { super(detailMessage, throwable); } } 
  • C.项目中异常分析
    • 问题的主要原因:方法数超65536限制。由于实际开发当中的需求不断变更,开源框架越来越多,大多都用第三方SDK,导致方法数很容易超出65536限制。出现错误Java.lang.NoClassDefFoundError
  • D.引发崩溃日志的流程分析
    • 这个错误是Android应用的方法总数限制造成的。android平台的Java虚拟机Dalvik在执行DEX格式的Java应用程序时,使用原生类型short来索引DEX文件中的方法。这意味着单个DEX文件可被引用的方法总数被限制为65536。通常APK包含一个classes.dex文件,因此Android应用的方法总数不能超过这个数量,这包括Android框架、类库和你自己开发的代码。而Android 5.0和更高版本使用名为ART的运行时,它原生支持从APK文件加载多个DEX文件。在应用安装时,它会执行预编译,扫描classes(..N).dex文件然后将其编译成单个.oat文件用于执行. 通熟的讲,就是分包。
  • F.解决办法
    • 64k解决办法
  • G.其他延申
    • 该异常表示找不到类定义,当JVM或者ClassLoader实例尝试装载该类的定义(这通常是一个方法调用或者new表达式创建一个实例过程的一部分)而这个类定义并没有找时所抛出的错误。
    • [解决方案]:NoClassDefFoundError异常一般出现在编译环境和运行环境不一致的情况下,就是说有可能在编译过后更改了Classpath或者jar包所以导致在运行的过程中JVM或者ClassLoader无法找到这个类的定义。
      • 1.分dex包编程,如果依赖的dex包删除了指定的类,执行初始化方法时将会报错;
      • 2.使用第三方SDK或插件化编程时,动态加载或实例化类失败将会报错;
      • 3.系统资源紧张时,当大量class需要加载到内存的时候,处于竞争关系,部分calss竞争失败,导致加载不成功;
      • 4.装载并初始化一个类时失败(比如静态块抛 java.lang.ExceptionInInitializerError 异常),然后再次引用此类也会提示NoClassDefFoundErr 错误;
      • 5.手机系统版本或硬件设备不匹配(如ble设备只支持18以上SDK),程序引用的class在低版本中不存在,导致NoClassDefFoundErr 错误。
      • 6.so文件找不到,设备平台armeabi-v7a,但是我的so库是放在armeabi中的,解决方法新建一个armeabi-v7a包,并且把armeabi的文件拷贝过来.

1.9 Android出现:Your project path contains non-ASCII characters.

  • A.详细崩溃日志信息
  • B.查看崩溃类信息
  • C.项目中异常分析
  • D.引发崩溃日志的流程分析
  • F.解决办法
    • 很好解决啦,就是你的工程项目路径或者项目名称包含了中文,修改相关的名称就好
  • G.其他延申

关于其他内容介绍

01.关于博客汇总链接

  • 1.技术博客汇总
  • 2.开源项目汇总
  • 3.生活博客汇总
  • 4.喜马拉雅音频汇总
  • 5.其他汇总

02.关于我的博客

  • 我的个人站点:www.yczbj.org,www.ycbjie.cn
  • github:https://github.com/yangchong211
  • 知乎:https://www.zhihu.com/people/yang-chong-69-24/pins/posts
  • 简书:http://www.jianshu.com/u/b7b2c6ed9284
  • csdn:http://my.csdn.net/m0_37700275
  • 喜马拉雅听书:http://www.ximalaya.com/zhubo/71989305/
  • 开源中国:https://my.oschina.net/zbj1618/blog
  • 泡在网上的日子:http://www.jcodecraeer.com/member/content_list.php?channelid=1
  • 邮箱:yangchong211@163.com
  • 阿里云博客:https://yq.aliyun.com/users/article?spm=5176.100- 239.headeruserinfo.3.dT4bcV
  • segmentfault头条:https://segmentfault.com/u/xiangjianyu/articles

转载于:https://www.cnblogs.com/yc211/p/9832299.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边缘计算有哪些关键技术?

来源:智东西、金融界等网站原文链接:https://mp.weixin.qq.com/s/5QAHPMM8SNE3J8fpmDKFaQ如果要问物联网圈最火的概念有哪些?5G与边缘计算一定榜上有名,两者看似风马牛不相及,实则却在冥冥之中自有交集。5G时代&#x…

前端调用后端接口的错误(400)

前端调用后端接口时,浏览器debug出现Failed to load resource: the server responded with a status of 400 (Bad Request) 之后debug还会出现出现问题的url 这种问题一般是前后端参数不一致的问题 比如user类,里面包含属性id,name,age,gender等参数 …

cdh中hdfs非ha环境迁移Namenode与secondaryNamenode,从uc机器到阿里;

1.停掉外部接入服务; 2 NameNode Metadata备份; 2.1 备份fsimage数据,(该操作适用HA和非HA的NameNode),使用如下命令进行备份: [rootcdh01 dfs]# mkdir nn_metadata_back [rootcdh01 dfs]# hdfs…

insert和insertSelective区别

在数据库中给一些字段设置了默认值 调用mybatis逆向工程生成的insert方法保存时并没有给这些字段传值,insert的结果却是这些字段的值依旧为null 之后查看源码发现insert方法会给所有字段赋一次值,因此即便未传该字段的值,也会给该字段赋值&…

论文《城市大脑的定义与建设规范探讨》在IEEE(ICBAIE)发表

来源:城市大脑全球标准研究组城市大脑全球标准研究组论文《Discussion on the Definition and Construction Principles of City Brain》,2021年3月在2021 IEEE 2nd International Conference on Big Data, Artificial Intelligence and Internet of Thi…

修改类名后依旧按照原先的类名进行加载

在springMvcMybatis的项目里面 修改了一个类名,之后编译的时候报出了以下的错误 试过 clean也没有作用 黑色涂鸦部分为原先的类名 删掉target文件夹解决了问题 原因是target会保存之前编译好的路径,编译时如果再根据之前的路径去寻找,一定…

谷歌的深度学习在AI芯片中找到了一条关键路径

来源:AI前线 作者:Tiernan Ray译者:Sambodhi策划: 刘燕一年前,ZDNet 与谷歌大脑总监 Jeff Dean谈到 了该公司如何使用人工智能来推进定制芯片的内部开发,从而加快软件开发。Dean 指出,在有些情…

select2实现全选

实现select2全选所有的选项 传入select2的Id即可。 //select2全选所有的选项 function chooseSelect2All(select_id) {//document的对象,可以取到optionvar item document.getElementById(select_id)//$(#select_id);//jquery的对象,用来指定select2控…

mybatis 打印SQL

如果使用的是application.properties文件,加入如下配置: #打印SQL logging.level.com.jn.ssr.supererscuereporting.daodebug logging.level.com,后面的路径指的是mybatis对应的方法接口所在的包。并不是mapper.xml所在的包。 如果使用的是ap…

脑机接口猴子通过“意念”打游戏!马斯克:未来能让瘫痪者用意念玩手机

来源:新智元它是Pager,一只9岁的恒河猴,来自Neuralink,最近它刚刚get了新技能——用意念玩乒乓球游戏。6个星期前,Pager的脑袋里被植入了两个叫N1 Link的装置,工作人员用香蕉奶昔诱惑它玩游戏,屏…

struts2_HelloWorld

第一个Struts2程序-Hello 1.创建web工程struts2-01-Hello 2.导入jar包到bin目录,jar地址: https://files.cnblogs.com/files/aihuadung/struts%E6%89%80%E9%9C%80jar%E5%8C%85.zip 3.配置web.xml文件 <?xml version"1.0" encoding"UTF-8"?><!DO…

centos 7 网络设置与图像化界面下载

①打开虚拟机的设置&#xff0c;找到网络设置。再启用网卡1&#xff0c;选择连接方式为Host-only&#xff0c;界面名称选择VirtualBox Host-Only Ethernet Adapter&#xff0c;设置如下图 提示&#xff1a; 1.对虚拟机网络设置&#xff0c;需要先关闭虚拟机&#xff1b; 2.这里…

逻辑的计算进路--从莱布尼茨到图灵的逻辑发展

来源&#xff1a;图灵人工智能【作者单位&#xff1a;北京语言大学信息科学学院中国社会科学院哲学所】摘要&#xff1a;现代逻辑肇始于莱布尼茨&#xff0c;在布尔和弗雷格处发生了分流&#xff0c;形成了所谓的逻辑的代数传统和逻辑的语言传统&#xff0c;然而&#xff0c;无…

c# 窗体启动后自动执行 Form_Load事件注册及调用

很多时候我们需要在程序一开始后立即触发执行一些程序。这时候需要调用Form_Load。 首先编写事件程序块&#xff0c;编写完后即可再里面添加需要执行的代码。 在结构体之后写就行。添加之前的代码如下&#xff1a; using System;using System.Collections.Generic;using Syste…

上海交大与《Science》发布125个最具挑战的科学问题

来源&#xff1a;澎湃新闻“我们可以预测下一次流行病吗&#xff1f;”“我们会找到治疗感冒的方法吗&#xff1f;”“什么是重力&#xff1f;”“人类有一天会不得不离开地球吗&#xff1f;”“什么是成瘾&#xff1f;”《Science&#xff08;科学&#xff09;》/美国科学促进…

Spring --getBean用法

1.在初始化时保存ApplicationContext对象 2.通过Spring提供的utils类获取ApplicationContext对象 3.继承自抽象类ApplicationObjectSupport 4.继承自抽象类WebApplicationObjectSupport 5.实现接口ApplicationContextAware 6.通过Spring提供的ContextLoader 来说一下实现接…

Turtle库(海龟)

turtle库&#xff08;会图库&#xff09;标准库第三方库python计算生态库图体布局turtle.setup(width,height,startx,starty) 设置窗体大小及位置&#xff08;右上角位置电脑屏幕位置&#xff09;turtle.screensize(widith,height,"颜色")空间坐标体系绝对坐标turtle…

离体猪脑实验的困惑

© Thomas Prior来源&#xff1a;利维坦文&#xff1a;Philip Jaekl译&#xff1a;Yord校对&#xff1a;药师令人意外的是&#xff0c;死亡的定义不太牢靠。20世纪50年代之前&#xff0c;人们对死亡的定义通常是心跳停止且没有自主呼吸。但在1968年&#xff0c;哈佛医学院特…

sqlmap的简单用法

sqlmap 是一个开源渗透测试工具&#xff0c;它可以自动检测和利用 SQL 注入漏洞并接管数据库服务器。它具有强大的检测引擎&#xff0c;同时有众多功能&#xff0c;包括数据库指纹识别、从数据库中获取数据、访问底层文件系统以及在操作系统上带内连接执行命令。 安装完python…

mysql的字码设置方法

我是按照这篇文章来的https://www.linuxidc.com/Linux/2016-09/135273.htm 但是看样子觉得https://www.cnblogs.com/xiaoluo501395377/archive/2013/05/14/3077880.html这篇文章也像是靠谱的样子 最后放上我的my.cnf [mysqld] datadir/var/lib/mysql socket/var/lib/mysql/mysq…