
006-工具使用
文章平均质量分 68
工具使用
牛不才
c/c++ linux 后端 架构 搜索引擎
展开
-
使用dot来画流程图
Dot是一种图形描述语言,属于Graphviz软件的一部分。Graphviz是一个用于可视化图形(图表、网络图等)的开源工具集。使用Dot语言,你可以创建并描述节点和边,从而生成图形。原创 2024-07-02 14:18:39 · 1066 阅读 · 0 评论 -
什么是OKR
OKR 是一种强大的目标管理工具,能够帮助组织和个人设定清晰、具体且具有挑战性的目标,并有效地追踪和实现这些目标。然而,为了充分发挥OKR的优势,需要正确理解其原则,避免常见的陷阱,并根据实际情况进行适当的调整和改进。通过平衡短期和长期目标,注重实际执行和反馈,OKR 可以成为推动组织和个人成长的重要助力。原创 2024-06-07 08:12:49 · 490 阅读 · 0 评论 -
vscode中使用代码片段(Snippets)来快速生成常用的代码模板
在 VS Code 中进行 C++ 编程时,可以使用代码片段(Snippets)来快速生成常用的代码模板。下面是一个简单的例子,演示如何使用代码片段在 C++ 文件中生成一个简单的类定义。原创 2024-06-07 00:18:01 · 1944 阅读 · 0 评论 -
Elasticsearch简介
Elasticsearch 是一个基于 Apache Lucene 的开源搜索引擎,旨在实现分布式搜索和数据分析。Elasticsearch 通常与 Kibana、Logstash 和 Beats 一起使用,形成 ELK Stack,用于日志和事件数据分析、应用性能监控和业务数据可视化。原创 2024-06-06 23:32:47 · 1389 阅读 · 2 评论 -
RapidJSON
要在项目中使用 RapidJSON 库,需要首先下载并包含该库的头文件。原创 2024-06-06 23:21:53 · 744 阅读 · 0 评论 -
python中的预编译正则表达式
预编译正则表达式指的是使用Python的re模块中的函数提前将正则表达式的字符串形式编译成一个正则表达式对象。这样,当你需要在多个地方或多次使用同一个正则表达式时,你可以重用这个编译后的对象,而不是在每次使用时重新编译表达式。这种做法可以提高效率,特别是在需要频繁使用同一正则表达式进行匹配的场景中。原创 2024-06-01 22:14:47 · 748 阅读 · 0 评论 -
python正则表达式中的分组功能
在Python的re模块中,group()方法是用于从一个匹配的对象(例如,re.match或re.search返回的对象)中提取匹配的字符串。当你使用正则表达式进行匹配时,匹配对象会包含原始字符串中与模式匹配的部分。group()方法可以用来访问这些匹配的部分。group(0)group()group(n)n()n=1n=2如果正则表达式中包含了括号(用于分组),那么你可以通过group(n)来访问每个分组的匹配内容。原创 2024-06-01 22:03:08 · 1063 阅读 · 0 评论 -
python中的正则表达式
Python中的正则表达式(Regular Expressions,简称regex)是一种强大的字符串处理工具,它通过定义搜索模式来匹配、查找、替换或拆分字符串。正则表达式在文本处理、数据清洗和验证等领域非常有用。Python通过内置的re模块提供了对正则表达式的支持。原创 2024-06-01 21:58:21 · 1050 阅读 · 0 评论 -
benchmark::State & benchmark 原理
除了时间,你还可以通过来报告其他自定义指标。// 测试代码// 设置自定义指标。原创 2024-05-28 23:44:03 · 1286 阅读 · 0 评论 -
Google Benchmark库 简介
在C++中,进行性能测试(Benchmarking)是一个常见的需求,用以测量代码块的执行时间,从而对代码进行优化。Google Benchmark库是一个广泛使用的C++库,专门用于编写稳健的基准测试。原创 2024-05-28 23:37:51 · 1182 阅读 · 0 评论 -
protobuf在配置文件管理上的应用
虽然Protobuf是一个强大的工具,但它通常不是用于简单配置文件的首选,因为它生成的是二进制文件,而不是人类可读的文本文件,如JSON或YAML。然而,对于需要高效传输和读取的复杂配置数据,或者在多个服务之间共享配置数据的情况,Protobuf是一个很好的选择。:在应用程序中,你可以使用生成的数据访问类读取(反序列化)配置文件中的数据,或者写入(序列化)新的配置数据。:首先,你需要使用Protobuf的语法定义你的配置文件的结构。:应用程序可以根据解析后的配置数据进行初始化或者根据当前的需求调整配置。原创 2024-05-03 20:58:37 · 702 阅读 · 1 评论 -
Homebrew是什么?
Homebrew 是一个开源的包管理器,专为 macOS 设计,用于简化在 macOS 上安装、更新和管理软件的过程。Homebrew 填补了 macOS 系统自带的包管理工具的空白,它通过用户友好的命令行界面,提供了大量的软件包(formulae),允许用户轻松地安装和维护各种开源软件、应用程序和开发工具。原创 2024-05-03 20:06:54 · 2378 阅读 · 0 评论 -
git简介
提交是项目历史的一个快照,包含了自上次提交以来对工作目录中文件的更改。远程仓库是位于网络上的服务器(如GitHub、GitLab或Bitbucket)上的版本库,它允许多个用户共享和协作。本地仓库是位于你的本地计算机上的一个目录,它由Git维护,并存储了项目的历史记录和变更数据。Git通过这些基本概念和操作,提供了一个强大的工具集,用于跟踪、共享和协作代码开发。目录下,它保存了下一次提交(commit)将包含的文件的信息。命令将本地的变更提交推送到远程仓库,以便其他人可以看到。分支是项目开发的不同线路。原创 2024-05-03 18:09:27 · 598 阅读 · 0 评论 -
doxygen 辅助阅读代码的神器
Doxygen是一个文档生成工具,主要用于编写编程语言的软件文档。它最初是为C++设计的,但后来增加了对C、C#、Java、Objective-C、Python、IDL(在某些情况下还有PHP、C#和D)的支持。Doxygen可以从一组带有文档注释的源代码文件中提取文档,并生成多种格式的可视化文档。这些注释通常遵循特定的格式,以便Doxygen能够解析它们并组织相关的文档信息。原创 2024-05-03 17:55:21 · 816 阅读 · 0 评论 -
什么是CI/CD流水线
在软件开发中,流水线系统(通常被称为CI/CD流水线或部署流水线)是一种自动化的过程,用以快速、可靠地将软件从开发阶段引向生产阶段。CI代表持续集成(Continuous Integration),而CD代表持续交付(Continuous Delivery)或持续部署(Continuous Deployment)。通过使用流水线系统,团队可以减少手动错误,提高生产效率,缩短产品上市时间,确保软件质量的同时,还能持续快速地响应市场变化。这种自动化的流程是现代敏捷软件开发不可或缺的一部分。原创 2024-05-03 16:45:38 · 1648 阅读 · 0 评论 -
什么是trace系统?
Trace系统,也常被称为分布式追踪系统,是一种用于监控、分析和优化复杂分布式系统(如微服务架构)中服务调用的工具。随着现代应用程序向微服务架构的转变,一个用户请求可能需要跨越多个服务来完成。这种架构带来了更好的可扩展性和灵活性,但同时也使得监控和故障排查变得更加复杂。Trace系统通过提供请求的完整生命周期视图,帮助开发者和运维人员理解服务之间是如何相互作用的,从而快速定位问题所在。原创 2024-05-03 16:37:15 · 1713 阅读 · 0 评论 -
Service Mesh 是什么?
随着聚会规模的扩大,你需要解决几个问题,比如如何确保每个人都能找到聚会地点(服务发现)、如何让食物和饮料供应均衡(负载均衡)、如果雨天怎么办(故障恢复)、如何确保只有被邀请的人进入(安全性)、如何了解大家是否都玩得开心(可观测性)以及如何灵活应对变化,比如突然多了很多人或有人有特殊需求(配置和流量管理)。他们知道如何引导客人到达,如何根据客人的数量和偏好调整食物和饮料的供应,如何应对下雨天气,确保只有受邀的客人能进入,监控大家的满意度,并且灵活应对任何突发情况。原创 2024-05-03 16:18:51 · 679 阅读 · 0 评论 -
代码审查工具Gerrit简介
Gerrit是一个开源的代码审查和项目管理工具,特别为Git版本控制系统设计。它提供了一个基于Web的界面,使得开发者能够提交他们的更改供其他人审查,之后这些更改可以被接受并合并到项目中。Gerrit极大地促进了团队协作和代码质量的提升,是许多大型开源项目(如Android)和企业级开发项目的首选工具。原创 2024-05-03 15:44:10 · 2407 阅读 · 0 评论 -
gdb中commands命令简介
在GDB中,commands命令允许你为特定的断点、观察点或捕获点指定一系列GDB命令,这些命令在断点被触发时自动执行。这非常有用,例如,当你希望每次达到断点时自动打印某些变量的值,或者运行一些特定的GDB命令来改变执行环境或记录一些信息。原创 2024-05-03 15:18:21 · 571 阅读 · 0 评论 -
gdb中观察点(watch)如何使用
在GDB中,watch命令用于设置监视点(watchpoint),它允许你在程序执行过程中监视特定变量的值何时发生变化。当被监视的变量的值改变时,程序将暂停执行,使你有机会检查变量值的变化和当前的程序状态。这对于调试复杂的程序中变量值的意外改变尤其有用。原创 2024-05-03 14:52:51 · 4586 阅读 · 0 评论 -
gdb中条件断点
在GDB中设置条件断点允许你在特定条件成立时才暂停程序的执行。这对于调试只在特定情况下出现问题的代码非常有用。原创 2024-05-03 14:48:52 · 2095 阅读 · 0 评论 -
STL VIEW
stl view,gdb调试 pvector pmap 等工具原创 2022-11-19 22:02:46 · 420 阅读 · 1 评论 -
redis简介(二) 位操作 订阅发布 事务 备份等
1. 字符串中位操作的应用场景1.1 字符串设置比特位场景一: 标识文章是否已经阅读。假设标识文章“协议”的内容如下 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 其他内容 是否阅读 是否收藏 是否点赞原创 2021-05-11 22:40:08 · 188 阅读 · 0 评论 -
redis简介(一)
0. redis是什么redis是一个高性能的缓存数据库,支持不限于key-value结构的数据缓存和持久化。直白的讲,可用于进程间通信或者说共享资源,比unix socket、共享内存、消息队列等更方便便捷,而且支持跨语言,凭借着简单实用性能高,被非常广泛应用。Hiredis是Redis数据库的一个简单的C客户端库。它的接口只有简单的几个,但足够大多数场景使用。1. 安装1.1 运行环境和 C语言客户端库这里直接用yum源安装了,这是最简单的方式、yum instal..原创 2021-05-08 22:22:37 · 322 阅读 · 0 评论 -
如何避免和检查C++中的内存错误
内存问题一直是C/C++程序员的心头大患,因为没有GC机制,所以需要我们自己管理内存。在 从“new和malloc的不同”出发看CC++的内存分配 一文中,讲述了几种内存错误的例子,那么避免这些陷阱呢?1. new/delete 、malloc/free、new[]/delete[] 不匹配,导致的内存污染或者内存泄漏2. 野指针,delete/free之后,没有置NULL,再次使用3. delete/free之后,再次释放,double free3. 申请内存之后,没有判断是否成功,直接原创 2021-04-14 20:10:09 · 1091 阅读 · 0 评论 -
ubuntu18下grpc编译与安装
grpc装起来很麻烦,会有很多坑。按照官方文档或者其他博客的步骤,不注意依赖库的版本页会导致各种问题。0. 环境在 https://grpc.io/docs/ grpc的环境依赖如下LanguageOSCompilers / SDKC/C++Linux, MacGCC 4.9+, Clang 3.4+0.1 操作系统Ubuntu 18.04.4 LTS (腾讯云的虚拟机)坑1:为了支持cpp11,gcc版本要4.9+,所以一些比较老的系统比如centos7.6,gcc原创 2021-03-19 08:08:24 · 2942 阅读 · 5 评论 -
docker基本原理和安装使用
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yum install -y yum-utils device-mapper-persistent-data lvm2设置源, 优先国内,速度快yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum-config-manager \ .原创 2021-01-21 22:23:24 · 118 阅读 · 0 评论 -
进程分析工具 pstack pstree strace
当进程卡住不动或者死锁时,pstack可以把当前进程的代码栈打出来,方便我们排查。用法非常简单,后面直接加进程号即可。如果是多线程的,则会打印每个线程的堆栈信息。man pstack 可查看帮助[root@localhost ~]# pstack 7383Thread 8 (Thread 0x7fcc0429c700 (LWP 7384)):#0 0x00007fcc0d322a82 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/.原创 2020-06-27 12:56:31 · 1330 阅读 · 2 评论 -
linux常见的性能分析工具和方法
查看系统负载 uptime[root@localhost ~]# uptime 10:18:27 up 6 days, 17:24, 3 users, load average: 0.00, 0.01, 0.05当前时间、系统已经运行了多长时间、有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。平均负载的最佳值是1,这意味着每个进程都可以立即执行不会错过CPU周期。单核CPU,1-2是正常的,多核CPU,核心数为n,那么n-2n之间也是正常的。free 查看空闲内存和已使.原创 2021-01-11 21:52:58 · 359 阅读 · 0 评论 -
[json] poco c++解析json数组
解析json数组,搜了还就没好到,翻了翻官方文档,自己写了个例子。内容挺简单的,不多做介绍了,直接把代码贴上来。数据数组[ { "phone": 15612345678, "name": "XiaoMing", "age": 18, "address": ["Beijing", "Shanghai", "Shenzhen"] }, { "phone": 18912345678, "name": "XiaoQi原创 2020-08-14 11:42:04 · 3254 阅读 · 0 评论 -
[python] 一个简单的httpserver程序
#!/usr/bin/python# -*- coding: utf-8 -*-# 声明源码的编码方式位utf-8import sysfrom BaseHTTPServer import HTTPServerfrom BaseHTTPServer import BaseHTTPRequestHandlerclass simpleHttpHandler(BaseHTTPRequestHandler): def do_GET(self): # 响应成功原创 2020-08-02 14:32:50 · 564 阅读 · 0 评论 -
[python] Jupyter Notebook 画股票折线图
1. Jupyter Notebook 是一个web python应用程序,它可以支持实时代码和画图安装命令如下pip install jupyter -i https://pypi.douban.com/simple2. 运行jupyter notebook这时候,会在浏览器中启动一个web界面,如图所示3. 点击新建,开始我们的旅程,???? 我在这个界面迷糊了好久。如果不新建而是选择已有的py文件,找不到运行的地方。就像下图一样,只是个编辑器,找不到运行的按钮。原创 2020-07-22 08:08:02 · 3393 阅读 · 0 评论 -
[python] 获取股票信息
安装模块的时候,经常会报网络超时, 可以 -i: 指定库的安装源pip install pandas_datareader -i https://pypi.douban.com/simple pip install datetime -i https://pypi.douban.com/simple永久修改安装源,因为中间没有墙,所以安装模块会变得飞快pip install -i http://pypi.douban.com/simple/ mrq --trusted-host pypi.do原创 2020-07-22 08:00:50 · 521 阅读 · 0 评论 -
我们身边的人工智能
最近在看了几节关于人工智能的公开课,之前还以为人工智能是很遥远的事情,但现在想了想,它早已来到了我们身边。从和人类行为相似的计算机程序,比如会下国际象棋的深蓝,到自己会学习的阿尔法狗。人工智能也在不断地迭代。它的应用领域也在渐渐拓宽,下面是我从生活的领域看人工智能带来的变化。1. 智能家居扫地机器人第一次接触扫地机器人,还是在三四年前公司年会上,抽奖中了一台,它可以自己感知周围环境,自己...原创 2020-03-24 12:02:24 · 5823 阅读 · 0 评论 -
[python] 使用flask框架搭建一个restful服务
什么是RESTREST 全称是 Representational State Transfer,表现层状态转移,是一种架构风格。简单的讲,就是一种web交互方式,用户通过特定的url访问资源,资源以json格式返回给用户。举一个查天气的例子:https://v0.yiketianqi.com/api?version=v10&appid=xxx&appsecret=xxx当然这里要填真实的appid和appsecret数据,才能查得到。返回{ "air":"99",.原创 2020-11-26 00:45:22 · 932 阅读 · 0 评论 -
centos安装 distcc+ccache 加快c/c++编译
distcc 是一个分布式C/C++编译工具,ccache则会高速缓存编译信息,两者结合会大大调高编译速度。0. 安装前先要安装gcc和g++以及python环境,把Binutils工具包也装一下。yum install -y gccyum install -y gcc-c++yum install -y python36yum install -y python3-develyum install -y binutils-devel然后去https://distcc.github.io/原创 2020-12-21 19:41:57 · 2520 阅读 · 0 评论 -
BMC简介
1. 概述BMC, BaseboardManagement Controller, 用来管理服务器上的硬件。比如,我们操作一台服务器,通常都是用ssh远程连接。登录ssh,我们需要变更网卡地址,命令service network restart, 过了一会儿发现连不上了。可能是配置错了,访问不了了。那么怎么办?这个时候就需要重新配置,然后重启服务了。呼哧呼哧找网管要门禁卡,再跑到机房,再在这一堆一堆的服务器中找到目标机器,然后本地操作修正。如果使用BMC,就可以解决这个问题,它提供了远程管理硬件原创 2020-11-12 11:57:13 · 40102 阅读 · 0 评论 -
虚拟机从workstation上载到vSphere(Exsi)的注意事项
1. 版本兼容问题现在虚拟机使用的版本是15,而虚拟化平台是5.0版本相对较老。在迁移虚拟机之前,要做更改下版本,使之兼容。具体做法如下在vmware中关闭需要迁移的虚拟机,右键【管理】->【更改硬件兼容性】,选择对应的版本。版本之间的差异在于硬件的支持,从[限制]一栏中能看到具体差异。进行【下一步】, 创建克隆会保证原有虚拟机不变,可留作历史备份,如果确定要迁移而不是复制可选第二项【更改此虚拟机】,试具体情况而定。转换完成之后,右键【管理】->【上...原创 2020-10-28 22:43:28 · 2334 阅读 · 0 评论 -
无法连接 MKS: Login(username/password)incorrect
exsi客户端能连上虚拟机服务器,但是虚拟机的控制台却没办法连接,总是报错,如题一个原因是端口问题修改端口可解决修改C:\ProgramData\VMware\VMware Workstation\config.ini中 authd.client.port = “903” 改为902参考另一个原因可能是版本问题,同样是5.0.0 它也有很多小版本,比如VMware-viclient-all-5.0.0-455964.exe和VMware-viclient-all-5.0.0-9135原创 2020-10-28 10:54:00 · 1501 阅读 · 0 评论 -
[mysql] 备份还原数据库
简单的数据库备份, 特定数据库用–database 指定,若为-A则备份所有数据库mysqldump -uroot -p111111 --database TESTDB > TESTDB.sql #备份TESTDBmysqldump -uroot -p111111 --database TESTDB--table USER_INFO > TESTDB.USER_INFO.sql #备份数据库表USER_INFO备份出来的数据太大,我么可以结合gzip,对数据进行压缩,如下所示,节省了.原创 2020-08-12 11:26:28 · 132 阅读 · 0 评论