Java进阶笔记(中级)

-----接Java进阶笔记(初级)-----

目录
      • 集合
      • 多线程
  • 集合
    • ArrayList
      • 可以通过List来接收ArrayList对象(因为ArrayList实现了List接口)
        方法:接口名 柄名 = new 实现了接口的类();
        PS: List list = new ArrayList();
      • 遍历方法:1.使用迭代器Iterator遍历;2.用for循环遍历;3.用增强型for循环
    • LinkedList
      • 实现了List接口
      • 实现了双向链表结构Deque,可以很方便的在头尾插入删除数据
        addFirst(),removeFirst() //头部插入,删除
        addLast(),removeLast() //尾部插入,删除
      • 实现了Queue接口(先进先出队列 FIFO)
        offer() ----将元素添加到队尾
        poll() ----取出第一个元素
        peek() —获得第一个元素但不取出
    • 二叉树(排序):
      • 选定一个根节点
      • 插入数据,小、相同的放左边,大的放右边
      • 采用中序遍历即: 中间的数遍历后放在中间
    • HashMap
      • HashMap储存数据的方式是—— 键值对
      • 键不能重复,值可以重复
    • HashSet
      • 元素不能重复
      • 没有按照元素的插入顺序排列
      • 不能通过get()方法获取元素,遍历需要用到迭代器或增强for循环
    • Collection接口
      • Collection是 Set,List ,Queue和 Deque的接口
      • Collection是 集合的顶层接口,不能被实例化
    • Collections
      • Collections是一个类,容器的工具类
      • 用于操作集合,如list,set
      • 常用方法:
        • sort() -----(对集合进行排序,默认升序排序)
        • reverse()-----(反转集合中元素)
        • shuffle()----- (混淆集合中数据的顺序)
        • swap(List list,int i,int j)-----(交换集合中i和j下标的数据)
    • HashTable
      • 和Hashtable一样,都实现了Map接口,都用键值对保存数据
      • 区别:
        • HashMap可以存放 null值,Hashtable不能存放null值
        • HashMap不是线程安全的类,Hashtable是线程安全的类
    • 几种Set
      • 参考链接
    • Comparable接口
      • 实现Comparable接口可以强行对实现它的每个类的对象进行整体排序
    • 泛型
      • 把类型当作是参数一样传递
      • 在容器后面添加,Type可以是类,抽象类,接口
      • 泛型类:在类的声明后加上一个
      • 泛型转型
        • 父类泛型不能转型为子类泛型
        • 子类泛型不可以转换为父类泛型
  • 多线程
    • 创建多线程
      • 有3种方式创建多线程:
        • 继承线程类:继承Thread,并且重写run方法
        • 实现Runnable接口:实现Runnable接口,重写run方法,
          借助线程对象的start()方法启动一个新的线程,new Thread(对象名).start()
        • 匿名类:继承Thread,重写run方法,直接在run方法中写业务代码
    • 常用方法:
      • sleep() -----当前线程休眠(暂停)
      • join() -----加入到当前线程中
      • setPriority() -----线程优先级
      • setDaemon() -----守护线程, 当所有的线程都是守护线程时,当前进程结束
    • 同步
      • 使用synchronized关键字实现线程同步:
        • synchronized(同步对象名称){
          //此处的代码只有占有了同步对象后才可以执行
          //在同一时间,只能被一个线程占有
          }
        • 如果一个类,其方法都是有synchronized修饰的,那么该类就叫做线程安全的类
        • 非线程安全的之所以会比线程安全的快,是因为不需要同步,省略了些时间
        • StringBuffer 是线程安全的,StringBuilder 是非线程安全的
          单线程用StringBuilder会更快些,多线程需要用StringBuffer保证数据的安全性
        • 借助Collections.synchronizedList,可以把ArrayList转换为线程安全的List。
    • 死锁
      • 产生条件死锁
      • 解决办法:
        (1)预防死锁,破坏产生死锁的必要条件
        (2)避免死锁,例如银行家算法(Banker Algorithm)。
        (3)定期运行检测死锁算法对系统的状态进行检测,发现死锁便予以解除。
    • 线程交互
      • this.wait():让占有this的线程等待,并临时释放占用
      • this.notify():唤醒等待在this的单个线程。
      • this.notifyAll():唤醒等待在this的所有线程。
      • wait方法和notify方法是Object上的方法,因为所有的Object都可以被用来作为同步对象
    • 线程池
      线程池

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

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

相关文章

21.2.2 保存

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 如果打开某个Excel文件修改后,需要保存到原文件或者用新的文件名保存,在 Excel.Application.Quit() 前使用W…

基于微信小程序的校园水电费管理平台设计与实现

目录 摘要 系统展示 技术介绍 MySQL数据库 Vue框架 代码实现 管理员实现登录后端代码 连接数据库 前端代码实现 获取源码 摘要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用…

基于springboot的体质测试数据分析及可视化设计

作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 项目包含: 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

离散时间傅里叶变换(DTFT)公式详解:周期性与连续性剖析

摘要 离散时间傅里叶变换(DTFT)是数字信号处理领域的重要工具,它能将离散时间信号从时域转换到频域,揭示信号的频率特性。本文将深入解读DTFT公式,详细阐述其具有周期性和连续性的原因,帮助读者全面理解DT…

Docker 安装详细教程(适用于CentOS 7 系统)

目录 步骤如下: 1. 卸载旧版 Docker 2. 配置 Docker 的 YUM 仓库 3. 安装 Docker 4. 启动 Docker 并验证安装 5. 配置 Docker 镜像加速 总结 前言 Docker 分为 CE 和 EE 两大版本。CE即社区版(免费,支持周期7个月)&#xf…

Mac mini m4本地跑大模型(ollama + llama + ComfyUI + Stable Diffusion | flux)

change log 2024-12-11 10:28(推荐重新观看) 针对绘画大模型的使用做进一步的详细操作(flux1dev) 见篇节(绘画大模型) 2024-12-10 更新了基础的chat大模型和绘画大模型的基础环境搭建。 安装chat大模型&am…

基于PLC的电热水器的水箱水位控制系统(论文+源码

1总体方案设计 本设计基于PLC的电热水器的水箱水位控制系统的整体结构如图2.1所示,系统采用S7-1200 PLC为控制器,可以实现电热水器水箱中的水位、水温检测,并且用户可以设定目标水位和水温,在自动模式下,当水位低于低…

专业学习|一文了解并实操自适应大邻域搜索(讲解代码)

一、自适应大邻域搜索概念介绍 自适应大邻域搜索(Adaptive Large Neighborhood Search,ALNS)是一种用于解决组合优化问题的元启发式算法。以下是关于它的详细介绍: -自适应大领域搜索的核心思想是:破坏解、修复解、动…

【Leetcode】4. 寻找两个正序数组的中位数

一、题目描述 给定两个大小分别为 m m m 和 n n n 的正序(从小到大)数组 n u m s 1 nums1 nums1 和 n u m s 2 nums2 nums2。请你找出并返回这两个正序数组的中位数 。 算法的时间复杂度应该为 O ( l o g ( m n ) ) O(log (mn)) O(log(mn)) 。 示…

如何优化垃圾回收机制?

垃圾回收机制 掌握 GC 算法之前,我们需要先弄清楚 3 个问题。第一,回收发生在哪里?第二,对象在 什么时候可以被回收?第三,如何回收这些对象? 回收发生在哪里? JVM 的内存区域中&…

吴签磁力_简单多功能的磁力搜索工具

磁力搜索,一个比较冷门的话题,但是它能解决我们对于音乐、影视、游戏、软件等资源的需求,今天给大家安利一款深夜学习必备的磁力搜索引擎——吴签磁力。 “吴签磁力”是一款集搜索、下载于一体的多功能磁力搜索引擎,它巧妙地将百度…

spring基础总结

先修知识:依赖注入,反转控制,生命周期 IDEA快捷键 Ctrl Altm:提取方法,设置trycatch 通用快捷键: Ctrl F:在当前文件中查找文本。Ctrl R:在当前文件中替换文本。Ctrl Z:撤销…

MyBatis XML文件配置

目录 一、 配置连接字符串和MyBatis 二、书写持久层代码 2.1 添加Mapper接口 2.2 添加UserlnfoXMLMapper.xml 三、增删改查 3.1 、增(Insert) 3.2、删(Delete) 3.3、改 (Update) 3.4、查 (Select) MyBatisXML的方式需要以下两步&am…

QT:对象树

1.概念 Qt 中的对象树是一种以树形结构组织 Qt 对象的方式。当创建一个QObject(Qt 中大多数类的基类)或其派生类的对象时,可以为其指定一个父对象(parent)。这个对象就会被添加到其父对象的子对象列表中,形…

设备通过国标GB28181接入EasyCVR,显示在线但视频无法播放的原因排查

安防监控EasyCVR平台支持多种视频源接入,包括但不限于IP摄像头、NVR、编码器、流媒体服务器等。平台采用高效的视频流接入技术,支持大规模视频流的并发接入,确保视频流的稳定性和流畅性。 有用户反馈,项目现场使用国标GB28181接入…

本地安装部署deepseek

在截图下载工具(地址不方便粘贴过不审核)复制安装程序链接下载模型管理工具ollama,下一步下一步,有需要也可以下载linux版的 githup:https://github.com/ollama/ollama/releases/tag/v0.5.7 安装程序:https://github.com/ollama…

熟练掌握Http协议

目录 基本概念请求数据Get请求方式和Post请求方式 响应数据响应状态码 基本概念 Http协议全称超文本传输协议(HyperText Transfer Protocol),是网络通信中应用层的协议,规定了浏览器和web服务器数据传输的格式和规则 Http应用层协议具有以下特点&#…

在Mapbox GL JS中“line-pattern”的使用详解

在Mapbox GL JS中,line-pattern 是一种用于在地图上绘制带有图案的线条的样式属性。通过 line-pattern,你可以使用自定义的图像作为线条的图案,而不是使用纯色或渐变。 1. 基本概念 line-pattern: 该属性允许你指定一个图像作为线条的图案。…

QT:信号和槽

目录 1.概念 2.信号和槽的使用 2.1代码的方式使用 2.1.1.使用connect关联 2.2图形化界面的方式使用 2.2.1使用流程 2.2.2使用名字关联槽函数 3.自定义信号和槽函数 3.1自定义槽函数 3.2自定义信号 4.总结 1.概念 信号和槽是QT特有的一种机制,信号和槽都是…

【数据分析】豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask)

豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask) 豆瓣电影Top250官网:https://movie.douban.com/top250写在前面 实验目的:实现豆瓣电影Top250详情的数据分析与Web网页可视化。电脑系统:Windows使用软件:PyCharm、NavicatPython版本:Python 3.…