企业面试真题----阿里巴巴
1.HashMap为什么不是线程安全的?
首先hashmap就是为单线程设计的,并不适合于多线程环境,而hashmap的线程不安全原因主主要是以下两个原因:
死循环
死循环问题发生在jdk1.8之前(不包含1.8),造成死循环的原因要满足三个条件:添加操作是头插法,触发扩容操作,多线程并发执行时才可能会触发死循环问题。但是在1.8之后就修复了这个死循环问题(将头插法改成尾插法)。
数据覆盖
数据覆盖也很好理解,就是在hashmap中添加操作不是一个原子性操作。例如,有两个线程a,b,线程a根据key的hashcod()方法按位与再右移16位得到一个哈希槽的位置,此时判断到该哈希槽没有元素,可以将值插入,但此时线程a的时间片用完了,此时线程b做了同样的判断操作,发现该位置没有元素,就将其值插入,此时cpu调度的时间片又回到了线程a,但线程a不会再进行判断操作,而是直接插入,此时就将线程b的值给覆盖住了。这就是数据覆盖问题,在以后的jdk版本中数据覆盖问题也是没有解决的
2.进程间是如何进行通讯的?
首先这是一个操作系统的问题,问的是进程之间的通讯方式。而进程之间的通讯方式有管道通讯,消息队列通讯,共享内存通讯,信号量通讯等
管道:他是一种半双工的通讯方式,数据流之间只能进行单向通信,比较适合于一些具有父子进程的通讯方式,它在内核中开辟一块缓冲区,一个进程向缓冲区写入数据,另一个进程从缓冲区读取数据。比如,在 Linux 系统中,通过pipe
系统调用可以创建一个管道,会返回两个文件描述符,一个用于读,一个用于写。
消息队列:消息队列是由消息的链表组成,存放在内核中,并由消息队列标识符标识。进程可以向消息队列中添加消息(发送消息),也可以从消息队列中读取消息(接收消息)。消息队列克服了信号承载信息量少、管道只能承载无格式字节流以及缓冲区大小受限等缺点,能传递有格式的数据块。
共享内存:共享内存是最快的一种进程间通信方式,它允许多个进程共享同一块物理内存空间。不同进程可以将这块共享内存映射到自己的虚拟地址空间中,对这块内存进行读写操作就可以实现数据的交换和共享,不过通常需要配合信号量等同步机制来防止出现数据不一致等并发问题。
信号量:信号量本质上是一个计数器,主要用于多个进程间的同步,协调它们对共享资源的访问。它可以控制多个进程对共享资源的并发访问数量,避免出现多个进程同时操作同一资源导致的数据不一致等问题。例如,初始化信号量的值为 1,意味着同一时刻只允许一个进程访问对应的共享资源,当一个进程获取到信号量(进行 P 操作,使信号量的值减 1)后,其他进程需要等待该进程释放信号量(进行 V 操作,使信号量的值加 1)才能访问。
补充:其实一般问的比较多的是线程间的通信,在java中线程间的通信主要有以下几种:
Object -> wait/notify/notifyAll
Condition -> await/signal/signalAll
LockSupport -> park/unpark
上面三个主要的区别就是:Object 底下的方法是随机唤醒线程,Condition 底下的方法是可以以线程组的方式唤醒,而LockSupport底下的是可以唤醒指定的线程。
3.线程池的核心线程与非核心线程有什么区别?
首先线程池的主要作用就是线程的复用和节省频繁创建线程时带来的性能开销。在线程池中有七大参数:核心线程数,最大线程数,临时线程数,临时线程的存活时间,任务队列,线程工厂,拒绝策略。其中的临时线程就是非核心线程。
主要区别:
**1.创建的时间不同:**核心线程是在当有任务来的时候就会创建核心线程,而临时线程是当任务队列满了以后,但还未到达最大线程时会创建临时线程。
2.生命周期不同:核心线程是创建后不会被销毁的,除非发生异常情况。而临时线程在空闲状态(即没有任务可执行)持续一定时间(这个时间由keepAliveTime
参数指定)后,线程池会尝试回收这些临时线程,将其销毁,释放系统资源。
4.MVCC是如何实现的?
MVCC主要是由Undo log版本链 + Read View这两部分来实现的。
Undo log版本链:
它是由一条条的 Undo log 记录串联起来形成的一个类似链表的结构,用于记录数据在不同事务操作阶段下的历史版本信息。而Undo log 是数据库的一种回滚日志,用于记录数据的更新操作之前的数据,防止在事务失败或者异常后进行回滚的。
Read View:它是数据库在某个特定时刻为一个正在执行的事务生成的一个视图,用于决定该事务能看到哪些版本的数据,也就是基于这个视图去从众多数据的历史版本(由 Undo log 版本链所记录的数据不同时刻的版本)中筛选出符合要求的版本来供事务读取。读视图主要由四部分组成:当前正在活跃的事务ID集合,最小的事务ID,最大的事务ID,当前事务ID四部分。
当前正在活跃的事务:这部分包含了在生成 Read View 时刻,系统中所有正在执行但尚未提交的事务的 ID。
最小的事务:它代表了系统中当前已创建的事务里最小的事务 ID。一般来说,小于这个最小事务 ID 的数据版本对应的事务已经完成且提交了,是相对比较 “陈旧” 且稳定的版本,更有可能对当前读取事务可见。
最大的事务:最大事务 ID 用于界定数据版本是否是在 Read View 生成之后才出现的情况。如果一个数据版本对应的事务 ID 大于这个最大事务 ID,那就意味着这个版本是在当前 Read View 生成之后才被创建的,对于正在基于该 Read View 进行读取的事务来说必然是不可见的
Read View的判断规则如下:
1.首先从undo log链中获取当前数据行的事务id与当前事务id进行对比,如果相等就直接返回数据,如果没有则进行下一步。
2.如果当前最新数据行的事务id < 最小事务id,说明在查询前,其他数据的事务已经提交了是可见的,因此直接返回数据即可,若不满足就进行下一步。
3.如果当前最新数据行的事务id > 最大事务id,说明正在执行的事务还没有提交是不可见的。
4.如果当前最新数据行的事务id 位于最大事务和最小事务之间又分为两种情况:
如果当前最新数据行的事务id在活跃事务列表之中,说明事务还没有提交,数据不可见
如果当前最新数据行的事务id不在活跃事务列表之中,说明事务已经执行完,数据可见
以上就是Read View的判断规则
5.TCP的拥塞控制是什么?
TCP有八大特性:确认应答,连接管理,超时重传,流量控制,滑动窗口,拥塞控制,延迟应答,捎带应答
那么拥塞控制什么???
在网络中,如果数据量过多可能会造成网络拥塞,TCP 有一套算法来监测和应对这种情况。例如,通过慢启动、拥塞避免、快重传、快恢复等算法来动态调整发送窗口大小,控制发送数据的速率,以缓解网络拥塞状况,防止网络性能急剧下降。
拥塞控制是针对于数据流的发送方的,当出现网络抖动和其他原因时,调整数据发送方的数据包大小,便于缓解网络情况。
6.TCP与UDP有什么区别?
主要区别:
1.tcp是面向有连接的,而udp是面向无连接的。这里说的连接指的是在数据传输之前要进行双方的确认,tcp有三次握手机制来确定对方是在线的是可以接收数据的。而udp在数据传输之前是不需要确定对方在不在的,容易出现数据丢失问题。
2.tcp的可靠性更高,因为基于tcp的八大特性,他的数据传输是比较可靠的,但udp是没有这些特性的,但是udp得传输速度是很快的。
3.二者的应用场景也是不同的:
7.TCP的流量控制?
TCP 通过滑动窗口机制来实现流量控制,接收方会根据自己的接收能力告知发送方自己的接收窗口大小,发送方会根据这个窗口大小来控制发送的数据量,避免发送过多的数据导致接收方处理不过来而出现数据丢失等问题。
tcp的流量控制是针对于数据接收方的,不要将这个与拥塞控制搞混!!!
8.JDK Proxy和CG lib有什么区别?
JDK Proxy和CG lib主要是动态代理实现的两种方式,但主要区别有以下几点:
1.来源不同:JDK Proxy是Java自带的动态代理,只能代理实现了接口的代理类,而CG lib是一个第三方库,他无需被代理对象是不是接口,但是被代理类不能是final修饰。
2.原理不同:JDK Proxy底层是依赖于java.lang.reflect.Proxy
类和java.lang.reflect.InvocationHandler
接口来实现。Proxy
类是创建代理对象的关键类,而InvocationHandler
接口则定义了代理对象在调用方法时的具体行为逻辑。是基于反射来实现的。而CG lib的底层是生成被代理类的子类来实现的。
9.BeanFactory和FactoryBean有什么区别?
BeanFactory
是 Spring 框架的核心接口之一,它是 Spring 容器的顶层抽象,负责管理和维护 Spring 中的 Bean(也就是 Java 对象)。它提供了一种高级的配置机制以及对 Bean 实例化、配置和管理的功能,简单来说,就是它掌控着 Spring 应用中各个对象的创建、装配以及生命周期等诸多事宜。BeanFactory
采用的是延迟初始化策略,也就是只有在真正需要使用某个 Bean 的时候,才会去实例化它。
XmlBeanFactory
:这是早期 Spring 版本中常用的基于 XML 配置文件的BeanFactory
实现类,不过后来逐渐被功能更强大的ApplicationContext
相关实现类替代,但在一些简单场景或者学习了解BeanFactory
基本原理时还是会涉及到它。ApplicationContext
:它是BeanFactory
的子接口,功能更加强大,不仅具备BeanFactory
的基本功能,还额外提供了如国际化支持、事件发布与订阅、资源加载等更多高级功能,是实际开发中使用更为广泛的 Spring 容器实现形式。
FactoryBean
是一个接口,它本身也是一种特殊的 Bean,其设计目的在于让开发者能够自定义 Bean 的创建逻辑。通过实现这个接口,开发者可以控制某个具体 Bean 的实例化过程,不仅仅局限于常规的通过构造函数或者简单的配置属性来创建 Bean,而是可以按照自己期望的复杂方式去生成 Bean 实例。
- 类型转换与隐藏实现细节:
FactoryBean
返回的对象类型不一定就是其自身实现类的类型,它通过getObjectType
方法明确返回实际创建的 Bean 对象的类型,这样在 Spring 容器中获取该 Bean 时,得到的就是getObject
方法中返回的那个对象,能够方便地进行类型转换等操作,同时隐藏了复杂的创建过程细节,外部使用者只关心最终获取到的可用 Bean 实例就好。 - 控制单例与否:通过
isSingleton
方法可以指定创建出来的 Bean 是否是单例的。如果返回true
,那么 Spring 容器在整个生命周期内只会创建一个该 Bean 的实例,后续获取都是同一个;如果返回false
,则每次获取时都会重新创建一个新的 Bean 实例。 - 与 BeanFactory 的关系:
FactoryBean
是在BeanFactory
管理 Bean 的大框架下发挥作用的,它为BeanFactory
提供了一种更灵活的 Bean 创建方式,让 Spring 容器能够处理那些需要特殊创建逻辑的 Bean 情况,丰富了 Spring 容器创建和管理 Bean 的手段。
10.Bean的创建流程?
Bean的创建流程主要是以下几步:实例化,属性赋值,初始化(初始化前置处理,初始化方法调用,初始化后置调用)使用,销毁
实例化:主要就是给Bean分配内存空间,调用Bean的构造方法
属性赋值:在创建实例后,通过依赖注入给Bean的属性赋值
初始化:
初始化前置处理:会调用所有实现了BeanPostProcessor接口的类的postProcessorBeforeInitialization方法
初始化方法调用:通过注解或实现InitializingBean接口
初始化后置调用: 会调用所有实现了BeanPostProcessor接口的类的postProcessorAfterInitialization方法
使用:在经历过以上三步完成后,就可以执行bean的业务逻辑了
销毁:关闭容器就会销毁Bean
11.JVM的区域划分?
JVM是由类加载器,执行引擎,本地方法库,运行时数据区域构成的。而运行时数据区域又是由:虚拟机栈,本地方法栈,堆,程序计数器,方法区构成
虚拟机栈:用于存储方法调用和局部变量,操作数栈,方法的返回地址等
本地方法栈:JVM主要由c++完成,本地方法栈存放的就是c++的一些函数库
堆:主要存放对象的实例,是运行时数据区域最大的一块内存,几乎所有的对象都在堆上分配内存
程序计数器:主要记录程序到了哪一步,主要存储当前程序字节码指令的地址
方法区:用于存放类的结构信息,例如,类的结构,字段,方法,静态变量等。
12.堆的组成?
堆是运行时数据区域最大的一块内存区域:
年轻代:年轻代是堆内存中用来存放新创建对象的区域,大部分新创建的对象都会首先在这里进行分配内存。它被设计为可以快速进行垃圾回收的结构,因为在这个区域中对象的生命周期通常较短,很多对象很快就会变成垃圾(也就是不再被使用的对象),需要被回收释放内存空间。年轻代又被细分为以下两个区域:
- Eden 区:这是年轻代中最大的一个区域,新创建的对象通常首先会被分配到 Eden 区的内存空间中。例如,当我们在 Java 代码中通过
new
关键字创建一个新的对象时,只要 Eden 区还有足够的空闲内存,这个对象就会在这里分配内存,像Object obj = new Object();
这样简单的对象创建操作,对象大概率就初始分配在 Eden 区。 - Survivor 区:Survivor 区又分为
Survivor0
(也常称作from
区)和Survivor1
(也常称作to
区),它们的大小一般是相同的,两个区主要用于在垃圾回收过程中存放那些经过一次垃圾回收后仍然存活的对象。当 Eden 区进行垃圾回收(在年轻代中这种垃圾回收称作 Minor GC)后,存活下来的对象会被转移到其中一个 Survivor 区(比如Survivor0
),下一次 Minor GC 时,Eden 区和当前使用的 Survivor 区(Survivor0
)中存活的对象会被一起转移到另一个 Survivor 区(Survivor1
),如此反复,对象会在两个 Survivor 区之间来回复制转移,并且每经过一次这样的转移,对象的年龄(通过对象头中的一个字段来记录)就会加 1,直到对象的年龄达到一定阈值(可以通过 JVM 参数进行配置,默认是 15),这些对象就会被晋升(Promotion)到年老代中。
老年代:年老代主要用于存放那些经过多次垃圾回收后仍然存活的对象,也就是生命周期相对较长的对象。
在 Java 8 之前,永久代是堆内存中的一部分,它主要用于存放类的相关信息,比如类的字节码、常量池、静态变量、方法等信息。
年龄达到一定阈值(可以通过 JVM 参数进行配置,默认是 15),这些对象就会被晋升(Promotion)到年老代中。
老年代:年老代主要用于存放那些经过多次垃圾回收后仍然存活的对象,也就是生命周期相对较长的对象。
在 Java 8 之前,永久代是堆内存中的一部分,它主要用于存放类的相关信息,比如类的字节码、常量池、静态变量、方法等信息。
元空间:Java 8 将永久代废弃,取而代之的是元空间。元空间并不在堆内存之中,而是使用本地内存(Native Memory)来存放类的元数据等信息。这样做的好处是,它的内存大小不再受限于 JVM 堆内存的设置,可以根据实际应用的需要动态地使用本地内存,在一定程度上缓解了原来永久代容易出现内存溢出的问题,并且提高了类加载等相关操作的灵活性。
相关文章:
企业面试真题----阿里巴巴
1.HashMap为什么不是线程安全的? 首先hashmap就是为单线程设计的,并不适合于多线程环境,而hashmap的线程不安全原因主主要是以下两个原因: 死循环 死循环问题发生在jdk1.8之前(不包含1.8),造…...
极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【四】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
【C++知识总结2】C++里面的小配角cout和cin
一、引入 第一个关于输入输出的C代码 #include<iostream> // std是C标准库的命名空间名,C将标准库的定义实现都放到这个命名空间中 using namespace std; int main() {cout<<"Hello world!!!"<<endl;return 0; } 1. 使用cout标准输出…...
门控循环单元(GRU)与时间序列预测应用
一、GRU简介 门控循环单元(Gated Recurrent Unit,简称GRU)是一种简化版的LSTM(长短期记忆网络),专门用于解决长序列中的梯度消失问题。与LSTM相比,GRU具有更简单的结构和较少的参数,…...
Spring Boot 3 集成 Spring Security(2)授权
文章目录 授权配置 SecurityFilterChain基于注解的授权控制自定义权限决策 在《Spring Boot 3 集成 Spring Security(1)》中,我们简单实现了 Spring Security 的认证功能,通过实现用户身份验证来确保系统的安全性。Spring Securit…...
互联网摸鱼日报(2024-11-22)
互联网摸鱼日报(2024-11-22) 36氪新闻 学习马斯克不丢人,脸书也开始改造自己了 旅游行业趋势变了,增长还能从哪里寻找? 大厂入局后,小型小游戏团队能否继续喝一口汤? 一拥而上的“跨界咖啡”,是“走心”…...
RNN并行化——《Were RNNs All We Needed?》论文解读
InfoPaperhttps://arxiv.org/abs/2410.01201GitHubhttps://github.com/lucidrains/minGRU-pytorch个人博客地址http://myhz0606.com/article/mini_rnn 最近在看并行RNN相关的paper,发现很多都利用了Parallel Scanning算法。本文将从Parallel Scanning算法开始&…...
机器学习周志华学习笔记-第6章<支持向量机>
机器学习周志华学习笔记-第6章<支持向量机> 卷王,请看目录 6支持向量机6.1 函数间隔与几何间隔6.1.1 函数间隔6.1.2 几何间隔 6.2 最大间隔与支持向量6.3 对偶问题6.4 核函数6.5 软间隔支持向量机6.6 支持向量机6.7核方法 6支持向量机 支持向量机是一种经典…...
IP反向追踪技术,了解一下?
DOSS(拒绝服务)攻击是现在比较常见的网络攻击手段。想象一下,有某个恶意分子想要搞垮某个网站,他就会使用DOSS攻击。这种攻击常常使用的方式是IP欺骗。他会伪装成正常的IP地址,让网络服务器以为有很多平常的请求&#…...
2025蓝桥杯(单片机)备赛--扩展外设之UART1的原理与应用(十二)
一、串口1的实现原理 a.查看STC15F2K60S2数据手册: 串口一在590页,此款单片机有两个串口。 串口1相关寄存器: SCON:串行控制寄存器(可位寻址) SCON寄存器说明: 需要PCON寄存器的SMOD0/PCON.6为0,使SM0和SM…...
Linux 使用gdb调试core文件
core文件和gdb调试 什么是 core 文件?产生core文件的原因?core 文件的控制和生成路径gdb 调试core 文件引用和拓展 什么是 core 文件? 当程序运行过程中出现Segmentation fault (core dumped)错误时,程序停止运行,并产…...
Python后端flask框架接收zip压缩包方法
一、用base64编码发送,以及接收 import base64 import io import zipfile from flask import request, jsonifydef unzip_and_find_png(zip_data):# 使用 BytesIO 在内存中处理 zip 数据with zipfile.ZipFile(io.BytesIO(zip_data), r) as zip_ref:extracted_paths…...
【21-30期】Java技术深度剖析:从分库分表到微服务的核心问题解析
🚀 作者 :“码上有前” 🚀 文章简介 :Java 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 文章题目:Java技术深度剖析:从分库分表到微服务的核心问题解析 摘要: 本…...
Linux 中 find 命令使用详解
目录 一:基本语法二:搜索路径1、限制递归层级2、排除指定路径 三:匹配条件1、按照文件名搜索2、按文件类型搜索3、按文件大小搜索4、按文件权限搜索5、按文件所有者或所属组搜索6、按文件修改时间搜索 四:执行操作1、输出满足条件…...
云服务器部署WebSocket项目
WebSocket是一种在单个TCP连接上进行全双工通信的协议,其设计的目的是在Web浏览器和Web服务器之间进行实时通信(实时Web) WebSocket协议的优点包括: 1. 更高效的网络利用率:与HTTP相比,WebSocket的握手只…...
林业产品智能推荐引擎:Spring Boot篇
1 绪论 1.1 选题背景 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。计算机软件可以针对不同行业的营业特点以及管理需求,设置不同的功能&…...
【C++】LeetCode:LCR 077. 排序链表
题干 LCR 077. 排序链表 给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 解法:归并排序 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(null…...
git教程
文章目录 简介:使用教程:(1)安装git:(2)设置用户名和邮箱作为标识符:(3)建立本地仓库:本地仓库作用:(1)将文件…...
报表工具功能对比:免费易上手的山海鲸报表 vs 庞大用户群体的Tableau
在数据报表与分析领域,随着大数据技术的不断发展和企业数字化转型的深入,市面上涌现出了众多报表工具,为用户提供多元化的选择。对于企业数据分析师、IT人员及管理层来说,选择一款适合自己的报表工具至关重要。本文将从多个角度对…...
鸿蒙原生应用开发及部署:首选华为云,开启HarmonyOS NEXT App新纪元
目录 前言 HarmonyOS NEXT:下一代操作系统的愿景 1、核心特性和优势 2、如何推动应用生态的发展 3、对开发者和用户的影响 华为云服务在鸿蒙原生应用开发中的作用 1、华为云ECS C系列实例 (1)全维度性能升级 (2ÿ…...
CSS之3D转换
三维坐标系 三维坐标系其实就是指立体空间,立体空间是由3个轴共同组成的。 x轴:水平向右注意:x右边是正值,左边是负值 y轴:垂直向下注意:y下面是正值,上面是负值 z轴:垂直屏幕注意:往外面是正值,往里面是负值 3D移动 translat…...
uni-app初学笔记:文件路径与作用
components:可复用的组件pages:页面(可见/不可见)static:静态资源,存放图片视频等 (相当于vue项目的 assets)mainjs:Vue初始化入口文件App.vue:应用配置,用来配置App全局样式以及监听pages.json :配置页面路…...
子组件中$emit和update更新传递变量
vue2.6之后才可以使用update更新,vue2.6以下版本使用input和v-model 需求描述:蒙层上展示弹窗,弹窗点击关闭,需要向父传递关闭的信息 方法1,简便直接传递变量visible(或者不改名isModalVisible也是可以的…...
浅谈Python库之lxml
一、基本介绍 lxml 是一个用 Python 编写的库,它提供了对 XML 和 HTML 文档的解析和操作功能。它使用 C 语言编写的 libxml2 和 libxslt 库作为后端,因此解析速度非常快,并且能够处理大型文档。lxml 支持 XPath 和 XSLT,这使得它在…...
spring boot框架漏洞复现
spring - java开源框架有五种 Spring MVC、SpringBoot、SpringFramework、SpringSecurity、SpringCloud spring boot版本 版本1: 直接就在根下 / 版本2:根下的必须目录 /actuator/ 端口:9093 spring boot搭建 1:直接下载源码打包 2:运行编译好的jar包:actuator-testb…...
IDEA插件CamelCase,快速转变命名格式
在IDEA上大小写转换的快捷键是 CtrlshitU 其它的格式转换的快捷键是 shitaltu 安装方法: file-settings-plugins-在marketplace搜索“CamelCase”-点击安装。 安装成功设置后,重新打开idea 下载完成后 点击 Apply 和OK 此刻就可以选中命名 并使用快捷…...
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大家好,我是锋哥。今天分享关于【Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?】面试题。希望对大家有帮助; Elasticsearch中的节…...
Spring Boot 集成 Knife4j 的 Swagger 文档
在开发微服务应用时,API 文档的生成和维护是非常重要的一环。Swagger 是一个非常流行的 API 文档工具,可以帮助我们自动生成 RESTful API 的文档,并提供了一个友好的界面供开发者测试 API。本文将介绍如何在 Spring Boot 项目中集成 Knife4j …...
C# 创建快捷方式文件和硬链接文件
C# 创建快捷方式文件和硬链接文件 引言什么是快捷方式什么是硬链接文件硬链接与快捷方式不同 实现创建快捷方式文件实现创建硬链接文件小结 引言 什么是快捷方式 平常我们最常window桌面上点击的左下角带小箭头的文件就是快捷方式了,大家都很熟悉它。快捷方式是Wi…...
Linux高阶——1123—服务器基础服务器设备服务器基础能力
目录 1、服务器基础 1、服务器基本概述 2、服务器设计之初解决的问题 网络穿透 网络数据设备间的收发 3、服务器的类型C/S、B/S 2、服务器设备 将自己的服务器软件部署上线 3、代理服务器负载均衡,以及地址绑定方式 4、服务器的基础能力 1、服务器基础 1…...
LabVIEW串口通讯速度
LabVIEW串口通讯能达到的速度 LabVIEW支持高效的串口通讯,通过优化设置,理论上可以实现每次接收一个字节时达到1ms甚至更短的周期。不过,实际性能会受到以下因素的限制: 波特率(Baud Rate):…...
Jmeter中的监听器
3)监听器 1--查看结果树 用途 调试测试计划:查看每个请求的详细信息,帮助调试和修正测试计划。分析响应数据:查看服务器返回的响应数据,验证请求是否成功。检查错误:识别和分析请求失败的原因。 配置步骤…...
缺失的第一个正数(java)
题目描述: 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums [1,2,0] 输出:3 解释:范围 […...
跨部门文件共享安全:平衡协作与风险的关键策略
在现代企业中,跨部门协作已成为推动业务发展的关键因素。然而,随着信息的自由流动和共享,文件安全风险也随之增加。如何在促进跨部门协作的同时,确保文件共享的安全性,成为了一个亟待解决的问题。 一、明确文件分类与…...
一键AI换脸软件,支持表情控制,唇形同步Facefusion-3.0.0发布!支持N卡和CPU,一键启动包
嗨,小伙伴们!还记得小编之前介绍的FaceFusion 2.6.1吗?今天给大家带来超级exciting的消息 —— FaceFusion 3.0.0闪亮登场啦! 🌟 3.0.0版本更新 🏗️ 全面重构:修复了不少小虫子,运行更稳定,再也不怕突然罢工啦! 😀 Live Portrait功能:新增…...
我要成为算法高手-递归篇
目录 题目1:汉诺塔题目2:合并两个有序链表题目3:反转链表题目4:两两交换链表中的结点题目5:Pow(x,n) 题目1:汉诺塔 面试题 08.06. 汉诺塔问题 - 力扣(LeetCode) 解题思路࿱…...
Git 提交的相对引用
Git 提交的相对引用 在 Git 中,使用 ~ 和 ^ 符号可以帮助你更灵活地引用提交历史中的特定提交。以下是这些符号的具体用法和示例: 1. ~(波浪号) ~ 符号用于指向上一个或多个父提交。它总是沿着第一个父提交的链向上追溯。 HEA…...
国内首家! 阿里云人工智能平台 PAI 通过 ITU 国际标准测评
近日,阿里云人工智能平台 PAI 顺利通过中国信通院组织的 ITU-T AICP-GA(Technical Specification for Artificial Intelligence Cloud Platform:General Architecture)国际标准和《智算工程平台能力要求》国内标准一致性测评&…...
CDAF / PDAF 原理 | PDAF、CDAF 和 LAAF 对比 | 图像清晰度评价指标
注:本文为 “CDAF / PDAF 原理 | PDAF、CDAF 和 LAAF 对比 | 图像清晰度评价指标” 几篇相关文章合辑。 文章中部分超链接、图片异常受引用之前的原文所限。 相机自动对焦原理 TriumphRay 于 2020-01-16 18:59:41 发布 凸透镜成像原理 这一部分大家中学应该就学过…...
小米C++ 面试题及参考答案下(120道面试题覆盖各种类型八股文)
指针和引用的区别?怎么实现的? 指针和引用有以下一些主要区别。 从概念上来说,指针是一个变量,它存储的是另一个变量的地址。可以通过指针来间接访问所指向的变量。例如,我们定义一个整型指针int *p;,它可以指向一个整型变量的内存地址。而引用是一个别名,它必须在定义的…...
WPF异步UI交互功能的实现方法
前面的文章我们提及过,异步UI的基础实现。基本思路主要是开启新的UI线程,并通过VisualTarget将UI线程上的Visual(即RootVisual)连接到主线程上的UI上即可渲染显示。 但是,之前的实现访问是没有交互能力的,视觉树上的UI并不能实现…...
2024 java大厂面试复习总结(一)(持续更新)
10年java程序员,2024年正好35岁,2024年11月公司裁员,记录自己找工作时候复习的一些要点。 java基础 hashCode()与equals()的相关规定 如果两个对象相等,则hashcode一定也是相同的两个对象相等,对两个对象分别调用eq…...
TCP/IP学习笔记
TCP\IP从实际应用的五层结构开始,自顶而下的去分析每一层。 TCP/IP五层架构概述 学术上面是TCP/IP四层架构,OSI/ISO是七层架构,实际中使用的是TCP/IP五层架构。 数据链路层 ICMP数据包分析 Wireshark抓包分析ICMP协议_wireshark抓ping包分析…...
基于IPMI的服务器硬件监控指标解读
在现代化数据中心中,服务器的稳定运行对于保障业务连续性至关重要。为了实时掌握服务器的健康状况,运维团队需要借助高效的监控工具。监控易作为一款功能强大的监控软件,支持使用IPMI(Intelligent Platform Management Interface&…...
相亲交友小程序项目介绍
一、项目背景 在当今快节奏的社会生活中,人们忙于工作和事业,社交圈子相对狭窄,寻找合适的恋爱对象变得愈发困难。相亲交友作为一种传统而有效的社交方式,在现代社会依然有着巨大的需求。我们的相亲交友项目旨在为广大单身人士提…...
Day3 洛谷Day3 1161+1179+1200+1304
零基础洛谷刷题记录 Day1 2024.11.18 Day2 2024.11.25 Day3 2024.11.26 文章目录 零基础洛谷刷题记录1161:题目描述1161:解题代码1161:学习成果1179:题目描述(成功写出)1179:解题代码1179&…...
【通俗理解】ELBO(证据下界)——机器学习中的“情感纽带”
【通俗理解】ELBO(证据下界)——机器学习中的“情感纽带” 关键词提炼 #ELBO #证据下界 #变分推断 #机器学习 #潜变量模型 #KL散度 #期望 #对数似然 第一节:ELBO的类比与核心概念【尽可能通俗】 ELBO,即证据下界,在…...
Vue: computed 计算属性
在Vue中,computed属性是用于计算和返回基于其他响应式数据的值的功能。 适合在模板中使用,因为能够根据依赖的数据自动更新。 当依赖的数据变化时,computed属性会重新计算,并且会将结果缓存,以提高性能。 computed的…...
【自动化Selenium】Python 网页自动化测试脚本(上)
目录 1、Selenium介绍 2、Selenium环境安装 3、创建浏览器、设置、打开 4、打开网页、关闭网页、浏览器 5、浏览器最大化、最小化 6、浏览器的打开位置、尺寸 7、浏览器截图、网页刷新 8、元素定位 9、元素交互操作 10、元素定位 (1)ID定位 &…...
数据库命令规范、数据库基本设计规范
所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必…...