自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WindWant

工程师,社评家,观察者

  • 博客(260)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySql InnoDB 存储引擎表优化

适时的使用 OPTIMIZE TABLE 语句来重组表(表数据到达一定的量,或者有了较大的数据增长之后),压缩浪费的表空间。这是在其它优化技术不可用的情况下最直接的方法。OPTIMIZE TABLE 语句通过拷贝表数据并重建表索引,使得索引数据更加紧凑,减少空间碎片。语句的执行效果会因表的不同而不同。过大的表或者过大的索引及初次添加大量数据的情况下都会使得这一操作变慢。

2024-04-10 11:47:29 1047

原创 Spring Bean 的一生

就是这会儿,刚创建完实例,还没有进行相应的填充、初始化等后续操作。

2024-04-01 12:06:25 1005 1

原创 数据结构中的一棵树

遍历就是一个树的所有节点都点一遍,那么既然要点一遍,总归要遵循一个特定的顺序,不然,乱来的话总会可能漏一个,或者多一个。红黑树的黑高即为其根节点的黑高。从每个叶节点开始,一个节点一个节点往上数,数到根节点,最长的那个数就是数的高度。从根开始,一个节点一个节点往下数,数到每个叶子节点,最长的那个数就是数的深度。【前、中、后】,前为左,右为后,哪个顺序遍历,那么哪个节点就会顺序居中,其它的节点,靠左的居前。节点的巡查是从根节点出发,从上到下,从左至右巡查,每个节点及其子点巡查完毕后,再跳出到其它节点。

2024-01-12 17:32:48 1372

原创 云原生十二问

云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。现代企业希望构建高度可扩展、灵活且具有弹性的应用程序,可以快速更新以满足客户需求。为此,他们使用现代工具和技术,这些工具和技术本质上支持云基础设施上的应用程序开发。这些云原生技术支持快速、频繁地更改应用程序,而不会影响服务交付,从而为采用者提供了创新的竞争优势。云原生应用程序是由多个称为微服务的相互依赖的小型服务组成的软件程序。传统上,开发人员使用包含所有必需功能的单块结构构建整体式应用程序。

2024-01-02 12:37:18 925

原创 服务网格 Service Mesh

服务网格是一个软件层,用于处理应用程序中服务之间的所有通信。该层由容器化微服务组成。随着应用程序的扩展和微服务数量的增加,监控服务的性能变得越来越困难。为了管理服务之间的连接,服务网格提供了监控、记录、跟踪和流量控制等新功能。它独立于每项服务的代码,这使它能够跨网络边界和多个服务管理系统工作。Istio 是一个开源服务网格项目,设计为主要与 Kubernetes 配合使用。Kubernetes 是一款开源容器编排平台,用于大规模部署和管理容器化应用程序。

2023-12-27 10:27:27 1103

原创 架构中的“大象”

西方有句谚语叫做:“an elephant in the room”。用以指代那些显而易见又容易被忽视的东西。这些东西是什么呢?“an elephant”:我们可以解释为那些重要的,困难的或者棘手的。这里我们要讨论的则是架构中的"大象":业务价值。通常我们做架构评估的时候,一般会对关联系统的性能,容错弹性,业务扩展性等进行论证,但很少会考虑各个系统的业务价值以及这些业务价值和前述架构特性之间的关系。没有这些价值关联的理解,对于架构设计中的一些关键因素选择就会很难做决定。交易系统容错。

2023-11-10 12:05:04 664 1

原创 MySQL InnoDB 是怎么使用 B+ 树存数据的?

这里限定 MySQL InnoDB 存储引擎来进行阐述,避免不必要的阅读歧义。首先通过一篇文章简要了解下 B 树的相关知识:你好,我是B树 。B+ 树是在 B 树基础上的变种,主要区别包括:1、所有数据都存储在叶节点,其它几点作为索引存储。2、数据节点添加链指针,便于横向检索。数据是怎么检索的?从根节点作为起始检索点,逐层向下检索,直至找到目标数据。检索的路径复杂度度跟树...

2023-09-01 13:16:00 465

原创 浅谈双机房的那些事

为什么要有双机房?可能有几个考虑:容灾:强如阿里云、微信、唯品会等,依然避免不了机房故障问题。一次这个级别的故障,就会有一个技术头头下野。更快的响应:网络时延和物理距离成正比,用户距离服务越近,时延越友好。不同的地域,多机房多活模式,就近提供服务。

2023-07-08 14:20:00 208

原创 盘一盘高性能设计的哪些点(二)

继续上一篇文章,继续探讨高性能设计的一些点!

2023-07-07 13:26:50 58

原创 盘一盘那些高性能设计的点(一)

狭义地讲,性能是指软件在尽可能少地占用系统资源的前提下,尽可能高地提高运行速度。谈及性能,我们的关注点不再是软件或者系统的功能,而是在其实现功能过程中所表现出来的资源效率。

2023-07-04 09:25:16 68

原创 你要有自己的影响力

永远不要忽视一个人影响力的效用。它可以是你高效做事的无形助力。

2023-06-30 11:52:01 71 1

原创 你用过哪些设计模式(一)?

什么是设计模式?一些经验总结的最佳实践!是不是必须要用?并不是,但是既然已经说是最佳实践了,该用的地方,你不用,就有些违背常理了。

2023-06-29 09:09:12 39

原创 什么是能力?

所谓能力,就是解决问题的能力!问题来了,你解决掉了,你就有这种能力!问题来了,你解决不了,我就可以说你能力不足!

2023-06-26 10:07:53 50

原创 研发流程不只是一个流程

以人治天下,贤则大治,不贤则大乱。以术知天下,术高多宵小。以法治天下,法令莫不从,民生定。

2023-06-24 22:28:17 49

原创 线上出问题了,怎么办?

出了问题,不要慌!打开手机,发个朋友圈!然后,顺便打包好个人物品,抱着出去就行了!哦哦!上线前拜四阿哥,假期前拜佛祖,天灵灵地灵灵!家人们,这不是危言耸听。线上无小事,开不得玩笑的啊!一、快速恢复还是那句话,出了问题不要慌,冷静,保持冷静。首要记住一个原则:快速恢复。时至如今,有一定规模的公司,后台服务状态监控各方面都做得很完善。日志系统、监控系统什么的,一般情况下,异常...

2023-06-17 09:14:00 34

原创 从 SpringApplication 认识 Spring 应用启动过程

一、SpringApplication 是什么?Spring 应用的启动类。二、SpringApplication 执行了什么?创建 ApplicationContext 实例ApplicationContext 就是我们所说的容器实例。注册 CommandLinePropertySourceCommandLinePropertySource 的作用是将命令行参数输出为 Sp...

2023-06-15 12:03:00 85

原创 什么是高可用服务?

什么是高可用?以年为单位,一年时间为 t = 365 * 24 * 60 = 525600 分钟。服务可用性一般以实现几个9目标来评判,不目标下允许的不可用时间如下:4个9:t * (1 - 99.99%) = 52.56 分钟。5个9:t * (1 - 99.999%) = 5.256 分钟。对于一般性互联网服务比较合理的目标设置为4个9,也就是综合允许1小时左右不可用时间。那么,...

2023-06-12 17:42:00 66

原创 你是怎么学习 Java 技术的?

一、Java 语言Java 语言不只是一门语言。Java 学习不是一蹴而就就可以达成的,它是一个循序渐进,由浅入深,由表及里的过程。尤其需要注意的是不能有浅尝辄耻,不求甚解的态度。每个地方只抓一点,等于什么也没得到。每个小范畴内的学习都必须讲究系统性,完整性。二、知识的获取你是从哪里获取知识的?源码?官方 Docs?技术书籍?技术博客、社区?琅琊榜中有一段梅长苏教授庭生读书...

2023-06-07 12:05:00 28

原创 为什要微服务化?

一、大而集中式的服务从 0 到 1 的堆砌式发展一个服务承载所有,一个系统涵盖一切,这可能是大多数公司初创时的技术风貌。一切追求快速验证,快速响应,快速实现。但是,伴随着业务的膨胀发展,相应的技术支撑要求也在不断提升。从最开始的一个简单的服务,不断地添枝加叶,各种各样的功能模块相继被堆砌式添加上去。慢慢的服务开始变得臃肿,繁杂。功能模块间相互交织,耦合,混乱不堪。同一个服务模块可...

2023-06-06 10:55:00 46

原创 技术研发一天的工作是怎样的?

一、服务检查一般从早上八点开始,服务的访问量就会渐渐地升起来,初始爬坡会比较缓,大概到10点左右会走到顶峰,然后会趋向平稳波动。作为公司的后台服务研发人员,早上到公司第一件事情就是打开监控,查看服务的各项指标是否正常,及时解决各种突发状况。监控系统是 Prometheus + Grafana, Prometheus 负责监控数据层面获取处理,Grafana 负责监控数据面板展示及报警预警...

2023-06-02 09:23:00 37

原创 你问我做技术研发需要哪些能力?

要回答这个问题其实很简单,咱们把眼光投射到具体的公司上。首先先需要明确公司找一个人来是要做什么?显而易见,就是要去负责一块儿业务。那么,负责一块儿业务应该具备哪些能力呢?一、技术能力这个是基础,无需多言,厨师不配刀还叫什么厨师!不同的公司有着不同的业务,或者即便是相同的业务,在不同的公司所应用的技术栈也有不同。所以,有一点就很明确,就是你不可能学习到完美覆盖所有公司技术栈的技能。...

2023-05-31 12:35:00 96

原创 Spring Boot 自动配置一篇概览

一、什么是自动配置 bean自动配置类通过添加 @AutoConfiguration 注解实现。因为 @AutoConfiguration 注解本身是以 @Configuration 注解的,所以自动配置类可以算是一个标准的基于 @Configuration 注解的类。@Conditional 注解可以用于声明自动配置启用条件,通常,我们可以使用 @ConditionalOnClass、...

2023-05-28 23:17:00 107

原创 分布式服务一篇概览

分布式服务开发复杂于服务间交互,协调,治理等。服务的复杂性由应用本身转移到了网络交互层。一、关于12-factor问题在开发分布式服务时,我们通常会考虑如12-factor问题,如配置中心、无状态化、日志等。一个代码库:支持多人协作开发的代码集中管理平台。一个依赖库:服务依赖发布、存储、隔离等管理。一个配置中心:集中的配置管理中心,服务,协调多服务应用。可插拔的支持服务:如数...

2023-05-12 10:38:00 25

原创 I-o-C 一篇概览

一、ioC 容器和 Bean介绍IoC(Inversion of Control)也被称之为 DI(dependency injection),名称侧重点略有不同。所谓控制翻转即对象通过构造函数参数、工厂方法参数或者属性字段设置来定义依赖,然后容器在创建 bean 的时候注入依赖。这个过程和对象自己管理依赖是完全相反的。org.springframework.beans和or...

2023-05-05 09:39:00 79

原创 A-O-P 一篇概览

一、什么是AOP?AOP 即 Aspect-orientedProgramming,Aspect 切面,什么是切面,就是一条大路上的收费站,检查站,首先它是一个统一的功能单元,或是收费、或是检查,其次它可以决定对谁收费,对谁收多少费,对谁检查。与之相对的是 OOP 即 Object-oriented Programming,Object 对象,对象就是大路上的一辆辆汽车,每辆汽车都有一套完成...

2023-04-27 13:51:00 27

原创 gRPC 应用指引

一、核心概念、架构及生命周期1、服务定义gRPC 默认使用protocol buffers。service HelloService { rpc SayHello (HelloRequest) returns (HelloResponse);}message HelloRequest { string greeting = 1;}message HelloRe...

2023-04-25 12:04:00 42

原创 MySQL InnoDB Architecture 简要介绍

MySQL InnoDB 存储引擎整体架构图:一、内存存储结构1、Buffer Poolbuffer pool 是主内存中的一块儿存储区域,用于存储访问的表及索引数据。这样从内存中直接访问获取使用的数据可以极大的提升访问效率。在一些特殊专用的服务里,几乎 80% 的内存区域都被赋于 buffer pool。为了提升大数据量读操作效率,buffer pool 被设计划分为能够存储多条记...

2023-04-20 12:11:00 36

原创 简简单单用一下 Hbase

一、Hbase 介绍https://hbase.apache.org/book.html#_prefacehttps://blogs.apache.org/hbase/https://research.google.com/archive/bigtable.html什么是Hbase?hadoop 数据库:分布式、可伸缩、大数据存储。二、Hbase client最开始引入 hbase...

2022-04-06 20:37:00 20

原创 MySQL 事务的隔离级别及锁操作演示

MySQL 版本:5.7安装环境:MAC OS一、测试数据测试数据库:test;测试表:ttCREATE TABLE `tt` ( `id` int(11) DEFAULT NULL, `name` varchar(100) DEFAULT NULL, KEY `name_idx` (`name`), KEY `id_idx` (`id`)) ENGINE=Inno...

2022-02-09 13:43:00 20

原创 扫码登录是这样登录的

扫码登录,其实相当于一种授权机制。一、交互二维码登录是一个涉及三方的交互过程:web 浏览器、移动端,服务后台。基本交互流程如下:a)web 浏览器:负责二维码的展示及移动端授权后的登录态展示。b)移动端:负责扫码及授权。c)服务后台:贯穿整个交互过程。二、登录二位码想要扫码登录,首先必须得有码。二维码是一种特殊的数据载体,作为登录二维码,他首先必须具备一定的特性:1、唯一性首先有一个前提需要明确的是:每一个二维码都必须是惟一的。或者严格一点说,当前存续期间的

2021-11-02 19:40:46 2101

原创 服务版本号规约

语义化版本 2.0.0摘要版本格式:主版本号.次版本号.修订号,版本号递增规则如下:主版本号:当你做了不兼容的 API 修改,次版本号:当你做了向下兼容的功能性新增,修订号:当你做了向下兼容的问题修正。先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。简介在软件管理的领域里存在着被称作“依赖地狱”的死亡之谷,系统规模越大,加入的包越多,你就越有可...

2021-10-08 17:42:00 23

原创 你好,我是B树

一、什么是B树?B树是一棵是具备以下特点的有根树。1、节点属性a)x.n:为节点中存储的关键字个数。b)x.key:为节点中存储的关键字。x.key1、x.key2... x.keyx.n以非降序顺序排列,满足 x.key1<= x.key2... <= x.keyx.n。c)x.leaf:为当前节点是否为叶子节点(true | false)d)x.c:为指向子节...

2021-07-21 01:23:00 34

原创 gRPC 拦截器能做些什么?

什么是拦截器?拦截器是一种横切维度的功能延展。具象说明一下,高速收费站就是一种拦截器。它可以做什么?收费,查证,交通控制等等,面向所有穿行过往的车辆。gRPC 拦截器主要分为两种:客户端拦截器(ClientInterceptor),服务端拦截器(ServerInterceptor),顾名思义,分别于请求的两端执行相应的前拦截处理。一、客户端拦截器1、作用时机?请求被分发出去之前。2...

2021-07-11 02:07:00 30

原创 解决缓存穿透的几种应用思考

其实在之前的文章【缓存,确实很香,却也很受伤!】中,对缓存穿透的引发缘由及应对策略做过简要的描述。这篇文章将对这个问题再做下额外的扩展。一、关于布隆过滤器布隆过滤器支持两种操作:1、添加元素;2、判断元素是否存在。布隆过滤器的特性:占用少量内存过滤海量数据判断元素存在会返回两种结果:1、不存在:表示元素肯定不存在于布隆过滤器中。2、存在:表示元素可能存在于布隆过滤器中。说可能,是因为...

2021-07-03 10:49:00 15

原创 关于 kafka 消息的顺序问题一二

顺序就像就是 12345,任何 12354、12543、51234等都不行。因为是 mq,所以必然涉及三个主体:发送方、消息服务器、消费方。一、kafka 消息服务器kafka brokers 顺序接收客户端请求,将消息顺序追加到 partition 尾部,kafka 能保证单个分区里消息的顺序性。二、发送方由第一点可知,我们只要把消息按顺序发送到同一个分区就好了。但这里也存在几个问题...

2021-05-18 20:32:00 65

原创 不可不知的 JVM 预热

一、JVM 架构基础JVM进程启动时,ClassLoader 会将需要的所有类加载到内存,主要分为以下三步:Bootstrap Class:核心类库,由“Bootstrap Class Loader”负责加载,例如基础的运行时类库JRE\lib\rt.jar。Extension Class:java.ext.dirs路径下的类,由ExtClassLoader负责加载。在...

2021-02-23 13:07:00 41

原创 proto3 协议指引

一、protocal buffer 是什么?一种序列化机制。什么是序列化?一种转化为可存储和传输对象的过程。序列化的方式有很多,那么proto有什么特殊的呢?它的英文介绍里提到了neutral这个词,中立,无关的。language-neutral 跨语言:它可以应用于多种开发语言之间数据交互。platform-neutral 跨平台:它可以运行于多种系统平台。可扩展序列化过程性能优越,速度快。序列化后为二进制数据,相对的占用空间更小(存储成本及传输成本)及一定程度的保

2021-02-16 23:20:31 1748

原创 TCP 队列溢出了

一、TCP 队列1、syns queue:半连接队列TCP 三次握手(参考:TCP建立连接之三次握手),第一步,服务端接收到客户端发送的 syn 消息后,将连接信息放入 syns queue,此时,双方连接尚未建立,称之为半连接。2、accept queue:全连接队列TCP 三次握手,第三步,客户端接收到服务端发送的 syn + ack 消息后,向服务端发送 ack 消息,服务端接收到...

2020-11-03 13:23:00 103

原创 Redis Hashes 数据类型简述

Redis Hashes 是我们日常使用中比较高频的 Redis 数据类型,内部使用 Redis 字典结构存储,底层实现之一为哈希表结构。下面从哈希表节点,哈下表结构,Redis 字典,Redis 字典元素操作,Redis rehash 几点来简要概述。一、Redis 哈希表节点Redis 内部定义哈希表节点 dictEntry,用于存储具体的数据,其主要包括键 key,值 v,及外向指针...

2020-10-19 13:19:00 20

原创 当你处理了几千万数据之后...

数据出问题了!一次偶发的端上问题。排查日志、监控、数据、代码逻辑。服务没有添加事务性保障,不可避免的数据不一致:缓存有数据,数据库没数据或者相反;有A阶段数据,没有B阶段数据;该有的数据没有,不该有的数据却存在。主从机制遇到了强一致性需求,偶发的缓存不一致。服务被埋下了错误的逻辑,日积月累全量的错误数据。... ...不管是哪种情景,总之是数据变脏了。怎么办?一、处理当前问题的数据对的,不是所有问题数据,是当前问题的数据,我们通常称这种为紧急的问题,重不重要分情景另说

2020-09-24 12:47:24 177

Node v18.16.1 版本 mac os 系统

Node v18.16.1 版本 mac os 系统

2023-07-05

ultrEdit 文本编辑工具

这是一个非常棒的文本编辑工具,尤其是对于代码编辑使用

2014-02-28

空空如也

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

TA关注的人

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