八股中的记录

1. protected修饰符:同包或子类(不同包)

        区分普通人和专业人调用的一些方法

2. 抽象:abstract修饰类和方法

        抽象类不可实例化,避免错误的new对象

        抽象方法是用abstract修饰的方法声明,没有方法体,可以视为代码化的业务规范

        子类必须实现父类的抽象方法

3. 接口:包含一堆抽象方法,没有属性

        实现接口的类必须实现所有抽象方法(不必abstract修饰),提供一种特定角色(Child类,Pupil接口)。

        一个类实现了一个接口,它同时包含类类型和接口类型,实例使用接口类型时,强调的是一种特殊角色。

        接口也可以继承,子接口自动拥有父接口的抽象方法;多重继承,弥补了类的单一继承

        接口中可以使用default关键字修饰方法,定义默认方法,提供默认实现

4. Collection集合框架:一组元素,可添加、删除、遍历、有数量。(弥补数组长度固定的缺陷)

  • List:有顺序、可重复
  • Queue:有头有尾、先进先出
  • Set:无序、不重复   (口袋集合)

        Collections工具类:Collections.sort(List list, Compataor cmp)可以自定义比较器

(1). ArrayList:动态扩容的数组

        容量即最大能放多少个元素,当放满了,需扩容至当前的1.5倍,创建容量更大的数组,将原数组拷贝过去(效率低)。当new未指定容量,第一次add添加元素时,初始化容量为10。

       查询、末尾增删性能好,数组中间增删性能差(移动元素)——>链表。

       无法存储大数据量,无法找到一块很大的连续内存空间。

        Vector底层是数组,是线程安全的(synchronized关键字)。可以调用Collection工具类中的static List synchronizedList(List list)将ArrayList变成线程安全的。

(2). LinkedList:双向链表,first、last头尾节点

        查询效率低(get(index),但从头遍历),增删效率高。有下标但内存不一定连续。

        add(element, index)指定位置插入,remove(index)指定位置删除

        addFirst、addLast、pollFirst、pollLast、getFirst、getLast 头尾增删查

        LinkedList.add只能添加元素至末尾;ListIterator接口的add方法可以添加至链表中间。

(3). Set:无序(没有索引)、不重复

        与Collection差不多,但更强调不重复唯一性

        add时判断是否重复:先比hashcode,hashcode相同再用equals判断逻辑内容是否相同

        有三个实现类:HashSet(无序)、LinkedHashSet(按添加顺序)、TreeSet(Unicode编码顺序)

5. Map

6. 线程

(1). 继承Thread类和实现Runnable接口:Thread类实现了Runnable接口

如果涉及到多个线程共享资源,使用Runnable接口方式,避免了单继承的限制。

Thread类有start()——>start0()——>run()方法,Runnable只有run()。start并不会马上执行线程,只是可运行状态,取决于cpu调度。

(2). 常用方法:

(3). 线程生命周期:7种状态(new、可执行(挂起/就绪、运行)、终止、等待、计时等待、阻塞)

(4). 线程终止:通知方式,A线程想终止B线程,就要在A内有B对象,通过setLoop方法终止

        B中奖loop作为循环条件while(loop),在A中调用b.setLoop(false)

(5). 同步:敏感数组不允许被多个线程同时访问

        synchronized关键字,可使用代码块和方法,推荐代码块(必须是线程们的同一个对象)

        释放锁:正常结束;return和break;异常;wait()

(6). 守护线程:当其他线程结束以后,守护线程也会结束,并不是立马结束,要给cpu反应时间

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

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

相关文章

【k8s】Kubernetes 1.29.4离线安装部署(总)

(一)kubernetes1.29.4离线部署之-安装文件准备 (二)kubernetes1.29.4离线部署之-镜像文件准备 (三)kubernetes1.29.4离线部署之-环境初始化 (四)kubernetes1.29.4离线部署之-组件安装…

好看的混淆矩阵

网上绘制的混淆矩阵都不太满意。。。经过本人多次实验,如下混淆矩阵最为美观,特此记录 import matplotlib matplotlib.use(Agg) from matplotlib import rcParamsimport matplotlib.pyplot as plt import numpy as np# 给定混淆矩阵 cm np.array([[683…

使用可穿戴传感器和设备进行压力检测——综述摘录

用于压力检测的设备: Empatica E4腕带:该设备是腕带,是实时生理数据流和可视化传感器。作为医疗级可穿戴设备,它使研究人员能够收集多种生理数据,例如用于HRV分析的BVP,以及反映皮肤特定区域不断波动的电特…

2024用云渲染好还是自己渲染好!

​cg动画的渲染上经常需要使用到“云渲染”,当然也有小型的动画渲染使用的自己本地电脑渲染。云渲染可节省时间,减少硬件投资;本地电脑渲染就比较灵活的,但是需要高配置的硬件支持,那么两者那个好呢,一起来…

第一个Spring Boot程序

目录 一、Spring Boot介绍 二、创建Spring Boot项目 1、插件安装(专业版不需要) 2、创建SpringBoot项目 (1)这里如果插件下载失败,解决方案: (2)项目启动失败,解决…

skywalking-agent 代码调试

之前已经将 oap 和 ui 调试成功了,今天排查一个 agent 的采集问题,又研究了下 agent 代码如何调试,这下终于齐活了,以后 skywalking 再有问题,直接使用调试大法。 废话不多说,我们看下如何搞,步…

SpringBoot中异步执行事务REQUIRED和REQUIRED_NEW的区别

springboot中事务的使用方式 在spring的bean中,要开启数据库事务只需要在方法中标注注解 Transactional 注解常用的参数有 Class[] rollbackFor() default {} 指定回滚异常Propagation propagation() default Propagation.REQUIRED 事务的传播机制Isolation iso…

增强现实(AR)技术的应用场景

增强现实(AR)技术将虚拟信息与现实世界融合,为用户提供更加直观、交互式的体验。AR技术具有广泛的应用前景,可以应用于各行各业。以下是一些AR的应用场景。北京木奇移动技术有限公司,专业的软件外包开发公司&#xff0…

【Python-闭包】

Python-闭包 ■ 闭包特性■ 简单闭包■ 使用nonlocal关键字修改外部函数的值■ 使用闭包实现ATM小案例 ■ 闭包特性 ■ 简单闭包 def outer(logo):def inner(msg):print(f"<{logo}>{msg}<{logo}>")return innerfn1 outer("程序员") fn1(&quo…

node.js版本降级/升级

第一步.先清空本地安装的node.js版本 按健winR弹出窗口&#xff0c;键盘输入cmd,然后敲回车&#xff08;或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出&#xff0c;输入cmd再点击回车键&#xff09; 进入命令控制行窗口&#xff0c;输入where node&#xff0c;查看本地…

2024年深圳杯东三省数学建模联赛A题论文首发+问题一代码分享

深圳杯A题论文代码分享资料链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1L2NVgoefSW-yuqZjEB3wcw 提取码&#xff1a;sxjm 基于优化模型的多个火箭残骸的准确定位 摘要 在现代航天技术中&#xff0c;火箭是实现空间探索的关键工具。由于火箭发射过程中的高成…

matlab新手快速上手3(差分进化算法)

本文用经典差分进化框架模板&#xff0c;对matlab新手友好&#xff0c;快速上手看懂matlab代码&#xff0c;快速应用实践&#xff0c;源代码在文末给出。 差分进化算法定义&#xff1a; 差分进化算法&#xff08;Differential Evolution&#xff0c;简称DE算法&#xff09;是…

RD77MS2 三菱iQ-R系列2轴简单运动模块(SSCNETⅢ/H型)

RD77MS2 三菱iQ-R系列2轴简单运动模块(SSCNETⅢ/H型) RD77MS2用户手册,RD77MS2外部连接,RD77MS2规格。RD77MS2参数说明&#xff1a;2轴;SSCNETⅢ/H连接&#xff0c;位置控制、同步控制、速度.转矩控制、轨迹控制;控制单位mm、inch、degree、pulse;定位数据600数据轴。 RD77MS2图…

导出JVM的线程信息

1. 查询出Java应用的进程的PID ps -ef|grep java 此时的PID是 33 2. 使用JDK自带的工具jstack导出日志 jstack -l 33 > 2022jstack.log 3.然后直接下载

Python 基础、流程、容器、函数

一、基础语法 1.1 前言 1.1.1 Python简介 Python是一门编程语言&#xff0c;Python的作者是Guido van Rossum&#xff08;龟叔&#xff09; Python优点&#xff1a;简单易学 Python与嵌入式、集成电路行业 强大的库和工具生态系统&#xff1a;Python拥有广泛而强大的库和…

免费GPU Google Colab保姆级使用攻略,实现数据集快速下载

Colab&#xff08;Colaboratory&#xff09;是一个基于云的交互式开发环境&#xff0c;专为数据科学、机器学习和人工智能任务设计。Colab 由 Google 提供&#xff0c;允许用户在浏览器中直接编写、运行、共享和协作处理 Python代码&#xff0c;特别是那些涉及大数据处理、计算…

semaphore信号量使用+原理分析

1.概述 Semaphore 信号量&#xff0c;相当于一个计数器&#xff0c;通常用来限制线程的数量。 每个线程操作前会先获取一个许可证&#xff0c;逻辑处理完成之后就归还这个许可证。 通俗的解释&#xff1a;相当于一个停车场&#xff0c;有10个停车位&#xff0c;进来一个车&am…

比较器仿真PSS+PNOISE测噪声

没有目录标题 一、参考二、PSSPnoise测输入噪声电压三、具体步骤&#xff1a;1.设置PSS&#xff1a;2.设置pnoise&#xff1a;3.根据仿真结果计算输出噪声电压 4.计算比较器的gain和输入噪声电压4.1 计算gain的方式一和对应的输入噪声电压4.2 计算gain的方式二和对应的输入噪声…

电脑提示msvcp110.dll是什么意思?7个实测有效方法教你搞定

在使用Windows操作系统的过程中&#xff0c;用户难免会遭遇与动态链接库&#xff08;DLL&#xff09;文件相关的问题&#xff0c;其中MSVCP110.dll便是其中之一。作为Microsoft Visual C Redistributable Package的重要组成部分&#xff0c;MSVCP110.dll对于许多基于C开发的应用…