章节1-前置知识概述

75 阅读5分钟
常用windows快捷键
  • win + d : 返回桌面
  • win + e : 打开资源管理器
计算机组成概述
  • 内存:cpu运算时数据存放地址
Java语言概述与特点
  • Java底层语言由c++编写
  • Java自动垃圾回收
    • 优点:若无垃圾回收,当程序中设定一块内存分配后若忘记释放,则内存将会一直被占用。多次未及时释放内存,就会造成内存被占用过多,最终被占用玩,造成内存泄漏-CSDN博客
    • 缺点:
      • 自动回收会过多的占用内存,因为当内存占用累积到一定才会自动执行回收,如此会消耗更多的内存
      • 当作一些对实时响应要求的场景中,比如游戏,在游戏过程中触发垃圾,有可能导致不可预测的延迟,‌造成游戏卡顿或掉帧
  • Java跨平台性(一次编译可以在多个系统中运行)
    • 原理:Java有各个系统对应的jdk安装包,jdk安装包里面包含jvm虚拟机。所有的代码都会被编译为统一的字节码文件(各个系统编译出的字节码文件都统一),字节码文件只能由jvm虚拟机解析。如此Java代码并没有与操作系统交互。而是在jvm虚拟机中编译执行,所以可以做到(一次编译可以在多个系统中运行)
    • 缺点:Java所有的代码都是由虚拟机处理,则Java代码无法直接操作计算机中的内存,只能通过虚拟机获取内存并分配,造成了开发上的很多局限性。如此就不能充分使用设备的性能。
Java为什么不能做游戏
  • 当作一些对实时响应要求的场景中,比如游戏,在游戏过程中触发垃圾,有可能导致不可预测的延迟,‌造成游戏卡顿或掉帧
  • Java所有的代码都是由虚拟机处理,则Java代码无法直接操作计算机中的内存,只能通过虚拟机获取内存并分配,造成了开发上的很多局限性。如此就不能充分使用设备的性能。
Java和python写脚本哪个好
  • Java编写脚本的优缺点

    1. 优点: a. 可靠性和稳定性:Java是一门静态类型的编程语言,它有严格的编译过程和异常处理机制,可以减少潜在的错误,并提供更稳定的脚本执行。 b. 高性能:Java在编译成字节码后进行解释执行,通常比解释性语言执行速度更快。 c. 跨平台兼容性:Java是一门跨平台的语言,可以在多个操作系统上运行,无需对代码进行修改。 d. 大型项目支持:Java可以处理复杂的任务和大型项目,提供了丰富的库和API。

    2. 缺点: a. 语法复杂:相较于其他脚本语言,如Python,Java的语法更加复杂,需要较长的学习曲线。 b. 开发速度较慢:Java的编写和编译过程相对耗时,会降低开发效率。 c. 内存占用较大:Java虚拟机的内存消耗较高,在一些资源受限的环境下可能不是最佳选择。

  • Python编写脚本的优缺点

    1. 优点: a. 简洁易读:Python的语法简单明了,易于阅读和理解,减少了开发人员的工作量。 b. 开发速度快:Python具有快速开发特性,便于快速迭代和原型开发。 c. 大量开源库支持:Python拥有庞大的开源库和第三方包,可以方便地进行功能扩展和集成。 d. 自由性和易学性:Python是一门开源的语言,并且有广泛的学习资源和社区支持。
    2. 缺点: a. 性能较低:相比于Java,在执行速度上,Python通常较慢,尤其在处理大型数据和计算密集型任务时性能略受限。 b. GIL限制:Python的全局解释锁(GIL)会限制多线程的并发性,影响多线程任务的效率。 c. 兼容性限制:由于Python是一门动态类型语言,其代码在运行前不会进行编译,因此在不同的Python版本之间可能存在兼容性问题。
全局解释器锁GIL
  • 全局解释器锁是计算机程序设计语言解释器用于同步线程的工具,确保在同一进程内任何时刻仅有一个线程在执行。在python中,GIL是一个互斥锁,它允许一个线程保持Python解释器的控制权,防止多线程同时执行Python字节码。这种机制的主要目的是简化内存管理并防止多线程同时操作Python对象引起的潜在问题。然而,这也意味着在多核CPU上,Python的多线程程序可能无法充分利用多核性能。

  • 作用和影响: GIL确保同一时刻只有一个线程执行Python字节码,这有助于简化内存管理并防止多线程环境下的竞态条件。然而,这也成为CPU密集型任务中的性能瓶颈,因为即使在现代多核处理器上,GIL也限制了并行执行的能力。

  • 绕过GIL的限制: 开发人员可以通过使用多进程代替多线程、使用并发库C扩展模块异步编程等方法来绕过GIL的限制,从而提高程序的并发性能和利用多核处理器的优势。

  • 总体来说,GIL是Python设计中的一个权衡,它在简化内存管理和防止并发问题方面发挥了作用,但同时也限制了多线程在CPU密集型任务中的性能。

为什么都用python写AI而不用Java
  • python语言更加简洁易懂,相较于Java没有那么多的编码规范与继承关系,开发效率更高。(次要原因)
  • python有更多的AI、算法等类库,可以更快速的支持AI的编写与搭建。而Java几乎没有AI方面的类库。