自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Redis五十二问

Redis跳跃表由zskiplist和zskiplistNode组成,zskiplist⽤于保存跳跃表信息(表头、表尾节点、⻓度等),zskiplistNode⽤于表示表跳跃节点,每个跳跃表节点的层⾼都是1-32的随机数,在同⼀个跳跃表中,多个节点可以包含相同的分值,但是每个节点的成员对象必须是唯⼀的,节点按照分值⼤⼩排序,如果分值相同,则按照成员对象的⼤⼩排序。例如查找,分值为3.0、成员对象为o3的节点时,沿途经历的层:查找的过程只经过了一个层,并且层的跨度为3,所以目标节点在跳跃表中的排位为3。

2024-02-29 16:33:33 22

转载 Spring三十五问,四万字+五十图详解!建议收藏!

Java 是面向对象的编程语言,一个个实例对象相互合作组成了业务逻辑,原来,我们都是在代码里创建对象和对象的依赖。所谓的IOC(控制反转):就是由容器来负责控制对象的生命周期和对象间的关系。以前是我们想要什么,就自己创建什么,现在是我们需要什么,容器就给我们送来什么。引入IOC之前和引入IOC之后也就是说,控制对象生命周期的不再是引用它的对象,而是容器。对具体对象,以前是它控制其它对象,现在所有对象都被容器控制,所以这就叫控制反转。控制反转示意图DI(依赖注入)

2024-02-27 14:33:35 78

原创 Dubbo知识点大全

我们首先了解 Dubbo 的分层和几个核心模块,分别介绍他们的职责。然后通过一个简单的例子,服务消费者调用服务提供者,用 Dubbo 的工作流程将各个模块串起来。在这 22 步的流程中,以服务提供者和服务消费者的初始化为起点,用到了 Config 和 Proxy 以及 Protocol,Invoker。注册中心作为两者的连接桥梁,起到了服务发现和注册的作用,并且着重讲了如何通过 ZooKeeper 实现注册中心的原理。

2024-02-26 17:26:29 789

原创 JVM面试题

最终退化成Full GC。G1收集器在运行过程中,会自己调整新生代和老年代的大小 其实是通过adapt代的大小来调整对象晋升的速度和年龄,从而达到为收集器设置的暂停时间目标 如果手动设置了大小就意味着放弃了G1的自动调优。有时候会发现系统刚刚启动的时候,就会发生一次Full GC,但是老年代空间比较充足,一般是由Metaspace区域引起的。类加载机制其实就是虚拟机把Class文件加载到内存,并对数据进行验证,转换解析和初始化,形成虚拟机可以直接使用的Java类型,即java.lang.Class。

2023-12-06 10:47:13 4113

原创 【译】IOC容器2

Bean的Scope机制是可扩展的。你可以定义你自己的Scope,甚至重新定义现有的Scope,尽管后者被认为是不好的做法,你不能覆盖内置的singleton和prototypescope。为了将你的自定义scope集成到 Spring 容器中,你需要实现接口,本节将介绍该接口。要了解如何实现你自己的scope,请参阅 Spring 框架本身提供的Scope实现,以及Scopejavadoc,其中更详细地解释了你需要实现的方法。Scope。

2023-12-05 16:50:52 4116

原创 【译】IOC容器3

Spring可以自动检测 stereotype 的类,并在中注册相应的实例。例如,以下两个类符合这种自动检测的条件。JavaKotlin@Service​​JavaKotlin为了自动检测这些类并注册相应的Bean,你需要在你的类中添加,其中属性是这两个类的共同父包。(或者,你可以指定一个用逗号或分号或空格分隔的列表,其中包括每个类的父包。JavaKotlin// ...为了简洁起见,前面的例子可以使用注解的value属性(即以下是使用XML的替代方案。​​。

2023-12-05 16:49:20 4214

原创 【译】IOC容器1

本章介绍了Spring框架对反转控制(IoC)原则的实现。IoC也被称为依赖注入(DI)。它是一个过程,对象仅通过构造参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后在其上设置的属性来定义其依赖关系(即它们与之合作的其他对象)。然后容器在创建 bean 时注入这些依赖关系。这个过程从根本上说是Bean本身通过使用直接构建类或诸如服务定位模式的机制来控制其依赖关系的实例化或位置的逆过程(因此被称为控制反转)。

2023-12-05 16:35:03 937

原创 【译】DispatcherServlet

要在你的Web应用程序中使用主题,你必须设置一个 org.springframework.ui.context.ThemeSource 接口的实现。WebApplicationContext 接口扩展了 ThemeSource,但将其职责委托给一个专门的实现。默认情况下,该委托是一个 org.springframework.ui.context.support.ResourceBundleThemeSource 实现,它从 classpath 的根部加载properties文件。

2023-12-05 16:14:55 829

原创 【译】 Spring AOP API

因为Spring AOP中的 pointcut 是Java类,而不是语言特性(如AspectJ),所以你可以声明自定义pointcut,无论是静态还是动态。在Spring中,自定义的pointcut可以是任意复杂的。然而,如果可以的话,我们建议使用AspectJ的pointcut表达语言。后来的Spring版本可能会提供对JAC所提供的 "语义 pointcut" 的支持—例如,"所有改变目标对象中实例变量的方法"。特别是在定义事务代理时,你可能最终会有许多类似的代理定义。

2023-12-05 15:04:09 959

原创 【译】AOP- Advice Param And Order

当在同一个@Aspect类中定义的两个相同类型的建议(例如,两个@After建议方法)都需要在同一连接点运行时,排序是未定义的(因为无法通过反射javac编译类来检索源代码声明顺序)。最高优先级的建议首先“在进入的路上”运行(因此,给定两条之前的建议,优先级最高的一条首先运行)。然而,请注意,@After建议方法将在同一方面的任何@AfterReturning或@AfterThrough建议方法之后有效地调用,遵循AspectJ对@After的“After-finally建议”语义。

2023-12-04 16:34:10 920

原创 [译] AOP-通知

对于使用传统aspectj语言编写的around advice,传递给proceed的参数数量必须与传递给around advice的参数数量(而不是基础连接点接受的参数数量) 匹配,并且传递给给定参数位置的值在连接点为值所绑定到的实体添加原始值(如果现在没有意义,请不要担心)。“围绕”匹配方法的执行。advice方法通常应该返回从processed()的调用返回的值,即使基础方法的返回类型为void。通常,您希望建议仅在引发指定类型的异常时运行,并且您还经常需要访问Advice中引发的异常。

2023-12-04 15:15:56 915

原创 设计模式大全

使用设计模式的目的:程序猿在编码的过程中面临着来自耦合性、内聚性、可维护性、可扩展性、重用性、灵活性等多方面的挑战。设计模式是为了让程序具有更好的:1)重用性,即相同功能的代码编写一次即可,不用重复编写2)可读性,即编程的规范性3)可扩展性4)可靠性5)高内聚,低耦合一个类,一个方法,只是负责一项职责开闭原则就是说对扩展开放(提供方),对修改关闭(使用方)。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们

2023-06-19 15:27:32 2307

原创 JAVA并发十二连招

面试第一题必问的,挺考验的基础功底的,别问为啥放在这,因为重要!HashMap具有如下HashMap 的存取是没有顺序的。KV 均允许为 NULL。多线程情况下该类安全,可以考虑用 HashTable。JDk8底层是数组 + 链表 + 红黑树,JDK7底层是数组 + 链表。初始容量和装载因子是决定整个类性能的关键点,轻易不要动。HashMap是创建的,只有在你put数据时候才会 build。单向链表转换为红黑树的时候会先变化为最终转换为,切记双向链表跟红黑树是共存的。对于传入的两个key。

2023-06-15 11:22:30 1408

原创 常用JVM命令

这台服务器的新生代Eden区(E,表示Eden)使用了6.2%的空间,2个Survivor区 (S0、S1,表示Survivor0、Survivor1)里面都是空的,老年代(O,表示Old)和永久代(P,表示 Permanent)则分别使用了41.42%和47.20%的空间。发生Full GC(FGC,表示Full GC)3次,总耗时(FGCT,表示Full GC Time)为0.472秒;线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的。起等,都是导致线程长时间停顿的常见原因。

2023-06-15 11:04:14 1962

转载 批处理框架spring batch基础知识介绍

spring batch是spring提供的一个数据处理框架。企业域中的许多应用程序需要批量处理才能在关键任务环境中执行业务操作。无需用户交互即可最有效地处理大量信息的自动化,复杂处理。这些操作通常包括基于时间的事件(例如月末计算,通知或通信)。在非常大的数据集中重复处理复杂业务规则的定期应用(例如,保险利益确定或费率调整)。集成从内部和外部系统接收的信息,这些信息通常需要以事务方式格式化,验证和处理到记录系统中。批处理用于每天为企业处理数十亿的交易。

2023-06-13 15:38:05 354

原创 微信授权登录

在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。程序服务端传入上一步获取到的code参数,再次向微信公众平台发起Http请求获取accessToken。获得微信用户页面点击授权同意后,微信公众平台通过调用开发程序的回调地址返回code,然后进入下一步。

2023-06-12 22:53:08 951

原创 全链路压测

全链路压测实施流程

2023-06-09 16:35:27 1051

原创 Docker 基本使用

格式:CMD ["executable","param1","param2"] (执行可执行文件,优先)CMD ["param1","param2"] (设置了ENTRYPOINT,则直接调用ENTRYPOINT添加参数)CMD command param1 param2 (执行shell内部命令)示例:注:CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。创建Dockerfile文件对应描述的镜像。

2023-06-08 17:34:54 655

原创 ByteBuddy

java agent技术

2023-06-07 16:51:57 819

原创 开发云原生应用应遵循的十二要素

十二要素程序应该在无须代码改动的前提下,可以从一个测试环境中的嵌入式SQL数据库,切换到预发布环境下的一个独立MySQL数据库。有时,应用程序的开发人员需要运行一次性的管理任务。管理进程应该在应用程序的执行环境中运行,并将脚本提交到代码仓库中,以便保持各个环境之间的一致性。更改应用程序代码的唯一方法,就是通过构建阶段来创建一个新的版本,或者回滚到之前部署的某个版本。应该显式地声明应用程序的依赖关系,并且可以通过依赖项管理软件(如Apache Maven)的仓库,下载任意或所有的依赖关系。

2023-06-05 23:12:27 5187 1

转载 SpringBoot常用注解大全

这些SpringBoot注解基本都是我平时做项目常用的注解,在我的电商实战项目mall中基本都用到了,这里做了一番整理归纳,希望对大家有所帮助!

2023-06-04 15:05:11 220

原创 Spring Event

Slf4j@Component/** 使用 onApplicationEvent 方法对消息进行接收处理 */@Overridelog.info("{}:校验订单商品价格耗时:({})毫秒", orderId, (end - start));定义发布者@Slf4j@Service/** 注入ApplicationContext用来发布事件 *//*** 下单* @param orderId 订单ID*/// 1.查询订单详情。

2023-06-04 08:56:13 49

转载 什么是高内聚与低耦合?

图解高内聚与低耦合模块模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决.耦合主要描述模块之间的关系, 内聚主要描述模块内部. 模块的粒度可大可小,可以是函数, 类, 功能块等等.耦合模块之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强, 模块独立性越差.比如模块A直接操作了模块B中数据, 则视为强耦合, 若A只是通过数据与模块B交互, 则视为弱耦合.独立的模块便于扩展, 维护, 写单元测试, 如果模块之间重重依赖, .

2021-01-29 10:49:05 616

转载 Redis主从配置、哨兵模式部署

一、本文目的 Redis的主从配置分为两篇文章,第一篇主要介绍了Redis主从配置的搭建过程及使用,第二篇主要说明各种情况下Redis主从状态,如Master挂掉,Slaver挂掉,挂掉后重新加入等。二、常用命令根据配置文件启动redis: src/redis-server redis.confg 启动redis客户端:redis-cli -p port Slaver连接Master:slaveof host:ip (测试时使...

2021-01-25 09:27:33 249

转载 红黑树-1

写在前面当在10亿数据中只需要进行10几次比较就能查找到目标时,不禁感叹编程之魅力!人类之伟大呀! —— 学红黑树有感。终于,在学习了几天的红黑树相关的知识后,我想把我所学所想和所感分享给大家。红黑树是一种比较难的数据结构,要完全搞懂非常耗时耗力,红黑树怎么自平衡?什么时候需要左旋或右旋?插入和删除破坏了树的平衡后怎么处理?等等一连串的问题在学习前困扰着我。如果你在学习过程中也会存在我的疑...

2020-02-08 21:35:18 502

转载 git版本回退

git回退到某个版本并提交回退到分支某个版本 git reset --hardc88173be7b521fcbe88c5be4fc1d3889e52226ae(要回退的分支版本号)查看分支当前版本git rev-parse HEAD提交回退的版本 git push -f (注:强制提交后,当前版本后面的提交版本将会删掉!)在之前的文章中我们已经学会了如何使...

2019-08-08 13:11:02 131

转载 SOAP webserivce 和 RESTful webservice 对比及区别

简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于XML的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME),基于“通用”传输协议是SOAP的一个优点。它还支持从消息系统到远程过程调用(Remote Procedure Call,RPC)等大量的应用程...

2019-07-29 16:14:24 124

转载 Spring Cloud 中的 Bootstrap 上下文

复习 Spring 事件/监听器模式(ApplicationEvent / ApplicationListener) 理解 Bootstrap 上下文 理解 Spring Boot / Spring Cloud 上下文层次关系 父子关系 BootstrapApplicationListener 是何时加载进来的 为什么 Spring Cloud 上下文要比 Spring Boot 的...

2019-07-29 15:44:21 281

转载 使用nat123软件把内网IP映射到公网IP

如何把内网地址映射到公网!我们所需要的工具有: 内网IP(这个是品,也是必有的!) nat123(这是映射软件,百度上都能搜索到) 有些小伙伴会问: 这个软件是什么操作系统啊? 这个软件免费吗? 当然官网上有 windows版 Linux版 Android版 http版 微信版 具体呢官网会有版本介绍好了,都介绍完了,现在让我们来进入正题吧!...

2019-07-27 17:35:41 768

转载 RestTemplate 请求参数格式JSON

我们一般在项目中会遇到某个需求和上一个项目的需求一模一样,那我们就会直接去访问之前项目的接口,不会在另写,或者说调用3方接口。这就用到RestTemplate ,RestTemplate简单的理解就是:简化了发起 HTTP 请求以及处理响应的过程。自己在本地搭建了两个项目,通过B项目去访问A项目中的接口并处理返回数据;还是老样子,直接看代码。我首先搭建了两个项目分别是spring-boot...

2019-06-21 15:36:26 1155

转载 Mysql存储过程入门

存储过程简介SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。...

2019-06-16 10:40:31 152

转载 MySQL创建JDBC连接时区问题

报错内容:ErrorCode=0 SQLState=01S00 The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serve...

2019-06-06 19:09:28 1642

转载 java8-集合流式操作

Java 8 引入,位于java.util.stream包中,与 java.io 包里的输入输出流 InputStream 和 OutputStream 是不同的概念。Stream API 借助 Lambda 表达式,可以提高编程效率和程序可读性。Stream的特性:元素序列:流提供了一个特定类型元素的集合,不存储元素,只获取和计算元素 源:Collection/Arrays( Ar...

2019-06-01 20:33:09 3795

转载 MYSQL外键(Foreign Key)的使用

在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列...

2019-05-22 14:56:17 151

转载 【MySql】Mysql索引详解及优化(key和index区别)

key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的);index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储;于是自己做了一个测试,测试的mysql版本:5.5.281.创建一个表CREATE TABLE `index_test` ( `id`...

2019-05-22 14:13:14 473

转载 什么时候用 INNER JOIN,什么时候用 LEFT JOIN?

首先准备两张表:商品表:存放商品信息 图片表:存放图片然后是建表语句。商品表,商品的图片是关联到图片表的idCREATE TABLE product ( id int, name varchar(100) COMMENT '名称', img_id int COMMENT '关联的图片id');图片表CREATE TABLE image ( ...

2019-05-16 15:38:31 2679

转载 @Pointcut()的execution、@annotation等参数说明

AOP的基本概念Advice(通知、切面): 某个连接点所采用的处理逻辑,也就是向连接点注入的代码, AOP在特定的切入点上执行的增强处理。 @Before:标识一个前置增强方法,相当于BeforeAdvice的功能. @After:final增强,不管是抛出异常或者正常退出都会执行. @AfterReturning: 后置增强,似于AfterReturningAdvice, ...

2019-05-15 15:53:11 73463 5

转载 Feign:复写Feign的默认配置

Feign二:复写Feign的默认配置Feign二:复写Feign的默认配置1.在启动文件加入feign注解:@EnableFeignClientsFeignApp.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

2019-05-15 14:29:03 242

转载 Feign:声明式调用Feign负载均衡FeignClient详解和 @FeignClient 接口调用

声明式调用Feign负载均衡FeignClient详解为了深入理解Feign,下面将从源码的角度来讲解Feign。首先来看看FeignClient注解@FeignClient的源码,代码如下:FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient的作用目标在接口上。@Retention(RetentionPolicy.RU...

2019-05-15 14:28:21 982

转载 Spring boot CommandLineRunner接口使用例子

Spring boot CommandLineRunner接口使用例子阅读目录前言 如何使用CommandLineRunner接口 用@Order注解去设置多个CommandLineRunner实现类的执行顺序 为什么要使用CommandLineRunner接口 原文文链前言Spring boot的CommandLineRunner接口主要用于实现在应用初始化后,去执...

2019-05-14 15:39:06 152

空空如也

空空如也

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

TA关注的人

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