![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java精华笔记
文章平均质量分 71
Xtick
这个作者很懒,什么都没留下…
展开
-
CompletableFuture使用
在Java中,并发地请求IO资源并将结果组装并返回,可以使用多线程和异步编程的方式来实现。submit()CallableRunnableFutureget()通过以上步骤,可以并发地请求IO资源,并将结果组装并返回。使用线程池来管理并发请求,可以充分利用系统资源,提高程序的性能和效率。需要注意的是,对于IO密集型任务,可以根据具体情况调整线程池的大小以避免资源浪费或阻塞。原创 2024-06-13 11:10:37 · 358 阅读 · 0 评论 -
杂七杂八的踩坑
springboot项目中,application.properties配置server.context-path后,filter无法拦截到这个context-path部分,例如配置server.context-path=/api,那么在调用接口/api/banner/block接口时,filter只会拦截到/banner/block部分。(这个是servlet的相关知识点,以前读过,但是第一次...原创 2019-02-28 09:36:18 · 204 阅读 · 0 评论 -
正向代理和反向代理
这里的正向和反向的“方向”,统统都是针对客户端来描述的:正向代理代理的对象是客户端(客户端主动进行代理),反向代理代理的对象是服务端(从客户端的方向来看就是反向的,客户端被代理了)。 正向代理 A同学在大众创业、万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱,可想而知,最后碰一鼻子灰回来了,情急之下,他想到一个办法,找关系开后门,经过一番...转载 2018-11-28 13:04:20 · 172 阅读 · 0 评论 -
算法和数据结构--快速排序
文章主要针对自己在理解快速排序过程中当时卡壳的点,记录了接触这个算法的经历,不是对快速排序算法原理的分析和理解。 两种思维 我在网上找到了两种理解快速排序比较好的思维方法,具体的思路写在了注释中: 方法一: private static void quickSort1(int[] nums, int start, int end) { //递归出口,千万别忘记,如果start==...原创 2018-09-21 20:19:28 · 225 阅读 · 0 评论 -
Redis底层数据结构和value值的类型
Redis有7种主要数据结构,基于这些数据结构,Redis创建了一个对象系统,包含5种对象:字符串对象、列表对象、哈希对象、集合对象、有序集合对象这5种。...原创 2018-08-22 16:33:25 · 419 阅读 · 0 评论 -
Java并发基础概念
本文讲述了线程同步和互斥的概念,以及对“锁”的通俗理解,还介绍了Java内存模型,对并发编程的3个概念:原子性、可见性、有序性进行了介绍。原创 2018-09-09 14:36:29 · 355 阅读 · 0 评论 -
Java动态代理
代理 在说明动态代理前,先对“代理”进行简述。它是基本的设计模式之一,它是你为了提供额外的或不同的操作,而插入的用来代替“实际”对象的对象。 public class Test { interface TestInterface{ void doSomething(); } static class TestOne implements TestI...原创 2018-08-20 17:18:26 · 292 阅读 · 0 评论 -
数据库四大特性和隔离级别小记
数据库四大特性 数据库的四大特性缩写为ACID,分开来说就是原子性(A tomicity)、一致性(C onsistency)、隔离性(I solation)、持久性(D urability)。 原子性: 一致性: 隔离性: 持久性:...原创 2019-01-31 23:37:53 · 318 阅读 · 0 评论 -
JVM知识点总结(三)——对象的创建与类加载过程
首先需要区别开对象的创建和类加载的含义,对象的创建是指实例的创建过程,而类加载机制指的是一个类的类信息的加载过程。 有许多的面试题,关于成员变量、构造函数、static变量、static方法的加载顺序,都与本文的内容息息相关,例如:Java中构造方法的执行顺序,这篇博文就是一个常见的考题。实际上static修饰的成员和非static修饰的成员的初始化是两个过程。 对象的创建 上图显示的就...原创 2018-07-16 09:31:13 · 447 阅读 · 0 评论 -
MySQL索引小记
本文默认针对的MySQL引擎为InnoDB。 索引的分类 聚簇索引 聚簇索引就是按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据,也将聚集索引的叶子节点称为数据页。值得注意的是,如果一个表没有指定主键,那么MySQL服务器会自动为我们添加一个row_id作为主键,这部分内容需要参考InnoDB行记录格式部分的内容。 辅助索引 非聚簇索引在其他...原创 2018-07-26 11:14:26 · 222 阅读 · 0 评论 -
JVM知识点总结(二)——垃圾回收
引用分类: 强引用 类似Object obj=new Object()这类的引用,只要强引用还存在,垃圾回收器永远不会回收掉被引用的对象。 软引用 是用来描述一些还有用但非必需的对象。在系统将要发生内存溢出异常前,会把这些对象列进回收范围之中进行二次回收。JDK1.2之后,提供了SoftReference来实现。 弱引用 用来描述非必需对象的,强度比软引用还弱。被弱引用关联...原创 2018-07-12 19:14:06 · 257 阅读 · 2 评论 -
ConcurrentHashMap小记
为了减少保存的书签数目,整理一下收藏的文章。 JDK7中的ConcurrentHashMap 设计 在JDK7的实现中,ConcurrentHashMap被分成了许多Segment,只有在同一个Segment内才存在竞态关系。实际上ConcurrentHashMap是一个Segment数组,而Segment继承自ReentrantLock static final class S...原创 2018-07-18 21:37:21 · 257 阅读 · 0 评论 -
基于JDK8的HashMap解析
此文章缘由第一次面试阿里。 在jdk1.6,1.7中,使用的是数组+链表实现的。在jdk1.8中,使用的是数组+链表+红黑树实现,这是因为当一个桶内的元素过多时,hashMap实际上变成了对链表的查找,效率降低,所以当链长的长度超过8的时候,将链表转化为红黑树。 HashMap基本存储结构 如图: 数组:存储区间连续,占用内存严重,寻址容易,插入删除困难; 链表:存储区...原创 2018-07-10 11:38:01 · 918 阅读 · 0 评论 -
Java定时任务
源自icp云硬盘项目。当时保存了许多有关Timer和ScheduledExecutorService相关的书签,整理一下,删一删书签。 使用ScheduledExecutorService而不是Timer 原因可以总结为一下几点: 1. Timer是单线程的,如果存在多个任务,且任务时间过长,超过了两个任务的时间间隔,那下个任务的执行可能不会按照预期的时间执行。 2. 当T...原创 2018-07-11 16:14:23 · 246 阅读 · 0 评论 -
JVM知识点总结(一)——运行时数据区
虚拟机规范的内存模型: 各个内存区域简介: 1. 程序计数器(PC) 它是线程私有的,每个线程都会有一个独立的PC。它可以看做是当前线程所执行的字节码的行号指示器,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖它。 2. Java虚拟机栈: 它是线程私有的,它的生命周期与线程相同,他描述的是Java方法执行的内存模型,每个方法执行时都会创建一个栈帧用于存储局部变量表、操作数...原创 2018-07-12 14:28:59 · 294 阅读 · 0 评论 -
JVM知识点总结(四)——即时编译(JIT)
一些代表性的编译器: - 前端编译器:Sun的Javac、Eclipse JDT中的增量式编译器(ECJ)。 - JIT编译器:Hotspot VM的C1、C2编译器。 - AOT(Ahead of Time):GCT、Excelsior JET。 解释执行与编译执行 解释型代码的优势是可移植,只要有合适的解释器,代码可以在任意平台上运行,而且解释型代码启动速度总是要比编译型...原创 2018-07-16 15:05:03 · 815 阅读 · 0 评论