自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(168)
  • 资源 (6)
  • 收藏
  • 关注

原创 微服务分布式场景看CAP

CAP定义:在一个分布式系统,且这个分布式系统互相连接并共享数据的集合

2022-10-02 23:54:54 1384 2

原创 Spring事务源码浅析篇

一、简介spring事务管理是基于spring Aop基础上实现的,也是通过增加一个advisor通知器封装pointCut和advice。在advice中事务进行事务。根据Spring Aop原理,因这个方法增加了@Transactional,所以事务的advisor会对这个类生效,在生成bean对象时,检测到有advisor就会生成代理对象。spring事务几个重要的组件:BeanFactoryTransactionAttributeSourceAdvisor:事务处理的advisorTran

2020-10-30 10:19:59 221

原创 Spring Aop源码解析篇

一、简介:Spring Aop:面向切面编程,在执行目标方法的前后穿插事件,如实现事务,缓存,安全等功能。目前成熟的技术:AspecctJ,Javassist。spring对aspectJ进行了封装。二、Aop包含如下:Advice通知:为切面增强提供织入接口(就是穿插的事件统一实现接口标准化),Advice是Aop定义的标准接口。spring进行了扩展接口:BeforeAdvice,AfterAdvice, ThrowsAdvice; 如下是一个空接口,增强方法自行定义子类进行处理。/*.

2020-09-09 13:33:50 297

原创 spring boot中mysql驱动加载过程

1、我们一般选择的Datasoure工具类private static final String[] DATA_SOURCE_TYPE_NAMES = new String[] { "org.apache.tomcat.jdbc.pool.DataSource", "com.zaxxer.hikari.HikariDataSource", "org.apache.commons.dbcp.BasicDataSource", // deprecated "org.apache.commons.dbcp2..

2020-07-07 19:17:05 1091

原创 Spring boot启动加载嵌入的tomcat过程

Spring boot启动加载嵌入的tomcat过程:1、执行SpringApplication.run方法。进入这个方法,会有一个refreshContext(context);方法。其中的context是spring boot自定义的一个类EmbeddedWebApplicationContext继承了AbstractApplicationContext(); 重写封装了其中的onRefresh和finishRefresh方法。2、开始执行context覆盖的refresh方法,其实内部就是去执

2020-06-27 20:11:51 387

转载 深入理解Java虚拟机三 垃圾回收机制

前言文章是看了《深入理解Java虚拟机》书后进行的整理和总结,算是一个读书笔记吧。深入理解Java虚拟机一 虚拟机内存管理机制 深入理解Java虚拟机二 虚拟机类加载机制 深入理解Java虚拟机三 垃圾回收机制一、如何确定对象已死虚拟机的垃圾收集策略自动为我们管理虚拟机的内存空间,当某个对象“已死”,虚拟机就会在适当的时机将该对象占用的内存释放。如果你是一个思维灵活的人,那么你应该看出这句话的几个要点了。如何判断对象是否“已死”,或者说已经不再使用了呢? 如何释放这些对象占用的内存?

2020-06-27 12:48:24 204

原创 java 类加载器,SPI机制,spring factories的原理

java的SPI机制打破双亲委派进行加载类。约定条件如下:1、当一个服务提供者提供了一个接口的具体实现后,在该服务打的jar包里的META-INFO/services目录下创建一个以接口全限名为命令的文件,文件里的内容为接口的实现类。2、将这个jar包放入到主程序的classPath中。...

2020-06-11 18:14:05 1382 1

原创 java NIO及IO模型介绍

NIO: 使用的对外内存。三大组件:Channel:通道,通道有点像流,数据可以从Channel读到Buffer中。通过linux底层对网络io或文件io建立通道。 FileChannel,DatagramChannel,SocketChannel,ServerSocketChannel //在和服务端连接成功之后,为了可...

2020-04-25 16:20:31 513

原创 springboot 用war包部署

由jar变成warpom.xml:<packaging>jar</packaging>如果是上面的打包方式,启动方式则为mvn packagejava -jar target/mymodule-0.0.1-SNAPSHOT.jar改变成warpom.xml:<packaging>war</packaging> <...

2020-04-03 00:33:33 175

原创 ArrayBlockingQueue数组队列的实现原理及实现一个demo

ArrayBlockingQueue数组队列的实现原理:1、对一个数组进行添加和取出数据操作。2、其中的put和get用同一把lock锁进行互斥操作,控制多线程并发情况。3、当put方法中,数组满时,通过lock下的conditionA 调用await方法阻塞当前线程(LockSupport.park方法)并释放了lock锁,并将阻塞线程存入到队列中。4、由于3步骤已经释放了lock锁,...

2020-03-29 22:49:51 582

原创 ThreadPoolExecutor线程池实现原理

一、java线程池ThreadPoolExecutor组成结构:1、核心线程数corePoolSize:当每次excute方法时,如果当前使用线程数小于核心线程数,则创建线程。2、最大线程数maxPoolSize: 当核心线程数使用完了,队列装满了,且使用线程数还未超过最大线程数,就可以继续创建线程。3、keepAliveTime: 当使用线程数大于核心线程数,且空闲时间超过keepAli...

2020-03-29 01:10:16 175

原创 java AQS、CountDownLatch、ReentrantLock锁实现原理

ReentrantLock原理:通过CAS指令 + AQS队列实现对线程加锁。结构:ReentrantLock实现接口Lock的lock()和unLock()方法,内部有两个内部类公平锁FairSync和非公平锁NonfairSync,这两个类均继承了AbstractQueueSynchronizer(里面存有Node双向链表组成一个队列,还有head,tail节点,state状态,waitS...

2020-03-24 00:14:22 269

原创 java中的AtomicInteger的详细原理

这个原理在网上搜索了很多都没搞清楚真正原因,后来参照了一个帖子彻底解决了我的疑问:https://blog.csdn.net/qq_34115899/article/details/830188701、首先确定实例域在class文件中的偏移量位置。这个偏移量设置在valueOffset中,即如下代码2、当调用当外部调用incrementAndGet或addAndGet等方法时,会调用...

2020-03-22 16:14:00 1349

原创 Spring常用的一些扩展功能

1、实现接口BeanPostProcessor的postProcessAfterInitialization和postProcessBeforeInitialization方法。 监听一个bean在初始化前或初始化后的处理。 如下图应用: 2、实现接口ApplicationListener。spring提供了监听器监听不同的事件,根据不同的事件在spring加载...

2020-03-14 00:50:17 588

原创 Spring IOC原理解读:

Spring IOC原理解读:BeanFactory(管理bean的源头或入口)BeanDefinition(bean的定义信息,将xml转为java信息,每个对象都包含了bean配置的属性信息)BeanRegistry(创建bean的地方,类:DefaultSingletonBeanRegistry, 方法:beforeSingletonCreation(beanName))一、加载...

2020-03-14 00:28:53 199

原创 java的动态代理机制详解

java的动态代理机制:jdk的proxy代理:首先实现InvocationHandler接口,在实现类中注入目标对象。在通过Subject proxySubject = (Subject)Proxy.newProxyInstance(subject.getClass().getClassLoader(),subject.getClass().getInterfaces(),ha...

2019-08-29 22:33:54 166

原创 kafka与rocketmq区别

1、kafka单机tps比rocketmq高一点。2、kafka消息失败不支持重试。3、kafka的topic越多,性能越差,原因是kafka的topic消息存多个partition,topic越多,partition越多,磁盘io效率降低。 rocketmq一个broker机器上所有topic消息都存一个commitlog文件,并且数据对应到commitQueue队列,并且使用了l...

2019-08-29 22:33:38 3886

原创 java内存模型

java内存模型:堆,栈,方法区堆:存储 new的对象,数组引用变量的实体对象。栈:方法内的基本变量,对象的引用。方法区:类的模板,类的变量,类的静态方法。...

2019-08-29 22:33:30 91

原创 红黑树的理解

一、红黑树要达到自平衡的二叉树,必须满足下面5个性质:1、每个节点要么是黑色,要么是红色。2、根节点是黑色。3、每个红色节点的两个子节点一定是黑色。4、任意一个节点到每个子节点的路径都包含相同梳理的黑节点。(所以一个节点存在一个黑子节点,那肯定两个子节点都是黑色)5、每次添加的新节点,都是红色。二、红黑树需要通过变色,左旋,右旋达到平衡:左旋:旋转点往左边下沉,以某个节...

2019-08-29 22:33:22 220

原创 mysql的left join ,right join ,inner join详解

mysql中的left join, right join, inner joinA加油卡表:id, userName, cardNo 1 aaa 111 2 bbb 111 3 aaa...

2019-08-15 17:44:38 286

原创 spring事件监听机制

自定义spring事件:如下,自定义一个event,listener, 通过SimpleApplicationEventMulticaster广播事件。SimpleApplicationEventMulticaster initialMulticaster = new SimpleApplicationEventMulticaster();initialMulticaster.a...

2019-08-15 17:17:17 235

原创 ucc动态配置项

首先声明一个雷,UccClientBean 实现 InitializingBean(spring的)。在afterPropertiesSet方法中,启动单定时任务线程池 Executors.newSingleThreadScheduledExecutor,再执行 scheduledExecutor.scheduleWithFixedDelay(new BlockingThread(), 3, 5,...

2018-06-12 14:05:17 753

转载 ElasticSearch-head插件安装

下面说ElasticSearch-head插件在ElasticSearch-5.3.1中的安装使用:1.安装nodejs环境1) wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz2) tar -zxvf node-v4.4.7-linux-x64.tar.gz3) export PAT...

2018-02-27 17:22:02 678

原创 ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticSearch,一款基于Apache Lucene的开源分布式搜索引擎)中便于查找和分析,在研究此方案可行性的时候,我发现ELK(ElasticSearch, Logstash, Kibana)平台恰好可以同时实现日志收集、日志搜索和日志分析的功能,于是又去学习了一番。之后发现如果使用这三者,收...

2018-02-23 15:13:47 462

转载 常用加密算法

https://www.cnblogs.com/jfzhu/p/4020928.html一、对称性加密算法:AES,DES,3DESDES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,如此以使得密文强度更高。相较于DES和3DES算法...

2017-11-28 15:36:15 306

转载 Java并发编程:线程池的使用

原文: http://www.cnblogs.com/dolphin0520/p/3932921.html我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线

2017-10-28 12:24:08 310

转载 为什么覆盖equals方法一定要覆盖hashCode方法

1.  Java 中 Equals和==的区别: (没区别,都是比较物理地址,但是equals可以被覆盖)首先equals和== 最大的区别是一个是方法一个是运算符,在Java中,二者比较的都是物理地址 而不是值得比较。我们举个例子这样比较直观。Student student1 = new Student();Student student2 = new Stu

2017-10-28 11:25:26 4393

转载 kafka安装

kafka的bin目录下,接收消息sh ./kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic bjtest1kafka的bin目录下,发送消息sh ./kafka-console-producer.sh --broker-list 192.168.21.134:9092 --top

2017-05-12 14:49:59 357

原创 向kafka里发送消息

//以下配置前提条件:kafka_2.10-0.9.0.0(即服务端2.10版本,客户端0.9.0版本)Properties props = new Properties();props.put("bootstrap.servers", "192.168.21.134:9092");props.put("acks", "1");props.put("retries", 0);props.

2017-05-12 14:45:16 2527

原创 Storm linux单机版安装

前置条件:1.linux环境。2. 安装jdk1.7.3. 安装python 2.6.64. 安装zookeeper。5. 下载安装storm 0.9.5,6. 修改storm下的conf/storm.yaml文件,storm.yaml中的配置会覆盖掉default.yaml中的配置。下面配置一个集群必须修改的配置: 1) storm.zookeeper.servers

2017-05-10 13:26:38 1697

转载 elasticsearch的基本用法

开始学习使用 elasticsearch, 把步骤记录在这里: elasticsearch-2.1.0最大的特点: 1. 数据库的 database, 就是  index 2. 数据库的 table,  就是 type 1. create:  指定 ID 来建立新记录。 (貌似PUT, POST都可以) $ curl -XPOST localhost:9200/fi

2017-05-03 11:46:11 652

转载 elasticsearch 之mapping

前言在ES中,index相当于数据库,type相当于表,而mapping则相当于表结构。简单来讲,elasticsearch会在你插入数据的时候,自动根据数据类型设置mapping格式。而且因为一般文档数据都是不规则的,所以ES的mapping会根据插入值格式的变更,自动进行mapping变更。虽然对于初学者而言,不需要了解mapping里面的各种特性,也可以很方便的使用ES的各种搜索

2017-04-28 15:54:58 1733

原创 MySQL索引背后的数据结构及算法原理

写在前面的话在编程领域有一句人尽皆知的法则“程序 = 数据结构 + 算法”,我个人是不太赞同这句话(因为我觉得程序不仅仅是数据结构加算法),但是在日常的学习和工作中我确认深深感受到数据结构和算法的重要性,很多东西,如果你愿意稍稍往深处挖一点,那么扑面而来的一定是各种数据结构和算法知识。例如几乎每个程序员都要打交道的数据库,如果仅仅是用来存个数据、建建表、建建索引、做做增删改查,那么也许觉得数据...

2017-03-29 14:49:18 302

转载 代理模式详解

什么是代理模式代理模式是对象的结构模式。代理模式为其他对象提供一种代理以控制对这个对象的访问。简单来说,在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。举个例子我们打算结婚,但是婚礼的细节我们不想管,这时候我们找到婚庆公司,让他们帮我们包揽婚礼的细节,这就是“代理模式”。既然是代理模式,那么就应该有一个代理角色和真实角色

2016-12-20 18:26:45 643

原创 spring定时器管理

private void startOrStop(UserScheduleFactoryBean userScheduleFactoryBean){ boolean state = userScheduleFactoryBean.isRunning(); // 如果当前worker未启动,则启动 try { if (!state) {

2016-11-02 10:20:47 610

转载 网站架构经验随笔

本篇是我的电商网站架构经验合集,感谢阅读。 目录构建亿级前端读服务应用多级缓存模式支撑海量读服务构建需求响应式亿级商品详情页商品详情页系统的Servlet3异步化实践京东商品详情页碎碎念京东商品详情页服务闭环实践应用数据静态化架构高性能单页Web应用使用Nginx+Lua(OpenResty)开发高性能Web应用

2016-06-14 15:36:18 437

转载 构建需求响应式亿级商品详情页

该文章是根据velocity 2015技术大会的演讲《京东网站单品页618实战》细化而来,希望对大家有用。 商品详情页是什么商品详情页是展示商品详细信息的一个页面,承载在网站的大部分流量和订单的入口。京东商城目前有通用版、全球购、闪购、易车、惠买车、服装、拼购、今日抄底等许多套模板。各套模板的元数据是一样的,只是展示方式不一样。目前商品详情页个性化需求非常多,数据来源也是非常多的,而且

2016-06-14 15:32:45 741

转载 分布式系统事务一致性解决方案大对比

“在分布式系统中,同时满足“一致性”、“可用性”和“分区容错性”三者是不可能的。分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣?老司机介绍丁浪,现就职于某垂直电商平台,担任技术架构师。关注高并发、高可用的架构设计,对系统服务化、分库分表、性能调优等方面有深入研究和丰富实践经验。热衷于技术研究和分享。在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例

2016-06-14 11:11:03 3544

转载 Dubbo源码分析2

http://humn-chou.iteye.com/blog/1915984这是本人对于Dubbo源码分析的系列二,对于系列一,主要是对Dubbo的初始化、请求-响应过程的分析,并没有详细分析每个细节,接下来的系列主要是分析Dubbo中的各个细节,以供更加准确的了解这个支持SOA的RPC分布式框架,本系列介绍Dubbo中的编码解码与序列化反序列化逻辑及消费者、提供者、注册中心之间的连通性

2016-05-20 10:30:55 998

转载 Dubbo源码分析1

http://humn-chou.iteye.com/blog/1866272?utm_source=tuicool&utm_medium=referral这是本人对于Dubbo源码分析的系列一,没有说明Dubbo是什么,不清楚请先了解,此处只是为了给自己做个笔记,也给正在学习Dubbo的同学一些借鉴,后期会继续奉上所有关于Dubbo的逻辑分析,包括Dubbo简介、初始化与请求细节、注

2016-05-20 10:30:15 2270 1

rocketMq安装包

rocketMq安装包,具体安装步骤,我博客有哈

2015-08-12

rocketmq_console后台管理界面

启动安装启动后台管理界面: 安装tomcat,然后将rocketmq_console(监控mq的管理界面,放tomcat下启动就OK).tar部署到tomcat下启动即可。

2015-08-12

http-request-5.6.jar

这工具非常好用,以前一直没有发现,所以资源分定为3分不过分哈,鼓励大家技术分享。 这工具非常好用,以前一直没有发现,所以资源分定为3分不过分哈,鼓励大家技术分享。 这工具非常好用,以前一直没有发现,所以资源分定为3分不过分哈,鼓励大家技术分享。

2015-01-05

spring-framework-3.0源码地址

spring3.0源代码,在官网下载的话,欢迎朋友们下载,如果有任何问题可以留言哈

2014-05-06

验证上传图片合法性111

这个最主要就是我们用来上传图片的时候,可以验证合法性,代码在我的博客。

2013-08-29

slf4j-1.7.5与slf4j-1.5.2

里面含有1.5.2版本和1.7.5版本的,如果你需要打印hibernate或则ibatis的sql语句,需要下面四个jar包哟,我放在里面有个文件夹的。 然后你还需要配置一个log4j.properties文件

2013-07-25

空空如也

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

TA关注的人

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