C-C++
文章平均质量分 70
test1280
这个作者很懒,什么都没留下…
展开
-
Linux:生成core的几种方式
Linux core 文件 核心转储 几种可能原因 样例 demo原创 2021-01-13 15:27:46 · 5886 阅读 · 0 评论 -
openssl: 兼容openssl1.1.0及旧版本
openssl 兼容 1.1.0+ 和 旧版本openssl 兼容 1.1.0 1.0.2openssl 兼容性原创 2020-06-06 23:20:06 · 6465 阅读 · 0 评论 -
openssl: error: storage size of ‘ctx’ isn’t known
openssl 兼容openssl error: storage size of ‘ctx’ isn’t known原创 2020-06-06 23:09:09 · 1969 阅读 · 1 评论 -
openssl:获取openssl版本号
openssl获取版本号openssl 1.1.0 获取版本号openssl 废弃 SSLeay_version原创 2020-06-06 22:20:23 · 8354 阅读 · 0 评论 -
openssl: HMAC算法实现样例
openssl c/c++ HMACHMAC-SHA1HMAC-SHA224HMAC-SHA256HMAC-SHA384HMAC-SHA512HMAC-MD5原创 2020-06-06 20:35:09 · 3285 阅读 · 0 评论 -
openssl:undefined reference to symbol 'EVP_EncryptUpdate@@libcrypto.so.10'
openssl:undefined reference to symbol ‘EVP_EncryptUpdate@@libcrypto.so.10’查看 openssl 版本:$ openssl version -aOpenSSL 1.0.2k-fips 26 Jan 2017built on: reproducible build, date unspecifiedplatform:...原创 2020-04-01 20:59:07 · 7672 阅读 · 0 评论 -
加解密:基于 openssl 实现 des ede3 cbc pkcs#5 算法
加解密:基于 openssl 实现 des ede3 cbc pkcs#5 算法Code:#include <stdio.h>#include <stdlib.h>#include <openssl/evp.h>#include <openssl/x509.h>void encrypt_des_ede_cbc_pkcs( unsign...原创 2020-04-01 20:37:18 · 2212 阅读 · 0 评论 -
UDP Socket接收缓冲区与netstat Recv-Q
UDP Socket接收缓冲区与netstat Recv-Q我们通常使用netstat查看网络的诸多状态,其中包含Send-Q与Recv-Q。我们知道:每一个Socket对象在系统中都被映射为一个Socket文件; 每一个Socket对象在系统中都关联有两个内核缓冲区:一个接收缓冲区(读缓冲区),一个发送缓冲区(写缓冲区);Send-Q:指代的是内核中Socket对应的发送缓冲区...原创 2018-03-29 21:10:48 · 9250 阅读 · 0 评论 -
UDP:Socket缓冲区大小修改与系统设置
UDP:Socket缓冲区大小修改与系统设置每个Socket在Linux中都映射为一个文件,并与内核中两个缓冲区(读缓冲区、写缓冲区)相关联。或者说,每个Socket拥有两个内核缓冲区。有时,我们需要修改缓冲区的内核限制的最大值,使其符合我们的实际需求。一、系统设置[jiang@localhost ~]$ uname -aLinux localhost.localdo...原创 2018-04-01 12:07:38 · 26586 阅读 · 7 评论 -
C:判断主机字节序(大端BE小端LE)
C:判断主机字节序(大端BE小端LE)通过简单的C程序可以判断当前主机字节序是大端(Big-Endian:BE)或小端(Little Endian:LE)。Code:#include <stdio.h>#include <stdlib.h>int main(){ union { short s; cha...原创 2018-04-08 20:57:43 · 2543 阅读 · 0 评论 -
C:位运算之 左移运算和右移运算
C:位运算之 左移运算(<<)和右移运算(>>)在C中,位运算包含两种移位运算:左移运算:<<右移运算:>>左右位移运算,在数值为无符号和有符号情况下具有不同行为。有符号左右位移运算#include <stdio.h>#include <stdlib.h>#include <unist...原创 2018-04-08 21:53:51 · 7141 阅读 · 0 评论 -
UDP数据包接收逻辑的优化修改以及对性能的影响
UDP数据包接收逻辑的优化修改以及对性能的影响#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <netdb.h>#include <signal....原创 2018-04-01 17:28:00 · 4130 阅读 · 0 评论 -
压力测试模拟程序(C实现)
压力测试模拟程序(C实现)最近在做一个功能模块,目前功能上已经实现,但是性能暂时没有做过测试。我的功能主要是接收udp消息,并将udp消息进行封装处理,发送到后端处理模块进行处理。简单写一个小的udp客户端程序,去模拟压力测试。#include <stdio.h>#include <stdlib.h>#include <unistd.h>#...原创 2018-03-28 20:44:34 · 3549 阅读 · 0 评论 -
IPv6:getaddrinfo返回地址信息(addrinfo)顺序问题
IPv6:getaddrinfo返回地址信息(addrinfo)顺序问题#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>int getaddrinfo(const char *node, const char *service, const ...原创 2018-03-28 21:47:51 · 3349 阅读 · 0 评论 -
TCP+IPv4 客户端 & 服务端 程序简例
TCP+IPv4 客户端 & 服务端 程序简例本文给出基于IPv4的TCP客户端以及服务端程序样例。服务端:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#incl...原创 2018-04-06 17:07:19 · 931 阅读 · 0 评论 -
Postfix:转发邮件配置启用SSL/TLS
Postfix:转发邮件配置启用SSL/TLSPostfix Version:[root@localhost postfix]# postconf -d | grep mail_versionmail_version = 2.6.6Postfix在收到一封邮件后,会将其通过MTA进行转发到指定邮箱服务器。默认情况下,Postfix在转发邮件时并不适用SSL/TLS,而是传统的...原创 2018-03-05 22:45:07 · 19091 阅读 · 1 评论 -
编解码:Base64编解码
编解码:Base64编解码编解码:十六进制编解码中提到,编解码本质上是以不同的数据形式来展示“信息”,可以用二进制来表示,可以用十六进制来表示。二进制的数据,在计算机中通常是不可读、不可打印的。那有没有一种方式,可以让二进制的数据变成“可读可打印”的?方法有很多,最常见的是十六进制编解码和Base64编解码。十六进制编解码之前已介绍过,本文介绍Base64编解码。 百度...原创 2018-03-03 17:56:21 · 751 阅读 · 0 评论 -
C/C++:多进程使用dlopen、dlsym、dlclose装载动态库
C/C++:多进程使用dlopen、dlsym、dlclose装载动态库原创 2017-10-21 21:56:42 · 7647 阅读 · 0 评论 -
Linux:静态函数库(.a)与动态函数库(.so)
Linux:静态函数库(.a)与动态函数库(.so)原创 2017-10-16 20:10:25 · 1847 阅读 · 1 评论 -
Linux:多线程不同步导致错误示例
Linux:多线程不同步导致错误示例原创 2017-10-16 21:36:34 · 677 阅读 · 0 评论 -
C/C++:交换两个变量的值可能存在的问题
C/C++:交换两个变量的值可能存在的问题原创 2017-11-13 13:01:57 · 659 阅读 · 0 评论 -
C/C++:pthread_cond_timedwait阻塞失败(立刻超时返回)
C/C++:pthread_cond_timedwait阻塞失败(立刻超时返回)原创 2017-10-26 21:50:50 · 6230 阅读 · 6 评论 -
C/C++:libcurl smtp 邮件客户端(MUA)
C/C++:libcurl smtp 邮件客户端(MUA)MUAMTASMTPSMTP协议SMTP第三方库libcurlcurl原创 2017-12-17 11:57:15 · 4415 阅读 · 0 评论 -
libcurl:Protocol "smtps" not supported or disabled in libcurl
libcurl:Protocol “smtps” not supported or disabled in libcurl在使用libcurl来作为MUA时,开启DEBUG模式,使用smtps协议,在运行时报错:libcurl:Protocol “smtps” not supported or disabled in libcurl原因在于,安装libcurl时没有带着openssl。...原创 2018-02-26 22:15:03 · 1415 阅读 · 0 评论 -
Redis:使用SET命令实现简单的高可用(HA)
Redis:基于Redis实现锁使用SET命令实现简单的高可用(HA)我们的需求:假设有多个相同的进程实例分别在多个主机上运行,但是逻辑上同一时刻至多只能有一个进程实例在“工作”。只有当在“工作”的那个进程实例由于某种异常原因宕掉,其余的进程实例进行争抢令牌。争抢到令牌的那个进程实例,接替之前异常的那个进程实例,继续“工作”。即,一个进程实例挂了,有别的进程实例能知道,并且及时接管异常进程实例的工...原创 2018-03-15 21:45:53 · 2523 阅读 · 0 评论 -
编解码:十六进制编解码
编解码:十六进制编解码信息有多种表现形式:二进制、十进制、十六进制、字符串…在计算机中,信息是以二进制的形式来表现。可以人为定义:0就是假,1就是真,等等。所谓编解码,是将一种数据以另一种形式来表现,若正向变换称为编码,则其逆向过程则为解码。计算机中,数据的本质是一串二进制0和1的字符串。例如,二进制字符串0a代表十进制字符串10,十进制字符串255以二进制的形式表现则为0...原创 2018-03-03 16:13:29 · 14012 阅读 · 1 评论 -
TCP+IPv6 客户端 & 服务端 程序简例
TCP+IPv6 客户端 & 服务端 程序简例本文给出基于IPv6的TCP客户端以及服务端程序样例。可以参考《TCP+IPv4 客户端 & 服务端 程序简例》进行对比。服务端:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errn...原创 2018-04-06 17:28:15 · 3176 阅读 · 0 评论 -
C/C++:文件描述符与进程之间的关系
C/C++:文件描述符与进程之间的关系在Unix中,文件在进程中通常抽象化为文件描述符(File Descriptor)。文件描述符是一个非负整数,可以理解为一个句柄。我们可以通过open一个磁盘文件,获取一个文件描述符,后续我们对这个文件的所有操作,都要通过这个描述符进行操作。我们思考:1.文件描述符如果脱离了进程,是否有意义?2.文件描述符在内核中是如何表示的?3....原创 2018-05-12 17:27:11 · 4237 阅读 · 2 评论 -
C/C++:TCP服务压测客户端connect报错(Cannot assign requested address)
C/C++:TCP服务压测客户端connect报错(Cannot assign requested address)最近我们对自己的服务器进行了一次压测,在测试中出现客户端在调用connect时报错:Cannot assign requested address(errno=99)原因在于:内核无法为客户端分配临时端口资源,所有连接都处于不可复用的状态。一、什么是“连接”?...原创 2018-05-12 22:08:13 · 6955 阅读 · 0 评论 -
C/C++:gethostbyname 同主机同域名有时阻塞有时立刻错误返回
C/C++:gethostbyname 同主机同域名有时阻塞有时立刻错误返回最近项目中遇到一个很奇特的问题:在同一主机上,gethostbyname 调用,对同一域名进行查询出现两种情况:1.阻塞一段时间,然后失败返回;2.不阻塞,立刻失败返回。虽然都是失败,但为什么有时候会阻塞,有时候立刻返回失败?我们知道,gethostbyname 是可能阻塞向域名服务器发送 DNS QUERY ...原创 2018-10-06 10:54:42 · 1477 阅读 · 0 评论 -
Linux:获取线程的PID(TID、LWP)的几种方式
Linux:获取线程的PID(TID、LWP)的几种方式在 Linux C/C++ 中通常是通过 pthread 库进行线程级别的操作。在 pthread 库中有函数:pthread_t pthread_self(void);它返回一个 pthread_t 类型的变量,指代的是调用 pthread_self 函数的线程的 “ID”。怎么理解这个“ID”呢?这个“ID”是 pthrea...原创 2019-02-27 19:44:31 · 19229 阅读 · 2 评论 -
Linux:获取、设置进程(线程)的CPU亲和性
Linux:设置进程(线程)的CPU亲和性一、进程的CPU亲和性的获取(get)或者设置(set)int sched_setaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask);int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask);demo:主线...原创 2019-03-05 21:41:39 · 4315 阅读 · 0 评论 -
C:strerror(或 inet_ntoa) 返回值默认整型截断导致进程核心转储 core dumped
C:strerror(或 inet_ntoa) 返回值默认整型截断导致进程核心转储 core dumped测试环境:[test1280@localhost ~]$ uname -aLinux localhost.localdomain 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 ...原创 2019-05-07 18:02:25 · 529 阅读 · 0 评论 -
C/C++:Linux select 1024 文件描述符限制
C/C++:Linux select 1024 文件描述符限制通常来说,Linux下select调用要求文件描述符的值小于1024,也就是说,fd set中的每个文件描述符的值域为:[0,1023]。如果超过,Linux下select调用会发生什么?环境:[test1280@localhost ~]$ uname -aLinux localhost.localdomain 3.10.0-...原创 2019-07-02 13:58:30 · 2288 阅读 · 0 评论 -
Linux:调用gethostname返回ENAMETOOLONG(File name too long)
Linux:调用gethostname返回ENAMETOOLONG(File name too long)hostname: name too long边界值引发的异常原创 2019-08-21 22:10:23 · 2362 阅读 · 0 评论 -
C++:map自定义键比较函数
1.stl map自定义比较函数;2.map的键类型是指针并设置比较函数踩过的坑;原创 2019-09-13 17:53:01 · 10970 阅读 · 0 评论 -
C++:map.insert插入重复键(已存在键)将忽略,而非值覆盖
C++:map.insert插入重复键(已存在键)将忽略,而非值覆盖测试代码:#include <iostream>#include <map>using namespace std;int main() { map<int, int> mymap; int i = 0; for (; i < 10; i++) { ...原创 2019-10-08 21:14:52 · 8995 阅读 · 1 评论 -
C++:STL map 的 find 方法与 operator[] 运算符区别
C++:STL map 的 find 函数与 [] 运算符区别map::find 是 Get iterator to element。map::operator[] 是 Access element。最大的区别是当待查找的 KEY 不存在时:1.map::find 返回一个空迭代器(map::end)。2.map::operator[] 将用 VALUE 默认的构造函数创建一个...原创 2018-09-10 22:01:18 · 3197 阅读 · 0 评论 -
摘要算法:AIX 5.3 使用 openssl 实现 md5 等
摘要算法:AIX 5.3 使用 openssl 实现 md5 等环境:$ uname -aAIX aix68112 3 5 00F7CAA94C00查看 openssl 库:$ ll /usr/lib/*ssl*lrwxrwxrwx 1 root system 41 Jul 24 2017 /usr/lib/libgsk7ssl_64...原创 2018-08-30 09:34:17 · 1083 阅读 · 0 评论 -
C/C++:TCP bind error:Address already in use
C/C++:Address already in use SO_REUSEADDR原创 2021-01-13 19:05:03 · 4096 阅读 · 1 评论