JavaSE高级-02

文章目录

  • 1. 多线程
    • 1.1 创建线程的三种方式
      • 多线程的创建方式一:继承Thread类
      • 多线程的创建方式二:实现Runnable接口
      • 多线程的创建方式三:实现Callable接口
      • 三种线程的创建方式对比
      • Thread的常用方法
    • 1.2 线程安全
      • 线程同步
      • 方式一:同步代码块
      • 方式二:同步方法
      • 方式三:lock锁
    • 1.3 线程池
      • 什么是线程池
      • 创建线程池
        • 方式一:通过ThreadPoolExecutor创建线程池
          • 1. 处理Runnable任务
          • 2. 处理Callable任务
        • 方式二:通过Executors创建线程池
    • 1.4 并发、并行
  • 2. 网络编程
    • 2.1 IP地址
    • 2.2 端口
    • 2.3 通信协议
      • UDP协议
      • TCP协议
      • BS架构的原理
  • 3. 几个重要的类
    • 3.1 时间相关的获取方案
    • 3.2 字符串的高效操作方案
    • 3.3 BigDecimal
  • 4. 单元测试
  • 5. 反射
    • 5.1 反射获取Class对象
    • 5.2 反射获取类中的成分并操作
    • 5.3 反射的基本作用
  • 6. 注解
    • 6.1 自定义注解
    • 6.2 元注解
    • 6.3 注解的解析(反射)
  • 7. 动态代理

1. 多线程

线程(Thread)是一个程序内部的一条执行流程。
程序中如果只有一条执行流程,那这个程序就是单线程的程序。

1.1 创建线程的三种方式

多线程的创建方式一:继承Thread类

在这里插入图片描述

多线程的创建方式二:实现Runnable接口

在这里插入图片描述
在这里插入图片描述

多线程的创建方式三:实现Callable接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三种线程的创建方式对比

在这里插入图片描述

Thread的常用方法

在这里插入图片描述

1.2 线程安全

多个线程,同时操作同一个共享资源的时候,可能会出现业务安全问题。在这里插入图片描述

线程同步

线程同步是线程安全问题的解决方案。
核心思想:让多个线程先后依次访问共享资源,这样就可以避免出现线程安全问题。
常见方案加锁。即每次只允许一个线程加锁,加锁后才能进入访问,访问完毕后自动解锁,然后其他线程才能再加锁进来。

方式一:同步代码块

在这里插入图片描述
在这里插入图片描述

方式二:同步方法

在这里插入图片描述
在这里插入图片描述

方式三:lock锁

在这里插入图片描述
在这里插入图片描述

1.3 线程池

什么是线程池

在这里插入图片描述

创建线程池

在这里插入图片描述

方式一:通过ThreadPoolExecutor创建线程池

在这里插入图片描述
ExecutorService的常用方法
在这里插入图片描述
线程池的注意事项
在这里插入图片描述

1. 处理Runnable任务

在这里插入图片描述

2. 处理Callable任务

在这里插入图片描述

方式二:通过Executors创建线程池

在这里插入图片描述
Executors使用可能存在的陷阱
在这里插入图片描述
在这里插入图片描述

1.4 并发、并行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 网络编程

基本的通信架构
基本的通信架构有2种形式:CS架构( Client客户端/Server服务端 )、BS架构(Browser浏览器/Server服务端)。

Java提供了哪些网络编程解决方案?
java.net.*包下提供了网络编程的解决方案。

网络编程三要素:IP、端口、协议

2.1 IP地址

在这里插入图片描述
在这里插入图片描述
IP域名
在这里插入图片描述
DNS域名解析
在这里插入图片描述
公网IP、内网IP
在这里插入图片描述
InetAddress类
在这里插入图片描述

2.2 端口

用来标记标记正在计算机设备上运行的应用程序,被规定为一个 16 位的二进制,范围是 0~65535。
在这里插入图片描述

2.3 通信协议

开放式网络互联标准:OSI网络参考模型
在这里插入图片描述
传输层的2个通信协议
在这里插入图片描述

UDP协议

在这里插入图片描述UDP通信的实现
在这里插入图片描述
在这里插入图片描述

TCP协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
TCP通信的实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BS架构的原理

在这里插入图片描述在这里插入图片描述
每次请求都开一个新线程,到底好不好?
高并发时,容易宕机!解决办法:使用线程池优化。

3. 几个重要的类

3.1 时间相关的获取方案

在这里插入图片描述
在这里插入图片描述

3.2 字符串的高效操作方案

在这里插入图片描述
StringBuilder
在这里插入图片描述

3.3 BigDecimal

用于解决浮点型运算时,出现结果失真的问题。

BigDecimal的常见构造器、常用方法
在这里插入图片描述

4. 单元测试

单元测试就是针对最小的功能单元:方法,编写测试代码对其进行正确性测试。

Junit单元测试框架
可以用来对方法进行测试,它是第三方公司开源出来的(很多开发工具已经集成了Junit框架,比如IDEA)
在这里插入图片描述
Junit单元测试的使用步骤
在这里插入图片描述

5. 反射

反射就是:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)。

5.1 反射获取Class对象

在这里插入图片描述

5.2 反射获取类中的成分并操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3 反射的基本作用

在这里插入图片描述

6. 注解

在这里插入图片描述

6.1 自定义注解

在这里插入图片描述
注解的原理
在这里插入图片描述
注解的作用
在这里插入图片描述

6.2 元注解

指的是:注解注解的注解。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 注解的解析(反射)

在这里插入图片描述

7. 动态代理

如何为Java对象创建一个代理对象?
在这里插入图片描述

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

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

相关文章

从舒适度提升到能耗降低再到安全保障,楼宇自控作用关键

在现代建筑的发展历程中,楼宇自动化控制系统(BAS)已从单纯的设备管理工具演变为集舒适度优化、能耗控制与安全保障于一体的核心技术。随着物联网和人工智能的深度应用,楼宇自控系统正以数据为纽带,重构人与建筑的关系。…

图像分类精度评价的方法——误差矩阵、总体精度、用户精度、生产者精度、Kappa 系数

本文详细介绍 “图像分类精度评价的方法”。 图像分类后,需要评估分类结果的准确性,以判断分类器的性能和结果的可靠性。 常涉及到下面几个概念(指标) 误差矩阵、总体精度、用户精度、生产者精度和 Kappa 系数。1. 误差矩阵&#…

【科普向-第一篇】数字钥匙生态全景:手机厂商、车厂与协议之争

目录 一、协议标准之争:谁制定规则,谁掌控入口 1.1 ICCE:中国车企主导的自主防线 1.2 ICCOA:手机厂商的生态突围 1.3 CCC:国际巨头的高端壁垒 1.4 协议对比 二、底层技术路线:成本与安全的博弈 2.1B…

dockerfile及docker常用操作

1: docker 编写 Dockerfile 是用于构建 Docker 镜像的文本文件,包含一系列指令和参数,用于定义镜像的构建过程 以下是关键要点: 一、基本结构 ‌FROM‌:必须作为第一条指令,指定基础镜像(如 FROM python:3.…

[vibe coding-lovable]lovable是不是ai界的复制忍者卡卡西?

在火影忍者的世界里,卡卡西也被称为复制忍者,因为大部分忍术都可以被其Copy! 截图提示:实现这个效果 -> 发给Lovalbe -> 生成的的效果如下,虽然不是1比1还原,但是这个效果也很惊艳。 这个交互设计,这个UI效果&am…

技术赋能安全:智慧工地构建城市建设新防线

城市建设的热潮中,工地安全始终是关乎生命与发展的核心议题。江西新余火灾等事故的沉痛教训,暴露了传统工地监管的诸多短板——流动焊机“行踪难觅”,无证动火作业屡禁不止,每一次监管缺位都可能引发灾难性后果。如今,…

Sublime Text 代码编辑器(Mac中文)

原文地址:Sublime Text Mac 代码编辑器 sublime text Mac一款轻量级的文本编辑器,拥有丰富的功能和插件。 它支持多种编程语言,包括C、Java、Python、Ruby等,可以帮助程序员快速编写代码。 Sublime Text的界面简洁、美观&#…

如何制定项目时间线,合理预计?

制定一份现实可行且行之有效的项目时间线,是一个系统性的分解、估算与排序过程,而非简单的日期罗列。核心步骤包括:明确项目范围与可交付成果、利用工作分解结构(WBS)进行任务拆解、科学估算各项任务的持续时间、识别并…

RSA详解

一、RSA 简介RSA 是一种公钥密码体制,由罗纳德・李维斯特(Ron Rivest)、阿迪・萨莫尔(Adi Shamir)和伦纳德・阿德曼(Leonard Adleman)于 1977 年提出,算法名称由他们三人姓氏的首字母…

Linux获取物理硬盘总容量

获取物理硬盘总容量: 1.查看单个硬盘: 使用 lsblk 或 fdisk -l (需要 sudo) 命令。它们会直接列出物理硬盘 (sda, nvme0n1 等) 和它们的分区,并显示硬盘的总物理容量。 abcd四块物理盘,只挂载使用3块,留一块未使用 最常见的原因通常是配置了热备盘(RAID 1/5/6/10 等冗余…

STM32学习笔记14-I2C硬件控制

I2C外设简介STM32内部集成了硬件I2C收发电路(硬件收发器:自动生产波形,自动翻转电平等),可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担——软件只需要写入控制…

电子电气架构 --- 软件开发数字化转型

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

我国空间站首次应用专业领域 AI大模型

据中国载人航天工程办公室消息,北京时间2025年8月15日22时47分,经过约6.5小时的出舱活动,神舟二十号乘组航天员陈冬、陈中瑞、王杰密切协同,在空间站机械臂和地面科研人员的配合支持下,圆满完成既定任务,出…

WPF真入门教程35--手搓WPF出真汁【蜀味正道CS版】

1、项目介绍 本项目采用多层架构设计,使用wpf,Panuon.UI.Silver控件库,AduSkin皮肤,MVVM等技术开发具有复杂交互和视觉效果的CS应用程序。WPF适用于企业级桌面应用:如ERP、CRM系统,需复杂表单和报表。WPF适…

JMeter与大模型融合应用之构建AI智能体:评审性能测试脚本

JMeter与大模型融合应用之构建AI智能体:评审性能测试脚本 一、引言 随着DevOps和持续测试的普及,性能测试已成为软件开发生命周期中不可或缺的环节。Apache JMeter作为最流行的开源性能测试工具之一,被广泛应用于各种性能测试场景。然而&…

K8s 和 Docker的区别

一、各自诞生背景——为什么需要两个东西Docker(2013,Docker Inc.) • 目的:解决“我的代码在你机器跑不起来”的经典环境问题。 • 做法:用 Linux 内核的 cgroup/namespace 做轻量隔离,把“应用 依赖”打…

10.0 UML的介绍以及VisualStudio中查看类图

本文介绍UML图的含义、以及如何在VisualStudio中查看类图。 一、UML图介绍 UML(Unified Modeling Language,统一建模语言)是一种标准化的建模语言,用于可视化、规范、构建和记录软件系统的各个方面的图表工具。 UML图分为结构图和行为图两大类: 结构图‌…

【Virtual Globe 渲染技术笔记】6 着色

着色(Shading) 曲面细分只是地球渲染的第一步。接下来是着色——通过模拟光线与材质的相互作用,计算每个像素的最终颜色。本节先回顾基础的光照与纹理映射,再讲解虚拟地球特有的经纬网格和夜景灯光效果。6.1 光照(Ligh…

OpenCV Python——图像拼接(一)(图像拼接原理、基础知识、单应性矩阵 + 图像变换 + 拼接)

1 图像拼接基础知识1.1 特征匹配 原理及代码示例1.2 单应性矩阵 原理及代码示例2 图像拼接(一)(直接拼接)3 图像拼接(二)(单应性矩阵 图像变换 拼接)3.1 单应性矩阵函数3.2 拼接函…

Git 中切换到指定 tag

在 Git 中切换到指定 tag(比如 v1.22.1)的正确做法如下:1️⃣ 查看已有的 taggit tag会列出所有可用的版本,比如:v1.21.0 v1.22.0 v1.22.1 v1.23.02️⃣ 切换到指定 taggit checkout tags/v1.22.1 -b v1.22.1解释&…