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

关于设计模式、Java基础面试题

前言

之前为了准备面试,收集整理了一些面试题。
本篇文章更新时间2023年12月27日。
最新的内容可以看我的原文:https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv

设计模式

单例共有几种写法?

细分起来就有9种:懒汉(初始加载资源过多时使用)、饿汉、静态内部类、枚举(防止反序列化创建新对象)、ThreadLocal单例

建造者模式和工厂方法模式的区别是什么?

工厂模式注重创建一个产品,不关心创建细节;
建造者模式也是创建一个产品,同时关注组成的细节。

总结就是一个关注整体、一个关注细节。

简单工厂、工厂方法和抽象工厂之间的区别是什么?

使用场景有一些区别:

  • 简单工厂:适用于类关系简单、不复杂 并且 确定之后几乎不扩展的情况。
  • 工厂方法:适用于需要根据运行时上下文信息动态选择实现类的时候。
  • 抽象工厂方法模式:适用于创建一组相关 或 相互依赖的对象时使用。

桥接模式与适配器模式的区别是什么?

从目的来看,桥接模式关注的是分离,适配器关注的是合并、配合。

适配器模式分为哪几类?每类的应用场景是什么?

类适配器、对象适配器、接口适配器。

装饰器模式与代理模式的区别是什么?

共同点:都是让两个类一起配合工作。

区别:目标、侧重不一样

  • 装饰器模式:侧重扩展功能、增加职能;
  • 代理模式:侧重对被代理对象的访问控制。

模板设计模式的适用场景是什么?

适用于流程固定但是具体实现有区别的场景。

策略模式的优缺点是什么?

优点:避免多重条件转移语句、算法实现跟使用者分离、避免重复代理。
缺点:必须要知道所有策略类
扩展:可结合工厂模式、享元模式。

责任链模式的优缺点有哪些?

优点:减少对象之间的耦合,灵活指派处理者。
缺点:较长的责任链,可能会影响性能。

访问者模式的适用场景及优缺点有哪些?

适用场景:数据结构 与 数据操作 分离 ;
优点:容易扩展新操作;
缺点:增加新接收比较麻烦。

泛型的上限限定和下限限定是什么?

上限限定:是某个类或其子类;

public static <T extends MyClass> void addToList(List<T> list) {}

下限限定:是某个类或其超类。

public static void addToList(List<? super AbstractMyClass> list) {}

泛型的类型擦除和侨界方法是什么?

类型擦除:编译期间将泛型替换为普通类型,没有指定上、下限定的话就是Object,否则就是指定的边界类。

Java基础

反射的适用场景有哪些?

应用场景:动态加载类和实例化对象、动态代理和AOP、获取注解信息、编写通用的框架和工具类。

反射的优点和缺点

优点:动态灵活;
缺点:1.性能开销:反射涉及动态解析类型和方法的调用,有一定的性能开销;2.安全性问题:绕过访问控制修饰符的限制;3.可读性变差。

静态嵌套类与内部类区别

静态嵌套类不依赖外部类就可以进行实例化;
内部类要进行实例化的话,需要先实例化外部类。

抽象方法不能被static、native、synchronized修饰?

当一个线程进入一个对象的 synchronized 方法 A 之后, 其它线程是否可进入此对象的 synchronized 方法 B?

不能。只能进入非synchronized的方法。
对于同一个对象或者class来说。

finally 中的代码一定会执行吗?

不一定,比如虚拟机终止时、try内死循环。

SPI 是什么

提供一套标准接口,让服务提供方(第三方)实现,然后使用合适的方式(比如 Service Loader)发现这个服务实现并调用。

SPI 和 API 有啥区别?

目的不一样:SPI 用于扩展,让第三方实现;API 是对外提供服务,不支持扩展。

序列化和反序列化是什么?

序列化:将对象持久化到磁盘、写到数据库或在网络传输时,需要将对象序列化成二进制流;
反序列化:将二进制流数据还原成对象。

BIO、NIO 和 AIO 的区别?

BIO:同步阻塞IO,知道数据准备就绪、拷贝完成才继续执行;
NIO:同步非阻塞IO,Java中采用IO多路复用模型,避免了CPU资源的浪费。它可以将多个通道(Channel)注册到选择器(Selector),选择器通过select系统调用进行监控,当数据准备好之后让用户线程继续执行。

在linux2.6内核,还支持epoll系统调用,能监控无限多的FD,而且不会随FD增多而降低效率。

AIO:异步IO,基于事件以及回调机制实现,当数据准备好的时候,系统通知用户线程进行后续操作。

什么是语法糖?

为了方便程序而设计的特殊语法。对编程功能没有影响,主要是让代码更加简洁。

什么是检查异常,不受检查异常,运行时异常?并分别举例说明

检查异常(Checked Exceptions):这类异常是Exception及其子类的成员,它们在编译时被强制要求处理,否则程序无法通过编译。例如,如果程序要访问一个文件,但该文件不存在,就会出现一个IOException,这是一个检查异常。
运行时异常(Runtime Exceptions):这类异常是RuntimeException类及其子类的成员,它们在程序运行时可能发生,但不强制要求处理。例如,如果程序中出现空指针异常(NullPointerException)或数组越界异常(IndexOutOfBoundsException),这些都是运行时异常。运行时异常通常是由程序的逻辑错误引起的,因此程序应该尽量避免这些错误。
不受检查异常:运行时发生,一般是程序逻辑问题引起的。

finally块一定会执行吗?

JVM停止时不执行;for循环内的break、return不会。

public static void main(String[] args) {for (int i = 0; i < 2; i++) {try {System.out.println("开始try块");if(i == 0) {
//                    break;return;}} catch (Exception e) {System.out.println("执行了catch块,异常信息为:" + e.getMessage());} finally {System.out.println("执行finally块");}}
}

try、catch、finally语句块的执行顺序

如上。

一个空Object对象的占多大空间?

64位操作系统下,等于对象头的大小,即16字节。关闭指针压缩则是32

对象的组成

对象头+实际数据+对其填充。
image.png

对象头组成

  1. Mark Word(标记字段):Mark Word是对象头的核心部分,它用于存储对象的标记信息和运行时状态。Mark Word的具体结构和含义可能会因不同的虚拟机实现而有所差异,但通常包括以下内容:
    1. 对象的哈希码(HashCode):用于支持对象的哈希操作,如在HashMap中使用。
    2. 锁状态标志(Lock State Flags):用于支持对象的同步操作,如加锁、解锁等。
    3. GC标记(GC Mark):用于垃圾回收器标记对象的存活状态。
    4. 偏向锁(Biased Lock):用于支持对象的偏向锁优化,以提高单线程访问对象的性能。
  2. 类型指针(Class Metadata Pointer):类型指针指向对象所属的类元数据(Class Metadata),包括对象的类型信息、方法表(Virtual Method Table)等。通过类型指针,虚拟机可以确定对象的类型和方法的调用。

image.png

拆箱和装箱的过程

Integer数值范围在[-128, 127]的,将从对象池中获取。
Integer a = 1:自动装箱,从对象池中获取对象。
a++;先拆箱,自增之后,装箱

多态实现原理

回顾多态的三个必要条件:

区分实现方式与实现原理,实现方式:继承+重写。

而多态的实现原理是:动态绑定 + 虚拟方法表

而非私有、非静态和非 final 的方法是动态绑定的;
同一个class的多个实例,共用同一张虚拟方法表。

虚拟方法表在链接阶段&初始化。

image.png

集合

ArrayList的优缺点

优点:高效的随机访问;尾插、尾删较快;1.5倍动态扩容;
缺点:动态扩容需要重新分配内存,影响性能;不是线程安全;删除、插入元素可能需要移动元素,会损失一些性能;可能会有一些空间的浪费。

ArrayList和ListList区别

ArrayList:基于数组实现,具有高效的随机访问能力;在插入、删除元素时,可能需要最差的情况下需要

ArrayList初始容量

使用无参构造器创建的ArrayList,默认是一个空数组,没有分配空间,直到调用add()方法,会将初始容量设置为10。

ArrayList扩容机制

每次扩容原来的一半。
add(T t)为入口,插入元素前先检查容量,如果不够,那就计算要扩容到多少大小,然后检查要扩容的大小是否超过限制,最后使用Arrays.copyOf方法进行数组拷贝。

基层调用System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));

    private void grow(int minCapacity) {// overflow-conscious codeint oldCapacity = elementData.length;int newCapacity = oldCapacity + (oldCapacity >> 1); // 每次扩容原来的一半。if (newCapacity - minCapacity < 0)newCapacity = minCapacity;if (newCapacity - MAX_ARRAY_SIZE > 0)newCapacity = hugeCapacity(minCapacity);// minCapacity is usually close to size, so this is a win:elementData = Arrays.copyOf(elementData, newCapacity);}

LinkedList是双向链表还是单向链表

双向链表。这样删除、插入更高效;但是对比单向链表,需要的空间就多一些、实现也更复杂一些。

HashMap jdk1.7和1.8的实现有什么区别

  • 数据结构:JDK8引入了红黑树解决链表过长问题,数组类型改为Node。
  • 哈希冲突解决方式上:JDK7是采用头插法将元素插入链表,JDK8采用尾查法;
  • 扩容机制:JDK7扩容是在put操作中进行,当链表大于8时将重建数组和链表,并重新散列;JDK8的话,扩容是在resize方法进行,当元素数量达到需要调整的阈值时(容量*0.75),将触发扩容方法,创建更大的数组,将旧元素重新hash分配到新数组。

HashMap 的长度为什么是 2 的幂次方

为了让HashMap存取高效,让数据分配得更均匀,减少哈希碰撞。

HashMap 多线程操作导致死循环问题

JDK7之前,当桶中有多个元素需要进行扩容的时候,多线程同时进行,可能会生产环形链表,导致死循环。

JDK8采用了尾插法避免环形链表。

比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同

  • 相同:全部实现Set接口,都不是线程安全的;
  • 区别:最大的区别是底层结构不同,
    • HashSet:hash表;
    • LinkedHashSet:链表 + hash表、
    • TreeSet:红黑树。

HashMap底层结构

异同:
JDK8之后,new HashMap()不会创建一个长度为16的数组了。调用put的时候才创建。
JDK8之后,使用Node[]作为数组类型;
JDK8之后,使用数组+链表+红黑树,之前使用的是数组+链表。
下面是数据结构图:
JDK7
image.png
JDK8
image.png

HashMap什么时候转红黑树?

链表长度大于等于8并且数组长度大于等于64时。

HashMap红黑树为什么6的时候退回链表?

链表更简单、数据量小的时候,链表可能查得更快

ConcurrentHashMap底层结构

JDK7
image.png
JDK8
跟HashMap类似,采用CAS + synchronized保证并发安全。
image.png

JDK 1.7 和 JDK 1.8 的 ConcurrentHashMap 实现有什么不同?

数据结构不同:JDK7采用分段数组 + 条目数组 + 链表;JDK8采用数组 + 链表 + 红黑树;
并发程度不同:JDK7并发程度由分段数量决定;JDK8对Node加锁,并发读更大。

ConcurrentHashMap 为什么 key 和 value 不能为 null?

从设计上来说:用null的话无法区分是找不到才返回空还是原本就是null;
从源码上来看:需要取hashCode,空的key会抛出空指针异常。

ConcurrentHashMap 能保证复合操作的原子性吗?

不能。但是提供了一些复合操作原子性的方法,如putIfXX、compute等。

相关文章:

关于设计模式、Java基础面试题

前言 之前为了准备面试&#xff0c;收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文&#xff1a;https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv 设计模式 单例共有几种写法&#xff1f; 细分起来就有9种&#xff1a;懒汉&#x…...

Python爱心光波完整代码

文章目录 环境需求完整代码详细分析环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.net/arti…...

PowerShell Instal 一键部署gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…...

C语言——指针题目“指针探测器“

如果你觉得你指针学的自我感觉良好&#xff0c;甚至已经到达了炉火纯青的地步&#xff0c;不妨来试试这道题目&#xff1f; #include<stdio.h> int main() {char* c[] { "ENTER","NEW","POINT","FIRST" };char** cp[] { c 3…...

Hive讲课笔记:内部表与外部表

文章目录 一、导言二、内部表1.1 什么是内部表1.1.1 内部表的定义1.1.2 内部表的关键特性 1.2 创建与操作内部表1.2.1 创建并查看数据库1.2.2 在park数据库里创建student表1.2.3 在student表插入一条记录1.2.4 通过HDFS WebUI查看数据库与表 三、外部表2.1 什么是外部表2.2 创建…...

Docker本地部署开源浏览器Firefox并远程访问进行测试

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器&#xff0c;由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…...

PHP:服务器端脚本语言的瑰宝

PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛应用于服务器端编程的开源脚本语言&#xff0c;它以其简单易学、灵活性和强大的功能而成为Web开发的瑰宝。本文将深入介绍PHP的历史、特性、用途以及与生态系统的关系&#xff0c;为读者提供对这门语言全面的了解。…...

【MySQL】数据库并发控制:悲观锁与乐观锁的深入解析

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 悲观锁&#xff08;Pessimistic Locking&#xff09;: 乐观锁&#xff08;Optimistic Locking&#xff09;: 总结&#x…...

作业--day38

1.定义一个Person类&#xff0c;包含私有成员&#xff0c;int *age&#xff0c;string &name&#xff0c;一个Stu类&#xff0c;包含私有成员double *score&#xff0c;Person p1&#xff0c;写出Person类和Stu类的特殊成员函数&#xff0c;并写一个Stu的show函数&#xff…...

pytest 的 fixture 固件机制

一、前置说明 固件(fixture)是一些函数,pytest 会在执行测试函数之前(或之后)加载运行它们。pytest 使用 fixture 固件机制来实现测试的前置和后置操作,可以方便地设置和共享测试环境。 二、操作步骤 1. 编写测试代码 atme/demos/demo_pytest_tutorials/test_pytest_…...

分布式技术之分布式计算Stream模式

文章目录 什么是 Stream&#xff1f;Stream 工作原理Storm 的工作原理 实时性任务主要是针对流数据的处理&#xff0c;对处理时延要求很高&#xff0c;通常需要有常驻服务进程&#xff0c;等待数据的随时到来随时处理&#xff0c;以保证低时延。处理流数据任务的计算模式&#…...

2023年12月GESP Python五级编程题真题解析

【五级编程题1】 【试题名称】&#xff1a;小杨的幸运数 【问题描述】 小杨认为&#xff0c;所有大于等于a的完全平方数都是他的超级幸运数。 小杨还认为&#xff0c;所有超级幸运数的倍数都是他的幸运数。自然地&#xff0c;小杨的所有超级幸运数也都是幸运数。 对于一个…...

探索Apache Commons Imaging处理图像

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊图像处理。在这个数字化日益增长的时代&#xff0c;图像处理已经成为了一个不可或缺的技能。不论是社交媒体上的照片编辑&#xff0c;还是专业领域的图像分析&#xff0c;图像处理无处不在。而作为…...

【11】ES6:async/await

一、概念 async/await 是 ES2017&#xff08;ES8&#xff09;的新特性&#xff0c;它是一种基于 Promise 实现的异步编程方式。async/await 也是一种语法糖。 1、async/await 实现了用同步方式来写异步代码&#xff08;promise是链式调用形式写异步代码&#xff09; 2、asyn…...

深入理解Java集合框架

导语&#xff1a; Java集合框架是Java提供的一组用于管理对象的类和接口&#xff0c;它是Java编程中非常重要的一部分。Java集合框架通过提供诸如List、Set、Map等数据结构&#xff0c;为程序员提供了一种方便、高效的管理对象的方式。本文将深入理解Java集合框架&#xff0c;包…...

极智嘉加快出海发展步伐,可靠产品方案获客户认可

2023年&#xff0c;国内本土企业加快出海征程&#xff0c;不少企业在出海发展中表现出了优越的集团实力与创新的产品优势&#xff0c;有力彰显了我国先进的科技研发实力。作为全球仓储机器人引领者&#xff0c;极智嘉&#xff08;Geek&#xff09;也在不断加快出海发展步伐&…...

运动目标检测方法的概述

目录 ① 光流法 ② 帧差法 ③ 背景差分法 ④ 混合高斯模型法 ⑤ 总结 运动目标检测技术的应用十分的广泛&#xff0c;尤其是在智能视频监控领域。运动目标检测为后续的图像处理等操作提供了基础&#xff0c;在某种程度上&#xff0c;决定了整个系统的性能。运动目标检测&a…...

【Qt-Edit】

Qt编程指南 ■ QTextEdit■ QLineEdit■ QLineEdit 设置正则表达式■ QPlainTextEdit■ QKeySequenceEdit■ QList<QLineEdit *> edits■■■ QTextEdit /* 实例和对象,设置位置和显示大小 */ textEdit = new QTextEdit(this)...

vue data变量不能以“_”开头,否则会产生很多怪异问题

1、 比如给子组件赋值&#xff0c;子组件无法得到这个值&#xff08;也不是一直无法得到&#xff0c;设置后this.$forceUpdate() 居然可以得到&#xff09;&#xff0c; 更无法watch到 <zizujian :config"_config1"> </zizujian>this._config1 { ...…...

解释RestFUL API,以及如何使用它构建web程序

RESTful API&#xff08;Representational State Transfer&#xff09;是一种基于网络的软件架构风格&#xff0c;用于构建分布式系统。它利用 HTTP 协议中的各种方法&#xff08;如 GET、POST、PUT、DELETE&#xff09;来对资源进行操作&#xff0c;使得不同应用程序能够相互通…...

文件下载输出zip文件

文件下载输出成zip文件&#xff1a; 1、前端整个按钮&#xff0c;调js方法&#xff1a;&#xff08;参数&#xff1a;param,需要下载的id&#xff0c;用逗号拼接&#xff09; var param "?dto.id";//需要自己拼接param window.location.href "<%basePat…...

构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践

作者&#xff1a;柳下 概述 随着企业规模和数据量的增长&#xff0c;数据的价值越来越受到重视。数据的变化和更新变得更加频繁和复杂&#xff0c;因此及时捕获和处理这些变化变得至关重要。为了满足这一需求&#xff0c;数据库 CDC&#xff08;Change Data Capture&#xff…...

鸿蒙开发(二)- 鸿蒙DevEco3.X开发环境搭建

上篇说到&#xff0c;鸿蒙开发目前势头旺盛&#xff0c;头部大厂正在如火如荼地进行着&#xff0c;华为也对外宣称已经跟多个厂商达成合作。目前看来&#xff0c;对于前端或客户端开发人员来说&#xff0c;掌握下鸿蒙开发还是有些必要性的。如果你之前是从事Android开发的&…...

Openslide安装

文章目录 安装open-slide python下载openslide二进制文件解压到Anaconda的library目录下配置环境变量在py文件中添加以下语句即可 官网链接 安装open-slide python 表面上这样就可以导入了但事实上会遇到 Couldn’t locate OpendSlide DLL的问题&#xff0c;openslide必须独立安…...

【ES】Elasticsearch常见问题与解决(持续更新)

目录 Elasticsearch常见问题 1. 集群健康问题 2. 性能问题 3. 映射问题 4. 分片问题 5. 内存问题 6. 硬件问题 7. 配置问题 8. 安全问题 9. 网络问题 10. 版本不兼容 Elasticsearch日常使用小结 【Q】离线告警&#xff0c;有IP已离线 【Q】统计某个应用的某个索引…...

2023.12.29 Python面向对象 封装_继承_多台

目录 1.封装-私有与公开权限 2.继承 2.1多继承 2.2继承多层传递 2.3重写父类方法 2.4继承链 2.5禁止私有继承 3.多态 4.总结 1.封装-私有与公开权限 公开属性、公开方法&#xff1a;随便调用 私有属性、私有方法&#xff1a; 只能在类定义的内部调用 以两个下划线开头__的…...

通过自然语言处理增强推荐系统:协同方法

一、介绍 自然语言处理 (NLP) 是人工智能的一个分支&#xff0c;专注于使机器能够以有意义且有用的方式理解、解释和响应人类语言。它包含一系列技术&#xff0c;包括情感分析、语言翻译和聊天机器人。 另一方面&#xff0c;推荐系统&#xff08;RecSys&#xff09;是旨在向用户…...

大创项目推荐 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习OCR中文识别系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;…...

Python经典游戏 唤醒你童年记忆

这些游戏你玩过几个&#xff1f; 1.贪吃蛇2.吃豆人3.加农炮4.四子棋5. Fly Bird<font color #f3704ab>6.记忆&#xff1a;数字对拼图游戏&#xff08;欢迎挑战&#xff01;用时&#xff1a;2min&#xff09;7.乒乓球8.上课划水必备-井字游戏&#xff08;我敢说100%的人都…...

什么是骨传导耳机?骨传导能保护听力吗?

骨传导耳机是一种非常特殊的蓝牙耳机&#xff0c;它通过骨传导技术将声音直接传送到内耳。这种技术不同于传统耳机&#xff0c;它不通过空气传送声音&#xff0c;而是通过头骨的振动来传送声音。 并且骨传导耳机能够在一定程度上起到保护听力的作用&#xff0c;主要是因为它们不…...

网站增长期怎么做/推广平台都有哪些

在centos下要剪切文件或者文件夹的时候&#xff0c;一般都是使用的mv命令。 例如要移动a文件到b目录下。操作如下&#xff1a; #假设a和b处于同一级别的目录下 mv a b/ 如果要同时移动多个文件或者文件夹呢&#xff1f; 其实用的也是mv命令。 具体参数用的是-t 查看帮助解…...

哪个网站做欧洲旅行比较好/东莞网站优化关键词排名

参考文档&#xff1a; 11gR2 Clusterware and Grid Home - What You Need to Know (Doc ID 1053147.1)诊断 Grid Infrastructure 启动问题 (Doc ID 1623340.1) Oracle 11gR2 中对CRSD资源进行了重新分类&#xff1a; Local Resources 和 Cluster Resources&#xff0c;可以通过…...

wordpress 侧边栏浮动/网站优化推广费用

http://pan.baidu.com/s/1kTG9DVD GUI源码 转载于:https://www.cnblogs.com/ldxsuanfa/p/10685067.html...

wordpress 底部小工具/百度指数的使用方法

支持基本的分区建立、删除、隐藏等操作。建立新分区时可指定详细参数&#xff1b; 支持ide、scsi、sata等各种类型的硬盘。支持u盘、usb硬盘、存储卡(闪存卡)&#xff1b; 支持fat12、fat16、fat32、ntfs文件系统&#xff1b; 可以快速格式化fat12、fat16、fat32、ntfs分区。格…...

wordpress 緩慢/石家庄seo外包公司

SpringBoot项目解决 log4j2 核弹漏洞&#xff01; 事件情况 北京时间12月9号深夜&#xff0c;Apache Log4j2被曝出一个高危漏洞&#xff0c;攻击者通过jndi注入攻击的形式可以轻松远程执行任何代码。随后官方紧急推出了2.15.0和2.15.0-rc1新版本修复&#xff0c;依然未能完全…...

建设网站公司哪好/百度风云榜小说排行榜

将&#xff08;r,g,b,a&#xff09;变为(r*a,g*a,b*a,a)的操作称为alpha预乘。 对于alpha预乘的图片&#xff0c;应使用(One,OneMinusSrcAlpha)进行混合。 使用alpha预乘方式混合出来的结果图片也是alpha预乘的。所以在显示此结果图片时应该使用(One,OneMinusSrcAlpha)对其进行…...