自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 金字塔原理+结构化表达

通过结论先行、以上统下、归纳分组和逻辑递进的方式,将信息组织成金字塔结构。

2024-10-14 15:57:03 574

原创 从零开始学架构

例如,把一个发动机和一台 PC 放在一起不能称之为一个系统,把发动机、底盘、轮胎、车架组合起来才能成为一台汽车。一个学生信息管理系统,这个系统从逻辑的角度来拆分,可以分为“登录注册模块”“个人信息模块”、“个人成绩模块”;从物理的角度来拆分,可以拆分为Nginx、 Web服务器、 MySQL。框架关注的是“规范”,架构关注的是“结构”。框架的英文是Framework,架构的英文是Architecture。“基础结构”这个概念并没有明确说是从什么角度来分解的。

2024-09-30 14:21:38 583

原创 Elasticsearch技术解析与实战

启动发现当Elasticsearch节点启动时,它会尝试连接到配置中的种子节点列表中的每个节点。如果节点是首次启动或需要加入一个新的集群,它会通过种子节点列表来发现集群中的其他节点。Ping操作节点之间通过Ping操作来确认彼此的存在和状态。Elasticsearch会定期向集群中的其他节点发送Ping请求,以检测节点是否仍然在线。构建集群视图通过Ping操作,每个节点都能构建出集群的完整视图,包括集群中所有节点的信息。

2024-09-23 15:09:01 629

原创 大数据技术生态

功能分别是分布式文件存储、资源调度和计算。这一套相当于用Yarn调度资源,读取HDFS文件内容进行MR计算。这一套的问题是使用比较麻烦,要写java代码。所以相当于这一套标准流程的SQL化。Hive可以简单理解为,Hadoop之上添加了自己的SQL解析和优化器,写一段SQL,解析为Java代码,然后去执行MR,底层数据还是在HDFS上。它的问题是运行速度慢,原因是MR,它需要频繁写读文件。这时基于内存的。

2024-07-29 10:41:36 665

原创 如何画好架构图

包括业务规划,业务模块、业务流程,对整个系统的业务进行拆分,对领域模型进行设计,把现实的业务转化成抽象对象。业务闭环:用户使用产品的闭环流程基于用户的某个需求或问题,梳理用户使用的业务流程,梳理参与此模块的用户、角色、场景,将核心流程完整的表述出来,形成闭环。技术架构:确定组成应用系统的实际运行组件(lvs,nginx,tomcat,php-fpm 等),这些运行组件之间的关系,以及部署到硬件的策略。技术架构主要考虑系统的非功能性特征,对系统的高可用、高性能、扩展、安全、伸缩性、简洁等做系统级的把握。

2024-05-23 11:17:30 1076

原创 kafka rabbitMq rocketMq

目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。

2023-10-17 18:13:31 18

原创 分布式架构原理与实践+解构领域驱动设计

为了完成上面的订单业务流程,将分布式系统分为了四层。客户端:这是用户与系统之间的接口。了提升用户体验,会利用 HTTP 缓存手段将部分静态资源缓存下来,同时也可以将这部分静态资源缓存到 CDN 中,因为 CDN 服务器通常会让用户从比较近的网络节点获取静态数据。负载均衡器(以下称接入层):负载均衡器可以通过用户 IP 将用户的请求路由到不同的服务器集群。另外,在负载均衡这一层,还可以进行流量控制和身份验证等操作。

2023-10-07 11:09:18 32

原创 内存分析工具使用以及案例

要找到问题根因,可以从如下方面入手找到OOM的线程堆栈以及现场。

2023-09-02 16:01:02 914

原创 redis设计与实现阅读

redis设计与实现

2023-03-01 12:23:20 14

原创 mysql调优

mysql进阶

2022-10-07 17:33:59 235 1

原创 nacos源码阅读

代码学习代码用法AtomicReference参考项目使用保存白名单配置,并在合适的时候更新配置public class AggrWhitelist { /** * 判断指定的dataId是否在聚合dataId白名单。 */ static public boolean isAggrDataId(String dataId) { if (null == dataId) { throw new IllegalArgumen

2022-05-02 23:57:31 1141

原创 高性能Mysql

Mysql的结构Mysql的逻辑架构如图是Mysql各组件的架构图。第一层是连接客户端。功能比如连接处理、授权认证、安全等。第二层是服务器。它包含了Mysql的核心功能,包括查询解析、分析、优化、缓存以及所有的内置函数,所有跨存储引擎的功能都在这一层:存储过程、触发器、视图等。第三层是存储引擎。存储引擎负责Mysql中数据的存储和提取。服务器通过API与存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对于上层的查询过程透明。这些接口函数,执行诸如“开始一个事务”、“根据主键

2022-03-21 10:16:30 793

原创 java开发规约

编程规约命名风格【强制】类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO /PO / UID 等。正例:ForceCode / UserDO / HtmlDTO / XmlService / TcpUdpDeal / TaPromotion反例:forcecode / UserDo / HTMLDto / XMLService / TCPUDPDeal / TAPromotion【强制】抽象类命名使用 Abstract 或 Base

2022-03-06 11:10:15 853

原创 HashMap细节及Map实践

结构从结构实现来说,HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的下面简述一下hashmap的属性和重要方法put(k,v)和resize():属性默认初始容量为16默认负载因子为0.75桶中链表节点转化为红黑树节点的桶元素个数阈值为8桶中红黑树节点转化为链表节点的桶元素个数阈值为6链表节点转化为红黑树节点的最小元素个数为64,即如果桶内元素已经达到转化红黑树阈值,但是表元素总数未达到阈值,则值进行扩容,不进行树形化//默认初始容量为16,容量必须为2的幂

2021-08-26 20:28:13 295

原创 java开发规约

编码规约命名规约【强制】类名使用UpperCamelCase风格,以下情形例外:DO / BO / DTO / VO / AO / UID等。正例:ForceCode / UserDO / HtmlDTO / XmlService / TcpUdpDeal / TaPromotion反例:forcecode / UserDo / HTMLDto / XMLService / TCPUDPDeal / TAPromotion【强制】常量命名应该全部大写,单词间用下划线隔开,力求语义表达完整清楚,不

2021-04-26 15:43:41 309 1

原创 Java ms总结

小米服务器端1.hashMap扩容为什么是2的幂次?减小hash碰撞,方便扩容2.G1收集器介绍一下参考1⃣️并行与并发2⃣️分代收集3⃣️可预测的停顿G1把内存划分成很多小块, 每个小块会被标记为E/S/O中的一个,从而可以垃圾回收工作更彻底的并行化它回收的大致过程是这样的:在垃圾回收的最开始有一个短暂的时间段(Inital Mark)会停止应用(stop-the-world)然后应用继续运行,同时G1开始Concurrent Mark再次停止应用,来一个Final Mark (

2021-03-05 12:47:25 436 1

原创 Hadoop Hbase Zookeeper Kafka

HadoopMapReducesplit分片hadoop将mapreduce的输入数据划分成等长的小数据块,称为输入分片。hadoop为每个分片构建一个map任务,并由该任务来运行用户自定义的map函数从而处理分片中的每条记录分片是并行处理的,分片小,那么整个处理过程将获得更好的负载平衡;然后分片切的太小,那么管理分片的总时间和构建map任务的总时间将决定作业的执行时间。通常,一个合理的分片大小趋于hdfs的一个块大小,默认128MB。因为它是确保可以存储在单个节点上的最大输入块大小。如果分片跨越

2021-01-25 10:20:42 667 1

原创 Nginx Epoll Redis 网络

Nginx负载均衡nginx的原理Nginx 采用的是多进程(单线程) & 多路IO复用模型1、Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程2、master进程接收来自外界的信号,向各worker进程发送信号,每个进程都有可能来处理这个连接3、 master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程worker 进程数,一般会设置成机器 cpu 核数。因为更多的

2021-01-25 10:19:47 511

原创 Java虚拟机jvm

jvmJava内存区域运行时数据区域程序计数器:当前线程执行的字节码的行号指示器。如果线程执行的时Java方法,则计数器记录的是正在执行的虚拟机字节码指令的地址;如果执行的是native方法,则为空虚拟机栈:描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈桢用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直到执行完成的过程,就对应一个栈桢在虚拟机栈中入栈到出栈的过程本地方法栈:native方法服务的栈堆:存放对象实例。是垃圾收集器管理的主要区域。可

2021-01-19 22:06:25 316

原创 Java知识总结

java.util包listarraylist初始容量为10,底层(有一个属性)是一个对象数组,add元素时,先确保容量足够,不够就扩容,扩容大小为原来的1.5倍。add(index,e)时,先检查越界了没,再看是否要扩容,将index后面的元素整体后移,添加元素细节:arraylist的迭代循环,用迭代器迭代的时候,要用迭代器的remove方法,不能用list的remove方法,不然会抛异常;或者用数组索引的方式迭代就可以避免这个问题linkedlist底层是一个双端链表结构,实现了

2021-01-17 14:32:37 1494 1

原创 常见问题

关键字transient变量修饰符。1)用transient声明一个实例变量,不参与序列化过程2)一个静态变量不管是否被transient修饰,均不能被序列化transient使用细节——被transient关键字修饰的变量真的不能被序列化吗否。对象的序列化可以通过实现两种接口来实现,若实现的是Serializable接口,则所有的序列化将会自动进行,若实现的是Externalizable接口,则没有任何东西可以自动序列化,需要在writeExternal方法中进行手工指定所要序列化的变量,这与

2020-12-17 12:26:24 105

原创 java语法糖

switch 支持 String 与枚举在开始coding之前先科普下,Java中的swith自身原本就支持基本类型。比如int、char等。对于int类型,直接进行数值的比较。对于char类型则是比较其ascii码。所以,对于编译器来说,switch中其实只能使用整型,任何类型的比较都要转换成整型。比如byte。short,char(ackii码是整型)以及int那么接下来看下switch对String得支持,有以下代码:反编译后内容如下:仔细看下可以发现,进行switch的实际是哈希值,

2020-12-16 22:51:00 375

原创 java8新特性

mapcompute 计算default V compute(K key,BiFunction<? super K, ? super V, ? extends V> remappingFunction)指定的key值在map中的value值进行操作, 如果key存在,则可操作value值,新值会更新回map; 如果key不存在,操作完成后key,value都保存到map中。函数:参数为key,value,返回valuecomputeIfAbsent 不存在时计算V compute

2020-12-16 17:46:13 1460

转载 threadlocal原理

底层原理实际上是每个Thread线程维护着一个ThreadLocalMap,ThreadLocalMap底层是一个带有key,value的Entry数组,而Entry的键即是一个ThreadLocal对象,value是我们通过ThreadLocal.set()方法传进去的参数ThreadLocal.java:一个ThreadLocal对象只能存储一个valueThread.java:threadlocal.ThreadlocalMap.java:threadlocal.Threadloc

2020-12-16 16:18:15 390

原创 leetcode刷题经验

leetcode刷题经验注意1.按算法的分类来选题和刷题,比如一个时间段,只刷链表题,待刷得差不多的时候,接下来再刷二叉树的题2.解题三部曲看懂题目、分析,推导解法、将思路转换为代码3.推荐三本有益于面试的书籍,分别是:《剑指 offer》《编程珠玑》《编程之美》4.算法,主要是以下几种:基础技巧:分治、二分、贪心排序算法:快速排序、归并排序、计数排序搜索算法:回溯、递归、深度优先遍历,广度优先遍历,二叉搜索树等图论:最短路径、最小生成树动态规划:背包问题、最长子序列数据结构,主要有

2020-12-16 11:15:09 233

转载 java 8 Stream 流

Java8 Stream流解析Stream组成Stream包含一个数据源头(Source),一组(0个或多个)中间操作和一个终止操作。中间操作,如distinct、filter、limit、map、skip、sorted终止操作,如count,forEach、collectStream实现原理以如下代码为例List<String> list1 = Arrays.asList("1", "2", "3", "4", "5", "6", "7"); List<St

2020-11-24 16:59:39 278

原创 jmx artahs

jmx监控java应用程序占用的内存、cpu、线程数等通用的属性;也可以监控java bean的属性值;也可以通过rmi远程方法调用的方式调用java bean的方法参考:https://www.jianshu.com/p/fa4e88f95631

2020-11-19 20:47:33 148

空空如也

空空如也

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

TA关注的人

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