自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(266)
  • 资源 (2)
  • 收藏
  • 关注

原创 Nginx面试题(总结最全面的面试题!!!)

Nginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、 腾讯等。正向代理就是一个人发送一个请求直接就到达了目标的服务器反方代理就是请求统一被Nginx接收,nginx反向代理服务器接收到之后,按照一定的规 则分发给了后端的业务处理服务器进行处理了。

2024-02-29 21:22:16 723

原创 互斥锁与自旋锁(用户态)的性能比较

故系统可能会在临界区调度到其他线程,最坏的情况是其他线程不停的尝试获取这个锁,但因为获取到这个锁的线程还在等待下一次调度,导致白白浪费宝贵的CPU时间,故我们可以在lock()函数中插入一条。但如果临界区内的任务非常轻量,甚至轻量到比加锁解锁的开销还小的情况下,再去维护这个队列的话,从开销上来看就不那么划算,反而直接使用自旋锁这种简单的机制能获得更高的效率。我把yield去掉以后确实自旋锁慢了好几倍,但是我不理解的是,我只开了三个线程,我是8核心16线程的电脑,按理说这三个线程都不应该被切掉啊。

2024-01-26 20:52:44 918

原创 堆实现,利用priority_queue实现可删除堆

带有权值概念,其内的元素并非依照被推入的次序排列,而是自动依照元素的权值排列(通常权值以实值表示)。不过优先队列并没有提供这个方法,在各语言内置的库中,需要支持删除任意元素时,一般使用有序集合等基于平衡二叉搜索树的实现。以底部容器完成其所有工作,具有这种“修改某物接口,形成另一种风貌”的性质者,称为。顶端的元素(权值最高者),才有机会被外界取用,如果是存放结构体,且要自定义比较函数,可以用。的所有元素,进出都有一定的规则,只有。,就是用写一个结构体,然后重载。● 与堆尾交换,删除堆尾。

2024-01-19 12:23:07 872

转载 C++ 模板编程学习路线

学习5。

2023-05-13 15:56:00 216 1

转载 Kernel Bypass

Solarflare低延迟万兆网卡配置和性能调优实践 - 知乎 (zhihu.com)使用solarflare网卡降低网络IO延迟 - 知乎 (zhihu.com)

2023-02-25 21:28:03 379

转载 numa架构

理解 NUMA 架构 - 知乎 (zhihu.com)十年后数据库还是不敢拥抱NUMA? - 知乎 (zhihu.com)结论:要开NUMA,然后一定要进行绑核,不然性能跟关闭NUMA相当。绑核要分配的内存同一个node。

2023-02-25 20:24:18 292

原创 linux核隔离实操

linux系统CPU隔离isolcpu参数设置_放学有种别跑、的博客-CSDN博客_linux cpu隔离【Linux】隔核绑核_熠熠微光的博客-CSDN博客_linux绑核命令

2023-02-09 12:28:36 578

转载 Python mmap:使用内存映射改进文件 I/O

Pythonmmap提供内存映射文件输入和输出 (I/O)。它允许您利用较低级别的操作系统功能来读取文件,就好像它们是一个大字符串或数组一样。这可以在需要大量文件 I/O 的代码中提供显着的性能改进。

2023-02-02 11:16:37 1996

原创 Git使用Merge和Rebase区别及心得技巧

如果你希望一个干净线性的提交历史,而不是含有众多合并提交相互交织的提交历史,那么应该尝试在整合分支时使用git rebase而不是git merge。反过来说,如果你想要保存完整的提交历史,避免重写公共提交的历史,仍然可以坚持使用git merge。两者都可以,但至少你现在拥有了另一个选项,可以见机利用 git rebase的优势。

2023-01-23 18:52:53 2748 1

原创 高效团队的gitlab flow最佳实践

当前git是大部分开发团队的首选版本管理工具,一个好的流程规范可以让大家有效地合作,像流水线一样有条不紊地进行团队协作。业界包含三种flow:Git flowGithub flowGitlab flow下面我们先来分析,然后再基于gitlab flow来设计一个适合我们团队的git规范。

2023-01-23 16:33:39 1681 2

原创 C++11 简化 “策略模式” 的一种思路

使用函数对象取代虚函数的一个理由是它去除了继承的限制,实现了松耦合,方法实现更加灵活,然而这个优点也可能成了它的缺点,当需要替代的虚函数增多时,组装function 的复杂度也在增加,太松散了导致代码不够直观,代码的内聚性也变低了

2023-01-10 10:52:17 238

原创 namedtuple 具名元组详解

namedtuple译作具名元组或命名元组具名元组可以理解为元组的增强版本,它适用于任何普通元组的应用范围。具名元组为元组中的每个元素都赋予了含义,从而增强代码可读性,能够让程序员写出自文档化 self-documenting 的代码。

2022-10-31 13:59:09 839

原创 Python使用struct处理二进制

有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体.struct模块中最重要的三个函数是pack(), unpack(), calcsize().

2022-10-31 10:50:19 623

原创 NVMe扫盲

NVMe1.0标准与2011年3月推出,由NVMe规范组织成员公司(如Intel,戴尔,三星,镁光等共计100多家公司)合作开发。2012年10月推出了1.1的版本。在2014年11月推出1.2版本之后,时隔近3年,2017年5月,NVMe规范组织正式发布了最新版的NVMe 1.3版规范标准。在最新的1.3中添加了如 设备自检 、 引导分区 、 虚拟化 、 主机操控散热管理 等新特点,理论上能够大大改进SSD的性能。...

2022-08-10 13:23:38 2787

原创 细说时间测量RDTSC和RDTSCP

细说RDTSC的坑

2022-08-09 15:33:36 4123

原创 几种取时间的方法(附代码)

几种取时间的方法

2022-08-09 15:11:58 2982

转载 低延迟文章引用

Linux获取纳秒时间戳的正确方式 - 知乎Linux低延迟服务器系统调优 - 知乎使用solarflare网卡降低网络IO延迟 - 知乎

2022-08-09 10:28:00 99

转载 RDMA技术--华为精华

面对高性能计算、大数据分析和浪涌型IO高并发、低时延应用,现有TCP/IP软硬件架构和应用高CPU消耗的技术特征根本不能满足应用的需求。这要有体现在处理延时过大,数十微秒;多次内存拷贝、中断处理,上下文切换、复杂的TCP/IP协议处理、网络延时过大、存储转发模式和丢包导致额外延时。接下来我们继续讨论RDMA技术、原理和优势,看完文章你就会找到为什么RDMA可以更好的解决这一系列问题。.........

2022-07-29 13:23:32 1119

原创 RDMA之无损网络

RDMA网络正是通过在网络中部署PFC和ECN功能来实现无损保障。PFC技术让我们可以对链路上RDMA专属队列的流量进行控制,并在交换机入口(Ingress port)出现拥塞时对上游设备流量进行反压。利用ECN技术我们可以实现端到端的拥塞控制,在交换机出口(Egress port)拥塞时,对数据包做ECN标记,并让流量发送端降低发送速率。从充分发挥网络高性能转发的角度,我们一般建议通过调整ECN和PFC的buffer水线,让ECN快于PFC触发,即网络还是持续全速进行数据转发,让服务器主动降低发包速率

2022-07-29 12:08:30 1269

原创 【RoCE】Flow Control

RoCE可以实现lossless无损网络环境,在二层网络上做到可靠网络传输,从而对原本在光纤网络环境下的应用在以太网环境下提供相同的服务,而不必对应用逻辑和上层协议更改。实现无损的方法有Global Pause, PFC, Dropless Receive Queue。...

2022-07-29 11:50:16 850

转载 【RoCE】拥塞控制机制(ECN, DC-QCN)

记录了RoCEv2网络中对于拥塞控制的检测,预防和应对方法。ECN检测和标记是现代数据中心商用交换机普遍具有的功能,它保存在IP头部的查分服务代码点中的两个比特位中。启用ECN功能后,在网络上出现拥塞后,交换机会对ECN域打上CE值,由接收方产生CNP来通知发送方网络拥塞事件。发送方收到CNP指示的事件通知后,根据DC-QCN算法中对当前速度处于快速恢复,积极增加和超积极增加三个阶段中对应的动作来对注入速率进行控制,从而解决网络中的拥塞情况。...

2022-07-29 11:48:50 3824

翻译 RDMA技术详解——Send/Receive操作

在这博客中,我们学习了如何使用RDMA verbs API。同时也介绍了队列的概念,而队列概念是RDMA编程的基础。最后,我们演示了RDMA send操作,展现了缓冲区的数据是如何在从一个系统搬运到另一个系统上去的。...

2022-07-28 17:02:27 858

原创 RDMA技术详解——RDMA核心概念

RDMA内存注册 和 队列相关的概念 以及数据发送接收流程介绍

2022-07-28 16:24:04 2268

原创 RDMA技术详解——原理和三种实现方式

1、InfiniBand(IB): 从一开始就支持RDMA的新一代网络协议。由于这是一种新的网络技术,因此需要支持该技术的网卡和交换机。2、RDMA过融合以太网(RoCE): 即RDMA over Ethernet, 允许通过以太网执行RDMA的网络协议。这允许在标准以太网基础架构(交换机)上使用RDMA,只不过网卡必须是支持RoCE的特殊的NIC。3、互联网广域RDMA协议(iWARP): 即RDMA over TCP, 允许通过TCP执行RDMA的网络协议。这允许在标准以太网基础架构(交换机)上..

2022-07-28 11:20:48 4928

转载 RDMA技术详解——DMA和RDMA概念

RDMA是一种概念,在两个或者多个计算机进行通讯的时候使用DMA, 从一个主机的内存直接访问另一个主机的内存。 RDMA是一种host-offload, host-bypass技术,允许应用程序(包括存储)在它们的内存空间之间直接做数据传输。具有RDMA引擎的以太网卡(RNIC)–而不是host–负责管理源和目标之间的可靠连接。...

2022-07-28 10:18:58 629

原创 分布式文件系统对比与选型参考

目前主流的分布式文件系统有GFS、HDFS、Ceph、Lustre、MogileFS、MooseFS、FastDFS、TFS、GridFS等。MooseFS功能较为全面,支持在线扩容、冗余备份、FUSE挂载和POSIX访问接口,不支持跨集群同步,存在单点故障,性能相对较差。FastDFS功能精简,支持在线扩容、冗余备份,部分支持跨集群同步,不支持FUSE挂载和POSIX访问接口,不存在单点故障,性能较好。提供的建议选型参考为FastDFS或MooseFS,可根据需求的细化进一步分析选取。..........

2022-07-26 11:55:39 1610

原创 synergy安装和坑

synergy工具安装踩坑过程

2022-07-04 16:51:23 229

原创 C++ std::condition_variable wait() wait_for() 区别

一、std::condition_variable 是条件变量。wait()当 std::condition_variable 对象的某个 wait 函数被调用的时候,它使用 std::unique_lock(通过 std::mutex) 来锁住当前线程。当前线程会一直被阻塞,直到另外一个线程在相同的 std::condition_variable 对象上调用了 notification 函数来唤醒当前线程。首先我们来看一个简单的例子#include <iostream>

2022-01-27 15:02:19 2067

原创 期货品种缩写

(Product::IF, "IF") 沪深300股指期货 指数英文idex,期货英文future(Product::IC, "IC") 中证500股指期货 I是指数英文idex的缩写,C是china的缩写?(Product::IH, "IH") 上证50股指期货 H是shang的拼音缩写?(Product::T, "T") 10年期国债期货 ...

2022-01-24 10:01:25 3839

原创 C++二维数组按行遍历和按列遍历的区别

按行遍历的效率更高。(重要前提假设:数组,按行储存;对于clickhouse-client-cpp,由于数据是按列存储的,按列遍历的效率更好)数组在内存中是按行储存的,按行遍历时可以由指向数组第一个数的指针一直往下走,就可以遍历完整个数组,而按列遍历则要获得指向每一列的第一行的元素的指针,然后每次将指针指下一行,但是指针的寻址很快,所以不会有明显的区别。按行遍历比按列遍历效率高具体体现在以下几点1、CPU高速缓存计算机存在Cache机制,当处理器发出内存访问请求时,会先查看缓存内是否有请

2022-01-12 11:27:42 3225 1

原创 CentOS 7升级gcc 8.3.1 7.x.x 4.9.4版本

Centos 7默认gcc版本为4.8,有时需要更高版本的,这里以升级至8.3.1版本为例(升级gcc7系列也是类似的步骤),分别执行下面三条命令即可,无需手动下载源码编译1、安装centos-release-sclsudo yum install centos-release-scl2、安装devtoolset,注意,如果想安装7.*版本的,就改成devtoolset-7-gcc*,以此类推sudo yum install devtoolset-8-gcc*3、激活对应的dev

2021-10-19 10:55:49 1872

原创 高效率读写文件方法比较

fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较_xingcen的博客-CSDN博​​​​​​客C/C++文件操作效率比较——FILE/fstream_shudaxia123的专栏-CSDN博客C/C++快速读写磁盘数据的方法-块读取/异步/优化分析算法/内存文件映射的原理和使用_自由理想的足迹-CSDN博客简要总结计算机各种延时(寄存器、cache、内存、磁盘)_jizhu4873的博客-CSDN博客...

2021-09-28 19:33:12 359

原创 pb,json,二进制,xml数据对比

1. 数据大小对比大多是整数和浮点型的数据,pb比二进制大小减少30%2.序列化和反序列化对比参考:Protobuf 有没有比 JSON 快 5 倍?-InfoQ序列化方案选型对比 - JSON/ProtocolBuffer/FlatBuffer/DIMBIN - 阿里云技术博客的个人空间 - OSCHINA - 中文开源技术交流社区...

2021-09-27 17:47:17 667

原创 windows下 VScode+CMake+Linux远程调试

vscode和linux打通连接参考:在Windows上使用VSCode远程链接到Linux上开发并调试C++程序_yizhiniu_xuyw的专栏-CSDN博客​​​​​​​​​​​​​​d​开发环境配置成功,记个流水账Linux安装相应工具apt install -y gcc make gdb请配置好Linux端的SSH功能给VSCode安装Remote Development扩展安装后可以看到一个新图标,点击后选中SSH Targets添加链接方式编辑这个文件,如果没有就新建:C:/Users/用户名

2021-09-21 18:52:58 757

原创 CMake基础 第8节 包含第三方库

介绍#几乎所有重要的项目都需要包含第三方库、头文件或程序。CMake支持使用find_package()函数查找这些工具的路径。这将从CMAKE_MODULE_PATH中的文件夹列表中搜索格式为FindXXX.cmake的CMake模块。在Linux上,默认搜索路径将包含/usr/share/cmake/Modules。在我的系统上,这包括对大约1420个通用第三方库的支持。本教程中的文件如下:$ tree.├── CMakeLists.txt├── main.cpp [CMak

2021-09-09 16:17:03 859 1

原创 CMake基础 第7节 编译标志

引言#CMake支持以多种不同方式设置编译标志:使用target_compile_definitions()函数 使用CMAKE_C_FLAGS和CMAKE_CXX_FLAGS变量。本教程中的文件如下:$ tree.├── CMakeLists.txt├── main.cpp [CMakeLists.txt] - 包含要运行的CMake命令 cmake_minimum_required(VERSION 3.5)# Set a default C++ compile

2021-09-09 16:14:57 1112

原创 CMake基础 第5节 安装项目

介绍#此示例说明如何生成make install目标以在系统上安装文件和二进制文件。这基于前面的共享库示例。本教程中的文件如下:$ tree.├── cmake-examples.conf├── CMakeLists.txt├── include│ └── installing│ └── Hello.h├── README.adoc└── src ├── Hello.cpp └── main.cpp [CMakeLists.txt] -

2021-09-09 16:14:10 187

原创 CMake基础 第4节 动态库

介绍#继续展示一个hello world示例,它将首先创建并链接一个共享库。这里还显示了如何创建别名目标本教程中的文件如下:$ tree.├── CMakeLists.txt├── include│ └── shared│ └── Hello.h└── src ├── Hello.cpp └── main.cpp [CMakeLists.txt] - 包含要运行的 CMake 命令 cmake_minimum_required(VE

2021-09-09 16:13:05 143

原创 CMake基础 第3节 静态库

介绍#继续展示一个hello world示例,它首先创建并链接一个静态库。这是一个简化示例,这里的库和二进制文件在同一个文件夹中。通常,这些将会被放到子项目中,这些内容将会在以后描述。本教程中的文件如下:$ tree.├── CMakeLists.txt├── include│ └── static│ └── Hello.h└── src ├── Hello.cpp └── main.cpp [CMakeLists.txt] - 包含你希望运

2021-09-09 16:12:17 119

原创 CMake基础 第2节 分离编译

介绍#展示一个hello world示例,它使用不同的文件夹来存储源文件和头文件。本教程中的文件包括:B-hello-headers$ tree.├── CMakeLists.txt├── include│ └── Hello.h└── src ├── Hello.cpp └── main.cpp [CMakeLists.txt] - 包含你希望运行的 CMake 命令。 # Set the minimum version of CMake that

2021-09-09 16:11:08 651

PROC与OCI编程

正本书讲述如何进行PROC和OCI编程设计,很好,个人觉得。

2011-04-18

空空如也

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

TA关注的人

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