
Linux下C编程
C语言编程内容
V丶Chao
记录自己的学习过程,时常反思,时常进步
展开
-
计算数组元素个数
2017/06/26#include<stdio.h>int main(){ int a[] = {0,1,3,5}; char *b[] = { "slsjlf", "slfj;sf", "slkfjsdkfs", "sss", }; printf("yy:%d xx:%d\n",...原创 2017-06-26 09:45:11 · 499 阅读 · 0 评论 -
libnids出错(2)
2018/1/4昨天也是熬了很久的这个东西,到底libnids的这个东西,都有哪些校验和要去做。也是突然就明白了这回事,他的函数并不是那么完美。他使用指针的缘故也就是他直接取了地址。所以,我在一个函数里面声明了一个定义之后,这块内存失效了之后就没有办法继续校验了。其实最大的原因还是使用了函数里面的临时变量去进行注册。也不能一味的怪我,我也不知道他是这样的实现。看了源码才知道他就拿了...原创 2018-01-04 10:31:05 · 398 阅读 · 0 评论 -
进程返回值
2018/2/22对于C语言写的程序,在调用他之后,他的返回值,除非是有系统类错误发生,应该是自己定义的,不过自己写的一个程序,发现不对。因为虽然我返回的是-1,但是每次echo $?的值都是255,而且用python的commands库来调用的话,就成了6000+,反正很大。https://baijiahao.baidu.com/s?id=1592296182804783596&...原创 2018-02-22 15:12:06 · 796 阅读 · 0 评论 -
栈
2017/02/10栈需要注意的地方:一定要检查,栈是否为空、栈是否满了。栈的相关应用。栈的特性:先进后出。或者说,后进先出。递归的函数调用,一层一层的,先返回的都是后面进去的。这也是栈的一个重要应用,函数调用,返回地址一层一层的叠加上去。1、括号平衡问题问题描述:最典型的例子,编译器在检查语法错误的时候会进行括号的检查,查看该等式是否平衡。即是否有一个右括号与左括号相对应,并且...原创 2017-02-10 12:18:39 · 265 阅读 · 0 评论 -
共用一块存储union
2017/02/14举一个不恰当的例子,你想用二叉树来做表达式树,但是里面既有运算符又有运算数,但是存储节点里面只能有一种类型。(不过好在这个还好分析,那就是我只需要判断他是不是叶子就可以知道这个节点里的存储信息)就可以用union的方式来进行存储。也算是一个小小的技巧吧。...原创 2017-02-14 16:41:12 · 245 阅读 · 0 评论 -
在线代理检测网站
20210203 -很久之前,写代理的代码的时候,记录过几个测试代理的网站,后来也就直接放在书签里吃灰了。这里直接把这个几个网站记录在这里。http://www.xdaili.cn/monitorhttp://proxies.site-digger.com/proxy-test/?proxy=123.57.107.142%3A9999&website=http%3A%2F%2Fproxies.site-digger.com%2Fproxy-detect%2F&cookie=&x原创 2021-02-03 19:57:15 · 2921 阅读 · 0 评论 -
nginx性能调优
denji/nginx-tuning.mdTuning NGINX for PerformanceTesting the Performance of NGINX and NGINX Plus Web ServersOptimizing web servers for high throughput and low latency这个文章不错,覆盖了很多方面的内容。Optimizing Nginx Configuration For High Loads1M HTTP Requests per.原创 2020-09-04 15:44:38 · 531 阅读 · 0 评论 -
Linux场景下性能调优
20200904 -0. 引言在前面的一篇文章中《记一次关于Nginx的性能调优过程》简单介绍了一下进行nginx调优的过程,实际上也没有什么干货,因为我只是通过测试知道了一些数值,没有真正的从实际上理论上进行推理,发现证据来提高性能,后续还是要进行具体分析,但是感觉这里实际上要涉及的东西太多。在研究这个东西的过程中,看了很多文章,这里来记录一下。1. 硬盘IO文章[1]介绍了利用atop和iotop来查看文件独写,硬盘的一些内容。2. Nginx的相关内容参考[1]Linux server原创 2020-09-04 15:42:37 · 520 阅读 · 0 评论 -
记一次关于Nginx的性能调优过程
20200903 -0. 引言本身对nginx的也不是很理解,但是为了达到目的也是来了兴趣,本次主要是为了达到高并发的效果。为了调整这一块也是花费了很大的功夫。这里主要记录一下具体的脉络,看看都用了哪一些思路。虽然很多都没有什么作用,但也给我提出了一个难题,那就是说,怎么来定位性能瓶颈呢。1. 问题描述...原创 2020-09-04 11:19:24 · 1648 阅读 · 0 评论 -
高并发HTTP请求客户端 - python语言编写
20200902 -0. 引言之前的时候接触过高并发相关的内容,当时接触了类似epool这种编程模型,或者更高级的libev这种时间编程;但是这些都是面向服务端的内容,类似C10K这种经典问题。而对于客户端来说,虽然有很多不同语言或者不同类型的压测工具,但很少有介绍自己来编写这部分内容的。通过百度搜索也可以看到相应的结果。也可能是搜索的关键词不对,反正从百度的搜索结果来看,基本上没有什么有效的结果。但是,直接在谷歌上搜索,是可以找到相应的博文的。所以,本篇文章从搜索得到的结果来入手,学习如何满足这部原创 2020-09-03 21:17:39 · 2401 阅读 · 4 评论 -
Linux与Win32的srand/rand随机数函数
20200806 -问题引出在做一个逆向题的时候,通过F5把源码拿出来了,然后在linux下运行这个程序(平时习惯使用linux下进行编程),就是不对。这个函数的内部算法是利用srand设置种子,然后利用rand生成随机数函数。因为本身这个程序是win32程序,我也怀疑过是否是因为系统不同所导致的;但是因为环境受限,就没有考虑这个问题。尝试解决下午的时候,索性下载了一个vc6.0的程序,好几年没碰过这玩意了,也是因为一直在linux下编程的问题。然后同样的程序,出来的结果是不一样的。那么这就说明原创 2020-08-06 15:34:15 · 1331 阅读 · 1 评论 -
64位Linux环境下编译32位程序
20200805 -引言原版的mirai病毒,通过交叉编译的过程可以生成多种架构的二进制文件;但是他并没有说明如何来配置这个环境;不过在文章[1]中,提到了如何进行交叉编译,先下载相应的二进制文件,然后在实现编译过程。不过,我这里的一个需要不用这么复杂,也是需要编译出来一个32位的ELF文件。问题介绍在逆向32位ELF文件过程中,希望能自己测试反编译出来的伪源码(IDA PRO F5得到),但是64位的程序很多都不匹配,所以需要编译32位的程序,命令参考文章[2]提供。gcc -m32 test.原创 2020-08-05 14:07:09 · 1203 阅读 · 0 评论 -
指针指向字符串
2017/06/27原来一直没有用过这种用法,char *p = "hello"这种方法是不能使用指针p去修改字符串内容的,一般来说,我理解的只有加上const修饰符才可以,实际上两者是等价的。这里的原因是,这个字符串本身放置在只读的内存空间里,所有不能通过指针去读写。http://www.360doc.com/content/15/1022/16/26795867_507585396....原创 2017-06-27 10:10:08 · 339 阅读 · 0 评论 -
time.h
2017/06/04时间方面的问题还是个大问题。系统路径下,有很多个这种文件,比如include/、include/sys/、include/bytes。我使用的还是timeval这个,其usec是微秒的级别。这是一个long类型数据。总而言之,这部分我要是想编写好有关时间的代码,最好是,直接去头文件里面找。...原创 2017-06-04 11:20:21 · 279 阅读 · 0 评论 -
C语言 - static inline
2019/07/16今天在看DPDK负载均衡的实例代码中,通过函数跳转,看到官方API后,发现了static inline这个关键字,这个我只是在很早之前知道inline是内联的,可以不进行压栈;但是static毕竟是限制函数的作用域的啊,就非常费解。文章[1]中对这部分进行了解释,它(static)和inline配合起来之后呢,就是跟变量一样了,都是将其定义在某块内存中,这种形式一方面有in...原创 2019-07-16 21:22:46 · 938 阅读 · 0 评论 -
内存泄漏
2017/09/23有一件事情,以后也一定要注意,那就是注意释放内存。这次的教训就是,哈希表每次清理的时候,直接就是计数清零了,但是却忘了把拉出来的链表给好好清理一下。有一种日了狗的感觉,这种情况就2018/03/27在写控制端口服务端的时候,使用了链表来进行控制。有一个链表,需要释放,我是用一个函数进行释放的。然后就发现之后这个头指针仍然指向了一个原来的位置。这个部分,需要理解的...原创 2017-09-23 18:28:36 · 364 阅读 · 0 评论 -
TCP超时编程
2018/2/12http://blog.youkuaiyun.com/NK_test/article/details/49050379这个是超时相关的设置,不过比较麻烦的就是,还有很多错误的设置比较难。C的却是太底层的底层的东西。http://blog.youkuaiyun.com/chinaclock/article/details/49004751这个里面是关于一些错误码的介绍。...原创 2018-02-12 15:38:00 · 396 阅读 · 0 评论 -
字节对齐
2018/1/16对于自己定义的结构体,如果拿该结构体去匹配内存中的一个块内容,有可能不能准确的匹配正确。就比如今天去匹配SSL ClientHello结构体,但是总是往后退了一个字节。而且非常准。这其实是编译器的问题,gcc默认是4字节对齐。这样的话,好像以后如果是对流量这些东西进行取值的时候,一定要把这部分改成1字节对齐。默认当然如果所有的内容都是从本机进行的交互,那么这个东西就无所...原创 2018-01-16 10:34:59 · 388 阅读 · 0 评论 -
结构体定义.h与.c文件的问题
首先一个问题:就是结构体声明与定义的问题,不过,感觉现在的我有点弄混了。那么下面我直接来说明:最开始的编程习惯,一直是用将结构体的定义(即struct xx{...})这个放在.h文件里,.c文件只放置相关的函数实现。不过这几天看了一本相关的数据结构的书,发现上述定义是放置在.c文件中的,而.h文件只放struct xx;所以,我也这样实现了一下,但是出现了一个问题。那就是,如果我在另外的函数中,...原创 2016-11-18 16:42:59 · 3463 阅读 · 1 评论