![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 67
菜鸟张工
这个作者很懒,什么都没留下…
展开
-
3个线程交替打印ABC
package com.interview;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ABC { private static final int COUNT = 20 * 3;//20是每个字母输出20遍 private static int state = 1; // 3是有3个字母交替输出,COUN原创 2021-03-20 12:23:41 · 472 阅读 · 1 评论 -
redis限制指定时间登录指定次数
package com.zxl.redis.rediscode; import redis.clients.jedis.Jedis; import java.util.List; /** - @author xiaoliang - @date 2020/5/12 21:30 - @since V1.0 */ public class LoginValidate { ...转载 2021-03-16 16:23:34 · 443 阅读 · 0 评论 -
pageHelper使用及原理源码
pageHelper分页插件原理一: 使用篇pom中引入 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.0</version> </dependency>mybatis-config.xml原创 2021-01-26 20:14:55 · 535 阅读 · 1 评论 -
DelayQueue是什么
一、DelayQueue是什么DelayQueue是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。二、DelayQueue能做什么1. 淘宝订单业务:下单之后如果三十分钟之内没有付款就自动取消订单。 2. 饿了吗订餐通知:下单成功后60s之后给用户发送短信通知。3.关闭空闲连接。服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。原创 2021-01-19 19:15:57 · 156 阅读 · 0 评论 -
序列化的几种方式及区别
序列化的几种方式什么是序列化?内存中的数据对象只有转换为二进制流才可以进行数据持久化和网络传输。将数据对象转换为二进制流的过程称为对象的序列化(Serialization)。反之,将二进制流恢复为数据对象的过程称为反序列化(Deserialization)。序列化需要保留充分的信息以恢复数据对象,但是为了节约存储空间和网络带宽,序列化后的二进制流又要尽可能小。序列化常见的使用场景是RPC框架的数据传输。常见的序列化方式有三种:1.Java原生序列化Java类通过实现Serializable接口来实现原创 2021-01-17 17:02:43 · 4793 阅读 · 0 评论 -
nginx的安装和nginx的几个作用
nginx的安装和nginx的几个作用1.centerOs7上安装nginx1.1 下载// 要把ningx下载到linux下的哪目录cd /usr/local/soft // 下载wget http://nginx.org/download/nginx-1.18.0.tar.gz1.2 解压tar -xzvf nginx-1.18.0.tar.gz1.3 安装依赖环境 gcc环境:基本运行环境 pcre:用于nginx的http模块解析正则表达式 zlib:用户进行原创 2021-01-17 16:57:16 · 390 阅读 · 0 评论 -
ReentrantLocak源码分析
ReentrantLock重入锁的源码分析1.基本使用 创建锁对象static Lock lock=new ReentrantLock();// 构造方法传入true参数即为公平锁,后面会分析源码为什么加入true就为公平锁,及公平锁和非公平锁的区别在哪,什么是非公平锁,什么是公平锁。static Lock fairLock=new ReentrantLock(true);public static void inc(){ lock.lock(); //获得锁(互斥锁) ThreadA原创 2021-01-09 14:36:37 · 129 阅读 · 0 评论 -
mybatis foreach in 查询超过1000条解决办法
mybatis foreach in 查询超过1000条解决办法mybaits 中的foreach in的查询时候,上限in的个数是1000个,如超过1000怎么办呢?下面介绍两种办法,一是从java代码层面,分批查询,1000个是一批,循环查。最终把结果统计在一起。而是 从sql层面分组查,1000个查一次,利用mybatis的if标签来手动拼接一段sql解决问题。1.java层面// 1. 装有最终查询总数据条数的集合List<xxxxDTO> allMxDTOList = ne原创 2020-12-18 20:38:55 · 12042 阅读 · 4 评论 -
动态代理之谜底揭晓
动态代理之谜底揭晓动态代理分为JDK以及CGlib两种,前者是JDK的后者是第三方的。一:简谈两者区别之处? //JDK是采用读取接口的信息(生成的代理类是implement实现了被代理类的接口,从而拥有了接口所有 的方法。而cglib是继承了被代理的类,不是接口。) //CGLib覆盖父类方法 //目的:都是生成一个新的类,去实现增强代码逻辑的功能 //JDK Proxy 对于用户而言,必须要有一个接口实现,目标类相原创 2020-12-13 17:16:12 · 95 阅读 · 0 评论 -
动态代理之谜底揭晓
动态代理之谜底揭晓动态代理分为JDK以及CGlib两种,前者是JDK的后者是第三方的。一:简谈两者区别之处? //JDK是采用读取接口的信息 //CGLib覆盖父类方法 //目的:都是生成一个新的类,去实现增强代码逻辑的功能 //JDK Proxy 对于用户而言,必须要有一个接口实现,目标类相对来说复杂 //CGLib 可以代理任意一个普通的类,没有任何要求原创 2020-12-13 16:51:33 · 70 阅读 · 0 评论