C/C++
文章平均质量分 56
翔云123456
这个作者很懒,什么都没留下…
展开
-
设计模式--组合模式(Composite Pattern)
组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构,并且能像使用独立对象一样使用它们。原创 2024-02-21 22:51:25 · 916 阅读 · 0 评论 -
设计模式--职责链模式(Chain of Responsibility Pattern)
职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。原创 2024-02-16 16:17:42 · 893 阅读 · 0 评论 -
设计模式--Command模式
命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在这个例子中,Command是抽象命令类,定义了一个execute接口。通过这种方式,我们可以将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。Invoker是调用者类,它要求命令执行一个请求,也就是调用命令的execute接口。原创 2023-11-11 20:31:15 · 443 阅读 · 0 评论 -
snprintf使用一例
//----------------------------------------------------//AUTHOR: lanyang123456//DATE: 2014-12-20//----------------------------------------------------#include #include int main原创 2014-12-20 18:00:58 · 642 阅读 · 0 评论 -
引用参数与引用返回值
转载:http://www.cnblogs.com/bigshow/archive/2008/11/10/1330514.html转载 2014-11-06 19:56:34 · 1322 阅读 · 0 评论 -
Linux多线程中的信号
转载:转载 2014-11-19 16:08:21 · 556 阅读 · 0 评论 -
linux 多线程与信号pthread_kill
NAME pthread_kill - send a signal to a threadSYNOPSIS #include int pthread_kill(pthread_t thread, int sig); Compile and link with -pthread.DESCRIPTION原创 2014-11-19 16:36:01 · 1220 阅读 · 0 评论 -
POSIX线程库条件变量的使用——Pthreads线程库实例笔记4
转载:http://www.cnblogs.com/blueclue/archive/2010/07/21/1780779.html条件变量(Condition Variables)条件变量是什么?条件变量为我们提供了另一种线程间同步的方法,然而,互斥量是通过控制线程访问数据来实现同步,条件变量允许线程同步是基于实际数据的值。如果没有条件变量,程序员需要让线程不转载 2014-11-17 17:15:11 · 537 阅读 · 0 评论 -
C 中的strcpy 和strncpy
#include char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n);strcpy 将原创 2014-11-01 11:14:16 · 660 阅读 · 0 评论 -
Linux下select函数实现的聊天服务器
转载:http://blog.csdn.net/microtong/article/details/4989902转载 2014-11-17 17:45:37 · 1217 阅读 · 0 评论 -
C++ string 使用的深刻教训
//----------------------------------------------------//AUTHOR: lanyang123456//DATE: 2014-10-30//---------------------------------------------------server:clein原创 2014-10-30 23:11:55 · 763 阅读 · 0 评论 -
C++ string 使用的注意:memcpy
//----------------------------------------------------//AUTHOR: lanyang123456//DATE: 2014-10-28//---------------------------------------------------/*str5.cpp$ g++ -o test str5.cpp原创 2014-10-30 22:13:59 · 14306 阅读 · 1 评论 -
C++ 中的string的简单使用 (续)
/*str2.cpp$ g++ -o test str2.cppOS:64bit OS Ubuntu*/#include #include #include #include using namespace std;int main(){ string teststring("OK OK OK OK OK OK "); char buffer[] = " he原创 2014-10-28 19:52:36 · 552 阅读 · 0 评论 -
C++ 中的string的简单使用
参考原创 2014-10-21 11:17:35 · 494 阅读 · 0 评论 -
sizeof 计算发生在编译时
/*sizeof 编译时计算空间*/#include #include int main(){ char buffer[sizeof("sizeof")] = "sizeof"; printf("buffer array = %s\n", buffer); return 0;}/*$ gcc -o sizeof sizeof.c$ ./sizeof原创 2014-10-28 19:44:23 · 1461 阅读 · 0 评论 -
C++中的返回值引用
转载:函数返回值时,要生成一个值的副本。而用引用返回值时,不生成值的副本。 例如,下面的程序是有关引用返回的4种形式: //********************* //** ch9_6.cpp ** //********************* #include float temp; float转载 2014-11-04 19:34:06 · 756 阅读 · 0 评论 -
引用作为函数返回值
其次,不能返回函数内部动态分配的内存的引用。虽然不存在局部变量的被动销毁的问题,但是在此种情况下,仍然存在一些问题。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的由new分配的空间就无法被释放,从而造成内存泄漏问题。举例如下: 最后,可以返回类成员的引用,但最好是const常量。这是因为当对象的属性是与某种业务规则相关联转载 2014-11-06 19:30:31 · 4658 阅读 · 2 评论 -
snprintf的使用
//----------------------------------------------------//AUTHOR: lanyang123456//DATE: 2014-12-20//---------------------------------------------------- int sprintf(char *str, const char原创 2014-12-20 17:58:01 · 787 阅读 · 0 评论 -
同一端口监听tcp和udp请求
问题:众所周知,同一台机器的同一个端口只可以被一个进程使用。一个进程使用同一个端口同时监听tcp、udp请求,是否可以呢?答案:是可以的。代码:server为了同时监听,server使用select进行多路访问控制。 server端代码如下:/*TCPINETuse select*/#include<stdio.h>#include<stdlib.h>#include<string.h原创 2017-07-30 18:33:34 · 6141 阅读 · 4 评论 -
设计模式--策略模式Strategy
问题:平时开发中经常会遇到在原来需求的基础上新增需求的情况。 比如实现排序,算法有很多种,冒泡、插入、堆排序、快排等等,其算法本身的特点决定了其适合的使用场景。 假设目前业务场景中,只使用了两种排序算法,新的场景出现后,需要新增一种算法。如果使用一个方法实现所有的排序算法,通过if else 或case区分,代码会很臃肿,新代码添加以后要重写测试这个方法;如果使用类封装,每个方法实现一种算法原创 2017-04-22 20:50:30 · 394 阅读 · 0 评论 -
设计模式--单例模式Singleton
单例模式是使用最广泛的设计模式之一。顾名思义,单例就是一个类只有一个实例。为什么会要求一个实例呢?一个原因是一个实例能够满足需求,过多实例的存在只会耗费系统资源;另一个原因是为了数据保持一致,多个实例导致数据状态不一致。 实际上,定义一个全局的实例,也算是单例,但无法限制用户再去定义多个。规范的接口定义,有利于限制实例的定义。例如下图中,用户就只能通过GetInstance()接口得到实例。UML原创 2017-04-15 22:32:36 · 341 阅读 · 0 评论 -
error while loading shared libraries: libXX-2.0.so.5: cannot open shared object file: No such file
问题运行时出现如下问题$ ./orangeapp./orangeapp: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory从错误提示看,是没有找到event库。 编译时的编译选项“-l event -L/usr/loc原创 2017-03-26 21:37:45 · 403 阅读 · 0 评论 -
rm: cannot remove `/usr/local/tmp/‘: Directory not empty
问题删除目录是遇到错误提示: rm: cannot remove `/usr/local/tmp/’: Directory not empty即使使用rm -rf ,还是会出现相同提示。原因要删除的目录下有文件正在被使用。验证情况1:创建tmp目录,并在其下创建文件test.txt$ mkdir tmp$ echo “123” > tmp/test.txt删除目录,非常顺利$ rm -rf原创 2017-03-12 17:25:32 · 22784 阅读 · 0 评论 -
C语言中如何判断文件结尾
使用标准库函数feof()可判断是否到达文件结尾:#include <stdio.h>int feof(FILE *fp)返回值: 文件结束返回非0,否则返回0。 例如FILE *fp = fopen(“test.txt”, “r”);if (feof(fp)){ printf(“end of file”);}原创 2017-03-05 21:50:03 · 27667 阅读 · 3 评论 -
C++数组的引用—防止数组退化
在c语言中,数组作为函数参数时,实际上数组已经退化为指针使用。 下面这三种用法是等价的:int f1(int apples[]);int f1(int apples[10]);int f1(int* apples);这样一来,在f1中是无法知道数组的大小的,开发者必须提前知道数组大小。C++中定义了数组的引用(例如,int (&a)[2]),可以有效的防止数组退化。 也就是,数组作为函数参数原创 2017-03-05 17:51:05 · 6775 阅读 · 0 评论 -
C++ 中Vector容器使用
$ g++ -o test vector.cppyunyang@yunyang-HP-Compaq-Pro-6300-MT:~/Newcomer/C_C++$ ./test 012345678901234567890990104611686018427387903100 1 2原创 2014-10-21 15:16:46 · 881 阅读 · 0 评论 -
so文件反汇编反编译到C源码
首先介绍一下术语。 使用高级语言进行开发,最后到交互,一般经历几个过程:预处理、 编译、汇编、链接。预处理:文件包含,宏定义展开等; 编译:源代码转为中间语言–汇编语言; 汇编:汇编语言转为机器代码,即目标文件(包括可执行文件、so文件等); 链接:文件重定位、符合链接整合;何为反编译、反汇编? 其实就是上面对应过程的逆过程。本文描述的so文件反汇编、反编译主要借助工具IDA Pro,下原创 2017-02-22 21:01:54 · 81953 阅读 · 14 评论 -
zabbix源码学习之维护状态实现maintenance
zabbix作为开源监控平台,其强大是业界公认的。如果想了解zabbix具体功能及使用方法,可以参考链接: zabbix从入门从精通 官方说明文档(什么,打不开?多刷几次 :) )言归正传,下面就对zabbix维护状态做一个分析说明。版本本文针对的zabbix版本是2.4.8文件主要涉及文件:timer.c函数调用关系zabbix server 启动过程中,专门创建了一个timer进程,用于维护原创 2016-09-17 14:38:46 · 1765 阅读 · 0 评论 -
C++类和对象的大小
#include class testClass1 {};class testClass2 {public: testClass2():i(0) {} testClass2(const testClass2 &t) { i = t.i; } void fun();private: int i;};class testClass3:public testClass2原创 2014-11-13 19:28:06 · 770 阅读 · 0 评论 -
C++虚函数
#include using namespace std;class Base1 {public: Base1(){} void display();};class Base2:public Base1 {public: Base2(){} void display();};class Derive:public Base2 {public: Derive(){原创 2014-11-14 09:21:38 · 530 阅读 · 0 评论 -
如何学好C语言
有人在酷壳的留言版上询问下面的问题keep_walker :今天晚上我看到这篇文章。http://programmers.stackexchange.com/questions/62502/small-c-projects我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼的程序员一点建议嘛?谢谢!我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程转载 2011-12-06 19:08:33 · 442 阅读 · 0 评论 -
C++ Vector 使用心得
标准库Vector类型使用需要的头文件:#include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。一、 定义和初始化Vector v1; //默认构造函数v1为空Vector v2(v1);//v2是v1的转载 2011-08-25 09:07:17 · 431 阅读 · 0 评论 -
内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
程序占用的内存分为几个部分,各个部分起什么作用,字符数组,字符指针在实现上有什么区别等等。本文对此做了详细阐述,特转载于此,供大家学习参考之用。 一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值转载 2011-08-08 17:10:19 · 806 阅读 · 1 评论 -
strcpy strncpy 和strlcpy 【转】
<br />好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。<br />但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。<br /><br />1. strcpy<br />我们知道,strcpy 是依据/0作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代码如下(来自 OpenBSD 3.9):<br />char *<br />strcpy(char *to, const char *from)<br />{<转载 2011-04-09 19:26:00 · 661 阅读 · 0 评论 -
C++字符串【转】
Len Len(string|varname) 返回字符串内字符的数目,或是存储一变量所需的字节数。 Trim Trim(string) 将字符串前后的空格去掉 Ltrim Ltrim(string) 将字符串前面的空格去掉 Rtrim Rtrim(string) 将字符串后面的空格去掉 Mid Mid(string,start,length) 从string字符串的start字符开始取得len转载 2010-04-24 23:44:00 · 1319 阅读 · 0 评论 -
slider控件用法【转】
滑动控件是Windows中最常用的控件之一。一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以通过移动滑块在相应的控件中显示对应的值。通常,在滑动控件附近一定有标签控件或编辑框控件,用于显示相应的值。滑动控件在应用程序中用途级为广泛,如在桌面的属性中就可以看到。为此,让我们一起来看一下它的实现方法。 (1)在VC++ 6.0中新建一个对话框文档的工程。 (2)打开资源管理器,在对话框原创 2010-04-22 20:03:00 · 974 阅读 · 0 评论 -
memcpy
memcpy 原型:extern void *memcpy(void *dest, void *src, unsigned int count);void * memcpy ( void * destination, const void * source, size_t num ); 用法:#include 功能:由src所指内存区域复制count个字节到dest原创 2010-04-07 22:24:00 · 603 阅读 · 0 评论 -
一个支持所有媒体类型和循环播放的类[精华]
这篇文章是我第一次在VC在线发表,我应该是只VC的菜鸟。为了找个能循环播放mp3的VC源程序,我搜遍了网上的资源(差点气得要砸电脑),好不容易找到一个,却只有程序中的调用,关键的类的生成文件却没有,有什么用?(主要是自己没有MCI函数的具体的参数资料,不知道怎么调用,如果你有,请发一份给我,字符串的我已经有了,命令方式的没有。) 后来找到一个,非常感谢他,作者叫转载 2010-04-10 21:45:00 · 537 阅读 · 0 评论 -
Using WMA codec to play media files directly without using WMP
hi,i wish to know if anyone has any experience in integrating a wma decoder with smartphone to be able to play music files directly without using WMP(windows media player)I dont w转载 2010-04-10 16:51:00 · 501 阅读 · 0 评论 -
MCI_STATUS_PARMS Structure
The MCI_STATUS_PARMS structure contains information for the MCI_STATUS command.结构体原型定义:typedef struct { DWORD_PTR dwCallback; DWORD dwReturn; DWORD dwItem; DWORD dwTrack;} MCI_STAT原创 2010-04-07 10:54:00 · 1636 阅读 · 0 评论