自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 当面试的时候被问及redis Zset数据结构的时候要回答的要点是什么?

每次新插入元素的时候,尽量让该元素有 1/2 的几率建立一级索引、1/4 的几率建立二级索引、1/8 的几率建立三级索引,以此类推,就能满足我们上面的条件。2. 插入过程,假如跳表每一层的晋升概率是 1/2,最理想的索引就是在原始链表中每隔一个元素抽取一个元素做为一级索引。1. 高度:skipList的高度为 logn(原因为对跳表的增删的基础都是查询,跳表的查询过程是一个类似二分查找的过程)这里每层索引的元素个数已经确定,且每层索引元素选取的足够随机,所以可以通过索引来提升跳表的查找效率。

2023-07-21 11:24:00 217

原创 Stable diffusion本地环境搭建

怎么选择适合自己的版本呢,查看自己电脑支持的CUDA版本,命令行中输入nvidia-smi,我的电脑支持的最高版本为11.6,可兼容此版本及其以下版本。1、下载stable diffusion源码,可以使用git进行下载,此处不建议放在c盘,最好选择空闲的盘下载。1、下载miniconda,配置python环境,我选择的是Latest版本。打开conda Prompt,输入 conda -V,查看安装是否成功。下载后将模型放入根目录下的models文件夹下,4、安装git,用来下载github的项目。

2023-06-06 13:25:28 1040 1

原创 读《陪孩子终身成长》后记

亲子关系决定孩子的一生,读完这本书,在回顾自己走过的路,踩过的坑,大多数可以归因为性格的问题,类似不知道为什么突然表现的无比暴躁强硬,这个底层的原因或许可以归因为原生家庭的关系投射。其实我的段位很low,我是真的遇到了一些问题,刚好阿斗给我推荐了这本书,作为一个程序员的专栏,我分享下这本书里给我带来的孩子的教育理念的收获,并同时讲一下对于程序员成长,团队管理的收获。终身成长者的心态呢,是谦逊的,做事是单纯的,不抱有复杂的目的,就是做事,希望在做事的过程中相互探讨,以希望事情做到最好的样子。

2023-04-04 00:55:41 449

原创 JDK 8 升级G1参数示例

以下是一些建议的参数设置,但请注意,针对您的特定应用程序和工作负载,您可能需要根据实际情况进行调整。在调整参数时,请确保仔细监视您的应用程序的性能指标,如 GC 暂停时间、内存使用率和吞吐量等。这些参数设置 G1 GC 为保留一定比例的堆内存作为空闲空间(例如,10%),并允许 JVM 使用尽可能多的 RAM。G1 GC 会自动调整年轻代大小,但是您可以设置年轻代的占比。在选择和调整 G1 GC 参数时,重要的是要仔细权衡内存使用、暂停时间和吞吐量之间的关系,以找到最适合您的应用程序和环境的平衡点。

2023-03-27 18:04:42 3647

原创 MySQL 单表量级的限制因素

InnoDB表可以存储的数据量是不确定的,取决于多个因素,包括硬件资源、InnoDB参数配置和表的大小和结构等。索引失效:随着表数据的增长,索引的更新可能会变得更加频繁,因此索引的性能可能会受到影响。数据库连接数:当表中的数据增长到一定程度时,可能会出现较多的并发连接请求,这可能会导致数据库的性能受到影响,因为每个连接都需要占用一定的资源。缓存命中率下降:随着数据增长,内存中的缓存可能无法容纳所有的数据,从而导致缓存命中率下降,增加了数据库的I/O负载,降低了查询和修改性能。

2023-03-11 02:21:27 187

原创 【算法】括号生成

代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。

2023-03-10 20:25:32 81

原创 面试指南--网络基础

1、新的传输格式:2.0使用二进制格式,1.0依然使用基于文本格式 2、多路复用:连接共享,不同的request可以使用同一个连接传输(最后根据每个request上的id号组合成正常的请求) 3、header压缩:由于1.X中header带有大量的信息,并且得重复传输,2.0使用encoder来减少需要传输的hearder大小4、服务端推送:同google的SPDUY(1.0的一种升级)一样。序号用来标识从T C P发端向T C P收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。

2023-03-01 16:11:31 104

原创 MySQL 单表量级的限制因素

需要注意的是,以上数据仅供参考,实际的性能数据会受到多个因素的影响,例如硬件配置、InnoDB参数配置、表结构和数据分布等。InnoDB表可以存储的数据量是不确定的,取决于多个因素,包括硬件资源、InnoDB参数配置和表的大小和结构等。MySQL InnoDB存储引擎一个表可以存储的数据量取决于多个因素,例如服务器的硬件资源、InnoDB参数配置、表的大小和结构等。缓存命中率下降:随着数据增长,内存中的缓存可能无法容纳所有的数据,从而导致缓存命中率下降,增加了数据库的I/O负载,降低了查询和修改性能。

2023-02-28 16:45:56 531

原创 线上问题排查思路、工具小结

Java 线程池以有界队列的线程池为例,当新任务提交时,如果运行的线程少于 corePoolSize,则创建新线程来处理请求。不管处于应急的哪个阶段,我们首先必须想到的是恢复问题,恢复问题不一定能够定位问题,也不一定有完美的解决方案,也许是通过经验判断,也许是预设开关等,但都可能让我们达到快速恢复的目的,然后。在大多数情况下,我们都是先优先恢复服务,保留下当时的异常信息(内存dump、线程dump、gc log等等,在紧急情况下甚至可以不用保留,等到事后去复现),等到服务正常,再去复盘问题。

2023-02-28 01:45:27 263

原创 TCP 重传问题排查思路

RACK(Recent ACKnowledgment),收到ack报文时,对比ack报文确认的报文的发送时间,来判定是否有仍为收到ack确认的报文出现了丢包,例如本地按照事件顺序发送了1,2,3三个数据包,在RTO时间内收到了2的ack确认报文,则认为1已经丢失了,RACK能够利用重传报文的ack数据包进行丢包的判定,比起传统的只依靠序列号来进行判定的方式提升了效率。在这个状态下,CWND会有序减少。TCP_CA_Open 连接建立是的初始状态,在这个状态下CWND根据是否触达慢启动的阈值来缓慢增加。

2023-02-27 19:05:42 1422

原创 Java应用进程Crash问题排查

进程被kill掉之后,如果/proc/sys/vm/oom_dump_tasks为1,且系统的rlimit中设置了core文件大小,将会由/proc/sys/kernel/core_pattern里面指定的程序生成core dump文件,这个文件里将包含。其中在我们使用CMS GC的情况下的实现如下,其实是新生代的最大值-一个survivor的大小+老生代的最大值,也就是我们设置的-Xmx的值里除去一个survivor的大小就是默认的堆外内存的大小了。系统中显示内核的相关信息的。

2023-02-27 18:24:32 675

原创 Java集合遍历方式(for循环与stream()&forEach())比较

以上这些,我们可以做个总结了:+ 对于非方法引用 Lambda 表达式,编译器都会生成对应的 desugaring method;+ desugaring method 参数列表是接口方法参数列表加上变量捕获列表+ 变量捕获由虚拟机提供,是闭包访问变量的基础;

2022-12-23 19:19:28 7345

原创 聊一聊 insert on duplicate key update 下的死锁场景

理论上,insert on duplicate key 的执行过程中加锁顺序一致,并且对唯一索引加Record Lock 不存在唯一索引的风险,但是生产中近来出现了多次该场景下的DEADLOCK,在这里借着这个场景聊聊一些知识点以及排查问题的思路

2022-11-05 22:49:24 3322 1

原创 【算法】两个数字相加(Add Two Numbers)

给到两个非空的链表来表示两个非负的整数。数字以逆序的方式存储,并且每个节点仅包含一位数字。将两个数字相加返回一个同样结构的链表。LeetCode 第2题,通常面试的时候有时候会被这样文档,请设计一个不限制长度的计算器。另一种是递归的思想,可以看下我的另一片文章讲解递归的执行。解这个题目有两种思路一种是循环的方式:(这种方式效率相对低耗时较长)你可以假设数据的数字高位不会是以0开头。

2022-10-27 10:01:26 643

原创 高并发查询场景下缓存与数据库一致性方案

当前通用的数据缓存策略为,更新数据库后,设置缓存失效,下次查询的时候查询数据库更新缓存。这个策略的问题如除上图所述外,还有高热key缓存雪崩的问题。修改缓存策略,当数据库数据修改后,更新缓存数据使用SET操作,不使用DEL操作。即当数据库事务完成后,将新版本数据更新到缓存中,使用数据更新时间戳作为数据版本号更新缓存数据时,比较版本号,以此来防止过期数据的写入,同时使用原子性策略保证更新操作的原子性。要根据不同模型设置不同 TTL。

2022-10-23 21:26:23 463

原创 聊一聊MySQL OnLine DDL

MySQL5.6版本开始引入Online DDL创建临时表:CREATE TABLE tmp_table_table LIKE table_name变更临时表结构: ALTER TABLE tmp_table_table XXXX全量拷贝数据:INSERT IGNORE INTO tmp_table_table (SELECT %s FROM table_name FORCE INDEX (%s) WHERE xxx。

2022-10-21 15:16:23 304

原创 ClickHouse为什么这么快?ClickHouse原理解析与实践

本篇文章主要在架构&使用上介绍ClickHouse的基本概念&基本查询,抛砖引玉,大家实践的路上多多交流。

2022-10-20 19:30:44 989

原创 http-component 异步请求本地重试

*** 退避策略*//*** 初始化退避重试逻辑*///初始间隔//最大间隔//最大时间间隔(所有停顿累加)本设置第一次退避50,第二次退避100,第三次退避150ms,第四次退避时返回stop不再执行退避//递增倍数(即下次间隔是上次的多少倍)}/*** 退避策略*//*** Http异步客户端实例。( 配置实例化)*//*** 初始化退避重试逻辑*///初始间隔//最大间隔。

2022-10-20 19:24:36 402

原创 中间件性能问题真的是中间件的问题么?——中间性能问题排查指南

中间件(这里是一个泛指包括 关系型数据库,Hbase、Reids、ClickHouse、RPC服务提供方,HTTP服务提供方等)超时导致可用率下降、RT飙高,真的是中间件的问题吗?首先要排查我们自身的使用方式、客户端应用上的问题,中间件大都经历过风雨考验,单业务场景很少有可能摸到中间件的性能问题(当然也有例外,不过不属于本篇幅的讨论范畴)。当一个依赖方抖动了,第一个排除手段是看一下其他的依赖方是不是也抖动了,当所有的依赖方同步抖动时,大概率是客户端的问题。原因多种多样,排查方式却是一致的:监控&日志。

2022-10-19 09:54:06 934

原创 <httpasyncclient>高并发场景报错分析与解决

本文总结讲解httpasyncclient使用过程中遇到的各种异常(java.net.ConnectException、java.net.SocketTimeoutException、java.util.concurrent.TimeoutException: Connection lease request time out),原因、分析、解决方方案及思考。

2022-10-18 20:03:14 4269

原创 Java 并发编程

学习方式:跳出来看全景;钻进去看本质。并发编程领域的三个核心问题:分工、同步和互斥。

2022-09-22 22:35:15 101

原创 一次解决Java泛型问题

JDK1.5时期,通常使用Object作为通用参数类型来实现复用,但是出现个非常危险的运行时类型问题,泛型是实现了类型的参数化,解决了JDK1.5时期类型转换的不安全问题(ClassCastException)。泛型实现编译时检查而不是运行时抛出异常。JAVA的泛型是伪泛型,实现上Java泛型通过类型擦除实现:java泛型擦除的初衷是希望让泛型化程序的调用方可以依赖非泛型的库,反之亦然。

2022-09-21 18:03:33 666

原创 通过校验二叉搜索树的递归实现方式深入理解递归

重点理解一下上下边界的递归传递思路:调用左儿子时改变上边界,调用右儿子时改变下边界;即调用左儿子时下边界是由祖先(某个右祖先)确认的,而该上边界是经过校验合法的!最终也没法理解为什么这么写是对的,如果看到现在认为理解了这个算法,那么不妨检验一下,用循环的方式来重写一下这个算法……递归的本质是一种循环,类似于盗梦空间里的工作方式,在梦境中再进入一层梦境,然后再进入下一层,关键是有一个闹钟能够指引循环,一层一层的依次返回到最外层结束。根节点左儿子不为空时,将当前节点值设置为上边界值,递归调用左儿子;

2022-09-20 14:46:35 104

原创 Java 中如何中断线程的运行?

FutureTask 中的 cancel 方法,如果传入的参数为 true,它将会在正在运行异步任务的线程上调用 interrupt 方法,如果正在执行的异步任务中的代码没有对中断做出响应,那么 cancel 方法中的参数将不会起到什么效果;如果遇到的是可中断的阻塞方法抛出 InterruptedException,可以继续向方法调用栈的上层抛出该异常,如果是检测到中断,则可清除中断状态并抛出 InterruptedException,使当前方法也成为一个可中断的方法。Java中断机制是如何工作的?

2022-09-20 08:46:30 1150

原创 Java“锁”的深度解析

volatile使用的关键在于理解“变量真正独立于其他变量和自己以前的值”。好东西往往写在最后讲,AQS是java并发包的基础,@author Doug Lea也是大师的呕心之作这篇文章的写作经历了几个艰苦难熬的晚上,如果哪位仁兄能在这个浮躁的世界花费很长的时间读完我的这篇枯燥乏味难懂的文章,请收下我的膝盖。欢迎大家关注&留言提问。

2022-09-19 21:06:29 210

原创 深入理解MySQL事务隔离级别Read Commited

本文通过一个集体的例子,一文完成深入理解。这个版本是RC事务中通常的操作顺序即:“读 - 写 - 写”,可以避免第一版中“写 - 读 - 写”的可见性问题,但是问题仍然是存在的,即并发写入场景会由于唯一索引冲突引发事务回滚,那么有没有更好的写法呢?总结一下,对于RC事务隔离级别会出现幻读和不可重复读的问题,通常在RC事务中应当遵循“读 - 写 - 写”的执行顺序,但是基于业务场景的分析通常可以做到更好的性能提升。是可见的,这样表设计的唯一索引也失效了,导致了同一个订单号,两个有效批次的插入。

2022-09-16 09:41:48 698

原创 阿里转正时的思考分享

阿里转正时的思考分享

2022-09-15 19:55:53 435

原创 聊一聊MySQL各种的长度问题

最近经常有加字段,varchar扩长度的需求,经常被问到,varchar最长多长?我们来综合聊一下MySQL的各种长度问题。

2022-09-15 08:55:54 1057

空空如也

空空如也

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

TA关注的人

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