pprof调优学习
Go性能优化 测试代码: https://github.com/behappy-project/behappy-url-shortener Go语言项目中的性能优化主要有以下几个方面: CPU profile:报告程序的 CPU 使用情况,按照一定频率去采集应用程序在 CPU 和寄存器上面的数据 Memory Profile(Heap Profile):报告程序的内存使用情况 Block Profiling:报告 goroutines 不在运行状态的情况,可以用来分析和查找死锁等性能瓶颈 Goroutine Profiling:报告 goroutines 的使用情况,有哪些 goroutine,它们的调用关系是怎样的 采集性能数据Go语言内置了获取程序的运行数据的工具,包括以下两个标准库: runtime/pprof:采集工具型应用运行数据进行分析 net/http/pprof:采集服务型应用运行时数据进行分析 pprof开启后,每隔一段时间(10ms)就会收集下当前的堆栈信息,获取各个函数占用的CPU以及内存资源;最后通过对这些采样数据进行分析,形成一个性能分析报告。...
单元测试介绍及使用
前言开发人员写的常常是“单元测试”,但其实可以细分成 单元测试 和 集成测试 两个。 划分的原因拿常见的 Spring IoC 举例。Spring 不同Bean之间相互依赖,例如某API业务逻辑中会依赖不同模块的 Service,Service 方法中又可能依赖不同的 Dao 层方法,甚至还会通过 RPC、HTTP 调用外部服务方法。这给我们写测试用例带来了难度,本来只想测试某个方法的功能,却要考虑一连串的依赖关系。 单元测试 单元测试:是指对软件中的最小可测试单元进行检查和验证。 通常任何软件都会划分为不同的模块和组件。单独测试一个组件时,我们叫做单元测试。单元测试用于验证相关的一小段代码是否正常工作。单元测试不是用于发现应用程序范围内的 bug,或者回归测试的 bug,而是分别检测每个代码片段。 单元测试不验证应用程序代码是否和外部依赖正常工作。它聚焦与单个组件并且 Mock 所有和它交互的依赖。例如,方法中调用发短信的服务,以及和数据库的交互,我们只需要 Mock 假执行即可,毕竟测试的焦点在当前方法上。 单元测试的特点: 不依赖任何模块。 基于代码的测试,不需要在 A...
kustomize
Kustomize 现代化使用教程与最佳实践为什么选择 Kustomize?Kustomize 是 Kubernetes 原生的配置管理工具(自 k8s 1.14 起内置于 kubectl)。与 Helm 的模板引擎(Template)不同,Kustomize 采用 Overlay(叠加) 的机制。 无模板(Template-free):不需要学习复杂的模板语法(如 Go Template),直接操作原生的 YAML。 声明式(Declarative):所有的修改都通过 YAML 文件声明,非常适合 GitOps 工作流。 基础与覆盖(Base & Overlay):维护一份基础配置(Base),通过补丁(Overlay)派生出开发、测试、生产等不同环境。 核心概念与目录结构一个符合现代最佳实践的 Kustomize 项目结构如下: 1234567891011121314151617181920212223~/my-project├── base # 【基础层】存放通用的资源定义 ├── app ...
MapStruct的使用
MapStruct是一个代码生成库,简化了Java对象到Java对象之间的映射过程。通过注解接口,它可以自动生成转换代码,支持多种映射场景,如属性映射、定制方法、目标对象更新等。此外,还支持数据类型转换、嵌套对象映射和使用上下文对象定制转换。在Spring项目中,可通过Maven/Gradle依赖和配置进行集成。 注:MapStruct 从版本 1.2.0.Beta1 开始支持与 Lombok 整合,利用 Lombok 生成的 getter、setter 和构造函数来生成映射实现。 配置Maven1234567891011121314151617181920212223242526272829303132<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>${mapstruct.version}</version><...
Conda
什么是 CondaConda 是一款功能强大的软件包管理器和环境管理器,可以在 Windows 的 Anaconda 提示符或 macOS 或 Linux 的终端窗口中使用命令行命令 Conda 可以快速安装、运行和更新软件包及相关依赖项。 Conda 可以在本地计算机上创建、保存、加载和切换特定项目的软件环境。 Conda/Miniconda/Anaconda三者的区别下面通过一张图,形象的展示了 Conda 环境和软件包管理工具与 Miniconda 和 Anaconda Python 发行版(注:Anaconda Python 发行版现在有超过 150 个额外的软件包!)之间的区别。 安装地址【二选一即可】Miniconda Windows 、Mac 系统直接下载安装,下载安装教程见:https://docs.conda.io/en/latest/miniconda.html Linux 系统通过命令行安装,下载安装教程见:https://docs.conda.io/projects/conda/en/stable/user-guide/inst...
pyenv使用
需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存。pyenv就是这样一个Python版本管理器 安装pyenv1curl https://pyenv.run | bash 添加.zshrc 代码 添加完毕执行:source ~/.zshrc 1234export PYENV_ROOT="$HOME/.pyenv"export PATH="$PYENV_ROOT/bin:$PATH"eval "$(pyenv init --path)"eval "$(pyenv init -)" 查看当前激活的是那个版本的Python1pyenv version 查看已经安装了那些版本的Python1pyenv versions 安装指定版本的Python123pyenv install xx.xx.xx (pyenv install 3.10.16)# 记得一定要rehashpyenv rehash 切换和使用指定的版本Python版本3种方式系...
linux(LinuxMint)系统开发配置
修改Home中文目录打开终端,在终端中输入命令: 12export LANG=en_USxdg-user-dirs-gtk-update 跳出对话框询问是否将目录转化为英文路径,同意并关闭。 在终端中输入命令: 1export LANG=zh_CN 关闭终端,并重启系统。下次进入系统,系统会提示是否把转化好的目录改回中文。选择不再提示,并取消修改。主目录的中文转英文就完成。 快捷键替换避免和IntelliJ Idea冲突 ctrl + alt + left/right 在 idea 中,ctrl + alt + left/right 用于在光标在文件的上一个未知/下一个位置之间跳转,非常方便。 但是默认 linux mint 是将这个快捷键分配给了工作区的上一个工作区/下一个工作区,直接冲突了。 修改方式,“系统设置” –> “键盘” –> “快捷键” –> “工作区”。 注: 我一般喜欢设置为 ctrl + shift + alt + left/right ctrl + alt + L 在idea中这个快捷键用...
iTerm2安装配置使用指南
转自:https://zhuanlan.zhihu.com/p/550022490 安装指南软件安装官网下载安装官方下载地址: iTerm2官网iTerm2.com/downloads.html 根据个人需求下载正式稳定版或者beta版,下载完成之后,双击打开zip包,解压至当前文件夹, 双击打开iTerm.app,根据弹窗提示点击Move to Applications Folder即可。 Homebrew安装打开电脑终端,命令行输入如下命令回车: 1brew install iTerm2 如提示未安装Homebrew,参考这篇文章进行安装 金牛肖马:Homebrew国内如何自动安装(国内地址)(Mac & Linux) 基本设置设置iTerm2为默认终端打开iTerm2,左上角选择iTerm2,红框内容点击即可 配置主题访问iTerm2主题网站 https://github.com/mbadolato/iTerm2-Color-Schemesgithub.com/mbadolato/iTerm2-Color-Schemes 下载...
mac开发&环境配置篇
Usage habit Ice, to hide status bar do not use bar appearance, this will cause a bug to use alt + tab instead of the localized function: https://github.com/lwouis/alt-tab-macos to use scroll in windows style: https://github.com/pilotmoon/Scroll-Reverser config the Modifier key & shortcuts: turn off off the shortcuts system setting → 键盘 → 键盘快捷键 → 修饰键 display all hide files or directory type on terminal: defaults write com.apple.finder AppleShowAllFiles YES type on termi...
k9s的使用
简介在没有Web版的Dashboard的情况下,您可以使用命令行命令来管理您的Kubernetes集群。这使得您可以轻松地执行各种操作,例如查看资源、编辑资源、删除资源等。 资源监视:使用K9s,您可以轻松地监视和管理Kubernetes集群中的各种资源,例如Pod、Deployment、Service和ConfigMap等。资源修改:您可以使用K9s的资源编辑功能来修改这些资源,例如更新Pod的副本数量或更改Service的类型。K9s还提供了强大的资源搜索功能,使您可以快速查找特定的资源。 安装 K9s 可用于 Linux、macOS 以及 Windows 平台 地址:https://github.com/derailed/k9s Linux12[root@localhost ~]# wget https://github.com/derailed/k9s/releases/download/v0.21.7/k9s_Linux_x86_64.tar.gz[root@localhost ~]# tar -zxf k9s_Linux_x86_64.tar.gz -C /usr/...
