
笔记
你飞哥也编程了
这个作者很懒,什么都没留下…
展开
-
字节序转换的问题详细讲解:将unsigned int val字节序逆转
例如:0xffffffff 其中可以分为4个部分,ff ff ff ff ff ,每两个f为一个字节。我们只需将16进制下的 低二位 左移到 高二位,那么只需移动 32-8 = 24位。在16进制下,两位代表一个字节(二进制下 8位 = 2^8 = 16^2)1)字节序概念:指大于一个字节类型的数据在内存中的存储顺序。小端存储:低字节放在内存中的低地址端,高字节放在高地址端。原创 2022-10-30 13:15:49 · 742 阅读 · 0 评论 -
如何安装cmake
sudo ln -s 解压路径/cmake-3.16.5-Linux-x86_64/bin/cmake /usr/bin/cmake。注意:此版本的安装包中的文件是已经编译后的直接创建软连接即可。3.在linux下解压安装包。2.根据需要下载对应cmake版本。注意:软连接必须是绝对路径。原创 2022-10-10 11:06:48 · 3648 阅读 · 0 评论 -
使用read()函数遇到的坑
出现的问题:只要在包含read()函数的循环中,有printf()且printf中输出无换行符\n,则read()函数会一直阻塞,直到输入quit跳出循环,终端会一次性输出之前所有要输出的数据。解决办法:read()函数所在的while循环printf任意一处加上\n,即可解决。功能:实现pipe父子通信。原创 2022-10-09 17:22:09 · 735 阅读 · 0 评论 -
常见面试题
【代码】常见面试题。原创 2022-09-27 14:17:37 · 124 阅读 · 0 评论 -
C实现两个json的合并
【代码】C实现两个json的合并。原创 2022-09-26 16:13:34 · 1461 阅读 · 0 评论 -
nginx配置多个CA证书
问题背景:在实际的C-S访问中,有需要多个客户端双向认证的情况。原创 2022-09-23 14:57:25 · 4038 阅读 · 0 评论 -
nginx实现双向认证
如果手里面只有通过正规途径申请下来的证书(而不是上面自签证做法), 得到的证书如下面所示, 这里只有服务端证书而没有服务端和根证书, 所以仍需要我们以自签证的方式生成根证书以及客户端证书。配置的主要内容是配置了服务器端证书的公钥私钥以及根证书的公钥, 并且ssl_verify_client 参数设置为 on。如果客户端证书不是由根证书直接颁发的,配置中还需要加一个配置:ssl_verify_depth 1;server.crt:有效期十年的服务器端公钥证书,使用根证书和服务器端私钥文件一起生成。原创 2022-09-20 18:14:31 · 5107 阅读 · 0 评论 -
密钥、证书原理与创建
公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),将其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。原创 2022-09-20 17:37:12 · 4200 阅读 · 0 评论 -
用shell实现某行字符串的替换
将/SE/test.conf文件中含有#__TEST__的行替换为http://127.0.0.1:1111;2.实现:test_conf_contrl.sh。原创 2022-09-14 17:25:15 · 2312 阅读 · 0 评论 -
linux下如何对某个端口抓包
对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo),一旦找到第一个符合条件的接口,搜寻马上结束。原创 2022-09-14 10:53:08 · 2914 阅读 · 0 评论 -
linux下实现socket连接示例(server端)
【代码】linux下实现socket连接示例。原创 2022-09-12 21:17:20 · 1530 阅读 · 0 评论 -
nginx实现subrequest子请求
【代码】nginx实现subrequest子请求。原创 2022-09-13 10:35:17 · 778 阅读 · 0 评论 -
函数指针示例
【代码】函数指针示例。原创 2022-09-08 17:44:20 · 860 阅读 · 0 评论 -
C语言回调函数的简单使用
【代码】C语言回调函数的简单使用。原创 2022-07-15 13:59:24 · 261 阅读 · 0 评论 -
如何在linux下查看端口对应的进程ID
1.命令netstat -anpo | grep 端口号/程序名。原创 2022-09-06 22:13:48 · 1491 阅读 · 0 评论 -
svn上传so文件报错的问题
find / -name .subversion #查找svn配置文件路径。问题原因:由于so文件为二进制文件默认忽略,需要修改配置才可以上传。cd 找到的.subversion 路径。原创 2022-08-23 18:38:55 · 750 阅读 · 0 评论 -
生成动态库并使用的方法
---------------此时已完成test程序的编译,但是无法执行, 输入ldd test 会发现,并没有链接到自己生成的method库,这是因为执行的时候系统会默认加载/usr/local/lib路径下的动态库。gcc test.c -o test -L./ -lmethod -lcrypto # -L./ 将文件下的路径添加到系统链接的库路径,crypto对应openssl的库。方式1:vim /etc/ld.so.conf 将自己的库路径写在此文件中。原创 2022-08-23 17:12:29 · 639 阅读 · 0 评论 -
c++替换字符的方法
输出:2020-02-02 10:50:10。本文将时间中的+号替换为空格。原创 2022-08-12 16:40:57 · 1186 阅读 · 0 评论 -
redis如何存储带空格的数据
问题背景:redis存带空格的数据时会一条数据理解为两条。解决办法:在数据的两边加转义。原创 2022-08-12 15:15:40 · 788 阅读 · 0 评论 -
centos7安装后的基础配置
root@bogon ~]# /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT #开放防火墙。#下载安装-------------------------------------------------------------------#启动、配置mysql--------------------------------------------------------1.ip addr 查看网络(一般网卡默认都没开)...原创 2022-08-06 21:07:19 · 950 阅读 · 0 评论 -
mysql的mysql_store_result函数调用问题(C的API)
向mysql查询数据时,不管能否查询到数据mysql_real_query()函数都会返回0,所以通过mysql_real_query()无法得知是否查询成功,我的解决办法是使用mysql_store_result()来判定是否查询到数据。注意:strlen(res->data) < 2 主要是这个判断产生的作用,返回的数据在res->data,但是实际操作的时候,如果没有查询到数据res->data也不为空,判断是否小于2即可。这和是否的得到数据完全无关。有的说返回值是0代表成功,非零失败。......原创 2022-08-03 18:49:38 · 3089 阅读 · 0 评论 -
安装Vmware虚拟机无法连接到本机的问题
然后进入到命令行模式中发现此网卡对应的ip并并不是设置的192.168.200.*,可见设置并未生效。最后查到原因居然是在vmware配置的ip无法生效,在上图中虽然配置了192.168.200.0。最近由于搭建私服,改用VMware专业版,虚拟机一直无法ping通本机。进入到控制面板->更改网络适配器中查看VMnet8对应网卡为以太网4。进入控制面板->更改网络适配器,找到对应网卡的适配器->属性。双击Internet协议版本4,将自动获取修改为一下内容。注意根据自己虚拟机想设置的IP进行设置。.....原创 2022-07-31 22:09:18 · 3076 阅读 · 0 评论 -
虚拟机的eth0网卡或ens33意外关闭如何重启
如果重启后远程依然连不上,则重新配置网卡(不知道什么原因导致,但是办法可行)执行 ifconfig eth0 IP地址 up。配置完成后,重启网卡。原创 2022-07-25 18:46:19 · 2040 阅读 · 0 评论 -
链表释放时使用二级指针的原因
首先需要先理解,向函数传值与传地址的概念。在函数外部创建的变量传入函数中,如果是值传递,则本质是将变量拷贝一份放入函数中,在函数中的任何操作都不会影响外部的变量。如果是地址传递,本质是通过指针找到对应变量存储的数据,在函数中操作,会影响函数外的变量。 在释放链表的时候我们需要释放节点对应的数据,而不是拷贝一份,把拷贝的数据释放。所以需要拿到节点的地址。由于链表的节点是以指针的形式创建的,所以需要将指针的地址传入,以指针的指针进行寻址并操作数据。...原创 2022-07-14 14:35:45 · 421 阅读 · 0 评论 -
linux下gcc编译时报错/opt/windriver/toolchain/bin/../lib/gcc/i686......
此问题一般是系统中缺少代码需要链接的库文件,可以去其他地方找到此库文件并放到/usr/lib中,在gcc编译时系统会去这个路径寻找用户自定义的一些动态库。 或者在/etc/ld.so.conf 中添加你的动态库路径...原创 2022-07-11 14:00:32 · 434 阅读 · 0 评论 -
c/c++获取当前日期时间的方法
#include using namespace std;#include int main(){ time_t t=time(0); char tmp[32]={0}; strftime(tmp,sizeof(tmp),"%Y-%m-%d %H:%M:%S",localtime(&t)); cout原创 2022-06-27 17:39:18 · 1581 阅读 · 1 评论 -
nginx安装需要的依赖(Centos)
1.yum install -y gcc #安装gcc2.yum install -y pcre pcre-devel #nginx的rewite module需要的pcre库3.yum install -y zlib zlib-devel #安装zlib库4../configure --prefix=/usr/loc原创 2022-06-19 16:28:50 · 992 阅读 · 0 评论 -
linux端口测试的方法
1.http端口测试,使用postman访问即可2.udp端口测试,在命令行下执行 nc -vu 服务器地址 端口号原创 2022-06-13 18:16:25 · 1299 阅读 · 0 评论 -
svn添加新的文件夹与文件
1.使用svn前要先svn up更新一下代码,否则会出现问题2.svn add 文件夹名 --force #将文件夹和包含的文件上传到svn,--force 添加子文件3.svn commit 文件夹名 文件1.c 文件2.c -m "添加信息"原创 2022-06-13 16:15:32 · 7940 阅读 · 0 评论 -
如何在linux查找nginx定义的结构体
1.查看自己的c文件中包含的头文件例如:想要查找ngx_stream_session_t结构体发现结构体在#include中在命令行下输入find / -name "ngx_stream.h" 找到该文件路径,进入即可原创 2022-06-07 14:59:20 · 243 阅读 · 0 评论 -
linux两种常用查询方法
1.查询文件find 目录名 -name "文件名"其中文件名可以加*,匹配包含此名称的文件2.在所有文件中查询某个字段grep -rn "字符串" *-rn 递归查询* 当前路径所有文件原创 2022-06-07 14:46:59 · 779 阅读 · 0 评论 -
linux的tar命令
1.解压tar -zxvf 解压文件名.tar.gz -C /指定路径2.压缩tar -zcvf 压缩文件名.tar.gz 被压缩文件名原创 2022-06-07 14:59:49 · 440 阅读 · 0 评论 -
C语言如何传递二维数组
例:#include <stdio.h>#include <stdlib.h>int print_aaaaa(int a[][2],int m,int n){ printf("a[%d][%d] : %d\n",m,n,a[m][n]); return 0;}int main(){ int a[2][2]={{1,2},{3,4}}; print_aaaaa(a,1,1); return...原创 2022-05-26 15:14:46 · 799 阅读 · 0 评论 -
静态库和动态库的区别
静态库:lib + 库的名字 + .a 1.原理:将静态库中的最小单元.o文件,在主程序编译是放到其中 2.优点 1)发布程序时,不需要向别人提供对应的库(因为库中函数已包含到了程序中) 2)加载库的速度快(因为库已经在程序中,调用不需要去别的地方找) 3.缺点 1)库被打包到程序中,导致程序体积比较大 2)当库发生改变时,程序需要重新编译(尽量不要用可能经常需要修改的静态库)动态库: lib + 库的名字 +...原创 2022-05-13 19:46:48 · 252 阅读 · 0 评论 -
linux下生成动态库(共享库)
1.程序的目录结构:---include #存放.h文件---lib #存放要生成的动态库---src #存放.c文件,要封装成库的函数---main.c #要实现功能的程序(用于测试动态库的接口)2.实现方法在src中:gcc -fPIC -c *.c -I../include ...原创 2022-05-13 18:51:29 · 1497 阅读 · 0 评论 -
linux下静态库制作
1.程序的目录结构:---include #存放.h文件---lib #存放要生成的静态库---src #存放.c文件,要封装成库的函数---main.c #要实现功能的程序(用于测试静态库的接口)2.实现方法在src中:gcc *.c -c -I ../include #将所有.c文件对应生成 .o 文件ar rcs...原创 2022-05-13 17:49:05 · 300 阅读 · 0 评论 -
vim的基础配置
1.进入vim后,输入":version"命令可以查看vim的配置文件路径上面有系统配置文件路径和用户配置文件路径,修改系统的即可。vim /etc/vimrc在 /etc/vimrc文件的末尾加上:set nu #增加行号set tabstop=4 #设置tab键为4个空格完成!!!!!!!!!!!!!!!!!!!!!!!2.也可以不配置vimrc文件实现这两个功能在自己需要配置的文本中直接输入:set nu:set tabsto...原创 2022-05-13 12:21:40 · 659 阅读 · 0 评论 -
error while loading shared libraries: libhiredis.so.0.13: cannot open shared object file: No such ..
1.问题原因:未安装hiredis这个API2.解决办法:在安装的redis目录下自带此API,进入redis目录下的deps/hiredis/执行make && make install解决!!!!3.若未解决,还是报相同错误,可能是/usr/local/lib这个目录未添加到系统中解决办法:vim /etc/ld.so.conf进入这个文件,把/usr/local/lib添加到第二行然后执行ldconfig更新一下系统要找的库路径...原创 2022-05-11 12:37:01 · 1215 阅读 · 0 评论 -
linux下的mysql安装及问题解决
1.rpm -qa | grep mysql #查看是否安装mysql2.rpm -e --nodeps 名称 #将上面查询的东西能删除都删掉3.rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm4.yum install -y mysql-server #安装 mysql,显示Complete!代表成功5....原创 2022-05-10 19:59:34 · 324 阅读 · 0 评论 -
nginx报错[alert] could not open error log file:open()...error.log
原因是在你用-p设置的路径下找不到logs文件夹,如果想在指定路径下运行nginx,可以将/usr/local/nginx/下的logs文件夹,cp -r logs /目标路径,复制到报错中提示的路径下原创 2022-04-29 11:07:10 · 12923 阅读 · 0 评论