自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (2)
  • 收藏
  • 关注

原创 centOS虚拟机配置固定ip地址

2.进入cent的网络配置,命令如下。不同机器路径可能略有不同。如上所示:VMnet8的网段是192.168.172.1.设置完成后,重启服务。

2024-08-10 01:40:15 131

原创 火币矿池微服务架构

● 对外接口 hbp-open-api。给第三方提供对外接口,对可用性要求较高,独立出来采用多实例的集群部署。微服务所有请求的入口,负责路由分发,黑白名单url,以及部分简单的安全验证等。● 配置中心:hbp-config-cernter。● 结算服务 hbp-hpt。● 算力服务 hbp-pow。算力拉取,独立作为一个服务 ,独立维护高可用性,独立对外提供接基。● 管理后台服务 hbp-admin。● 登录中心 hbp-uc。● 注册中心 hbp-eureka。

2024-08-06 02:52:41 113

原创 jwt权限验证原理

通过对头部和载荷进行编码,然后用指定的算法和密钥生成的签名,用于验证数据的完整性和真实性,其中secret是密钥,不可泄漏,并且其生成也用到了头部信息和载荷信息。: 服务器在收到请求时,解码 JWT 头部和载荷,使用密钥验证签名是否正确。生成时,服务器将用户的身份信息(例如用户 ID 和角色)放入载荷中,并用密钥对其进行签名,生成完整的 JWT。1. JWT,全称是Json Web Token, 是一种JSON风格的轻量级的授权和身份认证规范,可实现。5.代码示例,工具类。JWT 的这三部分通过点(

2024-07-30 23:53:14 267

原创 红黑树数据结构

数据结构算法

2024-07-21 19:04:41 233

原创 IM即时通讯系统设计——会话管理

会话在IM系统中是一个主要的业务模块。用户进入IM的第一个界面就是会话界面。

2024-05-29 19:10:37 162

原创 IM即时通讯系统设计——获取消息历史记录

会根据groupId.先从redis中获取到messageId 的list。再进行遍历,根据messageId 获取具体的消息内容。

2024-05-16 18:54:05 457

原创 IM即时通讯系统设计(1)——系统总体设计

消息存放在redis中采用消息id和消息内容分别缓存的原则。

2024-05-16 18:52:00 239

原创 IM即时通讯系统设计(2)——对应更新消息已读未读状态

这样设计,主要是因为经常需要更新单条消息的某个属性。例如用户已读某条消息,则需要更新isRead属性。这样利用redis的hash结构,可以方便的直接更新某条消息的某个属性。key是CHAT_MESSAGE_CONTENT_CACHE+{messageId}首先所有的聊天消息都是用Hash结构存放在redis中。value是消息的具体内容。

2024-05-16 18:19:49 235

原创 mysql 保存记录时,id发生冲突的问题

PushMessageListener 监听一个topic。当前后两个消息同时到来时候,保存到数据,会发送id冲突的问题。

2023-10-21 19:27:55 83

原创 springboot工程,如果动态控制mybatis-plus的sql数据是否输出

项目背景,springboot工程,用mybatis-plus 做orm框架,nacos获取配置。 需求场景:IM项目,需要动态控制sql语句的输出,平时不用输出sql,以免影响性能。如果有异常或者需求需要排查,才输出sql好方便排查问题。

2023-09-07 18:51:51 141

原创 redistemlate set值的时候带有16进制前缀

nested exception is io.lettuce.core.RedisCommandExecutionException: ERR value is not an integer or out of range异常。redisTemplate.opsForValue().set(key, value) 方法调用的时候,value明明是int值,但是set进去的时候,确实是一个字符串值,key也带上了16禁止的前缀。且同样的代码,在本机环境就不会有该问题,打包发布到测试环境,就会这样的问题。

2023-09-03 23:59:09 411

原创 java流式处理(Stream)的几个特点

惰性求值:Stream 的操作是惰性求值的,也就是说在定义操作流程时,不会立即执行实际计算。不像传统的for循环操作,代码执行到的地方,都会执行对应的计算。数据处理:Stream 提供了丰富的操作方法,可以对流中的元素进行处理。并行处理:Stream 支持并行处理,可以通过 parallel() 方法将流转换为并行流,利用多核处理器的优势来提高处理速度。不可变性:Stream 是不可变的,它不会修改原始数据源,也不会产生中间状态或副作用。每个操作都会返回一个新的流对象,以保证数据的不可变性。

2023-08-24 10:51:14 127

原创 Redis消息队列sub/plubic 和stream机制区别比较

Redis消息队列sub/plubic 和stream机制区别比较。

2023-08-16 16:16:37 75

原创 elasticsearch的倒排索引原理

elasticsearch的倒排索引原理。

2023-08-04 17:53:00 52

原创 kafka为什么吞吐量大、速度快

kafka

2022-08-31 03:42:52 422 1

原创 快速理解脏读、不可重复读、幻读和MVCC

mysql mvcc

2022-08-24 03:05:53 196

原创 ArrayList与LinkLIst 的一些特点,以及二者的比较

ArrayList与LinkLIst 的一些特点,以及二者的比较

2022-08-13 02:59:42 200

原创 mysql中建立联合索引需要注意哪些问题

联合索引的作用如下:用于多字段查询,比如,建了一个 key(a,b,c) 的联合索引,那么实际等于建了 key(a)、key(a,b)、key(a,b,c) 等三个索引,(是为什么会这样,待考证) 我们知道,每多一个索引,就会多一些写操作和占用磁盘空间的开销,尤其是对大数据量的表来说,这可以减少一部分不必要的开销; 覆盖索引,比如,对于联合索引 key(a,b,c) 来说,如果使用 SQL:select a,b,c from table where a=1 and b = 1 ,就可以直接通过遍历索

2021-09-04 17:33:48 370

原创 MySQL 执行计划的浅析

首先是explain中所有列的信息,Extra只是其中比较重要的一列。EXPLAIN列的解释table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index、ALLtype显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > in...

2021-09-04 17:25:29 1101 1

原创 关于mysql索引的一些问题

1. 什么叫聚集索引与普通索引 聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引 普通索引的叶子节点存储主键值。 假设有下表tabletable (id PK, name KEY, sex, flag);表中有四条记录:1, shenjian, m, A3, zhangsan, m, A5, lisi, m, A9, wangwu, f, B 则该表的聚集索引和普通索引的B+树的数据...

2021-09-04 15:56:13 71

原创 为什么 MySQL 官方建议使用自增主键作为表的主键?

因为自增主键是连续的,在插入过程中尽量减少页分裂,即使要进行页分裂,也只会分裂很少一部分;并且自增主键也能减少数据的移动,每次插入都是插入到最后,所以自增主键作为表的主键,对于表的操作来说性能是最高的。...

2021-09-03 13:02:17 451

原创 B树与B+树的区别,以及由此造成的数据库引擎的不同

...

2021-08-27 02:08:39 82

原创 JVM内存排查(1)

首先了解一下垃圾收集工作原理JVM使用一种称为跟踪收集器的垃圾收集器,它通过stop-the-world来操作垃圾收集,标记所有根对象(由主线程直接引用的对象),并遵循它们的引用,标记它沿途看到的每个对象。如果发现某些对象没有任何引用,就标记为垃圾对象,对其进行收集(如下图)。Young Generation -年轻代。这里只会出发最小垃圾回收(Minor GC ),所以代价最小,时间最快。它有两个子代 Eden Space -对象从这里开始。大多数物体都是在Eden Spac...

2021-08-24 00:46:36 126

原创 Hystrix的资源隔离策略

Hystrix提供了两种依赖隔离方式:线程池隔离 和 信号量隔离。两种隔离方式都是限制对共享资源的并发访问量,线程在就绪状态、运行状态、阻塞状态、终止状态间转变时需要由操作系统调度,占用很大的性能消耗; 而信号量是在访问共享资源时,进行tryAcquire,tryAcquire成功才允许访问共享资源。线程池隔离。Hystrix可以为每一个依赖建立一个线程池,使之和其他依赖的使用资源隔离,同时限制他们的并发访问和阻塞扩张。每个依赖可以根据权重分配资源(这里主要是线程),每一部分的依赖出现了问题,也不会

2021-08-23 16:59:37 1046

原创 简述TCP三次握手协议的机制

...

2021-08-23 16:11:34 154

原创 并发处理的CAS简述

CAS的全称是Compare And Swap 即比较交换,其算法核心思想如下执行函数:CAS(V,E,N) 其包含3个参数 V表示要更新的变量 E表示预期值 N表示新值 如果V值等于E值,则将V的值设为N。若V值和E值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。通俗的理解就是CAS操作需要我们提供一个期望值,当期望值与当前线程的变量值相同时,说明还没线程修改该值,当前线程可以进行修改,也就是执行CAS操作,但如果期望值与......

2021-08-22 21:32:02 90

原创 简述HashMap在并发的情况下,可能形成环链现象的原因:

非线程安全的HashMap在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。例如,以下代码就会引起死循环。 public static void main(String[] args) throws InterruptedException { final HashMap<String, String> map = new HashMap<String, Stri......

2021-08-22 21:05:06 356

原创 HahsMap原理

1. HashMap的数据结构图HashMap采⽤Entry数组来存储key-value对,每⼀个键值对组成了⼀个Entry实体,Entry类实际上是⼀个单向的链表结 构,在JDK1.8中,链表⻓度⼤于8的时候,链表会转成红⿊树。2.为什么使用链表+数组 数组的长度是限制死的,我们在对key值进行散列取到下标以后,放入到数组中时,难免出现两个key值不同,但是却放入到下标相同的格子中,此时我们就可以使用链表来对其进行链式的存放。3.Linked......

2021-08-20 18:30:44 113

原创 Redis的哨兵机制

什么是哨兵机制?Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务: 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover):当一个Master不能正常...

2021-08-18 23:13:36 100

原创 jvm模型

2021-08-18 22:42:40 63

原创 查看mysql锁情况的命令详解

1.检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况mysql> show status like 'InnoDB_row_lock%';+-------------------------------+-------+| Variable_name | Value |+-------------------------------+-------+| InnoDB_row_lock_current_waits | 0 ||

2021-08-18 22:24:03 2223

原创 InnoDB行锁实现方式

InnoDB行锁是通过给索引上的索引项加锁来实现的,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁在实际应用中,要特别注意InnoDB行锁的这一特性,不然的话,可能导致大量的锁冲突,从而影响并发性能。下面通过一些实际例子来加以说明。(1)在不通过索引条件查询的时候,InnoDB确实使用的是表锁,而不是行锁。(2)由于MySQL的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但是如果是使用相同的索引键,是会出现锁冲突的。(3)当...

2021-08-18 22:14:46 519

原创 JDK线程池各种参数

ThreadPoolExecutor的重要参数1.corePoolSize:核心线程数:核心线程会一直存活,及时没有任务需要执行。当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理。设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭。2.queueCapacity:任务队列容量(阻塞队列)当核心线程数达到最大时,新任务会放在队列中排队等待执行。3.maxPoolSize...

2021-08-18 18:04:08 189

原创 Eureka基本原理

服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。服务提供者在启动后,周期性(默认30秒)向Eur

2021-08-16 03:35:48 318

原创 mysql中的mvcc机制

MVCC全称是【Multi-Version ConCurrency Control】即多版本控制协议。MVCC的主要是靠在每行记录上增加隐藏列和使用undo log来实现的,隐藏列主要包括,改行数据创建的版本号(递增的),删除时间,指向undo log的指针等。MVCC是读不加锁的,只有在写的时候才会加锁,从而提高的并发的效率。那么MVCC是如何保证读写隔离的呢?主要是通过快照读和当前读两个操作。快照读: MVCC为了保证并发的效率,在进行读取数据的时候是不加锁的,在执行select的时候(不带

2021-08-16 03:10:46 1213

转载 数据库集中索引的要点

mysql:(1)联合索引:1、需要加索引的字段,要在where条件中                            2、数据量少的字段不需要加索引                            3、如果where条件中是OR关系,加索引不起作用                             4、符合最左原则                         ...

2018-11-04 22:08:37 201

转载 谈谈 Redis3.0 的集群处理

3.0的集群支持来看看 Redis3.0 推出的 cluster 做了什么。cluster 版本的 Redis 在启动集群服务时,节点之间互相之间会建立连接,这个节点互相发现也是通过配置文件来实现的,运行期间集群会自动将不可用 master 节点切换为它的一个 slave,保持了很好的高可用性。这个基本上是第一个问题的内置解决方案。但是对于第二个问题看上去似乎没什么革新的地方。按照官网介绍

2016-08-24 01:14:50 155

hibernate包

hibernate包

2012-08-03

对话框可变对话框可变

对话框可变对话框可变对话框可变对话框可变对话框可变

2011-06-03

空空如也

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

TA关注的人

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