java基础·小白入门(五)
目录
- 内部类与Lambda表达式
- 内部类
- Lambda表达式
- 多线程
内部类与Lambda表达式
内部类
- 在一个类中定义另外一个类,这个类就叫做内部类或内置类 (inner class) 。
- 在main中直接访问内部类时,必须在内部类名前冠以其所属外部类的名字才能使用;在main中直接new一个内部类对象时,也需在new前冠以外部类对象变量。例:
Zoo.Tiger t = z.new Tiger(); - 关于内部类:
- 内部类可以声明为private或protected;还可以声明为abstract或final。
- 内部类可以声明为static的,但此时就不能再使用外部类的非static的成员变量和非static的成员方法。
- 非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员。
- 内部类可以是一个接口,该接口必须由另一个内部类实现。
- 在方法中可以定义内部类,但方法中的内部类,如果要访问方法中定义的本地变量或方法的参数,则变量必须被声明为final。
- 匿名内部类:匿名内部类不仅可以用在接口上,还能用在具体类、抽象类上,且对方法个数没有要求。匿名内部类一定是跟在new的后面,用其隐含实现一个接口或继承一个类。因为没有类名,所以根据多态性,我们使用其父类名或接口名。匿名内部类是在接口及抽象类的基础上发展起来的。使用匿名内部类的前提必须继承父类或实现一个接口。注意:
- 匿名内部类不能有构造方法;
- 不能定义任何静态成员、方法或类;
- 不能是public、protected、private、static;
- 只能创建匿名内部类的一个实例。
// 定义接口A
interface A
{void print();
}
public class Test
{public static void func(A a){a.print();}public static void main(String args[]){// 匿名内部类func(new A(){public void print(){System.out.println("Hello");}});}
}
Lambda表达式
- 函数式接口是指:有且仅有一个抽象方法的接口,也称为单抽象方法接口。
- Lambda表达式最直观的作用就是使得代码变得异常简洁!
- 每一个Lambda表达式都对应一个函数式接口,可以将Lambda表达式看作是实现函数式接口的匿名内部类的一个对象。
- Lambda表达式通常由参数列表、箭头和方法体三部分组成,其语法格式如下:
- (类型1 参数1,类型2 参数2,……)->{方法体}
- (参数1,参数2,……)->{方法体}
- Lambda表达式的语法格式:
- 语法格式一 :无参数,无返回值。
() -> System.out.println(“Hello Lambda!”); - 语法格式二 :有一个参数,并且无返回值。
(x)->System.out.println(x); - 语法格式三:有两个以上的参数,有返回值,并且 Lambda 体中有多条语句。
- 语法格式四:若 Lambda 体中只有一条语句, return和花括号都可以省略不写。
- 语法格式一 :无参数,无返回值。
// 格式三
Comparator com = (x, y) -> {
System.out.println(“函数式接口”);
return Integer.compare(x, y);
};
// 格式四
Comparator com = (x, y) -> Integer.compare(x, y);
多线程
- 基本概念:
- 程序(Program):程序是未在运行的代码,程序是静态的代码。
- 进程(Process):进程是正在运行着的程序,进程是动态的。同一个程序可以运行多个,一个进程拥有一块地址空间。进程是系统运行程序的基本单位。
- 多任务(Multi task):多任务是指在一个系统中可以同时运行多个程序,即有多个独立运行的任务,每一个任务对应一个进程。
- 线程(Thread):线程是一个比进程更小的执行单位。一个进程在其执行过程中可以产生多个线程,形成多条执行线路。
- 多线程(Multithread):一个进程中同时存在几个执行体,按几条不同的执行路径共同工作。一个进程里的多个线程共同拥有一块地址空间。每个线程运行时,操作系统会分配给它一个时间片。
- 线程的生命周期:
- 新建状态(Newborn) new一个线程对象
- 就绪状态(Runnable)
start()方法启动线程 - 运行状态(Running)
run()方法执行线程 - 阻塞状态(Blocked)
sleep(),yield()等方法 - 消亡状态(Dead) 任务完成或被强行终止
- 线程的调度与优先级:
- 调度:指在各个线程之间分配CPU资源。线程调度有两种模型:分时模型和抢占模型。
- 分时调度模型:所有线程轮流使用 CPU ,平均分配每个线程占用 CPU 的时间片。
- 抢占式调度模型:优先让优先级高的线程使用 CPU。如果线程的优先级相同,那么会随机选择一个。优先级高的线程获取的 CPU 时间片相对多一些。(Java使用的是抢占式调度模型)
- Java中线程的优先级从低到高以整数1~10表示,共分为10级。
MIN_PRIORITY表示最小优先级,通常为1;MAX_PRIORITY表示最高优先级,通常为10;NORM_PRIORITY表示普通优先级,缺省值为5。 - 新建线程将继承创建它的父线程的优先级。
- 一般情况下,主线程具有普通优先级。
- Java中创建线程有两种方式:
- 继承java.lang包中的Thread类
- 在自己的类中实现Runnable接口
- 利用Thread类的子类来创建线程:
- 此类必须是继承自Thread类;
- 线程所要执行的代码必须写在run()方法内。
class 类名 extends Thread //从Thread类派生子类
{类里的成员变量;类里的成员方法;修饰符 run() //覆盖父类Thread里的run()方法{线程的代码}
}
- 用Runnable接口来创建线程:
- Runnable接口只有一个方法run(),我们可以定义一个类并实现Runnable接口,并重写run()方法。
- Runnable接口并没有任何对线程的支持,所以还必须创建Thread类的实例,并把我们自定义的线程类(例:MyThread)的对象(例:mt)作为参数传递给Thread类的构造方法。
相关文章:
java基础·小白入门(五)
目录 内部类与Lambda表达式内部类Lambda表达式 多线程 内部类与Lambda表达式 内部类 在一个类中定义另外一个类,这个类就叫做内部类或内置类 (inner class) 。在main中直接访问内部类时,必须在内部类名前冠以其所属外部类的名字才能使用;在…...
微观时空结构和虚数单位的关系
回顾虚数单位的定义, 其中我们把称为周期(的绝大部分),称为微分,0称为原点或者起点(意味着新周期的开始),由此我们用序数的概念反过来构建了基数的概念。 周期和单位显然具有倍数关…...
go-zero使用goctl生成mongodb的操作使用方法
目录 MongoDB简介 MongoDB的优势 对比mysql的操作 goctl的mongodb代码生成 如何使用 go-zero中mogodb使用 mongodb官方驱动使用 model模型的方式使用 其他资源 MongoDB简介 mongodb是一种高性能、开源、文档型的nosql数据库,被广泛应用于web应用、大数据以…...
服务器新硬盘分区、格式化和挂载
文章目录 参考文献查看了一下起点现状分区(base) ~ sudo parted /dev/sdcmklabel gpt(设置分区类型)增加分区 格式化需要先退出quit(可以)(base) / sudo mkfs.xfs /dev/sdc/sdc1(失败)sudo mkfs.xfs /dev/s…...
Openldap集成Kerberos
文章目录 一、背景二、Openldap集成Kerberos2.1kerberos服务器中绑定Ldap服务器2.1.1创建LDAP管理员用户2.1.2添加principal2.1.3生成keytab文件2.1.4赋予keytab文件权限2.1.5验证keytab文件2.1.6增加KRB5_KTNAME配置 2.2Ldap服务器中绑定kerberos服务器2.2.1生成LDAP数据库Roo…...
(创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
目录 一、主要内容: 二、运行效果: 三、VMD-BiLSTM负荷预测理论: 四、代码数据下载: 一、主要内容: 本代码结合变分模态分解( Variational Mode Decomposition,VMD) 和卷积神经网络(Convolutional neu…...
机器 reboot 后 kubelet 目录凭空消失的灾难恢复
文章目录 [toc]事故背景报错内容 修复过程停止 kubelet 服务备份 kubelet.config重新生成 kubelet.config重新生成 kubelet 配置文件对比 kubeadm-flags.env 事故背景 因为一些情况,需要 reboot 服务器,结果 reboot 机器后,kubeadm init 节点…...
Pytorch构建vgg16模型
VGG-16 1. 导入工具包 import torch.optim as optim import torch import torch.nn as nn import torch.utils.data import torchvision.transforms as transforms import torchvision.datasets as datasets from torch.utils.data import DataLoader import torch.optim.lr_…...
分支结构相关
1.if 语句 结构: if 条件语句: 代码块 小练习: 使用random.randint()函数随机生成一个1~100之间的整数,判断是否是偶数 import random n random.randint(1,100) print(n) if n % 2 0:print(str(n) "是偶数") 2.else语…...
flutter开发实战-RichText富文本居中对齐
flutter开发实战-RichText富文本居中对齐 在开发过程中,经常会使用到RichText,当使用RichText时候,不同文本字体大小默认没有居中对齐。这里记录一下设置过程。 一、使用RichText 我这里使用RichText设置不同字体大小的文本 Container(de…...
智慧消防新篇章:可视化数据分析平台引领未来
一、什么是智慧消防可视化数据分析平台? 智慧消防可视化数据分析平台,运用大数据、云计算、物联网等先进技术,将消防信息以直观、易懂的图形化方式展示出来。它不仅能够实时监控消防设备的运行状态,还能对火灾风险进行预测和评估…...
u8g2 使用IIC驱动uc1617 lcd有时候某些像素显示不正确
折腾了很久,本来lcd是挂载到已经存在的iic总线上的,总线原来是工作正常的,挂载之后lcd也能显示,但是有时候显示不正确,有时候全白的时候有黑色的杂点。 解决方案: 1.最开始以为是IIC总线速度快࿰…...
使用opencv合并两个图像
本节的目的 linear blending(线性混合)使用**addWeighted()**来添加两个图像 原理 (其实我也没太懂,留个坑,感觉本科的时候线代没学好。不对,我本科就没学线代。) 源码分析 源码链接 #include "opencv2/imgc…...
k8s学习笔记(一)
configMap 一般用来存储配置信息 创建configMap 从文件中获取信息创建:kubectl create configmap my-config --from-file/tmp/k8s/user.txt 直接指定信息: kubectl create configmap my-config01 --from-literalkey1config1 --from-literalkey2confi…...
自学前端——JavaScript篇
JavaScript 什么是JavsScript JavaScript是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果,增加用户与网页的交互性。 作为一种客户端语言,JavaScript可以直接嵌入HTML,并在浏览器中执行。 与HTML和CSS不…...
高考毕业季--浅谈自己感想
随着2024年高考落幕,数百万高三学生又将面临人生中的重要抉择:选择大学专业。在这个关键节点,计算机相关专业是否仍是“万金油”的选择?在过去很长一段时间里,计算机科学与技术、人工智能、网络安全、软件工程等专业一…...
遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程
遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程 在遥感影像上人工制作分类数据集采用python+gdal库制作数据集挑选分类模型(RF、KNN、SVM、逻辑回归)选择随机森林模型建模分类遥感图像预测在遥感影像上人工制作分类数据集 1.新建shp文件 地理坐标系保持和影像…...
【Android面试八股文】Kotlin内置标准函数let的原理是什么?
确实,let 函数在 Kotlin 中被广泛使用,特别是在处理可空类型或者需要在对象上执行一系列操作后返回结果的场景中非常有用。 let 函数的源代码 /*** Calls the specified function [block] with `this` value as its argument and returns its result.** For detailed usage i…...
网工面试总结1
网工还是要基本会ACL、ISIS、OSPF、MPLS、QOS、GVRP、VRRP、FW、BGP、STP、IV4\6、WLAN、路由策略、策略路由、LACP等都或多或少要知道,常见的哪怕没有实战,要在ensp、cisco中练过! OSPF邻居故障,你认为是哪些原因?或者…...
[stm32]密码锁
[stm32]密码锁 需要资料的请在文章末尾获取~ 01描述 使用原件:stm32f103c8t6最小系统板x1,0.96寸OLED显示屏四角x1,4x4矩阵按键x1; 键位对应图: 1, 2, 3, 4------------- 1 2 3 4 5&am…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
