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

JAVA理论-JAVA基础知识

1.Java 基础 知识

1.1 面向对象的特征(了解)

面向对象的特征:封装、继承、多态、抽象
封装:就是把对象的属性和行为(数据)结合为一个独立的整体,并尽量隐藏对象的内部细节,公开我希望公开的,别人只能调用而不知道如何实现,增加安全性。
继承:子类继承父类的数据属性和行为,并能根据自己的需求扩展出新的行为,提高代码的复用性。
多态:指允许不同的对象对同一消息做出响应。即同一消息可以根据发送对象的不同,而采取多种不同的行为方式。封装和继承几乎都是为多态而准备的。
抽象:表示对问题领域进行分析、设计中得出抽象的概念,是对一系列看上去不同,但本事相同的具体概念的抽象。 在 Java 中抽象用 abstract 关键字来修饰,用abstract修饰类时,此类就不能被实例化,从这里可以看出,抽象类(接口)就是为了继承而存在的。

1.2 Java 的基本数据类型有哪些

整型:数据类型 字节数 位数
byte 1 8
short 2 16
int 4 32
long 8 64
浮点型
float 4 32
double 8 64
布尔型
boolean 1 8
字符型
char 2 16

1.3JDK JRE JVM 的区别 (必会)

JDK(Java Development Kit):是整个java的核心;是 java开发工具包包括了java运行环境 JREjava工具java基础类库
JRE(Java Runtime Environment)是运行JAVA程序所必须的环境的集合,包含 java虚拟机和java程序的 一些核心类库
JVM是Java virtual machine (JAVA虚拟机)的缩写,是整个java实现跨平台的 最核心的部分,能够 运行以java语言写作的软件程序

1.4 重载和重写的区别

重载:发送在同一个类中, 方法名必须相同参数类型不同个数不同顺序不同
重写:发送在 父子类中, 方法名参数列表必须 相同返回值范围必须 不大于父类抛出的异常范围不大于父类, 访问修饰符不小于父类;如果父类方法为 私有,子类 不能重写该方法

1.5 Java 中==和 equals 的区别

==的作用
对于基本类型如int:比较的就是 是否相同
对于引用类型如数组;比较的就是 地址值是否相同
equals的作用
引用类型:没有重写的默认情况下,比较的是 地址值
重写后:比较的是 内容
例如String,Integer,Date这些类库中的equals已经被重写
即:==:比较的是两个字符串的 内存地址(堆内存)的数值是否相等,属于数值比较
equals():比较的是两个字符串的 内容,属于内容比较

1.6 String、StringBuffer、StringBuilder 三者之间的区别

String:字符串常量
StringBuffer:字符串变量(线程安全)
StringBuilder:字符串变量(非线程安全)
String中的String类中使用 final关键字修饰字符数组来保存字符串:
private final char value[], String对象是不可变的,就是 常量、线程安全
StringBuffer和StringBuilder都继承了 AbstractStringBuilder,定义了一些字符串的基本操作;
StringBuffer:对方法加了 同步锁或者对调用的方法加了同步锁,所以是线程安全
StringBuilder:并没有对方法进行同步锁,所以是 非线程安全
小结:
  1. 如果要操作少量的数据用:String
  2. 多线程操作字符串缓冲区下操作大量数据用:StringBuffer
  3. 单线程操作字符串缓冲区下操作大量数据用:StringBuilder

1.7 接口和抽象类的区别是什么?

1.实现:抽象类的子类使用 extends来继承;接口必须使用 implements来实现接口。
2.构造方法: 抽象类可以有构造函数;接口不能有
3.main: 抽象类可以有main方法,并且能运行;接口没有
3.实现数量:类可以实现 多个接口,但是 只能继承一个抽象类
4.访问修饰符:接口中的方法默认使用 public抽象类可以是 任意访问修饰符

1.8 string 常用的方法有哪些?

indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。

1.9 什么是单例模式?有几种?

单例模式:某个类的实例在 多线程环境下只会被创建一次出来
单例模式有饿汉式和懒汉式还有双重检查锁
饿汉式:线程安全,一开始就初始化
public class Singleton{private static Singleton instance =new Singleton();private Singleton(){}private static Singleton getInstance(){return instance;    }
}

懒汉式:非线程安全,延迟初始化

public class Singleton{private static Singleton instance ;private Singleton(){}private static Singleton getInstance(){if(instance==null){intstance=new Singleton();        }return instance;    }
}

双重检查锁:线程安全,延迟初始化

public class Singleton{private volatile static Singleton instance ;private Singleton(){}private static Singleton getInstance(){if(instance==null){synchronized(Singleton.class){if(instance==null){intstance=new Singleton();              }            }                   }return instance;    }
}

1.10 反射

在java中的反射机制是指在运行状态中,对于任意的类都能知道这个类所有的属性和方法;并且对于任意一个对象,都能调用它非私有的任意一个方法;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制

获取Class对象的3种方法:

调用某个对象的getClass()方法

Person p=new Person();

Class clazz=p.class;

调用某个类的class属性来获取该类对于的Class对象

Class clazz=Person.class;

使用Class类中的forName()静态方法(最安全、性能最好)

Class clazz=Class.forName("类的全路径"); (最常用)

1.11 jdk1.8 的新特性

1. Lambda表达式

Lambda允许把函数作为一个方法的参数

new Thread(  ()->System.out.println("abc")).start(); 
2.方法引用

方法引用允许直接引用已有 Java 类或对象的方法或构造方法。

ArrayList<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.forEach(System.out::println)
3.函数式接口

有且仅有一个抽象方法的接口叫做函数式接口,函数式接口可以被隐式转换为Lambda表达式。通常函数式接口上会添加@FunctionalInterface注解。

4.接口允许定义默认方法和静态方法

从JDK8开始,允许接口中存在一个或多个默认非抽象方法和静态方法

5.Stream API

新添加的StreamAPI把真正的函数式编程风格引入java中。这种风格将要处理的元素集合可以看作一种流,流在管道中传输,并且可以在管道和节点上进行处理,比如筛选,排序,聚合等

List<String> list=Arrays.asList("abc","","abc");
list.stream().filter(string->!string.isEmpty())//过滤空字符串.distince()//去重.forEach(a->System.out.print(a));

6 日期/时间类改进

之前的 JDK 自带的日期处理类非常不方便,我们处理的时候经常是使用的第三方

工具包,比如 commons-lang

包等。不过 JDK8 出现之后这个改观了很多,比如日期时间的创建、比较、调整、

格式化、时间间隔等。

这些类都在 java.time 包下,LocalDate/LocalTime/LocalDateTime。

7 Optional 类

Optional 类是一个可以为 null 的容器对象。如果值存在则 isPresent()方法会返

回 true,调用 get()方法会返回该对象。

8 Java8 Base64 实现

Java 8 内置了 Base64

1.12 Java 的异常

Throwable是所有java程序中错误处理的父类,有两种子类:Error和Exception
Error:表示由jvm所侦测到的无法预期的错误,是属于JVM层次的严重错误,导致JVM无法继续执行。这是不可捕捉到的,最多只能显示错误信息
Exception:表示可恢复的列外,这是可捕捉到的。
  1. 运行时异常都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常一般都是由程序逻辑错误引起的。
  2. 非运行时异常(编译异常):是RuntimeException以外的异常。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException 等以及用户自定义的Exception 异常,一般情况下不自定义检查异常。
常见的RunTime异常几种如下:
NullPointerException- 空指针引用异常
ClassCastException- 类型强制转换异常。
IllegalArgumentException- 传递非法参数异常。
ArithmeticException- 算术运算异常
ArrayStoreException- 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException- 下标越界异常
NegativeArraySizeException- 创建一个大小为负数的数组错误异常
NumberFormatException- 数字格式异常
SecurityException- 安全异常
UnsupportedOperationException- 不支持的操作异常

1.13 BIO、NIO、AIO 有什么区别?

BIOBlock IO 同步阻塞式IO,就是我们平常使用的 传统IO,它的特点是 模式简单使用方便并发处理能力低
NIONew IO 同步非阻塞IO,是传统IO的升级,客户端和服务器端通过Channel(通道)通讯,实现了 多路复用
AIOAsynchronous IO是NIO的升级,也叫NIO2,实现了 异步非阻塞IO,异步IO的操作 基于时间回调机制

1.14 Threadlocal(线程局部变量) 的原理

ThreadLocal:为 共享变量每个线程中创建一个单独的变量副本,每个线程只可以 访问自己内部的副本变量。通过 threadlocal保证 线程安全性
其实在 ThreadLocal类中有一个 静态内部类ThreadLocalMap(其类似于Map),用 键值对的形式存储每一个线程的变量副本,ThreadLocalMap中元素的 key为当前ThreadLocal对象,而 value对应线程的变量副本
ThreadLocal本身并不存储值,它只是作为一个 key保存到ThreadLocalMap中,但是这里要注意到的是它作为一个key用的是 弱引用,因为 没有强引用链弱引用在GC的时候可能会被回收。这样就会在 ThredLocalMap中存在 一些key为null的键值对(Entry)。因为key变成null了,我们是 没法访问这些Entry的,但是这些Entry本身是不会被清除的。如果没有手动删除对应的key就会导致这些内存不会回收也无法访问,也就是 内存泄漏
弱引用: 弱引用不会阻止垃圾回收它所指向的对象
强引用: 保证对象的存活,使其不被垃圾机制回收
使用完ThreadLocal之后,记得调用 remove方法。
不使用线程池的前提下,即使 不调用remove方法,线程的 “变量副本”也会被gc回收,既不会造成内存泄漏的情况。
通俗来说:每一个线程代表一个人,每个人都有自己的私有物品。ThreadLocal就是一个神奇储物柜( 一种机制),存储每个人( 线程)的私有物品( 变量副本)。
储物柜( ThreadLocal)内部是一个小柜子( ThredLocalMap)。柜子的钥匙key是( ThreadLocal对象),抽屉(value)是存放 变量副本的地方。
物品(变量副本)会在线程结束时被回收,但锁(ThreadLocal 对象)却是用 弱引用 存储的。这意味着,如果 没有其他地方强引用 这个锁, 垃圾回收器可能会把它收走 ,就像把钥匙弄丢了一样。这样一来,虽然抽屉还在(ThreadLocalMap 中的Entry),但我们却没办法打开它了,因为钥匙没了。这些打不开的抽屉就占用了空间,但又没法用,这就是所谓的 内存泄漏
所以使用完后要调用remove相当于要把抽屉里的东西拿走 ,这样就防止了内存泄漏、 如果没有使用线程池 不调用remove 变量副本也会被gc回收

1.16 同步锁、死锁、乐观锁、悲观锁 

同步锁:
当多个线程同时访问同一个数据时,很容易出现问题。为了避免这种情况出现,我们要 保证线程同步互斥、就是指 并发执行的多个线程,在同一时间内只允许一个线程访问共享数据。java中可以使用 synchronized关键字来取得一个对象的同步锁
死锁:
何为死锁,就是 多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放
乐观锁:/
总是假设 最好的情况,每次去拿数据的 候都认为别人不会修改,所以 不会上锁,但是在 更新的时候会判断一下在此期间 别人有没有更新这个数据,可以使用 版本号机制CAS算法实现。乐观锁适用于 多读的应用的类型,这样可以 提高吞吐量,像数据库提供的类似于 write_conditio机制,其实都是提供的乐观锁。在java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的
悲观锁:
总是假设 最坏的情况,每次去拿数据的时候都认为别人会修改,所以 每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁( 共享资源每次只给一个线程使用其他线程阻塞用完后再把资源转让给其他线程)。传统的关系型数据库里面就用到了很多这种锁机制,比如 行锁、表锁等, 读锁、写锁等,就是在 做操作之前先上锁。java中synchronized和reentrantLock等独占锁就是悲观锁思想的实现。

1.17  synchronized 底层实现原理

临界区:访问 共享资源那段代码
synchronized可以 保证方法或者代码块在运行时,同一时刻 只有一个线程可以进入到临界区(访问共享资源),同时它还可以 保证共享变量的内存可见性。
java中 每一个对象都可以作为锁,这是synchronized实现的同步的基础;
  1. 普通同步方式,锁是当前实例对象
  2. 静态同步方法,锁是当前类的class对象
  3. 同步方法块,锁是括号里面的对象

1.18 synchronized 和 volatile 的区别是什么?

volatile 本质是 告诉jvm当前变量需要从主存中读取,而 不是从线程中读取synchronized则是 锁定当前变量,只有 当前线程可以访问该变量, 其他线程被阻塞住。
volatile仅能使用在 变量级别;synchronized则可以使用在 变量、方法、和类级别等
volatile仅能实现变量的修改可见性不能保证原子性;而 synchronized则可以保证变量的修改 可见性和原子性
volatile 不会造成线程的 阻塞;synchronized 可能会造成线程的阻塞
volatile标记的变量 不会被编译器优化;synchronized标记的变量 可以被编译器优化

1.19synchronized 和 Lock 有什么区别?

首先 synchronizedjava内置的关键字,在jvm层面, Lock是个Java类
synchronized 无法判断是否获取锁的状态,Lock 有返回值可以判断是否获取到锁
synchronized 会自动释放锁(a线程执行完同步代码会释放锁;b线程执行过程中发送异常会释放锁),Lock 需在finally中手动释放锁(unlock()方法释放锁),否则容易造成线程死锁;
synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程1阻塞, 线程2则会一直等待下去
Lock锁就不一定会等待下去如果尝试获取不到锁,线程 可以不用一直等待,比如 带有超时的tryLock(long time, TimeUnit unit)方法,超过时间后就停止等待
synchronized 的锁 可重入、不可中断、非公平 Lock 可重入、可判断、可公平
Lock 锁适合 大量 需要同步的代码, synchronized 锁适合 少量 代码的同步问题

相关文章:

JAVA理论-JAVA基础知识

1.Java 基础 知识 1.1 面向对象的特征&#xff08;了解&#xff09; 面向对象的特征&#xff1a;封装、继承、多态、抽象 封装&#xff1a;就是把对象的属性和行为&#xff08;数据&#xff09;结合为一个独立的整体&#xff0c;并尽量隐藏对象的内部细节&#xff0c;公开我希…...

免费无限使用GPT Plus、Claude Pro、Grok Super、Deepseek满血版

渗透智能-ShirtAI&#xff0c;可以免费无限使用GPT Plus、Claude Pro、Grok Super、Deepseek满血版、除此之外还能免费使用AI搜索、Gemini AI、AI照片修复、AI橡皮擦、AI去背景、AI智能抠图、AI证件照、OCR识别、在线思维导图、在线绘图工具、PDF工具箱、PDF翻译。 传送入口&a…...

SoloSpeech - 高质量语音处理模型,一键提取指定说话人音频并提升提取音频清晰度和质量 本地一键整合包下载

视频教程&#xff1a; 一个强大的语音分离和降噪软件 SoloSpeech 是由约翰霍普金斯大学、香港中文大学、南洋理工大学、清华大学及布拉格理工大学等多所高校共同主导开源的一个创新的语音处理项目&#xff0c;旨在解决在多人同时说话的环境中&#xff0c;准确提取并清晰呈现特定…...

深入解析 Java ClassLoader:揭开 JVM 动态加载的神秘面纱

大家好&#xff0c;这里是架构资源栈&#xff01;点击上方关注&#xff0c;添加“星标”&#xff0c;一起学习大厂前沿架构&#xff01; Java 之所以能实现“一次编写&#xff0c;到处运行”&#xff0c;很大程度得益于其虚拟机&#xff08;JVM&#xff09;强大的跨平台能力。…...

CICD实战(一) -----Jenkins的下载与安装

服务器IPJenkins192.168.242.153gitlab192.168.242.154 1、安装工具&#xff08;可选&#xff0c;如果有就不需要安装&#xff09; sudo yum install wget net-tools 2、关闭防火墙 #关闭防火墙(如果是云服务器部署,去安全组放通对应的端口即可) systemctl stop firewalld …...

【.net core】.KMZ文件解压为.KML文件并解析为GEOJSON坐标数据集。附KML处理多线(LineString)闭环问题

通过使用ZipFile解压KMZ文件&#xff0c;获取其中的KML文件&#xff0c;并解析KML文件&#xff0c;输出解析后的坐标数据集。 KML文件:地理信息的标准格式 解析后的坐标数据集输出格式&#xff08;GEOJSON坐标数据集&#xff09;&#xff1a;[[[经度,纬度],[经度,纬度]]] 解…...

Python打卡训练营day46——2025.06.06

知识点回顾&#xff1a; 不同CNN层的特征图&#xff1a;不同通道的特征图什么是注意力&#xff1a;注意力家族&#xff0c;类似于动物园&#xff0c;都是不同的模块&#xff0c;好不好试了才知道。通道注意力&#xff1a;模型的定义和插入的位置通道注意力后的特征图和热力图 …...

网络资源缓存

前端性能优化是提升用户体验和页面响应速度的关键&#xff0c;可以从 网络优化、资源优化、缓存优化 三个方面系统地进行。以下是详细说明&#xff1a; 一、网络优化&#xff08;减少请求数、降低延迟、提升加载速度&#xff09; 减少 HTTP 请求数量 合并请求&#xff08;CSS…...

Linux中 SONAME 的作用

🧠 一、从 -lexample 到 SONAME ✅ 假设你有以下文件结构: /libexample.so → libexample.so.1 /libexample.so.1 → libexample.so.1.0.0 /libexample.so.1.0.0 # SONAME: libexample.so.1/libexample.so.2 → libexample.so.2.0.0 /libexample.so.2.0…...

Devops系列---python基础篇二

1、列表 1.1 概念 格式&#xff1a; 名称 [ “元素1”,“元素2”,…] #定义一个列表 computer ["主机","键盘","显示器","鼠标"]类型方法用途查index(“元素”)查看元素索引位置count(“元素”)统计元素出现的次数reverse()倒序排…...

自定义事件wpf

// 自定义控件 public class MyCustomControl : Control { public static readonly RoutedEvent MyCustomEvent EventManager.RegisterRoutedEvent( "MyCustom", RoutingStrategy.Bubbling, typeof(RoutedEventHandler), typeof(MyCustomControl) ); public event R…...

​​TLV4062-Q1​​、TLV4082-Q1​​迟滞电压比较器应用笔记

文章目录 主要作用应用场景关键优势典型应用示意图TLV4062-Q1 和 TLV4082-Q1 的主要作用及应用场景如下: 主要作用 精密电压监测:是一款双通道、低功耗比较器,用于监测输入电压是否超过预设阈值。 集成高精度基准电压源(阈值精度1%),内置60mV迟滞功能,可避免因噪声导致的…...

C++.OpenGL (3/64)着色器(Shader)深入

着色器(Shader)深入 着色器核心概念 #mermaid-svg-xC0jTt9mJWGVa7yE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xC0jTt9mJWGVa7yE .error-icon{fill:#552222;}#mermaid-svg-xC0jTt9mJWGVa7yE .error-text{fi…...

DHCP介绍

DHCP介绍 1 DHCP简述2 DHCP协议分析2.1 主要流程2.2 DHCP全部报文介绍2.3 IP租用更新报文2.4 DHCP协议抓包分析 3 DHCP应用3.1 DNSmasq参数配置3.2 DNSmasq框架代码3.2.1 创建socket监听67端口3.2.2 监听67端口3.2.3 处理DHCP请求 3.3 DNSmasq模块排障方法 4 常见问题排查4.1 问…...

李沐《动手学深度学习》d2l安装教程

文章目录 最新回答报错提醒安装对应版本安装C工具和Windows SDK 最新回答 安装旧版本即可 pip install d2l0.17.0 WARNING: Ignoring invalid distribution -pencv-python (e:\python3.10\lib\site-packages) Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple C…...

[蓝桥杯]耐摔指数

耐摔指数 题目描述 X 星球的居民脾气不太好&#xff0c;但好在他们生气的时候唯一的异常举动是&#xff1a;摔手机。 各大厂商也就纷纷推出各种耐摔型手机。X 星球的质监局规定了手机必须经过耐摔测试&#xff0c;并且评定出一个耐摔指数来&#xff0c;之后才允许上市流通。…...

深入理解数字音频:采样率、位深与量化

在当今数字时代&#xff0c;音频技术已经渗透到我们生活的方方面面——从流媒体音乐到视频会议&#xff0c;从播客到智能家居。但你是否曾好奇过&#xff0c;这些美妙的声音是如何被捕捉、存储并在数字世界中重现的&#xff1f;本文将带你深入了解数字音频的核心概念&#xff0…...

2024年第十五届蓝桥杯青少Scratch初级组-国赛—画矩形

2024年第十五届蓝桥杯青少Scratch初级组-国赛—画矩形 题目点下方&#xff0c;支持在线编程&#xff0c;在线获取源码和素材&#xff5e; 画矩形_scratch_少儿编程题库学习中心-嗨信奥 程序演示可点下方&#xff0c;支持源码获取&#xff5e; 画矩形-scratch作品-少儿编程题库…...

java面试场景题: 设计⼀个微博系统

微博系统设计指南&#xff1a;从理论到实践 系统设计考察的核心能力 系统设计面试模拟真实工作场景&#xff0c;候选人需与面试官协作解决模糊问题。关键在于沟通、分析和权衡能力&#xff0c;而非追求完美方案。面试官关注思考过程&#xff0c;而非最终答案。 常见误区与改…...

市面上哪款AI开源软件做ppt最好?

市面上哪款AI开源软件做ppt最好&#xff1f; aippt&#xff1a;AiPPT - 全智能 AI 一键生成 PPT 网站形式&#xff0c;需要注册 ai to pptx &#xff1a;SmartSchoolAI/ai-to-pptx: 前端后端同时开源。 Ai-to-pptx是一个使用AI技术(DeepSeek)制作PPTX的助手&#xff0c;支持在…...

JMM初学

文章目录 1,线程间的同步和通信1.1, 共享内存并发模型 (Shared Memory Model)线程通信机制线程同步机制特点 1.2, 消息传递并发模型 (Message Passing Model)线程通信机制线程同步机制特点 适用场景对比 2,Java内存模型JMM2.0,Java内存模型的基础&#xff08;1&#xff09;内存…...

transformer和 RNN以及他的几个变体区别 改进

Transformer、RNN 及其变体&#xff08;LSTM/GRU&#xff09;是深度学习中处理序列数据的核心模型&#xff0c;但它们的架构设计和应用场景有显著差异。以下从技术原理、优缺点和适用场景三个维度进行对比分析&#xff1a; 核心架构对比 模型核心机制并行计算能力长序列依赖处…...

构建云原生安全治理体系:挑战、策略与实践路径

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;从传统安全走向“云原生安全” 随着企业 IT 架构从传统单体系统向容器化、微服务和云原生平台转型&#xf…...

vue-print-nb 打印相关问题

一、背景与解决方案 1、ElementUI表格打印通病&#xff0c;均面临边框丢失、宽度超出问题&#xff1a;相关解决代码有注释&#xff1b; 2、大多数情况下不会打印页眉页脚的日期、网址、未配置popTitle显示的undefined&#xff1a;相关解决代码有注释&#xff1b; 3、打印预览页…...

vcs仿真产生fsdb波形的两种方式

目录 方法一&#xff1a; 使用verilog自带的系统函数 方法二&#xff1a; 使用UCLI command 2.1 需要了解什么是vcs的ucli&#xff0c;怎么使用ucli&#xff1f; 2.2 使用ucli dump波形的方法 使用vcs仿真产生fsdb波形有两种方式&#xff0c;本文参考《vcs user guide 20…...

每日算法 -【Swift 算法】三数之和

Swift&#xff5c;三数之和&#xff08;3Sum&#xff09;详细题解 注释 拓展&#xff08;LeetCode 15&#xff09; ✨题目描述 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a, b, c&#xff0c;使得 a b c 0。请你找出所有和为 0 且不重…...

Go语言底层(三): sync 锁 与 对象池

1. 背景 在并发编程中&#xff0c;正确地管理共享资源是构建高性能程序的关键。Go 语言标准库中的 sync 包提供了一组基础而强大的并发原语&#xff0c;用于实现安全的协程间同步与资源控制。本文将简要介绍 sync 包中常用的类型和方法: sync 锁 与 对象池&#xff0c;帮助开发…...

登高架设作业操作证考试:理论题库高频考点有哪些?

一、安全基础知识 法律法规 《安全生产法》《特种作业人员安全技术培训考核管理规定》中关于登高作业的强制性要求&#xff08;如持证上岗、培训时限等&#xff09;。 事故责任划分&#xff1a;未系安全带、无监护作业等违规行为的法律后果。 个人防护 安全带使用标准&#…...

2025年06月06日Github流行趋势

项目名称&#xff1a;agent-zero 项目地址url&#xff1a;https://github.com/frdel/agent-zero项目语言&#xff1a;Python历史star数&#xff1a;8958今日star数&#xff1a;324项目维护者&#xff1a;frdel, 3clyp50, linuztx, evrardt, Jbollenbacher项目简介&#xff1a;A…...

华为云CentOS配置在线yum源,连接公网后,逐步复制粘贴,看好自己对应的版本即可,【新手必看】

华为云镜像源配置 YUM 源的详细步骤&#xff1a; 1. 备份原有的 YUM 源配置文件 在修改 YUM 源之前&#xff0c;建议备份原有的配置文件。通常&#xff0c;YUM 源的配置文件位于 /etc/yum.repos.d/ 目录下。例如&#xff0c;备份 CentOS 的默认 YUM 源配置文件&#xff1a; …...