自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 提高cpu利用率, 一般采用多线程, 为什么不是多进程, 包括有线程池, 为什么不是进程池?

为什么父子进程通信开销大?进程通信的方式 有管道 消息队列 共享内存 即使是最方便的共享内存 也是在内核态开辟的空间 多个进程访问这个空间 需要进行内核态和用户态的切换以及资源的刷取。线程比进程更加轻量 而且一个进程的线程 共享资源 虽然有并发问题 可以采取 信号量 锁, 远比父子进程通信开销小 更容易 上下文切换资源的消耗 创建和销毁成本。

2024-08-25 09:58:22 176

原创 rocketmq 是参考了 kafka架构, 为什么rocketmq吞吐量是10万/秒, kafka吞吐量是17万/秒?

我们都知道, 为了防止消息在服务器丢失, 一般都是进行持久化(保存在磁盘), 在发送消失时那就涉及到从磁盘拷贝到内核空间, 从内核空间到用户态, 再从用户态到socket缓存区, 从socket缓存区到网卡 四次拷贝。总结:没有完美的架构, 很难做到既要, 又要, 牺牲一部分能力换取另一部分, 从而适应不同场景需求。而rocketmq使用的是零拷贝-mmp, 把内核态数据映射到用户态, 只减少一次拷贝,kafka使用的是零拷贝-sendfile, 把内核态数据发送到网卡, 减少两次拷贝,

2024-08-25 09:39:59 538 1

原创 带你了解注册中心 配置中心

如果没有变更,服务端会"hold"住这个请求,即暂时不返回结果,直到配置发生变化或达到一定的超时时间再返回。通过长轮询的方式,Nacos 客户端能够实时感知配置的变化,并及时获取最新的配置信息。同时,这种方式也降低了服务端的压力,避免了大量的长连接占用内存资源。它保留了部分长连接的特性,同时也结合了短连接的优点。是一种网络连接方式,其中客户端和服务器之间的连接在多个请求之间保持打开状态,而不是在每次请求后关闭连接。2.服务发现 客户端向注册中心查询特定服务的注册信息。4.故障恢复 检测服务的状态。

2024-08-23 13:30:20 1279

原创 一篇文章带你了解rocketmq事务消息原理

rocketmq 是生产者先发的半消息, rocketmq服务器收到后, 给生产者一个ack, 生产者再执行的本地事务, 如果本地事务执行失败, 进行消息回滚, rocketmq服务器丢弃消息, 本地事务执行成功, 给rocketmq服务器一个确定, rocketmq服务器再把消息发送给消费者。:如果生产者先执行了本地事务(如数据库操作),然后在发送消息时失败(如网络异常、MQ服务器宕机等),此时,本地事务已经提交,但对应的消息没有成功发送到 MQ。:为了应对消息发送失败的情况,生产者可能会进行重试。

2024-08-23 13:25:16 551

原创 Java笔试-单例模式

当外部类 Singletion 被加载的时候,并不会创建静态内部类 SingletonHelper 的实例对象,只有 Singleton 调用 getInstance()方法的时候,SingletonHelper 才会被加载,这个时候才会创建单例对象 INSTANCE。Effective Java 作者推荐的一种单例实现方式,简单高效,无需加锁,线程安全,可以避免反射破坏枚举单例。是 Java 中的一个关键字,用于声明类的成员(包括变量、方法、内部类等)为静态的。是一种更优雅的延迟加载单例实现方式。

2024-08-22 11:28:57 720

原创 乱码的前世今生

字符集简介字符集:用于描述某个字符范围的编码规则。包括字符映射和编码规则的定义。编码和解码:将字符映射成二进制数据的过程称为编码,反之则为解码。比较规则简介二进制比较规则:直接比较字符的二进制编码。非二进制比较规则:考虑大小写、特殊字符等,常用于现实中的字符集。常用字符集ASCII:收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。ISO 8859-1(latin1):在ASCII基础上扩展了128个西欧常用字符。GB2312。

2024-08-22 11:17:19 212

原创 笔试-单例模式

当外部类 Singletion 被加载的时候,并不会创建静态内部类 SingletonHelper 的实例对象,只有 Singleton 调用 getInstance()方法的时候,SingletonHelper 才会被加载,这个时候才会创建单例对象 INSTANCE。以下是几种实现单例模式的方式。Effective Java 作者推荐的一种单例实现方式,简单高效,无需加锁,线程安全,可以避免反射破坏枚举单例。是 Java 中的一个关键字,用于声明类的成员(包括变量、方法、内部类等)为静态的。

2024-08-22 11:03:59 952

原创 第2章 MySQL的调控按钮-启动选项和系统变量

包括服务器行为、存储引擎配置、内存使用等。

2024-08-21 08:52:34 307 1

原创 第一章 重新认识mysql

虽然查询缓存有时可以提升系统性能,但也不得不因维护这块缓存而造成一些开销,比如每次都要去查 询缓存中检索,查询请求处理完需要更新查询缓存,维护该查询缓存对应的内存区域。从MySQL 5.7.20 开始,不推荐使用查询缓存,并在MySQL 8.0中删除。如果未命中缓存,进行语法解析,将请求转化为可执行的SQL语句。服务器接收请求并检查查询缓存,如果命中缓存则直接返回结果。服务器对客户端进行认证,认证成功后分配线程处理请求。调用存储引擎,根据执行计划执行查询。进行查询优化,生成执行计划。

2024-08-21 08:51:38 160

原创 数据库连接池

性能与稳定性: 性能:在高并发场景下的性能表现一般,可能不如C3P0或其他更现代的连接池。资源管理:连接池能够自动管理和释放闲置连接,比如定时回收长时间未使用的连接,或者在连接数量超过预设阈值时拒绝新的连接请求,从而避免了因忘记释放连接导致的资源泄漏。资源复用:连接池维护一组预先创建好的数据库连接,当应用程序需要时,可以从池中获取已存在的连接,而不是每次都新建连接。性能提升:通过复用连接,减少了数据库连接的创建和释放过程,极大地缩短了应用程序访问数据库的响应时间,提高了系统整体性能。

2024-04-23 22:44:52 912

原创 设计模式-工厂模式

RULE_LUCK_AWARD("rule_luck_award", "【抽奖后规则】抽奖n次后,对应奖品可解锁抽奖", "after"),RULE_WIGHT("rule_weight", "【抽奖前规则】根据抽奖权重返回可抽奖范围KEY", "before"),RULE_LOCK("rule_lock", "【抽奖中规则】抽奖n次后,对应奖品可解锁抽奖", "center"),AbstractLogicChain 实现ILogicChain接口。factory工厂继承config。

2024-04-05 12:51:37 813 1

原创 不超卖实现

decr 命令在 Redis 中的主要好处包括: 原子性操作:decr 是一个原子操作,这意味着即使在高并发环境下,对于同一 key 的递减操作也是互斥的,不会出现竞态条件(race condition),保证了数据的一致性和完整性。在 Redisson 中,Bucket 类用于操作单个值的 Redis 键,其 trySet(V value) 方法尝试将桶(bucket)的值设置为给定值,如果 bucket 之前没有值,则设置成功并返回 true;//扣减库存(存的是总库存,为了加锁)

2024-04-05 12:45:43 974 3

空空如也

空空如也

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

TA关注的人

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