自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QQ:690217293

ACM点滴成长

  • 博客(93)
  • 收藏
  • 关注

原创 游客须知! QQ:690217293 对代码有疑问的Q我,求交流!

1

2017-07-24 16:00:58 455 1

原创 SpringCloud Alibaba Demo(Nacos,OpenFeign,Gatway,Sentinel)

SpringBoot、SpringCloud 、SpringCloud Alibaba 以及各种组件存在版本对应关系。可参考下面版本对应。

2023-10-31 18:39:04 1077

原创 从零开始学习秒杀项目

使用MYSQLgoods代表货物信息表order_info订单详情表seckill_good秒杀商品表seckill_order秒杀商品订单表user用户表自定义异常类在项目中会经常遇到,主要帮助用户抛出自定义的异常,方便用户理解。this.cm=cm;return cm;因为继承自RuntimeException所以必须有个super方法。

2023-10-18 16:28:56 188

原创 自定义布隆过滤器

【代码】自定义布隆过滤器。

2023-09-26 14:03:38 95

原创 (保姆级)SpringBoot整合mybatis-plus样例工程参考

gitee:https://gitee.com/lemon8080/mybatis-plus-test项目结构展示依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http

2022-04-29 11:04:07 248

原创 Vue 中data 和 data() 区别

上面那种方法是new Vue实例中的写法。这种写法在Vue实例中是全局可见的,容易造成数据污染。new Vue({ el: "#id", data: { message: "Vue实例" }});第二种data写法是在组件中的写法export default { name: "home"; data() { return { message: "组件化项目一般这样写~", ...... } }}仅在组件内可见,对其他组件不生效。...

2022-04-14 10:22:11 1173

原创 基于Caffeine本地缓存结合Redis的两级缓存(初始版本)

缓存作为目前高性能服务框架中不可或缺的一部分,扮演着越来越重要的角色。实际的项目中通常会用redis做第一层缓存,如果不命中则会直接查询数据库,这种架构可以减轻数据库的压力。如今可以在其基础上再做出改进,配合本地缓存再次去提升响应速度和服务性能。由此诞生二级缓存架构。借用网图:话不多说:创建springboot项目,整合redis和数据库配置以及相关依赖。首先我们需要自己创建一个Caffeine中的Cache对象来缓存数据,他的数据结构类似于Hashmap.详细配置如下:@Co

2022-04-09 22:07:22 2082

原创 @RequestParam和@PathVariable的区别

关于两者的区别可以用一个请求路径来体现出来http://localhost/mdeditor/chen?id=39上面的路径对应的Controller请求为@DeleteMapping("mdeditor/chen")public void del(@RequestParam("id") Long id)http://localhost/mdeditor/get/39上面的路径对应的Controller请求为@GetMapping("get/{id}")public Order

2022-04-09 20:43:32 94

原创 对于泛型的理解

什么是泛型? java有编译器和虚拟机,编译器负责将java文件转换为.class文件,虚拟机负责加载并运行.class文件。对于泛型类,编译器 在编译的时候将泛型代码转 化为非泛型代码,将泛型参数擦除掉,换成必要的强制类型转换。虚拟机在执行的时候,不知 道泛型是怎么回事。 泛型的本质是参数化类型,也就是将...

2019-08-13 15:26:03 123

原创 主函数main为啥是static的?

main函数为static ,这样就在不用创建实例的情况下调用里面方法或者变量

2019-08-07 23:35:33 271

转载 关于@AutoWired和构造函数的执行顺序问题

如果构造函数中需要调用本类中的一个函数,而这个函数用到了本类中的@AutoWired。这样会报错,spring 给出的建议是:使用构造函数时候建立依赖注入public class PluginServiceImpl implements IPluginService { /** * 系统加载的所有插件的接入接口列表 */ @Autowired ...

2019-08-07 17:23:56 1540

原创 bean的生命周期

1.spring对bean进行实例化2.spring将值和bean的引用注入到bean对应的属性中3.如果bean实现了BeanNameAware接口,Spring将bean 的ID传递给setBeanName()方法4.如果bean 实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器的实例传入。5.如果...

2019-08-07 16:15:55 88

原创 ArrayList中的modCount个人理解

/** * The number of times this list has been <i>structurally modified</i>. * Structural modifications are those that change the size of the * list, or otherwise perturb it ...

2019-08-07 13:45:51 428

原创 ArrayList的动态扩容机制

ArrayList有三种初始化的方法public ArrayList()public ArrayList(int initialCapacity) public ArrayList(Collection<? extends E> c)第一种无参的构造方法/** * Constructs an empty list with an initial capa...

2019-08-07 11:24:43 177

原创 荷兰国旗问题(快排基础)

问题描述:现在有若干个红、白、蓝三种颜色的球随机排列成一条直线。现在我们的任务是把这些球按照红、白、蓝排序。简述:我们需要得到一个中间值(白色)作为分界线,将两边分隔开。我们将此问题类比成: 给定一个数num,把比他小的放在左边,比他大的放在右边。public static int[] helan(int arr[],int L,int R,i...

2019-07-31 16:41:22 111

原创 再聊--》归并排序(小和问题求解)

小和问题在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和。 求一个数组的小和。例子:[1,3,4,2,5]1左边比1小的数, 没有;3左边比3小的数, 1;4左边比4小的数, 1、 3;2左边比2小的数, 1;5左边比5小的数, 1、 3、 4、 2;所以小和为1+1+3+1+1+3+4+2=16----------------------------...

2019-07-31 15:39:26 109

原创 再聊--》归并排序

归并排序利用递归的思想,每次递归的将数组分成两个部分,每一部分无限再次递归分成两个部分。就比如5,3,1,6,2这个数组第一次划分为5 , 3 ,1 和 6 ,2第二次划分为{5,3 和1 } 6和2第三次划分为5, 3 1...

2019-07-31 11:28:06 98

原创 再聊--》插入排序

插入排序默认左边都是已经排好序的,类似于我们平时生活中打扑克,抽一张扑克,从已经排好序的扑克找出需要插入的位置,从右到左一次比较,找到合适的位置,插入进去。public static void insertionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 1...

2019-07-31 10:48:05 83

原创 再聊--》选择排序

选择排序和冒泡排序差不多,选择排序是每次遍历找出比当前元素更小的进行替换。每次循环过后,在头位置是最小的元素。public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 0; i < arr.length - 1...

2019-07-31 10:45:02 71

原创 再聊--》冒泡排序

冒泡排序作为最基础的排序是必须得熟练掌握的话不多说先上代码public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int e = arr.length - 1; e > 0; e--) { for (int i = 0;...

2019-07-31 10:40:27 93

原创 什么是AQS?

队列同步器(AbstractQueuedSynchronizer)是用来构建锁和其他同步组件的基础框架,他使用一个int成员变量表示同步状态,通过内置的FIFO来完成资源获取线程的排队工作。同步器使用的主要方法是继承,子类通过继承同步器并实现他的抽象方法来管理状态,在此过程中避免不了状态的改变:getState(),setState(int newState),和compareAndSet...

2019-07-28 08:55:02 943

转载 Java并发编程之基于线程池技术的简单Web服务器

转载的:https://blog.csdn.net/jisuanjiguoba/article/details/80548045

2019-07-27 23:33:17 161

原创 公平锁和非公平锁的内存含义

1.公平锁和非公平锁释放时,最后都要写一个volatile变量state2.公平锁获取的时候,首先会去读volatile变量3.非公平锁获取时,首先会利用CAS更新volatile变量,这个操作同时具有volatile读和volatile写的内存含义...

2019-07-26 09:45:21 118

原创 公平锁和非公平锁的内存语义

1.公平锁和非公平锁释放时,最后都要写一个volatile变量state2.公平锁获取的时候,首先会去读volatile变量3.非公平锁获取时,首先会利用CAS更新volatile变量,这个操作同时具有volatile读和volatile写的内存含义...

2019-07-26 09:44:38 177

转载 volatile写和volatile读的内存语义

1.线程A写一个volatile变量,实质上是线程A向接下来将要读这个volatile变量的某个线程发出了消息2.线程B读一个volatile变量,实质上是线程B接受了之前某个线程发出的消息3.线程A写一个volatile变量,随后线程B读这个volatile变量,这个过程实质上是线程A通过主内存向线程B发送消息...

2019-07-25 23:17:41 385

原创 compareAndSet函数

boolean compareAndSet(V expectedReference,V newReference)expectedReference-->期望引用newReference--》更新后的引用两个值相同返回值为true---------------------public boolean compareAndSet(VexpectedReference...

2019-07-25 14:10:20 761

原创 CAS实现计数器

package q4;import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicInteger;public class Counter { private AtomicInteger atomicInteger=new AtomicInteger(0); p...

2019-07-25 11:31:04 405

原创 CAS

CAS操作需要两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较旧值有没有变化,如果没有发生变化,才交换新值,如果发生变化,则不变...

2019-07-25 10:18:49 75

原创 synchronized在jvm的实现原理

jvm基于进入和退出Monitor对象来实现方法同步和代码块同步,但是两者的实现方式不同,代码块同步是使用monitorenter和monitorexit指令实现的,而方法同步是使用另一种方法实现。但是方法同步同样可以用这两个指令来实现。monitorenter指令是编译后插入到同步代码块的开始位置,而monitorexit是插入到方法结束处或者异常处,jvm保证每一个monitoren...

2019-07-25 09:27:09 367

原创 synchronized实现同步的3种形式

对于普通同步方法,锁 是当前实例对象对于静态同步方法,锁是当前类的class对象对于同步代码块,锁是synchronized括号里面配置的对象

2019-07-25 09:20:34 209 1

原创 饿汉模式/立即加载

public class MyObject { private static MyObject myObject=new MyObject(); private MyObject() { } public static MyObject getInstance() { return myObject; }}public class MyThread extend...

2019-07-24 13:56:43 243

原创 懒汉模式(DCL双检查锁机制)

public class MyObject { private volatile static MyObject myObject; private MyObject() { } public static MyObject getInstance() { try { if (myObject!=null) { }else { Thre...

2019-07-24 13:53:48 468

原创 ReentrantReadWriteLock类读写问题总结

lock.readLock().lock()lock.writeLock().lock()读写,写读,写写都是互斥的,读读是异步的,非互斥的

2019-07-23 22:38:24 112

原创 关于lock的一些函数记录

int getHoldCount():查询当前线程保持此锁定的个数,也就是调用lock()方法的次数int getQueueLength()返回正等待获取此锁定线程估计数,比如有5个线程,1个线程首先执行了await()方法,那么在调用次函数返回值为4,int getWaitQueueLength(Condition condition)作用是返回等待与此锁定相关的给定条件Conditi...

2019-07-23 22:07:11 421

原创 Condition的实现等待/通知与synchronized的类比

Object类中的wait()方法相当于Condition中的await()方法Object类中的wait(long) 相当于Condition中的await(long,TimeUnit)Object类中的notify()相当于Condition中的signal()Object类中的notifyAll相当于Condition中的signalAll()...

2019-07-23 15:41:35 101

原创 wait()和notify()锁是否自动释放问题

当方法wait()被执行后,锁自动释放,但是执行完notify后,锁不是自动释放的,必须等到所在的同步快全部执行完成之后才能运行其他的。

2019-07-22 10:26:54 955

原创 Volatile为什么不能保证原子性

Volatile只能保证可以从主内存中获取到最新的值,当执行一个num+=1;的时候,可以划分为3步,num=1某一个线程可以在中间的某部获取到num的值,存在线程安全。...

2019-07-22 08:24:53 85

转载 HashMap 在 JDK 1.8 后新增的红黑树结构(转载)

https://blog.csdn.net/u011240877/article/details/53358305

2019-07-21 22:52:58 126

转载 hashmap 详解(转载)

https://blog.csdn.net/u011240877/article/details/53351188

2019-07-21 09:08:19 75

转载 HashMap 中 equals() 和 hashCode() 有什么作用?

HashMap 的添加、获取时需要通过 key 的 hashCode() 进行 hash(),然后计算下标 ( n-1 & hash),从而获得要找的同的位置。当发生冲突(碰撞)时,利用 key.equals() 方法去链表或树中去查找对应的节点。...

2019-07-21 09:04:06 1791

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除