自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

轰鸣

形而上者谓之道,形而下者谓之器

  • 博客(59)
  • 资源 (8)
  • 收藏
  • 关注

原创 SPI : ServiceLoader如何打破双亲委派

JDK的SPI是怎么打破双亲委派的?

2022-08-28 21:28:41 263 1

原创 SPI : Service Provider Interface

jdk6中引入了一个新特性,使得我们可以根据一个指定的「接口」去找到并加载指定的「实现」。本篇文章会详细介绍下SPI的用法及场景。

2022-08-26 13:45:29 214

原创 Docker部署es+kibana

一文装好kibana和es

2022-08-10 13:13:40 326 1

原创 算法常见知识点(持续更新)

常见算法解题方法

2022-08-03 10:56:17 82

原创 我的递归从不爆栈

我的递归从不爆栈

2022-08-02 17:33:15 125

原创 浅看SpringBoot的自动装配

浅看SpringBoot自动装配

2022-07-29 17:37:13 199

原创 Spring(1):BeanDefinitionRegistry

浅看BeanDefinitionRegistry

2022-07-29 11:30:17 213

原创 SpringBoot启动的时候做了什么(2)

SpringBoot启动的时候做了什么之SpringApplication.run(args)

2022-07-24 12:34:01 276

原创 SpringBoot启动的时候做了什么(1)

SpringBoot启动的时候做了什么之SpringApplication

2022-07-23 23:01:40 799 3

原创 【Nacos】NacosClient在服务注册时做了什么

NacosClient 服务注册源码分析

2022-07-17 17:58:25 450 1

原创 SpringAOP之代理模式选择

目标类:ProxyFactoryBean目标方法:public Object getObject() throws BeansException { initializeAdvisorChain(); if (isSingleton()) { return getSingletonInstance(); } else { if (this.targetName == null) { logger.info("Using non-singleton proxies with sing

2022-05-27 10:59:56 197

原创 docker & docker compose & 云效流水线

docker 及 docker compose 的安装,配合云效流水线部署服务

2022-05-10 11:23:06 354

原创 yarn : 无法加载文件 yarn.ps1,因为在此系统上禁止运行脚本。

yarn : 无法加载文件 D:\devtool\node\node_global\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。npm install --global yarn安装yarn的时候抱这个错。同时还有这么一个提示:有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID

2022-05-06 09:50:44 2780 3

原创 备忘:玩go的时候遇到的问题【持续更新】

标题go get 或者 install一直超时go env---GOPROXY=https://goproxy.cn,direct---更换GOPROXY为国内代理go env -w GOPROXY=https://goproxy.cn,direct

2022-04-29 15:51:01 98

原创 分布式一致性协议之Raft

最近看RocketMQ的时候,了解到v4.5.0之后,broker采用遵循raft协议的复制组来实现数据一致性。虎躯一震,raft协议在现在的脑子里变的熟悉又陌生…问题不大,重新刷一遍raft。先贴官网:The Raft Consensus Algorithm再贴动画演示:Raft: Understandable Distributed Consensusps:里边的动图挺有意思😈简介ps:来自维基百科Raft是一种用于替代Paxos的共识算法。相比于Paxos,Raft的目标是提供更清晰的

2022-03-19 12:09:01 2365

转载 K8S:API设计原则

API设计原则看到了K8S的API设计原则,对日常开发还是很有借鉴意义的,特此留存。对于云计算系统,系统API实际上处于系统设计的统领地位,正如本文前面所说,K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作,理解掌握的API,就好比抓住了K8s系统的牛鼻子。K8s系统API的设计有以下几条原则:所有API应该是声明式的。正如前文所说,声明式的操作,相对于命令式操作,对于重复操作的效果是稳定的,这对于容易出现数据丢失或重复的分布式环境来说是很

2021-09-18 16:44:26 196

原创 git rebase下的git flow

rebase基础介绍git代码合并有两种,git merge 和 git rebase 。两者目的相同,都是把不同分支的提交合并到一起,但是过程有差异。git merge作用:把源分支的提交合并到目标分支。过程中,目标分支改变,源分支不变。优点:简单易上手/保留了提交历史和时间次序/分支结构不变缺点:提交历史被大量的merge操作污染/git bisect调试困难git rebase作用:清除了历史,将一个分支完全转移到了目标分支优点:复杂的历史变成优雅的提交线缺点:分支上下文模糊了/d.

2021-08-10 18:40:02 498

原创 【线程知识点】-- 自旋锁

文章目录前言一、什么是自旋锁?二、为什么要用自旋锁?三、实例讲解AtomicInteger四、自己实现一个可重入的自旋锁五、缺点及适应场景缺点适用场景总结前言自旋锁是个比较基础的知识点了,应该很熟悉的掌握。一、什么是自旋锁?自旋”可以理解为“自我旋转”,这里的“旋转”指“循环”,比如 while 循环或者 for 循环。“自旋”就是自己在这里不停地循环,直到目标达成。而不像普通的锁那样,如果获取不到锁就进入阻塞。自旋锁并不会释放CPU的时间片,而是通过自旋的方式不断地去尝试获取锁,如果尝试获

2020-12-25 11:26:07 702

原创 『怎么用』代理模式

阐述为一个对象提供一个占位符或者是替身,用以控制对这个对象的访问;使用代理模式创建代理对象,代理对象用以访问被代理的对象。被代理对象可以远程对象、创建时开销大的对象、需要安全控制的对象。远程代理远程代理作为另一个JVM上对象的本地代表。调用代理上方法时,远程代理通过网络将请求传输到远程,并将结果再通过网络传输到本地,后返回给调用方。虚拟代理虚拟代理作为创建时开销大的对象的代表。虚拟代理经常直到我们真正需要一个对象的时候,才会去创建这个对象。在对象创建前、创建中的时候,这个对象的访问都

2020-08-15 17:14:27 156

原创 『怎么用』装饰者模式

消除恐惧的最好办法是直面恐惧,奥利给:)阐述原理实现总结Q&A阐述利用继承设计子类的行为,是在编译时静态决定的,且所有的子类都会继承到这个行为。如果用组合的做法扩展对象的行为,就可以在运行时动态的进行扩展。装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。OO原则:对扩展开放,对修改关闭。原理Component是被装饰对象的爸爸,是个接口,定义被装饰者的行为Decorator是装饰者的爸爸,它继承了Component,保证了装饰者

2020-07-01 21:45:29 174

原创 『每日一问』LockSupport怎么实现线程等待、唤醒

wait/notify实现线程通信实现线程通信呢,比较传统的办法就是使用synchronized关键字获取对象锁之后,结合Object自带的wait/notify方法来实现。一个简单例子如下: public static void main(String[] args) throws InterruptedException { ObjectTar objectTar = new ObjectTar(); new WaitThread("WaitThread", obj

2020-06-30 22:34:56 360

原创 『怎么用』观察者模式

主题【发布者】import java.util.Observable;@Datapublic class SubjectData extends Observable { /** * 观察者订阅的主题数据 */ private String lookData; /** * 主题数据发生变化时调用此方法,同时时间订阅发布 * @param changeData :主题变化的数据 */ public void look

2020-06-29 17:22:47 790

原创 『每日一问』ReentrantLock加锁解锁

Lock接口中有六个方法void lock();void lockInterruptibly() throws InterruptedException;Condition newCondition();boolean tryLock();boolean tryLock(long time, TimeUnit unit) throws InterruptedException;void unlock();加锁ReentrantLock.lockpublic void lock() .

2020-06-29 14:44:42 187

原创 『每日一问』怎么实现一个正确的双重检查锁定

缘由我们程序里,有时候一些开销比较大的对象创建,往往不会提前创建,而是只有在实际要用到的时候才会去创建。也就是基本下边这个写法:public class UnsafeLazyInitialization { private static Instance instance; public static Instance getInstance() { if (instance == null) // 1:A线程执行 instance = new Instance();

2020-05-30 22:27:23 351

原创 『每日一问』volatile干嘛的

内存语义volatile写:当写一个volatile变量的时候,JMM会把这个线程的本地内存中的共享变量全部刷新到主内存。注意,是全部,而不是仅仅volatile变量volatile读:当读一个volatile变量的时候,JMM会将这个线程的本地内存置为无效,然后从主内存中读取共享变量。以上两步一起来看的话,读线程在读一个volatile变量的时候,写线程在写这个volatile变量之前的所有对共享变量的操作都会立即变得对读线程可见。内存语义的实现之前说到过,重排序分为编译器和处理器重排两种。为了

2020-05-27 16:22:38 197

原创 『每日一问』简单聊聊JMM/说说对JMM的了解

JMM流水线

2020-05-27 13:06:08 402

原创 瞅瞅源码之HashMap[jdk1.8]

文章目录HashMapJAVADOCNO BB , SHOW CODESTATIC AREAFieldsConstructsPublic MethodputgetremoveJDK8 新增的方法Q&AHashMap : 如何有效减少碰撞HashMap : 扩容的问题HashMap需要满足什么条件才会将链条转为红黑树为啥不直接使用hashCode做散列HashMap中为什么要求初始化容量...

2019-12-16 17:57:32 168

原创 瞅瞅源码之ConcurrentLinkedQueue

文章目录成员变量Node是啥Unsafe干嘛的构造方法新增一个元素删除一个元素其他的一些方法NOTE:参考资料基于链接节点的无界线程安全{@linkplain Queue队列}。这个队列对元素FIFO(先进先出)进行排序。队列的head是队列中存在时间最长的元素。队列的tail是队列中时间最短的元素。新元素插入到队列的尾部,队列检索操作获取队列头部的元素。当许多线程共享对公共集合的...

2019-09-17 15:10:29 209

原创 瞅瞅源码之LinkedList

文章目录成员变量Node是个啥构造方法modCount干嘛的add(E e)get(int index)indexOf(Object o)删除操作迭代器(有点意思的东西)不总结写了干嘛实现了{@code list}和{@code Deque}接口的双链表。实现所有可选列表操作,并允许所有元素(包括{@code null})。所有操作的执行都与doubly-linkedlist的预期相同。...

2019-09-10 17:56:10 290

原创 瞅瞅源码之ThreadLocal

ThreadLocal ThreadLocalMap Thread 三者之间的关系ThreadLocalMap是ThreadLocal的一个内部类/** * ThreadLocalMap是一个定制的散列映射,只适合维护线程本地值。 * 在ThreadLocal类之外不导出任何操作。 * The class is package private to allow declara...

2019-06-23 17:41:55 182

原创 Dubbo Gateway - 网关设计

背景先说结论:dubbo目前版本(2.7.1 & 3.X)无法使用开源网关组件。为什么?通过Dubbo服务与注册的设计可以看出Dubbo服务的基本特点:注册/发现对象 - Dubbo服务接口注册/发现载体 - Dubbo URL (元信息:接口、版本、分组等)一个Dubbo URL示例 ↓↓↓dubbo://192.168.50.233:20880/com.paran...

2019-06-02 21:03:27 22628 7

原创 Spring Cloud Eureka 原理浅析

作用:服务治理(服务注册与发现)两个概念:服务注册:每个服务单元向注册中心登记自己提供的服务,注册的信息含括主机与端口号、版本号、通信协议等。服务中心会维护一个服务清单,同时使用心跳的方式检测清单中的服务是否可用,若不可用则需要从服务清单中剔除,以达到排除故障服务的效果。服务发现:微服务下的服务治理框架下,服务之间的相互调用不再通过具体的实例地址进行直接调用,而是通过向服务名发起请求调...

2019-05-24 14:45:53 550

原创 mongodb 内嵌索引问题

项目中出现了这样一个问题,内嵌唯一索引不生效导致出现不合预期的数据。找下原因。document如下:@Data@Document(collection = "out")@CompoundIndexes({ @CompoundIndex(name = "inner_unique", def = "{'inner.key':1}", unique = true)})...

2019-01-03 16:42:43 1033

原创 webflux --- 异常捕捉

controller @GetMapping("/aspect") public Flux<String> testAspect(@RequestParam String name) { return Flux.just("tom", "jerry", "jucifer", "kaige") .map(s -

2018-12-03 23:35:35 2801

原创 @DBRef

尝试@DBRef的使用两个document结构如下:@Data@Document(collection = "main")public class Main { @Id private String id; private String name; private String age; private String gender;...

2018-11-15 13:55:34 2874

原创 spring boot 读取可能不存在的配置

有时候我们会遇见这么一种情况,除了生产环境之外有些配置属性在其余环境不存在,那么我们的代码在这些不存在的环境中读取这些不存在的属性就会报错。下面是一种解决方式:原先采用的读取方式:@Value("${spring.redis.password}")private String redisPassword;替换的解决方式: import org.springframework....

2018-09-27 09:53:54 754

原创 mysql 中enum字段的使用

 使用场景限定该字段的取值范围,比如说性别(男,女 ,不明~)注意事项mysql中的enum类型字段,不建议存值为数字。 可能报错  Caused by: java.sql.SQLException: Data truncated for column 'Color' at row 1  ;       ↑* 原因:Jpa默认使用整数顺序值持久化枚举类型;* Mysql...

2018-07-19 13:47:53 5708

原创 【线程知识点】-- ThreadLocal

概述源码介绍: * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thread that accesses one (via its * {@code get} or {@code set} method) has...

2018-05-30 15:29:52 1321

原创 【线程知识点】-- CountDownLatch

CountDownLatch是什么CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier、Semaphore、ConcurrentHashMap和BlockingQueue,它们都存在于java.util.concurrent包下。CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望...

2018-05-18 12:47:26 1006

原创 【线程知识点】-- 栅栏:CyclicBarrier

1请输入标题首先看下JDK中的介绍:/** * A synchronization aid that allows a set of threads to all wait for * each other to reach a common barrier point. CyclicBarriers are * useful in programs involving a fixed s...

2018-05-17 19:00:28 1100

txc-client-2.0.69.jar

阿里分布式事务解决方案GTS jar包 -- txc-client-2.0.69.jar

2018-03-15

NIO测试代码

nio测试代码

2017-07-11

自动生成二维码

自动生成二维码

2017-06-20

阿里巴巴Java开发手册v1.2.0.pdf

阿里巴巴Java开发手册v1.2.0.pdf

2017-05-31

jackson-all-1.9.5.jar

jackson-all-1.9.5.jar

2017-04-06

热部署 HptCode2.jar

热部署 HptCode2.jar

2016-12-21

关于SoapUI的中文使用手册

SoapUI的中文调试手册,可用于项目开发

2016-09-02

空空如也

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

TA关注的人

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