Java基础知识随记

  1. ==与equals()的区别

    ==比较的是两个对象的地址,或基本数据类型的值。

    equals()是Object中的方法,如果没重写的话比较的也是对象的地址,在String类中重写了equals()方法所以比较的是对象的内容

  2. Java中只有值传递

    就算是传入的是对象的引用,也知识将引用赋值后传递,并不是传递对象。

  3. 线程的基本状态

    初始状态、运行状态、阻塞状态、等待状态、终止状态、等待超时状态

  4. transient 修饰的变量不会被序列化

  5. 关于JVM和JDK、JRE

    ​ JVM是运行Java字节码的虚拟机,JVM具有不同系统的实现,目的是为了相同的字节码都能给出同样的结果,即所说的一处编译到处运行,.java文件通过javac编译成.class文件,.class文件再被JVM所解释成机器码。

    JDK可以用于创建程序,JRE不能创建程序。

  6. Java与C++的区别

    • 都是面向对象编程
    • Java没有指针
    • Java是单继承
    • Java有垃圾回收,无需手动释放内存
    • C++字符串以’\0’结束
  7. String、StringBuffer、StringBuilder

    String 底层是final修饰的char数组(JDK1.9后改为byte数组),所以String是不可修改的,线程安全的,String的修改都是创建一份新的String。

    StringBuffer和StringBuilder底层char数组没有用final修饰,所以是可以修改的,但是StringBuffer是线程安全的,StringBuilder是线程不安全的。

    String:少量数据

    StringBuffer:多线程大量数据

    StringBuilder:单线程大量数据

  8. 接口和抽象类

    • 接口方法默认是public
    • jdk8之前接口方法不能实现,jdk8之后接口可以使用静态方法,也可以使用default关键字实现默认方法,默认方法实现采取覆盖的方式,如果子类也实现了方法则会把接口的默认方法覆盖。如果实现了多个接口,多个接口的默认方法相同则就必须重写避免冲突。
    • jdk9接口引入私有方法和私有静态方法
    • 接口中只能有static、final修饰的变量
    • 抽象类可以有非抽象方法
  9. 成员变量与局部变量

    • 从语法来看,成员变量属于类,而局部变量属于方法参数或方法体,局部变量不同被static所修饰
    • 从内存上看,static修饰的成员变量在方法区的常量池,未用static修饰的成员变量则属于实例对象,而实例对象存在与堆中,局部变量则存在与栈中
    • 生存时间上看,成员变量随着对象的创建而创建随着对象的销毁而销毁,而局部变量随着方法的调用而创建随着方法的结束而消失
    • 成员变量会赋予默认值,而局部变量不会
  10. 线程的执行流程

    • 初始状态,线程被创建了,但还没执行start()方法。
    • 运行状态,又可细分为就绪(READY)和运行(RUNNING),线程执行start()方法后进入就绪状态等待获得cup时间片,然后进入运行。
    • 等待状态,当线程执行wait()方法时就会进入等待状态,只有其他线程唤醒或者超时才能重新进入运行状态
    • 等待超时状态,当等待时间超过设置时间时就会自动进入运行状态
    • 阻塞状态,当线程调用同步方法时,没有获得锁就会进入阻塞状态
  11. final关键字

    • 修饰变量:修饰基本数据类型时,一旦初始化就不能修改,修饰引用类型时,初始化后就不能再指向其他对象。
    • 修饰类:不能被继承,所有方法隐式的声明为final
    • 修饰方法:防止继承类修改,所有private方法都隐式的声明为final
  12. 异常finally块不执行情况

    • finally语句块第一行发生异常,则不执行,如果在其他行发生异常,程序还是会执行
    • 前面使用system.exit(int) 退出程序
    • 程序所在线程死亡
    • CPU关闭
  13. transient 关键字修饰的变量不会被序列化

  14. 七种事务传播行为

    传播行为操作
    PROPAGATION_MANDATORY强制,表示方法必须运行在事务中,如果事务不存在则抛出异常
    PROPAGATION_NESTED支持当前事务,新增savepoint点,与当前事务同步提交回滚
    PROPAGATION_NEVER从不,方法不能运行在事务中,如果有事务则抛出异常
    PROPAGATION_NOT_SUPPORTED方法不能运行在事务中,否则该方法将被挂起
    PROPAGATION_REQUIRED要求,方法必须运行在事务中,没有事务就创建新的事务
    PROPAGATION_REQUIRES_NEW始终创建新的事务来运行方法
    PROPAGATION_SUPPORTS有事务就按事务执行,没有事务就按非事务执行
  15. 五中事务隔离级别

    脏读:读取了没有意义的数据,例如一个事务一在更新一条记录,但事务没有提交前另一个事务二读取了这条记录的数据,之后事务一提交了,那么事务二所读取的数据则是脏数据

    不可重复读取:在事务A中需要多次读取数据,在事务A读取数据的过程中,事务B修改了数据,那么就会导致事务A前后读取的数据不一致

    幻读:事务A对数据表进行操作,但是事务A操作的过程中,事务B对表进行了新增或删除,导致事务A操作过程中数据发送了变化。

    不可重复读取幻读相似,但是不可重复读取重点是说读取的数据改变,只需要锁住行就行,而幻读重点说明新增和删除的改变,需要锁住表。

    隔离级别操作
    ISOLATION_DEFAULT使用数据库默认隔离级别,Mysql的默认隔离级别是可重复读取
    ISOLATION_READ_UNCOMMITTED允许读取未提交的数据,可能导致脏读、不可重复读、幻读
    ISOLATION_READ_COMMITTED允许读取事务中已提交的数据,可能导致不可重复读、幻读
    ISOLATION_REPEATABLE_READ不允许读取一个事务正在操作的数据(但是可以修改表中的其他数据),可能导致幻读
    ISOLATION_SERIALIZABLE串行化,按顺序执行,最安全,但是效率低。
  16. 装箱与拆箱

    JDK1.5之后当声明为:

    ​ Integer i = 1; 时会自动装箱,并且[-128,127]之间的的数在IntegerCache.cache中已经存在缓存,所以当需要装箱时则拿出缓存中的Integer对象,超过范围的则创建一个新的Integer对象。

    当Integer对象运行运算时:

     Integer a = 1 ; 
     Integer b = 2;
     Integer c = a + b;
    
    • a、b初始化时会自动装箱

    • a + b执行时会先将a和b先拆箱,执行运算,令Integer c = 40,然后在触发装箱机制,然后再将运算结果装箱。

同步定位与地图构建(SLAM)技术为移动机器人或自主载具在未知空间中的导航提供了核心支撑。借助该技术,机器人能够在探索过程中实时构建环境地图并确定自身位置。典型的SLAM流程涵盖传感器数据采集、数据处理、状态估计及地图生成等环节,其核心挑战在于有效处理定位与环境建模中的各类不确定性。 Matlab作为工程计算与数据可视化领域广泛应用的数学软件,具备丰富的内置函数与专用工具箱,尤其适用于算法开发与仿真验证。在SLAM研究方面,Matlab可用于模拟传感器输出、实现定位建图算法,并进行系统性能评估。其仿真环境能显著降低实验成本,加速算法开发与验证周期。 本次“SLAM-基于Matlab的同步定位与建图仿真实践项目”通过Matlab平台完整再现了SLAM的关键流程,包括数据采集、滤波估计、特征提取、数据关联与地图更新等核心模块。该项目不仅呈现了SLAM技术的实际应用场景,更为机器人导航与自主移动领域的研究人员提供了系统的实践参考。 项目涉及的核心技术要点主要包括:传感器模型(如激光雷达与视觉传感器)的建立与应用、特征匹配与数据关联方法、滤波器设计(如扩展卡尔曼滤波与粒子滤波)、图优化框架(如GTSAM与Ceres Solver)以及路径规划与避障策略。通过项目实践,参与者可深入掌握SLAM算法的实现原理,并提升相关算法的设计与调试能力。 该项目同时注重理论向工程实践的转化,为机器人技术领域的学习者提供了宝贵的实操经验。Matlab仿真环境将复杂的技术问题可视化与可操作化,显著降低了学习门槛,提升了学习效率与质量。 实践过程中,学习者将直面SLAM技术在实际应用中遇到的典型问题,包括传感器误差补偿、动态环境下的建图定位挑战以及计算资源优化等。这些问题的解决对推动SLAM技术的产业化应用具有重要价值。 SLAM技术在工业自动化、服务机器人、自动驾驶及无人机等领域的应用前景广阔。掌握该项技术不仅有助于提升个人专业能力,也为相关行业的技术发展提供了重要支撑。随着技术进步与应用场景的持续拓展,SLAM技术的重要性将日益凸显。 本实践项目作为综合性学习资源,为机器人技术领域的专业人员提供了深入研习SLAM技术的实践平台。通过Matlab这一高效工具,参与者能够直观理解SLAM的实现过程,掌握关键算法,并将理论知识系统应用于实际工程问题的解决之中。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值