
Java
花木雨
我的征途是星辰大海
展开
-
spring boot redis实现秒杀
spring boot redis实现秒杀原创 2022-05-16 11:00:54 · 758 阅读 · 0 评论 -
JNDI
转载:JNDI-简介JNDI-总结转载 2020-03-12 11:07:37 · 179 阅读 · 0 评论 -
尾递归优化
转载:https://segmentfault.com/a/1190000018448766转载 2019-11-30 14:33:56 · 249 阅读 · 0 评论 -
java 子类强转父类 父类强转子类
转载:https://www.cnblogs.com/ooo0/p/9308583.html转载 2019-11-11 21:00:55 · 912 阅读 · 0 评论 -
依赖包滥用System.gc()导致的频繁Full GC
转载:https://www.jianshu.com/p/16ad5b10582d公司出现了同链接相同的问题,现已解决。转载 2019-11-11 20:49:07 · 812 阅读 · 0 评论 -
ThreadLocal
转载:ThreadLocal转载 2019-10-28 19:17:37 · 153 阅读 · 0 评论 -
syncronized的实现原理
相关概念线程安全的主要诱因存在共享数据(临界资源)。多个线程共同操作共享数据。解决问题的根本方法:同一时刻只有一个线程操作共享数据,其他线程必须等待该线程操作完数据后再对共享资源进行操作。互斥锁特性互斥性:同一时刻只有一个线程持有某个对象锁。也称操作原子性。可见性:锁释放之前,对共享数据的修改,对于后一个获取该锁的线程是可见的。即后一个线程获取该锁时应获得共享数据的最新值。...原创 2019-11-11 21:03:40 · 938 阅读 · 0 评论 -
Java并发基础---yeild和interrupt
yeild当调用yeild()时,会给线程调度器一个当前线程愿意让出CPU资源的暗示,但线程调度器可能会忽视这个暗示。调用yeild()后,可能是当前线程重新占有CPU资源,可能是其他同级或级别更高的线程占有CPU资源。不会释放锁。interrupt通知线程应该中断了,但线程可能中断,也可能继续执行。具体看源码/** * Interrupts this thread. ...原创 2019-10-27 20:52:37 · 239 阅读 · 0 评论 -
Java并发基础---notify和notifyAll的区别
相关概念锁池每个对象(不是类)有一个锁池,锁池存放的是想要获取该对象的锁但该锁已被其他线程占有的阻塞状态的线程。(有点点复杂哈~~)比如说老公正在开车送我回家,我相当于获得了老公这个对象的锁。如果此刻小三刚好也想要借用一下我的老公,那小三就只能进入我老公的锁池了,因为我的老公已经被我锁定啦。等待池线程调用wait()后,会释放该对象的锁,同时进入该对象的等待池,进入等待池的对象不会去竞争...原创 2019-10-27 20:40:25 · 147 阅读 · 0 评论 -
Java并发基础---sleep和wait的区别
sleep是Thread的方法,wait是Object的方法sleep可以在任何地方调用,.wait只能在syncronized方法/块中调用sleep只会释放CPU,不会释放锁资源。wait会释放锁资源。...原创 2019-10-27 20:13:04 · 133 阅读 · 0 评论 -
Java并发基础---线程的状态
线程的状态参考源码: public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A th...原创 2019-10-27 19:59:43 · 223 阅读 · 0 评论 -
进程和线程
进程是资源分配的最小单位。进程独占内存资源,进程间互不干扰但可互相切换。线程是CPU调度的最小单位。线程属于某个进程,一个进程可以有一个或多个线程。各个线程可共享进程资源(内存、文件I/O等),又可以独立调度CPU。进程的切换比线程的切换开销大。...原创 2019-10-26 22:49:13 · 95 阅读 · 0 评论 -
Thread中的start和run方法的区别
面试必问,面试必问,面试必问!别问我为什么知道~~总结run()只是Thread类的一个普通方法,调用run()并不会新建一个子线程,仍在主线程执行任务。调用start()会新建一个子线程并执行run()的内容。调用start()会有两个线程,一个是当前正在调用start()的主线程;另一个是JVM创建的子线程,用来执行run()的内容。实践实践出真知~~首先写下测试代码:publ...原创 2019-10-26 16:56:13 · 2116 阅读 · 0 评论 -
Java未赋值变量的初始值(默认值)
初始值(默认值)参考:官方文档Java程序中,任何变量必须初始化后才能使用。以下为不同数据类型的默认值。数据类型初始值byte0short0int0long0Lchar‘u0000’float0.0fdouble0booleanfalse所有引用类型null但并不是所有未初始化的变量都会赋默认值。...原创 2019-10-24 12:43:26 · 12925 阅读 · 2 评论 -
Java参数的传递机制---值传递和引用传递
值传递和引用传递碎碎念基本概念形参实参值传递引用传递Java只有值传递实例讲解当参数为基本数据类型当参数为对象,实参未更新当参数为对象,实参更新碎碎念面试时经常会被问:值传递和引用传递的区别?甚至会出一道编程题,让你写出正确答案。例如以下代码会打印什么?public static void main(String[] args) { StringBuffer a = new ...原创 2019-10-23 17:09:29 · 574 阅读 · 0 评论 -
HashMap、ConcurrentHashMap中的链表转红黑树的阀值是8?
转载:https://blog.youkuaiyun.com/sinat_41832255/article/details/88884586转载 2019-10-22 11:11:05 · 658 阅读 · 0 评论 -
Redisson 整合 Spring Cache
Redisson 官方文档写的很详细了:https://github.com/redisson/redisson/wiki/目录 参考第14.2章这里主要描述遇到的问题:序列化Caused by: java.lang.RuntimeException: Class com.xx.response.MemberVO does not implement Serializable or exte...原创 2019-08-07 21:24:14 · 2409 阅读 · 1 评论 -
利用切面实现自定义注解
package com.wework.doorservice.core.eventcollector;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annot...原创 2019-11-11 21:28:39 · 710 阅读 · 0 评论 -
HashMap和HashTable的区别
HashMap和HashTable的区别HashMap是线程不安全的,HashTable是线程安全的,因为hashTable的方法加了synchronized。HashMap Key和Value都允许为null,HashTable都不允许为null。HashMap继承了AbstractMap,HashTable继承了Dictionary。HashMap.resize()扩容为原来容量的两...原创 2019-06-27 14:11:25 · 113 阅读 · 0 评论 -
Java @FunctionalInterface
@FunctionalInterface作用:表明该接口是函数式接口,若该接口不符合函数式接口规范,则会提示错误信息。若不加该注解不影响程序。package com.example.demo.medium;/** * 函数式接口,只有一个 abstract 方法,可以包含多个默认方法、静态方法。 * 函数式接口可以包含Object里public的方法,这些方法不会计入 abstract...原创 2019-06-18 20:47:45 · 458 阅读 · 0 评论 -
AQS入门
转载:https://www.jianshu.com/p/f207e85d0238转载 2019-07-22 22:59:31 · 168 阅读 · 0 评论 -
ReentrantLock 和 Syncronized 的区别?
syncronized: - 出现异常或代码块执行结束,自动释放锁。 - Java关键字,由JVM实现。 - 未获取到锁,则一直阻塞。 - 非公平锁。ReentrantLock: - 出现异常或代码执行结束,需在final中手动释放锁。 - Java程序实现的同步,实现了Lock接口。 - 可重入、可中断、可设置最长等待锁的时间、可判断是否占有锁、可配置成公平锁、可跨代码块加锁解...原创 2019-07-22 22:58:08 · 355 阅读 · 0 评论 -
Spring Transactional Async
存在问题的代码如下: @Transactional(rollbackFor = Throwable.class) public void methodA() { A a = new A(1,"new"); save(A); new Thread(()-> { A a = getA(); ...原创 2019-07-21 16:09:51 · 272 阅读 · 0 评论 -
JAVA REST API
参考链接:CodeSail | RESTful API DesignCreate REST APIs with JAX-RS 2.0菜鸟教程 | RESTFul APIRestFul API 命名什么是RESTREST是REpresentational State Transfer的缩写,是一种分布式超媒体系统的架构风格。怎么写REST API1. 基本概念使用HTTP方法,常...翻译 2019-06-21 17:27:04 · 5639 阅读 · 0 评论 -
Java Short/Integer/Long equals
所有整型包装类对象之间值的比较,全部使用equals方法比较。对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在 IntegerCache.cache 产 生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方法进行判断...原创 2019-06-26 14:47:22 · 569 阅读 · 0 评论 -
Java Lambda 函数式接口
参考链接:https://mp.weixin.qq.com/s/k_dORUKIssufVaps63Q7Uw转载 2019-06-20 11:31:39 · 259 阅读 · 0 评论 -
Java Math.round()
取最接近的指。 @Test public void testRound(){ Assert.assertEquals(12,Math.round(12.44f)); Assert.assertEquals(13,Math.round(12.64f)); Assert.assertEquals(-12,Math.round(-12.44f))...原创 2019-06-19 19:12:18 · 1160 阅读 · 0 评论 -
成员变量修饰符volatile(可见性)
转载:https://www.cnblogs.com/tangyanbo/p/6538488.htmljava内存分为工作内存和主存工作内存:即java线程的本地内存,是单独给某个线程分配的,存储局部变量等,同时也会复制主存的共享变量作为本地的副本,目的是为了减少和主存通信的频率,提高效率。主存:存储类成员变量等。可见性是指的是线程访问变量是否是最新值。局部变量不存在可见性问题,而共享...转载 2019-05-28 20:55:15 · 837 阅读 · 0 评论 -
Java 剖析 ThreadLocal
ThreadLocal转载: https://www.cnblogs.com/dolphin0520/p/3920407.html理解:为变量在每个线程中创建一个副本,每个线程可以访问自己内部的副本变量。应用场景:数据库连接、session会话管理。...转载 2019-05-28 10:03:39 · 145 阅读 · 0 评论 -
JAVA适配器模式
适配器模式转载:http://www.cnblogs.com/V1haoge/p/6479118.html类适配器模式原理:继承应用场景: 实现的接口A中不存在想要的方法,而另一个接口B中有。接口A的实现类继承接口B,调用接口B来实现接口A的方法。public interface Use1(){ void use1();}public interface Use2(){...转载 2019-05-28 10:01:41 · 174 阅读 · 0 评论 -
Java static
参考链接:https://www.cnblogs.com/dolphin0520/p/3799052.html被static修饰的变量和方法不依赖对象来进行访问,只要类被加载了,就可通过类名直接访问。static属于类,可修饰类的成员变量,类方法。static修饰的属性在内存中只有一份,而其它属性则是每个对象。静态方法静态方法不能使用非静态方法和非静态成员变量。因为非静态方法和非静态成员...转载 2019-06-18 10:58:27 · 183 阅读 · 0 评论 -
Java -XX:MaxInlineSize 方法内联
转载: https://www.cnblogs.com/xyz-star/p/10152564.html转载 2019-06-25 21:31:04 · 1076 阅读 · 0 评论 -
Enum equals
Enum equals @Test public void testEnum() { // 相等,.name()转成字符串比较,仅比较值。 boolean b = BookingType.DailyDeskReservation.name().equals("DailyDeskReservation"); Assert.assertT...原创 2019-07-21 16:06:52 · 565 阅读 · 0 评论 -
ArrayList 原理
ArrayList 原理基本属性构造方法常用方法add基本流程源码解析remove基本流程源码解析基本属性Object[] elementData; 存放数据。int size; 存储的数据个数。int DEFAULT_CAPACITY = 10; 默认的容量(可存储数据的个数)Object[] EMPTY_ELEMENTDATA = {}; 空数组。Object[] DEFAULT...原创 2019-07-05 16:23:14 · 101 阅读 · 0 评论 -
HashTable和ConcurrentHashMap的区别
HashTable和ConcurrentHashMap的区别HashTable使用数组+链表实现,ConcurrentHashMap使用的数组+链表+红黑树实现。HashTable锁住的是整张表,ConcurrentHashMap仅锁一个Node,因为ConcurrentHashMap定义了3个原子操作,用于对指定位置的节点进行操作。 //获得在i位置上的Node节点 stati...转载 2019-06-27 15:35:23 · 260 阅读 · 0 评论 -
HashMap 实现原理(Java 8)
转载:https://www.cnblogs.com/yangming1996/p/7997468.html转载 2019-06-27 10:09:11 · 116 阅读 · 0 评论 -
Java enum
enum类其实继承了java.lang.Enum.class。以下为基本用法:package com.example.demo.enums;import java.util.EnumMap;import java.util.EnumSet;/** * @author Grace.Pan * @date 2019/6/18 */public enum Season { ...原创 2019-06-18 15:23:52 · 934 阅读 · 0 评论 -
Java 类加载顺序
父类 静态成员变量 ——> 父类 static 代码块 ——> 子类 静态成员变量 ——> 本类 static 代码块 ——> 父类 构造块 ——> 父类 默认构造方法 ——> 子类 构造块 ——> 子类(有参)构造方法。package com.example.demo.basic;/** * @author Grace.Pan * @date ...原创 2019-06-18 11:41:23 · 271 阅读 · 0 评论 -
LinkedList插入数据效率不一定比ArrayList高,源码分析+实验对比
ArrayList、Vector 和 LinkedList的区别ArrayList 和 VectorLinkedListArrayList 和 VectorArrayList 和 Vector都是基于数组实现的List类,ArrayList 和 Vector类封装了一个可动态分配的Object[]数组。ArrayList 和 Vector 对象使用 initialCapacity 参数来说设...转载 2019-06-26 14:43:29 · 190 阅读 · 0 评论 -
Java的三种代理模式
Proxy转载:https://www.cnblogs.com/cenyu/p/6289209.html代理对象是对目标对象的扩展,并会调用目标对象1. 静态代理interface IUserDao(){ void save();}public class UserDao implements IUserDao(){ public void save(){ ...转载 2019-05-28 09:58:51 · 175 阅读 · 0 评论