JAVA面试题之三—Mysql索引了解嘛?怎么优化查询效率?

Hash只支持单条数据的查询。很多时候我们需要更复杂的操作。BTree[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MKL6rIB9-1595459675581)(8B3F0F034EF54F4D81405D839B2958FB)]特点不再是二叉搜索,而是N叉搜索,树的高度会降低,查询快叶子节点,非叶子节点,都可以存储数据,且可以存储多个数据通过中序遍历,可以访问树上所有节点设计逻辑内存读写快,磁盘读写慢,而且慢很多磁盘预读:磁盘读写并不是按需读取,
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

JAVA面试题之四——Redis 中的缓存清空策略 LRU 说一下?

LRU 是一种缓存淘汰策略。常见的策略有三种:先进先出策略 FIFO(First In,First Out)、最少使用策略 LFU(Least Frequently Used)、最近最少使用策略 LRU(Least Recently Used)方案一:使用链表实现 LRU思路是这样的:维护一个有序单链表,越靠近链表尾部的结点是越早之前访问的。当有一个新的数据被访问时,我们从链表头开始顺序遍历链表。如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据对应的结点,并将其从原来的位置删除,然后再插
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

JAVA面试题之五——消息队列对比,RabbitMQ还是Kafka?

MQ 的应用场景:第一个应用就是商品秒杀以及产品抢购等使用场景使用 MQ 实现消息通讯,实现实时通讯功能使用 MQ 实现日志系统常用的 MQ 中间件有 RabbitMQ、Kafka 和 Redis 等,其中 Redis 属于轻量级的消息队列,而 RabbitMQ、Kafka 属于比较成熟且比较稳定和高效的 MQ 中间件MQ 的特点:先进先出发布、订阅工作模式持久化分布式消息确认引入 MQ 系统会带来的问题增加了系统的运行风险。如果 MQ 系统挂掉的话可能会导致整个业务系统瘫
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

JAVA面试题之六—讲一下GC的过程

讲一下GC的过程(中信银行一面、美团外卖一面、58用户平台一面、轻松集团)年轻代垃圾回收,引起老年代内存不足,最终引起FullGC。JDK1.8之后,Java官方的HotSpot JVM去掉了永久代,取而代之的是元数据区Metaspace。Metaspace使用的是本地内存,而不是堆内存,也就是说在默认情况下Metaspace的大小只与本地内存的大小有关。因此JDK1.8之后,就见不到java.lang.OutOfMemoryError: PermGen space这种由于永久代空间不足导致的内存溢出的
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

JAVA面试题之七—线程池的工作原理和7个参数

线程池的工作原理和7个参数(京东物流、美团充电宝一面、中信银行一面、美团外卖一面、58用户平台一面、轻松集团)7个参数corePoolSize:线程池核心线程数量maximumPoolSize:线程池最大线程数量keepAliverTime:当活跃线程数大于核心线程数时,空闲的多余线程最大存活时间unit:存活时间的单位workQueue:存放任务的队列threadFactory:创建线程的工厂handler:超出线程范围和队列容量的任务的处理程序每个值为什么这么设置?工作原理例子
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

JAVA面试之八—常见面试题

JVM1、JVM内存模型;2、讲一下GC的过程?3、怎么判断对象是否是垃圾?4、讲一下你常用的垃圾回收器;5、G1垃圾回收器和CMS有什么区别?有什么优点?6、你们用的什么垃圾回收器?调整过哪些参数?7、CMS垃圾回收器原理,什么时候触发垃圾回收?8、JMM java内存模型了解嘛?9、年轻代垃圾回收的步骤?10、什么情况下年轻代对象会上升到老年代?多线程1、你们的线程池的参数都是什么?为什么这么设计?2、线程池的工作原理和7个参数;3、synchronized在JDK1.6中升
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

JAVA面试之九—@Autowired和@Resource注解有什么区别?

面试可能会问到这样一个问题:@Autowired和@Resource两个注解有什么区别?1、@Autowired 默认以类型(类)进行区分,@Resource 默认以name进行区分。工作中的例子:有两个比较相似的mapper,一个FallLogMapper,另外一个LogMapper,为了简便,把第一个变量命名为logMapper(这里只是举例,正常可能类名字表长,所以会简写),第二个,变量名字也是logMapper。这样的话,如果按照名字来看,两个Mapper对应的变量名字是一样的了。如果使用 @Re
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

Spring Boot读取yml或者properties配置数据

1 使用@Value注解一般用于 非static@Value 注解即可获取。增加注解@RefreshScope,可以使得配置实时生效(实践使用nacos做配置中心的时候)@Configuration@RefreshScopepublic class InquiryConfig { @Value("${prepared.template.filepath}") private String templateFilePath;} static也可以使用@Value,使用
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

mysql索引下推(ICP)例子

1、索引下推是mysql5.6(包括)之后的优化策略。2、是否设置了索引下推,explain执行计划查看到了 rows 行数应该是一致的。因为索引下推只是减少了回表的次数。打开索引下推。set optimizer_switch='index_condition_pushdown=on';关闭索引下推set optimizer_switch='index_condition_pushdown=off';查看索引下推的设置状态show VARIABLES like '%optimizer_s
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

nacos源码-怎么更新配置

界面操作更新nacos配置,然后使用charles抓包工具,抓到请求http://ip:port/nacos/v1/cs/configs?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTE2Nzc5N30.NNcnIivPaMxj3me9FfKY2VHaWnJNVA6GganyWenR6NU下载源码https://github.com/alibaba/nacos找到请求:nacos/v1/cs/configs
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

springboot-mybatis中xml怎么写

建表语句CREATE TABLE `tuser` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `id_card` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL, `name` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL, `age` int(11) DEFAULT NULL, `ismale` tinyint(1) DEFAULT NULL, PRIM
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

CompletableFuture源码分析以及例子实证

CompletableFuture介绍默认情况下 CompletableFuture 会使用公共的 ForkJoinPool 线程池,这个线程池默认创建的线程数是 CPU 的核数(也可以通过 JVM option:-Djava.util.concurrent.ForkJoinPool.common.parallelism 来设置 ForkJoinPool 线程池的线程数)。但是也不一定就使用ForkJoinPool,要看(cpu的核数-1)是否大于1,如果大于1,使用过 ForkJoinPool,否
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

JAVA提交异步任务的三种方式

方法一:CompletableFutureCompletableFuture<List<CmsContentExtDO>> userListFuture = CompletableFuture.supplyAsync(()-> userMapper.selectByIds(ids));方法二:注解Async@Asynchttps://www.cnblogs.com/jpfss/p/10273129.html方法三:线程池创建全局线
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

JAVA获取线程执行结果的几种方式

获取线程执行结果的几种方式1、Callable 线程public class FetchAdTask implements Callable<Ad> { @Override public Ad call() throws Exception { System.out.println("fetch task"); sleep(1000L); return null; }}2、使用Future,包括 FutureTa
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

JDK提供的线程同步的四个工具类

同步工具类可以是任何一个对象。阻塞队列可以用作同步工具类。生产者现场往队列中存入任务,消费者线程从阻塞队列中获取任务。可以在某种程度上对生产者线程和消费者线程进行解偶。存入任务和获取任务速率不一致的时候,不会导致效率下降。其他的同步工具类包括:信号量(Semaphore)、栅栏(Barrier、CyclicBarrier)、FutureTask以及闭锁(Latch、CountDownLatch)。信号量 SemaphoreSemaphore 可以用来控制某些访问资源的操作数量,可以用作限流器,可以
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

并发编程常见面试题以及答案

1、现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行?考察 Thread.join,还有其他concurrent包下工具类的了解。方法一:可以使用 join 方法实现等待;方法二:可以使用 CompletableFuture 的 thenCombine 方法public class TestOrder { public static void main(String[] args) { Thread thread1
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

git删除敏感文件或者大文件

使用场景1、以前项目中上传了比较大的jar包,使项目比较大,主要是 .git/objects/pack/ 目录下;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1gHtMdgK-1616042587575)(http://note.youdao.com/yws/res/43079/95DD286A4B1F4BCC863AFA7EA783A6A2)]2、上传了敏感信息,比如说数据库密码到git上,需要删除,除了删库的另外一种解决方案方式一:BFG下载BFG:https
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

GC日志分析工具网站

https://gceasy.io/gc-index.jsp可以通过上传文件,也可以通过直接复制粘贴日志,进行分析。堆分配,各个区域大小GC停顿时间GC过程分析GC次数、GC时间统计值,最大值、最小值
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

github阅读代码神器

github看代码三境界纯小白一个一个目录点击进阶版本通过google插件,octree神器版本修改https://github.com/prepared48/Java-learning地址为https://github1s.com/prepared48/Java-learning
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0

使用idea打包springcloud项目并部署到tomcat下

说明:有三个项目,一个提供 eureka 服务——ehl-eureka-server1,一个数据接口服务——apps-is,一个web服务-appsweb使用 idea 打成 war 包:build->build artifacts-->选择 all 或者选择单个在工作空间下找到 war 包,比如:E:\workspace-mars\mps\mps-apps-is\ta...
分类: 其他 发布时间: 04-05 10:32 阅读次数: 0