自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 synchronized底层实现及优化机制

synchronized底层实现及优化机制前言首先介绍下synchronized锁,它属于互斥锁、悲观锁、同步锁、“重量级锁“”。它在1.6之前和1.6后加锁机制是不一样的。jdk1.6之前我简单说下流程,重点说下jdk1.6之后优化机制。jdk1.6之前可以看到synchronized加锁加的是内部的monitor对象,monitor是操作系统内部的对象,当多个线程一起访问synchronized修饰的代码块时,如果线程1先执行加锁的操作,然后执行业务方法,其他线程就会加不成功,然后阻塞在一个队

2021-05-21 12:59:44 196

原创 布隆过滤器原理及实现

布隆过滤器原理及实现前言最近有朋友面试经常被问到redis缓存穿透怎么解决,什么是redis缓存穿透呢?就是客户端去访问一个缓存和数据库都不存在的 key这样的查询直接打到数据库上。解决办法很多。1接口参数校验,2在缓存中设置空值,3布隆过滤器。本章咱们就来看下布隆过滤器怎么解决的什么是布隆过滤器布隆过滤器可以快速的从海量中数据校验一个数据是否存在。它内部结构由多个hash函数和一组bit数组成每个bit位置默认是0下面请看图实现过程1、把所有数据的位置信息添加到bit数组每条

2021-05-10 19:38:05 1391 10

原创 zookeeper分布式锁原理及实现

zookeeper分布式锁原理及实现前言写zookeeper分布式锁之前,先说下CAP理论吧C 一致性、A 可用性、P分区容错性。三者不能同时存在,由于P是必要因素,所以分为CP和AP两种模型前段时间写了redis怎样实现分布式锁,redis实现分布式锁效率是比较高的,但是什么事情都是相对性的,因为redis支持了 AP那么就放弃了CP。当我们对一致性要求特别高的时候,就需要考虑一种别的分布式锁技术了,zookeeper因为它集群的选举和同步机制,使得它是支持CP,而放弃了AP,接下来来看看zo

2021-04-29 17:01:34 247 3

原创 java排序算法整理

java排序算法整理前言程序的本质就是数据结构加算法加设计模式,趁着这段时间工作不忙又复习了下java中的排序算法,排序是应用软件设计中经常遇到的问题之一,这里总结下常用的算法,有冒泡、选择、插入、归并、希尔等。1、冒泡排序所谓冒泡排序就是数组中的数据,从第一个开始向它相邻后面的数作比较,如果大于他相邻的数就交换下位置,否则顺序不变,然后第二个数开始和第三个比较,依次类推 直到倒数第二个数。算走完一趟冒泡,冒泡的趟数等于数组长度。下面请看代码实现: private static void

2021-04-20 17:56:26 133

原创 Redis架构模式

Redis架构模式前言reids在工作中经常会被用到,它的存储效率要明显高于关系数据库(因为它的数据是存储在内存中的),除此之外还可以用来验证一些操作,分布式锁等。那么有没有想过有一天所在的redis突然崩溃了,那该怎么办呢?当然首先我们要尽量避免这种情况,但是什么事情都有万一 万一发生呢?如果是只有一台redis服务器,那就等死 或者跑路吧,如果不想这样的结果,就告知你的老板多备用几台服务器,否则会有这样的风险。忽悠到几台服务器后,(口误,是拥有后),我们怎么来用多台redis服务器来解决这

2021-04-16 18:18:31 136

原创 怎么保证接口的幂等性

怎么保证接口的幂等性前言首先来说下幂等性这个概念吧,接口幂等性就是同一个接口多次调用的结果是一样的。场景:1、form表单操作,因为网络原因或者客户手快的原因连续点了好几次,数据库多了几条不该有的数据,或者某个字段的值修改结果跟逾期不符合。2、第三方接口回调 就拿支付回调来说,通常我们会在回调中更新下订单,还有添加一些支付信息等。多次调用会出现重复记录,或者订单某个字段的更新错误。上面的操作 总结下就是两种1、添加insert操作,会导致重复记录2、更新update操作,会导致数据更新错误

2021-04-16 15:28:07 680 1

原创 HashMap底层实现原理

HashMap底层实现原理最近有时间看了下HashMap的源码,收获还是蛮多的,正好好多朋友面试问的也比较多,就给大家来分享一下,顺便自己加深下印象。首先来看下它里面主要参数 //初始容量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 //最大容量 static final int MAXIMUM_CAPACITY = 1 << 30; //默认因子 stati

2021-04-14 18:49:49 218 2

原创 Redis分布式锁原理和实现

redis分布式锁实现一、写在前面说到锁,大家也不陌生,不管什么代码 加了锁也就意味着 同步 意味着性能会下降,但是有的业务场景不加还不行 当多个线程一个公共资源的时候比如我们熟悉的库存加减等,那么我们怎么解决呢?在传统单体应用单机部署的情况下,解决的办法很多比如用ReentrantLock或Synchronized关键字等,但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Ja

2021-04-13 16:19:30 732

原创 jvm之GC垃圾回收算法整理

jvm垃圾回收机制一般来说jvm对于初中级程序员来说很少用的到,但是现在jvm基本上是所有大厂必问的知识点了,想进大厂拿高工资这是必须掌握的了,接下来我会从几个方面讲解,希望会对大家有所帮助。一、jvm垃圾定位算法首先我们要明白什么是可回收垃圾对象,那就是看这个堆里面的对象有没有被栈中的引用指向它,有的话就不是垃圾对象,反之如果没有被指向就是垃圾对象,用代码举个简单例子public class HelloWord { public static void main(String[] a

2020-12-28 14:17:32 173

原创 java excel导出

Java excel导出本篇文章是利用poi+反射+文件流技术做出的excel导出读文件指定行的方法:/** *功能描述:读文件指定行的内容 * @author lichangchun * @date 2020/6/5 * @param filePath 路径 n代表第几行 * @return java.lang.String */ public static String readTxt(String filePath,int n

2020-09-22 16:05:52 204

原创 java h5端 支付宝支付

h5端接入支付宝支付接口–spring cloud常量配置AlipayConfig // 请求网关地址 public static final String URL = "https://openapi.alipay.com/gateway.do"; // 编码格式 public static final String CHARSET = "UTF-8"; // 返回格式 public static final String FORMAT = "json"

2020-07-07 15:12:02 2000 5

空空如也

空空如也

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

TA关注的人

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