杂项
文章平均质量分 51
杂项
全栈行动派
专注 Java , 包括JVM、Spring Boot、Spring Cloud、多线程、数据结构与算法、K8S、Docker、MQ、架构设计、面试题等,一起学习进步,赶快上车。
展开
-
时间复杂度通俗说明(O(1)、O(n)、O(n^2)、O(log n)、O(n log n)
在JAVA数据结构中经常会看到有关每个数据结构插入、查询的时间复杂度,但是在很长一段时间不知道是什么意思,今天总结一下O(1)代表只需要计算一次既可以找到目标例如:我们在电影院看电影,拿着座位号,可以一次定位到具体的位置那在我们的数据结构中链表插入数据的时间复杂度为O(1)O(n)代表需要将所有数据遍历一次那在我们的数据结构中链表查询数据、遍历所有数组查找最大数据,这些都是时间复杂度为O(n)O(n^2)代表需要双层遍历数据那在我们的数据结构中冒泡排序就是时间复...原创 2020-09-16 09:47:21 · 1425 阅读 · 0 评论 -
关于ActiveMQ、RocketMQ、RabbitMQ、Kafka一些总结和区别
复习要点本文大概围绕如下几点进行阐述:为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何保证消息的顺序性?我们围绕以上七点进行阐述。需要说明一下,本文不是《消息队列从入门到精通》这种课程,因此只是提供一个复习思路,而不是去教你们怎么调用消息队列的API。建议对消息队列不了解的人,去找点消息队列的博客看看,再看本文,收获更大正文1、为什么要使用消息队列?分析:一个用消息转载 2020-09-17 11:08:09 · 293 阅读 · 0 评论 -
java运算符 与(&)、非(~)、或(|)、异或(^)
在学习1.8HashMap源码时遇到一段代码: static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }整理学习了相关知识:1、十进制转二进制原理:给定的数循环除以2,直到商为0或...原创 2018-05-26 23:14:26 · 823 阅读 · 0 评论 -
idea中调试jdk8源码
一、目前调试jdk源码的难点1、debug无法查看局部变量2、在学习期间,添加不了注释带着这两个问题,咱们继续原创 2018-05-25 14:00:01 · 6554 阅读 · 0 评论 -
ArrayList正确的使用可以极大的提示添加效率
1、ArrayList原理ArrayList底层使用可变长度数组存储元素在初始化ArrayList时,如果没有指定初始化容量或者指定0为初始化容量,那初始化容量将默认为10在每次添加元素时,首先校验容量是否满足,如果不满足使用Arrays.copyOf方法,以原来容量的1.5倍扩容涉及到内存操作(创建新的数组,丢掉老的数组)导致效率比较低在每次删除元素时,使用Arrays.copyOf方法,将要删...原创 2018-05-28 11:28:51 · 1579 阅读 · 0 评论 -
NIO Socket实现聊天
package com.lc.test.test04;import java.nio.ByteBuffer;import java.nio.channels.ClosedChannelException;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.SocketChannel;import java.util.Scanner;/** * @.原创 2020-06-27 20:22:52 · 198 阅读 · 0 评论 -
JVM调优
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms3550m -Xmn2...原创 2018-07-12 08:29:03 · 157 阅读 · 0 评论 -
深入String str= “aa“ String str1 = new String(“aa“) 为什么不相等
先看代码 String str = "aa"; String str1 = "aa"; String str2 = new String("aa"); System.out.println(str == str1);//true System.out.println(str == str2);//false System.out.println("aa" == str); In原创 2020-07-13 14:58:39 · 774 阅读 · 0 评论 -
maven 打包 releases 和 snapshots 版本
releases:线上版本(生产环境使用的)snapshots:快照版本(开发过程中使用的)maven 打包代码到私服根据version 后面是否带有“-SNAPSHOTS” 来区分是打包线上版本还是快照版本,如果带有“-SNAPSHOTS” 打包快照版本,否则即为线上版本定义version 使用占位符 在properties中设置默认version 在profiles 中 根据...原创 2019-03-29 14:11:52 · 14925 阅读 · 0 评论 -
idea2018 破解方法超简单
附加另外两个 License server address:http://idea.congm.in/http://idea.toocruel.net原创 2018-06-16 10:26:07 · 2724 阅读 · 1 评论 -
java替换word模板中占位符Docx4j和Poi实现
word模板动态替换占位符(eg:${placeholder})然后生成新的word网上搜索的不管是docx4j还是poi都只是实现了占位符在同一个文本中(读取word行数据后,行数据会分为多个文本)的替换,针对占位符没有在同一个文本或者换行了都没有实现,总结docx4j和poi两种方式终极实现占位符替换生成新word,两种方式源码如下1、Docx4J实现代码import cn.hutool.core.util.ObjectUtil;import com.google.common.col原创 2020-06-10 15:40:25 · 6475 阅读 · 3 评论 -
Linux 字体安装
java系统生成PDF、二维码增加标题等场景都会使用到Font,但是linux服务器上又没有这些字体,这个时候就需要自己安装字体到服务器,以下是按照步骤。原创 2022-09-23 10:07:53 · 1941 阅读 · 0 评论 -
JAVA构建树形结构数据,看这一篇就够了
在一个完整的项目中,或多或少的需要构建树形结构数据并排序,不同的业务数据由于属性名称不一致通常需要写不同的方法来构建树形结构数据,那有没有一个工具类可以实现所有的业务数据调用同一个方法,返回不同的树形结构呢,原创 2022-10-21 10:27:29 · 2266 阅读 · 0 评论 -
Spring5.2.x源码转换maven版本,我已经打包好了,赶紧下载吧
下载链接:https://download.csdn.net/download/u011837804/20644532原创 2021-07-30 14:14:25 · 528 阅读 · 2 评论 -
可重入锁的几个核心要素对标AQS
在JUC包中AbstractQueuedSynchronizer经常被称作队列同步器(AQS),是JUC包内锁的实现关键,那要实现一个可重入锁需要几个核心要素需要一个记录锁状态的变量state,state至少需要两个值0、1,对state操作要保证安全性,需要使用到CAS(自旋) 需要有一个变量保存当前是那个线程持有锁 需要一个列表存储当前等待锁的线程的列表 需要有一个可以唤醒和阻塞线程的操作那对标AQS记录锁的状态保存当前是那个线程持有的锁,在AQS父类AbstractOwnable原创 2020-07-03 15:48:27 · 174 阅读 · 0 评论 -
FastJson2.0介绍和使用
FASTJSON v2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API,原创 2022-11-22 17:34:36 · 5461 阅读 · 0 评论 -
volatile关键字三重功效
64位写入原子性举一个简单的例子,对于一个long型变量的赋值和取值操作而言,在多线程场景下,线程A调用set(100),线程B调用get(),在某些场景下,返回值可能不是100。package com.lc.test02;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @a原创 2020-07-03 15:15:08 · 275 阅读 · 0 评论 -
揭秘使用未赋值的局部变量编译会报错,使用类变量不会报错
类的加载阶段其中准备阶段主要是为类变量分配内存和赋初始值这里的赋初始值是指数据类型默认值,而不是代码中被显示赋予的值例如:public static String str = "hello"; //在这里准备阶段过后的value值为null,而不是hello。赋值为hello的动作在初始化阶段所以,即使我们不给类变量赋值,在准备阶段类变量已经被赋上初始值null,我们也可以直接使用局部变量就不一样,如果一个局部变量被定义了却没有赋予初始值是不能使用...原创 2020-07-16 17:14:06 · 1816 阅读 · 0 评论 -
SpringBoot2.2+commons-pool2实现多Ftp连接池完整项目,开箱即用,经过长期生产使用稳定可靠
SpringBoot2.2+commons-pool2实现多Ftp连接池完整项目,开箱即用,经过长期生产使用稳定可靠原创 2022-04-04 11:49:16 · 4062 阅读 · 11 评论 -
基于SpringBoot的Ftp连接池终极实现
1、配置文件package com.faea.bus.core.properties;import lombok.Getter;import lombok.Setter;import org.springframework.boot.context.properties.ConfigurationProperties;/** * @author liuchao * @date 2020-03-28 */@Getter@Setter@ConfigurationProperties原创 2020-06-30 19:29:05 · 4374 阅读 · 3 评论