- 博客(30)
- 资源 (3)
- 收藏
- 关注
原创 延迟队列的时间轮算法实现
环形队列可以高效实现延时队列通过提高定时器的频率可以提高延时队列的精度如果想实现消息队列的延时队列,也可以订阅对应消息,在本地中转后再重新发布消息,从而达到实现延时队列的目的(MQ如果有延迟队列建议使用自带延迟队列方案)延迟队列有很多实现方案。
2024-05-28 14:39:19
853
1
原创 springboot、springcloud、springcloud-alibaba版本对应关系
springboot、springcloud、springcloud-alibaba版本对应关系
2023-03-11 15:17:00
845
原创 几句话讲清楚为什么NIO是同步非阻塞的
首先要知道,同步和异步是针对调用方,阻塞与非阻塞是针对被调用方的。同步与异步:对于调用方来讲调用一个方法是否需要等待调用方法的返回结果就是同步和异步的区别。如果需要等待函数的返回就是同步,不等待则是异步阻塞与非阻塞:对于被调用方来说,当被调用方调用时是否立即返回结果就是阻塞与非阻塞的区别。如果被调用方立即返回结果就是非阻塞的,反之如果需要等待处理过程结束后才返回结果就是阻塞的。观看下列伪代码,可以看到作为调用方一直在轮询select,每一次轮询都需要等待select调用的结果返回。...
2022-08-03 16:14:47
821
原创 SpringBoot统一返回结果,统一异常处理,统一header参数校验等通用操作
SpringBoot统一返回结果,统一异常处理,统一header参数校验等通用操作的封装
2022-07-11 16:38:36
2555
1
原创 jdk11 AQS(AbstractQueuedSynchronizer)源码
提供了一个框架来实现阻塞锁和依赖先进先出(FIFO)等待队列的相关同步器(信号量、事件等)。 这个类被设计为大多数依赖单个原子int值来表示状态的同步器的有用基础。 子类必须定义改变这种状态的受保护方法,这些方法定义了在获取或释放对象时这种状态的含义。...
2022-06-22 10:59:54
188
原创 realm产生Error的解决办法
错误java.lang.StackOverflowError: stack size 8192KB解决方法如果你正在使用Realm,并且出现上述错误,且出现问题的对象扩展了RealmObject,需要在通过GSON序列化之前,先执行realm.copyFromRealm(myObject)创建一个没有Realm绑定的副本,代码如下:/**build一个没有Realm绑定的副本*/obj = realm.copyFromRealm(obj);原文链接realm导致gson.toJson
2022-05-11 19:48:36
949
原创 阻塞与非阻塞-同步与异步(搬运)
阻塞与非阻塞阻塞与非阻塞是指进程在访问某个资源时,数据没有准备就绪的一种处理方式。阻塞:线程持续等待到资源准备就绪,返回结果。非阻塞:线程直接返回结果,不等待资源。同步与异步同步与异步是指访问数据的机制,同步一般指主动请求并等待IO操作完成的方式。异步则指主动请求数据后便可以继续处理其它任务,随后IO操作完毕会主动通知。烧开水普通水壶煮水,站在旁边,主动的看水开了没有?同步的阻塞普通水壶煮水,去干点别的事,每过一段时间去看看水开了没有,水没开就走人。 同步非阻塞响水壶煮水,站在
2021-09-05 09:24:46
116
原创 第五天 JAVA核心技术I 【Object:所有类的超类,equals、hashCode、toString方法详解】
5、Object:所有类的超类 Object类是Java中所有类的始祖,在Java中,每个类都扩展了Object。如果没有明确的指出这个类的超类,则Object就被认为是这个类的超类。由于Java中每个类都是由Object类扩展而来的,所以熟悉这个类提供的所有服务十分重要。5.1、Object类型的变量 可以使用Object类型的变量引用任何类型的对象,但只能作为各种值的一种泛型容器,如果需要具体操作,还需要知道对象的原始类型,并进行相应的强制类型转换。 在java中,只有基本类型不是对象,例
2021-07-22 17:48:48
485
原创 一个可视化视频分帧工具(绿色版)
Windows下一个可视化视频分帧工具1、资源链接csdn资源:下载2、安装过程解压安装包创建快捷方式双击快捷方式启动运行界面3、使用方法选择需要切分的视频从左到右依次输入帧率(每秒取多少帧)、输出图片的宽度、输出图片的高度、每幅图片的名字前缀、每幅图片名字的后缀。选择分帧结果保存目录单击开始切分,等待分帧结束,单击提前结束分帧按ESC退出程序...
2021-07-16 19:51:46
2660
3
原创 第四天 JAVA核心技术I 【方法的参数传递】
4、方法的参数传递将参数传递给方法的方式:按值调用(call by value) 按值调用表示方法接受的是调用者提供的值。按引用调用(call by reference) 按引用调用表示方法接受的是调用者提供的变量地址。注意:java 总是按值调用,也就是说,方法得到的是参数值的副本。其中有两种参数类型:1、基本数据类型;2、对象引用。基本数据类型拷贝的是数据的值,对象引用拷贝的是对象的引用而不是对象本身。4.1、基本数据类型 Java向方法中传递基本数据类型时,传递的是参数的副本,实际
2021-07-12 15:10:23
124
原创 第三天 JAVA核心技术I 【类与对象】
3、类与对象3.1、类 类是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例。 封装是处理对象的一个重要概念。封装就是将数据和行为组合在一起,并对对象的使用者隐藏具体的实现方式。对象中的数据称为实例字段。操作过程称为方法。 作为一个类的实例,特定对象都有一组特定的实例字段值。这些值的集合就是这个对象的当前状态。3.2、对象对象的三个主要特征:对象的行为(behavior): 可以对对象完成哪些操作,或者可以对对象应用哪些方法。对象的状态(state): 当调用那些方法时,对象会如
2021-07-09 09:55:23
116
原创 第二天 JAVA核心技术I 【基本数据类型】
Java是一种强类型语言。这就意味着必须为每一个变量声明定义一种类型。Java中一共有8种基本类型,其中有4种整型、2种浮点型、1种字符类型char(用于表示Unicode编码的代码单元)和真值类型booLean。2、基本数据类型2.1、整形类型存储需求取值范围int4字节-2 147 483 648 ~ 2 147 483 647(刚刚超过20亿)short2字节-32768~32767long8字节-9 223 372 036 854 775 80
2021-07-07 15:32:16
116
原创 第一天 JAVA核心技术I【JAVA白皮书关键术语】
1、JAVA白皮书关键术语Oracle白皮书地址1996.051.1、简单性 Java删除了cpp中许多很少使用、难以理解、容易混淆的特性,如指针、操作符重载等。在我们看来,这些特性带来的麻烦远远多于他们的好处。可以认为Java是cpp的简化纯净版。1.2、面向对象 面向对象设计是一种程序设计技术。当然,在使用得当的时候,我更愿意称之为程序设计的艺术。Java将面向对象这条路走向了极致,甚至将程序入口main()都设计在类中,也就是说,Java是完全面向对象的。而cpp实际上可以认为是c的超集,
2021-07-06 14:35:31
115
原创 java Excel读写
因为最近的项目需要对Excel进行读写操作,看了朋友使用的阿里的easyExcel发现仍然需要依赖poi而且使用起来也并不是那么容易。github的文档也只有一份,使用起来不够灵活,easyExcel内存占用非常少的优点对我来讲也可有可无,实际上poi的占用也不高。最后,我对poi进行了简单易用的二次封装并在项目中投入使用。
2020-12-15 20:27:08
176
1
原创 mybatis 注解形式的动态sql妙用
根据字段名和编码进行查询@Select({"<script> " + "select * from user " + "where" + "<if test=\"type == 'school'\"> school = #{code}</if>" + "<if test=\"type == 'major'\"> major = #{code}</if>" + "<if test=\"type == 'ident
2020-07-08 14:42:40
245
原创 pageHelper分页插件查询速度慢-详细解决方法
问题原因:pageHelper会在查询语句的基础上增加一条语句:select COUNT(*) from xxx,这条语句引起的查询速度变慢。解决前:我的表里只有两条数据都用了接近3s,这个延迟是完全不能忍受的,这已经属于bug而不是延迟了。解决后(我使用的方案一):可以明显看到问题被解决掉了,查询时间从原来的接近3000ms到现在的144ms,完全正常。方案一(简单,推荐,MyISAM引擎不支持外键,有外键的直接写成触发器)修改表引擎为MyISAM:—在修改表引擎时,由于MyISAM
2020-07-08 11:10:42
12740
原创 java-判断某一时间时间是不是今天
public class TimeUtil { private TimeUtil() { } private static final long _1h = 3600000; public static boolean isToday(long time) { //Calendar使用单例,多次调用不重复创建对象 Calendar calendar = Calendar.getInstance(); //使用System获取当前时间 calendar.setTimeInMilli
2020-05-26 19:29:32
1826
原创 Ajax的正确写法
$.ajax({ url : "你的URL", dataType : "json", type : "POST", data : {//你的参数 "id" : id }, success: funct...
2020-03-10 16:50:11
688
原创 ACM输入问题
问题:while(~scanf("%d",&n))和while(scanf("%d",&n))有什么区别,为什么用后者超时的时候换成前者就能AC了答:scanf()读到输入的结尾时返回值是EOF一般EOF的值是-1,而不是0是按位取反,(-1)=0推荐使用EOF宏定义来判断,以最简单的a+b做例子。#include<stdio.h>void main...
2020-02-22 20:05:49
197
apache.poi所需要的jar包集合
2020-12-15
DOBOT机械臂的动态链接库
2018-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人