当前位置: 首页 > news >正文

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都可以被用来作为同步对象
    • 线程池
      线程池

相关文章:

Java进阶笔记(中级)

-----接Java进阶笔记(初级)----- 目录 集合多线程 集合 ArrayList 可以通过List来接收ArrayList对象(因为ArrayList实现了List接口) 方法:接口名 柄名 new 实现了接口的类(); PS: List list new ArrayList();遍历…...

2025游戏行业的趋势预测

一、市场现状 从总产值的角度来看,游戏总产值的增长率已经放缓,由增量市场转化为存量市场,整体的竞争强度将会加大,技术水平不强(开发技术弱、产品品质低、开发效率低)的公司将会面临更大的生存的困难。 从…...

4-ET框架demo的运行

开始操作 开始运行报错 编译Unity项目 状态同步demo运行 1-设置构建参数 CodeMode:ClientServer EPlayMode:EditorSimulateMode 点击ReGeneratoePerojectFiles调整代码结构 2-编译 在Unity.sln下编译项目 3-运行 以帧同步模式运行 1-合端运行 1.1 修改帧同步标记 …...

kamailio源文件modules.lst的内容解释

在执行make cfg 后,在kamailio/src目录下有一个文件modules.lst,内容如下: # this file is autogenerated by make modules-cfg# the list of sub-directories with modules modules_dirs:modules# the list of module groups to compile cf…...

亚远景-从SPICE到ASPICE:汽车软件开发的标准化演进

一、SPICE标准的起源与背景 SPICE,全称“Software Process Improvement and Capability dEtermination”,即“软件流程改进和能力测定”,是由国际标准化组织ISO、国际电工委员会IEC、信息技术委员会JTC1联合发起制定的ISO 15504标准。该标准旨…...

vue3 + ElementPlus 封装列表表格组件包含分页

在前端开发中,封装组件是必不可少的。今天就来封装一个通用的列表表格组件,包含分页功能,可以提高代码的复用性和可维护性。 1. 组件设计 Props: tableData:表格数据。columns:表格列配置。total&#xff…...

挑战项目 --- 微服务编程测评系统(在线OJ系统)

一、前言 1.为什么要做项目 面试官要问项目,考察你到底是理论派还是实战派? 1.希望从你的项目中看到你的真实能力和对知识的灵活运用。 2.展示你在面对问题和需求时的思考方式及解决问题的能力。 3.面试官会就你项目提出一些问题,或扩展需求…...

Med-R2:基于循证医学的检索推理框架:提升大语言模型医疗问答能力的新方法

Med-R2 : Crafting Trustworthy LLM Physicians through Retrieval and Reasoning of Evidence-Based Medicine Med-R2框架Why - 这个研究要解决什么现实问题What - 核心发现或论点是什么How - 1. 前人研究的局限性How - 2. 你的创新方法/视角How - 3. 关键数据支持How - 4. 可…...

Oh3.2项目升级到Oh5.0(鸿蒙Next)具体踩坑记录(一)

目录 1.自动修复部分 Cause: The project structure and configuration require an upgrade. Solution: 1. Use Migrate Assistant to auto-upgrade the project structure and configuration. 2. Manually upgrade the project structure and configuration by following th…...

【自动化办公】批量图片PDF自定义指定多个区域识别重命名,批量识别铁路货物运单区域内容改名,基于WPF和飞桨ocr深度学习模型的解决方案

项目背景介绍 铁路货运企业需要对物流单进行长期存档,以便后续查询和审计。不同的物流单可能包含不同的关键信息,通过自定义指定多个区域进行识别重命名,可以使存档的图片文件名具有统一的规范和明确的含义。比如,将包含货物运单…...

Spring Boot篇

为什么要用Spring Boot Spring Boot 优点非常多,如: 独立运行 Spring Boot 而且内嵌了各种 servlet 容器,Tomcat、Jetty 等,现在不再需要打成 war 包部署到 容器 中,Spring Boot 只要打成一个可执行的 jar 包就能独…...

Unity3D学习笔记(二)

一、Unity编辑器相关 1、 Unity特殊的专属文件夹 1) Editor:编辑器相关资源可以放到此文件中,包括图片、脚本等文件。 2)Editor Default Resources:配合Editor使用不会打包到包中 3)Plugins:存放第三方SD…...

个人毕业设计--基于HarmonyOS的旅行助手APP的设计与实现(挖坑)

在行业混了短短几年,却总感觉越混越迷茫,趁着还有心情学习,把当初API9 的毕业设计项目改成API13的项目。先占个坑,把当初毕业设计的文案搬过来 摘要:HarmonyOS(鸿蒙系统)是华为公司推出的面向全…...

游戏引擎 Unity - Unity 打开项目、Unity Editor 添加简体中文语言包模块、Unity 项目设置为简体中文

Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...

python开发:爬虫示例——GET和POST请求处理

一、Get请求 import json import requests#输入示例:urlhttps://www.baidu.com #RequestHeader:F12标头-请求标头-原始-复制到这(忽略第一句) def GetRequest(url,RequestHeader""):try:dic{}RequestHeaderList RequestHeader.s…...

开源数据分析工具 RapidMiner

RapidMiner是一款功能强大且广泛应用的数据分析工具,其核心功能和特点使其成为数据科学家、商业分析师和预测建模人员的首选工具。以下是对RapidMiner的深度介绍: 1. 概述 RapidMiner是一款开源且全面的端到端数据科学平台,支持从数据准备、…...

Vue canvas画图画线例子,数据回显与隔离,点拖拽修改

组件 <template><divstyle"display: flex; height: 342px; width: 760px; border: 1px solid #000"><divstyle"position: relative; height: 100%; width: 608px; min-width: 608px"><canvasid"mycanvas"ref"mycanva…...

Python实现CAN FD 通信(基于PCAN开发CAN FD测试工具)

目录 一.背景 二. 硬件环境 1.CAN通信设备之PCAN 2.物理架构图 三. 资料分析 四. 二次开发 五. 应用 六. 总结 一.背景 在汽车电子领域中CAN是一种被广泛应用的通信协议,CAN 是controller area network 的缩写(以下称为can),是iso国际标准化的串行通信协议。 关于…...

LeetCode--347. 前 K 个高频元素/Golang中的堆(container/heap)

例题链接-前k个高频元素 前言 以前都是用的C写算法题&#xff0c;最近也想熟悉一下golang的数据结构&#xff0c;故来一篇题解堆分析。 正文 这里重点不在分析题目&#xff0c;在于golang中的 container/heap 对于内部实现逻辑有兴趣的可以去看看源码。 这里先给出题解的代…...

关于大数据

在大数据背景下存在的问题&#xff1a; 非结构化、半结构化数据&#xff1a;NoSQL数据库只负责存储&#xff1b;程序处理时涉及到数据移动&#xff0c;速度慢 是否存在一套整体解决方案&#xff1f; 可以存储并处理海量结构化、半结构化、非结构化数据 处理海量数据的速…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...