![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 88
「已注销」
在技术的世界里每日精进
展开
-
ReentrantLock源码分析
前言ReentranLock是JDK中基于AQS实现的一种可重入的排它锁,实现了Lock接口,提供了锁的基本操,例如加锁、解锁;使用public class ReentratLockDemo{ private static int state = 0; private Lock lock = new ReentrantLock(); public static void main(String[] args){ lock.lock(); //加锁原创 2021-08-24 21:12:58 · 125 阅读 · 0 评论 -
一个幂等性问题引起的对synchronized的思考
遇到的问题最近在维护公司的一个老项目,这个项目是一个完完全全的单体应用。有一个用户签到加积分的接口,为了防止用户多次请求而导致数据库插入多条记录的问题。简而言之就是需要保证一个新增接口的幂等性问题。这里就不赘述其他的解决方案了,比如说可以在数据库做唯一索引、token机制,单体应用可以用synchronized或者JDK自带的ReentrantLock等等。问题探讨与结论最初我想到的是,直接在方法上面加一个synchronized关键字,来修饰这个方法。这样毫无疑问是最简单的一种.public s原创 2021-06-16 22:37:49 · 293 阅读 · 1 评论 -
JVM学习笔记
文章目录目的JVM内存模型垃圾收集对象是否存活算法收集算法经典的垃圾收集器JVM常用的一些工具虚拟机类加载机制类加载时机类加载器双亲委派模型的工作过程目的最近一周通读了一遍《深入理解Java虚拟机:JVM高级特性和最佳实践》(第三版),在读书的过程记录了一些大量知识点,现在输出一篇文章,将书读薄。(都是基于HotSpot虚拟机的)JVM内存模型程序计数器:记录当前程序执行的位置,便于线程切换更够恢复到当前的问题位置(线程私有,每个线程独立拥有一个程序计数器)堆: 几乎是Java所有对象实例分配到原创 2021-06-14 13:18:18 · 78 阅读 · 0 评论 -
Java基础知识点复习
文章目录关于final关键字的总结线程、进程和程序的概念,以及他们之间的关系hashCode 和 equals的规定hashCode有什么作用为什么要重写hashCode()和equals()呢持续更新关于final关键字的总结final 关键字可以修饰在三个地方: 变量、方法、类对一个final变量:如果final修饰的是的变量是基本数据类型,则其数值不能被修改。如果修饰的是引用数据类型,其引用不能指向其他的对象。final修饰类: 被final修饰的类不能被继承,final修饰的类默认原创 2021-04-06 18:00:27 · 84 阅读 · 0 评论 -
Java8 几道Stream流练习题
题目(1) 找出2011年发生的所有交易,并按交易额排序(从低到高)。(2) 交易员都在哪些不同的城市工作过?(3) 查找所有来自于剑桥的交易员,并按姓名排序。(4) 返回所有交易员的姓名字符串,按字母顺序排序。(5) 有没有交易员是在米兰工作的?(6) 打印生活在剑桥的交易员的所有交易额。(7) 所有交易中,最高的交易额是多少?(8) 找到交易额最小的交易。题目来自《Java...原创 2020-03-28 13:33:26 · 2493 阅读 · 3 评论 -
Java8-(4种方式)实现List元素的排序
先来一个故事背景把,咱们现在在给一位农民伯伯设计一个苹果库存管理系统。他现在有这样的一个需求:想要对苹果库存里面的所有苹果,按照苹果的重量weight排序。这里咱们简单的使用List集合作为我们的仓库,快来看看如何一步一步的实现的更加简洁吧。先来一个Apple类public class Apple { private String color; private Double...原创 2020-03-27 10:55:04 · 2652 阅读 · 0 评论 -
MapDb学习笔记
文章目录MapDb学习笔记一、介绍二、快速开始Hello World快速提示DB 和 DBMaker数据结构HtreeMap简介重要特性和参数ExpirationShadrder Store原理BtreeMap简介重要参数serializersMapDB数据结构和JDK Collection性能比较环境:测试JDK ConcurrentHashMapMapDb学习笔记一、介绍MapDb是一个开源的,内嵌的Java数据引擎和集合框架。提供了Map,Set,List,Queue,BitMap,支持范围查询,原创 2021-03-02 13:08:45 · 1622 阅读 · 0 评论 -
谈谈Java中锁机制(自旋锁)
什么是自旋锁自旋锁的定义:当一个线程尝试去获取某一把锁的时候,如果这个锁已经被另外一个线程占有了,那么此线程就无法获取这把锁,该线程会等待,间隔一段时间后再次尝试获取。这种采用循环加锁,等待锁释放的机制就称为自旋锁(spinlock)为什么需要自旋锁由于在多处理器的环境中某些资源的有限性,有时需要互斥访问,这时候就需要引入锁的概念,只有获取到锁的线程才能对临界资源进行访问,由于多线程的核心是...原创 2020-03-24 15:48:31 · 1901 阅读 · 1 评论 -
谈谈Java中的锁机制(悲观锁和乐观锁)
谈谈Java中的锁机制(悲观锁和乐观锁)图片引用自:GitChat线程是否需要对资源加锁分为两类悲观锁悲观锁是一种消极的思想,它总是认为会有最坏的情况出现,它总是认为数据是会被修改的,所以它会在持有资源的时候把资源和数据锁住。这样其他的线程要请求这个资源的时候就会被阻塞,直到悲观锁把资源释放了。悲观锁有许多的应用场景,最常见的就是我们经常使用的的传统关系型数据库的锁机制。比如行锁,表锁,...原创 2020-03-12 14:53:30 · 521 阅读 · 0 评论