自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 问答 (1)
  • 收藏
  • 关注

原创 docker daemon.json肯多多

修改了harbor,想传个镜像到Registry,结果改了daemon就出错了异常如下:[root@localhost docker]# systemctl status docker.service● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)

2021-03-15 10:45:02 763

原创 harbor 安装启动遇到的keng

这里写自定义目录标题千万别用最新版本的harbor赶紧下个1.10版本的harbor经过替换版本之后合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入千万别用最新版本的harbor你会苦逼的,当时一时没有清楚这是什么引起,然后到对应的文件夹

2021-03-14 23:29:23 2043 2

原创 JDK动态代理之 字节码生成流程

字节码的生成流程不是所有的class文件都是经过JVM的编译然后生成的,比如我们的框架使用了大量的动态代理的字节码生成技术,就是通过代理流程拼接形成的字节码格式,从而生成的字节码文件。代理类是通过Proxy类的ProxyClassFactory工厂生成的,这个工厂类会去调用**ProxyGenerator类的generateProxyClass()方法来生成代理类的字节码generateProxyClass()静态方法的核心内容就是去调用generateClassFile()**实例方法来生成Clas

2021-01-10 15:08:44 966

原创 JDK动态代理之 WeakCache 篇

代理类是获取的深入理解从上一文中大致的分析了JDK动态代理的流程,发现很多细节的部分没能一一俱到,借此再深入写一遍作为记录,同时参考了大量的文章,汇总到一起,得到以下的精华部分WeakCache缓存的实现机制代理类是获取的深入理解WeakCache的成员变量和构造器WeakCache的get方法二级缓存的值是一个Factory实例上一篇我们分析了Proxy类的内部是怎样产生代理类的,我们看到了Proxy内部用到了缓存机制,如果根据提供的类加载器和接口数组能在缓存中找到代理类就直接返回该代理类,否则会调

2021-01-10 14:46:30 325

原创 JDK动态代理,降服小厂CTTTTO

JDK动态代理的完整思路以及流程JDK动态代理的流程图Proxy.getProxyClass,JDK动态代理源码入口ProxyClassFactory,生成代理类的核心,包括对字节码的动态生成以及执行JDK动态代理的流程图从图中可以大致看到动态代理的流程,入口类就是自定义的invocationHandler,的invoke方法执行生成代理类对象,通过生成代理类之后,执行被代理类的方法,而代理类是通过getProxyFactory工厂,动态生成代理类的字节码,从而提供计算机执行的机器码。而在代码调用层

2021-01-09 15:28:54 132

原创 端午节送书《Spring技术内幕》

公众号送书抽奖送出一本spring技术内幕一书,内容适合5年左右工作经验的老码农学习。

2020-06-26 15:06:44 168

原创 快速浏览docker以及K8S的内容

有关容器的理解docker以及K8S的使用场景区别docker以及K8S的功能区别docker以及K8S结构方面的区别docker以及K8S的使用场景区别简单的看了一遍K8S以及docker的区别以及使用,可以简单的理解就是docker还是处于一个单机版的部署,当然现在也有跨机房的,比如dockerswarm,但是还是没有K8S流行,最主要还是,作为跨集群的容器部署工具,K8S使用以及命令理解很容易,而且底层也是基于docker命令即可完成使用,这里最主要的区别还是跨集群的通讯方面,K8S是基于RPC实

2020-06-11 19:14:25 164

原创 深入理解springcloud

618活动本期送出的是方志朋的 《深入理解springcloud》,关注公众号 孤独的投机家 即第一篇文章点击进入可抽取。

2020-06-04 17:24:22 249

原创 springsecurity如何防御CSRF攻击

quickstart一SecurityConfig继承WebSecurityConfigurerAdapter二定义用户接口加入到spring容器中三spring security内部的流程一SecurityConfig继承WebSecurityConfigurerAdapter先进行配置,现在使用这套工具都是先定义好类@Override protected void configure(HttpSecurity http) throws Exception {

2020-06-03 17:55:10 1119

原创 《大规模分布式存储系统》--杨传辉

送书啦本月将会送出一本 《大规模分布式存储系统》–杨传辉关注公众号留意抽奖信息。

2020-05-31 22:50:03 330

原创 孤独送书啦~本期送出《springboot实战》

孤独送书活动啦~本次送出汪云飞的 springboot实战一书。关注孤独的投机家即可参与,在公众号留言或者从菜单栏选择孤独抽奖跳转。

2020-05-28 17:00:18 105

原创 微信公众号的模板消息如何实现

前言相信很多读者关注了我的公众号之后很多自动回复的消息,突然感觉,腾讯做的这个消息模板还是很及时的进行推送的,而基于这套的消息推送的功能,大概如何实现,本文就开始这话题的讲解。微信扫码登陆的实现前言链路请求分析登陆的流程分析腾讯提供的丰富接口链路请求分析项目里面需要引入公众号提供的依赖,当然,除了这些之外,基于分布式系统的前提依赖比如dubbo,zk等的依赖都加入项目里面。还要针对微信的配置controller获取客户端传入的数字签名的信息进行校验逻辑验证签名的核心代码给关注的用户

2020-05-24 21:01:30 497

原创 springcloud全家桶系列

网关zuul的搭建网关的概念理解链路跟踪的原理健康检查网关的概念理解对外统一一个IP提供用户调用,协调整个调用的代理。这也称之为代理模式。网关也有流量网关,比如对上传的包的大小进行检查,而且可以把服务降级放到zuul来提前返回给用户,不用 走服务。还有一种路由模式,网关作为一个透明代理,服务端返回的结果不会经过网关,但是请求会经过网关。如果忽略某些服务需要注解链路跟踪的原理配置,可以提供最原始的报文,相当整体的链路,如果是使用zipkin会有界面查看健康检查...

2020-05-18 17:07:53 140

原创 springcloud全家桶系列

hystrix feign 整合hystrix dashboard服务监控hystrix线程隔离,信号量隔离整合feignhystrix dashboard服务监控配置如下启动类yml配置hystrix线程隔离,信号量隔离拿到信号量的可以接入请求,如果没有信号量就不能访问,做限流使用,基于线程池隔离信号量隔离接入请求有一个线程池Tomcat处理请求有一个线程池MVC也有一个线程池springcloud里的hystrix会针对服务开了一个独立的线程池处理异常如果配置了信号量就

2020-05-17 21:18:15 183

原创 springcloud全家桶系列

springcloud全家桶SRFeign的常用调用方式Ribbon重试策略与服务恢复Hystrix原理Feign的常用调用方式feign面向api或者面向jar包编程,以下的依赖引入就可以接受到客户端的请求的参数,使用requestParam注解获取到客户的参数,有feign来组装URL,然后请求对应服务的api,所以需要在服务端有对应的api,调用就调用feign的实现的接口,通过注解feign读取客户端的传入参数Ribbon重试策略与服务恢复Hystrix原理...

2020-05-17 11:37:36 301

原创 SpringCloud全家桶HoxtonSR3

restTemplate内容总体流程ribbon基于服务器端的负载均衡feign的搭建内容总体流程有精力的朋友可以按照架构里面的内容自行的找资料,基本大多数都可以在官网得到非常详细的解答。以及详细的视频链接地址。ribbon基于服务器端的负载均衡基于IP地址进行区分的服务集群,服务器的列表进行轮询,随机,性能,hash等方式进行访问,而客户端就拉取服务器的列表进行特定的负载均衡方式选择服务器来处理,而服务器的状态通过ribbon来返回状态信息,而拉取服务器通过NG维护IP以及服务状态,如果依赖NG

2020-05-16 17:37:12 246

原创 SpringCloud全家桶系列HoxtonSR3

架构系列的高可用环境搭建Eureka高可用集群环境搭建Eureka安全认证注册中心原理Eureka高可用集群环境搭建这里的重点无非就是Eureka的作用以及,在集群中的搭建,搭建的过程遇到非常多的问题,无非还是注解的使用,以及yml文件的配置问题,默认情况下如果要实现高可用就这里的value都设置为true,目前是单节点对比启动的不同,观察日志的内容。这里如果是true就是互相之间通讯。这也是微服务的性质决定的,Eureka的诞生就是高可用的,互相之间都拉取到集群环境的服务的信息,保证任一台出现了故障照

2020-05-16 11:14:35 298

原创 设计模式2

设计模式策略模式工厂模式外观模式责任链模式策略模式从设计模式的角度确实 可以让项目维护起来更加的方便,这里就结合之前在某金融公司的项目来讲讲策略模式,这里的需求大致是如下:现在需要对某个账号的贷款进行还款处理,由于被借贷人是多个金融机构,而每个按照级别来排序,进行还款,先还A,然后换B,直到还完为止。如果没有还完就累计到下期的逾期来处理。这里的实现就需要用到策略模式来实现。使用到泛型,定义...

2020-05-06 18:45:37 133

原创 如何写一个Stack Overflow的程序

0基础课程OOM以及Stack Overflow二级目录三级目录OOM以及Stack Overflow里面有关于对象分配以及栈的方法区的变量,记得以前被面试过一个面试试题,主要是考量堆分配内存以及栈分配内存的区别,以及GC的时间,只要在内存有限,栈分配过多的变量,这时候就会买来得及GC就溢出,这个如果在方法区出现这个的代码,很有可能出现方法栈溢出// 方法内部声明多个变量String fo...

2020-05-06 15:05:58 373

原创 如何自定义注解应用在切面编程上?进阶高级程序员你需要懂!

回顾之前做了几个关于权限访问的功能,大家都会想到使用shiro进行处理,但是原生的提供的需要做适当的扩展才能满足自定义的权限控制,这时候,你就需要继承shiro的AuthorizingRealm类来实现具体代码@Componentpublic class HynRealmConfig extends AuthorizingRealm { @Autowired privat...

2020-02-27 23:06:07 301

原创 SSO依然是BAT的面试重点

yiqing期间是否你也准备着无数的面试**是的I am keepping interviewed**上周电话面试了某B公司,印象最深的还是那个单点登录的问题,毕竟很多底层的问题以后再分享,比如聊聊AQS等,不过这节先谈谈SSO,毕竟老生常谈的东西,再次复习一下,表示对Apache的shiro的复习。JwtBuilder这个接口是shiro单点登录的核心部分,比如设置了Subject,过...

2020-02-25 15:02:52 259

原创 混沌理论摘要

原文链接提及到混沌理论,本ID 理解就是一个递归的过程,比如提及到的如何把大的趋势分解为小的趋势的过程,把大的同体结构分解为小级别的同体结构的过程。下面的是精彩的摘要。混沌理论和分形:沌理论揭示的有序与无序的统一、确定性与随机性的统一,是继相对论和量子力学问世以来,本世纪物理学的第三次大革命,其覆盖面广及自然科学与社会科学的几乎各个领域。它正促使整个现代知识体系成为新科学,并正在消除对于统...

2019-05-25 12:29:03 1117 1

转载 基于Future的java并发编程

转 https://blog.csdn.net/amd123456789/article/details/80522855业精于勤,荒于嬉;行成于思,毁于随。—韩愈它告诉我们,事业的成功在于奋发努力,勤勉进取,太贪玩,放松要求便会一事无成;做事情要想成功,需要反复思考、深思熟虑,而随手随意、随随便便行事,做事不经过大脑,必然招致失败。FutureTask 也可以做闭锁,它是 Future ...

2019-04-28 11:22:45 128

原创 ThreadLocal重新理解上路

前言之前基于对深入理解JVM的理解,对于ThreadLocal的理解是存在弱引用,从而使得避开了本次的GC,而并没有从数据结构的层面分析,ThreadLocal的内部实现原理,本次重新上路就是针对ThreadLocal的数据结构而做出分析,从设计原理到JVM的回收,以及如何保证多线程的场景下实现互不干预的效果。ThreadLocal的应用概念首先,ThreadLocal是有节点概念,而这个节...

2019-03-30 22:21:38 145

原创 从RocketMQ源码的Store模块分析RocketMQ

前言前几篇都是基于RockeMQ的工具类的源码来分析其架构,功能等,本节从RocketMQ的存储方面来分析,RocketMQ是如何实现回调,高可用的。消息追加的回调方法AppendCallback这个的追加的消息体分为批量的以及单一的消息体两种方式,都是实现了MessageExt类,而MessageExt继承了Message的基类,包括定义了消息的offset,queueID,storeSi...

2019-02-08 23:00:53 788

原创 从RocketMQ源码的NameSrv模块分析RocketMQ

前言从RocketMQ启动来分析,namesrv的功能就是提供broker的注册以及client通过topic来获取routing的信息,从broker获取相应的操作过程,简单的介绍还是从源码的角度来分析,本节主要是对namesrv的主要功能,包括默认请求处理方式,集群请求处理方式,以及路由信息管理,键值对配置管理等来入手,同样也是从官网提供的mockito用例入手。KVConfig包nam...

2019-02-08 00:58:45 586

原创 如何重构老项目更加安全快捷?

前言很对一定工作年限的读者相信都遇到把老项目重构成技术比较新的项目,比如,笔者之前就是把一些MVC的项目重构为springcloud项目等,这一路上消耗的时间不亚于重写写一个项目,后来发现了重构项目的神器,在这里供读者参考。mybatis逆向工程逆向工程字面意思就是反向生成工程,和hibernate一样mybatis也有自己的逆向工程工具,hibernate的逆向生成我没有做过,不过我猜大概...

2019-02-06 09:58:23 658

原创 从RocketMQ的common模块分析RocketMQ

前言从之前的几节介绍了消息中间件,以及之间的使用区别,这节将会从RocketMQ的common模块出发,分析设计了思路以及可以借鉴的代码逻辑,代码技巧等,毕竟目前好的架构师一半是来自阿里,学习阿里的这套代码规范以及设计思路,帮助读者在项目中更好的,更高层面思考模块的设计,后续将会陆续的从其他模块调选精辟的设计思路来分析。从UtilAll.java类设计工具类阅读源码的步骤第一步并不是直接看源...

2019-02-05 17:38:09 589

原创 从面试中的LMAX Disruptor问题

前言上节提及到了关于队列的生成以及使用的api从应用的角度来分析了队列的各种使用,包括常用的rabbitMQ以及性能比较好的kafka等等,而对于LMAX的介绍相对来说比较少,而本节就从源码的角度来看看面试中的应答,毕竟作为消息中间件,性能方面,lmax是毋庸置疑是性能之王,单线程可以并发600w的高性能,具体是什么的结构让他拥有如此的性能,下面从冰山一角来作出解释,后续的章节会陆续在有条件的情...

2019-01-29 00:25:32 903

原创 Redis,Kafka,ActiveMQ,RabbitMQ, JVM, lMax Disruptor 等实现的队列进行对比 -- lMax篇

前言前几节提到的队列的实现都是基于并发量不是特别大的场景,而且需要消息消费的数据数据达到最终一致性做了折中的处理,而本节针对超高并发量的场景下使用lMax,这节就重点提及disruptor的使用,以及从各大厂对disruptor的使用情况,简单的介绍disruptor的文章。文中介绍了disruptor的性能,以及特有的数据结构,分析了缓存的三种级别,分别对那种情况下能使用到最高速的L1缓存做了...

2019-01-26 16:52:53 967

原创 Redis,Kafka,ActiveMQ,RabbitMQ, JVM, lMax Disruptor 等实现的队列进行对比 --JVM篇

前言前面章节提及到的队列的几种变形,本节就结合代码讲述JVM层面的队列的使用,也就是java原生里面支持双向阻塞的队列LinkBlockingQueue的使用。只是这里带出一个知识点就是,JVM在同一时刻只会初始化一个类,使用匿名内部类实现单例,这就支持了线程安全。具体代码如下。秒杀队列(固定长度为100)package com.itstyle.seckill.queue.jvm;impo...

2019-01-21 23:07:05 1006

原创 beanNameAware,applicationContextAware,DisposeableBean在项目中的使用

前言今天在项目中使用了研发部对spring框架的扩展的应用,比如,实现消息队列功能的springEven,springListener,以及对上下文的扩展,实现了spring的applicationContextAware,而本节就是根据项目的扩展,综合的分析bean的生命周期,在这里,介绍项目里是先定义了一个service的抽象层,实现了抽象接口baseService层,这个base层实现了自...

2019-01-21 21:04:50 713

原创 Redis,Kafka,ActiveMQ,RabbitMQ, JVM, lMax Disruptor 等实现的队列进行对比 --Redis篇

前言上一节重点介绍了RabbitMQ在rabbitAdmin的使用以及结合RabbitTemplate的使用细节,从而介绍了适配器设计模式在监听器部分的应用场景,从而得出,rabbitMQ是灵活,适用性强的消息队列,而本节会重点的结合redis的使用场景来对redis重点介绍,之前的章节有介绍了在项目上使用redis来实现分布式锁,以及使用redis来实现热点文章的展示等功能,这节结合使用场景,...

2019-01-20 22:34:24 688

原创 rabbitMQ里面的MessageListernerAdapter的适配器模式

前言在前面章节提到rabbitMQ的监听器的适配模式的时候,就想找一篇关于适配器通俗易懂的文章给读者分析的。适配器模式是将一个类的接口转换成客户希望的另外一个接口,身边很多东西都是适用于适配器模式的,笔记本的电源(也叫电源适配器),是将220V的交流电转换为笔记本电脑所需要的12V(电流先忽略),笔记本电脑的各种接口,VGA转Hdml,USB-TypeA 转 USB-TypeC,亦或者你在香港...

2019-01-20 11:12:21 420

原创 Redis,kafka,activeMQ,RabbitMQ,JVM, lMax Disrupt等实现的队列进行对比--开篇

前言结合前面提到的各种rabbitMQ的使用,本节开始综合的对比市场上流行的redis,kafka,activeMQ等的进行对比,附加使用的代码Demo提供参考。文章大致的结构分为,rabbitMQ的使用介绍,这里的介绍结合项目的使用源码,主要是结合MVC的使用,而其他的整合,比如springcloud,springboot等在这篇介绍之后,后续会继续补充。而题目提及到的大家都不会陌生,可能了解...

2019-01-19 23:15:23 358

转载 rabbitmq的消息可靠投递 --下篇

文章目录保证消息100%投递如何保证生产者可靠性投递消息方案一 : 消息入库,对消息状态进行打标。方案二 : 消息延迟投递,进行二次确认,回调检查confirm确认消息Return消息机制消费端限流策略消费端ACK与重回队列消费端的手动ACK和NACK消费端重回队列TTL队列/消息死信队列死信队列设置保证消息100%投递如何保证生产者可靠性投递消息保证消息成功发出...

2019-01-15 22:00:20 293 3

原创 RabbitMQ的消息可靠投递 --中篇

前言上一节提到的问题,关于在消费端消费了消息后进行回调处理作出应答的机制,再通过RPC的方式进行调用生产端把没有正常消费的消息进行重复的投递的过程,产生的疑问都归结于,broker没有及时的作出回应的情况如何处理的问题,而本节就针对这个生产端以及broker端的应答作出详细的解说,结合上一节的内容作出一个补偿的方案,把项目的优化推进。broker的确认机制这个表示生产端发送消息,broker...

2019-01-13 22:47:49 171

原创 RabbitMQ的消息可靠投递 --上篇

前言上一节介绍了有关rabbitmq里面常用了几种命令,以及交换机的路由规则等,生产端以及消费端之间的伪代码来介绍了各种路由规则下的消费情况,从管控台的设置,数据分析,了解到如何手动设置vhost下的交换机以及用户,队列等。这节开始就rabbitmq的高级特性进行详细的介绍,比如TTL,死信队列,限流,ACK以及失败转移等生产中常用到的特性。消息如何保障100%的投递成功?这里投递成功的意思...

2019-01-13 19:19:43 456

原创 RabbitMQ之渐入佳境

前言上一节提及到的rabbitMQ提供的的三种常用命令rabbitmq-server,rabbitmq-plugins,rabbitmqctl,其中rabbitmqctl的命令最为丰富,功能支持用户的操作,交换机的操作,vhost等的操作,有关rabbitmqctl的使用可以通过在Linux系统在rabbitmq的目录下输入命令rabbitmqctl - list就可以查看ctl所有的命令。E...

2019-01-13 14:44:56 142

转载 CSDN站内最全的zookeeper分布式锁的讲解

1 场景描述在分布式应用, 往往存在多个进程提供同一服务. 这些进程有可能在相同的机器上, 也有可能分布在不同的机器上. 如果这些进程共享了一些资源, 可能就需要分布式锁来锁定对这些资源的访问。2 思路进程需要访问共享数据时, 就在"/locks"节点下创建一个sequence类型的子节点, 称为thisPath. 当thisPath在所有子节点中最小时, 说明该进程获得了锁. 进程获得锁之...

2019-01-12 12:55:53 122

空空如也

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

TA关注的人

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