- 博客(81)
- 收藏
- 关注
原创 图灵-分库分表
异步请求:通过异步请求每个子表的分页数据,提高响应速度。缓存全量索引:定期缓存数据的索引或结果,减少实时查询的开销。动态刷新:通过定时任务和事件驱动的方式,保证数据的时效性。这种方法适用于对性能和实时性有较高要求的场景,能够有效地提高查询效率和用户体验。
2024-10-14 17:04:46
1075
原创 图灵-高并发高性能高可用架构
三高架构是指在软件系统设计与开发中,注重解决高并发性、高可用性和高性能的架构设计模式。1.高并发性:指系统能够处理大量并发请求的能力。在高并发场景下,系统需要具备有效的并发处理机制,以保证系统能够快速、准确地响应大量并发请求,而不会发生严重的性能瓶颈或资源竞争。2.高可用性:指系统在面对各种故障和异常情况时,能够保持持续提供服务的能力。高可用性的目标是通过采用冗余、容错、自动化故障恢复等手段,使系统具备自动检测、自动处理故障,并在故障发生时能够快速恢复服务的能力。
2024-10-13 22:12:05
673
原创 手撕单例模式
在Go语言中实现单例模式,通常需要确保一个类只有一个实例,并且提供一个全局访问点。Go语言本身没有类的概念,但可以通过结构体和函数来模拟这种行为。
2024-10-12 22:00:16
468
1
原创 后端复习资料
codehot香菜哥:https://codehot.cn/markdown/welfare。讲解网站-代码随想录:https://www.programmercarl.com/小林coding:https://www.xiaolincoding.com/codeTop网站:https://codetop.cc/home。面试鸭: https://www.mianshiya.com/语雀-javaGuide。牛客Golang社招面经。力扣题单-hot100。力扣题单-面试150题。vizard自行整理。
2024-10-07 20:11:17
452
原创 MySQL分布式事务
分布式事务是一种在分布式系统中确保数据一致性的机制,主要通过两阶段提交、三阶段提交、补偿事务等技术来实现。XA 事务是其中一种具体的实现方式,广泛应用于需要跨多个资源管理器的事务处理场景。
2024-09-23 20:37:43
822
原创 微服务架构(geek time)服务注册与发现 负载均衡 熔断 降级 限流 超时控制 调用第三方
我的系统对可用性要求非常高,为此我综合使用了熔断、限流、降级、超时控制等措施。并且,我这个系统还有一个特别之处,就是它需要和很多第三方平台打交道。所以要想保证系统的可用性,我就需要保证和第三方打交道是高可用的。我在刚接手这个项目的时候,这一块的设计和实现不太行。总体来说可扩展性、可用性、可观测性和可测试性都非常差。为了解决这个问题,全方位提高系统的可扩展性、可用性、可观测性和可测试性,我做了比较大的重构。我重新设计了接口,提供了一个一致性抽象。
2024-09-01 14:11:34
1332
原创 2021直播营销技术方案
商家可以购买服务建立自己的线上店铺,进行商品的销售、推广,录制课程,直播。慕课付费资源网站 https://www.92ydl.com/1152.html。随机匹配参与者和奖品,并将结果存⼊数据库中。随机匹配参与者和奖品,并将结果存⼊数据库中。2、⾃动开奖:(定时脚本:每秒执⾏⼀次)从redis集合中获取活动的参与者数据。从redis集合中获取活动的参与者数据。获取这个时间点需要开奖的抽奖活动数据。生成带有活动ID的分享链接逻辑。从数据库去查询活动的奖品数据。从数据库去查询活动的奖品数据。
2024-08-24 16:31:12
276
原创 Redis面试问题(牛客整理版)未完成
并且,因为要回写特殊值,那么这些不存在的 key 都会有特殊值,浪费了 Redis 的内存。这个模式的缺点是如果并发量不高,那么基本没有效果。9,redis是内存相关的数据库,那么有1G的数据,想要以key-value的方式存储,那么是每个key的数据多一些更占内存,还是少一些更占内存,根据所学的redis底层数据结构实现进行分析和回答。也就是说,就算是一个热点数据,当几百个请求缓存未命中的时候,在 singleflight 模式之下,也只有一个请求会真的去查询数据,剩下的都在等着这个请求查询回来的结果。
2024-08-18 03:14:19
939
原创 分布式锁的原理和实现(Go)
红锁算法通过在多个 Redis 节点上创建锁,要求获得锁的客户端必须在大多数节点上成功创建锁,从而确保在分布式环境中只有一个客户端可以获得锁。zookeeper简称zk,zk是通过生成临时有序节点来实现分布式锁的,首先会在/lock目录下一个临时有序节点,后续请求会在节点后面继续创建临时节点。zk临时节点自动删除:当我们客户端断开连接之后,我们出创建的临时节点会进行自动删除操作,所以我们在使用分布式锁的时候,一般都是会去创建临时节点,这样可以避免因为网络异常等原因,造成的死锁。测试结果,可以使用压测工具。
2024-05-27 21:09:54
1493
2
原创 Go面试问题(牛客整理版)
sync.Map通过分段锁、细粒度的锁控制、只读视图遍历等机制,实现了高效的并发读写操作,特别适合在高并发场景下替代标准的map来保证线程安全,同时减少锁的竞争,提升性能。不过,需要注意的是,由于其内部实现较为复杂,相比于普通的map,在单线程或低并发场景下,它的性能可能会稍逊一筹。gRPC在实现过程中,涉及多个层次的技术栈和组件,这些层次共同构成了其高效、可靠的通信机制。接口定义层(IDL - Interface Definition Language)
2024-05-24 00:46:09
688
原创 k8s问题
声明式API是一种编程范式,它允许开发人员通过声明或描述应用程序的目标状态或结果,而不是编写实现这些结果的详细步骤和逻辑。这种方法简化了代码,易于理解和维护,并提高了代码的可读性和可重用性。声明式API的关键优点是将应用程序的"what"与"how"分离,让开发人员专注于描述应用程序的目标状态,而不用担心如何实现。这种方法可以使代码更简洁,降低错误发生的可能性,并更容易地实现自动化和优化。在许多领域,如Web开发、数据库查询和用户界面设计中,都可以找到声明式API的应用。
2024-05-23 11:58:34
1391
原创 计算机网络面试题
简洁版资料:https://blog.youkuaiyun.com/ThinPikachu/article/details/113479674。从输入URL到页面加载完成发生了什么?缺少https的知识。
2024-05-22 18:09:08
398
原创 go的实践
在这段代码中,心跳机制用于监控AI任务的进行情况。这样,外部监控系统可以检查Redis缓存中的心跳信号来判断任务是否仍在进行。如果在一定时间内没有收到新的心跳信号,那么可以认为任务已经中止或出现故障。在分布式系统或网络通信中,心跳机制可以用来监视节点和服务的可用性、性能和故障。心跳通常是通过定期发送小的数据包或信号来实现的,然后接收方会对这些信号进行响应,以表示它们仍然在线并正常运行。的作用是重置定时器(ticker)的时间间隔为2s,这样能每2s从通道中取到信息。,来更新ai任务的状态。
2024-04-19 16:00:44
452
原创 go语言特性笔记
采用了显式的基于值比较的错误处理方案,函数 / 方法中的错误都会通过 return 语句显式。除此之外,Go 设计者所崇尚的显式哲学还直接决定了 Go 语言错误处理的形态:Go 语言。因此,如果要使这段代码通过编译,我们就需要对变量 a 和 b 进行显式转型,就像下面代。在 Go 语言中,不同类型变量是不能在一起进行混合计算的,这是因为 Go 希望开发人员。同,Go 不允许不同类型的整型变量进行混合计算,它同样也不会对其进行隐式的自动转。的方式通过转型统一参与计算各个变量的类型。
2024-03-31 14:40:54
674
原创 MySQL面试整理(极客时间)
查询单条数据,没有匹配的会报“no rows in result set”;查询多条数据,没有匹配的会返回空数组。对于唯一键,同时有几个接口都在插入数据,会报错“Duplicate entry * for key”更新了0条数据是不会报错的;
2022-10-31 20:41:00
997
原创 gograme学习
gf gen dao -path ./app/ -c config/config.yml -g fic(group名,可见.sql的上层文件夹名) -t user_view_menu(表名) -modelFile test.go(输出文件名)更改安装的swagger版本。
2022-09-23 21:53:38
1541
原创 git常用方法
切换回本地dev分支(如果本地没有dev分支的话 git branch -c dev来复制分支)从dev上拉代码创建自己分支yanxl/xxx,写代码并提交。(如果该步骤有Test.java文件冲突,手动修改冲突,然后。后面dev有更新,要把更新合到自己分支。最后,把自己的分支提交到远程。合dev代码到自己分支。
2022-09-21 15:48:03
229
原创 单调栈专题
思路:遍历数组,维护从栈底到栈顶递减的单调栈,循环查看如果有元素值大于栈顶元素,则输出数组的对应位置是这两个元素的间隔步数,并且栈顶元素出栈,为了记录步数方便,栈里存放数组的下标。2大于栈顶对应的元素1,1对应的下标出栈,返回数组的元素1对应位置赋值为二者的步数间隔 [5 > 3]4大于栈顶对应的元素2,2对应的下标出栈,返回数组的元素2对应位置赋值为二者的步数间隔 [5 > 3]4大于栈顶对应的元素3,3对应的下标出栈,返回数组的元素3对应位置赋值为二者的步数间隔 [5]5的下标入栈 [5]
2022-09-03 21:24:15
360
原创 mac中查找各种配置文件的方法
my.cnf是mysql启动时加载的配置文件,一般会放在mysql的安装目录中,用户也可以放在其他目录加载。安装mysql后,系统中会有多个my.cnf文件,有些是用于测试的。步骤:命令没有有效的输出结果。当我们需要修改配置文件时,需要找到mysql启动时是加载了哪个my.cnf文件。启动mysql后,我们查看mysql的进程,看看是否有设置使用指定目录的my.cnf文件,如果有则表示mysql启动时是加载了这个配置文件。命令比如看到/usr/local/Cellar/mysql/5.6.24/my.cn
2022-06-23 15:15:14
2592
原创 Java本地错误&提醒
关于WARN: Establishing SSL connection without server‘s identity的解决方案原因:不应与MySQL建立ssl连接,要显式禁用来源:https://blog.youkuaiyun.com/YOUYOU0710/article/details/107297577/
2022-06-21 20:53:39
187
原创 Mac M1 Java开发环境搭建
JDK去Oracle官网 下载Installer版本的,后点击安装;需要登录的话去找百度云链接多版本JDK默认安装在/Library/Java/JavaVirtualMachines目录下,配置 JAVA_HOME切换 JDK版本, 修改~/.zshrc文件#Javaexport JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Homeexport JAVA_17_HOME=/Library/Java
2022-04-29 23:11:36
1518
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人