编写 GPT 提示词的公式 + 资源分享
GPT 能够给我们带来很大的帮助,因此我们要好好利用它。我们希望 GPT 输出令我们满意的内容,影响 GPT 输出内容的因素有模型和输入(Prompt,提示词)。
【全网首发】深入剖析 Golang 程序启动原理 - 从 ELF 入口点到GMP初始化到执行 main!
看似简简单单的一个 Golang 的 Hello World 程序,只要你愿意深挖,里面真的有极其丰富的营养的!
go的net/http有哪些值得关注的细节?
了解它的内部实现原理,可以帮助我们写出更高性能的代码,以及避免协程泄露造成的内存泄漏问题。
Go 面试题:string 是线程安全的吗?
每次做并发操作时,都建议想清楚,这个场景的到底需不需要保护共享变量,做好原子操作等。
各个语言运行100万个并发任务需要多少内存?
有些程序在10000个连接中仅消耗了略高于100MB的内存,但另一些程序却达到了接近3GB。
.NET中委托性能的演变
.NET中的委托.NET中的委托是一项重要功能,可以实现间接方法调用和函数式编程。自.NET Framework 1.0起,委托在.NET中就支持多播(multicast)功能。通过多播,我们可以在单个委托调用中调用一系列方法,而无需自己维护方法列表。即使在今天,委托的多播功能在桌面开发中仍然
GO 学了一个月,代码不会写,先看个源码解析
本地启动在第三篇自定义中间件的前提下,已经说了很多关于本地通过 CRD 或者 File 作为 provider 的启动方式,这里想要补充一下关于本地 DEBUG 3.0.0 版本代码的问题,后续的源码分析也都会基于目前最新的 3.0 版本。在写文章的时候,目前 3.0 版本还是 beta 版本。
抓包分析RST报文
今天我们来分析下网络连接中经常出现的RST信号,连接中出现RST信号意味着这条链接将会断开,来看下什么时候会触发RST信号,这在分析连接断开的原因时十分有帮助。
编译程序的任务
编译程序是一种翻译程序,编译程序是将一种语言形式翻译成另一种语言形式。它将高级语言所写的源程序翻译成等价的机器语言或汇编语言的目标程序。 整个编译过程一般可以划分为 5 个阶段:词法分析、语法分析、语义分析及中间代码生成、中间代码优化和目标代码生成。
eBPF 入门开发实践教程十四:使用 USDT 捕获用户态 Java GC 事件耗时
eBPF 还支持使用 USDT (用户级静态定义跟踪点) 捕获用户态的应用程序行为,本文我们将介绍如何使用 eBPF 和 USDT 来捕获和分析 Java 的垃圾回收 (GC) 事件的耗时。
业务逻辑复杂,历史久远的接口出现数据错误怎么办?
接口返回数据错误,如何快速找到问题原因并进行修复?01背景1.1 下班时,业务反馈:线上数据错了1.2 分析找前端同学确认控制“点击咨询期货”是由接口返回的“skuLt”字段控制:02BugShoot
wireshark分析tcp传输之文件上传速率问题
在网络性能问题排查思路那一节里,我提到了查看系统网络瓶颈的方法以及排查丢包问题的手段。但就此分析网络问题还不够精细,有时网络资源并没有达到瓶颈,或者并没有丢包产生,但是网络传输速率就是很慢,或者有丢包产生,但无法知道丢包的详细过程,无法知道整个tcp传输过程的具体情况。如何更加精细的查看网络包传
编译器优化那些事儿(10):区域分析
为了有效地优化代码,编译器需要在程序的各个节点建立并求解与信息有关的方程来收集数据流信息,并将这些信息分发给流程图的每个块,这个过程被称为数据流分析~
一次系统延迟优化案例
一次系统延迟优化案例服务监控系列文章服务监控系列视频问题背景线上隔三差五晚上10点左右总会有sql报警出现,且是同样的sql,我们的sql报警是在应用程序内部通过对sql操作增加钩子函数,对sql前后执行的位置记录下时间戳,然后sql执行完毕后,对时间戳进行相减得到sql执行时长,大于1s则
【全网首发】一次有关 DNS 解析导致 APP 慢的问题探究
HTTTPDNSAWS Router53APP 使用 HTTPDNS, 为解决 DNS 解析生效慢, DNS 劫持等问题。
eBPF Talk: challenge verifier
在这篇文章里,将分析 verifier log,找到问题所在,并解决这个问题。
八大生产故障 排查思路(通用版)
你好,我是悟空。常见的生产故障有哪些?在生产环境中,常见的故障类型包括但不限于以下几种:网络故障:网络故障可能包括网络连接中断、网络延迟过高、路由错误等。这可能导致系统无法正常访问外部资源,或导致应用程序无法与其他系统进行通信。服务器故障:服务器故障可能包括硬件故障、操作
编译器优化那些事儿(9):Machine Outliner
在嵌入式领域,代码体积(code size)优化能够减少内存的使用,对产品的竞争力至关重要
Go设计模式--中介者,最后的模式
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式,也是我们要学习的最后一个设计模式—中介者模式,对这个模式有一点了解后会觉得它跟我们已经学过的观察者模式挺像,但是两者还是有些区别的,使用场景也不一样,具体我们放在最后再讲,先来一起学习中介者模式。中介者模式是一种行为
Go设计模式--解释器模式
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式—解释器模式解释器模式是一种行为设计模式,可以用来在程序里创建针对一个特点领域语言的解释器,用于处理解释领域语言中的语句。换句话说,该模式定义了领域语言的抽象语法树以及用示来解释语法树的解释器。模式使用场景解释器模式
Hive分桶秘籍:解锁大数据性能提升的神秘力量
摘本文将对Hive分桶的合理性进行分析,阐述了分桶的原理、优势以及如何设计合理的分桶方案。通过探讨分桶在不同场景下的应用,我们可以更好地理解分桶对于提高查询性能和数据管理的重要性。
Go设计模式--命令模式
大家好,这里是每周都陪你进步的网管,假期归来咱们继续更新设计模式系列,这次要和大家一起学习的是命令模式,如果你对领域驱动设计感兴趣,这个模式一定要好好学,命令模式是DDD风格的框架中高频使用的一个模式。命令模式是一种行为型模式。它通过将请求封装为一个独立的对象即命令对象,来解耦命令的调用者和接收
Go设计模式--备忘录模式,带暂存的业务功能可以参考它来实现
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式—备忘录模式备忘录模式(Memento Pattern)又叫作快照模式(Snapshot Pattern), 或令牌模式(Token Pattern), 指在不破坏封装的前提下, 捕获一个对象的内部状态, 并在对象之外保
Go设计模式--访客模式
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式—访客模式访客模式也叫访问者模式(Visitor Pattern)是一种将数据结构对象与数据操作分离的设计模式,可以在不改变数据结构对象类结构的前提下定义作用于这些对象的新的操作, 属于行为型设计模式。访问者模式主要适
Go设计模式-迭代器到底是不是一个多此一举的模式?
大家好,这里是陪你一起进步的网管~!上周收到了各位对设计模式的催更,这里我就直接开始啦,今天要一起学习的是迭代器模式。迭代器模式(Iterator Design Pattern),也叫作游标模式(Cursor Design Pattern)。提供了一种方法顺序地访问一个聚合对象中的元素,而不是暴
太坑了吧!一次某某云上的redis读超时排查经历
问题背景:最近一两天线上老是偶现的redis读超时报警,并且是业务低峰期间,甚是不解,于是开始着手排查。
eBPF verifier验证器与编译器inline内联
二月份编写eCapture的GoTls密钥捕获功能时,遇到了一个小bug,就是在UBUNTU 21.04的Linux上运行时,遇到eBPF verifier的报错,无法启动,后来通过启用always inline解决了这个问题~
使用 eBPF 技术跟踪 Netfilter 数据流
我们了解到对于 Netfilter 的底层函数为 ipt_do_table,那么我们只需要使用 kprobe 和 kretprobe 获取到入参和返回结果,即可以获取到对应的过滤结果
eBPF: 从 BPF2BPF 调用到尾调用
我在学习尾调用的时候苦于没有一个能跑起来的简单易懂的例子,所以最后自己撸了一个,这个版本我认为是目前能找到的所有例子里对初学者最友好,逻辑最清晰的一个~
使用eBPF实现基于DWARF的堆栈遍历
译者注:原文为https://www.parca.dev/[1]的Javier Honduvilla Coto[2],文章地址DWARF-based Stack Walking Using eBPF[3],副标题Deep dive into the new DWARF-based stack
面试必备:四种经典限流算法讲解
前言大家好,我是田螺.最近一位朋友去拼夕夕面试,被问了这么一道题:限流算法有哪些?用代码实现令牌桶算法。跟星球好友讨论了一波,发现大家都忘记得差不多了.所以田螺哥再整理一波,常见的四种限流算法,以及简单代码实现,相信大家看完,会茅塞顿开的。1、固定窗口限流算法1.1 什么是固定窗口限流算
Go设计模式--桥接模式,让代码既能多维度扩展又不会臃肿
下面举个大家都能理解的例子来说明桥接模式模式在系统多维度扩展和降低臃肿度上的作用
.NET微服务系统迁移至.NET6.0的故事
本次迁移涉及的是公司内部一个业务子系统,该系统是一个多样化的应用,支撑着公司的多个业务方向。目前,该系统由40多个基于.NET的微服务应用构成,使用数千个CPU核心和数TB内存,在数百个Linux容器中运行。每天,该系统需要处理数十亿次请求。该系统其中大部分服务是在2018-2019年左右由老旧
eBPF 快速定位网络抖动
在容器集群中新部署的服务 A,在测试初期发现通过服务注册发现访问下游服务 B(在同一个容器集群) 调用延时 999 线偶发抖动,测试 QPS 比较小,从业务监控上看起来比较明显,最大的延时可以达到 200 ms。
传输安全HTTPS
通过阅读本篇文章你可以了解到: 1、为什么要有HTTPS; 2、TLS1.2 握手的过程。
使用 Go 语言开发 eBPF 程序
本文将介绍基于 Go 和对应的库开发 eBPF 程序
eBPF 完全入门指南.pdf(万字长文)
开发者可基于 eBPF 开发性能分析工具、软件定义网络、安全等诸多场景。本文将介绍 eBPF 的前世今生,并构建一个 eBPF 环境进行开发实践,文中所有的代码可以在我的 Github[2] 中找到。
eBPF指令集规范v1.0
编译成功的eBPF程序,加载时偶尔会过不了内核BPF verifier,冒出一堆汇编语句。理解eBPF指令集,可以帮助我们调试这类问题。
从输入URL到Web页面呈现的全过程
简单来说,当用户在浏览器的地址栏中输入 URL 并点击回车后,浏览器从服务端获取资源,然后将内容显示在页面上。这个过程经过了:浏览器缓存 -> DNS 域名解析 -> URL 编码 -> 使用 HTTP 或者使用 HTTPS 协议发送请求等过程。
Go设计模式--享元模式,节省内存的好帮手
当一个系统中有大量的重复对象的时候,如果这些对象是不可变对象,我们就可以使用享元模式,将这些对象设计成享元,在内存只保存一份,供需要的代码使用,这样能减少内存中对象的数量,起到节省内存的作用。
.NET遍历二维数组-先行/先列哪个更快?
上周在.NET性能优化群里面有一个很有意思的讨论,讨论的问题如下所示:
内容分发网络 CDN
内容分发网络(英语:Content Delivery Network 或 Content Distribution Network,缩写:CDN)将源站资源缓存到全国各地的边缘服务器,供用户就近获取,降低源站压力。
开放报名 | 字节跳动工程师带你 5 天进阶 iOS 应用稳定性优化
iOS稳定性训练营开启报名!5天进阶异常问题排查与稳定性治理
關於用 Go 实现堆和堆操作,可能是最通俗易懂的讲解了
堆是一种树形数据结构,分为大顶堆和小顶堆,顾名思义,大顶堆就是堆顶(第一个元素)始终存放的是这组元素中的最大元素,小顶堆就是堆顶元素是最小元素。如果需要从一组对象中查找最大值或最小值,使用堆能够高效率的完成需求。排序算法中的堆排序正是利用了堆这一数据完成的排序,堆在实际应用中主要被用于实现优先队列
Go 内联优化:如何让我们的程序更快?
大家好,我是煎鱼。最近周末在家学习时看到 @Dave Cheney 的《Inlining optimisations in Go[1]》还是有不少养分的,翻译分享给大家,部分内容有所修改、删减、调整。这是一篇介绍 Go 编译器如何实现内联的文章,以及这种优化将如何影响你的 Go 代码,并最终
TCP-三次握手
TCP-三次握手最近对计算机网络蛮感兴趣的,借着这股劲,来系统研究研究 TCP 协议。先来个经典的三次握手问题一问,为什么要三次握手?首先 TCP 协议底层是 IP层,IP层 本身是不可靠的TCP 协议的出现,就是要创建一个可靠的协议,区别于 UDP协议TCP 为了提供可靠的服务,得先建
看我是如何用C#编写一个小于8KB的贪吃蛇游戏的
译者注:这是Michal Strehovský大佬的一篇文章,他目前在微软.NET Runtime团队工作,主要是负责.NET NativeAOT功能的开发。我在前几天看到这篇文章,非常喜欢,虽然它的内容稍微有点过时(还是使用的.NET Core 3.0),不过其中的一些编程技巧和
【全网首发】一文读懂 Go Http Server 原理
俗话说万事开头难,但用 Go 实现一个 Http Server 真不难,简单到什么程度?起一个 Server,并且能响应请求,算上包名、导入的依赖,甚至空行,也就只要 15 行代码
开启 | 2023社区【首发计划】原创激励活动
新年好呀!各位创作者大大们~ 2022年我们推出了【首发有礼】原创好文活动,在此期间收到了很多作者大大的欢迎,陆续有越来越多的优秀创作者们入驻社区参与首发~2023我们重新再出发,今年会继续提高社区内容的原创度,同时为了回馈一直支持我们的各位作者,社区2023年【首发计划】原创激
CDN是什么?用了CDN就一定比不用更快吗?
对于开发同学来说,CDN这个词,既熟悉又陌生。平时搞开发的时候很少需要碰这个,但却总能听到别人提起。我们都听说过它能加速,也大概知道个原因,但是往深了问。用了CDN就一定比不用更快吗?
从29.6s优化到33ms,我是如何做到的
案发现场收到用户反馈,功能不好用了:“这个列表是坏了嘛我今天给一下午都点不开” 抓紧在本地复现了下:测试环境是没有问题的。线上的页面打开慢、还会报错:"request timeout"现状去日志中查了下,是查询TableStore时报
聊聊两个Go即将过时的GC优化策略
概述首先我们来简单的看一下 Go GC中做了什么事,以及它里面比较耗时的地方是什么,我们才能对它进行优化。首先对于 GC 来说有这么几个阶段:sweep termination(清理终止):会触发 STW ,所有的 P(处理器) 都会进入 safe-point(安全点);the mark
Skywalking on the way-千亿级的数据储能、毫秒级的查询耗时
 目录1、开篇2、为什么需要全链路监控3、为什么选择Skywalking4、预研阶段5、POC阶段6、优化阶段7、后续1、开篇自从Skywaling开始在公司推广,时不时会在排查问题的人群中听到这样的话:“你咋还没接Skywalking?接入后,一眼就
.NET性能优化-ArrayPool同时复用数组和对象
前两天在微信后台收到了读者的私信,问了一个这样的问题,由于私信回复有字数和篇幅限制,我在这里统一回复一下。读者的问题是这样的:大佬您好,之前读了您的文章受益匪浅,我们有一个项目经常占用 7-8GB 的内存,使用了您推荐的ArrayPool以后降低到 4GB 左右,我还想着能不能继续优化,于是 d
动图图解 | UDP就一定比TCP快吗?
话说,UDP比TCP快吗?相信就算不是八股文老手,也会
高性能 Go 日志库 zap 设计与实现
最近我也在学习如何在开发中让代码运行更加高效,然后在浏览各种优秀的日志设计的时候看到 uber 有一个叫 zap 的日志库引起了我的注意,它主要特性是对性能和内存分配都做到了极致的优化。对于我来说,原本在项目中是使用 logrus 来作为日志输出,但是看到 zap 的 benchmark,感觉在
深入 Go 中各个高性能 JSON 解析库
其实本来我是没打算去看 JSON 库的性能问题的,但是最近我对我的项目做了一次 pprof,从下面的火焰图中可以发现在业务逻辑处理中,有一半多的性能消耗都是在 JSON 解析过程中,所以就有了这篇文章。这篇文章深入源码分析一下在 Go 中标准库是如何解析 JSON 的,然后再看看有哪些比较流行的
.NET性能优化-使用内存+磁盘混合缓存
我们回顾一下上一篇文章中的内容,有一个朋友问我这样一个问题:我的业务依赖一些数据,因为数据库访问慢,我把它放在Redis里面,不过还是太慢了,有什么其它的方案吗?其实这个问题比较简单的是吧?Redis其实属于网络存储,我对照下面的这个表格,可以很容易的得出结论,既然网络存储的速度慢,那我们就
数组还是HashSet?
我记得大约在半年前,有个朋友问我一个问题,现在有一个选型:一个性能敏感场景,有一个集合,需要确定某一个元素在不在这个集合中,我是用数组直接Contains还是使用HashSet<T>.Contains?大家肯定想都不用想,都选使用HashSet<T>,毕竟Hash
Go语言GC实现原理及源码分析
介绍三色标记法三色标记法将对象的颜色分为了黑、灰、白,三种颜色。黑色:该对象已经被标记过了,且该对象下的属性也全部都被标记过了(程序所需要的对象);灰色:该对象已经被标记过了,但该对象下的属性没有全被标记完(GC需要从此对象中去寻找垃圾);白色:该对象没有被标记过(对象垃圾);在垃
编译器优化那些事儿(8):指令调度概述
指令调度简介指令调度是指对程序块或过程中的操作进行排序
面试官问我接口优化:我一口气说了十八种
前言大家好,我是捡田螺的小男孩。之前工作中,遇到一个504超时问题。原因是因为接口耗时过长,超过nginx配置的10秒。然后 真枪实弹搞了一次接口性能优化,最后接口从11.3s降为170ms。本文将跟小伙伴们分享接口优化的一些通用方案。1. 批量思想:批量操作数据库 优化前://for
介绍HTTP
本篇文章主要介绍了HTTP报文、HTTP请求方法、HTTP响应的状态码、Cookie技术
有趣的 Go HttpClient 超时机制
hello,大家好呀,我是既写 Java 又写 Go 的
计算机网络 | TCP 连接的建立 和 TCP 连接的断开
TCP 连接的建立过程一开始,客户端和服务端都处于 close 状态。先是服务端监听某个端口,此时服务端处于 listen 状态。这个时候客户端就可以发送连接请求报文了。第一次握手客户端会主动发送连接请求报文,随机初始化序列号为 x,并把 SYN 标志位设置为 1,表示 SYN 报文
软件设计杂谈——性能优化的十种手段(下篇)
索引软件设计杂谈——性能优化的十种手段(上篇),我们总结了六种普适的性能优化方法,包括 索引、压缩、缓存、预取、削峰填谷、批量处理,简单讲解了每种技术手段的原理和实际应用;软件设计杂谈——性能优化的十种手段(中篇),我们简单了解了程序是如何消耗执行时间和内存空间的;软件设计杂谈——性能优化的十
软件设计杂谈——性能优化的十种手段(中篇)
引言上一篇,我们总结了六种普适的性能优化方法,包括 索引、压缩、缓存、预取、削峰填谷、批量处理,简单讲解了每种技术手段的原理和实际应用。在开启最后一篇前,我们先需要搞清楚:在程序运行期间,时间和空间都耗在哪里了?时间都去哪儿了?人眨一次眼大约100毫秒,而现代1核CPU在一眨眼的功夫就可以执行
软件设计杂谈——性能优化的十种手段(上篇)
导语:软件设计开发某种意义上是“取”与“舍”的艺术。关于性能方面,就像建筑设计成抗震9度需要额外的成本一样,高性能软件系统也意味着更高的实现成本,有时候与其他质量属性甚至会冲突,比如安全性、可扩展性、可观测性等等。大部分时候我们需要的是:在业务遇到瓶颈之前,利用常见的技术手段将系统优化到预期水平。

有开始,就会有进​步!

在追求性能的道路上,记录每一刻的成长!源码解读,编程技巧,外文翻译,技术实践,线上案例等等,记录自己,启发他人!

专家作者推荐

巡山小汪

关注微信公众号《解Bug之路》,有问题请在公众号中咨询:) 无论多么艰苦的时刻,都不要忘记,辉煌的未来,在你的眼中闪耀!

飞哥开发内功

《深入理解Linux网络》作者,腾讯搜狗十年工程师,公众号「开发内功修炼」作者!

踩刀诗人

聊聊技术,唠唠段子,偶尔做菜写诗,欢迎关注我的公众号 踩刀诗人

Brand

搜索关注微信公众号【架构与思维】:撰稿者为bat、字节的几位高阶研发/架构,专注技术分享。

专题推荐

本专题精选了HeapDump性能社区中的8篇数据库性能优化相关文章,这些文章内不仅包含了影响数据库性能的因素,数据库性能评估标准、优化方法的内容,还介绍了一些数据库设计原则和编程技巧,并且记录了一些或大或小的实战案例,帮助大家快速了解数据库性能优化,掌握一些实操技能。
8篇文章14794阅读量
本系列文章主要针对Dubbo2.6.2(dubbox2.8.4)版本,从源码的角度分析Dubbo内部的实现细节,加深对Dubbo的各配置参数底层实现原理的理解,更好的指导Dubbo实践。
14篇文章24641阅读量