![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 79
_nMaple_
常用语言C、Perl、Shell,目前涉足Java/Scala开发。酷爱Linux及开源。研究Hadoop分布式和一些大数据技术、框架、工具。对安全方面感兴趣。
展开
-
C++实现"类java"代码
找点乐子,想办法用C++的面向对象原创 2014-09-21 09:41:09 · 659 阅读 · 0 评论 -
MinGW gcc 编译、调用dll
MinGW是Minimalist GNU for Windows, 是在windows平台上做开发的gcc工具集合,支持几乎所有的windows API,几乎可以说是VC的替代,不过因为GCC原本并不是为windows平台开发的,其主要的目标文件,环境主要是适应Unix和Linux等操作系统,很多在linux下很容易解决的问题,在windows下却很麻烦。今天一下午时间都在摆弄MinG原创 2015-07-09 18:01:45 · 13245 阅读 · 3 评论 -
WinSock2简单的服务器与客户端(C语言实现)
注: 如果使用MinGW编译,加上选项-lwsock32,否则因为MinGW与VC库调用函数约定不同,其函数符号也不同,无法找到windows SDK中的ws2_32.lib中相应的函数符号。使用此选项则调用MinGW提供的winsock库。-m32指示将目标文件编译成32位程序。client 客户端:#undef UNICODE/* author : ez date原创 2015-07-12 10:14:46 · 2583 阅读 · 2 评论 -
C语言实现IP地址字符串转化成数值地址(双字)
/* author : ez date : 2015/7/11 describe : Convert IP string into IP numeric*/#include #include int ipstr_to_numeric (const char* _str, int * _addr) { const char* index; uns原创 2015-07-11 22:47:58 · 7563 阅读 · 0 评论 -
C语言各种预编译宏总结
查看gcc所定义的宏的命令:cpp -dM /dev/null命令一: cpp -dM /dev/null命令二: gcc -dM -E - 1:OS MACRO: WINDOWS: _WIN32、WIN32、_WIN64; UNIX: unix、__unix、__unix__; LINUX: linux、__linux、__linux__、__gnu_linux__;原创 2015-07-20 21:35:27 · 5601 阅读 · 1 评论 -
ping工具的C语言简单实现 (ICMP echo)
Windows和Linux 平台下都有一个使用非常频繁的工具: ping此工具主要是检验网络中两节点间传递的数据包是否可达,计算耗时等,其原理是使用ICMP协议发送echo,并得到目的主机的回显。以下是实现了最基本ping 功能的C程序,一共有三个文件:icmphd.h —— 定义报文结构icmphd.c ——实现其声明的函数main.c —— 主函数入口原创 2015-07-20 22:17:18 · 7306 阅读 · 0 评论 -
C static 函数与变量
此文转载于csdn的C/C++ bbs,因为有人提问,得到的答案比较详尽,故记录下来:C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始转载 2015-10-19 10:15:02 · 497 阅读 · 0 评论 -
makefile 笔记(转载)
转载出处: http://blog.csdn.net/edisonlg/article/details/71716411 MakefileGNU make的工作分为两个阶段。在第一阶段,make读取makefile文件、内置变量及其值、隐含规则和具体规则、构造所有目标的依赖关系以及所有目标各自的依赖等。在第二阶段,make决定需要重新构造的目标并使用必要的规则进行工作。m转载 2015-10-28 10:13:32 · 545 阅读 · 0 评论 -
Redis 源码分析(zmalloc部分)
Redis 2.8.24Redis在这个版本使用三种选择作为allocator,a) tcmalloc:一种比glibc 2.3更快的malloc实现,由google用于优化C++多线程应用而开发。Redis 需要1.6以上的版本。b) jemalloc:第一次用在FreeBSD 的allocator,于2005年释出的版本。强调降低碎片化,可扩展的并行支持。Redis需要原创 2015-12-24 10:32:25 · 2211 阅读 · 0 评论 -
linenoise 源码分析(一)
linenoise,一个命令行编辑库(line editing library)的源码分析原创 2016-03-31 09:58:07 · 3613 阅读 · 0 评论 -
linenoise 源码分析(二)
linenoise 命令行编辑库源码分析,linenoiseState结构体,history模块。原创 2016-04-01 12:59:37 · 1487 阅读 · 0 评论 -
C语言中整型的定义
使用C语言时,用sizeof运算int,long int,long long int时,得到的结果不尽相同。那么这些类型长度与什么有关?与机器?与编译器(语言实现)?还是操作系统?我查阅了一些资料,将之总结下来,希望能有一些参考价值。也欢迎指正纠错,共同学习!C语言的实现一般由编译器和标准库开发者提供,而这部分开发者有很多,常见的编译器有微软的vc,GNU的gcc,Borland的原创 2016-03-21 15:38:57 · 23928 阅读 · 1 评论 -
C指针总结
C语言以其灵活性,从第一个标准直到现在,得到了广泛的应用。因为其贴近底层,能最大限度的将程序员从机器代码中解脱出来。但也因其语言的灵活性,使这成为一门较有难度的语言。而其完全相信程序员,将一切交与程序员处理的思想,也让很多不熟悉计算机原理的程序员大呼C语言的晦涩。 今天我总结了部分C指针的资料,为自己学习,记录于此,也希望对别人有帮助。一、指针简单介绍: 指针不原创 2016-03-22 19:36:39 · 1708 阅读 · 0 评论 -
Apache与Tomcat关系
对Apache服务器和Tomcat服务器作了简单的对比和区分,并对两者的工作原理做简单分析。原创 2016-08-01 16:43:07 · 1603 阅读 · 0 评论 -
C语言 基础反汇编——for循环
for循环是各种编程语言中常用的语句;其基本的格式为:for (循环变量 ; bool 表达式; 操作) { // TODO ...}一般会需要一个循环变量,这个循环变量一般也会在函数体内完成声明和初始化,若是这样的情况,则这个变量即被作为函数的局部变量处理,分配在栈上。以下编写一个简单的C程序,完成从0 加到 某个数的和运算,并分析其反汇编代码。/* au原创 2015-05-07 12:59:29 · 2843 阅读 · 0 评论 -
计算机整数表示
现实世界的整数,为方便,都以十进制表示。但计算机为了稳定的保持数据,使用两种信号表示状态,也即出现了0和1的数字表示,于是计算机中使用了二进制进行数据存储。整数有正负之分,一般在计算机中,使用一个bit位表示数据的符号,叫符号位。符号位一般在数据的最高位上。当数据是正数时,符号位为0,数据是负数时,符号位为1(用移码表示方式除外)。所以可以通过判断最高位bit知道是否数据是正数。if (d原创 2015-04-09 16:47:57 · 1671 阅读 · 0 评论 -
C 不同类型指针的相互转化
写C已经有一段时间了,今天听到有人说原创 2014-09-26 21:35:09 · 1551 阅读 · 1 评论 -
C宏的使用尝试
C宏在程序编译前就会替换为原创 2014-10-25 14:48:49 · 719 阅读 · 0 评论 -
Linux C 实现最简单的ICMP_ECHO请求报文发送
弄了两天,终于搞定了!把最简单的icmp报文发送实现了。本原创 2014-10-26 21:58:53 · 3719 阅读 · 0 评论 -
linux内核学习导读
引用出处:http://blog.chinaunix.net/uid-25816887-id-3756807.html 像Linux内核这样庞大而复杂的程序看起来确实让人望而生畏,它象一个很大的球,没有起点和终点。在读源代码的过程中,你会遇到这样的情况,当读到内核的某一部分时又会涉及到其它更多的文件,当返回到原来的地方想继续往下读时,又忘了原来读的内容。在internet上,很多转载 2014-10-30 15:21:36 · 681 阅读 · 0 评论 -
C++ 模板实现栈数据结构, 用宏将模板类声明与实现分离
今天闲来没事,写了一个STACK,用C++写的,使用了C++中的模板,就是template特性。但是编译时发现实现与声明不能分离。平时写过C++或者C的都知道,习惯性的写法都是将头文件作为函数或变量等的声明,而用源文件作为实现部分,实现头文件中的声明。但泛型却不能支持这样的写法,原因主要是泛型编译时有一个实例化过程,当不能确定 template_class 中的T是什么时,无法找到函数的入口,原创 2015-01-26 15:25:19 · 922 阅读 · 0 评论 -
gcc预处理
好久没有写博客了!很多知识都积累下来,却没有总结到博客里,不过还好,自己的代码库每天都在壮大!刚才对自己写的C源文件进行了预编译,重定向后得到了输出文件,拿出来一看,确实学了一些东西。源代码文件:s.c源代码头文件:s.h编译器:x86_64-w64-mingw32-gcc 4.8.1 (tdm64-2)先上代码:#ifndef _S_H_# defin原创 2014-12-08 13:02:12 · 835 阅读 · 0 评论 -
C# 与 C 分别实现最简单的tcp-modbus 通信测试 (func_code = 0x03)
工作需要,常常使用工程控制中使用的iec104 、opc、 modbus等协议。不过我编写的程序多是在应用层实现的。为了之后的工作和学习,写了最简单的测试程序,用于测试modbus下位机(应该不是叫下位机吧!只是一种提供服务的设备)的应答。编程思路都很简单,创建请求帧,并接收响应帧,解析出来即可。我使用了两种编程语言,主要是以防万一其中一个的运行环境处问题(前几天.NET就用不起了,不得不用办原创 2015-01-02 21:31:47 · 4707 阅读 · 0 评论 -
C调用简单函数的反汇编分析记录
前两天摆弄了一下windows下的反汇编工具OllyDbg, 用起来不错,于是自己写了一个C的小程序反汇编试试。程序很简单,定义了两个自定义函数,add () 和 sub (),并传入参数。因为传入参数都只是两个,而且都是int型,总共8字节,所以这样的函数不需要用传入参数块首地址的方式传参,一般这样的函数调用都是简单函数。此次尝试使用的OllyDbg版本为2.01 ,使用的C编译器为gcc原创 2015-02-25 16:45:30 · 1100 阅读 · 3 评论 -
C 字符串拼接显示
常见的C字符串拼接可能就是将条字符串拼接在一块新的内存区域内,并得到新内存区域的起始地址,这类操作可以自己写,也可以使用C库函数:// C C++ extern char* strcat (const char* dest, const char* src); 将src字符串添加到dest字符串末尾,并返回dest地址;但是此函数可能不包含对dest所指内存空间大小原创 2015-03-16 09:15:10 · 880 阅读 · 0 评论 -
CW程序破解记录——Brad_Soblesky_2
CW程序(Crackme)一般用于给逆向分析初学者练习使用。今天下载了一个CW程序,点击后打开一个窗口,要我输入Serial Number并验证。更奇怪的是,要我输入两个字符串。咋一看还以为是用户名密码,最后破解下来,是把前一个字符串加密后与后一个字符串对比,如果通过,则OK。否则提示错误重试!随便输入报错:一个简单的exe文件,使用了PE查看器,程序并没有压缩,看来可以直接找原创 2015-03-17 19:04:45 · 1636 阅读 · 0 评论 -
gdb 使用笔记
1、 设置断点:b 或者 break , 条件断点: b 例: b main // 在main处设置断点 b func1 // func1处 b 13 // line 13处 b 13 if i = 32 // line 13 处触发断点 , 当局部变量 i = 32 时2、 删除断点原创 2015-03-11 10:04:51 · 436 阅读 · 0 评论 -
Windows MSVC vs MinGW
引用出处:http://www.360doc.com/content/12/0511/08/992979_210235656.shtmlMinGW:c -> o gcc -c a.cc -> exe gcc a.c libs.o -o a.exe (从主程序a.c,附加libs,生成a.exe)o -> exe gcc转载 2015-04-03 22:11:13 · 1530 阅读 · 0 评论 -
Windows 钩子,基本的dll注入
Windows操作系统是基于钩子完成的消息传递与用户交互,它以事件驱动的方式运行。每一个窗口都拥有自己的消息队列,当外部设备触发消息时,消息被发送到系统消息队列,再有操作系统安排将消息发送到特定进程上,这即是消息链。所谓消息钩子,即是在系统将消息发送到用户程序前,提前截获此消息,并进行处理,也可以把它直接发送给用户程序。如:当键盘(外部设备)发生键盘输入时,WM_KEYBOARD消息被添加原创 2015-04-03 21:22:51 · 3741 阅读 · 6 评论 -
getopt 库的使用
getopt是GNU标准库中的一个小工具,一般只用包含其getopt.h 头文件即可使用。getopt 主要用途是提供一系列方法用户处理基于文字模式(控制台)的C/C++ 应用程序,当然在github上你也可以找到其他语言的版本。getopt 最初并不是标准C或C++ 的一部分,所以只能在每一个编写的应用程序中编译这部分代码,一般包含其头文件,getopt2.c和getopt.c 文件。下面介绍其原创 2015-04-18 12:01:32 · 2225 阅读 · 0 评论 -
C指向常量的指针和指针常量
指向常量的指针:此指针指向一个内存区域,这个内存区域(编译期)只读,即是此指针指向的内存区域中的值不能改变。指针常量:此指针是一个常量,即是无法改变指针的值,如果已经保存了内存单元A 的地址,则用内存单元B 的地址赋值给它将不能通过编译。#include int x = 328;int y = 222;// a pointer point to a read-only me原创 2015-04-23 21:37:13 · 574 阅读 · 0 评论 -
Redis 简介
官方redis简介的翻译。因个人能力有限,仅翻译至此。翻译 2016-10-14 18:21:34 · 566 阅读 · 0 评论