自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (4)
  • 收藏
  • 关注

原创 分布式事务seata

seata四种模式

2022-07-09 19:58:39 658 1

原创 java8新特性--函数式接口

java.util.function

2022-06-29 22:51:04 302

原创 Dubbo生产者消费者

我今天了解一下dubbo的用法,虽然多,但是我只想了解注解的用法(毕竟之前都主要是注解)。然后再dubbo-samples下面有个dubbo-samples-annotation目录。给的示例是使用zookeeper作为注册中心,要实现的就是架构图而已,主要是先了解registry,provider,和consumer的用法:看示例是使用zookeeper作为注册中心。所以下了一个zookeeper。思路流程1、首先肯定是启动zookeeper,然后看下初始有什么目录。2、再启.

2021-12-22 14:14:21 2078

原创 Dubbo了解

近来无事,总觉不可在学习上落下,所以想了解一下微服务方面的。当然因为没有使用过微服务,学习后也容易淡忘,所以只供自己学习,方便以后查看和调整。为什么选择dubbo这个其实网上一百度应该就有很多很多理由。还有一点理由,就是找工作的时候发现大部分都需要dubbo,而非spring cloud,在百度上看优劣确实是dubbo好些,就这样想学习一下dubbodubbo是什么dubbo是针对微服务做的一套框架,其中最核心的就是RPC通信和微服务治理两大能力。当然更多详细的介绍肯定都在官..

2021-12-09 11:04:37 341

原创 数据库CPU内存高以及全表扫描的原因

哪些情况数据库全表扫描1. 使用null做为判断条件2. 左模糊查询Like %XXX%3. 使用or做为连接条件4. 使用in时(not in)5.使用not in时6.使用!=或<>时7.对字段有操作时也会引起权标索引8.使用count(*)时9.使用参数做为查询条件时参考链接:mysql 全表扫描原因_造成MySQL全表扫描的原因_范不易cool的博客-CSDN博客全表扫描是数据库搜寻表的每一条记录的过程,直到所有符合给定条件的记录...

2021-11-25 15:28:45 441

原创 线程池相关问题

线程池怎么动态调整参数被问到的时候我也被整蒙了。我知道线程池大概怎么使用,但是因为项目没使用到过,所以还真不知道怎么动态调整。唯一知道的是核心线程数与最大线程数的区别是核心线程数去工作队列取任务不会超时,所以线程一直存在,而多出来的线程数取任务会存在超时的情况,自然而然就结束了。当时因为不确定是否有此api可以运行时改变参数,所以不敢贸然回答。ThreadPoolExecutor的几个参数就不去解释了。我自己百度并且尝试了一下,发现衍生的4种线程池都没有相关的api设置参数,只有threadp

2021-11-23 10:35:21 326

原创 kafka简单介绍

原因因为好久没有使用kafka了 所以被问kafka的时候印象就有点模糊了,但是要问kafka整体的架构,属实不知怎么回答。kafka结构kafka是一个典型的发布订阅模式。主题是kafkaserver,需要有producer生产消息投递,consumer消费消息。kafka设计目标 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 支持K

2021-10-13 14:03:10 315

原创 MVCC概念

一、MVCC解决了什么问题?主要解决的是多个事务并发引起的问题。原本道理上来说读写和写读是不能并发的。但是如果不能并发的话,数据库的效率就会非常低,所以才会引入MVCC。本文结合以下链接及自己的验证猜测得出的结论。并没有看过源码。https://blog.csdn.net/LO_YUN/article/details/111319170https://www.cnblogs.com/itZhy/p/8831947.html请先理解readview和undolog版本链。此外每次生

2021-09-06 20:53:25 516

原创 threadlocal

什么是threadlocal

2021-08-27 22:09:35 87

原创 golang GC

垃圾回收算法复制算法:效率高,但内存利用率低。标记清除算法:效率高,但是容易产生内存碎片。标记整理算法:效率低,同时比较消耗CPU,所以一般都很少使用。go使用的GC使用标记清除算法go使用算法的具体实现---三色标记三色标记的基本思想很简单。参考网上的博客:https://www.cnblogs.com/wangyiyang/p/12191591.html写屏障写屏障出现的原因 因为三色标记的清理过程是需要STW的,在清理过程中是不允许对象...

2021-08-27 21:30:00 83

原创 TCP握手与挥手

三次握手四次挥手timewait和closewait

2021-08-27 20:59:55 75

原创 粘包、半包问题

粘包 半包概念粘包:客户端发送的多条数据在服务器上在一个报文中收到了。半包:客户端发送的数据很大,所以需要分段发送。产生原因由于tcp是流式发送数据,在遇到大文件的时候不可能整个发送过去,所以就需要分段发送。解决办法设置分割符消息定长消息头+消息体...

2021-08-25 22:44:43 74

原创 三 注解的获取与使用

使用spring用得最爽的莫过于注解了,但是怎么获取注解的参数值可能我们并不是很关心,再读源码前还是需要知道注解的参数是怎么获取的.请自行了解五个元注解.测试代码如下:先建立一个注解类:package com.xq.anno;import org.springframework.stereotype.Indexed;import java.lang.annotation.*;@Target({ElementType.TYPE,ElementType.METHOD})@Retent

2021-08-25 21:51:03 109

原创 go channel与java blocking queue

学习到golang的channel。总觉得它跟blockingqueue很相似。然后网上一搜就有这么一句话:不用使用共享内存来通信,而是用通信来共享内存。目前我没法理解这句话。不懂什么意思。所以我目前就看使用。无缓冲通道与SynchronousQueue有缓冲通道与...

2021-07-30 16:31:43 305

原创 golang与java

这篇文章需要对java和go有一点了解才好,如果不了解,可以直接跳过语言对比为什么要做对比?因为本人以前学java的,所以难免就会好奇java跟go有什么不一样的。① java是基于C,C++的。而golang是自举的② java中协程概念不明显。而golang本身就是基于并发的,所以语言层面就支持并发③ java体系非常完善,其各种技术和产品非常多。golang作为新生语言,目前也趋于完善,不过按成熟程度还赶不上java④ java中的jvm优化(屏蔽)了很多的细节。golan

2021-07-29 11:17:34 1652

原创 二、spring前置知识点

问:学java的为什么基本离不开spring? spring是java的基础框架,能够广泛使用就说明它的易用性、稳定性以及高效性等。我们用一个对话来证明它的易用性。 开发:spring帮我做了哪些工作,这些工作不能自己做吗? spring:您好。这些工作您当然能自己做了,但是我们希望你们更关注业务本身做业务相关的是,我们负责帮您管理您写的类,只需要多加简单的几行代码来告诉我们您需要怎样的实例我们就能根据您的需求来定制化您的类了。 开发:...

2021-07-01 22:54:21 495 1

原创 一、spring源码构建与导入

此文章先讲怎么构建spring源码。一、下载spring源码 由于github上的spring源码下载很缓慢,所以改为使用了码云的git:https://gitee.com/mirrors/Spring-Framework.git我这里下载的当前的最新版本:5.3.7二、修改配置文件Ⅰ、修改settings.gradlepluginManagement { repositories { gradlePluginPortal() ...

2021-06-29 21:47:16 347

原创 zookeeper(七) 集群调用链(源码结束)

还是上图:

2021-03-30 17:00:26 189

原创 zookeeper(六)集群初始化的数据同步

zookeeper数据同步流程及概念zookeeper有三种差异同步DIFF:就是当前的zxid大于最新的快照,但又没到leader最新的zxid,所以做法就是从这个zxid开始一直同步到最新的。TRUNC:就是当前的zxid比leader最新的zxid都大,证明follower已经越界了,必须回滚到leader最新的zxid那个地方上去。SNAP:就是当前的zxid比最新的SNAP要小,说明最新的快照都比follower新,所以直接就把最新的快照给follower,然后再通过committedLo

2021-03-29 16:39:42 352

原创 zookeeper(五)集群角色epoch的选取

在zookeeper的第三篇有个流程图,不知道是否还有印象。这个图在刚开始是非常抽象的。现在就可以对照这个图来说一下源码来的流程了。因为上一篇已经讲解了zookeeper怎么选取leader的,所以这里主要是来看看选出来之后的流程了。所以我们还是要定位到这个方法中。org.apache.zookeeper.server.quorum.QuorumPeer#run。 public void run() { setName("QuorumPeer" + "[myid=" + ge

2020-10-29 02:15:22 1964 1

原创 zookeeper(四)领导者选举

先上图:首先看到这个图肯定就会很懵,确实比较多,体系结构也比较复杂,目前但是如果是根据源码调试加上这篇博客应该问题就不是很大。我们首先从判定为集群开始说起:即从org.apache.zookeeper.server.quorum.QuorumPeerMain#runFromConfig开始。这里重点说一下quorumPeer.start();方法。 @Override public synchronized void start() { //加载事务和快照。其实就是恢复

2020-10-23 20:25:35 408

原创 zookeeper(三)zk集群应该怎么实现

为什么要搭建zookeeper集群?这个一般都没啥好说的,就是因为可能一台zookeeper可能会出现宕机的情况,为了提升系统的稳定性,就要多部署到几台机器上,还有一点就是在量很大的情况下一台机器撑不住只有多扩几台机器去分担压力。但是就会存在一个问题:如果要多部署几台,那么不同的机器接到了不同的请求就会做不一样的事,导致每台服务器都不一样。有人会说就不能像业务系统那样吗?比如把多台服务器对应到同一个数据库中,其中一台发生了改变其它自动更新?请想一想如果数据库连不上了呢?有人说那我可以把数据库做成集群啊

2020-09-28 20:30:43 316

原创 zookeeper(二)zookeeper单机启动

上一篇已经说过了zookeeper源码怎么启动的了。那么就直接步入正题。其实都不用想单机逻辑肯定非常简单,毕竟一台服务器,很多都很好实现。整个流程图如下:其中箭头中的数字是调用的顺序,横向表示在同一个方法中,而黄色区域为该方法的注释。单机启动的整个体系就是这个展开的。...

2020-09-26 16:10:21 372

原创 zookeeper(一)zk配置及源码搭建

本人调试的注释源码GitHub:https://github.com/XQacc/zookeeper-3.4.14其实zookeeper源码在网上的博客已经解释非常透彻了。只是看你愿不愿意亲自调试一下加深印象而已。源码中一些重要的概念:Epoch:类似于软件的迭代的最大的版本号。zookeeper中可以理解为每一次发起选举的届号,就理解为第几届选举大会即可。也可称为纪元号。datatree:通俗翻译就是数据树。为什么会存在这个结构?因为我们在服务端看到的就是zookeeper就像是一个数据目录一样的

2020-09-23 20:09:49 313

原创 tomcat、jvm、mysql调优以及进程占用高的问题

本次文章是纪念某次失败后的的一次总结。tomcat调优tomcat介绍首先上一张tomcat的架构图(百度的)。这个应该很多人都了解过一点。它的结构图就对应了配置文件的结构。下面就对照官网来具体的说一下结构。http://tomcat.apache.org/tomcat-8.5-doc/architecture/overview.htmltomcat的架构一共分为以下6个方面:Server层:对应server的标签。官网解释:In the Tomcat world, a Server re

2020-08-26 20:18:15 252

原创 java并发包中的锁----CAS,AQS和相关实现及并发工具

synchronizedsynchronized的加锁方式前面介绍过了。参考链接:https://blog.csdn.net/qq_37822914/article/details/107189753首先为了保证多线程的并发安全问题。已经用了synchronized和volatile去保证了它的并发,但它们具有一定的缺陷:synchronized:虽然满足了各项要求。但是它的锁粒度太大。灵活性也并不是很强(比如读多写少的情况)。volatile:不能保证原子性的操作。所以才会在引入新的锁。C

2020-07-19 17:19:14 143

原创 static关键字以及单例模式

static关键字首先static的概念作用什么的大家都在网上看了很多了。所以这里以测试为主。主要测试静态代码块,静态变量以及静态内部类。首先看一个测试。package Collection;class StaticTT { public static int A = 4; static { System.out.println("exec static"); } } public

2020-07-14 22:55:16 323

原创 记一次synchronized的学习

博客上都是直到对象有3个部分:对象头、实例数据、填充数据。能不能具体看到?引入一个maven包。 <dependencies> <!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core --> <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</ar

2020-07-09 19:53:14 180

转载 pinpoint表结构(转)

https://www.jianshu.com/p/f230377c64d4https://aidodoo.com/post/others/pinpoint数据结构/https://aidodoo.com/post/others/pinpoint数据结构/ 中的内容为:本文主要基于源码整理pinpoint的hbase的表结构,以便于作为参考,二次开发或者定义我们自己的架构数据结构。AgentInfo用途主键总共32字节,前24字节为agentId,后8字节为Long.MAX_VALUE-ti.

2020-05-27 17:52:34 1272

原创 @Transactional注解

事务概述spring有编程式事务和声明式事务,一般都比较推荐使用声明式事务。因为编程式事务与业务代码具有一定的耦合性质,在做改动的时候势必会牵连到主业务,所以一般都会使用推荐的声明式事务,即使用注解的方法来进行结构。这篇只看声明式事务的办法。即@Transactional注解。首先看下这个注解类。public @interface Transactional { /** * Alias for {@link #transactionManager}. * @see #transaction

2020-05-24 17:50:46 1699 1

原创 @Order在同一个类的的不同方法的先后问题

为什么想到这个问题?在实际工作开发中,因为之前写过一个aop,使用了一个方法,但代码并不多,但是新的需求也是能使用到aop的,且会影响之前写的aop,因此想要在同一个类中针对同一个方法进行排序。事实证明不行。测试如下:package test.aop;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Asp

2020-05-16 11:43:19 974

原创 springmvc及模拟springboot

首先我们看spring的官网的springmvc部分。https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-servlet官网推荐使用这种方式启动。那么我们也这样启动。首先我们建立一个项目。不指定父项目。添加spring和springmvc这两个maven。<project...

2020-04-10 14:38:48 325

原创 springboot源码构建

springboot源码的构建首先下载源码:https://github.com/spring-projects/spring-boot选择自己想要选择的版本。然后首先编译一遍项目,使用cmd进入项目目录:由于我的在E盘,运行了如下命令mvn install -DskipTests -Pfast这个运行时间非常漫长,慢慢等。中途可能会构建失败,多次编译会成功。编译完了之后导入id...

2020-04-07 20:08:02 1190

原创 spring整合mybatis---Mapperscan

Spring+mybatis框架说明众所周知:mybatis整合spring,大家使用这个框架的时候都知道mapper层都是接口类型的,而接口类型是不会实现功能的,但是mybatis整合spring之后却能实现,证明确实存在一个实现方法,但我们看不见。实际上在整合的时候mybatis使用了代理把接口转换成了一个类并注入到了容器当中。首先考虑一下有哪些方式:1、我们要把一个接口使用代理成为一个...

2020-03-25 14:50:50 589

原创 springboot+mybatis简单搭建以及@UpdateProvider

一般springboot整合mybatis多了一个mapper层。dao层:对应底层的数据库。mapper:对应数据库的sql操作,操作dao层。service:写上自己的业务逻辑,操作mapper。controller:写上路由,操作service。数据库内容:pom.xml文件如下:<project xmlns="http://maven.apache.org/POM/4...

2020-03-25 11:13:07 602

原创 spring(四)--------refresh初探

先看下面refresh做了哪些事。 public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. //准备工作包括设置启动时间,是否激活...

2020-03-04 21:18:23 82

原创 spring(五)--------refresh中prepareRefresh方法简介

protected void prepareRefresh() { // Switch to active. this.startupDate = System.currentTimeMillis(); this.closed.set(false); this.active.set(true); if (logger.isDebugEnabled()) { if (l...

2020-03-04 21:18:11 372

原创 spring(六)-------refresh中的obtainFreshBeanFactory方法

这个方法也很简单首先顾名思义就是得到BeanFactory,并用ConfigurableListableBeanFactory去接收bean工厂。 ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();代码方法如下: protected ConfigurableListableBeanFactory...

2020-03-04 21:17:58 118

原创 spring(七)------prepareBeanFactory方法

代码及注释如下: /** * Configure the factory's standard context characteristics, * such as the context's ClassLoader and post-processors. * @param beanFactory the BeanFactory to configure */ protect...

2020-03-04 21:17:41 139

原创 spring(八)-------invokeBeanFactoryPostProcessors中getBeanFactoryPostProcessors()方法

protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory) { //注意:getBeanFactoryPostProcessors()是获取自定义的(什么是自定义?就是我们自己写的,而且还没有交给spring管理,即还没有加上@Component) //测试方法。在...

2020-03-04 21:17:29 199

pinpoint表.xlsx

pinpoint表结构的详细解释!

2020-05-27

transaction.zip

@transactional注解的相关使用。

2020-05-24

mySpring-Test.zip

springboot+mybatis的简单搭建测试以及@UpdateProvider的相关介绍与测试

2020-05-13

mvc.zip项目代码下载地址

mvc.zip项目代码下载地址!

2020-04-10

空空如也

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

TA关注的人

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