自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 recv非阻塞接收的处理

recv非阻塞接收,recv返回的ret通常有3种情况,ret = 0 / ret < 0(即-1) /ret > 0ret > 0 是正常接收到字节数关键是ret == 0 和 ret == -1这两种情况要不要分开写还是统一考虑需要说明的是,当ret = -1时,说明发生了错误,错误号保存在errno中,通过errno可以分析出错误原因。但是,对于errno为EAGAIN (EWOULDBLOCK) 和 EINTR 的这两个情况,是不需要处理的,继续调用recv。除了这两种情况的

2021-05-19 13:42:44 4339

原创 {()}的用法

@TOCkernel 经常出现的({})本文跟编译原理的语法分析有关,需要清楚语句和表达式的两个基本概念Statements 语句The statements of a C program control the flow of program execution.包括Expression Statement:x = ( y + 3 ); /* x is assigned the value of y + 3 */x++;

2021-05-12 08:34:01 22750

原创 linux系统限制

linux系统限制一次偶然的共享内存打开失败openulimitiniparser一次偶然的共享内存打开失败int shm_fd;shm_fd = shm_open(shm_name, O_CREAT | O_RDWR | O_LARGEFILE, S_IWUSR | S_IRUSR);if(shm_fd == -1){ fprintf(stderr, "open shm failed errno[%d] [%s]\n", errno, strerror(errno)); ret

2021-01-07 13:55:16 304 1

原创 c++使用遇到的问题

1. 不能使用enum作为unordered_map键值2. c++ 不能函数调用传递固定大小数组3. gdb 时libso等看不到详细信息

2020-12-16 23:47:37 138

原创 不能使用枚举类作为unordered_map键

I use a functor object to calculate hash of enum class:struct EnumClassHash{ template <typename T> std::size_t operator()(T t) const { return static_cast<std::size_t>(t); }};Now you can use it as 3rd template-par

2020-12-16 23:44:57 798

原创 SCL 使用

scl --list / scl -lscl --help / scl -hscl enable <scl-package-name> <command>scl enable devtoolset-4 bashexit

2020-10-14 01:38:29 666

原创 C++ map和set与数据库联系

实际上,c++的map可以看是数据库,其中map的key是主键,value就是主键对应的那条记录的集合。主键是唯一的

2020-08-09 00:04:36 129

原创 提高深入理解

1. 先后台,再汇编

2020-08-03 22:35:45 68

原创 gcc编译错误 ‘xxx’未声明

看一下报错的头文件的include 顺序通常是顺序没有拍好,不行你声明一个变量试试。如果你定义一个变量,就会报重定义错误,说明确实是没有前向声明的问题

2020-07-17 14:18:20 666

转载 SQL 的 group by和聚合函数(很好理解版)

为什么不能够select * from Table group by id,为什么select后面一定不能是*,而只能是某一个列或者某个列的聚合函数,group by 多个字段可以怎么去很好的理解呢?===正文开始===先来看下表1,表名为test:表一 testid name number 1 aa 2 2 aa 3 3 b...

2020-05-08 17:18:45 181

原创 Linux下阻塞和非阻塞读写

Linux下阻塞和非阻塞读写阻塞读非阻塞读阻塞读ssize_t ret;vhile (len != 0 && (ret = read(fd, buf, len))!=0) { if (ret = -1) { if (errno == EINTR) continue; perror("read"); ...

2020-04-13 14:01:02 979

原创 C++ 未初始化的类成员变量

未初始化的类成员变量在gcc 4.8.5版本如果还有未初始化的类成员变量,其值不确定

2020-03-31 09:42:46 5849 1

原创 深入理解c格式化输出

格式化输出考察了不仅考察各种数据类型的转换以及你对内存的理解首先,要很清楚各个不同数据类型的大小,这个做面向对象的基础#include <stdio.h>printf("size of int:\t\t[%d]\n", sizeof(int));printf("size of long:\t\t[%d]\n", sizeof(long));printf("size o...

2020-03-27 15:41:39 842

原创 FreeSSHD的配置

内含多坑项目需求:定时将内网的Linux客户端文件定时上传到公网阿里云Windows服务器使用工具:FreeSSHD具体过程:1、FreeSSHD下载地址http://www.freesshd.com/?ctt=download2、确保阿里云开放了22端口,如果不用22端口,检查一下其他端口是否打开,使用telnet命令telnet 39.xxx.xxx.xxx po...

2020-03-25 12:34:56 3373

原创 CMake 致命错误:xxx.h 没有那个文件

以为是CMake什么用法错误了,原来是头文件名写错了,检查xxx.h对不对

2020-03-23 22:27:09 1576

原创 左值/右值与应用

关于什么是左值、什么是右值,可以参考光放定义https://en.cppreference.com/w/cpp/language/value_category当第一次接触时,确实搞不清楚。下面将对左值和右值的用法进行剖析,反向理解什么是左值、右值。程序的数据一般放在内存,那么需要用到的时候,直接取用。例如int a = 10;当我们需要使用a这个名字所代表的内存值,通过a就可...

2020-03-22 18:50:44 164

原创 const 变量

本文根据的是msvc程序运行的结果,代码如下#include <iostream>const static int a = 99;int ab = 11;class MyClass{public: MyClass(); ~MyClass(); const int a;private:};MyClass::MyClass():a(9){}...

2020-03-22 17:47:05 731

原创 [Shell命令] tar -cvf -xvf 打包解包文件夹

压缩文件夹 xiaoq,命名为xiaoq.tartar -cvf xiaoq.tar xiaoq/ 解压文件夹tar -xvf xiaoq.tar

2020-02-21 09:48:43 6192

原创 C++细节1:无符号扩展和符号扩展

针对无符号整型和有符号整型int 最高位是0的话,全部补充为0。最高位是1的话,全部补充为1unsigned 由低位扩展到高位 全部补充为0sprintf(s, fmt, ...)例如short si = -1;sprintf(s, "%08X", si);会进行符号扩展,产生FFFF FFFFsprintf(s, "%08X", (unsigned short)s...

2020-01-21 13:15:02 715

原创 GDB 项目调试 常用

某一项目下代码文件的打断点b xxx.cpp:行号查看断点信息info breakpoints清除所有断点clear查看断点上下文信息list查看变量p 变量delete #删除所有breakpoints,watchpoints和catchpointsdelete bnum #删除断点号为bnum的断点p m_...

2020-01-17 10:02:10 305

原创 IP配置

https://blog.csdn.net/eighteenxu/article/details/80021610

2019-12-20 15:23:13 111

原创 日志

感觉这周很忙很忙,主要是因为做一个网络这一块部署需要做一个rawsocket,说是绑定某个网卡获取数据,类似tcpdump -i eth2020-01-201、处理16、17号的日志FQR问题。发现是登录失败,原来的代码在connection后订阅所有的合约,导致又许多错误日志。现在处理结果是只有登录成功才订阅所有需要订阅的合约2、无法下单。原因是使用了spin锁,但是...

2019-12-19 23:18:49 75

原创 git的操作

查看远程仓库git remote -v重置远程仓git remote set-url origin http://jcode.cbpmgt.com/git/<your rep name>.git/修改已提交的commentgitcommit--amend查看已提交暂存区的文件差异git diff --staged回滚暂存区的...

2019-12-19 15:43:59 60

原创 gcc/g++编译的那点事

用多了IDE,有时候总是会忘记编译的命令,特此记录下来gccgcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lword-I 是头文件目录-L 是.c/.cpp/.so等目录-l 是库名,上面的lword对应libword.so,表示在lib目录下寻找libword.so文件(如果gcc编译选项加入...

2019-12-17 19:23:33 98

原创 #pragma用法大全

https://blog.csdn.net/qq_27870421/article/details/99305970不同编译器https://www.zhihu.com/question/23789676?sort=createdLLVMhttps://www.jianshu.com/p/1367dad95445MSVC编译器对应的VS_MSC_VER是微软公司...

2019-12-05 15:48:34 124

原创 定时器

定时器并不是一种并发[线程],而是一种延迟,是一种异步,由当前线程执行,即如果定时器任务中有阻塞,会阻塞主线程。alarmgettimer/settimer共同点:使用信号;不同点:settimer可以自动重启和有三个独有模式,并且时间精度不仅仅只有秒。#include <sys/time.h>int settimer (int which, ...

2019-12-01 17:00:15 178

原创 基于epoll的并发服务器编程

这一篇文章主要是理清服务器和客户端的建立通信的流程,整个通信是在网络层(即ip协议以及其上的传输层和应用层)。不明白的话需要先了解网络7层模型、对应的报文格式和不同层的封装。下面主要围绕图11-14讲述并深入探讨服务器socket#include <sys/types.h>#include <sys/socket.h>int socket(int...

2019-12-01 15:24:33 211

原创 C/C++ time处理及其相互转换

C 的时间time_point时间单位默认是秒,绝对时间获取的时间点都是相对新纪元。相关概念:新纪元:1970年1月1日00:00:00 UTC(GMT)#include <time.h>typedef long time_t //时间点,秒单位time_t time(time_t *t) //返回自从新纪元以来流逝的秒数,将当前时间点写入到t/****...

2019-12-01 01:25:41 3976

原创 CMAKE

学习CMAKE的语法、用法即可FATAL_ERROR 是错误关键字WARNING 是警告关键字STATUSmessage([<mode>] "message to display" ...)MESSAGE(STATUS "Project Directory: ${PROJECT_SOURCE_DIR}")-- Project Directory: /home...

2019-11-28 16:27:26 68

原创 计算机的快速 二进制运算

对一个数判断是否为2的幂size & (size - 1) true说明不是2的幂,false说明是2的幂。2的幂有一个特点,就是只有一个1,其他都是0.而2的幂-1就会除了高位和它本身那位为0,其他的都为1.k对size取模运算(取余运算)都可以转为 k跟size做与运算。kfifo->in % kfifo->size 可以转化为kfifo->in &am...

2019-11-22 14:16:02 614

原创 std::thread的join和detach

C++中的thread对象通常来说表达了执行的线程(thread of execution),这是一个OS或者平台的概念。thread一旦创建,就开始执行,并且与创建它的线程有一定的关系。thread创建后,需要在调用线程中需要指明是join还是detach,否则会发生错误。1、当thread::join()函数被调用后,调用它的线程会被block,直到线程的执行被完成。基本上,这是一...

2019-11-21 12:19:54 4596

原创 ofstream基本用法

来源:https://zh.cppreference.com/w/cpp/io/basic_ofstream/basic_ofstream#include <fstream>#include <utility>#include <string>int main(){ std::ofstream f0; std::ofstr...

2019-11-20 23:50:58 2895

原创 CPU缓存

利用了局限性原理由于数据的局限性,CPU往往需要在短时间内重复多次读取数据,内存的运行频率自然是远远跟不上CPU的处理速度的,怎么办呢?缓存的重要性就凸显出来了,CPU可以避开内存在缓存里读取到想要的数据,称之为命中(hit)。L1的运行速度很快,但是它的数据容量很小,CPU能在L1里命中的概率大概在80%左右——日常使用的情况下;L2、L3的机制也类似如此,这样一来,CPU需要在内...

2019-11-20 13:23:05 179

原创 TBB简介和一个简单的示例

TBB组成TBB里的内容大致可以分为以下几类:通用并行算法这是TBB里最主要的一大部分,比如示例里的parallel_for就是这部分的一个算法TBB提供了parallel_for,parallel_while,parallel_reduce等算法,应用于不同的并行算法场景并发容器这是对常见容器的线程安全版本的实现,同时考虑到performance的要求,提供了细粒度的锁机制,...

2019-11-20 09:18:06 1644

原创 Windows CreateEvent函数在多线程中使用及实例

HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName);lpEventAttributes:指向SECURITY_ATTRIBUTES结构体,此结构体决定函数的返回句柄是否可以让子进程继承。如果这个参数为NU...

2019-11-19 19:33:43 379

原创 C++的回调技术 std::bind+std::function

参考自《Linux多线程服务端编程》以及muduo源码,对其中的一些实现细节有着十分深刻的印象,尤其是使用std::bind和std::function的回调技术。可以说,这两个大杀器简直就是现代C++的“任督二脉”,甚至可以解决继承时的虚函数指代不清的问题。在此详细叙述使用std::bind和std::function在C++对象之间的用法,用以配合解决事件驱动的编程模型。本文组成:1....

2019-11-19 15:45:56 1057

原创 TBB之concurrent_hash_map

Intel TBB 提供高并发的容器类,Windows或者Linux线程能使用这些容器类或者和基于task编程相结合(TBB)。一个并发容器允许多线程同时对容器访问和更改条例,典型的C++STL容器类不允许 并发更新,尝试并行更改他们引起恶化容器。STL容器能使用互斥锁来包装,目的让他们安全访问,通过只让一个线程同时操作一个容器,但是这种方式消除了并行,限制了并行提速。Intel TBB提...

2019-11-19 10:37:24 1945

转载 C++中atomic 数据类型操作

所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。在以往的C++标准中并没有对原子操作进行规定,我们往往是使用汇编语言,或者是借助第三方的线程...

2019-11-18 19:04:37 1901

原创 netstat输出内容详解

netstat 输出内容详解1.列出所有 tcp与udp 端口netstat -anputActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program na...

2019-11-08 12:15:13 654

原创 大行其道的框架

作为一名互联网从业者,需要很清楚的认识到在中国,框架大行其道。毫无疑问计算机系统的底层是由低级语言编写的,C。当然,也有相应的标准库,也就是框架。但是在今天硬件成本越来越低廉、开发速度和成本越来越高,使用简单便捷的高级语言对业务的重要性日益显现,包括随之而来的框架。说的也就使框架怎么变,底层还是那样的底层。需要正确一点,中国目前做底层,就是Linux内核的少之又少、做核心业务的也屈指可数。...

2019-11-07 19:48:15 80

空空如也

空空如也

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

TA关注的人

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