主页

Java八大排序算法

排序算法的介绍 排序也称排序算法(SortAlgorithm),排序是将 一组数据,依 指定的顺序进行 排列的过程。 排序的分类 按照是否使用内存可以分为内部排序和外部排序两种: 内部排序: 指将需要处理的所有数据都加载到 内部存储器( 内存)中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助 外部存储( 文件等)进行排序。 按照是否稳定可以分为稳定排序和非稳定排序两种: 如果一个排序算法能够保留数组中重复元素的相对位置则可以被称为是 稳定 的。反之,则是 非稳定 的。 排序算法的实现 参考一:Java实现八大排序算法 参考二:尚硅谷Java数据结构和java算法,韩顺平数据结构和算法...

阅读更多

AQS源码解析

AQS简介 java.util.concurrent(J.U.C)大大提高了并发性能,AQS 被认为是 J.U.C 的核心。 AQS就是AbstractQueuedSynchronizer,它是为实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量,事件等)提供的一个框架。 源码分析 从ReentrantLock进入 可以看到ReentrantLock默认构建了NonfairSync,即非公平锁 public ReentrantLock() { sync = new NonfairSync(); } public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new ...

阅读更多

Elastic Stack 环境部署

ELK简介 ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。 Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。 Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。 Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。 ELK安装 利用docker部署ELK(ElasticSearch + Logstash + Kibana),...

阅读更多

ConcurrentHashMap源码解析

尚未完成,参考资料:https://www.cnblogs.com/zerotomax/p/8687425.html 几个重要属性 private static final int MAXIMUM_CAPACITY = 1 << 30; private static final int DEFAULT_CAPACITY = 16; static final int TREEIFY_THRESHOLD = 8; static final int UNTREEIFY_THRESHOLD = 6; static final int MIN_TREEIFY_CAPACITY = 64; static final int MOVED = -1; // 表示正在转移 sta...

阅读更多

SpringMvc执行流程

一、入口 众所周知,Servlet是由tomcat接收http请求然后转成可识别的HttpServlet去处理; SpringMvc的请求入口是DispatcherServlet,类图如下所示: 可以看到DispatcherServlet是HttpServelt的子类,所以我们依旧可以从doService方法进行源码追踪。 doService里面会进入doDispatch方法 try { doDispatch(request, response); } doDispatch: protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exce...

阅读更多

Idea插件

1、Alibaba Cloud Toolkit 远程shell连接服务器,文件上传,项目部署。。。。 2、Alibaba Java Code GuideLines Java开发手册规范,检测代码不规范的地方 3、Camel Case 驼峰转换,Shift+Alt+u,可以对字符串一直转换成想要的格式 4、CodeGlance 右侧显示代码缩略图,可以快速定位 5、FindBugs -Idea 检测代码中会出现的问题 6、Free Mybatis Plugin 实现dao快速跳转到xml 7、GenerateAllsetter 生成object的set方法(alter+enter) 8、GenerateSerialVersionUID ...

阅读更多

牛客网2020面经大汇总

网址 当前整理进度:【苏宁】苏宁java管培面经 【阿里】阿里java开发一面凉经 【阿里巴巴】 阿里巴巴Java社招面经 一面(电话面) Servelt的生命周期 线程的状态 加密算法(非对称,对称,MD5) 数据库事务ACID四大特性 二面(电话面) Java的内存模型 JVM的垃圾回收机制 HashMap、Hashtable、ConcurrentHashMap的区别,同步器实现机制。 使用过哪些ORM框架, 数据库事务的四大特性 注解处理器 原子类底层机制(cas, Unsafe) 快排实现方式。 三面(视频面) ES的检索机制(query-then-fetch) 面试官问如果现在要搜一个词,按相关度排序,如何获取排名在(100-120)之间的文档,针对于“用...

阅读更多

Docker的使用

一、docker介绍 ​ Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 ——摘自百度百科 ​ Docker官网:https://www.docker.com/ 二、docker安装 1、dockerHub ​ DockerHub地址:https://hub.docker.com/ ​ DockerHub上面有着docker官方提供的一些容器样例,下面以redis为例: ​ 直...

阅读更多