- 博客(567)
- 资源 (71)
- 问答 (1)
- 收藏
- 关注

原创 Kafka架构原理(三)
本文介绍了整体架构(涉及到的名词如controller,broker,zk,log,topic,partition等)、网络模型,存储模型和文件系统,高可用模型及幂等,如何实现exactly-once
2023-05-03 17:10:56
2805

原创 Java性能优化
一、JVM内存模型多核时代的到来,基于高速缓存的存储交互很好的解决了处理器与内存之间的矛盾,也引入了新的问题:缓存一致性问题。在多处理器系统中,每个处理器有自己的高速缓存,而他们又共享同一块内存(下文成主存,main memory 主要内存),当多个处理器运算都涉及到同一块内存区域的时候,就有可能发生缓存不一致的现象。为了解决这一问题,需要各个处理器运行时都遵循一些协议,在运行时需要将...
2017-11-14 22:45:49
11519

原创 《从Paxos到zookeeper分布式一致性原理与实践》笔记
《从Paxos到zookeeper分布式一致性原理与实践》笔记一、概念ACID: Automaticy、consistency、isolation、 DurabilityCAP: consistency、 Availability、 Partition toleranceBASE: Basically Available、 Soft state、 Eventually consistent二、一致性
2017-09-21 23:12:34
14599
2

转载 基于Redis的分布式锁到底安全吗?
网上有关Redis分布式锁的文章可谓多如牛毛了,不信的话你可以拿关键词“Redis 分布式锁”随便到哪个搜索引擎上去搜索一下就知道了。这些文章的思路大体相近,给出的实现算法也看似合乎逻辑,但当我们着手去实现它们的时候,却发现如果你越是仔细推敲,疑虑也就越来越多。实际上,大概在一年以前,关于Redis分布式锁的安全性问题,在分布式系统专家Martin Kleppmann和Redis的作者antire...
2017-07-14 00:08:43
5134
原创 使用 Oh My Posh 自定义 PowerShell 提示符
由于ai生图,ai视频这方面mac太差了,买N卡,转windows了,这里也记录一下 PowerShell 配置Oh My Posh先上效果图。
2025-04-17 17:02:43
423
原创 kafka简介和使用场景(一&二)
文章分以下几个部分:kafka基础名词、使用说明、场景、原理、架构、快的原因、其它中间件共同的优化措施、面试QA等
2023-05-03 16:59:30
1420
原创 Raft一致性算法(精简和扩展)
⼀ 致性算法在构建可信赖的⼤规模软件系统中扮演着重要的⾓⾊。强领导⼈:和其他⼀致性算法相⽐,Raft 使⽤⼀种更强的领导能⼒形式。⽐如,⽇志条⽬只从领导⼈发送给其他 的服务器。这种⽅式简化了对复制⽇志的管理并且使得 Raft 算法更加易于理解。领导选举:Raft 算法使⽤⼀个随机计时器来选举领导⼈。这种⽅式只是在任何⼀致性算法都必须实现的⼼跳机制 上增加了⼀点机制。在解决冲突的时候会更加简单快捷。
2023-04-17 20:45:51
1120
转载 Raft一致性算法(目前找到的最好的翻译)
Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如领导人选举、日志复制和安全性。同时它通过实施一个更强的一致性来减少需要考虑的状态的数量。一项用户研究的结果表明,对于学生而言,Raft 算法比 Paxos 算法更加容易学习。
2023-04-17 19:25:02
208
转载 Java线程池实现原理及其在美团业务中的实践
线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。而本文描述线程池是JDK中提供的ThreadPoolExecutor类。降低资源消耗。
2023-03-20 19:03:42
298
原创 Netty原理示图
Netty: Channel它表示一个开放的连接,进行IO操作。基本的 I/O 操作( bind() 、 connect() 、 read() 和 write() )依赖于底层网络传输所提供的原语。
2023-01-07 09:12:05
746
原创 MyBatis-Plus多节点多线程批量插入(insertBatch) 唯一主键ID冲突(Duplicate entry ‘xxxx‘ for key ‘PRIMARY‘)
mybatis plus 解决雪花主键重复问题
2022-09-21 17:40:41
2612
原创 java lambda表达式List<Bean>转Map<String,List<Bean>>或转Map<String,Bean>
java lambda表达式List<Bean>转Map<String,List<Bean>>或转Map<String,Bean>
2022-05-20 17:10:44
1725
1
原创 UTCTimeUtils
import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.ZonedDateTime;import java.time.format.DateTimeFormatter;public class UTCTimeUtils { private static final String .
2022-01-20 15:32:34
232
原创 Mac 安装Mysql和Redis
Mac 安装Mysql和Redis一、Mysql安装brew install mysql@5.7添加环境变量echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> /Users/sh07093ml/.bash_profilesource ~/.bash_profile 启动brew services start mysql@5.7连接mysql -u root修改密码set password for r
2021-12-26 22:39:24
730
原创 centos7安装docker
#添加阿里源cd /etc/yum.repos.d/mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.reposudo yum clean allsudo yum makecache# 删除dockeryum remove doc
2021-02-09 21:59:26
196
转载 mybatis统计每条SQL的执行时间
方案一:切面编程@Aspect此方案主要是通过环绕切面的方式将mapper包下的接口方法,然后前后计算时间差即可。这就是典型的AOP知识,不过这种计算比较粗糙,但是也是个办法。具体方法如下:@Aspect@Component@Slf4jpublic class MapperAspect { @AfterReturning("execution(* cn.xbmchina.mybatissqltime.mapper.*Mapper.*(..))") public void logS
2021-01-30 16:45:30
3174
原创 JVM参数
分类 参数 默认值 描述 备注 通用 堆通用参数 -Xms128M 物理内存的1/64(<1GB) 设置java程序启动时堆内存128M。默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制。 生产环境 -Xms 与 -Xmx 最好一样,避免抖动 -Xmx256M 物理内存的1/4(<1GB) 设置最大堆内存256M。默认(MaxHeapFreeRatio参数可
2020-11-13 09:33:28
320
转载 领域驱动设计在互联网业务开发中的实践
领域驱动设计在互联网业务开发中的实践2017年12月22日作者: 文彬 子维文章链接12254字25分钟阅读至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD)。在互联网开发“小步快跑,迭代试错”的大环境下,DDD似乎是一种比较“古老而缓慢”的思想。然而,由于互联网公司也逐渐深入实体经济,业务日益复杂,我们在开发中也越来越多地遇到传统行业软件开发中所面临的问...
2020-11-01 00:58:49
254
转载 常见的Java 问题排查方法
常见的Java 问题排查方法以下是Java应用在运行时常见的一些问题,总结了运行时黑盒方式的一些排查方法,也希望看到的同学能给予补充,无论是补充碰到的问题,还是补充解决方法。类装载的相关问题 写过Java代码的同学估计都碰到过ClassNotFoundException/NoClassDefFoundError/NoSuchMethodException(还有一个常见的ClassCastException就不在这里说了)。 当碰到ClassNotFoundException/NoClassD..
2020-10-29 17:17:11
886
转载 看Hadoop底层算法如何优雅的将大规模集群性能提升10倍以上?【四】
目录一、前情概要二、背景引入三、问题凸现四、Hadoop的优化方案一、前情概要这篇文章给大家聊聊Hadoop在部署了大规模的集群场景下,大量客户端并发写数据的时候,文件契约监控算法的性能优化。看懂这篇文章需要一些Hadoop的基础知识背景,还不太了解的兄弟,可以先看看之前的文章:兄弟,用大白话告诉你小白都能看懂的Hadoop架构原理。二、背景引入先给大家引入一个小的背景,假如多个客户端同时要并发的写Hadoop HDFS上的一个文件,大家觉得这个事儿能成吗?明显不可以接受
2020-09-29 17:21:49
246
转载 Hadoop如何将TB级大文件的上传性能优化上百倍【三】
目录一、写在前面二、原始的文件上传方案三、大规模分布式系统对大文件上传的性能优化(1)Chunk缓冲机制(2)Packet数据包机制(3)内存队列异步发送机制四、总结一、写在前面上一篇文章,我们聊了一下Hadoop中的NameNode里的edits log写机制。主要分析了edits log写入磁盘和网络的时候,是如何通过分段加锁以及双缓冲的机制,大幅度提升了多线程并发写edits log的吞吐量,从而支持高并发的访问。如果没看那篇文章的同学,可以回看一下:大规模
2020-09-29 17:20:36
495
转载 大规模集群下Hadoop NameNode如何承载每秒上千次的高并发访问【二】
目录一、写在前面二、问题源起三、HDFS优雅的解决方案:(1)分段加锁机制+内存双缓冲机制(2)多线程并发吞吐量的百倍优化(3)缓冲数据批量刷磁盘+网络优化一、写在前面上篇文章我们已经初步给大家解释了Hadoop HDFS的整体架构原理,相信大家都有了一定的认识和了解。如果没看过上篇文章的同学可以看一下:《兄弟,用大白话告诉你小白都能听懂的Hadoop架构原理》这篇文章。本文我们来看看,如果大量客户端对NameNode发起高并发(比如每秒上千次)访问来修改元数据,此时
2020-09-29 17:18:18
1564
转载 兄弟,用大白话告诉你小白都能看懂的Hadoop架构原理【一】
一、前奏Hadoop是目前大数据领域最主流的一套技术体系,包含了多种技术。包括HDFS(分布式文件系统),YARN(分布式资源调度系统),MapReduce(分布式计算系统),等等。有些朋友可能听说过Hadoop,但是却不太清楚他到底是个什么东西,这篇文章就用大白话给各位阐述一下。假如你现在公司里的数据都是放在MySQL里的,那么就全部放在一台数据库服务器上,我们就假设这台服务器的磁盘空间有2T吧,大家先看下面这张图。现在问题来了,你不停的往这台服务器的MySQL里...
2020-09-29 17:03:12
264
原创 微信红包算法
红包算法思路随机,额度在0.01和(剩余平均值2)之间。例如:发100块钱,总共10个红包,那么平均值是10块钱一个,那么发出来的红包的额度在0.01元~20元之间波动。当前面3个红包总共被领了40块钱时,剩下60块钱,总共7个红包,那么这7个红包的额度在:0.01~(60/72)=17.14之间。注意:这里的算法是每被抢一个后,剩下的会再次执行上面的这样的算法这样算下去,会超过最开始的全部金额,因此到了最后面如果不够这么算,那么会采取如下算法:保证剩余用户能拿到最低1分钱即可。如果前面的人手气
2020-08-05 10:52:48
1221
mybatis-generator中文注释并带分页-改进版3
2017-07-19
mybatis-generator中文注释并带分页-改进版2
2017-07-08
springFramwork-5.0.0.M5
2017-04-19
mybatis-generator中文注释并带分页
2016-09-24
mysql-connector-odbc-5.3.6-win32.msi
2016-07-22
SpringMVC+Mybatis
2015-09-26
visualvm-1.3.8
2015-08-12
Java并发编程实践
2015-02-11
mavenssm maven spring3 struts2 mybaits
2014-07-13
jxls-1.0.2
2013-11-27
TiDB in action.pdf 介绍Tidb原理和最佳实践
2022-10-16
JVM分享,包含JVM的优化目标、优化原则、JVM组成、内存区域划分、垃圾回收算法、垃圾回收器、FullGC触发时机等等.
2022-05-06
RocketMQ 分享。目录:RocketMQ作用和特性、架构、存储模型、高可靠、事务、延时消息、消息重试、消息堆积能力
2022-04-15
阿里idea代码格式化文件Aliyun Code Conventions.xml
2021-01-11
mariadb-10.4.6和编译它所需要的依赖
2019-07-19
sslscan-1.10.2-4.el7.psychotic.x86_64.rpm
2019-07-19
coreJava240问与答面试题
2018-04-20
spring源码如何引入分析
2015-07-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人