八股中的记录

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反应时间

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

半导体存储器整理

半导体存储器用来存储大量的二值数据,它是计算机等大型数字系统中不可缺少的组成部分。按照集成度划分,半导体存储器属于大规模集成电路。 目前半导体存储器可以分为两大类: 只读存储器(ROM,Read Only Memory&#xff…

MySQL连接失败

最近接手了公司的一个软件项目,通过打印日志,发现该软件会偶发出现连接MySQL数据库失败的问题。 首先排查是否是网络问题导致的连接失败。对该软件和MySQL的3306端口进行抓包,发现连接数据库失败时并没有出现tcp三次握手失败的情况。并且该软…

semaphore信号量使用+原理分析

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

按照以下步骤使用Transformer模型

“Transformer”是一种深度学习模型架构,用于处理序列数据,特别是在自然语言处理(NLP)领域中表现出色。它由Google Brain团队于2017年提出,并在机器翻译任务中取得了突破性的成果。Transformer的核心思想是完全基于自注…

指挥中心实战指挥平台-通信指挥类装备多链路聚合设备解决方案实例

一、建设目标及要求 坚持“一切为了实战、一切围绕实战、一切服务实战”的总要求,紧紧围绕大数据应用和自动化、智能化、智慧化这一主题主线,建设升级改造支队指挥中心,集成语音、视频、即时消息、短信、对讲、会议等多媒体通信能力&#xf…

基于SpringBoot的智慧物业管理设计与实现论文

摘  要 随着我国发展和城市开发,物业管理已形成规模,其效益也越来越明显。在经济效益对地方政府而言,主要体现为:减少了大量的财政补贴,对住宅区开发企业而言,能提高物业市场竞争力,使开发企…

场景 - 分库分表

分什么 数据量大分表,并发大分库 分表字段如何选择 如果对交易订单进行分表,可以选择的东西很多,比如说商户id,用户id,地区等等 分表的时候要考虑到数据倾斜问题 数据倾斜 比如说按商户号进行分表,一共…

什么是许可式邮件营销

许可式邮件营销(Permission-based Email Marketing)是一种营销策略,它依赖于接收者的同意或明确的许可来发送商业电子邮件。这种营销方式的核心在于尊重潜在客户或现有客户的选择权,通过提供价值和服务来建立和维护与客户的良好关…

@AutoWired和@Resource的区别

AutoWired和Resource的区别 这两个我们在项目中,经常去使用。很少有人知道他们有什么区别。下面我们将从 来源依赖查找顺序支持的参数依赖注入的用法支持 这四个方面来说明他们俩个的区别 来源 Autowired: 这是Spring框架自带的注解,用于实现自动依…

Git命令行操作(本地操作)

入口 1、任意目录》鼠标右键》Open Git Bash here 2、桌面快捷方式 本地库初始化 在本地库项目文件夹执行命令:git init 验证是否执行成功 .git目录中存放的是本地库相关的子目录和文件,不要删除、修改 设置签名 1、形式 用户名:tom Email地址:GoodMorning@qq.com 2、作…

六、项目发布-- 3. Node.js+express 编写书城首页API

前面那些准备工作做完之后,现在我们就具体来用Node.js来写一个简单的API 基本API编写: 建个后端文件夹,放到vscode打开 我们之前的代码都是前端代码,现在我们来做一个后端的代码。新建一个新的文件夹叫node_new_book&#xff0…

LateX的基础学习

what can i say 在text.tex中写下 \documentclass{article} \begin{document]Hello \LaTeX. \end{document} 关闭记事本,cmd中dir保存,用latex text.tex来编译,可以命令行慢慢编译,这可以做成bat文件 为什么不直接开始在texst…

第八讲:C语言指针(2)

目录 1、数组名的理解 2、使⽤指针访问数组 3、⼀维数组传参的本质 4、冒泡排序 5、⼆级指针 6、指针数组 7、指针数组模拟⼆维数组 1、数组名的理解 其实数组名本来就是地址&#xff0c;⽽且 是数组⾸元素的地址&#xff0c;例如&#xff1a; #include <stdio.h>…

C++信息学奥赛 数据结构认识

数据结构 1.1数据结构分类 1.2基本数据类型 1.3数字编码 1.4字符编码 1.1数据结构分类 数据结构如同一副稳固而多样的框架。为数据的有序组织提供了蓝图&#xff0c;算法得以在此基础上生动起来。 常用的数据结构包括哪些 &#xff0c; &#xff0c; &…

Redis篇:缓存击穿及解决方案

1.何为缓存击穿 缓存击穿问题也叫热点Key问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff08;有可能是正好过期了&#xff09;&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种&#xff1a; 互斥锁 逻…

书生·浦语大模型实战营之OpenXLab 部署 InternLM2 实践指南

书生浦语大模型实战营之OpenXLab 部署 InternLM2 实践指南 本文档将手把手教您如何在 OpenXLab 部署一个 InternLM2-7B chat 的应用 目录 资料介绍书生浦语 InternLM介绍OpenXLab浦源平台介绍部署 InternLM2-Chat-7B demo模型准备上传模型编写代码部署应用 资料介绍 书生浦语…

揭开ChatGPT面纱(1):准备工作(搭建开发环境运行OpenAI Demo)

文章目录 序言&#xff1a;探索人工智能的新篇章一、搭建开发环境二、编写并运行demo1.代码2.解析3.执行结果 本博客的gitlab仓库&#xff1a;地址&#xff0c;本博客对应01文件夹。 序言&#xff1a;探索人工智能的新篇章 随着人工智能技术的飞速发展&#xff0c;ChatGPT作为…

GITHUB的VB代码无法加载的问题解决

GITHUB里有不少好的VB代码&#xff0c;但是下载之后&#xff0c;经常出现工程加载出错的问题&#xff0c;例如&#xff1a; LOG文件为&#xff1a; 不能加载 0 行 0: 不能加载文件 D:\xxxx\Semi VB API Loader\frmMain.frm 。 原因其实很简单&#xff0c;github里的换行符是u…

OpenFE:开启数据特征工程新时代

OpenFE&#xff1a;开启数据特征工程新时代 数据特征工程是机器学习和数据分析领域中至关重要的一环&#xff0c;它涉及对原始数据进行处理和转换&#xff0c;以提取出有用的特征&#xff0c;为模型构建和预测提供更好的输入。在这个领域中&#xff0c;Python库OpenFE为数据科学…

高级控件4:Spinner

Spinner下拉列表组件 主要集合ArrayAdapter、SimpleAdapter以及自定义的Adapter&#xff08;继承自BaseAdapter&#xff09;配合使用实现下拉选择或者对话框中选择某一条目。下拉使用的更多&#xff0c;所以&#xff0c;接下来的案例也会重在演示下拉效果。 本次基本就是上代…