Java
文章平均质量分 63
局外人Inside
这个作者很懒,什么都没留下…
展开
-
feign远程调用原理
feign是springCloud全家桶中的远程调用组件,其底层主要依赖于Java的动态代理机制,然后基于http client进行http请求,同时它还能配合其它组件实现Loadbalance(负载均衡)、Hystrix(熔断)、fallback(降级)等功能。原创 2023-05-02 13:38:00 · 2774 阅读 · 1 评论 -
线上CPU飚增排查思路
线上是我们最敬畏、也是出问题最难排查的环境,比较常见的一个问题就是线上服务器CPU使用率突然飚增,导致机器频繁预警,常见的CPU使用率飚增原因有以下这些:这个时候就需要上服务器排查一下了,整理了一下简单的排查步骤:原创 2023-04-23 18:48:40 · 367 阅读 · 0 评论 -
集合对象去重工具
【代码】集合对象去重工具。原创 2023-04-23 18:25:32 · 117 阅读 · 0 评论 -
mybatis配置文件详解
mybatis框架本身其实只有一个配置文件,及mybatis-config.xml,只是这个配置文件中有一个属性mappers(映射器),可能会包含大量的SQL映射文件,所以通常会单独扩展,形成一个个单独的xxxMapper.xml映射文件。自定义别名可以直接设置,如下,在使用com.it.learn.Author的地方可以直接使用别名Author但当某个项目中特别多java类需要设置别名时,可以直接指定包名扫描,如下,每个在com.it.learn包中的Java类,都可以使用首字母小写的名称来作为别名。原创 2023-04-23 17:33:21 · 4715 阅读 · 0 评论 -
日期工具类
日期工具类原创 2022-10-12 23:34:12 · 165 阅读 · 0 评论 -
接口性能排查之线程池
接口性能排查之线程池原创 2022-10-12 23:27:09 · 266 阅读 · 0 评论 -
NIO简易示例
NIO简易示例原创 2022-07-20 14:28:45 · 622 阅读 · 0 评论 -
通用线程池工具类
常用线程池工具类原创 2022-07-07 10:14:06 · 345 阅读 · 0 评论 -
数组及集合常量定义
数组常量和集合常量原创 2022-07-07 10:06:50 · 897 阅读 · 0 评论 -
线程池常见面试题
一、请说出线程池的工作原理答:常见流程如下:提交任务后,先判断当前池中线程数是否小于 corePoolSize,如果小于,则创建新线程执行这个任务。 否则,判断线程池任务队列是否已满,如果没有满,则添加任务到任务队列。 否则,判断当前池中线程数是否大于 maximumPoolSize,如果大于则执行预设拒绝策略。 否则,创建一个线程执行该任务,直至线程数达到maximumPoolSize,达到后执行预设拒绝策略。 注意:其实按照上面流程回答已经差不多了,但是jdk1.6之后对流...原创 2022-05-16 17:13:57 · 1551 阅读 · 0 评论 -
nacos学习----day01
目录一、nacos简介二、nacos设计2.1 nacos总体架构设计2.2 nacos内核设计一、nacos简介Nacos 是 Dynamic Naming and Configuration Service 的首字母简称;⼀个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。引用官网简介:Nacos 致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮...原创 2022-05-06 15:14:24 · 266 阅读 · 0 评论 -
面试官:看你简历上写了熟悉JVM垃圾回收机制,那说说你了解的GC
目录1. 介绍一下垃圾回收机制:2. GC完整流程知道吗?介绍一下3. GC的四种算法有过了解吗?介绍一下4. 请介绍一下常用的几款垃圾回收器1. 介绍一下垃圾回收机制:当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(GenerationalCollection)的理论进行设计,分代收集名为理论,实质是一套符合大多 数程序运行实际情况的经验法则,它建立在两个分代假说之上: 1)弱分代假说(Weak Generational Hypo...原创 2022-03-09 14:51:25 · 472 阅读 · 0 评论 -
八股文之JVM
1. 运行时数据区中包含哪些区域?哪些线程共享?哪些线程独享?Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK 1.8 和之前的版本略有不同JDK1.8之前:JDK1.8:线程私有的:程序计数器虚拟机栈本地方法栈线程共享的:堆方法区直接内存 (非运行时数据区的一部分)1.1 程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指原创 2022-03-09 14:34:37 · 178 阅读 · 0 评论 -
Java阻塞队列
一、基本定义阻塞队列的顶级接口是BlockingQueue,它实现了Queue这个接口,官方对它的解释是:一个队列,它还支持在检索元素时等待队列变为非空,并在存储元素时等待队列中的空间变为可用的操作,典型的应用场景有生产者-消费者、线程池和消息中间件等。BlockingQueue 为元素的操作有四种形式,用不同的方式处理不能立即满足,但可能在未来某个时间点满足的操作:抛出异常,当阻塞队列满时,再向队列中add添加元素会抛出IllegalStateException...原创 2022-03-07 14:57:09 · 364 阅读 · 0 评论 -
一次生产接口调用过慢问题排查
问题:前几天用户使用线上环境突然发现查看详情时,有些记录load接口调用了10s或者20s,但是有的数据又很快。解决历程:由于该接口代码较老,里面调用了很多逻辑,所以当时第一时间想的就是将生产数据导了一份到本地进行调试,结果发现本地只要2s,便让运维人员去查了一下服务器的内存情况,发现服务器内存已经严重不足,所以就直接判定为是服务器自身内存不足的原因,决定先做一下服务迁移再测试。等到服务迁移完后再试发现还是很慢,于是拿了一条调用速度很快和一条很慢的数据做对比,最终...原创 2022-03-04 11:57:29 · 824 阅读 · 0 评论 -
@Configuration注解加载过程
@Configuration注解加载过程一、注解加载过程分析启动类调用main方法,其中调用SpringApplicationBuilder的run方法public static void main(String[] args) { new SpringApplicationBuilder(ElawApplication.class).web(true).run(args);}run方法中使用AtomicBoolean running标志来记录是否已经在启动中,若未启动则进入同步代码原创 2022-01-05 00:08:50 · 3474 阅读 · 0 评论 -
spring内置工具类
断言1、断言是一个逻辑判断,用于检查不应该发生的情况2、Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启3、SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查// 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行// 参数 message 参数用于定制异常信息。void notNull(Object object, String message)// 要求参数必须空(Null),原创 2021-12-31 14:57:35 · 1348 阅读 · 0 评论 -
Jvm学习day01
1. 运行时数据区中包含哪些区域?哪些线程共享?哪些线程独享? Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK 1.8 和之前的版本略有不同 JDK1.8之前:JDK1.8:线程私有的: 程序计数器 虚拟机栈 本地方法栈线程共享的: 堆 方法区 直接内存 (非运行时数据区的一部分)1.1 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作原创 2021-12-30 21:54:04 · 513 阅读 · 0 评论 -
Java整合腾讯云短信发送
1. 引入相关maven依赖<dependency> <groupId>com.github.qcloudsms</groupId> <artifactId>qcloudsms</artifactId> <version>1.0.6</version></dependency><dependency> <groupId>com.qcloud</groupId&原创 2021-12-30 14:11:38 · 1561 阅读 · 1 评论 -
SSL请求trustStore的两种注册方式
一个web应用如果需要提供以https的方式访问的服务的话,我们需要一个数字证书,这个证书的配置是在apache的配置文件或者其他web容器的配置文件中进行配置的。当然这个可以保存在keystore中。我们自己的应用中通常所说的keystore或者truststore主要是针对于应用本身的需求来的。keystore和truststore从其文件格式来看其实是一个东西,只是为了方便管理将其分开,keystore中一般保存的是我们的私钥,用来加解密或者为别人做签名,而truststore里存放的...原创 2021-12-28 23:40:35 · 1142 阅读 · 0 评论 -
Java线程池
目录1 线程池的优势2 线程池的参数3 线程池工作原理4 线程池拒绝策略(均实现了RejectedExecutionHandler)5 线程池(固定数的/单一的/可变的 JDK已提供)6 线程池配置规则1 线程池的优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放进队列,然后在线程创建后启动这些任务,如果任务数量超出了最大数量,超出数量的任务排队等候,等其它线程执行完毕,再从队列中取出任务来执行。线程池的主要特点:线程复用;控制并发数;管理线程。优点原创 2021-12-28 21:20:25 · 77 阅读 · 0 评论 -
Java阻塞队列
1. 常见阻塞队列1)ArrayBlockingQueue:是一个基于数组结构的有界阻塞队列,此队列按照FIFO(先进先出)的原则对元素进行排序;2)LinkedBlockingQueue:一个基于链表结构的有界(大小默认值为Integer.MAX_VALUE)阻塞队列,此队列按照FIFO(先进先出)的原则对元素进行排序,吞吐量通常要高于ArrayBlockingQueue。3)SynchronousQueue:一个不存储元素的阻塞队列,每个插入操作必须等到另外一个线程调用移除操作,否则插入操作原创 2021-12-28 21:16:13 · 358 阅读 · 0 评论