Java 2024年面试总结(持续更新)
目录
最近趁着金三银四面了五六家公司吧,也整理了一些问题供大家参考一下(适合经验三年左右的)。
面试问题(答案是我自己总结的,不一定正确):
总结:
最近趁着金三银四面了五六家公司吧,也整理了一些问题供大家参考一下(适合经验三四年左右的)。
面试问题(答案是我自己总结的,不一定正确):
1.自我介绍简单一点吧,把自己的情况说清楚,一两分钟即可。
2.微服务的组件
答:微服务是把一个类似单体项目根据某种维度进行拆分,比如根据功能模块进行拆分。
拆分之后,具备了更好的抗压性/扩展性,还可以更好的解耦,但是维护相比之前会更麻烦了
常用的组件有Spring Cloud。其中里面有:
Nacos:用来做注册中心/配置中心
Gateway:用来做网关
Hystrx:做限流、熔断、降级
Dubbo:做服务间的调用
Feign:也是服务间的调用
3.mq的运用
答:本项目中是用作削峰和解耦。
4.项目的并发量
5.机器搭建
6.团队的规模
7.查询优化
答:索引
8.spring的知识点
9.@resource/@Autowired区别
答:(1)来源不一样:@Autowired 是 Spring 定义的注解,而 @Resource 是 Java 定义的注解
(2)依赖查找的顺序不同:依赖注入的功能,是通过先在 Spring IoC 容器中查找对象,再将对象注入引入到当前类中,
@Autowired 是先根据类型(byType)查找,如果存在多个 Bean 再根据名称(byName)进行查找
@Resource 是先根据名称查找,如果(根据名称)查找不到,再根据类型进行查找
(3)支持的参数不同:@Autowired 和 @Resource 在使用时都可以设置参数,其中 @Autowired 只支持设置一个 required 的参数,而 @Resource 支持 7 个参数
(4)依赖注入的用法不同:@Autowired 支持属性注入、构造方法注入和 Setter 注入,而 @Resource 只支持属性注入和 Setter 注入
(5)编译器 IDEA 的提示不同:@Autowired 编译器会提示报错信息
10.设计模式
答:单例模式、设配器模式、工厂模式、代理模式
11.单例模式如何避免线程安全以及应用场景
答:
单例模式在多线程的,应用场合下必须小心使用。如果当唯一实例尚未创建时,有两个线程同时调用创建方法,
那么它们同时没有检测到唯一实例的存在,从而同时各自创建了一个实例,这样就有两个实例被构造出来,从而违反了单例模式中实例唯一的原则。解决这个问题的办法是为指示类是否已经实例化的变量提供一个互斥锁(虽然这样会降低效率)。
应用场景:对象需要被公用的场合适合使用,如多个模块使用同一个数据源连接对象等等
12.设计模式里面的工程模式?
答:(1)简单工厂模式:建立一个工厂类,对实现了同一接口的一些类进行实例的创建。优点是比较好理解,简单易操作。
缺点是类的创建依赖工厂类,如果想要拓展程序,必须对工厂类进行修改
(2) 工厂方法模式:对简单工厂模式的改进,使用一个工厂接口,创建多个工厂类,每个工厂创建对应的对象。
创建一个工厂接口和创建多个工厂实现类,一旦需要增加新的功能,直接增加新的工厂类就可以了,
不需要修改之前的代码。有利于代码的维护和扩展。
(3) 抽象工厂模式:
MyBatis中使用的比较多,事务模块和数据源模块都使用了工厂方法模式。
13.代码review工作的重点
答:(1)代码规范:命名、格式、内容、位置(包结构)
(2)耦合、性能、内存
13.sql xml语句(实体字段和数据库怎么对应?)
14.修改表结构语句(mysql中change和modify 的区别)
答:ALTER TABLE `ry-cloud`.sys_user_role CHANGE role_id role_id1 bigint(20) NOT NULL COMMENT ‘角色ID’;
(1)change 可以更改列名 和 列类型 (每次都要把新列名和旧列名写上, 即使两个列名没有更改,只是改了类型)
(2)modify 只能更改列属性 只需要写一次列名, 比change 省事点15.数据库mvcc(多版本解决的是读写并发冲突)
答:是数据库的多版本并发控制,在读取数据不用加锁也可以提高读取效率和并发性的手段。
实现原理:一种读取操作, 使用数据在某个时间点的快照显示查询结果, 而不考虑同时运行的其他事务所执行的更改.
如果查询的数据已被另一个事务更改, 则会根据undo log的内容重建原始数据. 该技术避免了一些锁定问题,这些问题可以通过强制事务等待其他事务完成来减少并发性.
隐含字段:一个事务最新id,回滚的指针16.不用or,会导致索引失效,如何改造?
答:(1)代码层面查两次
(2)或者用UNION来代替17.数据库视图、序列化、存储过程
答:(1)数据库视图:数据库一个或多个表导出的虚拟表,方便用户对数据进行操作。视图的数据依赖原数据,二者会互相影响。
(2)数据库序列化:是将数据结构或者对象转换成字节流、json等方便去存储或者是传输。
(3)18.数据库的事务
19.分库分表
答:关系型数据库容易成为系统瓶颈,链接数量,存储容量都是有限的,超过1千万之后因其查询维度的较多,性能会下降严重。
(1)垂直切分:分库:根据业务不同拆成不同库;分表:把不常用的字段或者长度比较大的字段拆到另一张表(主键跟着走)。缺点:只能在代码里面去聚合,增加了其复杂度
(2)水平切分:库内分表、分库分表。将按照不同的条件分散到多个数据库或者多个表中,使单表数据量变小。缺点:维护难度加大、跨分片的事务不好保证20.事务不生效的原因
答:(1)方法不是public;(2)异常被方法吞掉了;(3)抛出异常类型大于@Transactional 默认回滚的是 RuntimeException 和 Error;(4)非同一个线程
21.jdk 1.8的新特性
答:Lambda表达式、Stream API、map数据结构优化
22.java8函数式接口,Functional Interface
答:函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。为lambda表达式和方法引用(用冒号::来进行方法的调用)提供目标类型
23.spring的知识点
24.aop底层
答:面向切面的编程,通过预编译和运行期间动态代理实现程序功能统一的技术。实现invocationHandle类则是JDK动态代理,否则是CGLib动态代理。
25.SpringCloud会出现那些安全问题
26…SpringBoot监听器
27.SpringBoot的优势以及创建方式
答:(1)主要是简化新spring应用的初始搭建和开发过程(使用IntelliJ IDEA,可以利用创建Spring Initializr的方式创建Spring Boot项目、
使用官方文档创建项目,在Spring官方文档上面提供了一种在线生成Spring Boot项目的方式、
使用Spring Tool Suite,可以直接新建Spring Starter Project项目)
(2)嵌入式Web容器、自动化配置、可执行Jar部署28.SpringCloud的配置文件
答:nacos或者阿波罗都可以。
29.springMVC(Model(模型)、View(视图)、Controller(控制器))
答:是一种软件设计规范,将业务逻辑、数据、显示分离的方法来组织代码,降低了视图和业务逻辑之间的耦合。
浏览器把请求放到试图层=控制器收到请求模型处理数据=返回视图=响应给浏览器
30.map的实现类
答:HashMap、TreeMap、
31.流的并行和串行
答:串行:Stream,并行:parallelStream(其底层使用Fork/Join框架实现,通过Fork把任务拆开,Join把结果进行合并)
32.环境切换(idea的设置)
答:spring.profiles.active====》VM options两处改动33.Java中的值传递和引用传递
答:(1)值传递(pass by value):在调用函数时,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改,就不会影响到原来的实际参数;
(2)引用传递(pass by reference):在调用函数时,将实际参数的地址直接传递到函数中。这样在函数中对参数进行的修改,就会影响到实际参数;
个人认为:在一个类中调用其他方法,这个方法中如果是直接复制对象则是值传递,如果是在参数基础上改则是引用传递34.反射应用场景
答:(1)可以动态的加载类,并创建其实例。String className = “com.example.MyClass”;
Class<> clazz = Class.forName(className);
Object obj = clazz.newInstance();
(2)通过反射,我们可以在运行时动态地获取类的信息。这样就可以获取类的构造方法、字段、方法等信息,并进行相应的操作。35.异常处理,finaly里面的执行
答:(1)不管try中是否出现异常,finally块中的代码都会执行;
(2)当try和catch中有return时,finally依然会执行;
(3)finally中如果包含return,那么程序将在这里返回,而不是try或catch中的return返回,返回值就不是try或catch中保存的返回值了36.dubbo一次性数据量太大出现的情况
答:会出现Dubbo报错Data length too large;首先看这种大数据是不是符合双方约定的,如果是的话就去修改生产者xml payload参数,否则可以加一些限制。
37.throw 和 throws 的区别
答:throw代表动作,表示抛出一个异常的动作;
throws代表一种状态,代表方法可能有异常抛出throw用在方法实现中,而throws用在方法声明中;
throw只能用于抛出一种异常,而throws可以抛出多个异常
38.多线程锁
39.分布式锁原理
答:在多进程环境里面,通过外部的工具来达到加锁功能
40.redis的看门狗(在没有自定义释放时间才会生效)
答:是redission提供的自动延期机制,使得分布式锁可以自动延期,默认30秒。
41.分布式锁遇到的问题
答:(1)可能忘记了释放锁;(2)释放了别人的锁;(3)锁超时等问题
42.分布式锁的方式
答:redission、zk、数据库
43.线程池参数的设定
答:(1) IO 密集型任务:2*核心数+1
(2) CPU密集型任务:核心数+1
即使当计算(CPU)密集型的线程偶尔由于页缺失故障或者其他原因而暂停时,这个“额外”的线程也能确保 CPU 的时钟周期不会被浪费。
44.网络状态的含义:401等等
答:(1)401 Unauthorized:请求要求身份验证。客户端需要进行身份验证才能获取请求的内容。如果请求未包含有效的身份验证凭据,服务器可能返回此状态码。
(2)400 Bad Request:客户端发送的请求有错误。服务器不理解或无法处理客户端发送的请求。这可能是由于参数错误、缺少必要的信息或语法错误等引起的。
(3)403 Forbidden:服务器拒绝了客户端的请求。客户端没有访问请求的权限,无法获取请求的资源。
(4)404 Not Found:请求的资源不存在。服务器未能找到请求的资源。这可能是由于资源被删除或请求的 URL 错误等引起的。
(5)502 Bad Gateway:服务器作为网关或代理,从上游服务器接收到无效的响应。通常表示上游服务器发生了故障或响应超时。45.如何快速找到nginx目录
答:(1)在默认安装位置下查看,大多数一般会安装在默认位置下(/usr/local/openresty/nginx 或/usr/local/nginx)
(2)查看nginx进程(ps -aux|grep nginx)
(3)nginx运行进程,执行ls -l /proc/进程号/exe ,然后会打印出安装/运行位置46.docker
答:docker是一个开源的应用容器引擎,开发者可以把程序及其依赖项打包到一个可移值的镜像中,可以在任意的linux/Windows系统上运行
这些镜像。47.主从复制
48.jvm调优
49.Linux命令
50.消息中间件的原理(Kafka、Pulsar等等)以及项目运用情况
51.数据库死锁(互斥条件、请求与保持条件、不剥夺条件、循环等待条件)
答:两个或多个事务竞争资源导致互相等待称为死锁52.如何查看死锁
答:查看错误日志、使用命令:SHOW ENGINE INNODB STATUS53.死锁解决方法:
答:手动解决:回滚其中一个事务
设置锁等待超时时间让其自动解除54.如何避免死锁:
答:(1)避免大事务
(2)合理设计索引减少表扫描
(3)减少锁粒度55.vue的生命周期
答:(1)创建阶段:beforeCreate(进行数据侦听和事件/侦听器的配置之前同步调用),created(可以访问数据了)
(2)挂载阶段:beforeMount(dom马上被渲染),mounted(dom被渲染出来了)
(3)更新阶段:beforeUpdate(数据发送了变化,dom还没更新),updated(数据更改导致dom被更改)
(4)销毁阶段:beforeDestroy(实例销毁前的调用),destroyed(实例被销毁,vue指令被解除)56.vue如何防抖:
答:多次输入,只提交最后一次,主要思想就是定时器57.前端vue如何节流:
答:多次点击,只执行一次函数58.SpringBoot的自动装配
答:SpringBoot主要解决了Spring传统重量级xml配置bean
启动类里面有@SpringBootApplication注解,包含了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan。
其中@SpringBootConfiguration注解标记启动类为配置类
@ComponentScan注解会去扫描启动类所在包及子包下面所标记的bean类由IOC去注册为bean
@EnableAutoConfiguration通过 @Import 注解导入 AutoConfigurationImportSelector类,然后通过AutoConfigurationImportSelector 类的 selectImports 方法去读取需要被自动装配的组件依赖下的spring.factories文件配置的组件的类全名,并按照一定的规则过滤掉不符合要求的组件的类全名,将剩余读取到的各个组件的类全名集合返回给IOC容器并将这些组件注册为bean59.nacos
答:用来做动态服务发现、配置管理、服务管理平台
优点:可以动态的添加、删除服务实例,无须重启服务或者改代码
可以提供不同环境、角色的配置
支持流量管理,可以进行控制、限流和熔断
易于操作的管理界面
社区活跃60.线程池队列类型:
LinkedBlockingDeque:链表同步阻塞队列
ArrayBlockingQueue:数组同步阻塞队列
SynchronousQueue:同步阻塞队列61.如何引用bean,除了Resource和Autowired,出现了null什么原因,静态类不会依赖管理
答:静态方法获取bean实例,采用Resource和Autowired会导致空指针。
首先说说场景:我有一个工具类,这个工具类要去调数据库mapper做一些处理,静态方法里面要使用mapper,这个mapper必须有static。
分析原因:静态方法属于类本身,不依赖类的实例状态,无法直接访问。
解决办法:在某个类持有ApplicationContext 引用,通过他的上下文获取62.hashmap如果冲突了,自身如何解决冲突
答:采用拉链法:类似hashmap在数组内添加一个链表63.有一个Kafka配置页面,页面有信息录入和是否消费开关按钮,如何去设计(如果用多线程,如果管理)
答:64.创建对象5种方式
答:省略65.if/else 和swatch case
答:swith/case使用跳转表来提高效率,如果case数量较多,性能优于if/else
if/else是去遍历每个条件
如果分支少且条件复杂,选择if/else更合适66.kafka分区和gourp
答:Kafka为了提高并发性,生产者会把数据分发到多个分区,多个消费者可以组成一个消费组,一个分区数据只会被消费组的一个消费。
建议消费组中的消费者数量和分区partition保持一致67.Kafka消息堆积处理
答:分析是消费数量不够还是消费处理时间较长68.同一个类,一个方法调用带@Transctional的方法,会导致事务不生效?
答:调用实际上是在当前类的实例内部发生的。因此,它不会触发 Spring AOP 代理的拦截,也就意味着不会触发事务管理器的拦截器69.冒泡算法:
答:冒泡排序就是对待排序的的序列从前往后两两比较,如果发现逆序则交换,最终得到从小到大的顺序70.修改文件权限、查看系统端口Linux命令
答:(1)修改文件权限:chmod 644 test.php #只有拥有者可以修改, 其他人只能看文件内容.,chmod o+w test.php
文件所有者可以用字母 u (user)表示. 用户所在的组可以用字母 g (group)来表示. 其他人可以用字母 o (other)来表示. 所有人可以用字母 a (all)来表示.
(2)查看系统端口:netstat -ntlp//查看当前所有tcp端口·,查看一台服务器上面哪些服务及端口:netstat -lanp71.gateway断言、过滤器类型
答:断言功能可以决定http请求应该由那个Route来做路由。就是我们nacos的predicates匹配规则
过滤器类型:
答:(1)网关过滤器(GatewayFilter):一般放在配置文件里面,比如nacos(spring.cloud.routes.filters),作用在所有路由上面
(2)全局过滤器(GlobalFilter):不用在配置文件中,比如全局日志过滤器,打印日志72.AQS?
答:用于构建锁和同步器的基础框架,用于并发编程,基于FIFO(First In, First Out)等待队列的阻塞锁和同步器73.maven命令
答:mvn -v、mvn package(依据项目生成 jar 文件 )、mvn install(在本地 Repository 中安装 jar )、mvn clean(清除目标目录中的生成结果)74.Kafka的Broker、Partition
答:(1)Broker是Kafka的实例,
(2)Topic是消息的主题,可以理解为消息的分类,数据就保存在里面,每个Broker可以建立多个Topic
(3)Partition是Topic的分区,分区的作用就是负载,提高Kafka的吞吐量75.java数据类型几种
答:八种基本数据类型:byte、short、int、long;float、double;char;boolean
四种引用类型:数组、接口、类、(枚举、注解、字符串、)76.docker
答:77.sa-token登录考虑
答:78.xml模糊查询的写法
答:select * form user where name like concat(‘%’,#{name},‘%’)79.用mybatis的插件,需要实现什么
答:实现Interceptor80.redis list数据写入命令
答:lpush key value(将元素添加到列表左边),Rpush key value(将元素添加到列表右边)81.ConcurrentHashMap的锁粒度
答:ConcurrentHashMap在jdk1.8采用CAS+synchronized实现更加细粒度的锁
锁的粒度指的是锁定共享资源的范围大小
在jdk1.7锁粒度是每个段(Segment),1.8是每个链表或红黑树的根节点82.java内存
答:指的就是jvm内存模型83.多线程包(JUC包):
答:JUC是java.util.concurrent包的简称84.并发
答:85.多线程
86.mysql批量插入
答:mybatis-plus实现批量插入:开启insertBatchSomeColumn();
自定义sql注入器,继承DefaultSqlInjector
将自定义sql注入器注册为bean
新建mapper继承BaseMapper,配置insertBatchSomeColumn()方法;87.springboot的缺点
答:(1)升级困难,每次升级变更较大
(2)依赖大量第三方库,管理复杂且容易冲突
(3)资源占用较多88.SpringBoot读取配置的6种方式
(1)使用@Value注解
(2)使用Environment接口
(3)使用@ConfigurationProperties注解
(4)使用PropertySource注解89.对于一个大文件,如何分批读取来减轻内存压力呢
答:采用OpenCsv来读取,设置一个每次读取的行数,如果集合size大于了这个行数,就去处理数据并清空集合。90.dubbo如何熔断
答:使用mock机制:@Reference(mock = “return 666”)
配置熔断参数:配置超时时间和重试次数来,停止调用服务91.Kafka和RabbitMQ的区别
答:应用场景方面:mq用于实时方面,可靠性要求比较高
Kafka用于活跃的流式数据,适合处理大数据量
消费模型:92.mysql的@符号
答:主要用于定义和使用用户变量,93.vue3路由类型
答:(1)基本路由:只包含一个路由对象参数
(2)命名路由:包含了多个路由参数94.v-for为什么要用key
答:key的作用可以通过diff算法提高页面的渲染效率95.left join 有大表和小表,谁放在前面?
答:让小表作为驱动表效率更高,他的扫描rows会更少96.学生表,姓名、科目、成绩,找出全部科目都及格的学生
答:select name ,count(*) from student s
where grades >=60 group by name having count(*)>=3 ;
这里我限定三门了97.领域驱动DDD(Domain-Driven Design,简称 DDD)
答:他是一种面向对象的设计方法,强调业务逻辑和领域模型置于软件设计中心。
总结:
首先就是把自己的项目讲清楚,特别是自己项目涉及的技术尽量把底层也弄懂,现在的面试占比可能项目占70%,八股文也就30%。如果有涉及笔试的话,建议多看看表结构设计,sql要能手写出来比较好。还有就是自己的简历可以多优化一下,不要太简单了,多找厉害的朋友参考参考。
其次感觉整个行情变差了,工资也压得厉害。对于中小型自研公司他们需要比较全能的人吧,对于我这种底层码农感觉横向的学习挺重要的,比如前端开发、Python这种可以多学学。
对于社招感觉面比较窄,比如零售的行业你必须要有零售开发项目,制造业你可能得会ERP之类的。
感觉现在五年经验还挺受欢迎的,随便瞎写的,大家将就看。
外包慎重,加油!
相关文章:
Java 2024年面试总结(持续更新)
目录 最近趁着金三银四面了五六家公司吧,也整理了一些问题供大家参考一下(适合经验三年左右的)。 面试问题(答案是我自己总结的,不一定正确): 总结: 最近趁着金三银四面了五六家公…...
JDK9新特性
文章目录 新特性:1.模块化系统使用模块化module-info.java:exports:opens:requires:provides:uses: 2.JShell启动Jshell执行计算定义变量定义方法定义类帮助命令查看定义的变量:/var…...
性能测试中的数据库连接池优化
目录 一、配置连接池参数 二、配置连接池数量 三、监控连接池 数据库连接池的意义是让连接复用,通过建立一个数据库连接池(缓冲区)以及一套连接的使用,分配,管理策略,使得该连接池中的连接可以得到高效&…...
1. 初识spark
背景: 作为一名开发人员,用内存处理数据是每天都在做的事情。内存处理数据最大的优势就是方便,快捷,可以很快得到结果,但是内存总是有瓶颈的,不管你运行代码的机器有多大的内存,总是有更大规模…...
专业学习|一文了解并实操自适应大邻域搜索(讲解代码)
一、自适应大邻域搜索概念介绍 自适应大邻域搜索(Adaptive Large Neighborhood Search,ALNS)是一种用于解决组合优化问题的元启发式算法。以下是关于它的详细介绍: -自适应大领域搜索的核心思想是:破坏解、修复解、动…...
Redis --- 使用zset处理排行榜和计数问题
在处理计数业务时,我们一般会使用一个数据结构,既是集合又可以保证唯一性,所以我们会选择Redis中的set集合: 业务逻辑: 用户点击点赞按钮,需要再set集合内判断是否已点赞,未点赞则需要将点赞数1…...
排序算法——快速排序
代码仓库: 1037827920/AlgorithmZoo 快速排序 算法步骤 选择基准元素,从数组中选择一个元素作为基准,通常选择方式有: 第一个元素最后一个元素中间元素随机选择 分区操作,将数组元素根据基准分为两部分,…...
有用的sql链接
『SQL』常考面试题(2——窗口函数)_sql的窗口函数面试题-CSDN博客 史上最强sql计算用户次日留存率详解(通用版)及相关常用函数 -2020.06.10 - 知乎 (zhihu.com) 1280. 学生们参加各科测试的次数 - 力扣(LeetCode&…...
手写MVVM框架-构建虚拟dom树
MVVM的核心之一就是虚拟dom树,我们这一章节就先构建一个虚拟dom树 首先我们需要创建一个VNode的类 // 当前类的位置是src/vnode/index.js export default class VNode{constructor(tag, // 标签名称(英文大写)ele, // 对应真实节点children,…...
C++单例模式
单例模式是一种设计模式,它保证一个类只有一个对象。因此单例模式要私有化构造函数,禁用拷贝构造以及赋值重载。同时还要提供一个静态成员函数获取单例对象。 单例模式有两种实现方式:饿汉模式和懒汉模式 饿汉模式:创建静态单例…...
SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言
目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件: 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL(Data Definition Language):数据定义语言 1、操…...
RabbitMQ 可靠性投递
文章目录 前言一、RabbitMQ自带机制1、生产者发送消息注意1.1、事务(Transactions)1.2、发布确认(Publisher Confirms)1.2.1、同步1.2.2、异步 2、消息路由机制2.1、使用备份交换机(Alternate Exchanges)2.…...
Java常见的技术场景面试题
一、单点登录这块怎么实现的? 单点登录概述 单点登录:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统 在以前的时候,一般我们就单系统,所有的功能都在同一个系统上。…...
使用 Postman 进行 API 测试:从入门到精通
使用 Postman 进行 API 测试:从入门到精通 使用 Postman 进行 API 测试:从入门到精通一、什么是 API 测试?二、Postman 简介三、环境搭建四、API 测试流程1. 收集 API 文档2. 发送基本请求示例:发送 GET 请求示例代码(…...
用python实现进度条
前言 在Python中,可以使用多种方式实现进度条。以下是几种常见的进度条格式的实现方法: 1. 使用 tqdm 库 tqdm 是一个非常流行的库,可以轻松地在循环中显示进度条。 from tqdm import tqdm import time# 示例:简单的进度条 fo…...
android 自定义通话录音
在 Android 开发中,实现通话录音功能通常涉及到对系统通话的拦截和录音。由于通话录音涉及到用户隐私和安全性,Android 系统对此有严格的限制和要求。在 Android 10(API 级别 29)及以上版本中,直接访问通话录音功能变得…...
WebSocket——环境搭建与多环境配置
一、前言:为什么要使用多环境配置? 在开发过程中,我们通常会遇到多个不同的环境,比如开发环境(Dev)、测试环境(Test)、生产环境(Prod)等。每个环境的配置和需…...
【自动化办公】批量图片PDF自定义指定多个区域识别重命名,批量识别铁路货物运单区域内容改名,基于WPF和飞桨ocr深度学习模型的解决方案
项目背景介绍 铁路货运企业需要对物流单进行长期存档,以便后续查询和审计。不同的物流单可能包含不同的关键信息,通过自定义指定多个区域进行识别重命名,可以使存档的图片文件名具有统一的规范和明确的含义。比如,将包含货物运单…...
在线教程丨YOLO系列10年更新11个版本,最新模型在目标检测多项任务中达SOTA
YOLO (You Only Look Once) 是计算机视觉领域中最具影响力的实时目标检测算法之一,以其高精度与高效性深受业界青睐,广泛应用于自动驾驶、安防监控、医疗影像等领域。 该模型最早于 2015 年由华盛顿大学研究生 Joseph Redmon 发布,开创了将目…...
c++可变参数详解
目录 引言 库的基本功能 va_start 宏: va_arg 宏 va_end 宏 va_copy 宏 使用 处理可变参数代码 C11可变参数模板 基本概念 sizeof... 运算符 包扩展 引言 在C编程中,处理不确定数量的参数是一个常见的需求。为了支持这种需求,C标准库提供了 &…...
Ubuntu安装VMware17
安装 下载本文的附件,之后执行 sudo chmod x VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle sudo ./VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle安装注意事项: 跳过账户登录的办法:断开网络 可能出现的问题以及解决…...
在Debian 12上安装VNC服务器
不知道什么标题 可以看到这个文章是通过豆包从国外网站copy的,先这样写着好了,具体的我有时间再补充,基本内容都在这里了。 在Debian 12上安装VNC服务器 简介 VNC(Virtual Network Computing,虚拟网络计算…...
设计模式Python版 外观模式
文章目录 前言一、外观模式二、外观模式示例三、抽象外观类四、抽象外观类示例 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式&am…...
Selenium 浏览器操作与使用技巧——详细解析(Java版)
目录 一、浏览器及窗口操作 二、键盘与鼠标操作 三、勾选复选框 四、多层框架/窗口定位 五、操作下拉框 六、上传文件操作 七、处理弹窗与 alert 八、处理动态元素 九、使用 Selenium 进行网站监控 前言 Selenium 是一款非常强大的 Web 自动化测试工具,能够…...
论文解读:《基于TinyML毫米波雷达的座舱检测、定位与分类》
摘要 本文提出了一种实时的座舱检测、定位和分类解决方案,采用毫米波(mmWave)雷达系统芯片(SoC),CapterahCAL60S344-AE,支持微型机器学习(TinyML)。提出了波束距离-多普勒…...
e2studio开发RA2E1(5)----GPIO输入检测
e2studio开发RA2E1.5--GPIO输入检测 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置GPIO口配置按键口配置按键口&Led配置R_IOPORT_PortRead()函数原型R_IOPORT_PinRead()函数原型代码 概述 本篇文章主要介绍如何…...
数据结构:队列篇
图均为手绘,代码基于vs2022实现 系列文章目录 数据结构初探: 顺序表 数据结构初探:链表之单链表篇 数据结构初探:链表之双向链表篇 链表特别篇:链表经典算法问题 数据结构:栈篇 文章目录 系列文章目录前言一.队列的概念和结构1.1概念一、动态内存管理优势二、操作效率与安全性…...
idea中git的简单使用
提交,推送直接合并 合到哪个分支就到先切到哪个分支...
Java中的object类
1.Object类是什么? 🟪Object 是 Java 类库中的一个特殊类,也是所有类的父类(超类),位于类继承层次结构的顶端。也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。 🟦Java里面除了Object类,所有的…...
html2canvas绘制页面并生成图像 下载
1. 简介 html2canvas是一个开源的JavaScript库,它允许开发者在用户的浏览器中直接将HTML元素渲染为画布(Canvas),并生成图像。以下是对html2canvas的详细介绍: 2. 主要功能 html2canvas的主要功能是将网页中的HTML元…...
Certum OV企业型通配符SSL
随着网络攻击手段的不断演变,仅仅依靠HTTP协议已无法满足现代企业对数据安全的需求。SSL证书,特别是经过严格验证的组织验证型SSL证书,成为了保护网站数据传输安全、提升用户信任度的标配。 一、Certum OV企业型通配符SSL概述 Certum&#…...
2024年Web前端最新Java进阶(五十五)-Java Lambda表达式入门_eclipse lambda(1),面试必备
对象篇 模块化编程-自研模块加载器 开源分享:【大厂前端面试题解析核心总结学习笔记真实项目实战最新讲解视频】 Arrays.sort(players, sortByName); // 1.3 也可以采用如下形式: Arrays.sort(players, (String s1, String s2) -> (s1.compareTo(s2))); ??其…...
JVM 四虚拟机栈
虚拟机栈出现的背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多…...
V103开发笔记1-20250113
2025-01-13 一、应用方向分析 应用项目: PCBFLY无人机项目(包括飞控和手持遥控器); 分析移植项目,应用外设资源包括: GPIO, PWM,USART,GPIO模拟I2C/SPI, ADC,DMA,USB等; 二、移植项目的基本…...
Page Assist - 本地Deepseek模型 Web UI 的安装和使用
Page Assist Page Assist是一个开源的Chrome扩展程序,为本地AI模型提供一个直观的交互界面。通过它可以在任何网页上打开侧边栏或Web UI,与自己的AI模型进行对话,获取智能辅助。这种设计不仅方便了用户随时调用AI的能力,还保护了…...
Cookie及Session---笔记
目录 Cookiecookie简介cookiesession的认证方式tpshop完整登录实现-cookie Sessionsession简介session自动管理cookietpshop完整登录实现-sessioncookie和session的区别获取响应结果指定内容 Cookie cookie简介 工程师针对HTTP协议是无连接无状态特性所设计的一种技术&#x…...
【Block总结】DASI,多维特征融合
论文信息 HCF-Net(Hierarchical Context Fusion Network)是一种新提出的深度学习模型,专门用于红外小目标检测。该论文于2024年3月16日发布,作者包括Shibiao Xu、ShuChen Zheng等,主要研究机构为北京邮电大学。该模型…...
LabVIEW的智能电源远程监控系统开发
在工业自动化与测试领域,电源设备的精准控制与远程管理是保障系统稳定运行的核心需求。传统电源管理依赖本地手动操作,存在响应滞后、参数调节效率低、无法实时监控等问题。通过集成工业物联网(IIoT)技术,实现电源设备…...
4.PPT:日月潭景点介绍【18】
目录 NO1、2、3、4 NO5、6、7、8 NO9、10、11、12 表居中或者水平/垂直居中单元格内容居中或者水平/垂直居中 NO1、2、3、4 新建一个空白演示文稿,命名为“PPT.pptx”(“.pptx”为扩展名)新建幻灯片 开始→版式“PPT_素材.doc…...
《迪拜AI展:探寻中东人工智能发展的璀璨新篇》
迪拜:AI 浪潮下的闪耀明珠 迪拜,这座位于阿拉伯半岛东部、波斯湾东南岸的城市,犹如一颗璀璨的明珠,在中东地区散发着独特的魅力。它是阿拉伯联合酋长国的第二大城市,也是迪拜酋长国的首府 ,凭借优越的地理位…...
axios如何利用promise无痛刷新token
目录 需求 需求解析 实现思路 方法一: 方法二: 两种方法对比 实现 封装axios基本骨架 instance.interceptors.response.use拦截实现 问题和优化 如何防止多次刷新token 同时发起两个或以上的请求时,其他接口如何重试 最后完整代…...
R语言 | 使用 ComplexHeatmap 绘制热图,分区并给对角线分区加黑边框
目的:画热图,分区,给对角线分区添加黑色边框 建议直接看0和4。 0. 准备数据 # 安装并加载必要的包 #install.packages("ComplexHeatmap") # 如果尚未安装 library(ComplexHeatmap)# 使用 iris 数据集 #data(iris)# 选择数值列&a…...
TensorFlow 简单的二分类神经网络的训练和应用流程
展示了一个简单的二分类神经网络的训练和应用流程。主要步骤包括: 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与部署 加载和应用已训练的模型 1. 数据准备与预处理 在本例中,数据准备是通过两个 Numpy 数…...
蓝桥杯备考:模拟算法之字符串展开
P1098 [NOIP 2007 提高组] 字符串的展开 - 洛谷 | 计算机科学教育新生态 #include <iostream> #include <cctype> #include <algorithm> using namespace std; int p1,p2,p3; string s,ret; void add(char left,char right) {string tmp;for(char ch left1;…...
[创业之路-282]:《产品开发管理-方法.流程.工具 》-1- 优秀研发体系的特征、IPD关注的4个关键要素、IPD体系的7个特点
目录 一、优秀研发体系的特征 二、IPD关注的4个关键要素 1. 组织管理 2. 市场管理 3. 流程管理 4. 产品管理 三、IPD体系的7个特点 1、产品开发是投资行为: 2、基于市场的产品研发: 3、平台化开发,大平台,小产品&#x…...
Node.js 与 PostgreSQL 集成:深入 pg 模块的应用与实践
title: Node.js 与 PostgreSQL 集成:深入 pg 模块的应用与实践 date: 2025/2/5 updated: 2025/2/5 author: cmdragon excerpt: 随着 JavaScript 在服务器端编程中的兴起,Node.js 已成为构建高性能网络应用程序的重要平台。PostgreSQL 则以其强大的特性以及对复杂数据结构的…...
【Uniapp-Vue3】从uniCloud中获取数据
需要先获取数据库对象: let db uniCloud.database(); 获取数据库中数据的方法: db.collection("数据表名称").get(); 所以就可以得到下面的这个模板: let 函数名 async () > { let res await db.collection("数据表名称…...
LeetCode 0090.子集 II:二进制枚举 / 回溯
【LetMeFly】90.子集 II:二进制枚举 / 回溯 力扣题目链接:https://leetcode.cn/problems/subsets-ii/ 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的 子集(幂集)。 解集 不能 …...
Pytest+selenium UI自动化测试实战实例
今天来说说pytest吧,经过几周的时间学习,有收获也有疑惑,总之最后还是搞个小项目出来证明自己的努力不没有白费。 环境准备 1 确保您已经安装了python3.x 2 配置python3pycharmselenium2开发环境 3 安装pytest库pip install p…...
黑马点评 - 商铺类型缓存练习题(Redis List实现)
首先明确返回值是一个 List<ShopType> 类型那么我们修改此函数并在 TypeService 中声明 queryTypeList 方法,并在其实现类中实现此方法 GetMapping("list")public Result queryTypeList() {return typeService.queryTypeList();}实现此方法首先需要…...