摘要: 为 Flink 量身定制的序列化框架 大家都知道现在大数据生态非常火,大多数技术组件都是运行在 JVM 上的,Flink 也是运行在 JVM 上,基于 JVM 的数据分析引擎都需要将大量的数据存储在内存中,这就不得不面临 JVM 的一些问题,比如 Java 对象存储密度较低等。针对这些问题,最常用的 阅读全文
posted @ 2020-11-14 22:48 Java程序员进阶 阅读(55) 评论(0) 推荐(0)
摘要: 【1】引入第三方 Bahir 提供的 Flink-redis 相关依赖包 1 <!-- https://mvnrepository.com/artifact/org.apache.bahir/flink-connector-redis --> 2 <dependency> 3 <groupId>or 阅读全文
posted @ 2020-11-14 22:45 Java程序员进阶 阅读(37) 评论(0) 推荐(0)
摘要: Flink On Yarn 模式 ​ 基于 Yarn 层面的架构类似 Spark on Yarn 模式,都是由 Client 提交 App 到 RM 上面去运行,然后 RM 分配第一个 container 去运行 AM,然后由 AM 去负责资源的监督和管理。需要说明的是,Flink 的 Yarn 模 阅读全文
posted @ 2020-11-14 22:43 Java程序员进阶 阅读(41) 评论(0) 推荐(0)
摘要: 【1】引入pom.xml 依赖 1 <dependency> 2 <groupId>org.apache.flink</groupId> 3 <artifactId>flink-connector-elasticsearch6_2.12</artifactId> 4 <version>1.10.0< 阅读全文
posted @ 2020-11-14 22:39 Java程序员进阶 阅读(23) 评论(0) 推荐(0)
摘要: 本章重点介绍生产环境中最常用到的 Flink kafka connector。使用 Flink 的同学,一定会很熟悉 kafka,它是一个分布式的、分区的、多副本的、 支持高吞吐的、发布订阅消息系统。生产环境环境中也经常会跟 kafka 进行一些数据的交换,比如利用 kafka consumer 读 阅读全文
posted @ 2020-11-14 22:36 Java程序员进阶 阅读(158) 评论(0) 推荐(0)
摘要: 【1】引入 pom 依赖,我的 Mysql版本为 5.7.19 1 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> 2 <dependency> 3 <groupId>mysql</groupId> 4 < 阅读全文
posted @ 2020-11-14 19:12 Java程序员进阶 阅读(16) 评论(0) 推荐(0)
摘要: Flink Streaming Connector Flink 是新一代流批统一的计算引擎,它需要从不同的第三方存储引擎中把数据读过来,进行处理,然后再写出到另外的存储引擎中。Connector 的作用就相当于一个连接器,连接 Flink 计算引擎跟外界存储系统。Flink 里有以下几种方式,当然也 阅读全文
posted @ 2020-11-14 19:08 Java程序员进阶 阅读(59) 评论(0) 推荐(0)
摘要: Flink 中的时间语义 ​时间语义:EventTime:事件创建时间;Ingestion Time:数据进入 Flink 的时间;Processing Time:执行操作算子的本地系统时间,与机器无关。不同的时间语义有不同的应用场合,我们往往更关系事件时间(Event Time)。数据生成的时候就 阅读全文
posted @ 2020-11-14 19:01 Java程序员进阶 阅读(36) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG 主题操作 使用 kafka-topics.sh 工具可以执行主题的大部分操作。可以用它创建、修改、删除和查看集群里的主题。要使用该工具的全部功能,需要通过 --zookeeper参数提供 Zookeeper的连接字符串。 kafka 的大部分命令行工具直接操作 Zoo 阅读全文
posted @ 2020-11-14 18:39 Java程序员进阶 阅读(680) 评论(0) 推荐(0)
摘要: 优质博文:IT-BLOG-CN 本文从利用率提升、多负载场景优化、稳定性提升、异地多活四个方面介绍了字节跳动在四年来对 Hadoop YARN 进行的一系列的优化,以及生产环境中的实践经验。 YARN 简介 YARN 生态圈 YARN (Yet Another Resource Negotiator 阅读全文
posted @ 2020-11-14 18:30 Java程序员进阶 阅读(61) 评论(0) 推荐(0)
摘要: Spring Cloud Gateway 作为 Spring Cloud框架的第二代网关,在功能上要比 Zuul更加的强大,性能也更好。随着 Spring Cloud的版本迭代,Spring Cloud官方有打算弃用 Zuul的意思。在笔者调用了 Spring Cloud Gateway的使用和功能 阅读全文
posted @ 2020-11-14 18:25 Java程序员进阶 阅读(2752) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG 无论 Kafka 作为 MQ 也好,还是作为存储层也罢,无非就是两个功能,一是 Producer 生产的数据存到 Broker,二是 Consumer 从 Broker 读取数据。那 Kafka 的快也就体现在读写两个方面了,下面我们就聊聊 Kafka 快的原因。 一 阅读全文
posted @ 2020-11-14 18:18 Java程序员进阶 阅读(495) 评论(0) 推荐(1)
摘要: 更多内容,前往 IT-BLOG 单个 kafka服务器足以满足本地开发或 POC要求,使用集群的最大好处是可以跨服务器进行负载均衡,再则就是可以使用复制功能来避免因单点故障造成的数据丢失。在维护 Kafka 或底层系统时,使用集群可以确保为客户端提供高可用性。 ​ 需要多少个 Broker 一个 k 阅读全文
posted @ 2020-11-14 18:16 Java程序员进阶 阅读(198) 评论(0) 推荐(0)
摘要: 【需求】:使用 fullcalendar日历插件,完成如下功能:可以进行拖动,点击空白处添加,双击后修改和删除等功能。API 链接​ 一、html 文件中引入相关依赖,主要包括引入的 css和 js; 1 <!DOCTYPE html> 2 <html lang="zh_CN" xmlns:th=" 阅读全文
posted @ 2020-11-14 18:07 Java程序员进阶 阅读(1290) 评论(0) 推荐(0)
摘要: PRC 是一种技术的代名词,HTTP 是一种协议,RPC 可以通过 HTTP 来实现,也可以通过 Socket 自己实现一套协议来实现。所以谈论为什么用 RPC 不用 HTTP 是无意义的。但我们习惯性将两者进行比较,那就有必要将易混点提出来说说。 RPC主要是基于 TCP/IP协议的,而 HTTP 阅读全文
posted @ 2020-11-14 18:03 Java程序员进阶 阅读(212) 评论(0) 推荐(0)
摘要: 计算机是不能直接运行 java代码的,必须要先运行 java虚拟机,再由java虚拟机运行编译后的 java代码。这个编译后的 java代码,就是本文要介绍的java字节码。计算机截止目前只认识0和1,但虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现并蓬勃发展,将我们编写的程序编译成二进制 阅读全文
posted @ 2020-11-14 18:02 Java程序员进阶 阅读(38) 评论(0) 推荐(0)
摘要: 更多内容,访问 IT-BLOG ThreadLocal 并不是一个Thread,而是 ThreadLocalVariable(线程局部变量)。也许把它命名为 ThreadLocalVar更加合适。线程局部变量就是为每一个使用该变量的线程都提供一个变量值的副本,是 Java中一种较为特殊的线程绑定机制 阅读全文
posted @ 2020-11-14 18:00 Java程序员进阶 阅读(153) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG 虚拟机设计团队把类加载阶段中的 “通过一个类的全限定名来获取描述此类的二进制字节流” 这个动作放到 Java虚拟机外部去实现,以便应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 从 Java 虚拟机的角度上,只存在两种不同的类加载器:一 阅读全文
posted @ 2020-11-14 17:55 Java程序员进阶 阅读(218) 评论(0) 推荐(0)
摘要: 需求:使用 @autowired注入一些对象,但发现不可以直接使用@Autowired,因为方法是static的,要使用该方法当前对象也必须是static,正常情况下@Autowired无法注入静态的bean,于是发现项目中用到了springContextHolder,通过使用 private T 阅读全文
posted @ 2020-11-14 17:54 Java程序员进阶 阅读(166) 评论(0) 推荐(0)
摘要: 在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为 CommandLineRunner和 ApplicationRunner。他们的执行时机为容器启动完成的时候。 这两个接 阅读全文
posted @ 2020-11-14 17:53 Java程序员进阶 阅读(137) 评论(0) 推荐(0)
摘要: 通常面试官会把每一轮面试分为三个环节:① 行为面试 ② 技术面试 ③ 应聘者提问 行为面试环节 面试开始的5~10分钟通常是行为面试的时间,面试官会参照简历和你的自我介绍了解应聘者的过往经验和项目经历。由于面试官手里拿着应聘者的简历,里面有应聘者的详细信息,因此此时的自我不用花费很多时间,用30秒到 阅读全文
posted @ 2020-11-14 17:51 Java程序员进阶 阅读(204) 评论(0) 推荐(0)
摘要: Thread Dump介绍 Thread Dump是非常有用的诊断 Java应用问题的工具。每一个 Java虚拟机都有及时生成所有线程在某一点状态的 thread-dump的能力,虽然各个 Java虚拟机打印的 thread dump略有不同,但是大多都提供了当前活动线程的快照,及 JVM中所有 J 阅读全文
posted @ 2020-11-14 17:48 Java程序员进阶 阅读(116) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG Java 开发人员肯定都知道 JDK的 bin 目录中有 “java.exe”、“javac.exe” 这两个命令行工具。下面主要介绍一些监视虚拟机和故障处理的工具。 Jvm 入门工具 jps(JavaVirtual Machine Process Status To 阅读全文
posted @ 2020-11-14 17:39 Java程序员进阶 阅读(105) 评论(0) 推荐(0)
摘要: 注解是 JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。它主要的作用有以下四方面:【1】生成文档:通过代码里标识的元数据生成 javadoc文档。【2】编译检查:通过代码里标识的元数据让编译器在编译期间进行检查验证。【3】编译时动态处理 阅读全文
posted @ 2020-11-14 17:33 Java程序员进阶 阅读(81) 评论(0) 推荐(0)
摘要: 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解 阅读全文
posted @ 2020-11-14 17:21 Java程序员进阶 阅读(46) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG LockSupport 用来创建锁和其他同步类的基本线程阻塞原语。简而言之,当调用 LockSupport.park时,表示当前线程将会等待,直至获得许可,当调用 LockSupport.unpark时,必须把等待获得许可的线程作为参数进行传递,好让此线程继续运行。 阅读全文
posted @ 2020-11-14 17:17 Java程序员进阶 阅读(386) 评论(0) 推荐(0)
摘要: 计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的 CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD(固态硬盘)硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的 I/O读写速度成为了计算机系 阅读全文
posted @ 2020-11-14 17:11 Java程序员进阶 阅读(401) 评论(0) 推荐(0)
摘要: 系统性学习,异步IT-BLOG AQS(AbstractQuenedSynchronizer 抽象队列同步器) 是一个用来构建锁和同步器的框架,使用 AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semaphore,其他的诸如 ReentrantRead 阅读全文
posted @ 2020-11-14 17:09 Java程序员进阶 阅读(306) 评论(0) 推荐(0)
摘要: 更多内容,前往个人博客 ReentrantLock 支持公平锁和非公平锁,可重入锁 ReentrantLock的底层是通过 AQS[链接]实现。 一、BAT 大厂的面试题 【1】什么是可重入,什么是可重入锁? 它用来解决什么问题?【2】ReentrantLock 的核心是 AQS,那么它怎么来实现的 阅读全文
posted @ 2020-11-14 17:00 Java程序员进阶 阅读(91) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG Synchronized原理分析 加锁和释放锁的原理 深入JVM看字节码,创建如下的代码: 1 public class SynchronizedDemo2 { 2 Object object = new Object(); 3 public void method1 阅读全文
posted @ 2020-11-14 16:57 Java程序员进阶 阅读(29) 评论(0) 推荐(0)
摘要: Arthas(阿尔萨斯) 是 Alibaba开源的一款 Java在线诊断工具,能够分析,诊断,定位Java应用问题,例如:JVM信息,线程信息,搜索类中的方法,跟踪代码执行,观测方法的入参和返回参数等等。并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法的出入参,异常,监测方法执行耗时, 阅读全文
posted @ 2020-11-14 16:49 Java程序员进阶 阅读(1487) 评论(0) 推荐(1)
摘要: Java对象存储在堆(Heap)内存。那么一个 Java对象到底包含什么呢?概括起来分为对象头、对象体和对齐字节。如下图所示:​【1】对象头中的Mark Word(标记字)主要用来表示对象的线程锁状态,另外还可以用来配合GC、存放该对象的 hashCode;【2】Klass Word是一个指向方法区 阅读全文
posted @ 2020-11-14 16:43 Java程序员进阶 阅读(1778) 评论(1) 推荐(1)
摘要: SimpleChannelInboundHandler 【类的关系】:如下就是两个类的声明,SimpleChannelInboundHandler是继承 ChannelInboundHandlerAdapter的。也就是说SimpleChannelInboundHandler 也拥有 Channel 阅读全文
posted @ 2020-11-14 16:42 Java程序员进阶 阅读(2500) 评论(0) 推荐(1)
摘要: 携程开源的配置管理中心(统一管理各种应用配置的基础服务组件),能够集中化管理应用的不同环境,不同集群的配置,配置修改后能够实时推送到应用端,适合微服务配置管理场景。Apollo包括服务端和客户端。 在系统架构中,配置中心是整个微服务基础架构体系中的一个组件,如下图,它的功能看上去并不起眼,无非就是配 阅读全文
posted @ 2020-11-14 16:27 Java程序员进阶 阅读(322) 评论(0) 推荐(0)
摘要: 一、Netty 服务端启动过程 【1】创建服务端 Channel;【2】初始化服务端 Channel;【3】注册 Selector;【4】端口绑定:我们分析源码的入口从端口绑定开始, ServerBootstrap 的 bind(int inetPort)方法,实际上是 AbstractBootst 阅读全文
posted @ 2020-11-14 16:15 Java程序员进阶 阅读(70) 评论(0) 推荐(0)
摘要: 更多内容,前往个人博客 所谓心跳,即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包,通知对方自己还在线,以确保 TCP 连接的有效性。心跳包还有另一个作用,经常被忽略,即:一个连接如果长时间不用,防火墙或者路由器就会断开该连接。建议:将下面的代码敲一遍,对这个流程就有一个比较好 阅读全文
posted @ 2020-11-14 16:10 Java程序员进阶 阅读(396) 评论(0) 推荐(0)
摘要: 业务特点 瞬时并发量大:秒杀时会有大量用户在同一时间进行抢购,瞬时并发访问量突增 10 倍,甚至 100 倍以上都有。库存量少:一般秒杀活动商品量很少,这就导致了只有极少量用户能成功购买到。业务简单:流程比较简单,一般都是下订单、扣库存、支付订单​ 技术难点 现有业务的冲击:秒杀是营销活动中的一种, 阅读全文
posted @ 2020-11-14 16:02 Java程序员进阶 阅读(365) 评论(0) 推荐(0)
摘要: ByteBuf类:Netty的数据容器 ByteBuf 维护了两个不同的索引:① readerIndex:用于读取;② writerIndex:用于写入;起始位置都从0开始:​名称以 read或者 write开头的方法会更新 ByteBuf 对应的索引,而名称以 set或者 get开头的操作不会。 阅读全文
posted @ 2020-11-14 15:59 Java程序员进阶 阅读(188) 评论(0) 推荐(0)
摘要: 一、Sentinel 介绍 Sentinel 是阿里巴巴出品的面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从限流,流量整形、熔断降级、系统负载保护等多个维度来保障微服务的稳定性。主页地址 Sentinel Hystrix resilience4j 隔离策略 信号量隔离(并发线程隔离) 阅读全文
posted @ 2020-11-14 15:54 Java程序员进阶 阅读(973) 评论(0) 推荐(0)
摘要: 一、网络 问题:今天的大多数系统都会调用其他系统。您是否正在与第三方系统(支付网关,会计系统,CRM)集成?你在做网络服务电话吗?如果呼叫失败会发生什么?如果您要查询数据,则可以进行简单的重试。但是如果您发送命令会发生什么?我们举一个简单的例子: 1 var creditCardProcessor 阅读全文
posted @ 2020-11-14 15:38 Java程序员进阶 阅读(266) 评论(0) 推荐(0)
摘要: Skywalking 根据官方的解释,Skywalking是一个可观测性平台(Observability Analysis Platform简称 OAP)和应用性能管理系统(Application Performance Management 简称 APM)。提供分布式链路追踪、服务网格(Servi 阅读全文
posted @ 2020-11-14 15:35 Java程序员进阶 阅读(1242) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG 一、Nacos 简介 Nacos 是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。Nacos 使服务更容易注册,并通过 DNS或 HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送 阅读全文
posted @ 2020-11-14 15:23 Java程序员进阶 阅读(765) 评论(0) 推荐(0)
摘要: 固定窗口计数器 将时间划分为多个窗口,窗口内出现一次请求就将计数器加一,如果计数器超过了限制数量,则本窗口内后续请求都被丢弃当,时间到达下一个窗口时,计数器重置。​ 固定窗口计数器是最为简单的算法,但这个算法有时会出现通过请求量允许为限制的两倍。考虑如下情况:限制 1 秒内最多通过 5 个请求,在第 阅读全文
posted @ 2020-11-14 15:18 Java程序员进阶 阅读(238) 评论(0) 推荐(0)
摘要: 我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。 一、平衡多路查找树(B-Tree) B-Tree是为磁盘等外存储设备设计的一种平衡查找树。因此在讲 B-Tree之 阅读全文
posted @ 2020-11-14 15:16 Java程序员进阶 阅读(89) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG 消息送达语义是消息系统中一个常见的问题,主要包含三种语义:【1】At most once:消息发送或消费至多一次;【2】At least once:消息发送或消费至少一次;【3】Exactly once:消息恰好只发送一次或只消费一次;下面分别从生产者和消费者的角度来 阅读全文
posted @ 2020-11-14 15:08 Java程序员进阶 阅读(103) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG HW(High Watermark):俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个 offset 之前的消息。分区 ISR 集合中的每个副本都会维护自身的 LEO(Log End Offset):俗称日志末端位移,而 ISR 集合中最 阅读全文
posted @ 2020-11-14 15:07 Java程序员进阶 阅读(275) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG leader epoch 代表 Leader 的纪元信息(epoch),初始值为0。每当 Leader 变更一次,leader epoch 的值就会加1,相当于为 Leader 增设了一个版本号。每个副本中还会增设一个矢量 <LeaderEpoch >= StartO 阅读全文
posted @ 2020-11-14 15:05 Java程序员进阶 阅读(214) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG 在了解 Kafka的事务之前,先说一下 Kafka中幂等和事务(Kafka 0.11.0.0版本引入的两个特性)以此来实现 Exactly once(精确一次)了解更多链接。 幂等:生产者在进行重试的时候有可能会重复写入消息,而使用 Kafka的幂等性功能之后就可以避 阅读全文
posted @ 2020-11-14 15:04 Java程序员进阶 阅读(558) 评论(0) 推荐(0)
摘要: 更多内容,访问 IT-BLOG Kafka中实现延迟队列 在发送延时消息的时候并不是先投递到要发送的真实主题(real_topic)中,而是先投递到一些 Kafka 内部的主题(delay_topic)中,这些内部主题对用户不可见,然后通过一个自定义的服务拉取这些内部主题中的消息,并将满足条件的消息 阅读全文
posted @ 2020-11-14 14:56 Java程序员进阶 阅读(6335) 评论(0) 推荐(1)
摘要: InnoDB页 将数据划分为若干个页(page),以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16KB。也就是在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。 InnoDB行格式 我们平时是以记录为单位来向表中插入数据的, 阅读全文
posted @ 2020-11-14 14:14 Java程序员进阶 阅读(80) 评论(0) 推荐(0)
摘要: Mysql 查询执行的过程链接 一、不要建立太多索引 我们虽然可以根据我们的喜好在不同的列上建立索引,但是建立索引是有代价的:【1】空间上的代价:每建立一个索引都要为它建立一棵 B+树,每一棵 B+树的每一个节点都是一个数据页,一个页默认会占用16KB的存储空间,一棵很大的 B+树由许多数据页组成, 阅读全文
posted @ 2020-11-14 14:06 Java程序员进阶 阅读(69) 评论(0) 推荐(0)
摘要: 一、Zookeeper 实现机制 文件系统 + 通知机制 二、Zookeeper 高可用实现原理 一个 ZooKeeper 集群如果要对外提供可用的服务,那么集群中必须要有过半的机器正常工作并且彼此之间能够正常通信。如果想搭建一个能够允许 N 台机器 down 掉的集群,那么就要部署一个由 2*N+ 阅读全文
posted @ 2020-11-14 14:00 Java程序员进阶 阅读(104) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG 如今,REST和微服务已经有了很大的发展势头。但是,REST规范中并没有提供一种规范来编写我们的对外 REST接口 API文档。每个人都在用自己的方式记录 api文档,因此没有一种标准规范能够让我们很容易的理解和使用该接口。我们需要一个共同的规范和统一的工具来解决文档 阅读全文
posted @ 2020-11-14 13:56 Java程序员进阶 阅读(114) 评论(0) 推荐(0)
摘要: 通过一个示例,来说明索引的代价。如下,给 person_info表中创建一个联合索引 idx_name_birthday_phone_number。 1 CREATE TABLE person_info( 2 id INT NOT NULL auto_increment, 3 name VARCHA 阅读全文
posted @ 2020-11-14 13:48 Java程序员进阶 阅读(166) 评论(0) 推荐(0)
摘要: Semaphore 是一个计数信号量,必须由获取它的线程释放。Semaphore 是 Synchronized 的加强版,常用于限制可以访问某些资源的线程数量,例如通过 Semaphore限流。Semaphore 只有3个操作:初始化、增加、减少。 1 import java.util.Random 阅读全文
posted @ 2020-11-14 13:38 Java程序员进阶 阅读(37) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG MySQL中支持的四种隔离级别 提到事务,你肯定会想到 ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性),来说说其中I,也就是“隔离性”。当数据库上有多个事务同时执行的时候,就可能出现脏 阅读全文
posted @ 2020-11-14 12:24 Java程序员进阶 阅读(179) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG Leader选举是保证分布式数据一致性的关键所在。当 Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入 Leader选举:【1】服务器初始化启动;【2】服务器运行期间无法和 Leader保持连接; 服务器启动时期的 Leader选举 若进行 Lea 阅读全文
posted @ 2020-11-14 12:20 Java程序员进阶 阅读(90) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG 一、什么是 Future和 FutureTask FutureTask 的 Future就源自于它的异步工作机制,如果我们在主线程中直接写一个函数来执行任务,这是同步的任务,也就是说必须要等这个函数返回以后我们才能继续做接下的事情,但是如果这个函数返回的结果对接下来的 阅读全文
posted @ 2020-11-14 12:14 Java程序员进阶 阅读(47) 评论(0) 推荐(0)
摘要: 我只总结干货,不喜欢扯炉子。肯定还有很多方面没有涉及到,希望各位指出。ths~ 市面上流行的开源注册中心很多,耳熟能详的有 Eureka、Zookeeper、Nacos、Consul。我们在选型的时候也主要从这四个组件中进行筛选。下面就对我们内部的讨论内容进行整理: 第一个维度:开源公司的实力 Eu 阅读全文
posted @ 2020-11-14 12:11 Java程序员进阶 阅读(1012) 评论(0) 推荐(0)
摘要: SpringBoot启动类上使用 @SpringBootApplication注解,该注解是一个组合注解,包含多个其它注解。和类定义(SpringApplication.run)要揭开 SpringBoot的神秘面纱,我们要从这两位开始就可以了。 1 @SpringBootApplication 2 阅读全文
posted @ 2020-11-14 12:08 Java程序员进阶 阅读(285) 评论(0) 推荐(0)
摘要: MyBatis上线前后的版本:上线前(3.2.3)上线后(3.4.6) 服务上线后,开始陆续出现了一些更新系统交互日志方面的报警,这属于系统的辅助流程,报警如下代码所示。我们发现都是跟 MyBatis相关的报警,说明在进行类型转换 [ibatis.type.TypeException]的时候,系统产 阅读全文
posted @ 2020-11-14 11:57 Java程序员进阶 阅读(175) 评论(0) 推荐(0)
摘要: 更多内容,前往 IT-BLOG Select语句的执行过程会经过连接器、分析器、优化器、执行器、存储引擎,同样的 Update语句也会同样走一遍 Select语句的执行过程。 ​ 但是和 Select最大不同的是,Update语句会涉及到两个日志的操作 redo log(重做日志) 和 binlog 阅读全文
posted @ 2020-11-14 11:53 Java程序员进阶 阅读(88) 评论(0) 推荐(0)
摘要: 一、慢查询优化基本步骤 【1】先运行看看是否真的很慢,注意设置SQL_NO_CACHE(查询时不使用缓存);【2】where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的 where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高;【3】explai 阅读全文
posted @ 2020-11-14 11:32 Java程序员进阶 阅读(326) 评论(0) 推荐(0)
摘要: 摘要 性能优化涉及面很广。一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服务可用性。在某些情况下,降低响应时间、提高系统吞吐量和提高服务可用性三者相互矛盾,不可兼得。例如:增加缓存可以降低平均响应时间,但是处 阅读全文
posted @ 2020-11-14 11:07 Java程序员进阶 阅读(67) 评论(0) 推荐(0)
摘要: ​ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,ZGC可以说源自于 Azul System 公司开发的C4收集器[基本不用调优]它的设计目标包括: 【1】停顿时间不超过10ms(STW减少了)目前一般线上环境运行良好的 Java应用 MinorG 阅读全文
posted @ 2020-11-14 10:59 Java程序员进阶 阅读(650) 评论(0) 推荐(1)
摘要: 更多内容,前往 IT-BLOG 成为优秀的架构师是大部分初中级工程师的阶段性目标。优秀的架构师往往具备八种核心能力:编程能力、调试能力、编译部署能力、性能优化能力、业务架构能力、在线运维能力、项目管理能力和规划能力。 这几种能力之间的关系大概如下图。编程能力、调试能力、编译部署能力属于最基础的能力。 阅读全文
posted @ 2020-11-14 09:11 Java程序员进阶 阅读(149) 评论(0) 推荐(0)
摘要: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析 MySQL中 InnoDB引擎的加 阅读全文
posted @ 2020-11-14 08:58 Java程序员进阶 阅读(821) 评论(0) 推荐(0)