自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java 排序算法

1. 以集合第一个元素为基准点,将所有小余基准点的元素放左边,所有大于的元素放右边,并返回基准点所在集合的下标。由于递归最终的分组元素只剩1位,所以只需要在合并时做好排序即可。将列表构建成一个小顶堆,在插入和取出时调整结构保持堆的特性。小顶堆:特殊的完成二叉树,每个节点都小余他的两个子节点。每轮从后往前交换,把最小的元素通过不断地交换冒到前面。1.1 从后往前找一个小的元素,交换到start位置。1.2 从前往后找一个大的元素,交换到end位置。将所有元素插入到一个有序的集合中。

2024-06-30 21:41:32 151

原创 监控告警:指标计算服务重构(Redis Pipeline+lua)处理速率提升17倍,释放资源50w+/年

1. 指标kafka:经过清洗增维后的时序指标数据关键信息:指标采集时间、资源ID、metric指标名称、tag标签(集群架构的实例ID、kafka的topic-groupId等信息)2. 指标计算服务(重构部分):对【时序指标+告警策略】计算出告警或恢复事件策略Redis:以资源维度存储该资源相关的告警策略(告警策略:指标+告警阈值)指标Redis:存储计算的历史指标数据、策略抑制标识3. 告警事件kafka:指标计算后的告警或者恢复事件。

2024-06-22 10:22:44 859

原创 Java - JVM

Java内存模型(Java Memory Model,简称JMM)是一种规范,定义了Java程序中多线程并发访问共享内存时的行为。JMM描述了线程如何与主内存交互以及如何与工作内存交互,确保多线程程序在不同平台和编译器下的一致性行为。JMM规定了线程间如何进行通信、同步和协作,以保证程序在多线程环境下的正确性。

2024-06-20 23:14:48 631

原创 Java 并发编程 - 锁

3. acquireQueued():将当前线程加入同步队列中等待获取锁,这个过程中通过监控前驱节点的状态进行park阻塞和被前驱节点唤醒,最终的结果是获取到锁或者中断退出。// 如果前驱节点的等待状态为正常状态(0),则将前驱节点的等待状态设置为 SIGNAL,表示需要唤醒当前节点。// 如果前驱节点的等待状态是 SIGNAL,表示前驱节点已经表示需要唤醒后继节点了,当前节点需要挂起。// 通过循环获取前驱节点 p,如果前驱节点是头节点(head) 并且可以尝试获取锁。

2024-06-20 00:21:53 904

原创 并发编程-线程

首先CPU、内存、I/O 设备的速度是有极大差异的,而我们日常的作业都是要操作到内存和IO的,如果没有多线程这个时候CPU就是处于空闲状态,使用多线程就是合理的利用CPU资源,从而提升作业效率。// 强制关闭线程池。threadFactory, // 线程工厂,可以自定义线程名称、优先级、是否守护线程等。线程是CPU调度的最小单位,进程是线程的集合,一个进程包含多个线程以及共享变量空间。线程空闲时间和单位,当线程数超过核心线程后创建了非核心线程,会在存活多久后被销毁。// 如果超时,强制关闭线程池。

2024-06-19 01:06:20 963

原创 MySQL专项

索引本质上就是一组排好序的数据结构,一般是B+树数据结构,也有hash数据结构,不太常用8.2。

2024-06-14 00:10:06 639

原创 Redis专项

1.对于普通单机Redis,能达到读11w/s,写8w/s事件循环机制。

2024-06-13 21:11:24 907

原创 Java 集合

因为对象的hashcode一般会比较大,如果直接取模运算,高位二进制可能无法参与运算,这样处理后可以加大随机性,从而降低哈希冲突概率。这就是因为HashMap的大小是2的倍数,2的倍数意味着该数的二进制位只有一个是1,而n-1则全部是1。如16是10000,15是01111,这样通过&与运算就可以得到和%取余一样的效果,并且效率高得多。二叉树添加数据时没有额外调整节点的操作,最坏的情况下相当于一个链表,时间复杂度为O(n)如果初始化时传的不是2的倍数,HashMap会向上寻找离得最近的2的倍数。

2024-06-08 15:38:30 704 2

原创 morphia操作MongoDB记录:$geoNear、分组、去重等聚合操作

一、业务需求统计实体店下【上月、本月、前日、今日】的【已下单、已接单、已完成】的订单二、 需求分析实时同步流程:mysql —>flinkEtl —>MongoDB订单新增以及状态变化都会实时通知并落库到mongo中,订单流水日志表:orderStatusLog。订单数据量庞大需要通过门店坐标和有效距离,对数据进行筛选订单可能被接单后取消,又被接单,所以一条订单同个状态可能会有多条数据,但是统计时同一订单同一状态只统计一条需要根据实体店的坐标,和该实体店辐射的有效距离筛选

2021-05-27 20:42:19 743

原创 在mac上进行hadoop集群搭建

一、环境说明环境&软件版本操作系统&macOs11.2.1虚拟机&VMware Fusion12.1服务器&CentOS7.8jdk1.8hadoop2.9.2二、虚拟机准备1. 配置静态ip1.1 虚拟机网络设置(NAT)VMWARE Fusion设置虚拟机网络适配器链接模式为“与我的Mac共享”1.2 查看本机网络配置查看本机网关地址以及子网掩码:cat /Library/Preference

2021-05-16 14:05:48 2716 1

原创 搭建redis-cluster集群及扩容记录

搭建redis-cluster集群及扩容记录1. 修改配置 redis.conf,并准备7001-7008共8个实例2. 启动7001-7008共8个实例3. 创建cluster集群(7001-7006共6个节点,3主3从),并通过默认配置分配分区哈希槽4. 扩容(主节点)4.1 把7007加入7001所在的cluster集群中4.2 给新节点分配槽,输入命令,并执行对应的配置命令5. 扩容(从节点)添加从节点为7007的slaver1. 修改配置 redis.conf,并准备7001-7008共8个实例

2021-03-24 20:13:04 164

原创 ShardingJDBC实现分库以及读写分离架构搭建

ShardingJDBC实现分库以及读写分离架构搭建一、环境软件版本二、环境架构介绍三、MySQL安装(一主两从)1. 下载mysql5.7.782. 移除linux自带的mariadb,避免安装时会产生冲突3. 安装mysql4. 初始化用户并查看密码5. 启动mysql并设置开机启动6. 登录mysql并修改密码7.登录Mysql,授权其他机器访问四、主从同步配置1.主库配置2.从库配置3. 建表SQL五、java工程1. maven依赖2. 配置文件(分片规则)3. 映射类以及操作类3.1 实体类Or

2021-02-22 15:55:17 392 1

原创 Mysql主从模式以及MHA高可用架构搭建实战

Mysql主从模式以及MHA高可用架构搭建一、环境软件版本二、环境架构介绍三、MySQL安装(一主两从)1. 下载mysql5.7.782. 移除linux自带的mariadb,避免安装时会产生冲突3. 安装mysql4. 初始化用户并查看密码5. 启动mysql并设置开机启动6. 登录mysql并修改密码7.登录Mysql,授权其他机器访问四、主从同步配置1.主库配置2.从库配置3.主从同步优化:半同步复制配置3.1 主库配置3.2 从库配置3.3 查看主库日志验证五、MHA搭建高可用1. 实现ssh免密

2021-02-09 20:34:47 445 4

空空如也

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

TA关注的人

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