【面试题】 Java 三年工作经验(2025)
问题列表
- 为什么选择 spring boot 框架,它与 Spring 有什么区别?
- spring mvc 的执行流程是什么?
- 如何实现 spring 的 IOC 过程,会用到什么技术?
- spring boot 的自动化配置的原理是什么?
- 如何理解 spring boot 中的 star?
- spring boot 为什么要用嵌入式的 web 容器?
- 利用 REDIS 存储数据的原则是什么?
- 如果 dB 的数据发生变更,如何更新缓存内的数据?
- 如果流量很大,REDIS 挂了会发生什么,采取的措施是什么,有什么兜底的方案?
- 造成 REDIS 挂掉的原因有哪些?
- 什么是数据的倾斜,如何预防数据的倾斜?
- REDIS6.0 的多线程是怎样的?
- 有没有遇到过 REDIS 突然变慢的情况,原因是什么?
- REDIS 的内存碎片是怎么造成的?
- REDIS 是如何支持原子操作的?
- 在订单每天都是百万级别的数据量且超过 30 分钟未支付系统自动取消订单的场景下,如何设计把订单的状态改为取消?
- 订单系统中 MQ 的具体使用场景是什么?
- 如何保证 MQ 消息的幂等?
- rocket mq 是如何保证消息不丢失的?有没有做过相关设置?
- 微服务拆分的原则是什么?
- 微服务中分布式事务的具体解决的方案是什么?采用的 Seata 是用的哪种模式,其执行过程是什么?这种模式下的隔离级别和 MYSQL 的隔离级别有什么不一样,会不会有什么问题,如何解决?
- 公司的 SQL 语句规范是什么?表在建立索引的时候有什么原则?
- 为什么不建议用 uuid 作为 MYSQL 的主键索引?
- select 语句的查询过程是什么,如何预防回表?
- 在线上给一个小表加了个字段结果导致整个库都挂了,原因是什么,如何解决?
- MYSQL 中是如何出现死锁的,在设计表的时候如何减少锁的冲突?
- 单点登录系统是用什么协议来实现的?如何解决 token 或 session 的跨域问题?
- 如何设计和实现微信扫码登录的功能?
面试题答案
Spring相关
- 为什么选择Spring Boot框架,它与Spring有什么区别
- 选择原因:快速构建项目,简化配置,有大量starter依赖,自动配置减少开发工作量,内置服务器便于部署和运行。
- 区别:Spring是一个框架体系,需大量配置;Spring Boot基于Spring,以约定大于配置为核心,简化配置,更易上手和快速开发。
- Spring MVC的执行流程
- 用户发送请求到DispatcherServlet。
- DispatcherServlet查询HandlerMapping找到对应的Handler。
- 调用HandlerAdapter执行Handler。
- Handler执行完成返回ModelAndView给DispatcherServlet。
- DispatcherServlet通过ViewResolver解析视图并渲染,将结果返回给用户。
- 如何实现Spring的IOC过程,会用到什么技术
- 实现方式:通过配置文件或注解定义Bean,Spring容器负责创建和管理Bean。
- 技术:反射用于创建对象,依赖注入通过构造函数、Setter方法等实现。
- Spring Boot的自动化配置的原理
- 基于条件注解,根据类路径下是否存在某些类、Bean等条件,决定是否自动配置某个功能。通过@ConfigurationProperties绑定配置属性,EnableAutoConfiguration开启自动配置,读取META-INF/spring.factories文件中的自动配置类进行加载和配置。
- 如何理解Spring Boot中的starter
- Starter是一组依赖描述符,将相关的依赖和配置整合在一起。用户只需引入starter依赖,Spring Boot就能自动配置相关功能,简化依赖管理和配置,如spring-boot-starter-web引入后可快速搭建Web项目。
- Spring Boot为什么要用嵌入式的web容器
- 便于快速部署和运行,无需单独安装和配置外部Web容器。可将应用打包成可执行的jar或war文件,直接运行,提高开发和部署效率,便于在不同环境中快速迁移和部署。
Redis相关
-
利用REDIS存储数据的原则是什么
- 数据读写频繁、对读写速度要求高的适合存Redis。如缓存热点数据、实时统计数据、分布式锁等。要考虑数据的生命周期,合理设置过期时间,避免内存占用过多。
-
如果DB的数据发生变更,如何更新缓存内的数据
- 采用缓存更新策略,有先更新数据库再更新缓存、先删除缓存再更新数据库、先更新数据库再异步删除缓存等方式。根据业务场景选择合适策略,注意数据一致性问题。
-
如果流量很大,REDIS挂了会发生什么,采取的措施是什么,有什么兜底的方案
- 发生情况:缓存失效,大量请求直接访问数据库,可能导致数据库压力过大甚至崩溃,系统响应变慢,部分业务可能无法正常处理。
- 措施:采用Redis集群,增加节点提高可靠性和性能;开启持久化,保证数据不丢失。
- 兜底方案:使用本地缓存做临时过渡,对数据库进行限流、降级等操作,保证核心业务可用。
-
造成REDIS挂掉的原因有哪些
- 内存不足,超出最大内存限制。网络故障,节点之间通信异常。大量请求导致CPU使用率过高。持久化出现问题,如磁盘空间满等。软件或硬件故障等。
-
什么是数据的倾斜,如何预防数据的倾斜
- 定义:数据在Redis集群节点中分布不均匀,部分节点数据量过大,部分节点数据量很少,导致负载不均衡。
- 预防:合理设计数据分片策略,采用一致性哈希等算法。对数据进行预处理,将数据均匀分布。监控数据分布情况,及时调整。
-
REDIS6.0的多线程是怎样的
- Redis 6.0引入多线程主要用于网络I/O读写,提高网络读写性能。多线程负责读取请求、解析命令、发送响应等操作,数据处理仍由单线程执行,避免了多线程数据竞争问题,通过配置参数可调整线程数量等。
-
有没有遇到过REDIS突然变慢的情况,原因是什么
- 内存不足,触发内存淘汰策略,导致数据读写变慢。有大量复杂的慢查询命令,阻塞了Redis线程。网络带宽不足或网络延迟高。持久化操作频繁,影响了读写性能。CPU负载过高,忙于处理其他任务。
-
REDIS的内存碎片是怎么造成的
- 内存分配器分配和释放内存时,由于分配的内存块大小和实际使用的内存大小不一致,多次分配和释放后就会产生内存碎片。例如,频繁地创建和删除不同大小的键值对,会导致内存空间不连续,形成碎片。
-
REDIS是如何支持原子操作的
- Redis通过单线程和命令队列来实现原子操作。单线程保证了同一时间只有一个命令在执行,不会被其他命令打断。命令队列则确保命令按照顺序依次执行,在执行一个命令的过程中不会插入其他命令,从而保证了原子性。
订单系统相关
- 在订单每天都是百万级别的数据量且超过30分钟未支付系统自动取消订单的场景下,如何设计把订单的状态改为取消
- 可以使用Redis的有序集合,以订单创建时间加上30分钟作为score,订单ID作为member。定时任务定期扫描有序集合,取出当前时间超过score的订单ID,去数据库中更新订单状态为取消。也可以使用消息队列延迟消息功能,在订单创建时发送一个30分钟后的延迟消息,消息到达时更新订单状态。
- 订单系统中MQ的具体使用场景是什么
- 订单创建后,发送消息到MQ通知库存系统扣减库存。通知支付系统进行支付处理。订单状态变更时,通知相关系统更新状态,如通知物流系统订单已支付待发货等。实现异步解耦,提高系统的稳定性和性能。
- 如何保证MQ消息的幂等
- 在消息中添加唯一标识,消费者在处理消息前先检查是否已处理过该标识的消息。利用数据库的唯一索引,对消息中的关键信息建唯一索引,插入时若冲突则表示重复消息,不做处理。使用状态机,记录消息处理的状态,根据状态决定是否处理消息。
RocketMQ相关
- rocket mq是如何保证消息不丢失的?有没有做过相关设置
- 生产者发送消息时采用同步发送方式,并设置合理的重试次数。Broker配置刷盘策略为同步刷盘,保证消息及时持久化到磁盘。消费者采用手动提交偏移量,处理完消息后再提交,防止消费过程中丢失消息。设置相关参数如unflushDelayMills控制刷盘时机等。
微服务相关
- 微服务拆分的原则是什么
- 单一职责原则,每个微服务只负责一项主要功能。高内聚低耦合,微服务内部功能紧密相关,微服务之间耦合度低。业务边界清晰,按业务模块进行拆分。可扩展性原则,便于独立扩展和维护。数据独立,每个微服务有自己独立的数据库或数据存储。
- 微服务中分布式事务的具体解决的方案是什么?采用的Seata是用的哪种模式,其执行过程是什么?这种模式下的隔离级别和MYSQL的隔离级别有什么不一样,会不会有什么问题,如何解决
- 解决方案:有两阶段提交、TCC、本地消息表、Seata等。
- Seata模式:以AT模式为例,执行过程是开启全局事务,业务操作时Seata拦截SQL,记录数据的前后镜像,提交时协调各分支事务提交,若失败则根据镜像回滚。
- 隔离级别差异:Seata AT模式默认读未提交,MySQL默认可重复读。Seata可能存在脏读问题。
- 问题及解决:可通过在业务层控制事务边界,结合MySQL的锁机制等,必要时提高Seata隔离级别来解决。
数据库相关
- 公司的SQL语句规范是什么?表在建立索引的时候有什么原则
- SQL规范:命名规范,表名、字段名等要有意义且遵循统一格式。语句格式化,缩进、换行规范。避免使用SELECT *,明确列出所需字段。合理使用事务等。
- 索引原则:在经常用于查询条件、连接条件、排序和分组的字段上建立索引。区分度高的字段优先建索引。避免过多索引,考虑索引的维护成本。联合索引遵循最左前缀原则。
23. 为什么不建议用 uuid 作为 MYSQL 的主键索引?
- 存储开销大:UUID 是 128 位,通常以 36 个字符的字符串形式存储,相比自增整数(如 INT 型 4 字节)占用更多存储空间,增加了索引文件大小。
- 性能影响:
- 插入性能:UUID 无序,插入时会导致数据页频繁分裂,影响插入效率。而自增主键按顺序插入,数据页分裂频率低。
- 查询性能:范围查询时,自增主键更具优势,因为其值连续,利于快速定位数据范围;UUID 无序,无法利用范围查询优化。
24. select 语句的查询过程是什么,如何预防回表?
- 查询过程:
- 解析与预处理:MySQL 解析 SQL 语句,检查语法,生成解析树,并进行预处理,如权限检查、表名和列名解析。
- 优化器:分析查询语句,考虑多种执行方案,如索引使用、表连接顺序等,基于成本模型选择最优执行计划。
- 执行器:按照执行计划调用存储引擎 API,获取数据并返回给客户端。
- 预防回表:
- 覆盖索引:查询列包含在索引中,避免回表操作。例如,查询
SELECT col1, col2 FROM table WHERE col3 = 'value',若建立(col3, col1, col2)复合索引,可利用覆盖索引直接获取结果。 - 减少不必要查询列:仅查询索引列可避免回表。
- 覆盖索引:查询列包含在索引中,避免回表操作。例如,查询
25. 在线上给一个小表加了个字段结果导致整个库都挂了,原因是什么,如何解决?
- 原因:
- 锁表问题:在添加字段操作时,MySQL 可能会使用表锁,长时间占用表资源,导致其他读写操作被阻塞,若有大量并发请求,可能拖垮整个数据库。
- 磁盘空间不足:添加字段可能导致表结构变更,需要额外磁盘空间。若磁盘空间已满,操作失败并可能影响数据库其他功能。
- 解决方法:
- 在线 DDL 工具:使用工具如
pt-online-schema-change或gh-ost,它们通过创建临时表、复制数据等方式,实现无锁或低锁的表结构变更。 - 提前检查磁盘空间:在操作前确保有足够磁盘空间。
- 在线 DDL 工具:使用工具如
26. MYSQL 中是如何出现死锁的,在设计表的时候如何减少锁的冲突?
- 死锁产生原因:两个或多个事务在获取资源时,互相等待对方释放已占有的资源,形成循环等待,导致死锁。例如,事务 A 持有锁 L1 并请求锁 L2,事务 B 持有锁 L2 并请求锁 L1。
- 减少锁冲突的表设计方法:
- 合理设计索引:确保经常用于查询条件的字段有索引,减少全表扫描,降低锁的粒度和时间。
- 优化事务顺序:按照固定顺序访问资源,避免循环等待。例如,所有事务都先访问表 A 再访问表 B。
- 降低事务隔离级别:在满足业务需求前提下,适当降低事务隔离级别,减少锁的持有时间。
27. 单点登录系统是用什么协议来实现的?如何解决 token 或 session 的跨域问题?
- 常用协议:
- CAS(Central Authentication Service):简单的单点登录协议,客户端通过 CAS 服务器认证,服务器返回票据,客户端凭票据访问其他应用。
- OAuth(开放授权):用于授权第三方应用访问用户资源,用户在授权服务器认证后,第三方应用获取授权令牌访问资源。
- SAML(Security Assertion Markup Language):基于 XML 的标准,用于在不同安全域间交换认证和授权信息。
- 解决跨域问题:
- Token 跨域:通过在响应头设置
Access - Control - Allow - Origin允许跨域访问,前端在请求时携带 Token。也可使用 JSONP 或 CORS 代理方式传递 Token。 - Session 跨域:使用 JSONP 传递 Session ID,或通过设置代理服务器,在代理服务器上维护统一的 Session 存储,实现跨域共享 Session。
- Token 跨域:通过在响应头设置
28. 如何设计和实现微信扫码登录的功能?
- 设计思路:
- 前端:展示扫码登录按钮,调用微信提供的扫码登录接口,显示二维码。
- 后端:接收微信服务器回调,验证回调信息,生成用户登录状态,返回登录结果给前端。
- 实现步骤:
- 注册应用:在微信开放平台注册应用,获取 AppID 和 AppSecret。
- 前端生成二维码:前端调用微信 JS - SDK 生成带有唯一标识(如 state 参数)的二维码,展示给用户。
- 用户扫码:用户使用微信扫码,微信服务器将扫码信息发送到后端服务器。
- 后端验证:后端接收微信回调,使用 AppID 和 AppSecret 验证回调信息合法性,获取用户信息。
- 生成登录状态:后端生成用户登录状态(如 Token),存储用户登录信息,返回登录结果给前端。
- 前端处理:前端根据后端返回结果,处理登录成功或失败逻辑。
在Redis集群中使用Lua锁
可能会存在以下一些问题
一致性问题
- 数据同步延迟:Redis集群采用异步复制机制,主节点将数据复制到从节点存在一定延迟。当使用Lua脚本获取锁时,若主节点在未完成数据同步到从节点的情况下出现故障,新的主节点可能没有锁的相关数据,导致锁的一致性被破坏,出现多个客户端同时获取到锁的情况。
- 网络分区影响:在网络分区场景下,集群可能会被分割成多个子集群。若获取锁的客户端所在子集群与持有锁的主节点所在子集群隔离,可能会导致客户端无法正确判断锁的状态,出现误判获取锁成功的情况,进而引发数据不一致等问题。
性能问题
- 脚本执行阻塞:Redis是单线程处理命令,Lua脚本在执行时会阻塞其他命令的执行。如果Lua锁脚本执行时间过长,会影响Redis对其他请求的处理能力,降低整个系统的性能和响应速度。
- 集群资源消耗:在集群环境中,执行Lua脚本需要在多个节点之间协调和同步,这会增加网络开销和节点的计算资源消耗。大量使用Lua锁可能导致集群资源紧张,影响整体性能。
复杂性问题
- 脚本编写难度:编写正确、高效且能在集群环境中稳定运行的Lua锁脚本具有一定难度。需要开发者对Redis集群的工作原理、数据一致性模型以及Lua脚本的特性有深入理解,否则容易出现逻辑漏洞和错误。
- 维护和调试困难:由于Lua锁脚本在集群中的执行涉及多个节点和复杂的网络交互,出现问题时定位和解决问题的难度较大。例如,当锁出现异常释放或无法获取的情况时,很难快速确定是脚本逻辑问题、网络问题还是节点故障等原因导致。
兼容性问题
- 版本差异:不同版本的Redis对Lua脚本的支持可能存在差异,某些特性或行为可能在不同版本中有所变化。在使用Lua锁时,可能会因为Redis版本升级或集群中节点版本不一致等原因,导致锁的行为不符合预期。
- 与其他模块冲突:如果Redis集群中还使用了其他模块或扩展,可能会与Lua锁产生兼容性问题。例如,某些模块可能会修改Redis的命令执行逻辑或数据结构,影响Lua锁的正常工作。
如何处理Redis中大key
大key的检测
- 使用Redis命令:可以使用
MEMORY USAGE命令来获取键的内存占用情况,从而找出大key。例如MEMORY USAGE key可以返回key的内存占用字节数。还可以结合SCAN命令,遍历所有键,对每个键执行MEMORY USAGE来全面检测大key。 - 借助Redis工具:利用
redis-cli的--bigkeys选项,它可以快速扫描并找出内存中占用空间较大的键。也可以使用Redis的可视化工具,如RedisInsight、RedisDesktopManager等,这些工具通常提供了直观的界面来展示键的大小和分布情况,方便查找大key。
优化存储结构
- 对象编码优化:Redis的不同数据类型有不同的编码方式,例如
hash类型如果字段较少且值较小,使用ziplist编码会更节省空间。可以通过OBJECT ENCODING命令查看键的编码方式,并考虑是否可以通过调整数据结构或使用合适的命令来优化编码。比如,对于一个包含大量小字段的hash,可以使用HMSET而不是逐个HSET来插入数据,这样可能会使Redis采用更紧凑的编码。 - 使用压缩:对于值是字符串类型的大key,如果内容可压缩,可以在客户端对数据进行压缩后再存储到Redis中,获取数据时再进行解压缩。可以使用
gzip、zlib等压缩库来实现。不过要注意压缩和解压缩会带来一定的CPU开销,需要根据实际情况权衡。
数据拆分
- 按数据特征拆分:如果大key是一个
hash或list等集合类型,可以根据数据的业务特征将其拆分成多个小key。例如,一个包含用户所有订单信息的大hash,可以按照订单时间或订单类型等维度拆分成多个hash,每个hash只包含部分订单信息。 - 使用Redis集群:将大key的数据分布到多个Redis节点上,通过集群的方式来分散存储和访问压力。可以使用Redis的分片集群,如Redis Cluster,它会根据键的哈希值将数据分布到不同的节点上。在使用Redis Cluster时,需要合理设计键的命名规则,确保相关数据能够均匀分布在各个节点上。
过期策略和淘汰机制
- 设置合理过期时间:对于一些时效性较强的大key,设置合适的过期时间,让Redis自动删除过期的大key,以释放内存空间。比如缓存类的大key,根据其业务场景设置几分钟到几小时不等的过期时间。
- 调整淘汰策略:根据业务需求调整Redis的内存淘汰策略。例如,设置为
volatile-lru(对设置了过期时间的键采用LRU算法淘汰)或allkeys-lru(对所有键采用LRU算法淘汰),让Redis在内存不足时优先淘汰不常用的大key。也可以结合maxmemory配置项,合理设置Redis的最大内存使用量,触发淘汰机制。
相关文章:
【面试题】 Java 三年工作经验(2025)
问题列表 为什么选择 spring boot 框架,它与 Spring 有什么区别?spring mvc 的执行流程是什么?如何实现 spring 的 IOC 过程,会用到什么技术?spring boot 的自动化配置的原理是什么?如何理解 spring boot 中…...
【信息系统项目管理师-选择真题】2006下半年综合知识答案和详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…...
easyexcel-导入(读取)(read)-示例及核心部件
文章目录 导入(读取)(read)-示例及核心部件导入(读取)(read)-核心部件EasyExcel(EasyExcelFactory) # 入口read() # read()方法用于构建workbook(工作簿)对象,new ExcelReaderBuilder()doReadAll()这里选XlsxSaxAnalyser这个实现类吧然后到这个类XlsxRowHandler&…...
IPhone13 Pro Max设备详情
目录 产品宣传图内部图——后设备详细信息 产品宣传图 内部图——后 设备详细信息 信息收集于HubWeb.cn...
K8S中高级存储之PV和PVC
高级存储 PV和PVC 由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用户使用, kubernetes引入PV和PVC两种资源对象。 PV(Persistent Volume) PV是…...
SVG 矩形:深入理解与实际应用
SVG 矩形:深入理解与实际应用 引言 SVG(可缩放矢量图形)是一种基于可扩展标记语言的图形矢量格式,用于在网页上创建矢量图形。SVG矩形是SVG图形中的一种基本形状,它允许用户在网页上绘制不同大小和颜色的矩形。本文将…...
高效学习方法分享
高效学习方法分享 引言 在信息高速发展的今天,学习已经成为每个人不可或缺的一部分。你是否曾感到学习的疲惫,信息的爆炸让你无从下手?今天,我们将探讨几种高效的学习方法,帮助你从中找到适合自己的学习之道。关于学…...
Linux---架构概览
一、Linux 架构分层的深度解析 1. 用户空间(User Space) 用户空间是应用程序运行的环境,与内核空间隔离,确保系统稳定性。 应用程序层: 用户程序:如 edge、vim,通过调用标准库(如 …...
2501,20个窗口常用操作
窗口是屏幕上的一个矩形区域.窗口分为3种:覆盖窗口,弹窗和子窗口.每个窗口都有由系统绘画的"非客户区"和应用绘画的"客户区". 在MFC中,CWnd类为各种窗口提供了基类. 1,通过窗柄取得CWnd指针 可调用Cwnd::FromHandle函数,通过窗柄取得Cwnd指针. void CD…...
[论文总结] 深度学习在农业领域应用论文笔记14
当下,深度学习在农业领域的研究热度持续攀升,相关论文发表量呈现出迅猛增长的态势。但繁荣背后,质量却不尽人意。相当一部分论文内容空洞无物,缺乏能够落地转化的实际价值,“凑数” 的痕迹十分明显。在农业信息化领域的…...
蓝桥杯例题一
不管遇到多大的困难,我们都要坚持下去。每一次挫折都是我们成长的机会,每一次失败都是我们前进的动力。路漫漫其修远兮,吾将上下而求索。只有不断努力奋斗,才能追逐到自己的梦想。不要害怕失败,害怕的是不敢去尝试。只…...
WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理
WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理 一、前言二、WPF 事件基础概念2.1 事件的定义与本质2.2 常见的 WPF 事件类型 三、路由事件3.1 路由事件的概念与原理3.2 路由事件的三个阶段3.3 路由事件的标识与注册3.4 常见的路由事件示例 四、自定义事件处…...
C++封装红黑树实现mymap和myset和模拟实现详解
文章目录 map和set的封装map和set的底层 map和set的模拟实现insertiterator实现的思路operatoroperator- -operator[ ] map和set的封装 介绍map和set的底层实现 map和set的底层 一份模版实例化出key的rb_tree和pair<k,v>的rb_tree rb_tree的Key和Value不是我们之前传统意…...
洛谷P11464 支配剧场
支配剧场 题目背景 May all the beauty be blessed. 题目描述 布洛妮娅和符华在寻找琪亚娜的途中,被支配之律者困在了支配剧场的高塔回廊之中。布洛妮娅敏锐地发现,虚无回廊是由一些支配之律者生成的积木构成的,只要击碎其中一些积木&#…...
自动化数据备份与恢复:让数据安全无忧
友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...
如何用matlab画一条蛇
文章目录 源代码运行结果代码说明结果 源代码 % 画蛇的代码 % 2025-01-28/Ver1 % 清空环境 clc; clear; close all;% 定义蛇的身体坐标 t linspace(0, 4*pi, 100); % 参数化变量 x t; % x坐标 y sin(t) 0.5 * sin(3*t); % y坐标,形成更复…...
DVC - 数据版本和机器学习实验的命令行工具和 VS Code 扩展
文章目录 一、关于 DVC二、快速启动三、DVC的工作原理四、VS代码扩展五、安装Snapcraft(Linux)Chocolatey (Windows)Brew (mac OS)Anaconda (Any platform)PyPI(Python)Package (Platform-specific)Ubuntu / Debian (deb)Fedora /…...
理解神经网络:Brain.js 背后的核心思想
温馨提示 这篇文章篇幅较长,主要是为后续内容做铺垫和说明。如果你觉得文字太多,可以: 先收藏,等后面文章遇到不懂的地方再回来查阅。直接跳读,重点关注加粗或高亮的部分。放心,这种“文字轰炸”不会常有的,哈哈~ 感谢你的耐心阅读!😊 欢迎来到 brain.js 的学习之旅!…...
Maui学习笔记- SQLite简单使用案例02添加详情页
我们继续上一个案例,实现一个可以修改当前用户信息功能。 当用户点击某个信息时,跳转到信息详情页,然后可以点击编辑按钮导航到编辑页面。 创建项目 我们首先在ViewModels目录下创建UserDetailViewModel。 实现从详情信息页面导航到编辑页面…...
typescript 简介
可选链操作符 可选链操作符( ?. ) 允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误&a…...
selenium定位网页元素
1、概述 在使用 Selenium 进行自动化测试时,定位网页元素是核心功能之一。Selenium 提供了多种定位方法,每种方法都有其适用场景和特点。以下是通过 id、linkText、partialLinkText、name、tagName、xpath、className 和 cssSelector 定位元素的…...
Autogen_core 测试代码:test_cache_store.py
目录 原始代码测试代码代码中用到的typing注解 原始代码 from typing import Dict, Generic, Optional, Protocol, TypeVarT TypeVar("T")class CacheStore(Protocol, Generic[T]):"""This protocol defines the basic interface for store/cache o…...
变压器的漏感
测量变压器漏感的时候需要将次级绕组短路: 测量变压器初级线圈的电感方法很简单,直接用LCR测量就可,无需像测量漏感那样将次级绕组短接:...
【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测
🔥【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测 📅 发布日期:2025年01月29日(大年初一) 在这个辞旧迎新的美好时刻,我们迎来了充满希望的2025年,也是十二生肖中的蛇…...
cursor软件的chat和composer分别是什么
Cursor 是一款基于人工智能的代码编辑器,集成了类似 ChatGPT 的功能,旨在帮助开发者更高效地编写代码。以下是 Cursor 中 Chat 和 Composer 的具体功能: 1. Chat Cursor 中的 Chat 是一个基于 AI 的聊天功能,类似于 ChatGPT&…...
从ChatGPT热潮看智算崛起
2025年1月7日,科智咨询发布《2025年IDC产业七大发展趋势》,其中提到“ChatGPT开启生成式AI热潮,智能算力需求暴涨,算力供给结构发生转变”。 【图片来源于网络,侵删】 为何会以ChatGPT发布为节点呢?咱们一起…...
攻克 AI 幻觉难题
当下,AI 已经成为我们生活中不可或缺的一部分。无论是智能语音助手,还是对话式的AI模型,它们凭借强大的算法和海量的数据,为我们答疑解惑、出谋划策。 然而,小编今天向AI提问:上山打老虎。他却回答&#x…...
格式化时间的插件
1.安装dayjs包 npm i dayjs 2.组件中的应用...
自创《艺术人生》浅析
艺术是生活的馈赠,艺术是苦痛的呻吟。 笔记模板由python脚本于2025-01-29 00:01:11创建,本篇笔记适合喜欢写诗读诗诵诗的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 …...
【Python-办公自动化】实现自动化输出json数据类型的分析报告和正逆转换
分析报告 import json from pprint import pprint, PrettyPrinterdef analyze_energy_data(file_path):"""能源数据分析与结构查看函数参数:file_path (str): JSON文件路径功能:1. 加载并解析JSON数据2. 显示数据结构概览3. 交互式结构探索"""…...
