后端大厂面试-15道题
1. 说说计算机存储结构
计算机存储结构通常包括这几个层次:
主存储器(Main Memory):也称为内存(RAM,Random Access Memory),主要用于存储当前正在执行的程序和数据。它是计算机中最快速但容量有限的存储设备。数据可以随机读取和写入,但在断电后数据会丢失。
辅助存储器(Secondary Storage):辅助存储器用于持久性存储数据和程序,如硬盘驱动器(HDD)和固态驱动器(SSD)。与主存储器相比,它们容量更大,但速度较慢。数据在断电后仍然保持。
缓存存储器(Cache Memory):缓存存储器是位于主存储器和中央处理器(CPU)之间的高速缓存,用于提高数据访问速度。它存储最常用的数据和指令,以减少对主存储器的访问次数。
寄存器(Registers):寄存器是位于CPU内部的最快速的存储设备。它们用于存储CPU当前执行的指令和操作数,以及中间计算结果。寄存器的数量有限,通常以位数来衡量(如32位或64位寄存器)。
光盘和磁盘:光盘(如CD和DVD)和磁盘(如软盘)是可移动的辅助存储设备,用于存储大量数据,如音频、视频和文件。它们的访问速度比主存储器和缓存慢,但容量较大。
网络存储:网络存储包括各种云存储和网络附加存储设备,允许用户通过互联网访问和存储数据。这种存储方式越来越常见,允许数据在多个设备之间共享和同步。
外部设备:外部设备如USB闪存驱动器、外部硬盘和网络附加存储设备可以连接到计算机,用于数据备份、传输和存储。
2 操作系统怎样管理内存
内存分配和回收:操作系统负责管理系统中可用的物理内存。当一个程序需要内存时,操作系统会分配一块适当大小的内存空间给该程序,并记录已分配内存的相关信息。当程序不再需要内存时,操作系统会将这些内存释放出来,以便其他程序使用。这个过程通常包括内存分配表、内存回收算法等。
内存保护:操作系统确保不同程序的内存空间相互隔离,以防止一个程序意外地访问或修改其他程序的内存数据。这通常通过硬件机制(如CPU的特权级别和内存保护位)和操作系统的权限管理来实现。
虚拟内存:虚拟内存是一种操作系统提供的抽象层,它将物理内存和磁盘上的存储结合在一起,使得系统似乎具有比物理内存更大的地址空间。操作系统根据需要将数据从磁盘交换到物理内存中,以便程序能够访问。这有助于提高系统的性能和多任务处理能力。
内存分页和分段:操作系统通常将物理内存划分为页面或段,以便更有效地管理内存。分页系统将内存划分为固定大小的页面,而分段系统将内存划分为不同大小的段。这些机制有助于操作系统有效地管理内存的分配和回收。
内存交换:当物理内存不足时,操作系统可以将不活动的程序或数据移动到磁盘上,以释放出更多的物理内存供其他程序使用。这个过程称为内存交换,它可以帮助系统继续运行,尽管物理内存有限。
内存管理单元(MMU):硬件中的MMU是一个关键组件,它协助操作系统实现虚拟内存和内存保护。MMU将逻辑地址(由程序生成)映射到物理地址(在物理内存中)。这有助于隔离不同程序的内存空间,同时使虚拟内存和物理内存之间的映射更加高效。
3. cpu 的组成
CPU的组成主要包括这几部分:控制单元、算术逻辑单元、寄存器、缓存、时钟
控制单元: 控制单元(Control Unit):控制单元是CPU的核心部分之一,负责协调和控制CPU的各个部件的操作。它从内存中读取指令,解码这些指令,然后执行它们。控制单元还负责处理异常情况和中断。
算术逻辑单元(Arithmetic Logic Unit,ALU):ALU执行各种算术和逻辑运算,包括加法、减法、乘法、除法、逻辑与、逻辑或等。它接收来自内存和寄存器的数据,并根据控制单元发出的指令执行相应的操作。
寄存器(Registers):寄存器是CPU内部的高速存储器单元,用于存储临时数据和指令操作数。寄存器非常快速,可以直接与ALU交互,因此在CPU的运算过程中起到关键作用。其中包括:程序计数器、指令寄存器、通用寄存器
缓存(Cache):缓存是一种高速存储器,用于存储频繁访问的数据和指令,以提高访问速度。现代CPU通常包括多级缓存,其中L1缓存最接近CPU核心,L2缓存较大但速度较慢,L3缓存更大但速度更慢。缓存有助于减少CPU与主内存之间的数据传输延迟。
时钟:时钟是CPU的关键部分,它以固定的速度发出脉冲信号,用于同步CPU内部操作。时钟速度通常以赫兹(Hz)为单位表示,例如1GHz表示每秒发出10^9次脉冲信号。
4. 死锁产生条件
死锁是指多个进程或线程在竞争有限资源时可能遇到的一种互相等待的情况,导致它们都无法继续执行下去。死锁产生的充分条件通常包括以下四个条件,它们必须同时满足才能引发死锁:
互斥条件(Mutual Exclusion):至少有一个资源必须是独占性的,即一次只能被一个进程或线程占用。这意味着当一个进程占用了该资源时,其他进程无法同时占用,必须等待释放。
占有和等待条件(Hold and Wait):进程必须持有至少一个资源,并且等待获取其他资源。这表示进程在等待其他资源时不会释放已经占有的资源,导致其他进程无法使用这些资源。
不可抢占条件(No Preemption):资源不能被强制从一个进程手中抢占,只能由持有资源的进程自愿释放。这意味着其他进程不能强制占用已被其他进程占有的资源。
循环等待条件(Circular Wait):存在一个进程等待链,每个进程都在等待下一个进程所占有的资源。这导致一个循环,使得每个进程都无法继续执行
5. 什么情况下栈溢出
在Java中,栈溢出通常是指方法调用栈(Method Call Stack)溢出,也就是由于方法调用的递归深度太大而导致栈空间不足。
栈溢出通常发生在以下情况下:
递归深度过大:递归函数调用自身或其他函数时,每次调用都会在栈上分配一段内存,如果递归深度很大,栈空间可能会耗尽。
无限循环递归:一个无限循环中,如果递归调用导致栈不断增长,最终可能导致栈溢出。
为了防止Java中的栈溢出,您可以采取以下措施:
限制递归深度:确保递归函数的递归深度有限,或使用迭代替代递归。
优化递归算法:在递归算法中,可以尝试减少方法调用的次数,从而减少栈的使用。
增大栈大小:在某些情况下,可以通过设置JVM参数来增加栈的大小,但这不是一种推荐的解决方案,因为栈大小的增加可能导致其他问题。
6. Arraylist与LinkedList区别
可以从它们的底层数据结构、效率、开销进行阐述
ArrayList是数组的数据结构,LinkedList是链表的数据结构。
随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于索引(index)的数据结构,可以直接映射到。
插入、删除数据时,LinkedList的效率比较高,因为ArrayList要移动数据。
LinkedList比ArrayList开销更大,因为LinkedList的节点除了存储数据,还需要存储引用。
7. 红黑树的特点和使用场景
红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它具有以下特点:
自平衡性:红黑树是一种自平衡的二叉搜索树,它通过一系列的插入和删除操作来维持树的平衡。这确保了树的高度保持在对数范围内,使得基本操作(如查找、插入和删除)的时间复杂度保持在O(log n)。
节点颜色:每个节点都被标记为红色或黑色。这些颜色标记有助于维护树的平衡。
每个节点要么是红色,要么是黑色。
根节点必须是黑色。
所有叶子节点(NIL节点)都是黑色。
如果一个节点是红色,那么它的两个子节点都必须是黑色(没有两个相连的红色节点)。
从任何节点到其每个叶子的简单路径上,黑色节点的数目必须相等。
插入和删除操作的平衡调整:当插入或删除节点时,红黑树会执行一系列平衡调整操作,以确保树的性质不会被破坏。这些调整通常包括颜色变换和旋转操作。这些操作确保了树保持平衡,不会出现偏斜。
快速查找和插入:红黑树具有较快的查找和插入操作。由于树的平衡性质,平均和最坏情况下的时间复杂度都是O(log n)。
使用场景
Java的TreeMap和TreeSet:也使用红黑树来实现有序的键值对存储和查找。
文件系统:某些文件系统使用红黑树来管理文件和目录的索引。这有助于快速查找和访问文件。
操作系统进程调度:一些操作系统的进程调度器使用红黑树来管理进程的调度顺序。红黑树确保了公平性和高效性。
内存分配器:一些内存分配器使用红黑树来管理内存块的分配和释放,以提高内存分配的性能。
8. HashMap 和 Concurrentmap 区别
HashMap
底层由链表+数组+红黑树实现
可以存储null键和null值
线性不安全
初始容量为16,扩容每次都是2的n次幂
加载因子为0.75,当Map中元素总数超过Entry数组的0.75,触发扩容操作.
并发情况下,HashMap进行put操作会引起死循环,导致CPU利用率接近100%
HashMap是对Map接口的实现
ConcurrentHashMap
HashMap 和 ConcurrentMap 的底层实现都使用了数组和链表,以及在需要时使用红黑树来提高性能。
不能存储null键和值
ConcurrentHashMap是线程安全的
JDK 8之前,ConcurrentHashMap使用锁分段技术确保线性安全
JDK8为何又放弃分段锁,是因为多个分段锁浪费内存空间,竞争同一个锁的概率非常小,分段锁反而会造成效率低。
JDK 8 引入了一种新的 ConcurrentHashMap 实现,**称为 “CAS + Synchronized”,而不再使用分段锁。**这是因为分段锁虽然在某些情况下可以提供良好的并发性能,但它们确实存在一些缺点,包括内存开销和可能的竞争条件。
内存开销:每个分段都需要维护一个独立的锁,这会导致内存开销增加,特别是当你有大量的分段时。这可能会在某些情况下占用大量内存,不利于性能和资源使用。
竞争条件:虽然分段锁减少了竞争的可能性,但当多个线程试图修改同一分段内的数据时,仍然可能发生竞争条件。这种情况下,需要线程等待并争夺分段级别的锁,可能导致性能下降。
9. 服务器接收 http 请求怎样区别哪个进程
端口号:每个进程可以监听不同的端口号。当客户端发送HTTP请求时,请求中包含目标端口号。服务器通过请求的目标端口号来确定将请求路由到哪个进程。不同的进程通常监听不同的端口。例如,常见的HTTP服务器(如Apache和Nginx)通常监听默认的HTTP端口80或HTTPS端口443,不同进程监听不同的端口。
域名:对于同一IP地址上的多个虚拟主机,服务器可以通过HTTP请求的Host头部来区分它们。根据请求中的域名信息,服务器将请求路由到不同的进程或应用程序。
URL路径:服务器可以根据HTTP请求的URL路径来区分不同的应用程序或处理程序。不同的路径可以映射到不同的进程或应用程序。例如,一个服务器可以将/app1的请求路由到一个进程,将/app2的请求路由到另一个进程,以此类推。
反向代理:有时,一个前端服务器(通常是反向代理服务器,如Nginx或Apache HTTP Server)会接收所有HTTP请求,然后将请求路由到后端服务器或进程。反向代理服务器可以根据请求的不同特征(如域名、路径、端口等)来决定将请求转发给哪个后端进程。
会话标识符:对于基于会话的应用程序,服务器通常使用会话标识符来区分不同的用户会话。会话标识符可以存储在Cookie中或通过URL参数传递,服务器使用它来将请求路由到正确的用户会话。
自定义头部:有些服务器和应用程序可能使用自定义的HTTP头部来区分请求的目标进程。这需要服务器和应用程序之间的协商和定制。
负载均衡器:在大型应用程序和高流量环境中,通常使用负载均衡器来分发HTTP请求到多个后端进程或服务器实例。负载均衡器可以根据不同的算法和规则来决定请求的路由。
10.服务并发量高时,流量怎样负载均衡
一些常见的负载均衡策略和方法
轮询(Round Robin):这是一种最简单的负载均衡策略,其中负载均衡器将每个新的请求按照轮询的方式分发给后端服务器。每个服务器依次接收请求,然后再次从头开始。这样可以确保请求均匀分布到所有服务器上。
加权轮询(Weighted Round Robin):在加权轮询中,每个后端服务器都分配一个权重,权重高的服务器会获得更多的请求。这种方式允许根据服务器的性能和资源配置来分发负载。
最少连接(Least Connections):负载均衡器将请求发送到当前具有最少连接数的服务器。这可以确保连接较少的服务器不会被过载,从而提高性能。
IP散列(IP Hashing):根据客户端的IP地址计算散列值,并将请求发送到对应散列值的服务器。这种方法可以确保相同IP地址的客户端始终访问同一台服务器,适用于需要维护会话一致性的应用。
最短响应时间(Least Response Time):负载均衡器会根据服务器的响应时间来选择下一个服务器。这有助于将请求发送到响应时间最短的服务器,提高用户体验。
随机(Random):负载均衡器随机选择一个后端服务器来处理请求。虽然这种方法不会平衡负载,但在某些情况下可能有用。
内容感知负载均衡:根据请求的内容类型,将请求路由到不同类型的后端服务器。例如,可以将图像请求路由到图像服务器,将视频请求路由到视频服务器,以提高性能
11.B+树 B-树的区别,为什么不用红黑树做索引
在B-树树中,键和值即存放在内部节点又存放在叶子节点;在 B+树中,内部节点只 存键,叶子节点则同时存放键和值。
B+树的叶子节点有一条链相连,而 B 树的叶子节点各自独立的。
B+树索引的所有数据均存储在叶子节点,而且数据是按照顺序排列的,链表 连着的。那么 B+树使得范围查找,排序查找,分组查找以及去重查找变得异 常简单。.
B+树非叶子节点上是不存储数据的,仅存储键值,而 B-树节点中不仅存储键 值,也会存储数据。innodb 中页的默认大小是 16KB,如果不存储数据,那么 就会存储更多的键值,相应的树的阶数(节点的子节点树)就会更大,树就会 更矮更胖,如此一来我们查找数据进行磁盘的 IO 次数有会再次减少,数据查询 的效率也会更快.
为什么不用红黑树做索引?
红黑树是一种自平衡的二叉搜索树,它在平衡性和查找效率上是非常好的。然而,红黑树在磁盘存储和数据库索引场景下可能不如B+树效率高效。这是由于以下几个原因:
磁盘IO效率:B+树采用了一种层次化的索引结构,它的非叶子节点只包含索引信息,而数据存储在叶子节点上。这种结构使得每次磁盘IO能够获取更多的数据。而红黑树在每个节点都存储数据,这样会增加磁盘IO次数,降低IO效率。
顺序访问性能:B+树的叶子节点形成有序链表,这使得范围查询变得更高效,可以很方便地进行范围遍历。而红黑树不具备这种特性。
内存占用:红黑树在每个节点都需要存储数据,而B+树的非叶子节点只需要存储索引信息,这样在内存占用上,B+树相对更节省。
12. Redis的使用场景
Redis 提供了丰富的数据类型,常见的有五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。
随着 Redis 版本的更新,后面又支持了四种数据类型: BitMap(2.2 版新增)、HyperLogLog(2.8 版新增)、GEO(3.2 版新增)、Stream(5.0 版新增)。 Redis 五种数据类型的应用场景:
String 类型的应用场景:缓存对象、常规计数、分布式锁、共享 session 信息等。
List 类型的应用场景:消息队列(但是有两个问题:1. 生产者需要自行实现全局唯一 ID;2. 不能以消费组形式消费数据)等。
Hash 类型:缓存对象、购物车等。
Set 类型:聚合计算(并集、交集、差集)场景,比如点赞、共同关注、抽奖活动等。
Zset 类型:排序场景,比如排行榜、电话和姓名排序等。
Redis 后续版本又支持四种数据类型,它们的应用场景如下:
BitMap(2.2 版新增):二值状态统计的场景,比如签到、判断用户登陆状态、连续签到用户总数等;
HyperLogLog(2.8 版新增):海量数据基数统计的场景,比如百万级网页 UV 计数等;
GEO(3.2 版新增):存储地理位置信息的场景,比如滴滴叫车;
Stream(5.0 版新增):消息队列,相比于基于 List 类型实现的消息队列,有这两个特有的特性:自动生成全局唯一消息ID,支持以消费组形式消费数据。
13. redis 为什么快
Redis 的大部分操作都在内存中完成,并且采用了高效的数据结构,因此 Redis 瓶颈可能是机器的内存或者网络带宽,而并非 CPU,既然 CPU 不是瓶颈,那么自然就采用单线程的解决方案了;
Redis 采用单线程模型可以避免了多线程之间的竞争,省去了多线程切换带来的时间和性能上的开销,而且也不会导致死锁问题。
Redis 采用了 I/O 多路复用机制处理大量的客户端 Socket 请求,IO 多路复用机制是指一个线程处理多个 IO 流,就是我们经常听到的 select/epoll 机制。简单来说,在 Redis 只运行单线程的情况下,该机制允许内核中,同时存在多个监听 Socket 和已连接 Socket。内核会一直监听这些 Socket 上的连接请求或数据请求。一旦有请求到达,就会交给 Redis 线程处理,这就实现了一个 Redis 线程处理多个 IO 流的效果。
14.redis 分布式锁如何实现的?可能会有哪些坑
可以参考我之前的文章
zookeeper实现分布式锁
redis实现分布式锁
15 算法题
怎样判断链表是否有环
快慢指针实现public class ListNode {int val;ListNode next;ListNode(int val) {this.val = val;this.next = null;}
}public boolean hasCycle(ListNode head) {if (head == null || head.next == null) {// 如果链表为空或只有一个节点,肯定没有环return false;}ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null) {slow = slow.next; // 慢指针移动一步fast = fast.next.next; // 快指针移动两步// 如果快指针追上了慢指针,说明链表中有环if (slow == fast) {return true;}}// 如果快指针到达链表末尾,说明没有环return false;
}
删除倒数第 n 个节点
public ListNode removeNthFromEnd(ListNode head, int n) {// 创建一个虚拟头节点,以便于处理删除头节点的情况ListNode dummy = new ListNode(0);dummy.next = head;ListNode first = dummy;ListNode second = dummy;// 将first指针向前移动n+1步for (int i = 0; i <= n; i++) {first = first.next;}// 同时移动first和second,直到first到达链表末尾while (first != null) {first = first.next;second = second.next;}// 删除倒数第n个节点second.next = second.next.next;return dummy.next; // 返回新的头节点
}
相关文章:
后端大厂面试-15道题
1. 说说计算机存储结构 计算机存储结构通常包括这几个层次: 主存储器(Main Memory):也称为内存(RAM,Random Access Memory),主要用于存储当前正在执行的程序和数据。它是计算机中最…...
C++: 冒泡排序(Bubble Sort)
假设你有一列由数字组成的玻璃珠,这些珠子的重量不同,你希望将它们按照重量从轻到重排列。你会这样做: 从左到右,比较相邻的两颗珠子的重量。如果左边的珠子比右边的珠子重,就交换它们的位置。然后,继续向…...

跨域的解决方案
文章目录 概念一、什么是跨域问题二、为什么会发生跨域问题三、跨域解决方案1、JSONP2、添加响应头3、Spring注解CrossOrigin4、配置文件(常用)5、nginx跨域 概念 一、什么是跨域问题 前端调用的后端接口不属于同一个域(域名或端口不同&…...

如何使用Java语言判断出geek是字符串参数类型,888是整数参数类型,[hello,world]是数组参数类型,2.5是双精度浮点数类型?
如何使用Java语言判断出geek是字符串参数类型,888是整数参数类型,[hello,world]是数组参数类型,2.5是双精度浮点数类型? Java是一种静态类型的编程语言,这意味着我们需要在编译时为变量指定具体的类型。但是ÿ…...
9.20华为机试-后端
1、丢失报文的位置 某通信系统持续向外发送报文,使用数组 nums 保存 n个最近发送的报文,用于在报文未达到对端的情况下重发。报文使用序号 sn 表示,序号 sn 按照报文发送顺序从小到大排序,相邻报文 sn 不完全连续且有可能相同。报…...

LC926. 将字符串翻转到单调递增(JAVA - 动态规划)
将字符串翻转到单调递增 题目描述动态规划 题目描述 难度 - 中等 LC926. 将字符串翻转到单调递增(JAVA - 动态规划) 如果一个二进制字符串,是以一些 0(可能没有 0)后面跟着一些 1(也可能没有 1)的形式组成的࿰…...

【高阶数据结构】哈希的应用 {位图;std::bitset;位图的应用;布隆过滤器;布隆过滤器的应用}
一、位图 1.1 位图概念 面试题 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。【腾讯】 遍历查找:内存中无法存放40亿个整数(约占内存15-16G);时间复杂…...

金融生产存储亚健康治理:升级亚健康 3.0 ,应对万盘规模的挑战
随着集群规模的不断扩大,硬盘数量指数级上升,信创 CPU 和操作系统、硬盘多年老化、物理搬迁等多种复杂因素叠加,为企业的存储亚健康管理增加了新的挑战。 在亚健康 2.0 的基础上,星辰天合在 XSKY SDS V6.2 实现了亚健康 3.0&#…...

C语言自定义类型讲解:结构体,枚举,联合(2)
🐵本篇文章将会对位段、枚举和联合的相关知识进行讲解 1. 位段📚 1.1 什么是位段 位段的声明和结构体类似,但是有两点不同: 1.位段的成员必须是int,unsigned int,signed int (C99之后也可以是其他成员&am…...

AI编程助手 Amazon CodeWhisperer 全面解析与实践
目录 引言Amazon CodeWhisperer简介智能编程助手智能代码建议代码自动补全 提升代码质量代码质量提升安全性检测 支持多平台多语言 用户体验和系统兼容性用户体验文档和学习资源个性化体验系统兼容性 功能全面性和代码质量功能全面性代码生成质量和代码安全性 CodeWhisperer的代…...

利用EXCEL进行XXE攻击
利用EXCEL进行XXE攻击 原因 原因 Microsoft Office从2007版本引入了新的开放的XML文件格式,新的XML文件格式基于压缩的ZIP文件格式规范,由许多部分组成。 我们可以将其解压缩到特定的文件夹中来查看其包含的文件夹和文件,可以发现其中多数是…...

芯片验证就是一次旅行
如果你国庆希望去一个你不曾去过的城市旅行,比如“中国苏州”。对游客来说,它是个蛮大的城市,有许多景点可以游玩,还有许多事情可以做。但实际上,即使最豪也最清闲的游客也很难看苏州的所有方方面面。同样的道理也适用…...

Java深入理解线程的三大特性
目录 1 CPU缓存导致可见性问题2 线程切换导致原子性问题3 性能优化导致有序性问题4 JMM(Java Memory Model)5 volatile6 synchronized 1 CPU缓存导致可见性问题 线程的三大特性: 可见性:Visibility有序性:Ordering原子性:Atomic…...
2025快手校招面试真题汇总及其解答(二)
6. hashmap数据结构 HashMap 是一种散列表,它是一种根据键值对来存储数据的数据结构。HashMap 的特点是插入、查找和删除操作的时间复杂度都是 O(1),因此它是一种非常高效的数据结构。 HashMap 的工作原理是将键值对存储在一个数组中,每个键值对都由一个哈希函数来映射到数…...
PHP生成带中文的图片
imagettftext() 函数是 PHP 中的一个内置函数,用于使用 TrueType 字体将文本写入图像。 句法: 数组imagettftext(资源$image,float $size,float $angle, int $x,int $y,…...

java框架-Dubbo
Dubbo整合Springboot BIO NIO Netty Dubbo 原理 在这里插入图片描述...

Vue+iview 组件中通过v-for循环动态生成form表单进行表单校验
在做项目时,需要根据需要动态添加或新增表单,同时还需要对表单做校验。详情如下图: 刚开始做表单验证的时候,对于这个动态的表单验证有点难搞,试了好几种方法都没有搞定。最后按照下面这种方法实现了,以此…...

sns.load_dataset(“iris“)报错原因探究+解决办法
问题描述 import seaborn as sns # 读取数据 iris sns.load_dataset("iris")在代码中使用了seaborn ,并加载iris数据,结果产生了报错信息如下所示 问题分析 原因很简单,我们使用了sns.load_dataset("iris")来加载数据…...

python回文素数
这能有1和本身整除的整数叫素数;如一个素数从左向右和从右向左是相同的数,则该素数为回文素数。编程求出2-1000内的所有回文素数。 源代码: def sushu(n): for i in range(2,n//21): if n%i 0: return False r…...

纽扣电池16CRF1700.15,16CFR1700.20,ANSI C18.3M如何申请?
随着科技的发展,纽扣电池被广泛应用于小型电子产品,如计算器、电子手表、玩具、医疗设备等。由于其体积小,易于拆卸,也造成了儿童误吞的潜在风险。因此,对于纽扣电池的认证和包装,各国均有相应的规定。 在美…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...

windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...