自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (1)
  • 收藏
  • 关注

原创 redis数据结构

关于Redisredis是一个开源的使用C语言编写的一个kv存储系统,是一个速度非常快的非关系远程内存数据库。它支持包括String、List、Set、Zset、hash五种数据结构。除此之外,通过复制、持久化和客户端分片等特性,用户可以很方便地将redis扩展成一个能够包含数百GB数据和每秒处理上百万次的请求的系统。目前支持多种语言的api,方便用户使用。redis同时也内置了事务、LUA脚本、复制等功能,提供两种持久化选项,一种是每隔一段时间将数据导入到磁盘(快照模式),另一种是追加命令到日志中

2021-02-13 13:10:24 110

原创 redis有序集合数据结构

介绍:ZSet数据结构类似于Set结构,只是ZSet结构中,每个元素都会有一个分值,然后所有元素按照分值的大小进行排列,相当于是一个进行了排序的链表。如果ZSet是一个链表,而且内部元素是有序的,在进行元素插入和删除,以及查询的时候,就必须要遍历链表才行,时间复杂度就达到了O(n),这个在以单线程处理的Redis中是不能接受的。所以ZSet采用了一种跳跃表的实现。这个实现有点类似于Kafka存储消息是使用的稀疏索引,kafka这个相对较简单,可以用来介绍类比学习。如果熟悉Kafka,就知道Kaf

2021-02-10 22:55:06 372

原创 http相关

http0.9只有get请求,没有请求头,只传输文本,响应后直接关闭http1.0任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。这为互联网的大发展奠定了基础。每次通信都必须包括头信息(HTTP header),用来描述一些元数据。1.http1.0和http1.1区别https://www.cnblogs.com/heluan/p/8620312.htmla.节约带宽,1.1支持只传header,b.长连接,1.1默认开启长连接,可以复用连.

2021-02-10 11:16:47 97

原创 Spring事务

事物传播行为介绍:  @Transactional(propagation=Propagation.REQUIRED) :如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)  @Transactional(propagation=Propagation.NOT_SUPPORTED) :容器不为这个方法开启事务  @Transactional(propagation=Propagation.REQUIRES_NEW) :不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续...

2021-01-24 16:45:08 70

原创 java队列理解

ThreadPoolExecutor的三种队列SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueueSynchronousQueueSynchronousQueue是无界的,是一种无缓冲的等待队列,但是由于该Queue本身的特性,在某次添加元素后必须等待其他线程取走后才能继续添加;可以认为SynchronousQueue是一个缓存值为1的阻塞队列,但是 isEmpty()方法永远返回是true,remainingCapacity() 方法永远返

2020-12-15 20:56:46 120

原创 类加载,反射,双亲委派,生命周期

21.深入理解java反射(运行时校验读取class文件信息的字段,方法,构造方法等)https://www.cnblogs.com/luoxn28/p/5686794.htmlRTTI在编译知道此类型去验证,运行时让我们知道是什么类型,反射打破这个规律在运行时,去验证加载,匿名对象的类信息就在运行时被完全确定下来,而在编译时不需要知道任何事情。reflect类库一起对反射的概念进行了支持,该类库包含了Field字段、Method方法以及Constructor构造器类(每个类都实现了Member接口

2020-11-30 21:08:00 118

原创 redis线程模型(多路复用)

Redis 线程模型:https://www.jianshu.com/p/8f2fb61097b8https://blog.csdn.net/m0_37524661/article/details/87086267,redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。文件事件处理器的结构包

2020-11-27 14:30:20 245

原创 redis集群

https://blog.csdn.net/yangshangwei/article/details/105477188

2020-11-27 09:58:33 132

原创 redis主从同步

基础前提:https://www.cnblogs.com/zxs117/p/11242026.htmlredis的持久化方式RDB和AOF的区别https://baijiahao.baidu.com/s?id=1654694618189745916&wfr=spider&for=pcRedis DB Appent only file全量同步:1、从服务器连接主服务器,发送SYNC命令2、主服务器执行BGSAVE命令(RDB)生成RDB文件并使用缓冲区记录此后执行的...

2020-11-23 20:11:19 111

原创 JVM内存分配以及存储总结

最近看了一下JVM的内存分配,还是比较复杂的。这里做个总结,首先一个common sense就是操作系统会为每个java进程实例化一个jvm实例。jvm然后再来运行java程序,具体的过程就不多说了,简单来说就是核心classloader如bootstrap, extention, System对类的加载(一定是此顺序,jvm对类的加载采取的是代理委托方式,防止核心类被hack),找到对应的main入口来运行。这里主要是想总结一下,每个java进程对应的jvm对内存的分配,运行时是什么样的。我们都知道j

2020-10-09 17:48:50 152

转载 G1垃圾收集器

jvm所有垃圾回收器:https://www.cnblogs.com/chenpt/p/9803298.htmlG1从入门到放弃(一)最近在看关于G1垃圾收集的文章,看了很多国内与国外的资料,本文对G1的这些资料进行了整理。这篇合适JVM垃圾回收有一定基础的同学,作为G1入门可以看一下,如果要死磕G1实现的内容细节。大家可以找R大。 个人认为R大是目前国内JVM领域研究的先驱了,当然R大也是不建议大家去看JVM的源码的。为啥别读HotSpot VM的源码G1系列第一篇文章会介绍G1的理论知识,不会

2020-09-22 18:46:30 146

转载 Spring的AOP实现,JDK与CGLIB区别

前言Github:https://github.com/yihonglei/thinking-in-spring(spring工程)JDK动态代理实现原理(jdk8):https://blog.csdn.net/yhl_jxy/article/details/80586785CGLIB动态代理实现原理:https://blog.csdn.net/yhl_jxy/article/details/80633194一 JDK和CGLIB动态代理原理1、JDK动态代理利用拦截器(拦截器必须实

2020-08-23 17:22:20 1141

转载 干啃synchronized

0 前言记得开始学习Java的时候,一遇到多线程情况就使用synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着学习的进行我们知道在JDK1.5之前synchronized是一个重量级锁,相对于j.u.c.Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。不过,随着Javs SE 1.6对synchronized进行的各种优化后,synchronize

2020-07-30 13:47:27 158

原创 记录高并发下连接数过多引发的问题调优(HTTP1.1-keepalive)

最近在对推送服务吞吐量进行提升优化,保证上游业务tps4000提升到tps7000,主要是减少了接口响应时间,保证业务方在总推送量不变和本地服务机器不增加的前提下,每秒的吞吐量提升,提升后自然短时间内tcp连接也增加很多,1.推送服务调用个推有http请求,2.业务方调用推送服务有http请求。没想打的是恰好这个连接达到了UC...

2020-07-10 16:52:10 4469

原创 理解Java内存模型-JMM

java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现java程序在各种不同的平台上都能达到内存访问的一致性。可以避免像c++等直接使用物理硬件和操作系统的内存模型在不同操作系统和硬件平台下表现不同,比如有些c/c++程序可能在windows平台运行正常,而在linux平台却运行有问题。物理硬件和内存首先,在单核电脑中,处理问题要简单的多。对内存和硬件的要求,各种方面的考虑没有在多核

2020-05-21 19:57:33 76

原创 mysql数据库索引和锁和日志

数据库索引和锁索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的。本文力求简单讲清每个知识点,希望大家看完能有所收获声明:如果没有说明具体的数据库和存储引擎,默认指的是MySQL中的InnoDB存储引擎一、索引在之前,我对索引有以下的认知:索引可以加快数据库的检索速度 表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改等维护任务的速度。 索引需要占物理和数据空间。 了解过索引的最左匹配原则 知道

2020-05-21 17:52:52 435 3

转载 Tomcat视角看一次http请求【转】

一次HTTP请求如上图,一次完整的HTT请求,大致包含如下步骤:域名解析 TCP连接(三次握手) 建立连接后发送请求数据 服务器处理请求 发送响应数据 浏览器解析响应数据 浏览器渲染前端页面http请求过程看似简单,但如果你对任何事情都抱有一定的好奇心,要从底层根本性的了解以上各个环节,其实及其复杂,需要的知识量也很丰富,基本涵盖了你大学学的所有专业科目(不信?后面我们慢慢来看)。今天我们站着Tomcat的视角,去了解http请求在Tomcat中到底经历了些什么。我们将..

2020-05-21 17:22:14 231

转载 ThreadLocal解读

前言ThreadLocal为变量在每个线程中都创建了一个副本,所以每个线程可以访问自己内部的副本变量,不同线程之间不会互相干扰。本文会基于实际场景介绍ThreadLocal如何使用以及内部实现机制。应用场景最近的一个web项目中,由于Parameter对象的数据需要在多个模块中使用,如果采用参数传递的方式,显然会增加模块之间的耦合性。先看看用ThreadLocal是如何实现模块间共享数据的。class Parameter { private static ThreadLocal&.

2020-05-21 17:15:37 120

原创 jstack(查看线程)、jmap(查看内存jvm)和jstat(性能分析)

/opt/java8/bin/jstackUsage: jstack [-l] <pid> (to connect to running process) 连接活动线程 jstack -F [-m] [-l] <pid> (to connect to a hung process) 连接阻塞线程 jstack [...

2020-04-17 17:05:54 4402

转载 垃圾回收器基本概念-Jvm垃圾回收器(终结篇)

Jvm运行时数据区:https://www.cnblogs.com/chenpt/p/8953435.htmlJvm垃圾回收器(算法篇):https://www.cnblogs.com/chenpt/p/9799095.html知识回顾:第一篇《Jvm垃圾回收器(基础篇)》主要讲述了判断对象的生死?两种基础判断对象生死的算法、引用计数法、可达性分析算法,方法区的回收。在第二篇《Jv...

2020-04-17 15:56:27 132

原创 记录一次高并发下性能问题解决(全局httpclient)

最近在重构底层推送服务,遇到了性能问题,在这里总结下经验需求:支撑推送调用量持续4小时每分钟30万(tps5K),最好同步返回结果,每分钟响应时间TP99小于1s,平均小于100ms。我们来分析下,首先这个量级确实有点大,如果同步返回, 又对响应时间要求比较高,那先做成同步的看看效果。新的开始这个接口逻辑简单对内存需求不大,关键点在于有需要使http调用外网的接口,也就是说调用外网的性能直...

2020-03-19 12:11:35 1318

原创 可见性Volitile+原子类atomic+cas理解

volatile的内存模型:[url]http://blog.csdn.net/basycia/article/details/52058986[/url]volitile与原子类atomic区别:[url]http://blog.csdn.net/jurson99/article/details/53406849[/url]atomic保证类原子性,volitile保证多个线程可...

2018-01-02 11:41:57 1008

原创 HashMap与ConcurrentHashMap 的数据结构

[b]HashMap:[/b]数组与链表,每个数据对应一个链表插入时进行与运算[url]http://blog.csdn.net/tingting256/article/details/52475422[/url]数组默认长度16,当超过16*0.75=12时,组数长度变为16*2->叫resize,毁HashMap的基础构造器HashMap(int initialCapaci...

2017-12-24 21:01:59 112

原创 rocketmq长轮寻机制

基础知识消费端push与pull比对 :https://blog.csdn.net/wabiaozia/article/details/102057941https://blog.csdn.net/qq_33709508/article/details/107973371

2021-08-28 20:42:22 196

原创 rocketmq角色

https://www.pianshen.com/article/1829201002/1 Topic 首先需要提到的概念是Topic。Topic是RocketMQ中的一个重要概念,RocketMQ的各组件都是围绕着Topic建立起对应关系的。 在RocketMQ官方文档和本文中, Topic在不同的语境下被赋予了两种不同的语义: 1)消息的Topic属性值 在描述Consumer的订阅设置信息或消息的属性时。 2)Topic属性为某个值的消息(单个消息...

2021-08-28 20:39:47 211

原创 分布式调度平台XXL-JOB源码分析-调度中心2.1.0

官方文档,执行器,调度中心,时序图架构图上图是我们要进行源码分析的2.1版本的整体架构图。其分为两大块,调度中心和执行器,本文先分析调度中心,也就是xxl-job-admin这个包的代码。关键bean在application.properties配置正确的数据库连接信息后,直接启动XxlJobAdminApplication即可。配置类XxlJobAdminConfig,里面维护了一些调度中心端的配置数据。XxlJobScheduler这个组件实现了InitializingBea

2021-06-28 17:43:24 425

原创 mybatis

https://baijiahao.baidu.com/s?id=1612921186747779649&wfr=spider&for=pc

2021-01-24 16:50:28 64

原创 AQS:AbstractQueuedSynchronizer原理

AQS:AbstractQueuedSynchronizer 原理队列排队,阻塞调度?aqs一个抢占资源同步器框架,里面有队列,对队列等待,唤醒机制。一个线程获取资源,如果资源没有占用,返回成功获取资源,如果资源被占用,放到有序队列末尾,监听前一个节点,等待到前一节点释放状态变更(要求状态小于0,大于0是取消了抢占任务),此线程唤醒调整头节点再尝试获取资源。1,非公平和公平锁抢占资源不成功分别什么处理流程2,非公平锁自旋插入队尾,什么场景会不入队3,说说可重入锁的实现4,其中还有个状态.

2021-01-05 16:04:47 130

原创 redis事务

https://www.cnblogs.com/DeepInThought/p/10720132.html你真的懂Redis事务吗?https://cloud.tencent.com/developer/article/1189074

2020-11-27 18:39:14 182

原创 equals()和hashCode()区别与重写

[url]https://www.cnblogs.com/jesonjason/p/5492208.html[/url][url]http://blog.csdn.net/javazejian/article/details/51348320[/url][code="java"]package com.pingan.haofang.agent.saas.dict.dto;i...

2018-03-05 14:25:36 141

原创 分布式事务

[b]事务[/b] 原子性,事务要么全执行,要么全不执行。一致性,事务开始前和开始后,所有数据保证一致状态。持久性,保存在数据库是持久不变的。隔离性,同一时间同一事物,不同事务是隔离的。[b]传播行为:[/b]1、PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。2、PROPAGATI...

2018-01-25 20:37:23 82

原创 海量数据排序(电商应用)

[b]问题:[/b]海量排序数据:4亿数据放哪里呢不放数据库,不放集合类(内存溢出),是存放在文件里内存有限,50或500亿单词数字文本进行排序?稳定排序&不稳定排序:[url]https://www.cnblogs.com/codingmylife/archive/2012/10/21/2732980.html[/url]解决问题多线程高并发,海量数据...

2018-01-16 16:53:53 136

原创 分布式锁实现

先理了解本地锁Lcok:[url]http://572327713.iteye.com/blog/2407789[/url][b]1.基于数据库实现分布式锁[/b]性能较差,容易出现单点故障锁没有失效时间,容易死锁非阻塞式的不可重入[b]2.基于缓存实现分布式锁[/b]性能好锁失效时间难设置,容易死锁非阻塞式的(使用线程等待解决)不可重入...

2018-01-16 10:53:50 137

原创 支付宝花呗计算金额工具类

[url]https://docs.open.alipay.com/60/104790/[/url][url]https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.ZketYD&treeId=338&articleId=106464&docType=1[/url][url]https://docs.open.alipa...

2018-01-09 18:15:54 472

原创 多线程并发Future模式应用以及jdk源码分析

多线程三种方式:[url]http://blog.csdn.net/aboy123/article/details/38307539[/url]runnable与callable区别:[url]https://www.cnblogs.com/frinder6/p/5507082.html[/url]callable与futurTask实现:[code="java"]pack...

2018-01-07 17:03:59 280

原创 数据库死锁

[b]死锁(Deadlock)[/b]所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。 一种情形,...

2017-12-26 11:35:07 84

原创 非阻塞IO和异步IO的区别

[url]https://www.cnblogs.com/euphie/p/6376508.html[/url][url]http://blog.chinaunix.net/uid-26000296-id-3754118.html[/url]非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。...

2017-12-24 21:13:31 1792

原创 算法相关

1.选择排序:不稳定,时间复杂度 O(n^2)2.插入排序:稳定,时间复杂度 O(n^2)3.冒泡排序:稳定,时间复杂度 O(n^2)4.堆排序:不稳定,时间复杂度 O(nlog n)5.归并排序:稳定,时间复杂度 O(nlog n)6.快速排序:不稳定,时间复杂度 最理想 O(nlogn) 最差时间O(n^2)7.希尔排序:不稳定,时间复杂度 平均时间 O(nlogn) ...

2017-12-21 16:52:16 70

原创 多线程并发获取订单号

[b]使用倒计数器(信号量)重现高并发场景:[/b][code="java"]package com.baozun.trade;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.CountDownLatch;import java.util.concur...

2017-12-20 19:56:44 820

原创 asiapay支付调用

国际信用卡支付,官方有英文也有中文文档,登录后可以看中文文档[url]https://test.paydollar.com/b2cDemo/gb/merchant/mis_index.html[/url][img]http://dl2.iteye.com/upload/attachment/0127/3580/f1c0b3cc-16c3-3852-b7c1-4f9415f57711.p...

2017-10-13 15:03:29 1489

dubbo-master.zip

dubbo源码学习 配合官方文档使用 http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

2020-05-21

空空如也

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

TA关注的人

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