自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小识的博客

放弃很容易,但坚持一定很酷

  • 博客(17)
  • 资源 (14)
  • 收藏
  • 关注

原创 JVM实战:618核心服务内存溢出排查实战

P0事故安排上来原来以为内存溢出这种事情只会发生在书本上,没想到在我们生产环境发生了,而且是618,P0事故安排上了。先回顾一下内存溢出排查的基本思路,然后再来复盘一下内存溢出发生的原因内存溢出排查我们先来了解一下Java堆的组成机构。对于大多数应用来说,Java堆(Java Heap)是Java虚拟机锁管理的内存中最大的一块。Java堆是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存堆的结构如下新生代老年代的具体划分比.

2021-06-26 17:31:59 414 2

原创 Dubbo源码解析:BeanFactory,封装复杂Bean的创建过程

创建Bean的方式常见的创建Bean的方式有如下四种通过构造器通过静态工厂方法通过Bean工厂方法通过FactoryBean@Data@ToStringpublic class User { private Long id; private String name; public static User createUser() { User user = new User(); user.setId(1L); user.setName("li"); retu.

2021-06-17 20:36:16 241

原创 Dubbo实战:如何保证接口幂等

介绍幂等性就是同一个操作执行多次,产生的效果一样。如http的get请求,数据库的select请求就是幂等的在分布式系统中,保证接口的幂等性非常重要,如提交订单,扣款等接口都要保证幂等性,不然会造成重复创建订单,重复扣款,那么如何保证接口的幂等性呢?Dubbo在进行服务调用的时候,如果调用失败,默认会重试2次,此时保证接口的幂等性就非常重要了。前端保证幂等性的方法按钮只能点击一次用户点击按钮后将按钮置灰,或者显示loading状态RPG模式即Post-Redirect-Get,当客户提交表.

2021-06-17 15:59:08 1033

原创 Dubbo源码解析:Dubbo SPI是如何实现 AOP,IOC,自适应,自动激活的?

ExtensionLoader的工作原理Dubbo在启动的时候默认会扫描这三个目录下的配置,以加载需要的扩展类/META-INF/services/META-INF/dubbo/META-INF/dubbo/internalExtensionLoader是Dubbo SPI中用来加载扩展类的,有如下三个重要方法,搞懂这3个方法基本上就搞懂Dubbo SPI了。加载扩展类的三种方法如下getExtension(),获取普通扩展类getAdaptiveExtension(),获取自适应扩展类.

2021-06-17 11:54:46 462 3

原创 手写RPC框架:Spring Bean 生命周期详解

基本概念我们将自己写的RPC框架和Spring进行整合,分析Dubbo源码的时候,都要对Spring Bean的生命周期有一个清晰的理解,所以这一节我们就分析一下Spring Bean的生命周期Spring是一个IOC容器当我们不用Spring进行开发时,我们需要在代码中设置对象的依赖关系。当我们用了Spring之后,由Spring来管理这种依赖关系,当我们想使用对象时,直接从Spring容器中获取即可BeanDefinition在Spring中对象被叫做Bean,因为Spring Bean在J.

2021-06-16 21:09:19 245

原创 Dubbo源码解析:基于注解配置原理解析

使用注解开发一个Dubbo应用客户端@Component("demoServiceComponent")public class DemoServiceComponent implements DemoService { @Reference private DemoService demoService; @Override public String sayHello(String name) { return demoService.sayHe.

2021-06-16 21:00:39 222 2

原创 Dubbo面试:高频面试题汇总

Dubbo服务注册和发现的流程各种角色如下Provider:暴露服务的服务提供方Consumer:调用远程服务消费方Registry:服务注册与发现注册中心Monitor:监控中心和访问调用统计Container:服务运行容器Dubbo服务注册和发现的流程如下服务容器Container负责启动,加载,运行服务提供者。服务提供者Provider在启动时,向注册中心注册自己提供的服务。服务消费者Consumer在启动时,向注册中心订阅自己所需的服务。注册中心Registry返回服.

2021-06-16 14:39:39 365 3

原创 生产问题:@Reference注入为空

线上发生事故了有一次我负责的系统和收银系统同时上线一波(用的是Dubbo)。然后很神奇的事情发生了,收银系统用@Reference注解注入我的接口,然后这个接口的实现类居然为空。其实我们当时没排查出来是什么原因?重启了一下就好了,毕竟重启大法好。 但本着不能给用户充钱的路上造成阻碍,还是要排查一波这个代理对象为空是如何造成的。线上dubbo的版本为2.8.9,注意包名是(com.alibaba)为了方便大家理解我说的内容,简单说一下RPC框架的执行流程。Server将服务信息注册到Regi.

2021-06-13 14:23:58 566

原创 生产问题:线程池被打满

线程池被打满的原因有哪些当系统中接口的响应时间过长或者直接拒绝响应时,你此时里面就应该想到的是Dubbo线程池是否被打满了?然后去监控系统看一下线程池的活跃连接数。Dubbo线程池被打满应该是一个很常见的问题,那么线程池为什么会被打满呢?public class FixedThreadPool implements ThreadPool { @Override public Executor getExecutor(URL url) { String name = .

2021-06-13 14:23:01 1092 4

原创 Dubbo实战:Dubbo的前世今生

分布式系统的架构演进过程Dubbo框架的出现是分布式系统演进的结果,我们先来回顾一下分布式系统的演进过程1 单应用架构2 应用服务器和数据库服务器分离单机负载越来越来,所以要将应用服务器和数据库服务器分离3 应用服务器做集群每个系统的处理能力是有限的,为了提高并发访问量,需要对应用服务器做集群分布式和集群的概念经常被搞混,现在一句话让你明白两者的区别。分布式:一个业务拆分成多个子业务,部署在不同的服务器上集群:同一个业务,部署在多个服务器上例如:电商系统可以拆分成商品,订单,用户等.

2021-06-12 20:58:31 437 3

原创 Dubbo源码解析:服务目录和路由

介绍之前的文章我们详细说了服务调用的过程,今天我们就来细化一下MockCluster到FailoverClusterInvoker的调用过程。当我们有多个服务提供者时,需要根据不同的策略从众多的提供者中选出合适的Invoker来发起调用,那么这些Invoker存放在哪?就在服务目录中。服务目录还会根据路由策略策略对最终返回的Invoker进行再次过滤。比如ip为A的Consumer只能让它调用ip为B的producer,路由的配置有很多方式,我们详聊。整体的流程下如图所示Invoker从D.

2021-06-12 10:29:53 409 1

原创 @Reference注入为空

线上发生事故了前天晚上上线一波,发生了一个挺有意思的事,昨天复盘了一下,分享一下。晚上的时候,我负责的系统和收银系统同时上线一波(用的是Dubbo)。然后很神奇的事情发生了,收银系统用@Reference注解注入我的接口,然后这个接口的实现类居然为空。其实我们当时没排查出来是什么原因?重启了一下就好了,毕竟重启大法好。 但本着不能给用户充钱的路上造成阻碍,还是要排查一波这个代理对象为空是如何造成的。线上dubbo的版本为2.8.9,注意包名是(com.alibaba)为了方便大家理解我说的内容.

2021-06-10 22:15:48 3034 8

原创 Dubbo面试:Dubbo中用到了哪些设计模式?

介绍策略模式这个毫无争议,Dubbo是基于SPI来扩展的,SPI就是典型的策略模式。Dubbo中可替换的组件太多了,例如负载均衡策略实现类解释RandomLoadBalance随机策略(默认)RoundRobinLoadBalance轮询策略LeastActiveLoadBalance最少活跃调用数ConsistentHashLoadBalance一致性hash策略工厂模式简单工厂模式:提供一个方法,返回创建好的对象public clas.

2021-06-07 14:37:38 585 4

原创 手写RPC框架:基于Java SPI的可扩展版

封装服务接口在之前的章节中,我们基于Java Socket实现了一个极简版本的RPC框架,了解了其实现的大概套路,本节我们就基于Java SPI写一个可扩展的RPC框架。各种组件都有对应的接口,如果你想替换某一个组件的实现,只需要重写接口的实现类,配置一下即可。老规矩,先封装一个获取学生信息的公共接口public interface StudentService { Student getStudentInfo(Integer id);}@Data@Builder@NoArgsC.

2021-06-05 15:21:16 365 6

原创 手写RPC框架:基于RPC框架封装一个spring-boot-starter

介绍整合的逻辑非常简单,只写了2个注解,1个自动装配的类和2个扩展类开发注解服务引入注解,用在需要进行远程调用的接口上@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public @interface RpcReference {}服务导出注解,我这里取巧了一波,在这个注解上加了@Component注解,这样被这个注解标记的类就能被注入到spring容器中。更优雅的实现方式是,自己扫描加了RpcService.

2021-06-04 16:55:26 549 7

原创 手写RPC框架:5分钟极速入门Netty的使用

介绍当我们用Netty开发网络应用程序时,一般只需要写对应的ChannelHandler即可,在ChannelHandler中处理业务逻辑Channel是网络通信的载体,你可以把它认为是一个实际的物理连接,Channel有很多种事件,如连接建立,连接关闭,数据读取。随着事件的发生会让Channel处于不同的生命周期,当对应的事件发生时,会回调ChannelHandler接口的对应方法事件回调方法解释channelRegisteredChannel创建后被注册到EventLoop.

2021-06-02 19:37:36 226 2

原创 Dubbo实战:如何高效的测试Dubbo接口

Dubbo Admin 使用我们可以用新版的Dubbo Amind来测试Dubbo接口我们在本地启动一个Dubbo Admin来演示一下用法github地址:https://github.com/apache/dubbo-admingit clone https://github.com/apache/dubbo-admincd dubbo-adminmvn clean package -DskipTests=truecd dubbo-admin-distribution/targetj.

2021-06-02 15:42:52 658 9

mybatis-generator-core-1.3.5.jar

支持接口和XML更名的mybatis-generator,具体使用参考 https://blog.csdn.net/zzti_erlie/article/details/99606620

2019-08-15

MongoDB权威指南第2版(书签,高清).zip

MongoDB权威指南第2版(书签,高清).zip,MongoDB权威指南第2版(书签,高清).zip

2019-05-14

Linux系统命令及Shell脚本实践指南

Linux系统命令及Shell脚本实践指南,书签,清晰,完整版

2019-04-17

Maven实战(高清完整带书签)

Maven实战高清完整带书签,Maven实战高清完整带书签,Maven实战高清完整带书签,Maven实战高清完整带书签

2018-01-09

将doc文件批量转为docx文件,用python将doc文件批量转为docx文件

用python将doc文件批量转为docx文件,用python将doc文件批量转为docx文件,

2017-12-28

Spring MVC学习指南

Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。, 本书重在讲述如何通过Spring MVC来开发基于Java的Web应用。全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,本书还配有丰富的示例以供读者练习和参考。, 本书是一本Spring MVC的教程,内容细致、讲解清晰,非常适合Web开发者和想要使用Spring MVC开发基于Java的Web应用的读者阅读。

2017-10-13

用Python将Word中的内容写入Excel

用Python将Word中的内容写入Excel

2017-08-28

Qt实现多语言的切换

Qt实现国际化,能切换程序的语言

2017-02-25

Qt加载字体文件删除字体文件

Qt加载自己的字体,不用系统提供的QFontComboBox

2017-02-25

Qt实现字体文件的加载和删除

Qt实现字体文件的加载和删除

2017-02-25

Qt实现语言切换

Qt实现语言切换

2017-02-23

Qt5串口助手V2.0(能记录上次打开的文件)

Qt5串口助手V2.0(能记录上次打开的文件)

2016-09-27

Qt5串口助手

用Qt5自身的类库开发的串口助手

2016-09-26

空空如也

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

TA关注的人

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