JAVA基础
rlk512974883
这个作者很懒,什么都没留下…
展开
-
POI解析word\pdf中表格
【代码】POI解析word\pdf中表格。原创 2022-10-10 14:11:35 · 1208 阅读 · 0 评论 -
深入理解RocketMQ延迟消息
深入理解RocketMQ延迟消息_码上得天下的博客-CSDN博客_rocketmq延迟消息时间轮原创 2022-04-19 11:15:19 · 374 阅读 · 0 评论 -
Spring AOP的两种代理方式
Spring AOP主要有两种代理方式:1.JDK动态代理 2.cglib代理1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换注:JDK动态代理要比cglib代理执行速度快,但性能不如cglib好。所以在选择用哪种代理还是要看具体情况,一般单例模式用cglib比较好,具体原因请自行百度。...原创 2022-02-10 10:00:53 · 1150 阅读 · 0 评论 -
屏蔽表情符-java
<!-- 表情符 --><dependency> <groupId>com.vdurmont</groupId> <artifactId>emoji-java</artifactId> <version>5.1.1</version></dependency>EmojiParser.removeAllEmojis(str)原创 2021-03-31 16:45:51 · 217 阅读 · 0 评论 -
幂等性保证
幂等性的保证:1.普通加锁,单机可用,分布式时不可用2.悲观锁,通过for update进行查询,再去做更改3.乐观锁,先查询再通过状态进行修改,看修改返回的数量来判断是否修改成功4.唯一约束表5.分布式锁...原创 2021-03-11 14:07:09 · 81 阅读 · 0 评论 -
监听binlog的实现方式---java
引入依赖:<dependency> <groupId>com.github.shyiko</groupId> <artifactId>mysql-binlog-connector-java</artifactId> <version>0.21.0</version></dependency>配置连接:BinaryLogClient logClient = new Bina原创 2020-11-19 09:50:06 · 1142 阅读 · 0 评论 -
redis分布式锁实现
非springBoot应用时的处理方式:1.一般会自己引入jedis的包,通过jedis.setnx() + expire() + finally 去实现,但是会有问题,无法保证原子操作。2.通过redis对lua脚本的支持,通过redis.call()进行多语句的原子操作,如果是java端进行编写的话,再通过eval()对lua脚本进行解析并执行。代码如下:private static final Long lockReleaseOK = 1L;static String luaSc.原创 2020-10-28 19:28:47 · 194 阅读 · 0 评论 -
redis的五大基础类型及使用场景
1、stringredis的String类型到底存的是什么?redis的存储是二进制安全的,不管什么类型的数据,都会转换成二进制数字节组进行存储,当取数据时,取出来的也是二进制字节数组,然后在客户端对数组进行转换。数据的长度是字节长多,如:k1:99,长度就是2,k2:a,的长度就是1.一个中文字符占用3个字节(编码为utf-8时),如果编码为GBK时,一个中文占2个字节。redis对字符串数字类型进行递增操作时,首先会识别出这个value是数字类型,然后进行数值的操作,同样,存储结构也是字原创 2020-10-27 17:12:33 · 459 阅读 · 0 评论 -
redis的特点
redis是基于内存的(k,v形式)、单线程的(这个单线程说的是工作线程)、io模型(epoll、poll、selector----多路复用器)、valua是有类型的(五大类型)同时它具有本地方法----计算向数据移动。注:redis也有说是多线程的,这个多线程说的是他的IO,IO是多线程的。redis使用多路复用器并不是可以决定精准的去读谁,它只是反映多路复用器和redis之间的IO事件,也就是说那些IO可以读写了。(包括nginx、netty使用多路复用器都是这种原理)red..原创 2020-10-26 19:40:04 · 300 阅读 · 0 评论 -
布隆过滤器的实现原理
布隆过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某 个对象是否存在时,它可能会误判。但是布隆过滤器也不是特别不精确,只要参数设置的合 理,它的精确度可以控制的相对足够精确,只会有小小的误判概率。 当布隆过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存 在。打个比方,当它说不认识你时,肯定就不认识;当它说见过你时,可能根本就没见过 面,不过因为你的脸跟它认识的人中某脸比较相似 (某些熟脸的系数组合),所以误判以前...原创 2020-10-26 14:59:44 · 170 阅读 · 0 评论 -
redis穿透、击穿、雪崩产生的原因及解决方案
穿透:redis穿透是因为数据在redis中没有而去频繁的访问数据库,这是黑客入侵的一种方式。其实穿透分为两种:一、key相同key相同的情况很好解决,只需将这个key缓存到redis,value用null表示即可二、key不同key不同的情况下可以通过布隆过滤器,将数据库中数据进行标注,只有当过滤器中为1时,才去请求数据库,虽说有一定的错误率(这是根据布隆过滤器的特点决定的)但已经大大降低了请求数据库的频次。击穿:击穿是因为缓存中有一条数据,当有大量请求时,此缓存失效了(比如:原创 2020-10-26 14:20:29 · 478 阅读 · 0 评论 -
什么是时间片
时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。...原创 2020-10-22 16:22:19 · 5199 阅读 · 2 评论 -
HashMap流程图
原创 2020-10-22 16:16:33 · 761 阅读 · 0 评论 -
深入分析AQS实现原理
https://segmentfault.com/a/1190000017372067转载 2020-10-14 19:04:55 · 130 阅读 · 0 评论 -
Redis的事物不能保证原子性
一、我们redis数据库中,事务回事什么样子的呢?首先我们给出一个定义:redis的事务中,一次执行多条命令,本质是一组命令的集合,一个事务中所有的命令将被序列化,即按顺序执行而不会被其他命令插入在redis中,事务的作用就是在一个队列中一次性、顺序性、排他性的执行一系列的命令。事务的生命周期:1. 事务的创建:使用MULTI开启一个事务2. 加入队列:在开启事务的时候,每次操作的命令将会被插入到一个队列中,同时这个命令并不会被真的执行3. EXEC命令进行提交事务常用的关于事务原创 2020-09-01 09:54:28 · 1061 阅读 · 0 评论 -
Rocketmq原理
https://www.jianshu.com/p/2838890f3284转载 2020-08-11 14:23:13 · 117 阅读 · 0 评论 -
Threadlocal
https://blog.csdn.net/Geffin/article/details/104747778转载 2020-08-11 10:56:55 · 113 阅读 · 0 评论 -
类加载器及双亲委派,打破双亲委派
类加载器(classloader)先从类加载器说起,凡事先问是什么,首先什么是类加载器?我们知道,一个 *.java 的代码源文件要执行起来之前,必须通过 javac 构建抽象语法树并编译成字节码,字节码仍然是不能被机器所识别,那么一个 .class 文件要被机器识别并执行的前提就是将字节码转化成机器码加载到内存里,这一转化过程就是类加载的执行过程。当然,这整个过程细节并非这个问题的讨论重点。类加载器便是在在这个过程里的加载阶段起作用,负责将 .class 文件字节码提取...原创 2020-08-11 09:51:36 · 217 阅读 · 0 评论 -
四种引用类型
四种引用类型强引用:强引用又称‘普通引用’,如:T t = new T();这种引用类型永远都不会被回收。软引用:SoftReference<T> m = new SoftReference<>(new T());此种引用只有在内存不足的情况下回收,一般用于缓存对象、图片等对象,用完一次就不用的场景。弱引用:WeakReference<T> m = new WeakReference<>(new T());弱引用在调用 ..原创 2020-06-10 09:32:52 · 718 阅读 · 0 评论 -
JOL工具分析java对象信息
https://www.jianshu.com/p/6d62c3ee48d0转载 2020-04-13 14:55:51 · 507 阅读 · 0 评论 -
CPU飙高原因及解决方案
一、CPU飙高原因: 1.大量中断 中断分为软中断(软中断是一种需要内核为正在运行的进行去做一些事情的请求)和硬中断(外部引起的) 2.系统负载高 负载高表示有很多程序等待调度运行,它会导致上下文切换频繁 3.上下文切换频繁二、排查 1.top命令查看占用CPU的pid ...原创 2020-04-13 11:19:41 · 9151 阅读 · 1 评论 -
idea 中出现Authentication failed for的问题
git config --system --unset credential.helper 输入之后在idea上就可以正常弹出用户名密码验证了原创 2020-02-10 11:31:28 · 2191 阅读 · 0 评论 -
手写分页
Integer pageSize = PAGE_SIZE;long totalPage = (total + pageSize - 1) / pageSize;for (int page = 1; page <= totalPage; page++) { Integer startLimit = (page - 1) * pageSize; mapper.selectF...原创 2020-01-15 10:04:30 · 141 阅读 · 0 评论 -
Redis-Cell 漏斗限流的使用
(1)下载安装包https://github.com/brandur/redis-cell/releases(2)解压到某个目录(3)进入redis-cli,执行命令moduleload/aaa/bbb/libredis_cell.so这是临时的办法,重启redis就没了(4)想永久的,需要这样$redis-server--loadmodule/aaa/bbb/libred...原创 2020-01-10 17:46:50 · 1081 阅读 · 0 评论 -
Spring Boot 使用AOP
https://blog.csdn.net/qq_33576276/article/details/88786090原创 2019-12-24 17:41:54 · 90 阅读 · 0 评论 -
CountDownLatch实现原理及使用
https://blog.csdn.net/lovezhaohaimig/article/details/88815874原创 2019-12-24 17:39:17 · 147 阅读 · 0 评论 -
@Transactional 注解的使用和注意事项
https://www.cnblogs.com/jpfss/p/11152264.html原创 2019-12-20 11:38:57 · 274 阅读 · 0 评论 -
为什么volatile不能保证原子性而Atomic可以
在Java中long赋值不是原子操作,因为先写32位,再写后32位,分两步操作,而AtomicLong赋值是原子操作,为什么?为什么volatile能替代简单的锁,却不能保证原子性?这里面涉及volatile,是java中的一个我觉得这个词在Java规范中从未被解释清楚的神奇关键词,在Sun的JDK官方文档是这样形容volatile的:The Java programming language...原创 2019-11-06 09:19:36 · 100 阅读 · 0 评论 -
浅谈HTTPS和HTTP有什么区别
在上网获取信息的过程中,我们接触最多的信息加密传输方式也莫过于HTTPS了。每当访问一个站点,浏览器的地址栏中出现绿色图标时,意味着该站点支持HTTPS信息传输方式。HTTPS是我们常见的HTTP协议与某个加密协议的混合体,也就是HTTP+S。这个S可以是TLS(安全传输层协议)、也可以是SSL(安全套接层),不过我更认可另一个抽象概括的说法,HTTP+Security。 首先,HTTPS并...原创 2019-11-05 17:32:50 · 98 阅读 · 0 评论 -
HashMap死锁原因分析及原理
一、HashMap原理1.HashMap的本质就是数组和链表。table是一个entry数组,每一个数组元素保存一个Entry节点,而Entry节点内部又连接着同样key的下一个Entry节点,就构成了链表。.详情见 HashMap源码分析2.HashMap死锁原因:HashMap会造成死锁,因为HashMap是线程非安全的,多并发的情况容易造成死锁,若要高并发推荐使用Concurren...原创 2019-11-05 14:42:16 · 8906 阅读 · 0 评论 -
Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为Ar...原创 2019-11-04 16:18:00 · 174 阅读 · 0 评论 -
数据分页实现
private List<RebateDto> getPageDate(List<RebateDto> datas, Integer curPage, Integer pageSize) { List <RebateDto> currentPageList = new ArrayList<>(); if (datas != null...原创 2019-11-03 17:26:10 · 192 阅读 · 0 评论 -
windows下使用redis requirepass认证不起作用的解决方法
因为windows下面使用redis 有两个配置文件 分别是 redis.windows.conf和 redis.windows-service.conf 由于启动时候没有指定配置文件所以我们需要指定配置文件1、设置密码,网上有很多,两种方案,第一种是命令行,第二种是修改安装目录下的redis.windows.conf配置文件, 找到 # requirepass foobared,去掉注释,变...原创 2019-10-22 17:12:32 · 757 阅读 · 0 评论 -
@JsonIgnorePropertise 注解
@JsonIgnorePropertise(ignoreUnknow=true)一般使用在实体类上,表示忽略未知字段原创 2018-09-11 11:24:25 · 251 阅读 · 0 评论 -
rabbitmq和redis用作消息队列的区别
将redis发布订阅模式用做消息队列和rabbitmq的区别:可靠性redis :没有相应的机制保证消息的可靠消费,如果发布者发布一条消息,而没有对应的订阅者的话,这条消息将丢失,不会存在内存中;rabbitmq:具有消息消费确认机制,如果发布一条消息,还没有消费者消费该队列,那么这条消息将一直存放在队列中,直到有消费者消费了该条消息,以此可以保证消息的可靠消费;实时性re...原创 2019-09-26 18:11:21 · 177 阅读 · 0 评论 -
使用Redis SETNX 命令实现分布式锁”
使用Redis的 SETNX 命令可以实现分布式锁,本文介绍其实现方法。直接进入正题,现在分布式的应用场景很多,为了保持数据的一致性,经常碰到需要对资源加锁的情形。 利用redis来实现分布式锁就是其中的一种实现方案。SETNX命令简介命令格式SETNX key value1将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX...原创 2019-09-26 17:10:18 · 145 阅读 · 0 评论 -
ThreadLocal(应用场景及使用方式及原理)
https://www.cnblogs.com/yxysuanfa/p/7125761.html原创 2019-09-20 09:52:45 · 398 阅读 · 0 评论 -
NameValuePair的用法
定义了一个list,该list的数据类型是NameValuePair(简单名称值对节点类型),这个代码多处用于Java像url发送Post请求。在发送post请求时用该list来存放参数。发送请求的大致过程如下:String url="http://www.baidu.com";HttpPost httppost=new HttpPost(url); //建立HttpPost对象List<N...转载 2018-07-05 16:40:01 · 17232 阅读 · 0 评论 -
GB 2312 编码
《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,1981年5月1日开始实施的一套国家标准,标准号是GB 2312—1980。GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。基本集共收入汉字6763个和非汉字图形字符682个。整个字符集分成94个区,每区有94个位。每个...转载 2018-07-05 15:50:23 · 1618 阅读 · 0 评论 -
FastDFS 简介
整合FastDFS:https://blog.csdn.net/qq_756589808/article/details/82882589FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网...转载 2018-07-05 15:35:36 · 149 阅读 · 0 评论