自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Pigsty

用户对于数据库的需求,和马斯洛的需求金字塔一样,有不同的。内核解决的是。,或使用。自建类似于买车自己开,上云好比滴滴打出租。。租车省事,弹性十足,奈何定价离谱杀猪盘;买车自驾,体验更好,但想找到老司机,可要花不少功夫。有没有一种办法能扬长避短,结合两者的优点。?女士们先生们,且看。Pigsty 曾经是一个,但现在,它旨在提供一个,帮助用户用好世界上最先进的开源关系型数据库 PostgreSQL。Pigsty 源于我们自己的需求 —— 用好管好 PostgreSQL。

2025-03-31 16:14:45 638

原创 Go并发编程陷阱:Goroutine泄露及其高效避免策略

在 Go 项目中,Goroutine 泄露是一个常见的问题,它会导致程序占用的内存和 CPU 资源不断增加,最终可能导致程序崩溃或性能严重下降。Goroutine 泄露通常发生在 Goroutine 没有正确终止或没有被及时回收的情况下。Goroutine 泄露的防范需要结合合理的代码设计(如 Context 和 Channel 的正确使用)、严格的测试(如goleak和pprof)以及对同步机制(如WaitGroup)的谨慎管理。确保每个 Goroutine 都有可预测的退出路径是避免泄露的关键。

2025-02-20 10:01:06 1045

原创 DeepSeek引领未来:DeepSeek-R1高端AI推理模型详解与安装指南

DeepSeek-R1 是由幻方量化旗下的AI公司深度求索(DeepSeek)研发的推理模型。这款模型采用了强化学习进行后训练,旨在提升其在各种复杂任务中的推理能力,特别是在数学、代码和自然语言推理等领域。作为R1-Zero的增强版本,DeepSeek-R1在训练过程中采用了修改后的工作流程。它首先利用少量人工标注的高质量数据进行冷启动微调,然后再进行纯强化学习训练,从而在推理能力上表现出色,能够在仅有极少标注数据的情况下显著提升其性能。如有需要,请查阅最新的官方文档或联系技术支持以获取帮助。

2025-02-10 09:46:34 916

原创 B站评论系统的多级存储架构

如果索引的定义和实现不再局限于源数据库的原生索引,而是扩展到应用逻辑,并在其他存储上自行维护物化视图,这必然会带来额外的理解和维护成本,同时引入一致性的难题。在大评论区中查询这些排序索引,当Redis缓存miss时需要回源TiDB查询,因数据量过大、查询耗时较长,慢查询会占用大量CPU和内存,进而导致其他查询的延迟或阻塞,严重影响整个TiDB的吞吐量和性能。B站的评论区不仅是用户互动的核心场所,也是平台运营和用户粘性的关键因素之一,尤其是在与弹幕结合的情况下,成为平台的标志性特色。

2025-01-20 09:17:27 1444

原创 深度探索:Go 语言日志增强工具 Devslog 的全面解析

在当下软件开发的广阔舞台上,日志扮演着追踪系统运行轨迹、精确诊断问题以及实时监控应用性能的核心角色。结构化日志处理技术的运用,显著增强了日志信息的清晰度、解析便利性以及维护的可持续性。在 Go 语言日志处理工具的璀璨星空中,Devslog 犹如一颗新星,以其轻量级而功能全面的特性,专为优化开发者日志记录体验而生。本文将全面而细致地引领您探索 Devslog 的应用之道及其一系列核心亮点。美化控制台输出易于集成现有日志系统支持多种日志级别提供友好的开发者调试体验首先,通过 go get 安装 Devslog:

2025-01-14 09:38:14 435

原创 携手TiDB,共创数据库性能与稳定性的新高度

为了确保数据迁移的稳健性与安全性,数据团队采取了一种巧妙的策略:他们首先将数据写入MySQL数据库,随后利用TiDB Data Migration(DM)工具实现数据向TiDB的同步。它不仅为我们提供了一个高性能、高可用的数据库解决方案,还通过其强大的生态系统,全面支持了数据的管理、分析以及业务的持续创新与发展。在兼容性方面,TiDB全面支持MySQL 5.7和MySQL 8.0协议,以及MySQL生态中的各种工具和应用,这大大降低了企业的迁移成本和学习门槛。主键索引是聚簇索引,非主键索引是二级索引。

2024-12-25 18:18:56 280

原创 Go语言实现守护进程的挑战

Go社区与Go语言的早起元老们讨论了在Go中实现原生守护进程的复杂性,主要挑战源于Go的运行时及其线程管理方式。当一个进程执行fork操作时,只有主线程被复制到子进程中,如果fork前Go程序有多个线程(及多个goroutine)在执行(可能是由于go runtime调度goroutine和gc产生的线程),那么fork后,这些非执行fork线程的线程(以及goroutine)将不会被复制到新的子进程中,这可能会导致后续子进程中线程运行的不确定性(基于一些fork前线程留下的数据状态)。

2024-12-25 14:26:05 1286

原创 揭秘Go语言协程极限:究竟能同时创建多少个协程?

Go语言的协程模型,以其无与伦比的灵活性和高效性,为现代高并发应用提供了坚实的基石。它让开发者能够游刃有余地管理数以十万计,乃至数百万计的并发任务,轻松应对复杂多变的业务场景。然而,协程虽好,却非多多益善。如何合理管理并优化协程数量,以确保系统始终保持最佳运行状态,成为了每一位Go开发者必须面对的课题。协程数量与CPU核数之间的关系,既微妙又复杂。它们之间确实存在某种联系,但这种联系绝非一成不变。

2024-12-16 09:37:25 872

原创 iTerm2与SecureCRT:配置自动登录与发送命令的高效指南

在日常的远程服务器管理工作中,频繁地手动输入登录凭证和命令不仅效率低下,还容易出错。幸运的是,无论是开源的iTerm2还是商业软件SecureCRT,都提供了强大的自动化功能,帮助用户实现自动登录与发送命令。本文将分别介绍如何在iTerm2和SecureCRT中配置这些功能,以提高工作效率。

2024-12-06 14:07:46 564

原创 MySQL与Redis:确保数据一致性的高效策略揭秘

数据一致”一般指的是:缓存中有数据,且缓存的数据值等于数据库中的值。缓存中有数据,且缓存的数据值等于数据库中的值(需均为最新值,旧值的一致归类为不一致状态)。缓存中本没有数据,但数据库中的值是最新值(有请求查询数据库时,会将数据写入缓存,则变为上面的“一致”状态)。

2024-12-05 09:42:22 1132 2

原创 基于区域的内存管理:Go语言的新探索与实践

基于区域的内存管理是一种高效的内存分配与释放策略,其核心思想是将对象分组到特定的区域(Region)中。这些区域可以视为内存管理的单元,通过一次性操作即可实现整个区域内对象的分配或释放。这种管理方式显著降低了内存管理的开销,提高了程序的性能。通过实例代码,我们可以更加直观地理解基于区域的内存管理在Go语言中的应用。这种管理方式不仅简化了内存管理的复杂性,还提高了程序的性能和内存利用效率。

2024-12-04 14:08:48 531

原创 性能之巅:Go语言优化深度探索

性能优化是一个持续的过程,需要不断测试和调整。通过合理使用性能分析工具、优化内存管理、减少锁竞争、使用高效的算法和数据结构、优化I/O操作等方法,可以显著提升Go程序的性能。希望这些内容对你有所帮助!

2024-12-03 09:50:52 924

原创 数据库主从延迟深度解析与应对策略

数据库主从延迟,指的是在主从数据库复制过程中,从服务器(Slave)上的数据与主服务器(Master)上的数据之间存在的时间差或延迟。然而,主从延迟问题却常常成为制约系统性能的瓶颈,影响数据的及时同步和业务的高效运行。回顾本文的主要内容,总结主从延迟问题的成因和解决方案。强调解决方案的重要性和有效性,以及其对构建高效、稳定数据库环境的积极意义。本文旨在深入剖析数据库主从延迟的成因,并提供一套行之有效的解决方案,助力数据库管理员和开发人员构建更加高效、稳定的数据库环境。

2024-11-24 09:35:58 326

原创 揭秘MySQL索引:从二叉树到B+树的进化之旅,解锁数据库查询性能的秘密

MySQL索引是一种数据结构,用于帮助数据库系统快速找到数据表中的特定记录。索引类似于书的目录,通过索引,数据库可以快速定位到数据表中的某一行,而无需逐行扫描整个表。

2024-11-07 11:45:13 1118

原创 防止goroutine崩溃导致主进程崩溃

在Go语言中,当一个goroutine发生异常时,它会直接退出,并不会影响其他goroutine或者主进程。这就意味着,goroutine之间的协作通常是通过channel进行的,因此,你需要通过channel来管理和监控goroutine的状态。如果你需要捕获goroutine的异常,并且不让它直接退出,你可以使用recover内置函数。recover可以捕获到当前goroutine的异常,并且可以让当前的goroutine恢复过来,而不是直接退出。

2024-09-04 19:13:51 278

原创 破解消息重复迷局:确保交易唯一性的高级策略

针对消息重复消费和重复下单等问题,可以从多个层面进行解决,包括消息队列的设计、消费者端的处理逻辑、数据库层面的约束以及系统架构的优化等。

2024-09-03 09:50:43 984

原创 MAC安装SecureCRT

SecureCRT是一款强大的终端仿真工具,它支持SSH、Telnet等多种远程连接协议,为计算机专业人员提供了安全的远程访问、文件传输和数据隧道功能。在Mac上安装SecureCRT的过程相对简单,但需要注意一些细节以确保安装和激活成功。(M1/M2/M3) Installer macOS版本

2024-08-26 17:07:26 6117 2

原创 跳槽一定用得上的大厂Java题库!

2023年已经接近尾声了,疫情的影响也在逐渐减小,市场慢慢复苏。不过最近还是会有一些读者粉丝朋友反馈,“Java市场饱和了”、“大环境还是不好”、“投几十个简历都没有一个约面的”。其实并不是岗位需求量变少了,是越来越多的公司需要【中、高级Java工程师】。

2023-10-30 11:15:15 201

原创 Java8 新写法:优雅处理空值,告别冗长的 if-else!

Java 8 的这些特性使得 Java 编程更加现代化、灵活和高效。它们使得开发者能够以更函数式的方式编写代码,从而提高了代码的可读性和可维护性,同时也提供了更好的性能和并发处理能力。

2023-09-20 11:01:19 3234

转载 让AI替你打工?GPT提升开发效率指南

开发者日常的整个工作流中,AI 大模型能做什么?ChatGPT 等 AI 大模型能不能通过开发者的指引,一步步完成从技术方案输出、编码、测试、发布到运营维护的整套流程?使用中有什么避坑点?本文从实际研发流程的各个环节出发,总结分享了 AI 大模型对研发效能的提升实践。欢迎围观~

2023-05-29 14:26:07 356

原创 六个高频 MySQL 面试题

六个高频 MySQL ,最全Java面试题库文档!总共651页!

2022-08-11 10:37:37 4445

原创 Go 全套学习路线图

Go 学习路线图,包括基础专栏,进阶专栏,源码阅读,实战开发,面试刷题,必读书单等一系列资源。

2022-06-09 20:46:15 435

原创 并发和并行的区别

并发和并行的区别

2022-06-09 09:35:30 287

原创 Go Slice详解

GO slice代表变长的序列,它的底层是数组。一个切片由3部分组成:指针、长度和容量。指针指向底层数组,长度代表slice当前的长度,容量代表底层数组的长度。换句话说,slice自身维护了一个指针属性,指向它底层数组的某些元素的集合。......

2022-06-09 09:17:10 971

原创 GitHub Copilot AI智能编程工具

GitHub 去年联合 OpenAI,推出了一款“GitHub Copilot”工具,可以根据上下文自动写代码,将程序员从重复的编写中解放出来。该工具此前已支持了 Visual Studio Code、Neovim 和 JetBrains IDE 等。近日,Copilot 来到了微软自家的 Visual Studio 2022,用户可下载扩展使用。 IT之家了解到,与在 Visual Studio Code 中使用方法一致,开发者需要先注册登记 GitHub Copilot,并等待官方批准,之后就可以在 V

2022-06-06 17:26:53 806

原创 如何给自己打造好的“口碑”?

新加入一个团队,如何给自己打造好的“口碑”?在回答这个问题之前,我们先按照U型思维走一些弯路思考一下。(所谓U型思维是系统化的挖掘本质,基于本质做决定的思维方法,在遇到问题时不是直接去寻求解决方案,而是通过先定义核心问题,发现问题本质,找到本质解后,最后寻求解决方案。)一、定义核心问题我们首先来看一下这个问题的隐含假设是什么。其实就是我们已经获得了新团队内大部分人的了解,否则口碑就从何说起了。但无论是好口碑还是坏口碑,都需要一个过程,很难速成。这样一来,新团队和好口.

2022-04-16 09:29:27 958

原创 消息队列背后的设计思想

消息队列也通常称为消息中间件,提到消息队列,大部分互联网人或多或少都听过该名词。对于后端工程师而言,更是日常开发中必备的一项技能。随着大数据时代的到来,apache 旗下的 kafka 一度成为消息队列的代名词,提起消息队列大家自然而然就想到了 kafka。近而网上有太多太多介绍消息队列 kafka 功能或者内部实现的文章。然而消息队列本身是工程领域内一种解决问题的通用方案。它的背后有着一些通用的设计思想和经典模型,这些是消息队列的精髓和灵魂。它们独立于任何一种消息队列的具体实现(例如 kafka),但

2022-04-13 10:02:57 193

原创 如何更优雅的写GO-策略模式

如何更优雅的写GO-策略模式?

2022-03-25 19:56:48 666

原创 面试了无数公司,我总结了这些 Mysql 面试题(内附答案)

面试了无数公司,我总结了这些 Mysql 面试题(内附答案)

2022-03-23 11:21:35 337

转载 彻底搞懂HTTPS的加密原理

HTTPS(SSL/TLS)的加密机制虽然是大家都应了解的基本知识,但网上很多相关文章总会忽略一些内容,没有阐明完整的逻辑脉络,我当年学习它的时候也废了挺大功夫。对称与非对称加密、数字签名、数字证书等,在学习过程中,除了了解“它是什么”,你是否有想过“为什么是它”?我认为理解了后者才真正理解了HTTPS的加密机制。本文以问题的形式逐步展开,一步步解开HTTPS的面纱,希望能帮助你彻底搞懂HTTPS。为什么需要加密?因为http的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi

2022-03-23 11:11:16 403

原创 浅析Golang中怎么实现枚举

nginx php中文乱码的解决办法:1、将网页代码设置utf-8编码格式;2、在nginx服务端和nginx.conf中设置utf-8编码格式即可。本文操作环境:linux5.9.8系统、nginx1.14.0版,Dell G3电脑nginx php 中文乱码怎么办?nginx访问页面 中文乱码 解决方案今天在nginx上部署一个小网页项目时,中文出现乱码,搜了一下,网上解决方法都是一样 千篇一律改服务端的编码格式。这里总结一下解决方法:出现乱码可能由于以下两个位置没有配置编码格式:1、.

2022-02-07 15:15:06 8048

原创 Redis缓存和MySQL数据一致性的问题,你是如何高效的去解决的

在高并发的业务场景下,数据库的性能瓶颈往往都是用户并发访问过大。所以,一般都使用redis做一个缓冲操作,让请求先访问到redis,而不是直接去访问MySQL等数据库。从而减少网络请求的延迟响应。数据为什么会不一致这样的问题主要是在并发读写访问的时候,缓存和数据相互交叉执行。一、单库情况下同一时刻发生了并发读写请求,例如为A(写) B (读)2个请求 A请求发送一个写操作到服务端,第一步会淘汰cache,然后因为各种原因卡主了,不在执行后面业务(例:大量的业务操作、调用

2022-01-26 10:39:58 227

原创 SQL语句中 LEFT JOIN后用 ON 还是 WHERE,有什么区别 ?

SQL语句中 LEFT JOIN后用 ON 还是 WHERE,有什么区别 ?

2022-01-26 10:20:53 479 2

原创 企业微信会话内容存档及获取媒体文件

最近业务使用到企业微信“会话内容存档”,所以调研了一下企业微信会话内容存档技术。虽然官方有给出开发文档,但对于我这种菜鸟来说,确实是有点晦涩难懂啊。

2022-01-25 14:38:50 157

原创 让我的PPT会说话

先表述一个观点:绩效的好坏和你做的事情,写的内容关系不太大。这么多年下来,我看到的绩效唯一的作用,就是用来提醒上级,你今年做了哪些事情而已。至于这些事情的价值和重要性,并不是你说了算,扎心不。开门见山首先送给大家一个写绩效

2022-01-25 11:14:48 303

原创 MySQL数据太大,你们是如何拆分数据的?

在中大型项目中,一旦遇到数据量比较大,小伙伴就应该都知道要对数据进行拆分了,可是要如何拆分才是比较好呢!下面结合图文,思路,与大家聊聊设计与拆分方案。我们都知道拆分有分为垂直拆分与水平拆分。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表数据太大

2022-01-24 11:45:52 3784

转载 MySQL模糊查询,你还在用 like+% 吗?

前言我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基用户数据的关键字进行全文查找,电子商务网站需要根据用户的查询条件,在可能需要在商品的详细介绍中进行查找,这些都不是B+树索引能很好完成的工作。通过数值比较,范围过滤等就可以完成绝大多数我们需要的查询了。但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较,全文索引就是为这种场景设计的。全文索引(Full-T

2022-01-21 10:25:35 188

原创 阿里技术专家:一文教你高效画出技术架构图

技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径。加速业务的上线速率,也体现在优秀工程师的工作效率提升、产品性能优化和用户体验改善等经验方面的分享,以提高我们的专业能力。接下来,阿里巴巴技术专家三画,将分享自己和团队在画好架构图方面的理念和经验,希望对你有所帮助。当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况:对着画布无从下手、删了又来?如何用一张图描述我的系统,并且让产品、运营、开发都能看明白?画了一半的图还不清楚受众是谁?画出来的图到底是产品图功能

2022-01-20 14:44:34 337

原创 负载均衡,你自己会不会配置?

什么是负载均衡所谓负载均衡,就是说如果一组计算机节点(或者一组进程)提供相同的(同质的)服务,那么对服务的请求就应该均匀的分摊到这些节点上。这里的服务是广义的,可以是简单的计算,也可能是数据的读取或者存储。负载均衡也不是新事物,这种思想在多核CPU时代就有了,只不过在分布式系统中,负载均衡更是无处不在,这是分布式系统的天然特性决定的。分布式就是利用大量计算机节点完成单个计算机无法完成的计算、存储服务,既然有大量计算机节点,那么均衡的调度就非常重要。负载均衡的意义在于,让所有节点以最小的代价、最好

2022-01-20 14:34:09 2097

原创 GO 基础语法50问

1.使用值为 nil 的 slice、map会发生啥允许对值为 nil 的 slice 添加元素,但对值为 nil 的 map 添加元素,则会造成运行时 panic。// map 错误示例func main() { var m map[string]int m["one"] = 1 // error: panic: assignment to entry in nil map // m := make(map[string]int)// map 的正确声明,分配了实际的

2022-01-19 20:04:27 2352

空空如也

空空如也

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

TA关注的人

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