自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(378)
  • 资源 (1)
  • 收藏
  • 关注

转载 斐波那契数列

斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项,初始状态f(1) = 1, f(2) = 1, 函数的状态转移问题:f(n) = f(n-1) + f(n-2)。

2024-02-04 17:41:13 42

转载 C++ 返回值优化RVO

C++的返回值优化(Return Value Optimization,也被称为RVO)是一个重要的优化技术,可以提高程序的性能。返回值优化(RVO)是指编译器对临时变量的处理机制。对于函数返回一个对象的情况,编译器在生成代码时会按照以下规则进行优化:1.如果返回值是一个非静态局部变量,并且该变量是通过复制返回(Return by Value)方式返回的,编译器会尝试将该返回值直接构造在调用方的返回值处,而不是返回一个副本。

2023-12-02 20:48:22 357

原创 C++11中的内存模型

sequenced-before用于表示中,两个操作上的先后顺序,这个顺序是非对称、可以进行传递的关系。它不仅仅表示两个操作之间的先后顺序,还表示了操作结果之间的可见性关系。两个操作A和操作B,如果有A sequenced-before B,除了表示操作A的顺序在B之前,还表示了操作A的结果操作B可见。

2023-08-03 16:59:44 436

转载 修改 Docker 的默认存储路径

Docker 默认安装的情况下,会使用 /var/lib/docker/ 目录作为存储目录,用以存放拉取的镜像和创建的容器等。最简单粗暴的办法,当然就是直接把数据盘挂载到/var/lib/docker 目录下,不过这样对整体影响太大,其他程序需要使用数据盘时很不方便,所以还是从 Docker 端的修改入手。以我手头的一台 VPS 作为例子,可以看到这台机子本身有两块硬盘,我把数据盘 vdb 挂载到了/www 目录,目标就是将 Docker 存储目录移到/www/docker。

2023-07-10 19:43:58 1407

原创 bazel 条件编译选择不同的库

注意这个只是模版,由于缺少好多库,导致brpc编译不过。通过define选择用grpc还是brpc。

2023-07-04 11:17:34 669

转载 GitHub Pages + Hexo搭建个人博客网站

在GitHub上创建一个新的代码仓库用于保存我们的网页。点击,进入仓库页面。点击New按钮,进入仓库创建页面。填写仓库名,格式必须为,然后点击。点击创建一个新文件,作为我们网站的主页。新文件的名字必须为index.html,内容先随便写一个简单的,内容示例如下,填写之后点击提交。GitHub Pages中找到我们主页的地址为 https://yaorongke.github.io/浏览器中访问,展示成功。这里创建的网页是非常简陋的,只是为了演示下的使用方式。

2023-07-01 22:18:00 536 1

原创 使用pprof分析在线服务cpu性能

先看$GOPATH/bin下面有没有pprof,用这个pprof的bin文件将系统里的pprof替换掉。执行此命令不用在your_bin运行镜像下执行,直接在pprof安装环境下执行即可。这个是由于go版本太低导致的,将go版本升级到1.17以上,可以是1.17版本。说明pprof版本过低,或者安装的最新版本没有将系统的pprof替换掉。将生成的perf_to_profile放在PATH下面,比如。命令查找安装的pprof安装哪去了,一般是放在。这个,那么就的执行下面命令。这个文件下,如果放在。

2023-06-27 18:10:54 509

原创 Doxygen工具简单使用

Doxygen是一款非常方便的文档生成工具,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java等语言,据说也支持python等。不仅可以根据注释生成文档,而且还能利用graphviz工具生成类图以及类中的函数调用关系,并且支持html、latex、rtf等格式的输出。

2023-06-26 12:53:44 1264

转载 vscode通过服务器打开html文件

安装完成之后直接在html上右键,点Open with Live Server即可。

2023-06-26 07:59:06 593

原创 使用jemalloc检测内存泄露

/jemalloc-5.3.0/bin/jeprof --show_bytes --svg ${服务二进制名} ${heap文件名} > out.svg。由于要生成jeprof工具,所以要在autogen.sh文件中-configure后面-enable-prof参数。./autogen.sh 在这个文件里面加上-configure后面-enable-prof参数。生成的jeprof工具在jemalloc-5.3.0/bin/文件夹中。可以在编译的时候将-g换成-pg。如果生成svg时,报下面错误。

2023-03-14 20:51:51 2387 1

原创 使用 gperftools 检测内存泄露

gperftools 是 google 开源的一组套件,提供了高性能的、支持多线程的 malloc 实现,以及一组优秀的性能分析工具。

2023-03-14 20:48:53 1436

原创 使用 gperftools 分析程序cpu性能

gperftools 是 google 开源的一组套件,提供了高性能的、支持多线程的 malloc 实现,以及一组优秀的性能分析工具。从 gperftools github 官网上下载最新版本的源码包:命令结束执行后出现一个报错:这是因为没有安装 。这里直接使用 yum 的方式安装:再次执行 ,命令执行成功。执行如下两个命令,进行编译并安装:最后执行 更新动态库文件执行如下命令,确认 gperftools 安装成功三、示例3.1 demo3.2 编译,并链接profiler库3.3 运行p

2022-12-07 08:51:30 1057

转载 linux磁盘已满,查看哪个文件占用多

然后那个目录占用多 再通过du -s /root/* | sort -nr 一层层排查,找到占用文件多的地方。我今天发现的问题是tomcat日志文件二年的都没删过。有40g,后来找到log目录删除掉了。转载自:https://blog.csdn.net/a854517900/article/details/80824966。使用du -h --max-depth=1查看当前目录下文件夹大小情况。找到占用文件很大的进程,停止进程。之后重新启动,就OK了。

2022-11-24 11:30:22 2380

转载 C++实现LRU cache

C++实现LRU cache

2022-10-25 08:39:10 373

转载 快速幂算法

首先,我们先来看一道ACM程序设计题,这道题是杭电OJ中序号为2035的题目,没做过这道题目的同学可以跟着一起做一下(***点击此处***传送),题目如下:问题描述:求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”这道题目乍一看会觉得并不难啊,题目短短一行而已,而且思路也很容易,求幂这种算法一般在初学程序设计语言的时候应该都有联系过,只要写一个简单的循环就能够搞定。/*** 普通的求幂函数* @param base 底数* @param power 指数。

2022-09-19 08:44:50 333

转载 在100G文件中找出出现次数最多的100个IP

这个分类很关键,如果是随便分成100份,相同的IP被分在了不同的文件中,接下来再对每个文件统计次数并做归并,这个思路就没有意义了,起不到“大而化小,各个击破,缩小规模,逐个解决”的效果了。在统计完100个文件之后,我再建立一个小顶堆,大小为100,把建立好并存在硬盘哈希表载入内存,逐个对出现次数排序,挑出出现次数最多的100个,由于次数直接和IP是对应的,找出最多的次数也就找出了相应的IP。每条IP最长为15个字节,则100G/15=6.7G条,IP一共有多少种呢,不考虑IPv6,约有256。

2022-09-18 08:51:43 1016

转载 什么是mmap?

由于CPU和IO速度的差异问题,产生了DMA技术,通过DMA搬运来减少CPU的等待时间。传统的IO。

2022-09-14 22:48:32 423

转载 使用 gperftools 检测内存泄露

gperftools 是 google 开源的一组套件,提供了高性能的、支持多线程的 malloc 实现,以及一组优秀的性能分析工具。

2022-08-13 10:52:06 6328

原创 C++获取linux时间戳

C++获取linux时间戳

2022-07-14 08:35:36 891

原创 AddressSanitizer简单教程

AddressSanitizer简单教程

2022-07-03 19:05:03 1171

原创 dmesg和addr2line命令定位段错误

没有core文件下,通过dmesg、addr2line命令定位段错误

2022-07-02 09:03:13 971

原创 core文件特别大原因分析

服务发生core了,发现产生的core文件达到了几百G,而一般发生的core,不应该这样大的

2022-06-23 09:15:06 3142

转载 bazel使用教程

0、简介bazel的所有代码都在当前工程,每个工程都是一个 WORKSPACE。每个WORKSPACE下有多个package(包含BUILD文件的文件夹被称为package),BUILD内是多个targets,同一个package内的targets默认互相可见,不同package之间targets的可见性需要手动定义,可以在每个package的BUILD文件顶部声明其中的targets对其他包的默认可见性。一、安装bazel参考:Installing Bazel on Ubuntusudo apt

2022-05-02 09:41:06 1729

原创 python openpyxl读取excel

一、demofrom openpyxl import load_workbookif __name__ == '__main__': wb = load_workbook("xxx.xlsx") sht = wb['Sheet1'] containerMap = {} for row in sht.iter_rows(min_row=2): # 从第二行开始 i = 0 set = "" instance = ""

2022-03-10 11:48:45 964

转载 Linux查看机器负载

负载(load)是linux机器的一个重要指标,直观了反应了机器当前的状态。如果机器负载过高,那么对机器的操作将难以进行。Linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升。查看服务器负载有多种命令,w或者uptime都可以直接展示负载,$ uptime 12:20:30 up 44 days, 21:46, 2 users, load average: 8.99, 7.55, 5.40$ w 12:22:02 up 44

2021-11-07 13:43:28 571

转载 Git合并多次提交

一、查看提交历史,git log首先你要知道自己想合并的是哪几个提交,可以使用git log命令来查看提交历史,假如最近4条历史如下:commit 3ca6ec340edc66df13423f36f52919dfa3......commit 1b4056686d1b494a5c86757f9eaed844......commit 53f244ac8730d33b353bee3b24210b07......commit 3a4226b4a0b6fa68783b07f1cee7b688.....

2021-10-12 10:56:48 1439

原创 protoc和protoc-gen-go-grpc安装及编译

一、install protocol buffer compilerPB_REL="https://github.com/protocolbuffers/protobuf/releases"curl -LO $PB_REL/download/v3.15.8/protoc-3.15.8-linux-x86_64.zipunzip protoc-3.15.8-linux-x86_64.zip -d /user/local/protoc-3.15.8将protoc安装路径加入到PATH中vim /e

2021-07-07 13:39:53 11465 2

转载 flatBuffer安装及使用教程

1、什么是flatBuffer:FlatBuffers为Google发布的一个跨平台,提供多种语言接口,注重性能和资源使用的序列化类库。目前该类库提供C++, C#, C, Go, Java, JavaScript, PHP, and Python语言接口。该序列化类库多用于移动端手游数据传输以及特定的对性能有较高要求的应用。接下来我们将学习FlatBuffers环境搭建并且使用PHP语言完成一次简单的序列化例子。编译flatc工具编写一个FlatBuffers的scheme文件使用flatc工

2021-05-26 23:51:12 6074

转载 Linux上Golang 版本升级

一、 删除golang旧版本1.1 首先确认当前的 Golang 版本$ go versiongo version go1.13 linux/amd641.2 开始删除$ sudo rm -rf /usr/local/go好了,卸载 golang 就是这么简单。(我本机删除等待了半分钟)实际上,/usr/local/go 下包含了所有的 golang tools。$ ls /usr/local/go/AUTHORS CONTRIBUTING.md CONTRIBUTORS LIC

2021-05-21 20:26:52 4735

转载 git push提交成功后如何撤销回退

一、查看项目中commitgit reflog二、回退git reset HEAD~22表示回退当前版本的上上一个版本,如果回退上一个版本,将2改为1就行三、查看修改状态git status四、pushgit push origin 分支 --force五、参考资料https://blog.csdn.net/guozhaohui628/article/details/78922946...

2021-03-18 16:38:55 426

转载 Bazel教程

一、传送门Bazel入门:编译C++项目Bazel学习笔记

2021-01-16 15:55:19 823

原创 centos7安装bazel

一、生成vbatts-bazel-epel-7.repo文件[copr:copr.fedorainfracloud.org:vbatts:bazel]name=Copr repo for bazel owned by vbattsbaseurl=https://download.copr.fedorainfracloud.org/results/vbatts/bazel/epel-7-$basearch/type=rpm-mdskip_if_unavailable=Truegpgcheck=1

2021-01-16 11:46:09 1187

原创 Centos 上将gcc和g++升级到8以上版本

以安装gcc 8版本为例第一步yum install centos-release-scl然后用这个下面命令可以查看能安装的版本yum list dev\*gcc //用于查看可以安装的版本第二步yum install devtoolset-8-gcc.x86_64第三步source /opt/rh/devtoolset-8/enable第四步gcc -v第三步只是临时生效,如果想一直生效,执行下面命令echo "source /opt/rh/devtoolset-8/

2020-11-20 17:45:57 7725 3

转载 Sublime text3!行首,行尾,批量编辑!

Ctrl + H输入^,然后Find All,查找所有的行首输入$,然后Find All,查找所有的行尾光标闪动,就可以进行编辑了!!注意: Sublime text3需要打开正则匹配才可以查找所有的行尾或者行首!!转载自:https://blog.csdn.net/hgfty1/article/details/52512168...

2020-11-19 19:25:09 1359

原创 java中重写equals()方法的时候为什么要重写hashCode()方法?

一、==和equals()的区别?==是比较运算符,比较的是地址相等equals()最初是在Object中定义的一个方法,Object中定义的equals()就是==,只不过一般来说,其子类都会重写equals()方法,将其重写为比较“内容”是否相等。public class Person { private String name; private int age; Person(String name, int age) { this.name = name

2020-10-25 16:52:50 304

原创 单例模式

单例模式一般分为:饿汉模式、懒汉模式、DCL模式、holder模式和枚举模式一、饿汉模式public class HungerySingleton { private static HungerySingleton instance = new HungerySingleton(); private HungerySingleton() {} public static HungerySingleton getInstance() { return instan

2020-10-04 21:31:22 149

原创 O(N)的时间寻找最大的K个数

O(N)的时间寻找最大的K个数public class Test { public static int partition(int[] array, int left, int right) { int cur = array[left]; while (left < right) { while (right > -1 && array[right] <= cur) --right;

2020-10-04 21:29:57 218

原创 idea maven import自己写的类报红

idea file->Invalidate Caches/Restart->Invalidate and Restart

2020-08-13 11:17:44 1133

原创 Hystrix Dashboard监控指标含义

一、断路器的监视器说明[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iz2iPTCH-1597036679654)在监视器的右上角,以3列的形式显示各种计数器。在最左边的一列中,从上到下,第一个数字(绿色)表示当前成功调用的数量;第二个数字(蓝色)表示短路请求的数量;最后一个数字(蓝绿色)表示错误请求的数量。中间一列显示超时请求的数量(黄色)、线程池拒绝的数量(紫色)和失败请求的数量(红色)。第三列显示过去10s内错误的百分率。计数器下面有两个数字,代表每秒主机和

2020-08-10 13:20:02 769

转载 在C++中使用openmp进行多线程编程

一、前言多线程在实际的编程中的重要性不言而喻。对于C++而言,当我们需要使用多线程时,可以使用boost::thread库或者自从C++ 11开始支持的std::thread,也可以使用操作系统相关的线程API,如在Linux上,可以使用pthread库。除此之外,还可以使用omp来使用多线程。它的好处是跨平台,使用简单。在Linux平台上,如果需要使用omp,只需在编译时使用"-fopenmp"指令。在Windows的visual studio开发环境中,开启omp支持的步骤为“项目属性 ->

2020-07-16 23:10:20 6760

用Qt编写的具有人机对战的五子棋

此五子棋代码,实现了人机对战,开始界面可以选择棋子颜色和自动搜索的深度(即难度),搜索的游戏状态数目随着博弈的进行呈指数级增长,指数增长无法消除,不过我们使用了alpha-beta剪枝有效地将其减半,加快了搜索的速度!

2017-12-02

空空如也

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

TA关注的人

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