自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liaozijian的博客

Java编程之旅

  • 博客(29)
  • 收藏
  • 关注

原创 我是如何设计函数引擎的

项目里存在一个这样的系统,它的主要功能类似于适配器,将一个系统的异构数据进行转化,处理成标准的数据流,交给另一个平台系统。当然,也可以反过来理解,有一个平台级系统,需要从多种数据源(系统)中采集数据,每种数据源的数据结构都不相同,需要有个中间人进行转化。这个系统就承担了这样的角色。这样的架构虽然降低了平台系统的复杂度,使每个适配器只专注于某一个数据源的对接。但由于平台系统从数据源获取数据是通过HTTP请求的方式完成的,一般来说可能涉及十几到几十个接口的对接。

2023-10-08 21:25:44 109

原创 一个对象在JVM中经历了什么?

new关键字初始化子类,父类未初始化时,先初始化父类虚拟器启动,初始化main()方法的类加载类指令的参数就是指new User()的User简单来说,符号引用就是字面量,比如User就是一个符号引用。详细来说,符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能无歧义地定位到目标即可。现在再来看类加载的解释,就是当虚拟机遇到new User()时,首先会检查能否在常量池中定位到User, 并且检查User这个类是否被类加载过。

2023-02-06 10:38:59 285

原创 MySQL事务隔离级别

索引优化这四个字说实话我认为其实挺难理解的。看到这四个字我脑门上是:????索引还要优化吗?调优SQL一般来说不就是看它有没有走索引,没走索引给它加上索引就好了吗?嗯,所以你是怎么给它加索引的?看SQL应该怎么走索引撒!那SQL是怎么走索引的呢?又是怎么判断这条SQL会不会走索引呢?我:…, 咱今天就来分析分析!要是你还不了解MySQL底层的数据结构,建议你先看看MySQL数据结构最左前缀法则即为:索引的匹配从最左边的字段开始,匹配成功才能往右继续匹配下一个字段。不理解?

2023-02-01 10:31:42 190

原创 MySQL索引优化(万字详解)

索引优化这四个字说实话我认为其实挺难理解的。看到这四个字我脑门上是:????索引还要优化吗?调优SQL一般来说不就是看它有没有走索引,没走索引给它加上索引就好了吗?嗯,所以你是怎么给它加索引的?看SQL应该怎么走索引撒!那SQL是怎么走索引的呢?又是怎么判断这条SQL会不会走索引呢?我:…, 咱今天就来分析分析!要是你还不了解MySQL底层的数据结构,建议你先看看MySQL数据结构最左前缀法则即为:索引的匹配从最左边的字段开始,匹配成功才能往右继续匹配下一个字段。不理解?

2023-01-30 10:32:54 371 1

原创 MySQL Explain详解

explain是MySQL中的一个关键字,可以用于模拟优化器执行SQL语句,分析你的SQL的性能瓶颈。使用时只需将该关键字加在sql头部,如。

2023-01-29 14:24:07 1121

原创 MySQL数据结构

在日常工作中,MySQL无外乎是我们最熟悉的数据库了,理解MySQL的数据结构和索引特点,能够帮助我们写出查询效率更高,逻辑更为明确的SQL,也能给我们设计表结构时带来思路。

2023-01-28 15:40:19 217

原创 如何使用注解实现分布式锁

如何基于注解使用一把好用的分布式锁?

2022-06-02 09:35:12 1304 3

原创 关于我对Spring循环依赖的思考

关于我对Spring循环依赖的思考

2022-05-29 15:58:17 218

原创 一文详尽单元测试

前言如果你认为单元测试会降低开发效率,那么它做的事就是让你的开发效率少降低一点;如果你认为单元测试可以提高开发效率,那么恭喜你,它会是一份宝藏。这是一篇涵盖了大部分场景下需要用到的单元测试方法介绍,不管你是新手还是老鸟,都建议读读看。本文并不会去传导单元测试的重要性之类的思想,这不是本文的重点,本文只说明如何写单元测试案例我们以SpringBoot构建一个简单的demo引入依赖:<!-- web环境,为后面的接口测试所准备--><dependency> &lt

2022-01-10 09:49:31 665

原创 如何提升QPS、RT

对于QPS,RT这些名词想必大家都不陌生,但是说到如何提升他们却一筹莫展。今天我们就来研究一下吧目录名称解释QPS与线程数的关系最佳线程数案例优化方向QPS与RT的关系总结名词解释RT(Response Time): 1个请求所完成的时间QPS(Query Per Second): 1秒钟内所完成的请求数量QPS与线程数的关系对于单线程而言,QPS = 1000ms/RT比如一个系统只有一个线程,响应时间为50ms,那么它的qps就是1000/50=20如果它有两个线程,那么它

2022-01-06 09:45:03 1478 1

原创 Sentinel之流控规则

在上文Sentinel流量防卫兵中讲到了Sentinel入门以及流控规则一小部分,而Sentinel还有以下规则:熔断降级规则热点参数规则系统规则黑白名单规则本文要讲的是流控规则流量控制规则原理监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。QPS限流这里我们访问一下/foo/test接口,触发Sentinel控制台初始化,就可以看到在簇点链路中刷新出了该接口的资源然后我们点击+流控添加流控规则,选

2021-12-13 10:10:38 1797

原创 Java Duration格式

记录一下Java中Duration的格式

2021-12-10 11:11:41 684

原创 Sentinel流量防卫兵

前言在我们平常工作中,总会有这样的事情发生:服务无法承受过多的请求而被打挂。一般我们可以从两个方面处理:增加节点,水平扩展(钱总是万能的)对请求量过高的接口进行限流(没钱也不是不可以)突发情况下我们会先用第一种方案,然后再过渡到第二种。毕竟:穷就一个字随着这样的事情发生多了,系统就会可以预计的朝这样的方向演变:单个接口的限流 -> 多个接口的限流觉醒能力:限流可以配置,想要对哪个接口进行限流,就改下配置,立即生效。单个系统需要限流 -> 多个系统需要限流觉醒能力:

2021-12-06 22:00:45 167

原创 Configuration注解一定要加吗?

在上一期SpringBoot自定义starter中,我们讲到自动配置类是可以不加@Configuration注解的,但是在特定的场景会引发一个小小的问题,今天我们就来聊一下这个奇怪的小知识吧案例先定义两个Bean, 其中Foo依赖Boopublic class Bar { public Bar(){ System.out.println("init"); }}public class Foo { public Foo(Bar bar){ }}配置类@Configurati

2021-09-07 21:37:59 639 2

原创 Conditional注解与SpringBoot组件扩展

今天,我们还是来补一下SpringBoot自动装配原理留下的坑:如何查看组件的源码并进行自定义扩展。在聊这个之前,我们得先来学习一下@Conditional注解的使用,看过组件里一些自动配置类的小伙伴肯定会发现这样的现象:里面充斥了大量的@ConditionalOnXxxxx的注解,那么这些注解的用处是什么呢?Conditional注解Conditional注解是个条件注解,将该注解加在Bean上,当满足注解中所需要的条件时,这个Bean才会被启用。例子建立一个Spring项目,引入依赖<

2021-08-21 22:42:11 189

原创 SpringBoot自定义starter

上期讲到,关于SpringBoot自动装配原理,相信小伙伴们已经看明白啦,今天,我们就来聊一聊如何根据自动装配原理,自定义一个starter吧什么是starter我们玩了那么久的SpringBoot, 几乎项目依赖中基本上全是各种各样的starter, 那么到底什么是starter?starter是一组方便的依赖描述符,当我们使用它时,可以获得所有需要的Spring和相关技术的一站式服务,典型的如spring-boot-starter-web,引入之后,自动引入所有有关spring web项目相关的依

2021-08-18 11:50:01 129

原创 看完就会的SpringBoot自动装配原理

前言我相信,只要你用过Spring Boot,就会对这样一个现象非常的好奇:引入一个组件依赖,加个配置,这个组件就生效了。举个例子来说,比如我们常用的Redis, 在Spring Boot中的使用方式是这样的:1.引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifact

2021-08-13 14:12:10 222

原创 看完就会的Spring Cloud Gateway

在前面几节,我给大家介绍了当一个系统拆分成微服务后,会产生的问题与解决方案:服务如何发现与管理(Nacos注册中心实战),服务与服务如何通信(Ribbon, Feign实战)今天我们就来聊一聊另一个问题:客户端如何访问?在单体架构时,我们的系统只有一个入口,前端人员调用起来十分的简单。但是当我们拆分为一个微服务系统后,每个服务都有属于自己ip和端口号,我们不可能跟前端说:诶,调用这个接口的时候你就使用这个地址哈。前端:既然这样不行的话,那我们能不能利用已有的知识想一个解决方案呢?不是真的能

2021-08-09 12:59:34 231

原创 Feign实战技巧篇

Feign在项目中的正确打开方式,90%人不知道的高阶用法

2021-07-12 12:00:55 407

原创 Feign远程调用

有关微服务中,服务与服务如何通信,我已经给大家介绍了Ribbon远程调用的相关知识,不知道大家有没有发现Ribbon的问题呢?Ribbon的问题在Ribbon中,如果我们想要发起一个调用,是这样的:@Resourceprivate RestTemplate restTemplateString result = restTemplate.getForObject("http://my-goods/goods/get", String.class);Goods goods = JSONObjec

2021-07-06 13:49:55 545

原创 高效JAVA之用静态工厂方法代替构造器

程序员这行干的久了,总会染上一些恶习,我就染上一个让人深恶痛绝,自己却津津乐道的习惯,还不想改的那种,它可以叫做强迫症,也可以叫做洁癖。那就是我不允许我的IDEA出现一点点警告,什么黄色背景,绿色波浪线,统统不允许,按下F2键必须是这样当然,说这些也没有意义,因为并没有说如何去做,所以今天我准备开一个新的系列——如何写出高效清爽的Java代码,这意味着这整个系列的所有案例都会十分严谨且苛刻。如果有小伙伴说:这一丁点性能有什么嘛,无所谓啦。我:不,一丁点也不允许!高效:开发高效,性能高效今天是第一

2021-06-03 20:41:33 163

原创 Ribbon远程调用

摘要:原创地址:https://zijiancode.cn/archives/ribbon,欢迎转载,转载时请保留摘要,谢谢!文章中的样例会使用Nacos篇中的服务,读者可以看文章也可以直接结合gitee的代码观看gitee: https://gitee.com/lzj960515/my-micro-service-demo.git什么是RibbonRibbon是由Netflix公司开发的,一个客户端的IPC(进程间通信)库,它提供了以下特性负载均衡容错支持多协议(HTTP、TCP、UD

2021-06-02 12:35:52 633

原创 Nacos细节篇

摘要:原创地址:https://zijiancode.cn/archives/nacos-detail,欢迎转载,转载时请保留摘要,谢谢!Naocs OpenAPI 容器部署 边车挂载

2021-05-20 12:19:09 576 5

原创 Nacos 配置中心实战

摘要:原创地址:https://zijiancode.cn/archives/nacos-config,欢迎转载,转载时请保留摘要,谢谢!环境:Nacos 1.4.2什么是Nacos一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。通俗解释就是:Nacos是一个注册中心&配置中心关于Nacos注册中心的功能,在Nacos注册中心实战篇中,阿鉴已经给大家详细介绍了,今天我们就来看看配置中心如何使用吧~基本使用在介绍Nacos注册中心实战时,阿鉴已经介绍并搭建好了Naco

2021-05-10 01:33:27 271

原创 Nacos 注册中心实战

摘要:原创地址:https://zijiancode.cn/archives/nacos-discovery,欢迎转载,转载时请保留摘要,谢谢!环境:Nacos 1.4.2什么是Nacos一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。通俗解释就是:Nacos是一个注册中心&配置中心关键特性服务发现和服务健康监测动态配置服务动态 DNS 服务服务及其元数据管理更多详细内容请关注Nacos官方文档什么是注册中心我们说Nacos是一个注册中心,那么,什

2021-05-05 23:42:52 518 2

原创 ELK最佳实践

摘要: 原创出处 https://zijiancode.cn/archives/elkmd 欢迎转载,保留摘要,谢谢!搭建ElasticSearch集群ElasticSearch官网搭建环境 Ubuntu 18.04.3 LTS 四台架构: arm64ip : 192.168.1.11(kibana), 192.168.1.13, 192.168.1.14, 192.168.1.15(es集群)设置vm.max_map_count设置每台的vm.max_map_count,该内核参数必须至少设

2021-03-28 22:49:47 435

原创 Skywalking实战

Skywalking实战摘要: 原创出处 https://zijiancode.cn/archives/skywalking%E5%AE%9E%E6%88%98md 欢迎转载,保留摘要,谢谢!中文文档关于Skywalking的介绍请参见中文文档Skywalking简单环境图安装环境:linux ubuntu 18 TLS arm64elasticsearch: 7.11.0skywalking: 8.4.01. 安装ElasticSearch参考ELK最佳实践2. 安装Skywa

2021-03-28 22:45:44 984

原创 如何发布Java项目到Maven中央仓库

本文主要记录了「发布Java项目到Maven中央仓库」这一过程。大概分为以下步骤:准备一个项目并发布到github上去https://issues.sonatype.org建立工单将项目发布到https://oss.sonatype.org最后在https://search.maven.org/查询项目是否发布到Maven中央仓库准备首先,我们需要准备一个Java项目,最好是发布在代码托管平台上,比如github, gourpId格式为com.github.<你的用户名>,例如我

2021-02-23 17:18:11 811 1

原创 2020-09-10

int a = 1;a++;

2020-09-10 22:21:51 57

空空如也

空空如也

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

TA关注的人

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