- 博客(18)
- 收藏
- 关注
原创 资源标注接口文档(部分)
资源库列表(默认返回根目录、当前账号、文件格式为 PPT PPTX PDF 视频格式以及文件夹,按照isDir和创建时间排序) 根据文件名称、目录路径、文件ID查询,返回资源列表。示例请求1 :(移动文件,将根目录下的SSRN-id3574681.pdf 移动到 文件夹1 下,与文件夹2并列)上传文件,在制定目录下添加文件,支持批量(前端限制格式)上传文件,在制定目录下添加文件,支持批量(前端限制格式)文件切割(涉及到文件下载,切割,上传,文件删除)移动文件,单个或批量文件移动到制定目录路径。
2022-11-29 11:50:48
579
转载 ThreadLocal 定义,以及是否可能引起的内存泄露(threadlocalMap的Key是弱引用,用线程池有可能泄露)
Threadlocal
2022-08-10 10:47:07
279
原创 文件上传工具类
记录工具类public class FileUploadUtil { /** * 上传文件工具类 * * @param uploadFile 文件 * @param fileDir 文件目录名 * @param request * @return */ public static String uploadUtil(MultipartFile uploadFile, String fileDir, HttpSer
2022-05-13 15:30:04
255
原创 ConcurrentHashMap put方法源码解析
ConcurrentHashMap put方法分析(基于jdk1.8)源代码final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerException(); //计算key的hash值 int hash = spread(key.hashCode()); int binCount
2022-05-12 17:49:19
252
原创 maven手动安装依赖并跳过测试代码 Failed to collect dependencies at。。
maven笔记打包时候提示一些错误,诸如:Failed to collect dependencies at ....提示找不到依赖包,这个时候需要手动安装,去这里https://mvnrepository.com可以搜寻到依赖。手动安装jarmvn install:install-file -DgroupId=io.grpc -DartifactId=grpc-core -Dversion=1.24.0 -Dpackaging=jar -Dfile=C:\Users\mis\Downloads
2022-05-05 15:05:31
2760
原创 sentinel 滑动时间窗口算法
sentinel 滑动时间窗口的算法为什么要用滑动时间窗口算法?原始的计数器算法计数器算法的实现比较简单,在启动时候,设置一个初始的时间,然后设置一段时间interval作为滑动时间,如果请求方法时候进来的时间在这个区间内,并且没有超过控制值,就return true。/** * 最简单的计数器限流算法 */ public class Counter { public long timeStamp = System.currentTimeMillis(); // 当前时间 public i
2022-04-20 17:46:07
2894
1
原创 sentinel中的SPI机制
sentinel中利用spi机制构建子类示例这里需要构建YunProcessorSlot接口下面的所有子类并addLast方法构建链路即用Spi机制实例化子类public class DefaultYunSlotChainBuilder implements YunSlotChainBuilder { @Override public ProcessSlotChain build() { ProcessSlotChain processorSlotChain =
2022-04-20 11:00:27
536
原创 HashMap源码中初始化和put方法的分析
HashMap源码分析变量//16 桶的默认值 2的4次方 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //默认最大的值 2的30次方 static final int MAXIMUM_CAPACITY = 1 << 30; //扩容因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; //链表变成红黑树的阈值 8
2021-08-29 00:22:45
330
原创 2021-08-24
位运算符亦或是判断A B是否相等,相等取0,不相等取1位移左移<<左移是每次乘2,左移一次乘2一次,高位溢出舍去,低位补码右移>>右移每右移一次,除2,高位根据正负数来补位,负数右移补1,正数右移补0无符号右移无符号右移高位一律补0...
2021-08-25 00:46:34
76
原创 Netty的聊天室开发
Netty的聊天室开发实现一个群聊天器,client登录连接到服务器,可以发送msg,其他的client也可以看到。Netty的写法比较模板化,核心在于Handler的编写服务端:public class NettyServer { public static void main(String[] args) throws InterruptedException { NioEventLoopGroup bossGroup = new NioEventLo
2021-07-15 16:03:40
169
原创 排序
排序线性表的多种排序方式:插入排序:直接插入排序,二分法插入排序,希尔排序交换排序选择排序归并排序交换算法/** * 交换数组元素 * @param arr * @param a * @param b */ public static void swap(int []arr,int a,int b){ arr[...
2019-08-31 13:36:35
124
翻译 暂停线程suspend分析
暂停线程suspend()暂停线程(thread.start–>thread.suspend)resume()恢复线程的执行使用方法也相对简单,该条线程执行了suspend方法之后就会暂停(可以查看System.currentTimeMillons()方法来查看,即使sleep了很久,再次查看当前线程也是同一条,说明是这条线程暂停了)这种方法很容易造成资源对象的独占,形成独占锁p...
2018-11-22 12:37:15
621
原创 AOP
AOP切面简单分析aop的几个术语:1.通知:就是你想要的功能(安全,事务,日子之类),先把他给定义好,然后在想要的地方用一下.2.连接点:spring允许通知可以加在的地方,一般指方法的前后3.切入点:连接点是spring允许你加的地方,而切入点就是你自己决定要加的地方4.切面:切点和通知加起来就叫做切面(方法增强+增强的地方),通知说明了干什么和什么时候干(什么时候通过方法名中的be...
2018-11-19 14:31:35
274
转载 ReentrantLock的简单使用
ReentrantLock的简单使用ReentrantLock这个是一个重入锁,是Lock的直接实现子类,他的使用其实很简单,就是在写业务代码的时候,加上这把锁之后,就会只有一个线程进来(reentrantLock.lock()和reentrantLock.unlock())之间public class OrderService { // 使用static,这样每个线程拿到的是同一把锁...
2018-11-17 21:22:29
545
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人