- 博客(19)
- 资源 (4)
- 收藏
- 关注
原创 std::thread::native_handle介绍
是一个用于获取底层线程句柄的成员函数。这个句柄可以用来进行更低级别的操作,通常是与操作系统相关的线程操作,这些操作在标准 C++ 线程库中可能不提供直接的接口。
2024-06-06 14:24:52
363
原创 readv和writev函数简介
函数通常在需要合并多个缓冲区的数据或将数据分散到多个缓冲区的场景中使用。函数是UNIX系统提供的一组高级I/O函数,用于在一次系统调用中读取或写入多个缓冲区中的数据。这些函数对于减少系统调用的次数,提高效率和性能非常有用。函数用于从文件描述符中读取数据到多个缓冲区中。它将数据从文件描述符读取到指定的缓冲区数组。函数用于将数据从多个缓冲区中写入文件描述符。它将多个缓冲区中的数据一起写入文件。结构描述一个缓冲区的地址和大小。结构描述一个缓冲区的地址和大小。是要读取数据的文件描述符。是要写入数据的文件描述符。
2023-10-28 11:21:50
814
原创 live555 windows通过命令行编译
记录live555在windows下的编译过程准备工作:vs2017 live555源码参考了网上很多的案例,绝大部分是用vs2017去新建工程,然后手动添加4个库和可执行文件的工程。但我觉得这样太麻烦,因为live555的源码目录下是有windows下的项目构建相关文件的,理应可以通过命令行来快速编译。好在,找到了可行的参考方案。编译方法,参考VS2017下Live555的编译 - kaixin開訫 - 博客园这里就不贴原博了。1.准备工作,2.环境配置,3.编译,这三步简单快速,照着做就
2022-05-31 16:26:22
699
原创 c++调用函数时,拷贝构造函数调用的时机及次数
首先看下如下代码:#include <iostream>using namespace std;class Copyable {public: Copyable(){} Copyable(const Copyable &o) { cout << "Copied" << endl; }};Copyable ReturnRvalue() { return Copyable(); //返回一个临时对象...
2021-02-24 16:06:27
2889
原创 二维、三维数组初始化及遍历
二维数组初始化及遍历: int arr2[3][4] = { {43,35,61,72}, {65,33,55,22}, {23,56,33,77} }; //方法1 cout << "Method 1:\n"; for(int i = 0; i < 3; i++) { for(int
2021-02-04 11:46:28
1094
原创 const属性总结
constconst对象必须初始化,const对象一旦创建后其值就不能再改变;const int k; //错误:K是一个未经初始化的常量可以编译时初始化:const int i = 42;也可以运行时初始化:const int j = get_size();//用来初始化const对象的无需在意是不是一个常量当一个常量初始化方式属于编译时初始化,则编译器将在编译过程中把代码中所有用到该变量的地方都替换成其对应的值。如:const int bufSize = 1024; //编译器会找
2021-01-08 10:54:53
862
1
原创 对大文件写操作时谨慎使用fseek/lseek
fseek/lseek在某些情况会产生read系统调用?在测试某厂家的云存储产品的性能时,发现一个比较诡异的问题,即在将视频流数据写入磁盘的过程中,监测到了大量的读操作(read系统调用),每个操作文件较大,有几百兆,大量的读操作会一定程度上降低写入的性能。但是在经过代码排查后,确定在写入数据的过程中是没有出现fread、read调用的,那么问题来了,read调用从何而来?由于从创建文件到关闭,中间除了fwrite之外还有fseek和fteel操作,当时将目标锁定在这两个标准函数上。(记:在一次
2021-01-05 16:21:36
2719
1
原创 glibc大量小内存的释放
之前在项目中,发现内存在某些情况下飙升,然后无法降下来的情况,记录一下解决过程。大概情况就是:程序在运行中需要不停申请小块内存用来接收传输过来的视频数据,将数据保存到磁盘后然后释放掉free掉,正常情况下,总的占用内存维持在一个合理的水平,但是如果磁盘出现写入性能下降的情况时,造成接收的数据堆积,此时需要去申请更多的内存来缓存数据,此时进程总的占用内存变显著增大,这种情况也是合理的。按道理,如果接下来磁盘写入性能恢复正常,缓存的数据减少,大部分申请的内存释放,此时进程占用的总内存应该恢复到正常水平。但是
2020-12-31 17:30:32
5145
2
原创 lib和dll生成和使用
简介首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直接包含在最终生成的 EXE 文件中了。在vs中新建生成静态库的工程,编译生成成功后,只产生一个.lib文件动态库:动态链接库是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动
2020-12-28 15:52:15
518
原创 std::condition_variable::wait()
std::condition_variable::wait()使用记录:std::condition_variable::wait()有两个重载函数:unconditional (1) void wait (unique_lock<mutex>& lck); predicate (2) template <class Predicate> void wait (unique_lock<mutex>&
2020-12-01 16:37:06
12732
4
原创 Nginx+GridFS存储图片方案----环境搭建及踩坑记录
目录1、安装依赖 2、下载安装包mongodb下载安装:启动mongdb:mongofiles上传文件:nginx+gridfs源码下载:编译安装nginx3、配置nginx-gridfs4、通过url查看图片附:安装包:环境搭建:网上有很多的相关的资料,在查了一些资料后,就开始动手撸了。1、安装依赖a)yum install gcc-c++b)yum install -y pcre pcre-develc)yum ...
2020-10-30 23:17:36
952
2
原创 Centos 6 iscsi安装及配置
服务端:1.安装iscsi target服务:若服务器可以联网,则用yum安装最方便:yum install scsi-target-utils若没有网络,则需要使用rpm包来安装,rpm包可从此处下载:scsi-target-utils-1.0.24-18.el6.x86_64下载[root@node03 ~]# rpm -ivhscsi-target-utils-1.0.24-18.el6.x86_642.启动服务[root@node03 ~]# /etc/init.d/.
2020-10-21 16:42:29
1792
原创 文件结束符EOF与空字符‘\0‘
《C程序设计语言》中首次提到EOF是在下面这段代码: #include <stdio.h> /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); } }这段代码作用从stdin获取一个字符输出到stdout。一般看
2020-09-11 16:39:30
3163
原创 轻量级日志库zlog简易使用方法
源码及使用方法作者都有详细介绍:https://github.com/HardySimpson/zlog本文对自己的首次使用zlog的过程作下简单记录。1.下载:https://github.com/HardySimpson/zlog/releases2.安装:$ tar -zxvf zlog-latest-stable.tar.gz$ cd zlog-latest-stable/$ make $ sudo make install或者$ make PREFIX=/usr/lo...
2020-08-20 15:07:52
1071
原创 vs code离线配置Remote SSH远程开发
在跨平台的开发中,经常需要在windows下编写代码,再通过各种ftp工具或者git将代码同步到linux下再编译,Visual Studio Code推出了Remote SSH插件,可以直接在Visual Studio Code里修改代码无缝同步到linux开发环境。在线安装: 在有网络的情况下,打开vscode然后搜索Remote SSH插件安装,安装后配置好配置文件,点击连接,剩下的就是在提示输入密码时输入密码即可。离线安装: 然而许多企业的网络环...
2020-06-03 09:54:30
9811
11
原创 parted命令进行磁盘分区
1.使用lsblk 查看可用的磁盘可以看到有sdb sdc两个物理盘还未挂载2.使用parted命令分区(以sdb为例)按需要把sdb分成4个逻辑分区新建磁盘标签类型为gpt出现提示,输入yes开始分区:(1)输入mkpart回车,提示输入分区名称,按习惯可命名为sdb1(后面依次sdb2、sdb3)(2)输入文件系统类型:ext4关于文件系统类型常用的有xfs、ext3、ext4等,这里以ext4为例。(3)输入起始位置Start?:0 //第一个分..
2020-05-21 09:21:43
11541
1
原创 linux运维之批量升级
linux运维之批量升级经常给各办事处客户现场打补丁或升级,面对十几上百台服务器,人工一台台替换肯定行不通,只能批量升级,将过程记录下来。批量升级要解决的两个主要问题就是:1.将补丁文件(安装包)上传到各服务器;2.各服务器对收到的补丁文件自动进行升级。下面详解各步骤:1.批量上传文件batch.sh关键词sshpass while#!/bin/shlist_file=host.listsrc_file=$1dest_file=/rootcat $list_..
2020-05-20 18:00:26
1676
1
转载 setsockopt用法详解
转载自http://www.cnblogs.com/yizhizaiYI/articles/5236221.html方便以后自己查阅1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const
2017-03-06 12:44:18
330
mongodb-linux-x86_64-rhel70-3.0.15.tgz
2020-10-30
scsi-target-utils-1.0.24-18.el6.x86_64.rpm
2020-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人