![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础学习
文章平均质量分 69
jsl小时光
未来的你一定会感谢现在努力的自己,愿你所有的梦想都能成为现实
展开
-
关于线上问题CPU100%,频繁FullGC排查套路
因为之前在项目中有过类似的经历,最近想总结一些相关的知识点。如果是线上环境,其实我们可以依赖阿里开源的arthas来进行跟踪,。基于常规的情况下,我们在测试环境可以采用原生的一些Java自带的命令和工具进行问题的跟踪和排查。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出 jstack 和内存信息,然后重启系统,尽快保证系统的可用性。原创 2024-02-27 15:56:14 · 1148 阅读 · 0 评论 -
Java的Set集合相关介绍
Set集合,可以去除重复元素。HashSet是基于HashMap实现的,使用组合的方式,并非继承。利用了HashMap的key不重复的特性,而value是一个默认空对象,其他方法也都是使用HashMap实现。LinkedHashSet继承自HashSet,而内部则是采用组合LinkedHashMap的方式实现的。LinkedHashSet在HashSet功能基础上,增加了按照元素插入顺序或者访问顺序的迭代方式,代价是额外增加一倍的存储空间。原创 2023-12-21 16:44:56 · 794 阅读 · 0 评论 -
源码角度简单介绍LinkedList
LinkedList底层是基于双向链表实现的,内部有三个属性,size用来存储元素个数,first指向链表头节点,last指向链表尾节点。// 元素个数// 头节点// 尾节点头尾节点都是由Node节点组成,Node节点表示双向链表,内部结构如下:// 存储元素数据E item;原创 2023-12-12 19:42:51 · 945 阅读 · 0 评论 -
Hdfs梳理
Hdfs的文件自物理上是进行分块存储的,默认大小是128M,不足128M的则本身就是一块。例如一个300M的文件,会被分为3块,然后根据他内部算法将这3块分别放到不同的datanode机器进行存储,单个存储完成后再进行副本的复制,将某一台机器上的block复制到其他另外的节点(复制的数据根据配置的副本数,未配置的话默认就是3)所谓分布式文件系统,就是随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系 统管理的磁盘中,但是不方便管理和维护,需要一种系统来管理多台机器上的文件。原创 2022-10-26 16:31:04 · 1348 阅读 · 1 评论 -
redisson锁的时间轮机制
Redisson是Redis官方推荐的Java版的Redis客户端。它提供的功能非常多,也非常强大,此处我们只用它的分布式锁功能。关于基本的用法不做赘述,简单看一下用法就好https://github.com/redisson/redisson添加redisson的配置和maven依赖<dependency> <groupId>org.redisson</groupId> <artifactId>.原创 2022-03-14 16:20:33 · 3340 阅读 · 0 评论 -
关于springboot访问tomcat,线程http-nio-8080-exec的来源问题
最近在看并发操作时候,例如jmeter进行接口压测(本地自己的springboot2的环境),发现一个有趣的现象,就是关于线程http-nio-8080-exec-1,http-nio-8080-exec-2等等的出现。但是这个线程数不管我的压测数是多少这个线程数不会超过10.抱着好奇的心去搜索了一下相关的文章,但是没有看到比较合适的。然后就只有自己去跟了一下源码。在此自己总结一下。两个问题:1、这个http-nio-8080-exec东西是怎么来的2、为什么这个线程数不超过10把这两个问题其原创 2022-03-12 16:01:33 · 22433 阅读 · 4 评论 -
Redisson连接redis单机和哨兵模式
从图中可以看出redisson对于不同的redis模式给出了不同的配置类MasterSlaveServersConfig SentinelServersConfig SingleServerConfig具体配置application.properties# redisson-single# redisson.address=redis://101.241.71.70:9090# redisson.password=123456# redisson-sentinelr转载 2022-03-10 14:41:39 · 3994 阅读 · 1 评论 -
关于缓存一致性和使用canal来解决的方案
在日常的项目开发中,有时候会遇到一些数据会进行缓存的情况,但同时数据库层面也会做相关的操作。原则上,对于一些实时性要求很高的数据,是不建议缓存的,这个意义是不大的。然后对于某些数据不管是先更新数据库再更新缓存,或者是先删缓存再更新数据库,都是有可能做到数据不一致的。为了达到最终一致性的话,其实大部分场景下,我们给数据加上过期时间就可以解决大部分的日常开发问题。如果对于数据的一致性要求很高,或者某些业务场景下,的确是要做这些事情的话,可以采用以下方案来解决。具体场景可以按照自己的项目结构进行方案一:延原创 2022-03-10 11:30:16 · 2283 阅读 · 0 评论 -
mybatis-plus的介绍和使用
**一、mybatis-plus简介:**Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。在这里的是基于mp3.0版本来进行讲解的,2.0和3.0的使用差不多,只是一些API的名字不同原创 2021-09-09 18:14:08 · 1023 阅读 · 0 评论 -
关于postman更新后历史文件丢失的处理
今天在sign In后,发现之前保存的一些历史测试接口没有了,然后看了一下网上搜索也没有找打很合适的解决办法。然后自己试了一下,亲测可以。首先点击import然后如图,点击upload Files选择文件,然后选择C:\Users{用户名}\AppData\Roaming\Postman路径,在下面会看到很多json文件,这里就是你之前保存过的记录了。然后ctrl+左键选择多个。点击后然后import即可...原创 2021-08-23 17:11:27 · 10574 阅读 · 5 评论 -
spring Retry 相关介绍
什么时候用可以重试远程调用失败的可以重试 参校失败不应该重试 只读操作可以重试 幂等写操作可以重试 非幂等写操作不能重试(重试可能导致脏写,或产生重复数据)无状态(Stateless) 重试 无状态重试,是在一个循环中执行完重试策略,即重试上下文保持在一个线程上下文中,在一次调用中进行完整的重试策略判断。非常简单的情况,如远程调用某个查询方法时是最常见的无状态重试。 远程方法调用的时候不需要设置,因为远程方法调用是没有事务的。 有状态(Stateful) 重试有状态重试转载 2021-06-11 18:14:33 · 766 阅读 · 0 评论 -
关于orika做对象映射
一、Orika背景介绍 Orika是java Bean映射框架,可以实现从一个对象递归拷贝数据至另一个对象。在开发多层应用程序中非常有用。在这些层之间交换数据时,通常为了适应不同API需要转换一个实例至另一个实例。 有很多方法可以实现:硬代码拷贝或Dozer实现bean映射等。总之,需要简化不同层对象之间映射过程。 Orika使用字节码生成器创建开销最小的快速映射,比其他基于反射方式实现(如,Dozer)更快。之前使用Bean Copy 性能非常慢,发现在这个领域业界还是有很多...原创 2021-06-04 11:10:57 · 791 阅读 · 0 评论 -
关于Chrome浏览器安装elasticsearch-head插件
1.下载head包链接:https://pan.baidu.com/s/1buep_OX-E_EavG5GQ9GDFQ提取码:fnqv2.把下载好的 head包,单独减压到一个文件夹中。3.打开chrome,点击右上角的三个小点→更多工具→扩展程序→加载已减压的扩展程序→选择你第二步创建的文件注意不要进入文件内部。4.如图 点击5. 成功————————————————版权声明:本文为CSDN博主「秋风凉~」的原创文章,遵循CC 4.0 BY-SA版权协...原创 2021-04-20 15:26:40 · 481 阅读 · 0 评论 -
关于mysql explain的一些参数解释和用法
因为最近项目有在做mysql数据库相关的项目优化,优化的层面包含了代码结果的优化,SQL语句合理化的优化,以及数据库内存结果分析还有数据SQL语句的优化。大家应该都知道在mysql中的话,MySQL的EXPLAIN命令显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。在此对这个做一个大概的总结。一、通过expalin可以得到1、表的读取顺序2、表的读取操作的操作类型3、哪些索引可以使用4、哪些索引被实际使用5、表之间的...原创 2021-03-26 13:50:33 · 280 阅读 · 0 评论 -
springcloud bus实现动态刷新
1.什么是Bus https://spring.io/projects/spring-cloud-bus springcloudbus使用轻量级消息代理将分布式系统的节点连接起来。然后,可以使用它来广播状态更改(例如配置更改)或其他管理指令。AMQP和Kafka broker实现包含在项目中。或者,在类路径上找到的任何springcloudstream绑定器都可以作为传输使用。 通俗定义: bus称之为springcloud中消息总线,主要用来在微服务系统中实现远端配置更新时通原创 2021-02-19 13:59:16 · 548 阅读 · 0 评论 -
Hystrix 用法及注解用法
Hystrix 用法及注解用法一、hystrix参数使用方法通过注解@HystrixCommand的commandProperties去配置,如下就是hystrix命令超时时间命令执行超时时间,为1000ms和执行是不启用超时@RestControllerpublic class MovieController { @Autowired private RestTemplate restTemplate; @GetMapping("/movie/{id}") @Hystr转载 2021-02-17 14:15:36 · 894 阅读 · 0 评论 -
关于解决后端重复提交的问题
之前在网上看过有很多种解决重复提交的方式,在这里我想做一种特别简单实用的方式,亲测有效。@RestControllerpublic class RedisTestController { @Autowired RedisTemplate redisTemplate; @GetMapping("/getRedisKey") public void getRedisKey()throws Exception{ InetAddress localHost =原创 2021-02-14 22:19:44 · 496 阅读 · 1 评论 -
关于解决Feign传递时缺少请求头信息和参数问题
当服务间用feign进行远程调用的时候。默认会出现缺少相关头信息的问题。例如Token或者cookie信息,因为在调用远程接口时,会进行RequestInterceptor的遍历,但是默认容器中是没有的,所以请求的头信息和请求参数都不会进行传递。我们可以通过实现RequestInterceptor注入容器,将请求相关信息进行传递来实现信息的转发。首先实现RequestInterceptor接口public class FeignBasicAuthRequestInterceptor impleme原创 2021-02-12 11:26:57 · 2102 阅读 · 0 评论 -
redis进行序列化和反序列化
在默认的情况下,springboot2.x整合redis之后,可以进行正常的保存数据了。但是缓存进去的对象类型数据是经过jdk默认序列化过后的,在可视化工具中是类似于乱码的格式,看起来非常不方便,所以需要进行格式化。在此我们可以采用Jackson2的方式来自定义序列化规则。因为在springboot初始化加载的时候,由于AutoConfiguration特性,会在spring容器中注入相关对象。@Configuration(proxyBeanMethods = false)@Conditio原创 2021-02-03 15:18:00 · 2479 阅读 · 0 评论 -
双色球问题的数组实现
//打印双色球的问题public class Test { public static void main(String[] args) { Random ra = new Random(); for(int i = 0; i < 6; i++){ arr[i] = ra.nextInt(33) + 1; //保证生成的号码不能重复,让生成的原创 2017-04-24 10:43:50 · 399 阅读 · 0 评论 -
java this关键字的理解
this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性 public class Demo{ public int x = 10; public void a(){ // 通过 this 点取成员变量 int z = this.x; System.out.println( z原创 2017-04-25 11:42:24 · 211 阅读 · 0 评论 -
实现TreeSet排序和遍历map的方法
TreeSet顾名思义是一种Set接口的实现类,然后它的官方解释如下: public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, Serializable 基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创原创 2017-05-08 18:38:42 · 691 阅读 · 0 评论 -
Eclipse常用快捷键整理
Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+↑ 当前行和上面一行交互位置(同上) Alt+← 前一个编辑的页面 Alt+→ 下一个编辑的页面(当然是针对上转载 2017-04-26 11:41:37 · 887 阅读 · 0 评论 -
RabbitMQ的安装及和springboot的整合
Message Broker与AMQP简介Message Broker是一种消息验证、传输、路由的架构模式,其设计目标主要应用于下面这些场景:消息路由到一个或多个目的地消息转化为其他的表现方式执行消息的聚集、消息的分解,并将结果发送到他们的目的地,然后重新组合相应返回给消息用户调用Web服务来检索数据响应事件或错误使用发布-订阅模式来提供内容或基于主题的消息原创 2017-09-30 15:32:25 · 2018 阅读 · 0 评论 -
关于在spring boot中使用默认的 thymeleaf模板
关于在spring boot中使用默认的 thymeleaf模板 整体步骤: (1) 在pom.xml中引入thymeleaf; (2) 如何关闭thymeleaf缓存 (3) 编写模板文件.html Spring Boot默认就是使用thymeleaf模板引擎的,所以只需要在pom.xml加入依赖即可: [html] v原创 2017-09-13 16:46:56 · 1077 阅读 · 0 评论 -
关于在jaxb中处理null值的问题
今天在业务中遇到这样子的一个问题,然后就想考研分享一下。在生成xml的时候,如果xml对象的属性为null时,则最后的xml形式是为000010 其中的属性会被隐藏,但是我们要显示的时候,就可以将其null改变为” “形式的空字符串。 在这里我是用的设置监听的方式,并不需要去改原始的pojo类或者加什么注解之类,我觉得那样子反而要改动很多的东西,具体代码如下: 我是采用的内部类的方式, c...原创 2018-05-30 18:58:00 · 9366 阅读 · 0 评论 -
Java堆栈的关系理解
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-04-24 23:23:13 · 422 阅读 · 0 评论